v0.19.0 #188
dglmoore
announced in
Announcements
v0.19.0
#188
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Eleanor v0.19.0
Summary
v0.19.0 is a major architectural release. The plugin system has been overhauled to use Python entry points, making all executors, kernels, navigators, output sinks, and CLI commands fully discoverable without hard-coded imports. The CLI has been migrated from argparse to Click, gaining shell completion and a more consistent command hierarchy. The Postgres output layer has been rewritten on psycopg3 with per-batch transactions and savepoint-per-point error isolation. Eleanor itself is now an optional context manager that can reuse resources across multiple runs. Several long-standing internal concepts have been renamed or removed to clarify the API surface:
Sailor→Runner,Boatswain→PointBuilder,*Exception→*Error, and the suborder, Huffer, and order-transformer features have been dropped entirely.What's New
Eleanor Query Language (EQL)
A typed, consumer-agnostic query language for filtering and projecting simulation results. Any output sink (Postgres, CSV, memory, etc.) or navigator feedback logic can consume the same query.
Database Migration System
eleanor postgres migrateapplies versioned schema migrations automatically on each run.New Output Sinks
csv,memory, andnullsink types are now built in alongside the existingpostgressink.New CLI Commands & Flags
eleanor doctor— prints install and plugin diagnostics.eleanor gen config|order— emits starter config and order templates in YAML, TOML, or JSON.eleanor postgres— groupsbulkload drop/recreate,schema verify/scratch, andmigrateunder a single subcommand.--null-sink— discards all writes for a run without editing the config file.--max-nav-attempts— controls navigator retry count per point.--(no-)bulk-load— enables/disables Postgres bulk-load mode (drops secondary indexes during ingestion, recreates at finalize) for a single run.--order-id— resumes or extends an existing order row in the database.Other Additions
ELEANOR_EQ36_DATA1_DIRenvironment variable for setting the EQ3/6 data directory without a config file.--max-nav-attempts.LinearConstraintbuilt-in constraint type.Kernel.get_molar_massandKernel.get_atomic_weightinterface methods.Order.volumeproperty andwater_massorder field.CombinedReactantreplacesGlassReactants, with optional fraction-proportional rate support.min_log_activity,min_log_molality, andwrite_unformedsettings for the Postgres sink.errorcolumn in thevariable_spacetable for failed simulation points.EleanorWarningbase class for non-fatal warnings.eleanor run.ValueParameterinstances.@config_optionsdecorator is now parameterizable withrequired.Breaking Changes
Renames
Sailor→Runner;Boatswain→PointBuilder.*Exceptionclasses renamed to*Error(e.g.EleanorException→EleanorError,Eq36Exception→Eq36Error).API Changes
_ELEANOR_COMPLETE.project.entry-pointsinpyproject.toml.runcalls inside awithblock; single-shot usage still works without one.Eleanor.__init__arguments are now keyword-only.Eleanor.runnow accepts kernel arguments directly rather than via a wrapper.ConstraintConfig,NavigatorConfig, andOutputConfigmoved to dedicated modules.Configrefactored; per-subsystem config classes are loaded independently.Parameter.nameretired; names are managed at theVariableSpacelevel.load_executor,load_navigator, andload_output_sinkinterfaces redesigned for consistency.TypedDicts at interface boundaries replaced with typed**kwargs(Unpack).custom_propertiesJSONB column.log_activity/log_molalityvalues.data1_dirnow acceptsstr | Path.np.float64throughout the kernel layer.Removed Features
GlassReactantEmbedder— superseded byCombinedReactant.Parameter.typeproperty.parallelkwarg fromEleanor.run.idfields fromOrder,VariableSpace, andEquilibriumSpacedataclasses — moved into the output layer.Bug Fixes
Full Changelog: v0.18.2...v0.19.0
This discussion was created from the release v0.19.0.
All reactions