Metadata-Version: 2.4
Name: skypro
Version: 2.0.0
Summary: Skyprospector by Cepro
License: AGPL-3.0
License-File: LICENSE
Author: damonrand
Author-email: damon@cepro.energy
Requires-Python: >=3.10,<4.0
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: arrow (>=1.3.0,<2.0.0)
Requires-Dist: marshmallow (>=3.21.3,<4.0.0)
Requires-Dist: marshmallow-dataclass (>=8.7.0,<9.0.0)
Requires-Dist: pandas (>=2.2.2,<3.0.0)
Requires-Dist: pendulum (>=3.0.0,<4.0.0)
Requires-Dist: plotly (>=5.21.0,<6.0.0)
Requires-Dist: psycopg2-binary (>=2.9.10,<3.0.0)
Requires-Dist: pulp (>=2.9.0,<3.0.0)
Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
Requires-Dist: requests (>=2.32.3,<3.0.0)
Requires-Dist: ruff (>=0.11.2,<0.12.0)
Requires-Dist: sqlalchemy (>=2.0.37,<3.0.0)
Requires-Dist: streamlit (>=1.45.1,<2.0.0)
Requires-Dist: tabulate (>=0.9.0,<0.10.0)
Description-Content-Type: text/markdown

# Skypro

Skypro is a collection of simulation and reporting tools for microgrids.

## Simulation CLI tool
The Skypro simulator can project microgrid behaviours, costs and revenues.
This tool is run on the command line using `skypro simulate`.
See `src/skypro/commands/simulator/README.md` for more information.

## Reporting CLI tool
The Skypro reporting tool collates data to documents and analyse real-world performance of microgrids.
This tool is run on the command line using `skypro report`.
See `src/skypro/commands/report/README.md` for more information.

## Reporting web app - DEPRECATED
The Skypro reporting web app makes reporting results accessible to non-cli users. It is now deprecated.
This is run using Streamlit.
See `src/skypro/reporting_webapp/README.md` for more information.

## Rates and energy flows
Information about the costs and revenues associated with using power are fundamental to the codebase and a high-level understanding of how they are modelled is important for interpreting results.
See `src/skypro/common/rates/README.md` for a background on how rates and energy flows are modelled in the codebase.

## Environment configuration
Skypro uses a JSON 'environment file' to contain general directory configurations as well as secrets.
By default Skypro looks for the environment file in `~/.simt/env.json`, but the location can be customised with the `--env` command line option.

The structure of this file should be as follows:
```json
{
    "vars": {
        "DIR_SHORTCUT_1": "/path/to/some/working/directory",
        "DIR_SHORTCUT_2": "/path/to/another/working/directory"
    },
    "flows": {
      "dbUrl": "url-with-credentials-for-the-flows-database"
    },
    "flux": {
      "dbUrl": "url-with-credentials-for-the-flux-database",
      "schema": "flux"
    },
    "rates": {
      "dbUrl": "url-with-credentials-for-the-rates-database"
    }
}
```
The `vars` section allows you to define arbitrary variables that are resolved in configuration file paths.
For example, if you're configuring a simulation run and all the load profiles are in a certain directory, then you could configure a variable like `"PROFILE_DIR": "~/myprofiles"`, and then
anywhere you use `$PROFILE_DIR` in the configuration it will be resolved appropriately.

The `flows` section configures how to access the Flows database - this is only used if Skypro is configured to pull data from the Flows database (e.g., plot meter readings).

The `flux` section (added in v2.0.0) configures how to access the Flux database - this is used for meter readings, BESS readings, and market data. The optional `schema` field defaults to "flux". For legacy databases where all data is in the `flows` schema, set `"schema": "flows"`.

The `rates` section configures how to access the Rates database - this is only used if Skypro is configured to pull data from a Rates database.


## Installation

To install from test.pypi:
- `pip3 install --upgrade --extra-index-url https://test.pypi.org/simple/ skypro`


## Development

### Running tests
To run the tests: `PYTHONPATH=src python -m unittest discover  --start-directory src`

Some of the tests akin to integration tests which run a whole simulation and check the results.
To run an individual integration test directly: `simulate --env src/tests/integration/fixtures/env.json --config src/tests/integration/fixtures/config.yaml -y --sim integrationTestPerfectHindsightLP`

### Publishing
To publish the repository to test.pypi:
1. Make your code changes
2. Update the semver version number in `pyproject.toml`
3. Commit to git and push
4. Run `poetry build` and observe the new version number
5. Run `poetry publish -r test-pypi` to publish

If this is your first time publishing to test.pypi then you will also need to do the following steps before publishing:
1. `poetry config repositories.test-pypi https://test.pypi.org/legacy/`
2. `poetry config pypi-token.test-pypi  pypi-YYYYYYYY` using an API token from your account on the test.pypi website.

