Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
136335c
Adjust example config
lukelowry Jan 7, 2026
3f11013
Mesh Class
lukelowry Jan 7, 2026
4bbb3ab
Merge pull request #1 from lukelowry/ply
lukelowry Jan 7, 2026
16852da
Gallery config
lukelowry Jan 7, 2026
5a143b3
move examples
lukelowry Jan 8, 2026
9b12db9
Final config doc
lukelowry Jan 8, 2026
1581790
nbsphinx suggestions
lukelowry Jan 8, 2026
762509a
Add more API to sphinx
lukelowry Jan 8, 2026
96841fe
Fixed io object mistake from when restructuring
lukelowry Jan 8, 2026
2075e7f
All examples working
lukelowry Jan 8, 2026
4ba0dd6
Update docs
lukelowry Jan 8, 2026
7573d47
Fix wilcard import
lukelowry Jan 8, 2026
6e3d39e
More wildcard imports
lukelowry Jan 8, 2026
f90b38e
mock for unused
lukelowry Jan 8, 2026
28e73c1
Simpify package layout
lukelowry Jan 8, 2026
aeaa1a9
change imported-members to false
lukelowry Jan 8, 2026
90db386
Doc Settings
lukelowry Jan 8, 2026
2bc3f20
exclude shp files
lukelowry Jan 8, 2026
09b7379
build version and exlude PWRaw
lukelowry Jan 8, 2026
6851cb1
update paths and mock geopandas
lukelowry Jan 8, 2026
167b51f
Misc Config
lukelowry Jan 8, 2026
e98de03
More mock
lukelowry Jan 8, 2026
e83a25d
Misc mocks more
lukelowry Jan 8, 2026
819517e
Misc attempts
lukelowry Jan 8, 2026
601b08c
docstring
lukelowry Jan 8, 2026
34f7879
Misc config
lukelowry Jan 8, 2026
750fd51
exclude components
lukelowry Jan 8, 2026
80667f4
Gobject silent failure
lukelowry Jan 8, 2026
ace90c5
Attempt Config
lukelowry Jan 8, 2026
cb79273
Misc config
lukelowry Jan 8, 2026
05a0e4f
rename components
lukelowry Jan 8, 2026
80b6f1a
util module now independent
lukelowry Jan 8, 2026
0bd4813
Rename gridwb to esapp
lukelowry Jan 8, 2026
071a39a
numpy version less than 2
lukelowry Jan 8, 2026
e401370
misc docstrings
lukelowry Jan 8, 2026
1adcc42
doctring update
lukelowry Jan 8, 2026
de40671
Large amounts of docstrings
lukelowry Jan 8, 2026
288e51e
Minor correction on docstring
lukelowry Jan 8, 2026
c35e778
hide memebers of object classes
lukelowry Jan 8, 2026
2579a70
Skip members using sphinx handler
lukelowry Jan 8, 2026
8d610ef
Doc config for fields
lukelowry Jan 8, 2026
f6754d3
Remove autosummary
lukelowry Jan 8, 2026
1590a3a
doc fix maybe
lukelowry Jan 8, 2026
345abf2
robust tests
lukelowry Jan 8, 2026
bbf9507
Fine tune docs
lukelowry Jan 8, 2026
b8f0b5d
Completely new tests and examples
lukelowry Jan 9, 2026
5440db0
Fix conf
lukelowry Jan 9, 2026
d23c938
Updated docs
lukelowry Jan 9, 2026
b84cd55
formatting for clarity
lukelowry Jan 9, 2026
6ea2c53
Misc doc improvments
lukelowry Jan 9, 2026
6d00619
High Coverage and minor bug fix
lukelowry Jan 9, 2026
f91666d
update docs bio
lukelowry Jan 9, 2026
fc50c52
minor changes
lukelowry Jan 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,20 @@ coverage.xml
*.py,cover
.hypothesis/
.pytest_cache/
test_output.log

# Test configuration (contains local paths)
tests/config_test.py
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
*.py,cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
Expand Down Expand Up @@ -139,3 +153,5 @@ dmypy.json
# vscode settings
.vscode/
.vscode/settings.json
tests/test_indextool.py
docs/examples/system_health_report.csv
7 changes: 3 additions & 4 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ version: 2
build:
os: ubuntu-22.04
tools:
python: "3.9"
python: "3.11"
apt_packages:
- pandoc

