Skip to main content

popo

Documentation · Quickstart · Tutorials · PyPI

popo

popo simulates a feeder forward under rooftop solar and EV uptake, and estimates its state from the few measurements that exist

Low-voltage network simulation and state estimation for distributed energy resource studies.

popo is Swahili for bat. It is a companion to twiga, Swahili for giraffe: twiga sees far, which is forecasting ahead in time; popo sees in the dark, which is inferring the state of a network that is not measured.

Low-voltage distribution is largely unobservable. There are measurements at the secondary substation and very little downstream, yet the decisions that matter, how much solar or how many electric vehicles a feeder can take, depend on what is happening at every customer terminal. This library is about reconstructing that from what little is metered, and about simulating what a network would do under a given level of DER uptake.

Install

The solvers are optional, because reading a network definition or checking a voltage limit against a standard needs neither:

uv add popo-flow                  # core: networks, standards, results
uv add popo-flow[opendss]         # + time-series power flow
uv add popo-flow[estimation]      # + weighted-least-squares state estimation
uv add popo-flow[all]

The distribution is named popo-flow because popo was already taken on PyPI; the package itself is still imported as import popo.

What is in it

module purpose
popo.network load an OpenDSS circuit as Python records, inspect topology, transformers and loads
popo.powerflow time-series solves with convergence reported, result tables, penetration sweeps
popo.scenarios household, PV, EV and storage scenarios, Volt-VAr and Volt-Watt control
popo.standards EN 50160, ANSI C84.1, IEEE 1547 and EREC G99; verdicts, violations and events
popo.estimation weighted-least-squares state estimation from a sparse measurement set
popo.profiles household, PV and EV profile pools
popo.plotting network diagrams, figure style and tables

Learn it

The documentation has a quickstart, a user guide for each module and three tutorials that run end to end on real feeders:

  • OpenDSS LV modelling: build an LV circuit, read it back as records and tables, and check it against EN 50160.
  • Time series and DER: hosting capacity on a real 188-customer UK feeder, every customer's voltage alongside the substation's, and Volt-VAr, Volt-Watt and storage compared.
  • LV state estimation: how much has to be measured to know every customer's voltage.

Development

uv sync --all-extras --group docs   # environment with both solvers and the docs tooling
make test                           # suite with the coverage gate, solvers deselected
make test-solver                    # only the tests that need OpenDSS or pandapower
make lint                           # ruff check
make fmt                            # ruff format
make typecheck                      # ty
make docs                           # build the docs, warnings as errors
make docs-serve                     # serve the docs locally, rebuilding on change

Commits follow conventional commits, checked by commitizen through a pre-commit hook. Install the hooks once with uv run pre-commit install --install-hooks -t pre-commit -t commit-msg.

Status

Alpha: the API may change before 1.0. Changes are listed in the changelog.

Citation

If you use popo in your work, please cite it:

Faustine, A. (2026). popo: low-voltage network simulation and state estimation (Version 0.2.1) [Computer software]. https://sambaiga.github.io/popo-docs

@software{faustine2026popo,
  author  = {Faustine, Anthony},
  title   = {popo: Low-Voltage Network Simulation and State Estimation},
  year    = {2026},
  version = {0.2.1},
  url     = {https://sambaiga.github.io/popo-docs},
  note    = {Python package \texttt{popo-flow}}
}

Licence

Apache-2.0.

Metadata

Release files for popo-flow 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for popo-flow 0.2.1
File Size Uploaded
popo_flow-0.2.1.tar.gz 950.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for popo-flow 0.2.1
File Interpreter ABI Platform
popo_flow-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.2 MB

Release files / popo_flow-0.2.1.tar.gz

Download URL popo_flow-0.2.1.tar.gz
Size 950.1 kB
Tags Source
SHA-256 checksum
How to use checksums
01ab90ddef4660d16d522df0edf0ec53cec9a1bc25e5785d20868e35aeb94416
BLAKE2b-256 checksum
How to use checksums
2da82bf64fdfcf65624030ef4aefcffabfb473f29ece06c47b6367e74162f336
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / popo_flow-0.2.1-py3-none-any.whl

Download URL popo_flow-0.2.1-py3-none-any.whl
Size 274.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c570378fbbbb33756cfd4a37875ed8c5ca01c12c119bfdc778736bc465de31b
BLAKE2b-256 checksum
How to use checksums
5d66e60e03e2e689a34704516513e2bbbb7db8b5d9d31fea812636b775f9c4ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page