diff --git a/.github/workflows/wipac-cicd.yml b/.github/workflows/wipac-cicd.yml index 62e3910e..11483473 100644 --- a/.github/workflows/wipac-cicd.yml +++ b/.github/workflows/wipac-cicd.yml @@ -1,6 +1,6 @@ name: wipac ci/cd -on: [push] +on: [ push ] concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -18,9 +18,15 @@ jobs: outputs: matrix: ${{ steps.versions.outputs.matrix }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - id: versions - uses: WIPACrepo/wipac-dev-py-versions-action@v2.1 + uses: WIPACrepo/wipac-dev-py-versions-action@v2.5 + + + ############################################################################# + # LINTERS + ############################################################################# + flake8: runs-on: ubuntu-latest @@ -33,43 +39,87 @@ jobs: max-complexity: 25 mypy: - needs: [py-versions] + needs: [ py-versions ] runs-on: ubuntu-latest strategy: fail-fast: false matrix: py3: ${{ fromJSON(needs.py-versions.outputs.matrix) }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: python-version: ${{ matrix.py3 }} - uses: WIPACrepo/wipac-dev-mypy-action@v2.0 + ############################################################################# + # PACKAGING + ############################################################################# + + + writable-branch-detect: + runs-on: ubuntu-latest + outputs: + OKAY: ${{ steps.detect.outputs.OKAY }} + steps: + - name: is this a bot-writable branch? + id: detect + # dependabot can't access normal secrets + # & don't run non-branch triggers (like tags) + # & we don't want to trigger an update on PR's merge to main/master/default (which is a branch) + run: | + set -euo pipefail + if [[ \ + ${{github.actor}} != 'dependabot[bot]' && \ + ${{github.ref_type}} == 'branch' && \ + ${{format('refs/heads/{0}', github.event.repository.default_branch)}} != ${{github.ref}} \ + ]]; then + echo "OKAY=true" >> "$GITHUB_OUTPUT" + echo "yes, this branch is compatible" + else + echo "OKAY=false" >> "$GITHUB_OUTPUT" + echo "no, this branch is incompatible" + fi + py-setup: + needs: [ writable-branch-detect ] runs-on: ubuntu-latest steps: - # dependabot can't access normal secrets - # & don't run non-branch triggers (like tags) - - if: | - github.actor != 'dependabot[bot]' && - github.ref_type == 'branch' - name: checkout (only for non-dependabot non-default branches) - uses: actions/checkout@v3 + - if: needs.writable-branch-detect.outputs.OKAY == 'true' + uses: actions/checkout@v4 with: token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - - if: | - github.actor != 'dependabot[bot]' && - github.ref_type == 'branch' - name: wipac-dev-py-setup-action (only for non-dependabot non-default branches) - uses: WIPACrepo/wipac-dev-py-setup-action@v2.7 + - if: needs.writable-branch-detect.outputs.OKAY == 'true' + uses: WIPACrepo/wipac-dev-py-setup-action@v4.1 with: - base-keywords: IceCube + python_min: 3.9 + python_max: 3.13 + pypi_name: icecube-skyreader + author: WIPAC Developers + author_email: developers@icecube.wisc.edu + keywords: IceCube "skymap scanner" skymap HEALPix neutrino reconstruction git_committer_name: ${{ env.BOT_NAME }} git_committer_email: ${{ env.BOT_EMAIL }} + py-dependencies: + needs: [ writable-branch-detect ] + runs-on: ubuntu-latest + steps: + - if: needs.writable-branch-detect.outputs.OKAY == 'true' + uses: actions/checkout@v4 + with: + token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + - if: needs.writable-branch-detect.outputs.OKAY == 'true' + uses: WIPACrepo/wipac-dev-py-dependencies-action@v2.1 + + + ############################################################################# + # TESTS + ############################################################################# + + unit-tests: - needs: [py-versions] + needs: [ py-versions ] runs-on: ubuntu-latest strategy: fail-fast: false @@ -83,34 +133,43 @@ jobs: - name: pip install run: | + set -euo pipefail pip install --upgrade pip wheel setuptools pip install .[tests] - name: test run: | + set -euo pipefail pytest -vvv tests/unit - name: dump comparison json files if: always() run: | + set -euo pipefail more *.json | cat release: # only run on main/master/default if: format('refs/heads/{0}', github.event.repository.default_branch) == github.ref - needs: [flake8, mypy, py-setup, unit-tests] + needs: [ flake8, mypy, py-setup, py-dependencies, unit-tests ] runs-on: ubuntu-latest - concurrency: release + concurrency: release # prevent any possible race conditions steps: - - uses: actions/checkout@v3 - with: - fetch-depth: 0 - token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - - name: Python Semantic Release - uses: python-semantic-release/python-semantic-release@v7.34.6 - with: - git_committer_name: ${{ env.BOT_NAME }} - git_committer_email: ${{ env.BOT_EMAIL }} - github_token: ${{ secrets.PERSONAL_ACCESS_TOKEN }} - repository_username: __token__ - repository_password: ${{ secrets.WIPAC_PYPI_TOKEN }} + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + # Python-Package Version Bump + - uses: python-semantic-release/python-semantic-release@v9.8.1 + id: psr-psr + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + # PyPI Release + - uses: pypa/gh-action-pypi-publish@v1.8.14 + if: steps.psr-psr.outputs.released == 'true' + with: + password: ${{ secrets.PYPI_TOKEN }} + # GitHub Release + - uses: python-semantic-release/upload-to-gh-release@v9.8.1 + if: steps.psr-psr.outputs.released == 'true' + with: + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index b0fc9ddc..a7da140d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -[![PyPI](https://img.shields.io/pypi/v/icecube-skyreader)](https://pypi.org/project/icecube-skyreader/) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/icecube/skyreader?include_prereleases)](https://github.com/icecube/skyreader/) [![PyPI - License](https://img.shields.io/pypi/l/icecube-skyreader)](https://github.com/icecube/skyreader/blob/main/LICENSE) [![Lines of code](https://img.shields.io/tokei/lines/github/icecube/skyreader)](https://github.com/icecube/skyreader/) [![GitHub issues](https://img.shields.io/github/issues/icecube/skyreader)](https://github.com/icecube/skyreader/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aopen) [![GitHub pull requests](https://img.shields.io/github/issues-pr/icecube/skyreader)](https://github.com/icecube/skyreader/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Aopen) +[![PyPI](https://img.shields.io/pypi/v/icecube-skyreader)](https://pypi.org/project/icecube-skyreader/) [![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/icecube/skyreader?include_prereleases)](https://github.com/icecube/skyreader/) [![Versions](https://img.shields.io/pypi/pyversions/icecube-skyreader.svg)](https://pypi.org/project/icecube-skyreader) [![PyPI - License](https://img.shields.io/pypi/l/icecube-skyreader)](https://github.com/icecube/skyreader/blob/main/LICENSE) [![GitHub issues](https://img.shields.io/github/issues/icecube/skyreader)](https://github.com/icecube/skyreader/issues?q=is%3Aissue+sort%3Aupdated-desc+is%3Aopen) [![GitHub pull requests](https://img.shields.io/github/issues-pr/icecube/skyreader)](https://github.com/icecube/skyreader/pulls?q=is%3Apr+sort%3Aupdated-desc+is%3Aopen) # skyreader An API for Results Produced by SkyDriver & the Skymap Scanner diff --git a/dependencies-examples.log b/dependencies-examples.log index 5cc291e0..c182e60d 100644 --- a/dependencies-examples.log +++ b/dependencies-examples.log @@ -1,105 +1,135 @@ # -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --extra=examples --output-file=dependencies-examples.log +# This file was autogenerated by WIPACrepo/wipac-dev-py-dependencies-action +# from `pip install .[examples]` +# using Python 3.13. # +######################################################################## +# pip freeze +######################################################################## astropy==7.0.1 - # via - # healpy - # icecube-skyreader (setup.py) -astropy-iers-data==0.2025.2.3.0.32.42 - # via astropy +astropy-iers-data==0.2025.2.10.0.33.26 cachetools==5.5.1 - # via wipac-rest-tools certifi==2025.1.31 - # via requests cffi==1.17.1 - # via cryptography charset-normalizer==3.4.1 - # via requests contourpy==1.3.1 - # via matplotlib -cryptography==44.0.0 - # via pyjwt +cryptography==44.0.1 cycler==0.12.1 - # via matplotlib -fonttools==4.55.8 - # via matplotlib +fonttools==4.56.0 healpy==1.18.0 - # via - # icecube-skyreader (setup.py) - # mhealpy idna==3.10 - # via requests kiwisolver==1.4.8 - # via matplotlib matplotlib==3.10.0 - # via icecube-skyreader (setup.py) meander==0.0.3 - # via icecube-skyreader (setup.py) mhealpy==0.3.4 - # via icecube-skyreader (setup.py) numpy==2.2.2 - # via - # astropy - # contourpy - # healpy - # icecube-skyreader (setup.py) - # matplotlib - # pandas - # pyerfa - # scipy packaging==24.2 - # via - # astropy - # matplotlib pandas==2.2.3 - # via icecube-skyreader (setup.py) pillow==11.1.0 - # via matplotlib pycparser==2.22 - # via cffi pyerfa==2.0.1.5 - # via astropy -pyjwt[crypto]==2.10.1 - # via wipac-rest-tools +PyJWT==2.10.1 pyparsing==3.2.1 - # via matplotlib python-dateutil==2.9.0.post0 - # via - # matplotlib - # pandas pytz==2025.1 - # via pandas -pyyaml==6.0.2 - # via astropy +PyYAML==6.0.2 qrcode==8.0 - # via wipac-rest-tools requests==2.32.3 - # via - # requests-futures - # wipac-dev-tools - # wipac-rest-tools requests-futures==1.0.2 - # via wipac-rest-tools scipy==1.15.1 - # via icecube-skyreader (setup.py) six==1.17.0 - # via python-dateutil tornado==6.4.2 - # via wipac-rest-tools -typing-extensions==4.12.2 - # via wipac-dev-tools +typing_extensions==4.12.2 tzdata==2025.1 - # via pandas urllib3==2.3.0 - # via - # requests - # wipac-rest-tools wipac-dev-tools==1.15.1 - # via - # icecube-skyreader (setup.py) - # wipac-rest-tools wipac-rest-tools==1.8.5 - # via icecube-skyreader (setup.py) +######################################################################## +# pipdeptree +######################################################################## +cryptography==44.0.1 +└── cffi [required: >=1.12, installed: 1.17.1] + └── pycparser [required: Any, installed: 2.22] +icecube-skyreader +├── astropy [required: Any, installed: 7.0.1] +│ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ ├── packaging [required: >=22.0.0, installed: 24.2] +│ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +├── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── matplotlib [required: Any, installed: 3.10.0] +│ ├── contourpy [required: >=1.0.1, installed: 1.3.1] +│ │ └── numpy [required: >=1.23, installed: 2.2.2] +│ ├── cycler [required: >=0.10, installed: 0.12.1] +│ ├── fonttools [required: >=4.22.0, installed: 4.56.0] +│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.8] +│ ├── numpy [required: >=1.23, installed: 2.2.2] +│ ├── packaging [required: >=20.0, installed: 24.2] +│ ├── pillow [required: >=8, installed: 11.1.0] +│ ├── pyparsing [required: >=2.3.1, installed: 3.2.1] +│ └── python-dateutil [required: >=2.7, installed: 2.9.0.post0] +│ └── six [required: >=1.5, installed: 1.17.0] +├── meander [required: Any, installed: 0.0.3] +├── mhealpy [required: Any, installed: 0.3.4] +│ └── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── numpy [required: Any, installed: 2.2.2] +├── pandas [required: Any, installed: 2.2.3] +│ ├── numpy [required: >=1.26.0, installed: 2.2.2] +│ ├── python-dateutil [required: >=2.8.2, installed: 2.9.0.post0] +│ │ └── six [required: >=1.5, installed: 1.17.0] +│ ├── pytz [required: >=2020.1, installed: 2025.1] +│ └── tzdata [required: >=2022.7, installed: 2025.1] +├── scipy [required: Any, installed: 1.15.1] +│ └── numpy [required: >=1.23.5,<2.5, installed: 2.2.2] +└── wipac-dev-tools [required: Any, installed: 1.15.1] + ├── requests [required: Any, installed: 2.32.3] + │ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] + │ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] + │ ├── idna [required: >=2.5,<4, installed: 3.10] + │ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] + └── typing_extensions [required: Any, installed: 4.12.2] +pipdeptree==2.25.0 +├── packaging [required: >=24.1, installed: 24.2] +└── pip [required: >=24.2, installed: 25.0.1] +wipac-rest-tools==1.8.5 +├── cachetools [required: Any, installed: 5.5.1] +├── PyJWT [required: !=2.6.0, installed: 2.10.1] +├── qrcode [required: Any, installed: 8.0] +├── requests [required: Any, installed: 2.32.3] +│ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] +│ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] +│ ├── idna [required: >=2.5,<4, installed: 3.10] +│ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] +├── requests-futures [required: Any, installed: 1.0.2] +│ └── requests [required: >=1.2.0, installed: 2.32.3] +│ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] +│ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] +│ ├── idna [required: >=2.5,<4, installed: 3.10] +│ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] +├── tornado [required: Any, installed: 6.4.2] +├── urllib3 [required: >=2.0.4, installed: 2.3.0] +└── wipac-dev-tools [required: Any, installed: 1.15.1] + ├── requests [required: Any, installed: 2.32.3] + │ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] + │ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] + │ ├── idna [required: >=2.5,<4, installed: 3.10] + │ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] + └── typing_extensions [required: Any, installed: 4.12.2] diff --git a/dependencies-mypy.log b/dependencies-mypy.log index 054b69e7..bb9f2c01 100644 --- a/dependencies-mypy.log +++ b/dependencies-mypy.log @@ -1,116 +1,144 @@ # -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --extra=mypy --output-file=dependencies-mypy.log +# This file was autogenerated by WIPACrepo/wipac-dev-py-dependencies-action +# from `pip install .[mypy]` +# using Python 3.13. # +######################################################################## +# pip freeze +######################################################################## astropy==7.0.1 - # via - # healpy - # icecube-skyreader (setup.py) -astropy-iers-data==0.2025.2.3.0.32.42 - # via astropy +astropy-iers-data==0.2025.2.10.0.33.26 cachetools==5.5.1 - # via wipac-rest-tools certifi==2025.1.31 - # via requests cffi==1.17.1 - # via cryptography charset-normalizer==3.4.1 - # via requests contourpy==1.3.1 - # via matplotlib -cryptography==44.0.0 - # via pyjwt +cryptography==44.0.1 cycler==0.12.1 - # via matplotlib -fonttools==4.55.8 - # via matplotlib +fonttools==4.56.0 healpy==1.18.0 - # via - # icecube-skyreader (setup.py) - # mhealpy idna==3.10 - # via requests iniconfig==2.0.0 - # via pytest kiwisolver==1.4.8 - # via matplotlib matplotlib==3.10.0 - # via icecube-skyreader (setup.py) meander==0.0.3 - # via icecube-skyreader (setup.py) mhealpy==0.3.4 - # via icecube-skyreader (setup.py) numpy==2.2.2 - # via - # astropy - # contourpy - # healpy - # icecube-skyreader (setup.py) - # matplotlib - # pandas - # pyerfa - # scipy packaging==24.2 - # via - # astropy - # matplotlib - # pytest pandas==2.2.3 - # via icecube-skyreader (setup.py) pillow==11.1.0 - # via matplotlib pluggy==1.5.0 - # via pytest pycparser==2.22 - # via cffi pyerfa==2.0.1.5 - # via astropy -pyjwt[crypto]==2.10.1 - # via wipac-rest-tools +PyJWT==2.10.1 pyparsing==3.2.1 - # via matplotlib pytest==8.3.4 - # via - # icecube-skyreader (setup.py) - # pytest-mock pytest-mock==3.14.0 - # via icecube-skyreader (setup.py) python-dateutil==2.9.0.post0 - # via - # matplotlib - # pandas pytz==2025.1 - # via pandas -pyyaml==6.0.2 - # via astropy +PyYAML==6.0.2 qrcode==8.0 - # via wipac-rest-tools requests==2.32.3 - # via - # requests-futures - # wipac-dev-tools - # wipac-rest-tools requests-futures==1.0.2 - # via wipac-rest-tools scipy==1.15.1 - # via icecube-skyreader (setup.py) six==1.17.0 - # via python-dateutil tornado==6.4.2 - # via wipac-rest-tools -typing-extensions==4.12.2 - # via wipac-dev-tools +typing_extensions==4.12.2 tzdata==2025.1 - # via pandas urllib3==2.3.0 - # via - # requests - # wipac-rest-tools wipac-dev-tools==1.15.1 - # via - # icecube-skyreader (setup.py) - # wipac-rest-tools wipac-rest-tools==1.8.5 - # via icecube-skyreader (setup.py) +######################################################################## +# pipdeptree +######################################################################## +cryptography==44.0.1 +└── cffi [required: >=1.12, installed: 1.17.1] + └── pycparser [required: Any, installed: 2.22] +icecube-skyreader +├── astropy [required: Any, installed: 7.0.1] +│ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ ├── packaging [required: >=22.0.0, installed: 24.2] +│ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +├── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── matplotlib [required: Any, installed: 3.10.0] +│ ├── contourpy [required: >=1.0.1, installed: 1.3.1] +│ │ └── numpy [required: >=1.23, installed: 2.2.2] +│ ├── cycler [required: >=0.10, installed: 0.12.1] +│ ├── fonttools [required: >=4.22.0, installed: 4.56.0] +│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.8] +│ ├── numpy [required: >=1.23, installed: 2.2.2] +│ ├── packaging [required: >=20.0, installed: 24.2] +│ ├── pillow [required: >=8, installed: 11.1.0] +│ ├── pyparsing [required: >=2.3.1, installed: 3.2.1] +│ └── python-dateutil [required: >=2.7, installed: 2.9.0.post0] +│ └── six [required: >=1.5, installed: 1.17.0] +├── meander [required: Any, installed: 0.0.3] +├── mhealpy [required: Any, installed: 0.3.4] +│ └── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── numpy [required: Any, installed: 2.2.2] +├── pandas [required: Any, installed: 2.2.3] +│ ├── numpy [required: >=1.26.0, installed: 2.2.2] +│ ├── python-dateutil [required: >=2.8.2, installed: 2.9.0.post0] +│ │ └── six [required: >=1.5, installed: 1.17.0] +│ ├── pytz [required: >=2020.1, installed: 2025.1] +│ └── tzdata [required: >=2022.7, installed: 2025.1] +├── scipy [required: Any, installed: 1.15.1] +│ └── numpy [required: >=1.23.5,<2.5, installed: 2.2.2] +└── wipac-dev-tools [required: Any, installed: 1.15.1] + ├── requests [required: Any, installed: 2.32.3] + │ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] + │ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] + │ ├── idna [required: >=2.5,<4, installed: 3.10] + │ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] + └── typing_extensions [required: Any, installed: 4.12.2] +pipdeptree==2.25.0 +├── packaging [required: >=24.1, installed: 24.2] +└── pip [required: >=24.2, installed: 25.0.1] +pytest-mock==3.14.0 +└── pytest [required: >=6.2.5, installed: 8.3.4] + ├── iniconfig [required: Any, installed: 2.0.0] + ├── packaging [required: Any, installed: 24.2] + └── pluggy [required: >=1.5,<2, installed: 1.5.0] +wipac-rest-tools==1.8.5 +├── cachetools [required: Any, installed: 5.5.1] +├── PyJWT [required: !=2.6.0, installed: 2.10.1] +├── qrcode [required: Any, installed: 8.0] +├── requests [required: Any, installed: 2.32.3] +│ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] +│ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] +│ ├── idna [required: >=2.5,<4, installed: 3.10] +│ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] +├── requests-futures [required: Any, installed: 1.0.2] +│ └── requests [required: >=1.2.0, installed: 2.32.3] +│ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] +│ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] +│ ├── idna [required: >=2.5,<4, installed: 3.10] +│ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] +├── tornado [required: Any, installed: 6.4.2] +├── urllib3 [required: >=2.0.4, installed: 2.3.0] +└── wipac-dev-tools [required: Any, installed: 1.15.1] + ├── requests [required: Any, installed: 2.32.3] + │ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] + │ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] + │ ├── idna [required: >=2.5,<4, installed: 3.10] + │ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] + └── typing_extensions [required: Any, installed: 4.12.2] diff --git a/dependencies-tests.log b/dependencies-tests.log index a64aef31..cbc2d658 100644 --- a/dependencies-tests.log +++ b/dependencies-tests.log @@ -1,91 +1,108 @@ # -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --extra=tests --output-file=dependencies-tests.log +# This file was autogenerated by WIPACrepo/wipac-dev-py-dependencies-action +# from `pip install .[tests]` +# using Python 3.13. # +######################################################################## +# pip freeze +######################################################################## astropy==7.0.1 - # via - # healpy - # icecube-skyreader (setup.py) -astropy-iers-data==0.2025.2.3.0.32.42 - # via astropy +astropy-iers-data==0.2025.2.10.0.33.26 certifi==2025.1.31 - # via requests charset-normalizer==3.4.1 - # via requests contourpy==1.3.1 - # via matplotlib cycler==0.12.1 - # via matplotlib -fonttools==4.55.8 - # via matplotlib +fonttools==4.56.0 healpy==1.18.0 - # via - # icecube-skyreader (setup.py) - # mhealpy idna==3.10 - # via requests iniconfig==2.0.0 - # via pytest kiwisolver==1.4.8 - # via matplotlib matplotlib==3.10.0 - # via icecube-skyreader (setup.py) meander==0.0.3 - # via icecube-skyreader (setup.py) mhealpy==0.3.4 - # via icecube-skyreader (setup.py) numpy==2.2.2 - # via - # astropy - # contourpy - # healpy - # icecube-skyreader (setup.py) - # matplotlib - # pandas - # pyerfa - # scipy packaging==24.2 - # via - # astropy - # matplotlib - # pytest pandas==2.2.3 - # via icecube-skyreader (setup.py) pillow==11.1.0 - # via matplotlib pluggy==1.5.0 - # via pytest pyerfa==2.0.1.5 - # via astropy pyparsing==3.2.1 - # via matplotlib pytest==8.3.4 - # via - # icecube-skyreader (setup.py) - # pytest-mock pytest-mock==3.14.0 - # via icecube-skyreader (setup.py) python-dateutil==2.9.0.post0 - # via - # matplotlib - # pandas pytz==2025.1 - # via pandas -pyyaml==6.0.2 - # via astropy +PyYAML==6.0.2 requests==2.32.3 - # via wipac-dev-tools scipy==1.15.1 - # via icecube-skyreader (setup.py) six==1.17.0 - # via python-dateutil -typing-extensions==4.12.2 - # via wipac-dev-tools +typing_extensions==4.12.2 tzdata==2025.1 - # via pandas urllib3==2.3.0 - # via requests wipac-dev-tools==1.15.1 - # via icecube-skyreader (setup.py) +######################################################################## +# pipdeptree +######################################################################## +icecube-skyreader +├── astropy [required: Any, installed: 7.0.1] +│ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ ├── packaging [required: >=22.0.0, installed: 24.2] +│ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +├── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── matplotlib [required: Any, installed: 3.10.0] +│ ├── contourpy [required: >=1.0.1, installed: 1.3.1] +│ │ └── numpy [required: >=1.23, installed: 2.2.2] +│ ├── cycler [required: >=0.10, installed: 0.12.1] +│ ├── fonttools [required: >=4.22.0, installed: 4.56.0] +│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.8] +│ ├── numpy [required: >=1.23, installed: 2.2.2] +│ ├── packaging [required: >=20.0, installed: 24.2] +│ ├── pillow [required: >=8, installed: 11.1.0] +│ ├── pyparsing [required: >=2.3.1, installed: 3.2.1] +│ └── python-dateutil [required: >=2.7, installed: 2.9.0.post0] +│ └── six [required: >=1.5, installed: 1.17.0] +├── meander [required: Any, installed: 0.0.3] +├── mhealpy [required: Any, installed: 0.3.4] +│ └── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── numpy [required: Any, installed: 2.2.2] +├── pandas [required: Any, installed: 2.2.3] +│ ├── numpy [required: >=1.26.0, installed: 2.2.2] +│ ├── python-dateutil [required: >=2.8.2, installed: 2.9.0.post0] +│ │ └── six [required: >=1.5, installed: 1.17.0] +│ ├── pytz [required: >=2020.1, installed: 2025.1] +│ └── tzdata [required: >=2022.7, installed: 2025.1] +├── scipy [required: Any, installed: 1.15.1] +│ └── numpy [required: >=1.23.5,<2.5, installed: 2.2.2] +└── wipac-dev-tools [required: Any, installed: 1.15.1] + ├── requests [required: Any, installed: 2.32.3] + │ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] + │ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] + │ ├── idna [required: >=2.5,<4, installed: 3.10] + │ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] + └── typing_extensions [required: Any, installed: 4.12.2] +pipdeptree==2.25.0 +├── packaging [required: >=24.1, installed: 24.2] +└── pip [required: >=24.2, installed: 25.0.1] +pytest-mock==3.14.0 +└── pytest [required: >=6.2.5, installed: 8.3.4] + ├── iniconfig [required: Any, installed: 2.0.0] + ├── packaging [required: Any, installed: 24.2] + └── pluggy [required: >=1.5,<2, installed: 1.5.0] diff --git a/dependencies.log b/dependencies.log index 02d9d37f..12465656 100644 --- a/dependencies.log +++ b/dependencies.log @@ -1,80 +1,99 @@ # -# This file is autogenerated by pip-compile with Python 3.11 -# by the following command: -# -# pip-compile --output-file=dependencies.log +# This file was autogenerated by WIPACrepo/wipac-dev-py-dependencies-action +# from `pip install .` +# using Python 3.13. # +######################################################################## +# pip freeze +######################################################################## astropy==7.0.1 - # via - # healpy - # icecube-skyreader (setup.py) -astropy-iers-data==0.2025.2.3.0.32.42 - # via astropy +astropy-iers-data==0.2025.2.10.0.33.26 certifi==2025.1.31 - # via requests charset-normalizer==3.4.1 - # via requests contourpy==1.3.1 - # via matplotlib cycler==0.12.1 - # via matplotlib -fonttools==4.55.8 - # via matplotlib +fonttools==4.56.0 healpy==1.18.0 - # via - # icecube-skyreader (setup.py) - # mhealpy idna==3.10 - # via requests kiwisolver==1.4.8 - # via matplotlib matplotlib==3.10.0 - # via icecube-skyreader (setup.py) meander==0.0.3 - # via icecube-skyreader (setup.py) mhealpy==0.3.4 - # via icecube-skyreader (setup.py) numpy==2.2.2 - # via - # astropy - # contourpy - # healpy - # icecube-skyreader (setup.py) - # matplotlib - # pandas - # pyerfa - # scipy packaging==24.2 - # via - # astropy - # matplotlib pandas==2.2.3 - # via icecube-skyreader (setup.py) pillow==11.1.0 - # via matplotlib pyerfa==2.0.1.5 - # via astropy pyparsing==3.2.1 - # via matplotlib python-dateutil==2.9.0.post0 - # via - # matplotlib - # pandas pytz==2025.1 - # via pandas -pyyaml==6.0.2 - # via astropy +PyYAML==6.0.2 requests==2.32.3 - # via wipac-dev-tools scipy==1.15.1 - # via icecube-skyreader (setup.py) six==1.17.0 - # via python-dateutil -typing-extensions==4.12.2 - # via wipac-dev-tools +typing_extensions==4.12.2 tzdata==2025.1 - # via pandas urllib3==2.3.0 - # via requests wipac-dev-tools==1.15.1 - # via icecube-skyreader (setup.py) +######################################################################## +# pipdeptree +######################################################################## +icecube-skyreader +├── astropy [required: Any, installed: 7.0.1] +│ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ ├── packaging [required: >=22.0.0, installed: 24.2] +│ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +├── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── matplotlib [required: Any, installed: 3.10.0] +│ ├── contourpy [required: >=1.0.1, installed: 1.3.1] +│ │ └── numpy [required: >=1.23, installed: 2.2.2] +│ ├── cycler [required: >=0.10, installed: 0.12.1] +│ ├── fonttools [required: >=4.22.0, installed: 4.56.0] +│ ├── kiwisolver [required: >=1.3.1, installed: 1.4.8] +│ ├── numpy [required: >=1.23, installed: 2.2.2] +│ ├── packaging [required: >=20.0, installed: 24.2] +│ ├── pillow [required: >=8, installed: 11.1.0] +│ ├── pyparsing [required: >=2.3.1, installed: 3.2.1] +│ └── python-dateutil [required: >=2.7, installed: 2.9.0.post0] +│ └── six [required: >=1.5, installed: 1.17.0] +├── meander [required: Any, installed: 0.0.3] +├── mhealpy [required: Any, installed: 0.3.4] +│ └── healpy [required: Any, installed: 1.18.0] +│ ├── astropy [required: Any, installed: 7.0.1] +│ │ ├── astropy-iers-data [required: >=0.2025.1.31.12.41.4, installed: 0.2025.2.10.0.33.26] +│ │ ├── numpy [required: >=1.23.2, installed: 2.2.2] +│ │ ├── packaging [required: >=22.0.0, installed: 24.2] +│ │ ├── pyerfa [required: >=2.0.1.1, installed: 2.0.1.5] +│ │ │ └── numpy [required: >=1.19.3, installed: 2.2.2] +│ │ └── PyYAML [required: >=6.0.0, installed: 6.0.2] +│ └── numpy [required: >=1.19, installed: 2.2.2] +├── numpy [required: Any, installed: 2.2.2] +├── pandas [required: Any, installed: 2.2.3] +│ ├── numpy [required: >=1.26.0, installed: 2.2.2] +│ ├── python-dateutil [required: >=2.8.2, installed: 2.9.0.post0] +│ │ └── six [required: >=1.5, installed: 1.17.0] +│ ├── pytz [required: >=2020.1, installed: 2025.1] +│ └── tzdata [required: >=2022.7, installed: 2025.1] +├── scipy [required: Any, installed: 1.15.1] +│ └── numpy [required: >=1.23.5,<2.5, installed: 2.2.2] +└── wipac-dev-tools [required: Any, installed: 1.15.1] + ├── requests [required: Any, installed: 2.32.3] + │ ├── certifi [required: >=2017.4.17, installed: 2025.1.31] + │ ├── charset-normalizer [required: >=2,<4, installed: 3.4.1] + │ ├── idna [required: >=2.5,<4, installed: 3.10] + │ └── urllib3 [required: >=1.21.1,<3, installed: 2.3.0] + └── typing_extensions [required: Any, installed: 4.12.2] +pipdeptree==2.25.0 +├── packaging [required: >=24.1, installed: 24.2] +└── pip [required: >=24.2, installed: 25.0.1] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..edc9a4ea --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,48 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + +[project] +version = "1.3.3" +dependencies = ["astropy", "healpy", "matplotlib", "meander", "mhealpy", "numpy", "pandas", "scipy", "wipac-dev-tools"] +name = "icecube-skyreader" +description = "An API for Results Produced by SkyDriver & the Skymap Scanner" +readme = "README.md" +keywords = ["IceCube", "skymap scanner", "skymap", "HEALPix", "neutrino", "reconstruction"] +classifiers = ["Development Status :: 5 - Production/Stable", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13"] +requires-python = ">=3.9, <3.14" + +[[project.authors]] +name = "WIPAC Developers" +email = "developers@icecube.wisc.edu" + +[project.license] +file = "LICENSE" + +[project.optional-dependencies] +tests = ["pytest", "pytest-mock"] +examples = ["wipac-rest-tools"] +mypy = ["pytest", "pytest-mock", "wipac-rest-tools"] + +[project.urls] +Homepage = "https://pypi.org/project/icecube-skyreader/" +Tracker = "https://github.com/icecube/skyreader/issues" +Source = "https://github.com/icecube/skyreader" + +[tool.semantic_release] +version_toml = ["pyproject.toml:project.version"] +version_variables = ["skyreader/__init__.py:__version__"] +commit_parser = "emoji" +build_command = "pip install build && python -m build" + +[tool.semantic_release.commit_parser_options] +major_tags = ["[major]"] +minor_tags = ["[minor]", "[feature]"] +patch_tags = ["[patch]", "[fix]", " ", "!", "#", "$", "%", "&", "'", "(", ")", "*", "+", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~"] + +[tool.setuptools.package-data] +"*" = ["py.typed"] + +[tool.setuptools.packages.find] +namespaces = false +exclude = ["test", "tests", "doc", "docs", "resource", "resources", "example", "examples"] diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 4193d0b9..00000000 --- a/setup.cfg +++ /dev/null @@ -1,85 +0,0 @@ -[wipac:cicd_setup_builder] -pypi_name = icecube-skyreader -python_min = 3.9 -python_max = 3.12 -author = WIPAC Developers -author_email = developers@icecube.wisc.edu -keywords_spaced = "skymap scanner" skymap HEALPix neutrino reconstruction - -[metadata] # generated by wipac:cicd_setup_builder: name, version, url, author, author_email, description, long_description, long_description_content_type, keywords, license, classifiers, download_url, project_urls -name = icecube-skyreader -version = attr: skyreader.__version__ -url = https://github.com/icecube/skyreader -author = WIPAC Developers -author_email = developers@icecube.wisc.edu -description = An API for Results Produced by SkyDriver & the Skymap Scanner -long_description = file: README.md -long_description_content_type = text/markdown -keywords = - skymap scanner - skymap - HEALPix - neutrino - reconstruction - IceCube -license = MIT -classifiers = - Development Status :: 5 - Production/Stable - License :: OSI Approved :: MIT License - Programming Language :: Python :: 3.9 - Programming Language :: Python :: 3.10 - Programming Language :: Python :: 3.11 - Programming Language :: Python :: 3.12 -download_url = https://pypi.org/project/icecube-skyreader/ -project_urls = - Tracker = https://github.com/icecube/skyreader/issues - Source = https://github.com/icecube/skyreader - -[semantic_release] # fully-generated by wipac:cicd_setup_builder -version_variable = skyreader/__init__.py:__version__ -upload_to_pypi = True -patch_without_tag = True -commit_parser = semantic_release.history.emoji_parser -major_emoji = [major] -minor_emoji = [minor] -patch_emoji = [fix], [patch] -branch = main - -[options] # generated by wipac:cicd_setup_builder: python_requires, packages -install_requires = - astropy - healpy - matplotlib - meander - mhealpy - numpy - pandas - scipy - wipac-dev-tools -python_requires = >=3.9, <3.13 -packages = find: - -[options.extras_require] -tests = - pytest - pytest-mock -examples = - wipac-rest-tools -mypy = - %(tests)s - %(examples)s - -[options.package_data] # generated by wipac:cicd_setup_builder: '*' -* = py.typed - -[options.packages.find] # generated by wipac:cicd_setup_builder: include/exclude -exclude = - test - tests - doc - docs - resource - resources - example - examples -