Expand All @@ -21,7 +21,6 @@ sphinx:
# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt
- method: pip
path: .
extra_requirements:
- docs
path: .
44 changes: 28 additions & 16 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,23 @@ ESA++
:target: https://opensource.org/licenses/Apache-2.0
:alt: License

.. image:: https://img.shields.io/badge/python-3.9%2B-blue.svg
:target: https://www.python.org/downloads/
:alt: Python 3.9+

.. image:: https://img.shields.io/badge/docs-Read%20the%20Docs-blue.svg
:target: https://esapp.readthedocs.io/
:alt: Documentation

.. image:: https://img.shields.io/badge/coverage-92%25-brightgreen.svg
:alt: Coverage 92%

An open-source Python toolkit for power system automation, providing a high-performance "syntax-sugar" fork of Easy SimAuto (ESA). This library streamlines interaction with PowerWorld's Simulator Automation Server (SimAuto), transforming complex COM calls into intuitive, Pythonic operations.

Key Features
------------

- **Intuitive Indexing Syntax**: Access and modify grid components using a unique indexing system (e.g., ``wb[Bus, 'BusPUVolt']``) that feels like native Python.
- **Intuitive Indexing Syntax**: Access and modify grid components using a unique indexing system (e.g., ``wb[Bus, "BusPUVolt"]``) that feels like native Python.
- **Comprehensive SimAuto Wrapper**: Full coverage of PowerWorld's API through the ``SAW`` class, organized into modular mixins for power flow, contingencies, transients, and more.
- **High-Level Adapter Interface**: A collection of simplified "one-liner" functions for common tasks like GIC calculation, fault analysis, and voltage violation detection.
- **Native Pandas Integration**: Every data retrieval operation returns a Pandas DataFrame or Series, enabling immediate analysis, filtering, and visualization.
Expand All @@ -23,7 +34,7 @@ For local development and the latest features, install the package in editable m

.. code-block:: bash

python -m pip install gridwb -e .
python -m pip install esapp -e .


Documentation
Expand All @@ -38,23 +49,23 @@ Here is a quick example of how ESA++ simplifies data access and power flow analy

.. code-block:: python

from gridwb import GridWorkBench
from gridwb.grid.components import *
from esapp import GridWorkBench
from esapp.grid import *

# Open Case
wb = GridWorkBench("my_grid_model.pwb")
wb = GridWorkBench("path/to/case.pwb")

# 2. Retrieve data
bus_data = wb[Bus, ['BusName', 'BusPUVolt']]
# Retrieve data
bus_data = wb[Bus, ["BusName", "BusPUVolt"]]

# 3. Solve power flow and get complex voltages
# Solve power flow
V = wb.pflow()

# 4. Perform high-level operations
violations = wb.func.find_violations(v_min=0.95)
# Do some action, write to PW
violations = wb.find_violations(v_min=0.95)
wb[Gen, "GenMW"] = 100.0

# 5. Modify data and save
wb[Gen, 'GenMW'] = 100.0
# Save case
wb.save()

Why ESA++?
Expand All @@ -70,11 +81,10 @@ Traditional automation of PowerWorld Simulator often involves verbose COM calls
More Examples
-------------

The `examples/ <https://github.com/lukelowry/ESApp/tree/main/examples>`_ directory contains a gallery of demonstrations, including:
The `examples/ <https://github.com/lukelowry/ESApp/tree/main/docs/examples>`_ directory contains a gallery of demonstrations, including:

- **Basic Data I/O**: Efficiently reading and writing large sets of grid parameters.
- **Contingency Analysis**: Automating N-1 studies and processing violation matrices.
- **Matrix Extraction**: Retrieving Y-Bus and Jacobian matrices for external mathematical modeling.
- **Object Field Access**: Reduce the time you spend searching for field names with ESA++ IDE typehints for objects and fields.
- **Matrix Extraction**: Retrieving Y-Bus, Jacobian, and GIC conductance matrices for external mathematical modeling.

Testing
-------
Expand Down Expand Up @@ -102,6 +112,8 @@ If you use this toolkit in your research or industrial projects, please cite the
Authors
-------

Luke Lowery developed this module during his PhD studies at Texas A&M University. You can learn more on his `research page <https://lukelowry.github.io/>`_ or view his publications on `Google Scholar <https://scholar.google.com/citations?user=CTynuRMAAAAJ&hl=en>`_.

ESA++ is maintained by **Luke Lowery** and **Adam Birchfield** at Texas A&M University. You can explore more of our research at the `Birchfield Research Group <https://birchfield.engr.tamu.edu/>`_.

License
Expand Down
Loading