#format #parser #epd #life #cycle #python #exchange

bin+lib epdx

EPDx is a library for parsing EPD files into a common exchange format

20 releases (10 stable)

1.2.2 Apr 1, 2024
1.2.0 Mar 24, 2024
1.1.5 Feb 22, 2024
1.0.0 Jan 24, 2024
0.2.6 May 23, 2023

#360 in Parser implementations

Download history 8/week @ 2023-12-29 6/week @ 2024-01-19 2/week @ 2024-02-02 568/week @ 2024-02-16 158/week @ 2024-02-23 22/week @ 2024-03-01 27/week @ 2024-03-08 14/week @ 2024-03-15 161/week @ 2024-03-22 213/week @ 2024-03-29 58/week @ 2024-04-05 4/week @ 2024-04-12

436 downloads per month
Used in lcax

Custom license

19MB
1.5K SLoC

Rust 1K SLoC // 0.0% comments JavaScript 265 SLoC // 0.0% comments TypeScript 155 SLoC // 0.1% comments Python 137 SLoC // 0.1% comments TSX 15 SLoC

Contains (ELF lib, 18MB) packages/python/src/epdx/epdx.abi3.so

EPDx

EPDx is a library for parsing EPD files into a common exchange format.

The library is written in Rust, to allow for cross-language package distribution. Currently, we support Javascript/Typescript, Python and Rust.

EPDx is part of a larger project of making life cycle assessments more accessible and transparent to building professionals.

Read more about our overall goal

ILCD+EPD

The ILCD+EPD format is a digital format for EPDs. Provided in either XML or JSON.

Initially EPDs were provided as PDFs. That is not very convenient for automation processes and requires large amounts of manual work to process.

The ILCD (International Life Cycle Data System) is a data format developed by the European Commission to give LCA practitioners a common digital format for life cycle assessments. In order to integrate EPD specific information (e.g. scenarios, modules, type of data), extensions were added to the ILCD format. The resulting format got named ILCD+EPD format.

The ECO Platform and Ökobau uses the format to store and expose EPDs through the soda4LCA API. The API makes it possible for everyone to search and download tons of EPDs to be used free of charge.

The ILCD+EPD format is a node based format. It means that each EPD consists of several layers of nodes that contain different information. The first node contains a summary of the EPD, with references to the nodes. By drilling down the tree of nodes, you have access to more and more specific information, such as EPD manufacturer, functional unit(s), etc.

Read more about ILCD at the European Platform on Life Cycle Assessment

Documentation

EPDx can have available packages for Javascript, Python and Rust.

To get started head over to our documentation.

Install NPM Package

npm install epdx

Install Python Package

pip install epdx

Install Rust Crate

cargo add epdx

Contribute

Install Rust

Head over to Rust's installation page

Run Tests

cargo test --package epdx --target x86_64-unknown-linux-gnu

Run Python Tests

maturin develop --extras tests --target x86_64-unknown-linux-gnu
source .venv/bin/activate .
cd packages/python
pytest tests/

Build Documentation

maturin develop --extras doc,codegen --target x86_64-unknown-linux-gnu
mkdocs develop

Build JS Package

wasm-pack build --features jsbindings
mv pkg/epdx* packages/javascript/src

Dependencies

~1.9–9MB
~72K SLoC