Metadata-Version: 2.4
Name: zen_creator
Version: 1.3.0
Summary: ZEN-creator allows for the creation and management of datasets for ZEN-garden.
Author: Jacob Mannhardt
Author-email: Christoph Funke <zen-garden@ethz.ch>
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: pydantic
Requires-Dist: geopandas
Requires-Dist: entsoe-py
Requires-Dist: pyyaml
Requires-Dist: tqdm
Requires-Dist: pyarrow
Requires-Dist: openpyxl
Requires-Dist: eurostat
Requires-Dist: scipy
Requires-Dist: pytest ; extra == "dev"
Requires-Dist: coverage ; extra == "dev"
Requires-Dist: pytest-xdist ; extra == "dev"
Requires-Dist: pytest-cov ; extra == "dev"
Requires-Dist: black==25.12.0 ; extra == "dev"
Requires-Dist: ruff==0.14.13 ; extra == "dev"
Requires-Dist: mypy==1.19.1 ; extra == "dev"
Requires-Dist: types-PyYAML ; extra == "dev"
Requires-Dist: pandas-stubs ; extra == "dev"
Requires-Dist: types-geopandas ; extra == "dev"
Requires-Dist: types-docutils ; extra == "dev"
Requires-Dist: scipy-stubs ; extra == "dev"
Requires-Dist: sphinx==7.3.7 ; extra == "docs"
Requires-Dist: myst-parser==3.0.1 ; extra == "docs"
Requires-Dist: sphinx-book-theme==1.1.3 ; extra == "docs"
Requires-Dist: pydata-sphinx-theme==0.15.4 ; extra == "docs"
Requires-Dist: sphinx-reredirects==0.1.4 ; extra == "docs"
Requires-Dist: nbsphinx==0.9.4 ; extra == "docs"
Requires-Dist: nbsphinx-link==1.3.0 ; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid ; extra == "docs"
Requires-Dist: furo ; extra == "docs"
Provides-Extra: dev
Provides-Extra: docs

# ZEN-creator

Lightweight utilities for creating and managing ZEN energy-system models and
associated datasets. Full developer and user documentation is available online.

## Quick start

### Installation (recommended)

- Create the conda environment included with the repository:

```bash
conda env create -f zen_creator_env.yml
conda activate zen-creator-env
```

- Or install in editable mode with pip:

```bash
python -m pip install -e .
```

### Basic usage

Programmatic usage is the recommended way to build and manipulate ZEN
models. The central entry point is the `Model` class which can be constructed
in several ways: directly, from a configuration file, or by loading an
existing ZEN-garden input folder.

```python
from pathlib import Path
from zen_creator.model import Model

# 1) Create a model from a configuration file
model = Model.from_config(Path("config.yaml"))
model.build()
model.validate()
model.write()

# 2) Load an existing ZEN-garden input folder and update
existing = Path("existing_model")
model2 = Model.from_existing(existing)
model2.name = "updated_model"
model2.build()
model2.write()

# 3) Create an empty model and add sectors/elements programmatically
m = Model()
m.add_sector_by_name("electricity")
m.add_element_by_name("electricity", generic="carrier")
m.build()
```


### Useful properties

- `model.carriers`, `model.technologies`: dictionaries of elements
- `model.output_path`: path where the model will be written

## Documentation

The full documentation (API reference, developer guide and examples) is hosted
online: [ZEN-creator documentation](https://zen-creator.readthedocs.io/en/latest/)

## Contributing

project [Contribution Guide](https://zen-creator.readthedocs.io/en/latest/files/developer_guide/contributing.html).

