Skip to main content

Test Suite Test Coverage PyPI Downloads CII Best Practices

OpenLEADR

OpenLEADR is a Python 3 module that provides a convenient interface to OpenADR systems. It contains an OpenADR Client that you can use to talk to other OpenADR systems, and it contains an OpenADR Server (VTN) with convenient integration possibilities.

It currently implements the OpenADR 2.0b specification.

Documentation

You can find documentation here: https://openleadr.org/docs.

Getting started

We have cool 1-minute starting examples for both VEN and VTN. Please check them out and take a look at the rest of the documentation.

Feature Completeness

At the moment, you can do basic Registration, Telemetry Reports and Events over a secured connection using signed messages. This covers many use-cases that allow for demand response to be coordinated. Below is a more extensive list of OpenADR features and their current implementation status in OpenLEADR:

The following is an overview of OpenADR 2.0b features that are implemented in OpenADR:

Feature Implemented Remarks
Transport
HTTP Pull Method ✔️ Most-used method, allows VEN to be behind NAT
HTTP Push Method ❌
XMPP Transport ❌
Message Signing ✔️ Official OpenADR Alliance Root Cert not included
Registration
Registration procedure ✔️
Reporting
Telemetry Reports ✔️
Status Reports ❌ Work is in progress, see #108
History Reports ❌
Events
Events ✔️
EiOpt ❌

Contributing

If you'd like to help make OpenLEADR better, you can do so in the following ways:

File bug report or feature request

We keep track of all bugs and feature requests on Github Issues. Please search the already close issues to see if your question was asked before.

You're also very welcome to leave comments on existing issues with your ideas on how to improve OpenLEADR.

File a pull request

We'd love for you to contribute code to the project. We'll take a look at all pull requests, no matter their state. Please note though, that we will only accept pull requests if they meet at least the following criteria:

  • Your code style is flake8 compliant (with a maximum line length of 127 characters)
  • You provide tests for your new code and your code, and you amend any previous tests that fail if they are impacted by your code change
  • Your pull request refers to an Issue on our issue tracker, so that we and other people can see what problem is being solved.
  • You sign off your commits (git commit -s), to indicate that your contribution complies with our license and does not violate anybody else's copyright.

That said, please don't let the above requirements discourage you from filing a pull requests. If you don't meet all of the above requirements, we'll help you fix the remaining things to get it into shape.

Security issues

Let it be clear that this code base is still in a development stage, and we don't yet recommend using it for mission critical applications or applications where security is paramount.

That said, we do try to make OpenLEADR as secure as can be to work with. If you find a security vulnerability in OpenLEADR, please let us know at security AT openleadr DOT org. We will get back to you within 72 hours to follow up. We are committed to the following steps:

  • Security vulnerabilities with a known fix will be addressed as soon as possible. This means that work on other things will be put on hold until the security issue is fixed.
  • If a fix is not readily available, we will publish a warning that describes the vulnerable situation and, if possible, any mitigating steps that users of OpenLEADR can take.
  • After any security issue is fixed, we will publish information on it in the Changelog.

Developing

We recommend the following development setup for working with OpenLEADR (this is on Linux / macOS):

Install uv an extremely fast Python package and project manager, written in Rust:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then create virtual environment and install dependencies:

git clone https://github.com/openleadr/openleadr-python
cd openleadr-python
uv sync --group dev

To run the test suite, you can use the following command:

uv run pytest -v test/

To lint the code with flake8:

uv run flake8 openleadr/ --count --select=E9,F63,F7,F82 --show-source --statistics

We also run zizmor in CI to statically audit our GitHub Actions workflows for security issues (e.g. injection risks, overly broad permissions, unpinned actions). You can run it locally without installing it, using uvx:

uvx zizmor .

Some findings can be fixed automatically:

# Apply only safe fixes
uvx zizmor --fix .

# Apply all fixes, including unsafe ones (review the diff afterwards)
uvx zizmor --fix=all .

Contributing Documentation

Building the documentation

Static documentation can be found in the docs directory. Edit or create new .rst files to add new content using the Restructured Text format. To see the results of your changes, the documentation can be built locally through the command line using the following instructions:

# Ensure that you follow the development setup in the Developing section above before running the following commands
# After running this these commands, you should see a new directory `docs/_build`, which contains the HTML documentation. 
# For more details, see https://www.sphinx-doc.org/en/master/tutorial/first-steps.html  
cd docs
make html

Then, open your browser to the created local files:

file:///home/<USER>/openleadr-python/docs/_build/html/index.html

Release files for openleadr 0.5.36

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

Source distribution (sdist)

Source distribution for openleadr 0.5.36
File Size Uploaded
openleadr-0.5.36.tar.gz 411.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openleadr 0.5.36
File Interpreter ABI Platform
openleadr-0.5.36-py3-none-any.whl Python 3 none any Details

Total release size: 557.2 kB

Release files / openleadr-0.5.36.tar.gz

Download URL openleadr-0.5.36.tar.gz
Size 411.4 kB
Tags Source
SHA-256 checksum
How to use checksums
56360e969f8328d5f6e5c8e935f9cca24442a4015e30e49dd0dc5b95bf3e6cd0
BLAKE2b-256 checksum
How to use checksums
b0551d877cca5383ef84db5338a4efad6dc51208bec8f3e79cda8ef85d46649c
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 Sep 3, 2026.

Transparency log

Release files / openleadr-0.5.36-py3-none-any.whl

Download URL openleadr-0.5.36-py3-none-any.whl
Size 145.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
75613e06297e25f530ae200472b107cb4cd110497088acbb51d8d825e5657dab
BLAKE2b-256 checksum
How to use checksums
69fa635e57f5fbc70b48e125154013016625288554a2f2ef23bc705164507c1e
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 Sep 3, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.36 This release

2 release files

0.5.35

1 release file

0.5.34

1 release file

0.5.33

1 release file

0.5.32

1 release file

0.5.31

1 release file

0.5.28

2 release files

0.5.27

2 release files

0.5.24

2 release files

0.5.23

2 release files

0.5.22

2 release files

0.5.21

2 release files

0.5.19

2 release files

0.5.18

2 release files

0.5.16

2 release files

0.5.15

2 release files

0.5.14

2 release files

0.5.13

2 release files

0.5.12

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.0.1

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