diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 5f1d3f51..25d2adac 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -18,63 +18,54 @@ jobs: include: - name: 'check' python: '3.11' - toxpython: 'python3.11' tox_env: 'check' os: 'ubuntu-latest' + python_arch: 'x64' - name: 'docs' python: '3.11' - toxpython: 'python3.11' tox_env: 'docs' os: 'ubuntu-latest' + python_arch: 'x64' - name: 'py38 (ubuntu)' python: '3.8' - toxpython: 'python3.8' python_arch: 'x64' tox_env: 'py38' os: 'ubuntu-latest' - name: 'py39 (ubuntu)' python: '3.9' - toxpython: 'python3.9' python_arch: 'x64' tox_env: 'py39' os: 'ubuntu-latest' - name: 'py39 (windows)' python: '3.9' - toxpython: 'python3.9' python_arch: 'x64' tox_env: 'py39' os: 'windows-latest' - name: 'py310 (ubuntu)' python: '3.10' - toxpython: 'python3.10' python_arch: 'x64' tox_env: 'py310' os: 'ubuntu-latest' - name: 'py310 (windows)' python: '3.10' - toxpython: 'python3.10' python_arch: 'x64' tox_env: 'py310' os: 'windows-latest' - name: 'py311 (ubuntu)' python: '3.11' - toxpython: 'python3.11' python_arch: 'x64' tox_env: 'py311' os: 'ubuntu-latest' - name: 'py311 (macos)' python: '3.11' - toxpython: 'python3.11' - python_arch: 'x64' + python_arch: 'arm64' tox_env: 'py311' os: 'macos-latest' - name: 'py311 (windows)' python: '3.11' - toxpython: 'python3.11' python_arch: 'x64' tox_env: 'py311' os: 'windows-latest' - # - name: 'pypy38 (ubuntu)' # python: 'pypy-3.8' # toxpython: 'pypy3.8' @@ -84,7 +75,7 @@ jobs: # - name: 'pypy38 (macos)' # python: 'pypy-3.8' # toxpython: 'pypy3.8' -# python_arch: 'x64' +# python_arch: 'arm64' # tox_env: 'pypy38' # os: 'macos-latest' # - name: 'pypy39 (ubuntu)' @@ -96,7 +87,7 @@ jobs: # - name: 'pypy39 (macos)' # python: 'pypy-3.9' # toxpython: 'pypy3.9' -# python_arch: 'x64' +# python_arch: 'arm64' # tox_env: 'pypy39' # os: 'macos-latest' @@ -105,26 +96,47 @@ jobs: with: fetch-depth: 0 - uses: actions/setup-python@v5 + id: setup with: python-version: ${{ matrix.python }} architecture: ${{ matrix.python_arch }} - - name: install dependencies + + - name: test [linux] + if: runner.os == 'Linux' + run: | + ${{ steps.setup.outputs.python-path }} -m venv .venv + source .venv/bin/activate + python -m pip install --upgrade pip + pip install -r ci/requirements.txt + tox -e ${{ matrix.tox_env }} -v + + - name: test [macos] + if: runner.os == 'macOS' + run: | + ${{ steps.setup.outputs.python-path }} -m venv .venv + source .venv/bin/activate + python -m pip install --upgrade pip + pip install -r ci/requirements.txt + # Install the project in editable mode, which also installs its dependencies + pip install -e . + # Install test-specific dependencies + pip install pytest pytest-cov + # Run pytest directly, bypassing tox for the test execution step + pytest --cov --cov-report=term-missing --cov-report=xml -vv tests + + - name: test [windows] + if: runner.os == 'Windows' + shell: pwsh run: | - python -mpip install --upgrade pip - python -mpip install --progress-bar=off -r ci/requirements.txt - virtualenv --version - pip --version - tox --version - pip list --format=freeze - - name: test - env: - TOXPYTHON: '${{ matrix.toxpython }}' - run: > + ${{ steps.setup.outputs.python-path }} -m venv .venv + . .venv\Scripts\activate + python -m pip install --upgrade pip + pip install -r ci/requirements.txt tox -e ${{ matrix.tox_env }} -v coveralls: name: Upload coverage to Coveralls - if: github.ref == 'refs/heads/main' # Prevent from running on PRs, tags + if: github.ref == 'refs/heads/main' needs: test runs-on: ubuntu-latest steps: @@ -132,27 +144,21 @@ jobs: with: fetch-depth: 0 - uses: actions/setup-python@v5 + id: setup with: python-version: '3.11' architecture: 'x64' - - name: install dependencies - run: | - python -mpip install --upgrade pip - python -mpip install --progress-bar=off -r ci/requirements.txt - virtualenv --version - pip --version - tox --version - pip list --format=freeze - name: generate coverage report - env: - TOXPYTHON: '3.11' run: | + ${{ steps.setup.outputs.python-path }} -m venv .venv + source .venv/bin/activate + python -m pip install --upgrade pip + pip install -r ci/requirements.txt tox -e py311 - name: Coveralls GitHub Action uses: coverallsapp/github-action@v2.3.0 - deploy_docs: name: Deploy docs to GitHub Pages if: github.ref == 'refs/heads/main' # Prevent from running on PRs, tags @@ -166,27 +172,21 @@ jobs: with: fetch-depth: 0 - uses: actions/setup-python@v5 + id: setup with: python-version: '3.11' architecture: 'x64' - - name: install dependencies - run: | - python -mpip install --upgrade pip - python -mpip install --progress-bar=off -r ci/requirements.txt - virtualenv --version - pip --version - tox --version - pip list --format=freeze - name: generate docs - env: - TOXPYTHON: '3.11' run: | + ${{ steps.setup.outputs.python-path }} -m venv .venv + source .venv/bin/activate + python -m pip install --upgrade pip + pip install -r ci/requirements.txt tox -e docs -v - ls -l dist/docs cp -r dist/docs _site/ - - name: fix permissions # https://github.com/actions/upload-pages-artifact#file-permissions + - name: Fix permissions # https://github.com/actions/upload-pages-artifact#file-permissions run: | chmod -c -R +rX "_site/" | while read line; do echo "::warning title=Invalid file permissions automatically fixed::$line" diff --git a/.gitignore b/.gitignore index 9c696f0e..0a1fef10 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ Geothermal_district_heating_system_with_peaking_boilers.png # TODO may want to add this to source regenerate-schemas.sh +requirements_2025-08-11.txt # C extensions *.so diff --git a/ci/templates/.github/workflows/github-actions.yml b/ci/templates/.github/workflows/github-actions.yml index 7b6ba413..3dd5f6c5 100644 --- a/ci/templates/.github/workflows/github-actions.yml +++ b/ci/templates/.github/workflows/github-actions.yml @@ -32,11 +32,10 @@ jobs: {% endif %} {% for os, python_arch in [ ['ubuntu', 'x64'], - ['macos', 'x64'], + ['macos', 'arm64'], ] %} - name: '{{ env }} ({{ os }})' python: '{{ python }}' - toxpython: '{{ toxpython }}' python_arch: '{{ python_arch }}' tox_env: '{{ env }}' os: '{{ os }}-latest'