Metadata-Version: 2.4
Name: envoy_schema
Version: 2.0.0
Summary: Envoy Schema - a collection of pydantic models compatible with the Envoy utility server
Author: Battery Storage and Grid Integration Program
License: The MIT License (MIT)
        
        Copyright © 2024 
        
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the “Software”), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in
        all copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
        THE SOFTWARE.
Project-URL: Homepage, https://github.com/bsgip/envoy-schema
Keywords: envoy,csip-aus,2030.5,csip,pydantic
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Testing
Classifier: Framework :: Pydantic
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic!=2.12.0,!=2.6.0,>=2.5.0
Requires-Dist: pydantic_xml[lxml]>=2.12.0
Provides-Extra: all
Requires-Dist: envoy_schema[dev,test]; extra == "all"
Provides-Extra: dev
Requires-Dist: bandit; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: types-python-dateutil; extra == "dev"
Requires-Dist: types-tzlocal; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Requires-Dist: assertical; extra == "test"
Dynamic: license-file

# envoy-schema - forked for Synergy storage extension

This is a forked project with a long lived branch which implements the CSIP-Aus storage extension (https://csipaus.org/ns/v1.3-beta/storage) proposed by Synergy

The original project, which focuses implementation on the current accepted CSIP-Aus standards, is developed by [BSGIP here](https://github.com/bsgip/envoy-schema)

## Assumed workflow

This repository's [main branch](https://github.com/synergy-au/envoy-schema/tree/main) is intended to always follow the original [BSGIP main](https://github.com/bsgip/envoy-schema) 
e.g. using GitHub's built in "Sync Fork" feature

Whenever a "sync" occurs, efforts should be made to merge these into the longlived [csipaus.org/ns/v1.3-beta/storage branch](https://github.com/synergy-au/envoy-schema/tree/csipaus.org/ns/v1.3-beta/storage)

All changes that can apply to both repositories/branches is preferred to be resolved by raising a pull request against the original [BSGIP main](https://github.com/bsgip/envoy-schema)
and then merging this into main. Of course this could be too slow for implementation purposes and should be reviewed on a case by case basis.

All remaining sections should reflect the original documentation as part of the [original repository](https://github.com/bsgip/envoy-schema). 
<br><br>


# envoy-schema
Public schema for the models/schema associated all envoy API endpoints.

This repository was built as a shared dependency for the envoy utility server and any external clients wishing to integrate. 

Envoy: https://github.com/bsgip/envoy


## Envoy Server Models

The models served under `envoy_schema.server` are derived from the following standards:

* [IEEE: Smart Energy Profile (2030.5-2018)](https://standards.ieee.org/ieee/2030.5/5897/)
* [Sunspec: Common Smart Inverter Profile](https://sunspec.org/2030-5-csip/)
* [Common Smart Inverter Profile (Australia)](https://csipaus.org/)


## Versioning

The `main` branch is the active development branch. Releases will be tagged off the associated release branch.

| CSIP-Aus Version | envoy-schema versions | release branches |
| ---------------- | -------------------- | --------------------- |
| `v1.1a` | `v0.*`, `v1.*` | `csipaus.org/ns/v1.2` |
| `v1.2` | `v0.*`, `v1.*` | `csipaus.org/ns/v1.2` |
| `v1.3` | `v2.*` | `csipaus.org/ns/v1.3` |



## Envoy Admin Models

The models served under `envoy_schema.admin` are typically only used for services directly integrating with the envoy utility server (via the admin server). This is for machine-machine services that are not typically exposed externally.

# Installation

Install directly from pypi

`pip install envoy_schema`


# Development

To install `envoy-schema` for development purposes, after cloning this repository:

```
pip install -e .[dev, test]
pytest
```

We use the following linting/formatting tools:
* [bandit](https://pypi.org/project/black/)
* [flake8](https://pypi.org/project/flake8/)
* [mypy](https://pypi.org/project/mypy/)

Contributions via a pull request are welcome but will be validated using the above tools.

Tests can be run with: `pytest` from the root directory.


