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.1.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.1.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.1.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.1.1
File Size Uploaded
popo_flow-0.1.1.tar.gz 1.0 MB Details

Built distribution (wheel)

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

Total release size: 1.3 MB

Release files / popo_flow-0.1.1.tar.gz

Download URL popo_flow-0.1.1.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
e62ef20abb02eefa1c3c65e90619421aacb09c4718a352e9d89269ef6c17787b
BLAKE2b-256 checksum
How to use checksums
b1c3bd0e0fa8ce7a4eb3edc8cce3b923f9de1158789e9026b38119a3b555d795
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 12, 2026.

Transparency log

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

Download URL popo_flow-0.1.1-py3-none-any.whl
Size 283.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b598443a15e131e2bbe921e8d607fb5985001653d835200d46ebd1cdec53efb3
BLAKE2b-256 checksum
How to use checksums
3de1b32b015954e13e8be962861b17becc3b686f2f41211af844f52b8985a17b
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 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

2 release files

0.2.0

2 release files

This release

0.1.1 This release

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