diff --git a/.github/workflows/build-and-release.yaml b/.github/workflows/build-and-release.yaml index beafb2e..2802b78 100644 --- a/.github/workflows/build-and-release.yaml +++ b/.github/workflows/build-and-release.yaml @@ -192,14 +192,15 @@ jobs: sed "s#__version__#${{ github.ref_name }}#" templates/index.template.md >docs/index.md echo "# Versions" >docs/versions.md echo "" >>docs/versions.md - for v in `ls -t docs/versions`; do sed "s#__version__#$v#" templates/versions.template.md >>docs/versions.md; done + for v in `ls -t docs/versions | grep -v latest`; do sed "s#__version__#$v#" templates/versions.template.md >>docs/versions.md; done + sed "s#__version__#${{ github.ref_name }}#" templates/latest.template.html >docs/versions/latest/index.html rm -r artifact - name: Publish on gh-pages branch run: | git config user.name github-actions git config user.email github-actions@github.com - git add -v docs/versions/${{ github.ref_name }}/ docs/index.md docs/versions.md + git add -v docs/versions/${{ github.ref_name }}/ docs/versions/latest/ docs/index.md docs/versions.md git commit -m "Add documentation for version ${{ github.ref_name }}" git push diff --git a/.github/workflows/build-docs.yaml b/.github/workflows/build-docs.yaml new file mode 100644 index 0000000..459496b --- /dev/null +++ b/.github/workflows/build-docs.yaml @@ -0,0 +1,67 @@ +name: Build doc site with mkdocs and deploy + +on: + workflow_dispatch: + +jobs: + + build: + + name: Build doc site with mkdocs + + runs-on: ubuntu-latest + + steps: + - name: Checkout project + uses: actions/checkout@v3 + with: + ref: 'gh-pages' + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: "3.10" + cache: 'pip' + + - name: Install Mkdocs + run: pip install -r requirements.txt + + - name: Run mkdocs and archive + run : | + mkdocs build + tar \ + --dereference --hard-dereference \ + --directory "site" \ + -cvf "${{ runner.temp }}/site.tar" \ + --exclude=.git \ + --exclude=.github \ + . + + - name: Upload pages + uses: actions/upload-artifact@main + with: + name: github-pages + path: ${{ runner.temp }}/site.tar + retention-days: 1 + + deploy: + + name: Deploy site to github pages + + needs: build + + permissions: + pages: write # to deploy to Pages + id-token: write # to verify the deployment originates from an appropriate source + + # Deploy to the github-pages environment + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + runs-on: ubuntu-latest + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a62581..28188cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,30 +1,27 @@ ## Summary -Ajout de fonctionnalités de lecture de donnée d'une pyramide et suivi des recommandations PyPA pour la gestion du projet. + ## Changelog ### [Added] -* TileMatrix : - * Fonction de calcul des indices de tuile et de pixel dans la tuile à partir d'un point dans le système de coordonnées du TMS -* Pyramid : - * Fonction de calcul des indices de tuile et de pixel dans la tuile à partir d'un point dans le système de coordonnées du TMS et éventuellement un niveau - * Fonctions de lecture d'une tuile : au format binaire source ou au format tableau à 3 dimensions pour les tuiles raster -* Storage : - * Fonction de lecture binaire, complète ou partielle, d'un fichier ou objet S3 ou CEPH -* Exceptions : NotImplementedError permet de préciser qu'une fonctionnalité n'a pas été implémentée pour tous les cas. Ici, on ne gère pas la décompression des données raster pour les compressions packbit et LZW +* Level + * Fonction de test d'une tuile `is_in_limits` : ses indices sont ils dans les limites du niveau ? +* Pyramid + * La lecture d'une tuile vérifie avant que les indices sont bien dans les limites du niveau + * Les exceptions levées lors du décodage de la tuile raster emettent une exception `FormatError` + * `get_tile_indices` accepte en entrée un système de coordonnées : c'est celui des coordonnées fournies et permet de faire une reprojection si celui ci n'est pas le même que celui des données dans la pyramide +* Utils + * Meilleure gestion de reprojection par `reproject_bbox` : on détecte des systèmes identiques en entrée ou quand seul l'ordre des axes changent, pour éviter le calcul + * Ajout de la fonction de reprojection d'un point `reproject_point` : on détecte des systèmes identiques en entrée ou quand seul l'ordre des axes changent, pour éviter le calcul -* Ajout de la publication PyPI dans la CI GitHub - ### [Changed] -* Storage : - * La lecture sous forme de chaîne s'appuie sur la lecture complète binaire. Aucun changement à l'usage. -* TileMatrixSet : quelque soit le système de coordonnées, on ne gère que un ordre des axes X,Y ou Lon,Lat. Cependant, les fonctions de calcul de ou à partir de bbox respectent l'ordre du système dans ces dernières. - -* Passage de la configuration du projet dans le fichier `pyproject.toml` - +* Utils : + * `bbox_to_geometry` : on ne fournit plus de système de coordonnées, la fonction se content de créer la géométrie OGR à partir de la bbox, avec éventuellement une densification en points des bords +* Pyramid : + * Renommage de fonction : `update_limits` -> `set_limits_from_bbox`. Le but est d'être plus explicite sur le fonctionnement de la fonction (on écrase les limites, on ne les met pas juste à jour par union avec la bbox fournie)