making available required standard type parameters #3869
Workflow file for this run
This file contains 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
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions | |
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions | |
name: pandapower | |
on: | |
push: | |
branches: '*' | |
paths-ignore: | |
- 'CHANGELOG.rst' | |
pull_request: | |
branches: '*' | |
paths-ignore: | |
- 'CHANGELOG.rst' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12'] | |
# Reminder: when removing the support of an old python version here, then don't forget to | |
# remove it also in pyproject.toml 'requires-python' | |
group: [ 1, 2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
#- uses: julia-actions/setup-julia@v1.5 | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
uv sync --all-extras | |
if [ -f requirements.txt ]; then uv pip install -r requirements.txt; fi | |
uv pip install pytest-split | |
if ${{ matrix.python-version == '3.9' }}; then uv pip install pypower; fi | |
if ${{ matrix.python-version != '3.9' }}; then uv pip install numba; fi | |
if ${{ matrix.python-version == '3.10' }}; then uv pip install lightsim2grid; fi | |
- name: List of installed packages | |
run: | | |
uv pip list | |
- name: Test with pytest | |
if: ${{ matrix.python-version != '3.9' }} | |
run: | | |
uv run pytest --splits 2 --group ${{ matrix.group }} | |
- name: Test with pytest, Codecov and Coverage | |
if: ${{ matrix.python-version == '3.9' }} | |
run: | | |
uv pip install pytest-cov | |
uv run pytest -n=auto --cov=./ --cov-report=xml --splits 2 --group ${{ matrix.group }} | |
cp ./coverage.xml ./coverage-${{ matrix.group }}.xml | |
- name: Upload coverage as artifact | |
if: ${{ matrix.python-version == '3.9' }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-${{ matrix.group }} | |
path: ./coverage-${{ matrix.group }}.xml | |
julia: | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
continue-on-error: true | |
strategy: | |
matrix: | |
python-version: ['3.9'] | |
# Reminder: when removing the support of an old python version here, then don't forget to | |
# remove it also in pyproject.toml 'requires-python' | |
group: [ 1, 2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
#- uses: julia-actions/setup-julia@v1.5 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
uv sync --all-extras | |
uv pip install pypower pytest-split | |
if [ -f requirements.txt ]; then uv pip install -r requirements.txt; fi | |
- name: Install Julia | |
run: | | |
./.install_julia.sh 1.10.4 | |
uv pip install julia | |
uv run python ./.install_pycall.py | |
- name: List of installed packages | |
run: | | |
uv pip list | |
- name: Test with pytest, Codecov and Coverage | |
run: | | |
uv pip install pytest-cov | |
uv run pytest -n=auto --cov=./ --cov-report=xml --splits 2 --group ${{ matrix.group }} | |
cp ./coverage.xml ./coverage-${{ matrix.group }}.xml | |
upload-coverage: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Download artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
path: . | |
pattern: coverage-* | |
merge-multiple: true | |
- name: duplicate reports | |
run: | | |
ls -al | |
cp coverage-1.xml codacy-coverage-1.xml | |
cp coverage-2.xml codacy-coverage-2.xml | |
- name: Upload coverage to Codacy | |
continue-on-error: true | |
uses: codacy/codacy-coverage-reporter-action@v1.3.0 | |
with: | |
coverage-reports: codacy-coverage-1.xml,codacy-coverage-2.xml | |
project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
- name: Upload coverage to Codecov | |
continue-on-error: true | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
file: ./coverage-1.xml,./coverage-2.xml | |
verbose: true | |
warnings: | |
# make pytest raise warnings as errors to see if there are warnings | |
runs-on: ubuntu-latest | |
timeout-minutes: 30 | |
strategy: | |
matrix: | |
python-version: ['3.12'] | |
group: [ 1, 2 ] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
uv sync --all-extras | |
uv pip install pytest-split | |
if [ -f requirements.txt ]; then uv pip install -r requirements.txt; fi | |
- name: List of installed packages | |
run: | | |
uv pip list | |
- name: Test with pytest | |
run: | | |
uv run pytest -W error --splits 2 --group ${{ matrix.group }} | |
relying: # packages that rely on pandapower | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
uv sync --extra test | |
uv pip install setuptools | |
if [ -f requirements.txt ]; then uv pip install -r requirements.txt; fi | |
uv pip install matplotlib | |
if ${{ matrix.python-version != '3.9' }}; then uv pip install numba; fi | |
- name: Install pandapipes and simbench | |
run: | | |
uv pip install git+https://github.com/e2nIEE/pandapipes@develop#egg=pandapipes | |
uv pip install git+https://github.com/e2nIEE/simbench@develop#egg=simbench | |
- name: List of installed packages | |
run: | | |
uv pip list | |
- name: Test pandapipes | |
run: | | |
uv run python -c 'from pandapipes import pp_dir; import pytest; import sys; ec = pytest.main([pp_dir]); sys.exit(ec)' | |
- name: Test simbench | |
run: | | |
uv run python -c 'from simbench import sb_dir; import pytest; import sys; ec = pytest.main([sb_dir]); sys.exit(ec)' | |
linting: | |
# run flake8 and check for errors | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.10'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
uv sync | |
uv pip install flake8 matplotlib | |
- name: List of installed packages | |
run: | | |
uv pip list | |
- name: Lint with flake8 (sytax errors and undefined names) | |
continue-on-error: true | |
run: | | |
# stop the build if there are Python syntax errors or undefined names (omitted by exit-zero) | |
uv run flake8 . --exclude .venv --count --exit-zero --select=E9,F63,F7,F82 --show-source --statistics | |
- name: Lint with flake8 (all errors and warnings) | |
run: | | |
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide | |
uv run flake8 . --exclude .venv --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics | |
postgresql: | |
# for the one test to cover postgresql | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
uv sync --extra test --extra fileio | |
- name: List of installed packages | |
run: | | |
uv pip list | |
- name: Create PostgreSQL database | |
run: | | |
sudo systemctl start postgresql.service | |
pg_isready | |
sudo -u postgres psql --command="CREATE USER test_user PASSWORD 'secret'" --command="\du" | |
sudo -u postgres createdb --owner=test_user sandbox | |
sudo -u postgres psql --command="\c sandbox" --command="CREATE SCHEMA test_schema AUTHORIZATION test_user" | |
PGPASSWORD=secret psql --username=test_user --host=localhost --list sandbox | |
- name: Test pandapower File I/O | |
run: | | |
uv run python -c "import os; import json; from pandapower import pp_dir; conn_data={'host': 'localhost', 'user': 'test_user', 'database': 'sandbox', 'password': 'secret', 'schema': 'test_schema'}; fp = open(os.path.join(pp_dir, 'test', 'test_files', 'postgresql_connect_data.json'), 'w'); json.dump(conn_data, fp); fp.close()" | |
uv run python -c 'from pandapower import pp_dir; import pytest; import sys; import os; ec = pytest.main([os.path.join(pp_dir,"test","api","test_sql_io.py")]); sys.exit(ec)' | |
tutorial_tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: '3.11' | |
- name: Install dependencies | |
run: | | |
uv sync --all-extras | |
uv pip install seaborn | |
./.install_julia.sh 1.10.4 | |
uv pip install julia seaborn jupyter | |
uv run python ./.install_pycall.py | |
- name: List all installed packages | |
run: | | |
uv pip list | |
- name: Test with pytest | |
# Careful when copying this command. The PYTHONPATH setup is Linux specific syntax. | |
run: | | |
uv run pytest --nbmake -n=auto --nbmake-timeout=900 "./tutorials" | |
tutorial_warnings_tests: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install uv | |
uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
with: | |
python-version: '3.11' | |
- name: Install dependencies | |
run: | | |
uv sync --all-extras | |
./.install_julia.sh 1.10.4 | |
uv pip install julia seaborn | |
uv run python ./.install_pycall.py | |
- name: List all installed packages | |
run: | | |
uv pip list | |
- name: Test with pytest | |
run: | | |
uv run pytest -W error --nbmake -n=auto --nbmake-timeout=900 "./tutorials" | |
docs_check: | |
name: Sphinx docs check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Check sphinx build | |
uses: ammaraskar/sphinx-action@7.4.7 | |
with: | |
pre-build-command: "python -m pip install uv && uv pip install .[docs] --system --link-mode=copy" | |
build-command: "sphinx-build -b html . _build -W" | |
docs-folder: "doc/" |