feat: cross-Analysis shared per-evaluation state in FactorGraphModel #3436
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: Tests | |
| on: [push] | |
| jobs: | |
| unittest: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.12', '3.13'] | |
| steps: | |
| - name: Checkout PyAutoConf | |
| uses: actions/checkout@v2 | |
| with: | |
| repository: PyAutoLabs/PyAutoConf | |
| path: PyAutoConf | |
| - name: Checkout PyAutoFit | |
| uses: actions/checkout@v2 | |
| with: | |
| path: PyAutoFit | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v2 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - uses: actions/cache@v3 | |
| id: cache-pip | |
| with: | |
| path: ~/.cache/pip | |
| key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} | |
| restore-keys: | | |
| ${{ runner.os }}-pip- | |
| - name: Extract branch name | |
| shell: bash | |
| run: | | |
| cd PyAutoFit | |
| echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})" | |
| id: extract_branch | |
| - name: Change to same branch if exists in deps | |
| shell: bash | |
| run: | | |
| export PACKAGES=("PyAutoConf") | |
| export BRANCH="${{ steps.extract_branch.outputs.branch }}" | |
| for PACKAGE in ${PACKAGES[@]}; do | |
| pushd $PACKAGE | |
| export existed_in_remote=$(git ls-remote --heads origin ${BRANCH}) | |
| if [[ -z ${existed_in_remote} ]]; then | |
| echo "Branch $BRANCH did not exist in $PACKAGE" | |
| else | |
| echo "Branch $BRANCH did exist in $PACKAGE" | |
| git fetch | |
| git checkout $BRANCH | |
| fi | |
| popd | |
| done | |
| - name: Install dependencies | |
| # if: steps.cache-pip.outputs.cache-hit != 'true' | |
| run: | | |
| pip3 install --upgrade pip | |
| pip3 install setuptools | |
| pip3 install wheel | |
| pip3 install pytest coverage pytest-cov | |
| pip install ./PyAutoConf "./PyAutoFit[optional]" | |
| - name: Run tests | |
| run: | | |
| export ROOT_DIR=`pwd` | |
| export PYTHONPATH=$PYTHONPATH:$ROOT_DIR/PyAutoConf | |
| export PYTHONPATH=$PYTHONPATH:$ROOT_DIR/PyAutoFit | |
| pushd PyAutoFit | |
| # The NSS test suite (test_autofit/non_linear/search/nest/nss/) runs in | |
| # the parallel `unittest_nss` job below — it needs the handley-lab | |
| # blackjax fork from the [nss] extra, which conflicts with the | |
| # blackjax>=1.2.0 mainline pinned in [optional]. | |
| if [ "${{ matrix.python-version }}" = "3.13" ]; then | |
| pytest --cov autofit --cov-report xml:coverage.xml \ | |
| --ignore=test_autofit/non_linear/search/nest/nss \ | |
| --ignore=test_autofit/database/test_file_types.py \ | |
| --ignore=test_autofit/non_linear/paths/test_save_and_load.py \ | |
| --ignore=test_autofit/aggregator/summary_files/test_aggregate_fits.py \ | |
| --ignore=test_autofit/aggregator/test_child_analysis.py \ | |
| --ignore=test_autofit/aggregator/test_reference.py \ | |
| --ignore=test_autofit/aggregator/test_scrape.py \ | |
| --ignore=test_autofit/graphical/gaussian/test_optimizer.py \ | |
| --ignore=test_autofit/graphical/hierarchical/test_optimise.py \ | |
| --ignore=test_autofit/non_linear/search/test_sneaky_map.py \ | |
| --deselect "test_autofit/graphical/test_composition.py::test_other_priors[LogUniformPrior]" \ | |
| --deselect "test_autofit/mapper/prior/test_prior.py::TestLogUniformPrior::test__non_zero_lower_limit" | |
| else | |
| pytest --cov autofit --cov-report xml:coverage.xml \ | |
| --ignore=test_autofit/non_linear/search/nest/nss | |
| fi | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v3 | |
| - name: Slack send | |
| if: ${{ failure() }} | |
| id: slack | |
| uses: slackapi/slack-github-action@v1.21.0 | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| with: | |
| channel-id: C03S98FEDK2 | |
| payload: | | |
| { | |
| "text": "${{ github.repository }}/${{ github.ref_name }} (Python ${{ matrix.python-version }}) build result: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| } | |
| unittest_nss: | |
| # NSS tests live in their own job because the [nss] extra pins the | |
| # handley-lab/blackjax fork (BSD-3-Clause, ~0.1.0b1.dev85+gef45acd2f), | |
| # which is mutually incompatible with the mainline `blackjax>=1.2.0` | |
| # that the `[optional]` extra (and `test_blackjax_nuts.py`) requires. | |
| # Two envs in parallel keep both test families green without forcing a | |
| # choice between them. | |
| name: NSS tests (fork blackjax) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.12', '3.13'] | |
| steps: | |
| - name: Checkout PyAutoConf | |
| uses: actions/checkout@v4 | |
| with: | |
| repository: PyAutoLabs/PyAutoConf | |
| path: PyAutoConf | |
| - name: Checkout PyAutoFit | |
| uses: actions/checkout@v4 | |
| with: | |
| path: PyAutoFit | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| - name: Install dependencies | |
| run: | | |
| pip install --upgrade pip | |
| pip install pytest pytest-cov | |
| pip install ./PyAutoConf "./PyAutoFit[nss]" | |
| # blackjax (handley-lab fork) and yallup/nss can't live in the [nss] | |
| # extra — PyPI bans direct git+ URLs in uploaded wheel metadata. | |
| # Install them post-extras instead. SHAs are the single source of | |
| # truth in PyAutoFit/pyproject.toml's [nss] comment — keep in sync. | |
| pip install \ | |
| "blackjax @ git+https://github.com/handley-lab/blackjax.git@ef45acd2f2fa0cca15adbdcd3ff7cb3a98987cb5" \ | |
| "nss @ git+https://github.com/yallup/nss.git@69159b0f4a3a53123b9eec7df91e4ed3885e4dc4" | |
| - name: Run NSS tests | |
| run: | | |
| export PYTHONPATH=$PWD/PyAutoConf:$PWD/PyAutoFit | |
| pushd PyAutoFit | |
| pytest test_autofit/non_linear/search/nest/nss | |
| - name: Slack send | |
| if: ${{ failure() }} | |
| uses: slackapi/slack-github-action@v1.21.0 | |
| env: | |
| SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} | |
| with: | |
| channel-id: C03S98FEDK2 | |
| payload: | | |
| { | |
| "text": "${{ github.repository }}/${{ github.ref_name }} NSS tests (Python ${{ matrix.python-version }}) result: ${{ job.status }}\n${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" | |
| } |