diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index ae6b80b63..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,125 +0,0 @@ -# This workflow will create a Python package and upload it to testPyPi or PyPi -# Then, it installs pandapower from there and all dependencies and runs tests with different Python versions - -name: release - -# Controls when the action will run. -on: - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - inputs: - upload_server: - description: 'upload server' - required: true - default: 'testpypi' - type: choice - options: - - 'testpypi' - - 'pypi' - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - - upload: - # The type of runner that the job will run on - runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - uses: actions/checkout@v3 - - # Sets up python3 - - uses: actions/setup-python@v4 - with: - python-version: '3.10' - # Installs and upgrades pip, installs other dependencies and installs the package from setup.py - - name: Install dependencies - run: | - # Upgrade pip - python3 -m pip install --upgrade pip - # Install twine - python3 -m pip install setuptools wheel twine - - # Upload to TestPyPI - - name: Build and Upload to TestPyPI - if: inputs.upload_server == 'testpypi' - run: | - python3 setup.py sdist --formats=zip - twine check dist/* --strict - python3 -m twine upload dist/* - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.TESTPYPI }} - TWINE_REPOSITORY: testpypi - - # Upload to PyPI - - name: Build and Upload to PyPI - if: inputs.upload_server == 'pypi' - run: | - python3 setup.py sdist --formats=zip - twine check dist/* --strict - python3 -m twine upload dist/* - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI }} - TWINE_REPOSITORY: pypi - - - name: Sleep for 300s to make release available - uses: juliangruber/sleep-action@v1 - with: - time: 300s - - - build: - - runs-on: ${{ matrix.os }} - needs: upload - strategy: - matrix: - python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] - os: [ ubuntu-latest, windows-latest ] - group: [ 1, 2 ] - steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - - 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 igraph pytest-split seaborn matplotlib plotly geopandas ortools xlsxwriter openpyxl cryptography psycopg2 matpowercaseframes - - name: Install pandapower from TestPyPI - if: inputs.upload_server == 'testpypi' - run: | - pip install --no-cache-dir -i https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple pandapower - - name: Install pandapower from PyPI - if: inputs.upload_server == 'pypi' - run: | - pip install pandapower - - name: Install specific dependencies (Windows) - if: matrix.os == 'windows-latest' - run: | - if ( '${{ matrix.python-version }}' -eq '3.9' ) { python -m pip install pypower } - if ( '${{ matrix.python-version }}' -ne '3.9' ) { python -m pip install numba } - if ( '${{ matrix.python-version }}' -eq '3.8' -or '${{ matrix.python-version }}' -eq '3.10' ) { python -m pip install lightsim2grid } - - name: Install specific dependencies (Ubuntu) - if: matrix.os == 'ubuntu-latest' - run: | - 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.os == 'ubuntu-latest' && matrix.python-version == '3.9' -# run: | -# ./.install_julia.sh 1.8 -# pip install julia -# python ./.install_pycall.py - - name: List all installed packages - run: | - pip list - - name: Test with pytest - run: | - pytest --group ${{ matrix.group }} --pyargs pandapower.test diff --git a/.github/workflows/test_release.yml b/.github/workflows/test_release.yml new file mode 100644 index 000000000..adb020287 --- /dev/null +++ b/.github/workflows/test_release.yml @@ -0,0 +1,68 @@ +# This workflow will create a Python package and upload it to testPyPi or PyPi +# Then, it installs pandapower from there and all dependencies and runs tests with different Python versions + +name: release + +# Controls when the action will run. +on: + # Allows you to run this workflow manually from the Actions tab + push: + branches: + - release/* + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + build: + runs-on: ${{ matrix.os }} + needs: upload + strategy: + matrix: + python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] + os: [ ubuntu-latest, windows-latest ] + group: [ 1, 2 ] + + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install pandapower & dependencies + run: | + python -m pip install --upgrade pip + cd $GITHUB_WORKSPACE + pip install -e . + python -m pip install pytest igraph pytest-split seaborn matplotlib plotly geopandas ortools xlsxwriter openpyxl cryptography psycopg2 matpowercaseframes + + - name: Install specific dependencies (Windows) + if: matrix.os == 'windows-latest' + run: | + if ( '${{ matrix.python-version }}' -eq '3.9' ) { python -m pip install pypower } + if ( '${{ matrix.python-version }}' -ne '3.9' ) { python -m pip install numba } + if ( '${{ matrix.python-version }}' -eq '3.8' -or '${{ matrix.python-version }}' -eq '3.10' ) { python -m pip install lightsim2grid } + + - name: Install specific dependencies (Ubuntu) + if: matrix.os == 'ubuntu-latest' + run: | + 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.os == 'ubuntu-latest' && matrix.python-version == '3.9' +# run: | +# ./.install_julia.sh 1.8 +# pip install julia +# python ./.install_pycall.py + + - name: List all installed packages + run: | + pip list + + - name: Test with pytest + run: | + pytest --split 2 --group ${{ matrix.group }} --pyargs pandapower.test diff --git a/.github/workflows/upload_release.yml b/.github/workflows/upload_release.yml new file mode 100644 index 000000000..e08fb750b --- /dev/null +++ b/.github/workflows/upload_release.yml @@ -0,0 +1,54 @@ +# This workflow will create a Python package and upload it to testPyPi or PyPi +# Then, it installs pandapower from there and all dependencies and runs tests with different Python versions + +name: upload release + +# Controls when the action will run. +on: + # Allows you to run this workflow manually from the Actions tab + push: + tags: + - 'v*' + branches: + - master + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + + upload: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v4 + + # Sets up python3 + - uses: actions/setup-python@v4 + with: + python-version: '3.10' + # Installs and upgrades pip, installs other dependencies and installs the package from setup.py + - name: Install dependencies + run: | + # Upgrade pip + python3 -m pip install --upgrade pip + # Install twine + python3 -m pip install setuptools wheel twine + + # Upload to PyPI + - name: Build and Upload to PyPI + if: inputs.upload_server == 'pypi' + run: | + python3 setup.py sdist --formats=zip + twine check dist/* --strict + python3 -m twine upload dist/* + env: + TWINE_USERNAME: __token__ + TWINE_PASSWORD: ${{ secrets.PYPI }} + TWINE_REPOSITORY: pypi + + - name: Sleep for 300s to make release available + uses: juliangruber/sleep-action@v1 + with: + time: 300s