PyPowSyBl

A Python library for modelling and simulating power grids by providing bindings to the powsybl Java framework.
https://github.com/powsybl/pypowsybl

Category: Energy Systems
Sub Category: Energy System Modeling Frameworks

Keywords

cgmes load-flow loadflow power-flow power-system power-system-analysis power-system-simulation powerflow python

Keywords from Contributors

power-systems energy-system powsybl cim extensible groovy modular klu user-stories single-line-diagram

Last synced: about 18 hours ago
JSON representation

Repository metadata

A PowSyBl and Python integration based on GraalVM native image

README.md

PyPowSyBl

PyPI Latest Release
Documentation Status
MPL-2.0 License
Slack
Actions Status

Python code quality :
Quality Gate Status (python)
Coverage

Java code quality :
Quality Gate Status (java)

The PyPowSyBl project gives access PowSyBl Java framework to Python developers. This Python integration relies on
GraalVM to compile Java code to a native library.

Documentation

Latest version of the documentation with API reference and many code samples is here.

To contribute to the documentation follow the instructions in the documentation README page.

Notebooks

Notebooks demonstrating PyPowSyBl features can be found in this repository.

Installation

PyPowSyBl is released on PyPi for Python 3.10 to 3.14, on Linux, Windows and MacOS.

First, make sure you have an up-to-date version of pip and setuptools:

pip install --upgrade setuptools pip

Then you can install PyPowSyBl using pip:

pip install pypowsybl

Contributing

See Contributing.md for explanations
on how to contribute to the code.

See Security.md to read about the security policy.

Getting started

First, we have to import pypowsybl:

import pypowsybl as pp

We can create an IEEE 14 buses network and run a load flow computation:

n = pp.network.create_ieee14()
results = pp.loadflow.run_ac(n)
print(results)
[ComponentResult(connected_component_num=0, synchronous_component_num=0, status=CONVERGED, status_text=CONVERGED, iteration_count=3, reference_bus_id='VL1_0', slack_bus_results=[SlackBusResult(id='VL1_0', active_power_mismatch=-0.006730108618313579)], distributed_active_power=0.0)]

We can now get buses data (like any other network elements) as a Pandas dataframe:

buses = n.get_buses()
print(buses)
        v_mag  v_angle
VL1_0   1.060     0.00
VL2_0   1.045    -4.98
VL3_0   1.010   -12.72
VL4_0   1.019   -10.33
VL5_0   1.020    -8.78
VL6_0   1.070   -14.22
VL7_0   1.062   -13.37
VL8_0   1.090   -13.36
VL9_0   1.056   -14.94
VL10_0  1.051   -15.10
VL11_0  1.057   -14.79
VL12_0  1.055   -15.07
VL13_0  1.050   -15.16
VL14_0  1.036   -16.04

This is just a quick appetizer of PyPowSyBl features. PyPowsybl provides a lot more features:
security analysis, sensitivity analysis, handling of multiple file formats (including CGMES),
substation and network diagrams generation, ...
For more details and examples, go to the documentation and Jupyter notebooks.

Build from sources

That section is intended for developers who wish to build pypowsybl from the sources in this repository.

Requirements:

  • Maven >= 3.1
  • Cmake >= 3.20
  • C++11 compiler
  • Python >= 3.10 for Linux, Windows and MacOS (amd64 and arm64)
  • Oracle GraalVM Java 21

To build from sources and install PyPowSyBl package:

git clone https://github.com/powsybl/pypowsybl.git
cd pypowsybl
export JAVA_HOME=<path to GraalVM>
pip install --upgrade setuptools pip
pip install -r requirements.txt
pip install .

While developing, you may find it convenient to use the developer (or editable)
mode of installation:

pip install -e .
# or, to build the C extension with debug symbols:
python setup.py build --debug develop --user

Please refer to pip and setuptools documentations for more information.

To run unit tests:

pytest tests

To run static type checking with mypy:

mypy -p pypowsybl

To run linting inspection with pylint:

pylint pypowsybl

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 3 days ago

Total Commits: 922
Total Committers: 48
Avg Commits per committer: 19.208
Development Distribution Score (DDS): 0.746

Commits in past year: 150
Committers in past year: 26
Avg Commits per committer in past year: 5.769
Development Distribution Score (DDS) in past year: 0.567

