raise importerror if geopy or pyproj is not installed for better (#2122) #2685
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: 30 | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.9', '3.10', '3.11'] | |
group: [ 1, 2 ] | |
steps: | |
- uses: actions/checkout@v3 | |
#- uses: julia-actions/[email protected] | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install pytest pytest-split | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
pip install .["all"] | |
if ${{ matrix.python-version == '3.9' }}; then python -m pip install pypower; fi | |
if ${{ matrix.python-version != '3.9' }}; then python -m pip install numba; fi | |
if ${{ matrix.python-version == '3.8' || matrix.python-version == '3.10' }}; then python -m pip install lightsim2grid; fi | |
- name: Install Julia | |
if: ${{ matrix.python-version == '3.9' }} | |
run: | | |
./.install_julia.sh 1.8 | |
pip install julia | |
python ./.install_pycall.py | |
- name: List of installed packages | |
run: | | |
pip list | |
- name: Test with pytest | |
if: ${{ matrix.python-version != '3.9' }} | |
run: | | |
pytest --splits 2 --group ${{ matrix.group }} | |
- name: Test with pytest and Codecov | |
if: ${{ matrix.python-version == '3.9' }} | |
run: | | |
pip install pytest-cov | |
pytest --cov=./ --cov-report=xml --splits 2 --group ${{ matrix.group }} | |
- name: Upload coverage to Codecov | |
if: ${{ matrix.python-version == '3.9' }} | |
uses: codecov/codecov-action@v1 | |
with: | |
verbose: true | |
relying: # packages that rely on pandapower | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.8', '3.9', '3.10', '3.11'] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install pytest | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
pip install . | |
pip install matplotlib | |
if ${{ matrix.python-version != '3.9' }}; then python -m pip install numba; fi | |
- name: Install pandapipes and simbench | |
run: | | |
python -m pip install git+https://github.com/e2nIEE/pandapipes@develop#egg=pandapipes | |
python -m pip install git+https://github.com/e2nIEE/simbench@develop#egg=simbench | |
- name: List of installed packages | |
run: | | |
pip list | |
- name: Test pandapipes | |
run: | | |
python -c 'from pandapipes import pp_dir; import pytest; import sys; ec = pytest.main([pp_dir]); sys.exit(ec)' | |
- name: Test simbench | |
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@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install flake8 | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
pip install . | |
pip install matplotlib | |
- name: List of installed packages | |
run: | | |
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) | |
flake8 . --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 | |
flake8 . --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.8', '3.9', '3.10', '3.11'] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install .[test,fileio] | |
- name: List of installed packages | |
run: | | |
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: | | |
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()" | |
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 | |
strategy: | |
matrix: | |
python-version: ['3.9'] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install pytest nbmake pytest-xdist igraph numba seaborn | |
./.install_julia.sh 1.8 | |
pip install julia | |
python ./.install_pycall.py | |
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi | |
pip install .["all"] | |
- name: List all installed packages | |
run: | | |
pip list | |
- name: Test with pytest | |
run: | | |
pytest --nbmake -n=auto --nbmake-timeout=900 "./tutorials" | |
docs_check: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: [ '3.9' ] | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Check docs for Python ${{ matrix.python-version }} | |
uses: e2nIEE/sphinx-action@master | |
with: | |
pre-build-command: "apt-get update -y && apt-get install -y git; | |
git --version; | |
python -m pip install --upgrade pip; | |
python -m pip install git+https://github.com/e2nIEE/pandapower@develop#egg=pandapower; | |
python -m pip install .; | |
pip install matplotlib" | |
build-command: "sphinx-build -b html . _build -W" | |
docs-folder: "doc/" |