fix warning in LTDS yupiter notebook (#3033) #7243
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
| # 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: | |
| paths-ignore: | |
| - 'CHANGELOG.rst' | |
| - '**/CHANGELOG.rst' | |
| pull_request: | |
| paths-ignore: | |
| - 'CHANGELOG.rst' | |
| - '**/CHANGELOG.rst' | |
| permissions: | |
| contents: read | |
| # https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] | |
| # Reminder: when removing the support of an old python version here, then don't forget to | |
| # remove it also in pyproject.toml 'requires-python' and the release pipelines | |
| group: [ 1, 2 ] | |
| steps: | |
| # - uses: julia-actions/setup-julia # Update version when using this by adding commit sha! | |
| - uses: actions/checkout@v6 | |
| - 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 dev | |
| uv pip install pytest-split | |
| uv pip uninstall juliacall | |
| # if ${{ matrix.python-version == '3.10' }}; then uv pip install pypower; fi | |
| # if ${{ matrix.python-version != '3.10' }}; then uv pip install numba; fi | |
| # if ${{ matrix.python-version == '3.14' }}; then uv pip install lightsim2grid; fi | |
| # if ${{ matrix.python-version == '3.13' }}; then uv pip install lightsim2grid; fi | |
| - name: List of installed packages | |
| run: | | |
| uv pip list | |
| - name: Test with pytest | |
| if: ${{ matrix.python-version != '3.10' }} | |
| run: | | |
| uv run pytest --splits 2 --group ${{ matrix.group }} --ignore=pandapower/test/opf | |
| - name: Test with pytest, Codecov and Coverage | |
| if: ${{ matrix.python-version == '3.10' }} | |
| run: | | |
| uv pip install pytest-cov numpy~=1.26 | |
| uv run pytest --cov=./ --cov-report=xml --splits 2 --group ${{ matrix.group }} --ignore=pandapower/test/opf | |
| cp ./coverage.xml ./coverage-${{ matrix.group }}.xml | |
| - name: Upload coverage as artifact | |
| if: ${{ matrix.python-version == '3.10' }} | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: coverage-${{ matrix.group }} | |
| path: ./coverage-${{ matrix.group }}.xml | |
| numpy1-support: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| group: [1, 2] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a #v4.2.0 | |
| with: | |
| python-version: "3.14" | |
| - name: Install dependencies | |
| run: | | |
| uv sync --extra dev | |
| uv pip install pytest-split | |
| uv pip install numpy~=1.26 | |
| uv pip uninstall juliacall | |
| - name: List of installed packages | |
| run: | | |
| uv pip list | |
| - name: Test with pytest | |
| run: | | |
| uv run pytest --splits 2 --group ${{ matrix.group }} --ignore=pandapower/test/opf | |
| opf: | |
| # needs: build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| continue-on-error: true | |
| strategy: | |
| matrix: | |
| python-version: ['3.14'] | |
| julia-version: ['1.10'] | |
| # 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 ] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: julia-actions/setup-julia@5c9647d97b78a5debe5164e9eec09d653d29bd71 #v2 | |
| with: | |
| version: ${{ matrix.julia-version }} | |
| arch: 'x64' | |
| #- 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 dev | |
| python -m pip install pypower pytest-split pytest-cov juliacall julia | |
| python -m pip install .[pandamodels,test] | |
| # 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: Install PandaModels.jl | |
| run: | | |
| julia -e 'using Pkg; Pkg.add("PandaModels")' | |
| julia -e 'using Pkg; ENV["PYTHON"] = "/home/runner/work/pandapower/pandapower/.venv/bin/python3"; Pkg.add("PyCall")' | |
| python -c "import julia; julia.install(color=True)" | |
| - name: List of installed packages | |
| run: | | |
| pip list | |
| julia -e 'using Pkg; Pkg.status()' | |
| - name: Test with pytest, Codecov and Coverage | |
| run: | | |
| pytest --cov=./ --cov-report=xml pandapower/test/opf | |
| # uv run python-jl -m pytest --cov=./ --cov-report=xml | |
| cp ./coverage.xml ./coverage-${{ matrix.group }}.xml | |
| upload-coverage: | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Download artifacts | |
| uses: actions/download-artifact@v8 | |
| 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@89d6c85cfafaec52c72b6c5e8b2878d33104c699 #v1.3 | |
| 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@5a1091511ad55cbe89839c7260b706298ca349f7 #v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| files: ./coverage-1.xml,./coverage-2.xml | |
| verbose: true | |
| warnings: | |
| # make pytest raise warnings as errors to see if there are warnings | |
| needs: build | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| strategy: | |
| matrix: | |
| python-version: ['3.14'] | |
| group: [ 1, 2 ] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - 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 dev | |
| 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 | |
| needs: build | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| python-version: ['3.10', '3.11', '3.12', '3.13', '3.14'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - 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 | |
| uv pip install lxml | |
| if ${{ matrix.python-version != '3.10' }}; 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 | |
| needs: build | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python-version: ['3.10'] | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - 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 (syntax 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 | |
| needs: build | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:16 | |
| env: | |
| POSTGRES_USER: test_user | |
| POSTGRES_PASSWORD: secret | |
| POSTGRES_DB: sandbox | |
| ports: | |
| - 5432:5432 | |
| - 55432:5432 # custom port to test against. | |
| options: >- | |
| --name postgres | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| strategy: | |
| matrix: | |
| python-version: ['3.14'] | |
| steps: | |
| - name: Wait for PostgreSQL database to be ready | |
| run: | | |
| until pg_isready -h localhost -U test_user; do | |
| echo "Waiting for Postgres…" | |
| sleep 2 | |
| done | |
| - name: Check psql and service version compatibility | |
| run: | | |
| SERVER_VERSION=$(docker exec postgres psql -U test_user -d sandbox -tA -c "SHOW server_version;") | |
| CLIENT_VERSION=$(psql --version | awk '{print $3}') | |
| SERVER_MAJOR=${SERVER_VERSION%%.*} | |
| CLIENT_MAJOR=${CLIENT_VERSION%%.*} | |
| echo "PostgreSQL Server Version: $SERVER_MAJOR - Client Version: $CLIENT_MAJOR" | |
| if [ "$SERVER_MAJOR" != "$CLIENT_MAJOR" ]; then | |
| echo "::error::psql version mismatch - server=$SERVER_MAJOR vs client=$CLIENT_MAJOR" | |
| exit 1 | |
| fi | |
| - uses: actions/checkout@v6 | |
| - 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 test_schema in sandbox database | |
| env: | |
| PGPASSWORD: secret | |
| run: | | |
| psql -h localhost -U test_user -d sandbox -c "CREATE SCHEMA test_schema AUTHORIZATION test_user" | |
| psql -h localhost -U test_user --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)" | |
| - name: Test pandapower File I/O against alternative port | |
| 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', 'port': 55432}; 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: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| group: [ 1, 2, 3 ] | |
| steps: | |
| # UV does not work for julia, do not add it here! | |
| - uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install -e .[all,tutorials,test] | |
| - name: List all installed packages | |
| run: | | |
| python -m pip list | |
| - name: Test with pytest | |
| # Careful when copying this command. The PYTHONPATH setup is Linux specific syntax. | |
| run: | | |
| pytest --splits 3 --group ${{ matrix.group }} --nbmake --nbmake-timeout=900 --timeout=900 "./tutorials" | |
| tutorial_warnings_tests: | |
| needs: build | |
| runs-on: ubuntu-latest | |
| steps: | |
| # UV does not work for julia, do not add it here! | |
| - uses: actions/checkout@v6 | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install -e .[all,tutorials,test] | |
| - name: List all installed packages | |
| run: | | |
| python -m pip list | |
| - name: Test with pytest | |
| run: | | |
| pytest -W error --nbmake --nbmake-timeout=900 --timeout=900 "./tutorials" | |
| docs_check: | |
| needs: build | |
| name: Sphinx docs check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Check sphinx build | |
| uses: ammaraskar/sphinx-action@54e52bfb642e9b60ea5b6bcb05fe3f74b40d290a #8.2.3 | |
| with: | |
| pre-build-command: "python -m pip install uv && uv pip install .[dev] --system --link-mode=copy" | |
| build-command: "sphinx-build -b html . _build -W" | |
| docs-folder: "doc/" | |
| typing: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| strategy: | |
| matrix: | |
| python-version: ['3.14'] | |
| # Reminder: when removing the support of an old python version here, then don't forget to | |
| # remove it also in pyproject.toml 'requires-python' | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - 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 | |
| - name: Check types with mypy | |
| run: | | |
| uv run mypy |