Name Email Commits
Geoffroy Jamgotchian g****n@r****m 234
EtienneLt 3****t 168
HugoKulesza h****a@r****m 136
Sylvain Leclerc s****c@r****m 100
Bertrand Rix b****x@a****m 36
Coline Piloquet 5****t 32
Christian Biasuzzi c****i@s****t 29
jeandemanged d****e@a****m 25
Lisrte l****e@r****m 24
yichen88 3****8 21
Sophie Frasnedo 9****s 14
Florian Dupuy 6****p 12
Nicolas Rol n****l@r****m 11
Thomas Bouquet t****t@r****m 7
Choco 9****t 6
CARON Alice a****n@r****m 6
nicow-elia 1****a 5
Gautier Bureau g****u@r****m 5
Naledi 1****8 4
Olivier Perrin o****n@r****m 4
OpenSuze 4****e 4
Clément Leclerc c****c@r****m 3
Peter Mitri p****i@r****m 3
DONNOT Benjamin b****t@r****m 3
Landry Huet l****t@s****m 2
Nicolas Pierre 1****r 2
thomas-durand-SGI t****d@s****m 2
Sylvestre Prabakaran s****n@r****m 2
Godelaine g****n@r****m 2
phiedw p****s@r****m 2
and 18 more...

Committer domains:


Issue and Pull Request metadata

Last synced: 3 days ago

Total issues: 164
Total pull requests: 804
Average time to close issues: 6 months
Average time to close pull requests: 20 days
Total issue authors: 50
Total pull request authors: 43
Average comments per issue: 1.21
Average comments per pull request: 1.23
Merged pull request: 595
Bot issues: 0
Bot pull requests: 0

Past year issues: 35
Past year pull requests: 133
Past year average time to close issues: 3 months
Past year average time to close pull requests: 17 days
Past year issue authors: 18
Past year pull request authors: 21
Past year average comments per issue: 0.54
Past year average comments per pull request: 2.14
Past year merged pull request: 76
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/powsybl/pypowsybl

Top Issue Authors

  • sylvlecl (21)
  • HugoKulesza (21)
  • alicecaron (11)
  • AnkurArohi (10)
  • BDonnot (10)
  • nicow-elia (9)
  • jeandemanged (6)
  • bqth29 (6)
  • EtienneLt (4)
  • gautierbureau (4)
  • geofjamg (3)
  • LeonHilf (3)
  • Lisrte (3)
  • colinepiloquet (3)
  • unetablettedechocolat (3)

Top Pull Request Authors

  • HugoKulesza (158)
  • geofjamg (154)
  • EtienneLt (128)
  • jeandemanged (47)
  • obrix (42)
  • colinepiloquet (41)
  • Lisrte (30)
  • CBiasuzzi (25)
  • So-Fras (21)
  • rolnico (17)
  • gautierbureau (15)
  • bqth29 (13)
  • unetablettedechocolat (11)
  • nao1345678 (11)
  • flo-dup (9)

Top Issue Labels

  • bug (37)
  • enhancement (11)
  • rao (9)
  • Release 06/2025 (7)
  • Release 09/2025 (6)
  • Release 06/2026 (6)
  • Release 03/2026 (4)
  • documentation (3)
  • PR: next-release (2)
  • status: in-progress (2)
  • status: needs-design (2)
  • Release 12/2025 (1)
  • help wanted (1)
  • Release 03/2025 (1)
  • Epic (1)
  • Release 09/2026 (1)

Top Pull Request Labels

  • status: ready to be merged (106)
  • status: ready-for-review (49)
  • PR: next-release (44)
  • breaking change (32)
  • documentation (28)
  • Release 06/2026 (27)
  • Release 06/2025 (25)
  • bug (24)
  • Release 03/2025 (21)
  • Release 09/2025 (16)
  • December 2024 release (13)
  • rao (12)
  • Release 03/2026 (11)
  • Release 09/2026 (8)
  • waiting for powsybl-dependencies (4)
  • status: in-progress (4)
  • Release 12/2025 (4)
  • do not merge (3)
  • enhancement (3)
  • help wanted (2)
  • deprecated (2)
  • status: does not compile (1)
  • wontfix (1)
  • status: needs-design (1)
  • status: conflict with main (1)

Package metadata

proxy.golang.org: github.com/powsybl/PyPowSyBl

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/powsybl/PyPowSyBl#section-documentation
  • Licenses: mpl-2.0
  • Latest release: v1.16.1 (published 22 days ago)
  • Last Synced: 2026-08-11T12:06:36.059Z (2 days ago)
  • Versions: 53
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 4.568%
    • Average: 4.721%
    • Dependent repos count: 4.875%
proxy.golang.org: github.com/Powsybl/pypowsybl

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/Powsybl/pypowsybl#section-documentation
  • Licenses: mpl-2.0
  • Latest release: v1.16.1 (published 22 days ago)
  • Last Synced: 2026-08-11T12:06:35.594Z (2 days ago)
  • Versions: 53
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 4.568%
    • Average: 4.721%
    • Dependent repos count: 4.875%
proxy.golang.org: github.com/powsybl/pypowsybl

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/powsybl/pypowsybl#section-documentation
  • Licenses: mpl-2.0
  • Latest release: v1.16.1 (published 22 days ago)
  • Last Synced: 2026-08-11T12:06:35.547Z (2 days ago)
  • Versions: 53
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 5.395%
    • Average: 5.576%
    • Dependent repos count: 5.758%
pypi.org: pypowsybl

A PowSyBl Python API

  • Homepage: https://github.com/powsybl/pypowsybl
  • Documentation: https://pypowsybl.readthedocs.io/
  • Licenses: MPL-2.0
  • Latest release: 1.16.1 (published 22 days ago)
  • Last Synced: 2026-08-11T12:06:33.972Z (2 days ago)
  • Versions: 47
  • Dependent Packages: 4
  • Dependent Repositories: 1
  • Downloads: 27,157 Last month
  • Rankings:
    • Downloads: 6.618%
    • Dependent packages count: 7.303%
    • Stargazers count: 10.458%
    • Average: 11.81%
    • Forks count: 12.604%
    • Dependent repos count: 22.068%
  • Maintainers (3)
repo1.maven.org: com.powsybl:pypowsybl

A C interface to powsybl, for pypowsybl implementation

  • Homepage: https://www.powsybl.org
  • Documentation: https://appdoc.app/artifact/com.powsybl/pypowsybl/
  • Licenses: Mozilla Public License, Version 2.0
  • Latest release: 1.11.2 (published about 1 year ago)
  • Last Synced: 2026-08-11T12:06:33.540Z (2 days ago)
  • Versions: 36
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Stargazers count: 23.871%
    • Forks count: 29.031%
    • Dependent repos count: 31.98%
    • Average: 33.435%
    • Dependent packages count: 48.86%

Dependencies

java/pom.xml maven
  • ch.qos.logback:logback-classic 1.2.3 compile
  • ch.qos.logback:logback-core 1.2.3 compile
  • com.powsybl:powsybl-ieee-cdf-converter compile
  • com.powsybl:powsybl-dependencies 1.2.0 import
  • org.graalvm.nativeimage:svm 21.3.0 provided
  • org.graalvm.sdk:graal-sdk 21.3.0 provided
  • com.powsybl:powsybl-cgmes-conformity
  • com.powsybl:powsybl-cgmes-conversion
  • com.powsybl:powsybl-cgmes-model
  • com.powsybl:powsybl-config-classic
  • com.powsybl:powsybl-glsk-document-ucte
  • com.powsybl:powsybl-iidm-api
  • com.powsybl:powsybl-iidm-impl
  • com.powsybl:powsybl-iidm-reducer
  • com.powsybl:powsybl-iidm-test
  • com.powsybl:powsybl-iidm-xml-converter
  • com.powsybl:powsybl-loadflow-api
  • com.powsybl:powsybl-math-native 1.2.1
  • com.powsybl:powsybl-matpower-converter
  • com.powsybl:powsybl-network-area-diagram
  • com.powsybl:powsybl-open-loadflow
  • com.powsybl:powsybl-powerfactory-converter
  • com.powsybl:powsybl-powerfactory-dgs
  • com.powsybl:powsybl-psse-converter
  • com.powsybl:powsybl-single-line-diagram-core
  • com.powsybl:powsybl-tools
  • com.powsybl:powsybl-triple-store-impl-rdf4j
  • com.powsybl:powsybl-ucte-converter
  • org.apache.commons:commons-collections4 4.4
  • org.codehaus.janino:janino 3.1.0
  • org.mapdb:mapdb 3.0.8
  • org.slf4j:log4j-over-slf4j 1.7.30
  • com.powsybl:powsybl-commons test
  • com.powsybl:powsybl-math-native test
  • org.assertj:assertj-core 3.11.0 test
  • org.junit.jupiter:junit-jupiter-engine 5.5.2 test
requirements.txt pypi
  • coverage ==5.5
  • matplotlib *
  • mypy ==0.931
  • networkx *
  • pandas ==1.3.5
  • pandas-stubs ==1.2.0.47
  • prettytable ==2.0.0
  • pydata-sphinx-theme ==0.6.3
  • pylint ==2.12.2
  • pytest >=6.2.5
  • sphinx ==4.2.0
  • wheel ==0.37.1
setup.py pypi
  • networkx *
  • pandas *
  • prettytable *
.github/workflows/dev-ci.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
  • graalvm/setup-graalvm v1 composite
  • sonarsource/sonarcloud-github-action v1.6 composite
.github/workflows/full-ci.yml actions
  • actions/checkout v3 composite
  • actions/download-artifact v3 composite
  • actions/setup-python v4 composite
  • actions/upload-artifact v3 composite
  • graalvm/setup-graalvm v1 composite
  • sonarsource/sonarcloud-github-action v1.6 composite

Score: 19.333159097940143