diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 1381761..8665c4a 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -11,14 +11,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - with: - submodules: true + - uses: actions/checkout@v4 - - name: Set up Python 3.9 - uses: actions/setup-python@v2 + - name: Set up Python 3.12 + uses: actions/setup-python@v5 with: - python-version: 3.9 + python-version: 3.12 cache: 'pip' - name: Install Python dependencies @@ -34,7 +32,8 @@ jobs: touch ./docs/_build/html/.nojekyll - name: GH Pages Deployment - uses: JamesIves/github-pages-deploy-action@4.1.3 + if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') + uses: JamesIves/github-pages-deploy-action@v4 with: branch: gh-pages # The branch the action should deploy to. folder: ./docs/_build/html diff --git a/.github/workflows/publish-pypi.yml b/.github/workflows/publish-pypi.yml deleted file mode 100644 index abc9222..0000000 --- a/.github/workflows/publish-pypi.yml +++ /dev/null @@ -1,146 +0,0 @@ -name: Publish to PyPI - -on: - push: - tags: - - "*" - -jobs: - build_linux_x86_64: - name: Build wheels for linux x86_64 - runs-on: ubuntu-latest - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 - env: - CIBW_ARCHS: x86_64 - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.8" - CIBW_MANYLINUX_X86_64_IMAGE: ghcr.io/artifactdb/prebuilt-hdf5/manylinux_x86_64:0.0.4 - CIBW_MUSLLINUX_X86_64_IMAGE: ghcr.io/artifactdb/prebuilt-hdf5/musllinux_x86_64:0.0.4 - CIBW_SKIP: pp* - - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - - build_macosx_x86_64: - name: Build wheels for macosx x86_64 - runs-on: macos-13 - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Grab prebuilt dependencies - run: | - curl -L https://github.com/ArtifactDB/prebuilt-hdf5/releases/download/0.0.4/macosx_x86_64.tar.gz > bundle.tar.gz - tar -xvf bundle.tar.gz - - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 - env: - CIBW_ARCHS: x86_64 - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.8" - CIBW_ENVIRONMENT: "MORE_CMAKE_OPTIONS=\"-DCMAKE_INSTALL_PREFIX=$(pwd)/installed -DCMAKE_OSX_ARCHITECTURES=x86_64\"" - CIBW_BUILD_VERBOSITY: 3 - CIBW_SKIP: pp* - MACOSX_DEPLOYMENT_TARGET: 11.7 - - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - - build_macosx_arm64: - name: Build wheels for macosx arm64 - runs-on: macos-13 - steps: - - name: Check out repository - uses: actions/checkout@v3 - - - name: Grab prebuilt dependencies - run: | - curl -L https://github.com/ArtifactDB/prebuilt-hdf5/releases/download/0.0.4-manual/macosx_arm64.tar.gz > bundle.tar.gz - tar -xvf bundle.tar.gz - - - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 - env: - CIBW_ARCHS: arm64 - CIBW_PROJECT_REQUIRES_PYTHON: ">=3.8" - CIBW_ENVIRONMENT: "MORE_CMAKE_OPTIONS=\"-DCMAKE_INSTALL_PREFIX=$(pwd)/installed -DCMAKE_OSX_ARCHITECTURES=arm64\"" - CIBW_BUILD_VERBOSITY: 3 - MACOSX_DEPLOYMENT_TARGET: 13.0 - - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - -# build_windows_x86_64: -# name: Build wheels for windows x86_64 -# runs-on: windows-2019 -# steps: -# - name: Check out repository -# uses: actions/checkout@v3 -# -# - name: Grab prebuilt dependencies -# run: | -# curl -L https://github.com/ArtifactDB/prebuilt-hdf5/releases/download/0.0.4/windows_x86_64.tar.gz > bundle.tar.gz -# tar -xvf bundle.tar.gz -# shell: bash -# -# - name: Store path -# run: | -# $wd = pwd -# echo "INSTALL_DIR=$wd\\installed" >> $env:GITHUB_ENV -# shell: powershell -# -# - name: Build wheels -# uses: pypa/cibuildwheel@v2.16.2 -# env: -# CIBW_ARCHS: AMD64 -# CIBW_PROJECT_REQUIRES_PYTHON: ">=3.8" -# CIBW_ENVIRONMENT: "MORE_CMAKE_OPTIONS=\"-DCMAKE_INSTALL_PREFIX=${INSTALL_DIR}\" VERBOSE=1" -# CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel" -# CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair -w {dest_dir} {wheel}" -# CIBW_TEST_EXTRAS: "testing" -# CIBW_TEST_COMMAND: "pytest {package}/tests" -# CIBW_BUILD_VERBOSITY: 3 - - - uses: actions/upload-artifact@v3 - with: - path: ./wheelhouse/*.whl - - build_sdist: - name: Build source distribution - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - - name: Build sdist - run: pipx run build --sdist - - - uses: actions/upload-artifact@v3 - with: - path: dist/*.tar.gz - - upload_pypi: - needs: [build_linux_x86_64, build_macosx_x86_64, build_macosx_arm64, build_sdist] - runs-on: ubuntu-latest - # upload to PyPI on every tag starting with 'v' - if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') - steps: - - uses: actions/download-artifact@v3 - with: - # unpacks default artifact into dist/ - # if `name: artifact` is omitted, the action will create extra parent dir - name: artifact - path: dist - - - uses: pypa/gh-action-pypi-publish@v1.8.3 - with: - user: __token__ - password: ${{ secrets.PYPI_PASSWORD }} diff --git a/.github/workflows/pypi-publish.yml b/.github/workflows/pypi-publish.yml new file mode 100644 index 0000000..1fb8b5b --- /dev/null +++ b/.github/workflows/pypi-publish.yml @@ -0,0 +1,62 @@ +name: Publish to PyPI + +on: + push: + tags: + - "*" + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + # macos-13 is an intel runner, higher macos's are apple silicon + # At some point, maybe get this to work on windows-latest + os: [ubuntu-latest, macos-13, macos-latest] + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Build wheels + uses: pypa/cibuildwheel@v2.22.0 + env: + CIBW_ARCHS_LINUX: x86_64 # remove this later so we build for all linux archs + CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9" + CIBW_SKIP: pp* + + - uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl + + build_sdist: + name: Build source distribution + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Build sdist + run: pipx run build --sdist + + - uses: actions/upload-artifact@v4 + with: + name: cibw-sdist + path: dist/*.tar.gz + + upload_pypi: + needs: [build_wheels, build_sdist] + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + pattern: cibw-* + path: dist + merge-multiple: true + + - uses: pypa/gh-action-pypi-publish@v1.12.2 + with: + user: __token__ + password: ${{ secrets.PYPI_PASSWORD }} diff --git a/.github/workflows/pypi-test.yml b/.github/workflows/pypi-test.yml new file mode 100644 index 0000000..f7c83ea --- /dev/null +++ b/.github/workflows/pypi-test.yml @@ -0,0 +1,34 @@ +name: Test the library + +on: + push: + branches: + - master + pull_request: + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [ '3.9', '3.10', '3.11', '3.12', '3.13' ] + + name: Python ${{ matrix.python-version }} + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: 'pip' + + - name: Get latest CMake + uses: lukka/get-cmake@latest + + - name: Test with tox + run: | + pip install tox + tox diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml deleted file mode 100644 index 5c8d6b1..0000000 --- a/.github/workflows/run-tests.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Run unit tests - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - test: - - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ] - - name: Python ${{ matrix.python-version }} - steps: - - uses: actions/checkout@v3 - with: - submodules: true - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - cache: 'pip' - - - name: Install Python dependencies - run: | - python -m pip install --upgrade pip setuptools - DEPENDENCIES=$(python -c 'from setuptools.config.setupcfg import read_configuration as c; a = c("setup.cfg"); print(" ".join(a["options"]["install_requires"][1:] + a["options"]["extras_require"]["testing"][1:]))') - pip install ${DEPENDENCIES} pybind11 - - # We do proper tests if we're on the master branch, or if we're creating a new release. - - name: Test with tox - if: github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') - run: | - pip install tox - tox - - # Otherwise we do some cached builds and tests for faster merging of PRs. - - name: Set up ccache - if: github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags') - uses: hendrikmuhs/ccache-action@v1.2 - - - name: Quickly build and test - if: github.ref != 'refs/heads/master' && !startsWith(github.ref, 'refs/tags') - run: | - CC="ccache gcc" python setup.py install - pytest diff --git a/CHANGELOG.md b/CHANGELOG.md index 425eb42..0d8ac77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Version 0.6.0 + +- chore: Remove Python 3.8 (EOL). +- precommit: Replace docformatter with ruff's formatter. + ## Version 0.5.1 - Added parser for delayed sparse objects backed by H5 diff --git a/docs/conf.py b/docs/conf.py index 03c8fa0..75b31cf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -72,6 +72,7 @@ "sphinx.ext.ifconfig", "sphinx.ext.mathjax", "sphinx.ext.napoleon", + "sphinx_autodoc_typehints", ] # Add any paths that contain templates here, relative to this directory. diff --git a/docs/requirements.txt b/docs/requirements.txt index 6d65a9b..daecbf1 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -5,3 +5,4 @@ furo # sphinx_rtd_theme myst-parser[linkify] sphinx>=3.2.1 +sphinx-autodoc-typehints diff --git a/setup.cfg b/setup.cfg index ce2bd72..306d4af 100644 --- a/setup.cfg +++ b/setup.cfg @@ -41,7 +41,7 @@ package_dir = =src # Require a min/specific Python version (comma-separated conditions) -python_requires = >=3.8 +python_requires = >=3.9 # Add here dependencies of your project (line-separated), e.g. requests>=2.2,<3.0. # Version specifiers like >=2.2,<3.0 avoid problems due to API changes in