Skip to main content

An open-source modular framework for ingesting, standardising, storing, and computing energy-related data.

Project description

Cofy Cloud is an open-source modular framework for ingesting, standardising, storing, and computing energy-related data, designed to run anywhere from local deployments to cloud environments.

Right now this is very much a work in progress. With the development of a first proof of concept. This is not ready for production use and the api is likely to change significantly in the near future.

Setup

Install

pip install "cofy-api[all]"

Cofy is modular — install only what you need via extras. Example — install with only the tarrif and members modules:

pip install "cofy-api[tariff,members]"

Configure

Quick start

Create an app.py with a minimal Cofy API:

from cofy import CofyApi
from cofy.modules.tariff import TariffModule

app = CofyApi()
app.register_module(TariffModule(api_key="YOUR_ENTSOE_KEY", name="entsoe"))

Run it:

fastapi dev app.py

The API is now available at http://127.0.0.1:8000 with interactive docs at /docs.

Authentication

Protect the API with bearer-token authentication:

from fastapi import Depends

from cofy import CofyApi
from cofy.api import token_verifier

app = CofyApi(
    dependencies=[Depends(token_verifier({"my-secret-token": {"name": "Admin"}}))]
)

Clients authenticate via header (Authorization: Bearer my-secret-token) or query parameter (?token=my-secret-token).

Full example

The demo/ directory contains a complete working application that ties everything together.

Development

We use astral python tooling for our development environment. We use poethepoet to define some essential tasks. The demo run task is also available as vscode execution task, making it easy to run and debug the demo application from within vscode.

Install/update dependencies:

First install uv if you don't have it yet.

Then install/update dependencies:

uv sync

Install poethepoet and pre-commit

uv tool install poethepoet
uv tool install pre-commit

Activate pre-commit hooks that enforce code style on every commit:

pre-commit install

Run development demo application:

Our demo application uses some API keys for external services. You can provide these .env.local file in the root of the repository, following the structure of .env.example.

poe demo

Code style checks:

poe lint    # Check code style
poe format  # Format code
poe check   # Run type checks

Run tests:

poe test

Build & publish

We use a github action to create a new tag, github release and publish to pypi. Trigger the action manually from the actions tab, and provide the new version number as input.

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

cofy_api-0.3.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cofy_api-0.3.0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file cofy_api-0.3.0.tar.gz.

File metadata

  • Download URL: cofy_api-0.3.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cofy_api-0.3.0.tar.gz
Algorithm Hash digest
SHA256 0a0aa34e45798bd84f52d5c0b46ffe68a436950c4e6c972cd67faf45528a2b97
MD5 f4872591965952283e0dd5c6ae930824
BLAKE2b-256 06cbc2921108e8aebd7950511b2496f75e35c2e51fb174694b570780510f38c7

See more details on using hashes here.

File details

Details for the file cofy_api-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: cofy_api-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 21.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for cofy_api-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c08174ad55dc18fccc102a8e8852d1f995b5b199bd990010c9d9d4c058be397f
MD5 4eb4425e434729aa4ac70d40eebd2eaa
BLAKE2b-256 cc7631741a56cf73a4876932b156e617680a2a7737937acb4c1411e0a4c51c09

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page