Unofficial Python library for communicating with the Portland General (Electric) API
Project description
portlandgeneral-api
An unofficial Python library for requesting data from the Portland General Electric (PGE) API.
Portland General (PGE): https://portlandgeneral.com/
API: https://api.portlandgeneral.com/
PGE GraphQL Endpoint: https://api.portlandgeneral.com/pge-graphql
Installation
The package is availble via PyPi and can be installed with the following command:
pip3 install portlandgeneral-api
To install it from the repo, clone the repo and cd into the directory:
git clone https://github.com/piekstra/portlandgeneral-api.git
cd portlandgeneral-api
You can install this library with pip:
pip3 install .
Examples
There are two examples available, one for the PortlandGeneralApi and one for the OPowerApi.
Testing
This project leverages wiremock to test the code to some extent. Note this will not protect the project from changes that Portland General makes to their API, but instead verifies that the existing code functions consistently as written.
Local Testing
Note that the tests setup leverages the local_env_vars.py file. The values for those environment variables need to be set based on the following:
PORTLANDGENERAL_USERNAME:example@email.com- This must have parity with theemailin thebodyspecified intests/wiremock/mappings/jwt_request.jsonPORTLANDGENERAL_PASSWORD:portlandgeneral_password- This must have parity with thepasswordin thebodyspecified intests/wiremock/mappings/jwt_request.jsonIDP_HOST_OVERRIDE:http://127.0.0.1:9090- This URL is simplyhttp://127.0.0.1but the url port must have parity with thedocker-compose.yamlwiremock service's exposed httpport.API_HOST_OVERRIDE:http://127.0.0.1:9090- This URL is simplyhttp://127.0.0.1but the url port must have parity with thedocker-compose.yamlwiremock service's exposed httpport.
To run tests, you will first need to start the wiremock service by running:
docker-compose up -d
Then, you can run the actual tests with the following command:
pytest --verbose
GitHub Testing
This project leverages GitHub Actions and has a workflow that will run these tests. The environment configuration for the tests must have parity with the local_env_vars.py file from the local testing.
Releases
Releases should follow a Semantic Versioning scheme.
When changes have been made that warrant a new release that should be published, modify the __version__ in setup.py
After the change is merged to the main branch, go to releases and Draft a new release. The Tag version should follow the pattern v1.0.0 and should Target the main branch.
The Release title should not include the v from the tag and should have a reasonably detailed description of the new release's changes.
Once the release has been published, the .github/workflows/python-publish.yml GitHub Actions Workflow should trigger and automatically upload the new version to PyPi using GitHub secrets credentials.
Not-so-secret Keys
Certain values found in constants.py are copied from the Portland General's Website where they conveniently left their source maps. Those values are in fact not tied to a personal account with Portland General, but are instead specific to their deployments.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file portlandgeneral_api-1.2.0.tar.gz.
File metadata
- Download URL: portlandgeneral_api-1.2.0.tar.gz
- Upload date:
- Size: 35.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
58e84a3ff4bb9e47e0c60108cd096ae220ba8579f22e462580703c023b2ab8ce
|
|
| MD5 |
e5555763b261d0bc5e839006e87cff2b
|
|
| BLAKE2b-256 |
a63b36a42126e63fe4ffc3350b91dddbccec5ccd6d44282f339d5fba4b30c434
|
Provenance
The following attestation bundles were made for portlandgeneral_api-1.2.0.tar.gz:
Publisher:
python-publish.yml on piekstra/portlandgeneral-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
portlandgeneral_api-1.2.0.tar.gz -
Subject digest:
58e84a3ff4bb9e47e0c60108cd096ae220ba8579f22e462580703c023b2ab8ce - Sigstore transparency entry: 161756836
- Sigstore integration time:
-
Permalink:
piekstra/portlandgeneral-api@1aad18cdf66d5b89f72e3b536980c1de0ace501b -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/piekstra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1aad18cdf66d5b89f72e3b536980c1de0ace501b -
Trigger Event:
release
-
Statement type:
File details
Details for the file portlandgeneral_api-1.2.0-py3-none-any.whl.
File metadata
- Download URL: portlandgeneral_api-1.2.0-py3-none-any.whl
- Upload date:
- Size: 52.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba3221d58d7295d714e4d28318492d5def45471637e850d0d1235fceb132c8c0
|
|
| MD5 |
e8021e046c68edb631217de551145a12
|
|
| BLAKE2b-256 |
2668d9b1696397c14f17873682f30f96e79a1b754bcd9785407485ce9f55605e
|
Provenance
The following attestation bundles were made for portlandgeneral_api-1.2.0-py3-none-any.whl:
Publisher:
python-publish.yml on piekstra/portlandgeneral-api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
portlandgeneral_api-1.2.0-py3-none-any.whl -
Subject digest:
ba3221d58d7295d714e4d28318492d5def45471637e850d0d1235fceb132c8c0 - Sigstore transparency entry: 161756837
- Sigstore integration time:
-
Permalink:
piekstra/portlandgeneral-api@1aad18cdf66d5b89f72e3b536980c1de0ace501b -
Branch / Tag:
refs/tags/v1.2.0 - Owner: https://github.com/piekstra
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@1aad18cdf66d5b89f72e3b536980c1de0ace501b -
Trigger Event:
release
-
Statement type: