diff --git a/.coveragerc b/.coveragerc index 6e39993..7f85b15 100644 --- a/.coveragerc +++ b/.coveragerc @@ -1,6 +1,6 @@ [run] -include = - */rok4/* +include = + */src/* omit = */__init__.py command_line = diff --git a/.github/workflows/build-and-release.yaml b/.github/workflows/build-and-release.yaml index e98ce6b..beafb2e 100644 --- a/.github/workflows/build-and-release.yaml +++ b/.github/workflows/build-and-release.yaml @@ -1,4 +1,4 @@ -name: Test, build and release artefacts, build documentation +name: Test, build and publish artefacts and documentation on: push: @@ -55,45 +55,50 @@ jobs: uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} + cache: 'pip' + cache-dependency-path: '**/pyproject.toml' - - name: Install Poetry - uses: snok/install-poetry@v1 - with: - virtualenvs-create: true - virtualenvs-in-project: true - - - name: Configure Poetry + - name: Install system dependencies run: | - poetry self add poetry-bumpversion - poetry version ${{ github.ref_name }} + sudo apt update + sudo apt -y install python3-rados python3-gdal - name: Install python dependencies run: | - poetry install --no-interaction --no-root -E doc + python3 -m venv .venv + source .venv/bin/activate + python3 -m pip install --upgrade build bump2version + bump2version --current-version 0.0.0 --new-version ${{ github.ref_name }} patch pyproject.toml src/rok4/__init__.py + pip install -e . + echo "/usr/lib/python3/dist-packages/" >.venv/lib/python${{ matrix.python-version }}/site-packages/system.pth - - name: Install system dependencies + - name: Run unit tests + if: "(${{ matrix.os }}=='ubuntu-20.04')&&(${{ matrix.python-version }}=='3.8')" run: | - sudo apt update - sudo apt -y install python3-rados python3-gdal - cp site-packages/*.pth .venv/lib/python${{ matrix.python-version }}/site-packages/ - poetry run python -c 'import sys; print (sys.path)' + source .venv/bin/activate + pip install -e .[test] + coverage run -m pytest + coverage report -m - - name: Run unit tests + - name: Build unit tests report if: "(${{ matrix.os }}=='ubuntu-20.04')&&(${{ matrix.python-version }}=='3.8')" run: | - poetry run coverage run -m pytest - poetry run coverage report -m - poetry run coverage html -d dist/tests/ + source .venv/bin/activate + coverage html -d dist/tests/ rm dist/tests/.gitignore - name: Build package if: "(${{ matrix.os }}=='ubuntu-20.04')&&(${{ matrix.python-version }}=='3.8')" - run: poetry build + run: | + source .venv/bin/activate + python3 -m build - name: Build documentation if: "(${{ matrix.os }}=='ubuntu-20.04')&&(${{ matrix.python-version }}=='3.8')" run: | - poetry run pdoc3 --html --output-dir dist/ rok4 + source .venv/bin/activate + pip install -e .[doc] + pdoc3 --html --output-dir dist/ rok4 cp README.md CHANGELOG.md dist/ - name: Upload packages, tests results and documentation @@ -106,7 +111,7 @@ jobs: retention-days: 1 publish_artefacts: - name: Add built artefacts to release + name: Add built artefacts to release and PyPI needs: [create_release, build_and_test] if: "always()&&(needs.create_release.outputs.job_status=='success')&&(needs.build_and_test.outputs.job_status=='success')" runs-on: ubuntu-latest @@ -140,6 +145,16 @@ jobs: asset_name: rok4-${{ github.ref_name }}.tar.gz asset_content_type: application/zip + - name: Isolate wheel and tarball + run: | + mkdir to_publish + cp ./dist/rok4-${{ github.ref_name }}* to_publish/ + + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + password: ${{ secrets.PYPI_API_TOKEN }} + packages_dir: to_publish/ commit_documentation: name: Add documentation and unit tests results into gh-pages branch diff --git a/CHANGELOG.md b/CHANGELOG.md index b1bab32..5a62581 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,9 @@ ## Summary -Ajout de fonctionnalités de lecture de donnée d'une pyramide +Ajout de fonctionnalités de lecture de donnée d'une pyramide et suivi des recommandations PyPA pour la gestion du projet. ## Changelog -### [Changed] - -* 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. - ### [Added] * TileMatrix : @@ -19,11 +15,15 @@ Ajout de fonctionnalités de lecture de donnée d'une pyramide * 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 +* 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`