Skip to main content

Python implementation of the Energy System Description Language (ESDL) for modelling Energy systems

Project description

pyESDL

pyESDL is a library for using ESDL in python programs. ESDL stands for Energy System Description Language and is created to support developers creating, parsing, generating ESDL-files with the goal to create interoperable energy system transition tooling.

This package contains all the ESDL classes of the ESDL language and an EnergySystemHandler that helps the developer to read and write ESDL-files.

More information about ESDL can be found at:

  1. ESDL gitbook documentation with a general introduction, example applications and some code samples.
  2. ESDL Model Reference documentation that describes all the classes and definitions in detail using a clickable UML diagram.

Installing

Use the following command to install the pyESDL python module from the PyPi registry:

pip install pyESDL

Usage

Example 1 - Creating an ESDL-file and saving it to disk

from esdl.esdl_handler import EnergySystemHandler
from esdl import esdl
esh = EnergySystemHandler()
es = esh.create_empty_energy_system(name="ES1", es_description='Nice Energy System',
                                   inst_title='instance 1', area_title="Area 51")
print(es)
esh.save(filename="test.esdl")

Example 2 - Loading an ESDL file and adding a WindTurbine to an area

from esdl.esdl_handler import EnergySystemHandler
from esdl import esdl
from pprint import pprint

esh = EnergySystemHandler()
# load an ESDL file and use type hinting to help the IDE to do auto completion
es: esdl.EnergySystem = esh.load_file('test.esdl')
print(es)
# Create a WindTurbine
wind_turbine = esdl.WindTurbine(name='WindTurbine at coast', rotorDiameter=50.0, height=100.0,
                               type=esdl.WindTurbineTypeEnum.WIND_ON_COAST)

# print the wind turbines properties in ESDL as a dict
pprint(esh.attr_to_dict(wind_turbine))

# Get the area where this windturbine should be added
area51: esdl.Area = es.instance[0].area
# add the WindTurbine to the area
area51.asset.append(wind_turbine)
# save the file
esh.save()

# Give the WindTurbine a location on the map
location = esdl.Point(lat=52.6030475337285, lon=4.729614257812501)
wind_turbine.geometry = location

esh.save()
# Convert the Energy System to an XML string and print it
xml_string = esh.to_string()
print(xml_string)

Releasing

The release process is as follows:

  1. Do a git tag with the new version number
  2. Do python setup.py sdist bdist_wheel to create the tarball and wheel in the dist folder
  3. upload to PyPi: python3 -m twine upload --repository testpypi dist/*

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

pyESDL-21.4.1.tar.gz (60.3 kB view details)

Uploaded Source

Built Distribution

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

pyESDL-21.4.1-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file pyESDL-21.4.1.tar.gz.

File metadata

  • Download URL: pyESDL-21.4.1.tar.gz
  • Upload date:
  • Size: 60.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.6

File hashes

Hashes for pyESDL-21.4.1.tar.gz
Algorithm Hash digest
SHA256 af77c767e598067df0644c58a0d0e943c7a9e61a5ad01c03a0b249fb6d750879
MD5 a16044dc947d5595f6407cb5ed0e9a3d
BLAKE2b-256 d2d2e11c1b63c1d806235ec0b49484f3d6c1d8b2de5b785957e7e8f7620e3cdc

See more details on using hashes here.

File details

Details for the file pyESDL-21.4.1-py3-none-any.whl.

File metadata

  • Download URL: pyESDL-21.4.1-py3-none-any.whl
  • Upload date:
  • Size: 44.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.6

File hashes

Hashes for pyESDL-21.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bc170ac8e15eaa8fadc00ece3fcd26d94dbf83be718d58129ff7bdcb694c74e6
MD5 3d92f429af946ceabf7223a47334d73e
BLAKE2b-256 1f452cf1810e85fa9fcbd1713be81469b55a0bc3214b8089b029eba36c8b68f0

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