Add type hinting #161
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Test | |
| on: | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| # branches: [ master ] | |
| release: | |
| types: [published] | |
| jobs: | |
| build-wheel: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.14' | |
| - name: Build the wheel | |
| run: | | |
| python -m pip install --group dev | |
| python -m build | |
| - name: Upload wheel | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: wheel | |
| path: dist/*.whl | |
| - name: Run the tests | |
| run: | | |
| pytest -v | |
| - name: Build the docs | |
| run: | | |
| make -j 4 -C doc/sphinx SPHINXOPTS="-W --keep-going" html | |
| # Test the wheel on different platforms | |
| test: | |
| runs-on: ${{ matrix.cfg.os }} | |
| needs: build-wheel | |
| strategy: | |
| matrix: | |
| cfg: | |
| #- { os: ubuntu-20.04, py: '3.6' } | |
| - { os: ubuntu-latest, py: '3.10' } | |
| - { os: ubuntu-latest, py: '3.14', doc: 1 } | |
| - { os: windows-latest, py: '3.14' } | |
| - { os: macos-latest, py: '3.14' } | |
| fail-fast: false | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python ${{ matrix.cfg.py }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.cfg.py }} | |
| - name: Download the wheel | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: wheel | |
| path: dist | |
| - name: Install the wheel | |
| run: python -m pip install dist/periodictable*.whl | |
| shell: bash | |
| # uncertainties and matplotlib are optional packages, but they are needed for mypy tests | |
| - name: Install test dependencies | |
| run: | | |
| python -m pip install --group test | |
| # Use --pyargs --import-mode=append to target the installed package. | |
| # Change into the test directory to test the wheel so that the | |
| # source directory is not on the path. We are running coverage tests | |
| # because it shows that it is indeed the installed package that is tested. | |
| # The mypy plugin fails when testing the installed package. Since there is no | |
| # way to turn the option off, so we instead erase the addopts configuration | |
| # and put them explicitly on the pytest command line below without --mypy. | |
| - name: Test wheel with pytest | |
| run: | | |
| cd test | |
| pytest -v --pyargs --import-mode=append periodictable --override-ini addopts= --doctest-modules --doctest-glob=*.rst --cov=periodictable . ../doc/sphinx/guide | |
| # Upload wheel to PyPI only when a tag is pushed, and its name begins with 'v' | |
| upload-to-pypi: | |
| runs-on: ubuntu-latest | |
| environment: release | |
| needs: test | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| permissions: | |
| id-token: write | |
| steps: | |
| - name: Download wheel | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: wheel | |
| path: dist | |
| - name: Publish package distributions to PyPI | |
| uses: pypa/gh-action-pypi-publish@release/v1 |