Metadata-Version: 2.5
Name: ecosemantic-engine
Version: 0.1.14
Summary: The EcoSemantic product-system vocabulary, its typed errors, and the exact LCA computation.
Project-URL: Homepage, https://github.com/cdgaete/ecosemantic
Project-URL: Repository, https://github.com/cdgaete/ecosemantic
Project-URL: Issues, https://github.com/cdgaete/ecosemantic/issues
Project-URL: Changelog, https://github.com/cdgaete/ecosemantic/blob/main/CHANGELOG.md
Author-email: Carlos Gaete-Morales <cdgaete@gmail.com>
License-Expression: PolyForm-Noncommercial-1.0.0
License-File: LICENSE
License-File: NOTICE
Keywords: LCA,Monte Carlo,environmental impact,life cycle assessment,sparse linear algebra
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering
Classifier: Typing :: Typed
Requires-Python: >=3.12
Requires-Dist: nimblend>=0.20261012.0
Requires-Dist: numpy>=2.5
Requires-Dist: pydantic<3,>=2.7
Requires-Dist: scipy>=1.16
Provides-Extra: mkl
Requires-Dist: pypardiso>=0.4.6; ((sys_platform == 'linux' and platform_machine == 'x86_64') or (sys_platform == 'win32' and platform_machine == 'AMD64')) and extra == 'mkl'
Description-Content-Type: text/markdown

# ecosemantic-engine

The lowest distribution of the EcoSemantic core: the product-system vocabulary, the typed errors every other distribution raises, and the exact life cycle assessment computation over a compiled background.

## Names it publishes

- `ecosemantic.model` — the vocabulary a product system is made of: its entities, the refs that name what it reaches, the units the core knows, the structural validation a system passes before a calculation runs, the result-relevant projection a version hash names, and the summary an answer keeps of itself.
- `ecosemantic.errors` — the typed errors, `EcoSemanticError` and the refusals under it: a layer that cannot answer raises rather than approximates.
- `ecosemantic.engine` — the computation: `background` compiles a database into labelled memory-mapped arrays, `solver` makes the forward and adjoint solves from one factorisation, `calculation` reads scores, contributions, intensities, supply, inventory and paths from one solve, `foreground` gives a product system its columns over that background, `paths` walks the supply chain under one process, `montecarlo` takes each draw from the seed and the draw's index, `loops` judges the technosphere loops a draw is checked on, and `refine` refines a sparse solve.

## What it depends on

pydantic, numpy and scipy, and nimblend for the memory-mapped arrays a background is compiled into. The `mkl` extra adds pypardiso, on Linux x86-64 and Windows x86-64, where MKL publishes wheels.

## Installing it

`pip install ecosemantic` installs this distribution with the other five and the `ecosemantic` command. `pip install ecosemantic-engine` installs it alone, for code that builds on the vocabulary and the engine without a server; `pip install "ecosemantic-engine[mkl]"` adds the solver.

## Licence

PolyForm Noncommercial License 1.0.0, copyright Carlos Gaete-Morales: `LICENSE` and `NOTICE` in this distribution. Any noncommercial purpose is permitted, by individuals and by charities, schools, public research and government bodies; commercial use needs a separate licence from him (cdgaete@gmail.com). EcoSemantic is his trademark, and the licence grants no right to use that name (`TRADEMARK.md` in the repository). The code is published from https://github.com/cdgaete/ecosemantic.
