Skip to main content

Shared eOn L0 Cap'n Proto SSoT, L1 job-config pydantic models, and L2 API specs for eon-akmc + pyeonclient

Project description

eon-schema

Shared schema package for both eon-akmc and pyeonclient. One home for:

Layer Module Role
L0 eon_schema.ssot Cap’n Proto field graph (vendored from monorepo schema/)
L1 eon_schema.config Full job-config pydantic models (MainConfig, Metatomic, Config, …)
L2 eon_schema.api / fields In-process specs (DimerSpec, NebSpec, enums)

Consumers:

  • eon-akmc — depends on eon-schema; eon.schema re-exports L1 for Sphinx / legacy imports.
  • pyeonclientpyeonclient[models] pulls eon-schema; pyeonclient.models re-exports L2.

Do not re-author job models under eon/ or duplicate L2 under pyeonclient/.

Fat tree vs this package

Fat monorepo tarball This PyPI package
Purpose conda-forge eon, full C++/server builds Shared Python schema for both clients
Cap’n Proto Full monorepo including schema/ Vendored under src/eon_schema/ssot/
L1 models Also present via eon.schema re-export Authoritative under eon_schema.config
Feedstock Uses fat tarball only Not required for 0.2.x

L0 authoring is monorepo schema/eon_params.capnp. After edits:

python tools/params_ssot/codegen.py
./packages/eon-schema/scripts/sync_ssot_into_package.sh

L1 authoring is packages/eon-schema/src/eon_schema/config/models.py. Keep field parity with L0 for covered sections (tests/test_params_ssot.py).

See PUBLISHING.md for fat vs split release trains.

Install

pip install eon-schema            # L0 + L1 + L2 (pydantic is a hard dep)
# monorepo:
pip install -e packages/eon-schema

Quick use

# L0
from eon_schema.ssot import capnp_path, load_catalog

# L1 (same objects as eon.schema.*)
from eon_schema.config import MainConfig, Metatomic, Config

# L2 (same objects as pyeonclient.models.*)
from eon_schema.api import DimerSpec
from eon_schema.fields import MinModeMethod, Accelerant

print(capnp_path())
print(MainConfig().job)
print(DimerSpec(method=MinModeMethod.improved, accelerant=Accelerant.gp).core_kwargs())

eon-akmc / Sphinx still use:

from eon.schema import MainConfig, Metatomic  # re-export

pyeonclient still uses:

from pyeonclient.models import DimerSpec, NebSpec  # re-export

Layout

src/eon_schema/
  ssot/          # L0 vendored Cap'n Proto + catalog
  config/        # L1 job-config models (models.py)
  fields/        # enums
  api/           # L2 DimerSpec, NebSpec
  _deps.py

INI helpers (config write without eon-akmc)

from eon_schema.config import (
    MainConfig,
    PotentialConfig,
    DimerConfig,
    write_models_ini,
    write_ini,
    hydrate_ini,
    unknown_ini_keys,
    defaults_from_catalog,
)

# L1 models → config.ini (Dimer L1 prefixes mapped to INI keys)
write_models_ini(
    "config.ini",
    MainConfig(job="saddle_search"),
    PotentialConfig(potential="lj"),
    DimerConfig(dimer_improved=True),
    extra={"Debug": {"write_movies": True}},
    validate=True,
)

# Or raw sections (rgpycrumbs-style) with L0 hydrate + key check
user = {"Main": {"job": "minimization", "temperature": 400}}
cfg = hydrate_ini(user, base_sections=["Main", "Optimizer"])
assert not unknown_ini_keys(cfg)
write_ini("config.ini", cfg)

print(defaults_from_catalog("Main")["job"])

Downstream: rgpycrumbs should depend on eon-schema for write_eon_config / seed_dimers / MLflow log_params instead of full eon-akmc.

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

eon_schema-0.2.2.tar.gz (40.1 kB view details)

Uploaded Source

Built Distribution

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

eon_schema-0.2.2-py3-none-any.whl (42.1 kB view details)

Uploaded Python 3

File details

Details for the file eon_schema-0.2.2.tar.gz.

File metadata

  • Download URL: eon_schema-0.2.2.tar.gz
  • Upload date:
  • Size: 40.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eon_schema-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5065f03b0504d7b5738c5f28abd18f1defad76858dd04ef35cbc231b59056248
MD5 e8cf3b540be5fac7a017e7ec6ca3dee4
BLAKE2b-256 c69ad9bdb36ef1519e507558082188fda4b30ba59e691f1c5c3c63989e09b5d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for eon_schema-0.2.2.tar.gz:

Publisher: eon-schema-publish.yml on TheochemUI/eOn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file eon_schema-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: eon_schema-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 42.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for eon_schema-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 5fa42f895e81de7011f3354df90269547b9d5e528744d95b7a6e462f1664abfe
MD5 9d19818c1314c52ec7c99302e93f1476
BLAKE2b-256 ba0ea23db94a1f7df1f23f06fe61b2dbbf74e1ff28fe172439f3ec833374a130

See more details on using hashes here.

Provenance

The following attestation bundles were made for eon_schema-0.2.2-py3-none-any.whl:

Publisher: eon-schema-publish.yml on TheochemUI/eOn

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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