Version 1.1
25 Sep 2026We have just released version 1.1, which you can find here.
Contributions
There have been 367 commits since version 1.0.21, which can be inspected here.
Contributors of these commits are:
- Carolina Bolognani
- Lorenz Gärtner
- Matthew Kirk
- Simon Mutke
- Méril Reboud
- Mark E Smith
- Danny van Dyk
Changelog
Changed
- Breaking: Rename the
BFW2010,BMRvD2022andABR2022form factor parametrizations toSE(D. van Dyk) - Breaking: Rename the hadronic-matrix-element mass parameters shared by the
BSZ2015,SE,SSE,BGL1997, andHKVT2025form factor parametrizations from an@BSZ2015/@SEsuffix to@HME, since these are shared parametrization inputs rather than parametrization-specific fit outputs or physical masses; any saved parameter samples or analysis files that name amass::...@BSZ2015ormass::...@SEparameter explicitly must be updated to@HME(D. van Dyk) - Breaking: Default
eos.figure.ConstraintResidueItemto a newstyle: 'pull', drawing each residue as a bar in units of standard deviations; the previous error-bar drawing of the absolute deviation is still available viastyle: 'delta'(D. van Dyk) - Breaking: Removes and forbids the $ signs in the latex representation of parameters (M. Reboud)
- Breaking: Remove the
WET-SMEFTmodel, which imposed the relations among theb->sllWilson coefficients that follow from matching the SMEFT onto the WET; EOS uses the most general basis of dimension-six WET operators throughout, and imposing any such relation is left to the user (D. van Dyk) - Breaking: Stamp the EOS watermark on a single plot of an
eos.figure.GridFigureby default – the bottom-right one that is not anemptyplot – in lieu of every plot;watermark_plot: 'all'restores the previous behaviour, and an explicitly selected plot is now stamped even if it isempty(issue #1255) (D. van Dyk) - Accept the
watermarkandwatermark_plotkeys in aneos.figure.CornerFigure, whose watermark is placed by default in the plot in the bottom-left corner (issue #1255) (D. van Dyk) - Breaking: Record the varied parameters of an
eos.data.MixtureDensityas full parameter descriptions (name, min, max) under aparameterskey, as the othereos.dataobjects do, and bump its on-disk format to v2;eos.data.MixtureDensity.createnow requires them, itsvaried_parametersattribute yields those descriptions in lieu of bare qualified names, and thefind-clustersandmixture-producttasks record them. Format-v1 files remain readable (issue #848) (D. van Dyk) - Report problems in an analysis file as located
eos.diagnostic.Diagnosticobjects in lieu of raising on the first one: loading now enforces a structural validation phase, while a separate and side-effect-free semantic phase resolves the file’s own custom parameters, observables and constraints through a per-file validation context, checks expressions through the C++ expression parser without registering them, reports unused priors, likelihoods, masks, and custom entities, and reports parameters that a posterior fixes while one of its own priors varies them or that neither its likelihood nor any of its predictions uses (D. van Dyk) - Attach the source YAML line number to each
eos.diagnostic.Diagnosticreported for an analysis file, resolved by walking the file’s raw YAML parse tree rather than the already-parsed structure, since the latter has discarded that information by the time a diagnostic is created (L. Gärtner) - Restrict file-local names in analysis files to exclude
/and whitespace (D. van Dyk) - Replace the hand-rolled
eoshep-beforewheel-preparation recipe with a PEP 517 build driven bypyproject.tomlandsetup.py:setuptoolsnow compiles the_eosextension from source against a staged installation prefix, andauditwheel/delocateperform all library bundling andRPATH/install-name rewriting, in lieu of a hand-maintained shared-object regex, manualchrpathcalls, and an_eos_libspackage that duplicated the libraries the repair tools bundle anyway; thecp312Linux wheel shrinks from 88 MB to 21 MB as a result (D. van Dyk) - Ship all nine command-line scripts in the wheel, up from the six that were previously listed by hand (D. van Dyk)
- Determine
eos.is_wheelat runtime from the presence of the_eos_datapackage, in lieu of appending a line to a copy ofeos/config.pywhile building the wheel; the file in the source tree and the file in the wheel are now identical (D. van Dyk) - Split
Figure.draw()intoFigure.draw()andFigure.save()(D. van Dyk) - Update the documentation to discuss the
SEandSSEform factor parametrizations, reflect thatSSEis now the default choice (D. van Dyk) - Default the
--with-boost-python-suffixused at./configuretime to the Python major+minor version (e.g.312for CPython 3.12), matching the modern Boost.Python naming convention used by conda-forge and current Debian/Ubuntu/Fedora releases, in lieu of the previous OS/codename-based detection (D. van Dyk) - Extend the
inferenceexample figure with a residual panel showing each constraint’s pull below the main panel (D. van Dyk) - Move the implementation of the
eos-analysiscommand into the new moduleeos.cli.analysis, leaving the script as a shim, so that its subcommands can be tested and called from Python (D. van Dyk) - Notify the callbacks registered with the
Logsingleton without holding its lock, and document that they may therefore be invoked concurrently and have to be thread-safe: a callback that waits for a resource held by a thread which is itself emitting a message deadlocked both threads (D. van Dyk) - Deliver a native log message to the Python logger synchronously and in order, in lieu of deferring it to the main thread through
Py_AddPendingCall; messages emitted afteratexitno longer reach Python, since that is where the callbacks’ references are released (D. van Dyk) - Bounds-check the id that a parameter name maps to in
Parameters::operator[], matching the check that itsParameter::Idoverload already performs, so that an id outliving its parameter is reported in lieu of read out of bounds (D. van Dyk) - Enforce dynesty>=3.0.0 on installation (C. Bolognani)
- Fix the integration routines to avoid anticipated termination of the range subdivision (M. Reboud)
- Templatise the cacheable observable machinery on the type of the intermediate result, so that one provider can offer several of them (D. van Dyk)
- Declare a cacheable observable through the new
cache()andevaluate()helpers, which pair each half of it with the kinematic variables that half consumes: an observable’s kinematic variables no longer all enter its intermediate result, and observables that differ only in the variables their evaluation consumes now share one (D. van Dyk) - Obtain a cacheable observable’s provider, its option specifications, and its references through the new
impl::ProviderTraitsclass template, so that a provider which a factory selects – as a form factor parametrization is selected from the observable’s prefix – can back a cacheable observable, in lieu of only one constructed from a set of parameters and a set of options (D. van Dyk) - Move the base of all intermediate results out of
CacheableObservableintoeos::IntermediateResult, declared in the new headereos/utils/intermediate-result.hh, so that a provider below the observable layer, such as a form factor, can derive from it without depending on the observable interface (D. van Dyk) - Move the implementation of the
eos-figurecommand into the new moduleeos.cli.figure, leaving the script as a shim, so that its subcommands can be tested and called from Python (D. van Dyk) - Move the implementations of the
eos-list-observablesandeos-list-referencescommands into the new moduleseos.cli.list_observablesandeos.cli.list_references, leaving the scripts as shims (D. van Dyk) - Reimplement the
eos-list-constraints,eos-list-parameters, andeos-list-signal-pdfscommands in Python, as the new moduleseos.cli.list_constraints,eos.cli.list_parameters, andeos.cli.list_signal_pdfs, in lieu of the C++ clients of the same names; their output is unchanged, except thateos-list-parametersnow sorts the parameter sections by name, since the order in which EOS reads their files is arbitrary (D. van Dyk) - Recommend
make -j4overmake -jwhen building EOS, and warn that an unbounded parallel build can exhaust the available memory (D. van Dyk) - Breaking: Default the form factor option of the semileptonic, rare, and nonlocal form factor observables to the
SSEparametrization, in lieu of the previously process-dependent choicesBSZ2015,BCL2008,BFvD2014,DM2016,SE, andDKMR2017; predictions made with the default form factors change accordingly, and an analysis that relies on a previous default has to name it explicitly through theform-factorsoption (D. van Dyk) - Force the
Voption of theB_s->K^*lnuandB_s->D_s^*lnuobservables, which could not be constructed from their names alone because the option carries no default (D. van Dyk) - Fix the value of the
Boption of theLambda_c->Neutronlnuobservables, which named the final stateNeutronin lieu of theneutronthat the form factors and the option’s allowed values use (D. van Dyk) - Report all LaTeX errors in
Parameters,Observables andReferences rather than just the first one (M. Kirk) - Rename the “Reference” section of the documentation to “Reference Manual” (issue #1281) (D. van Dyk)
- Name the base directory of an example notebook after the notebook:
simulation.ipynbwrites belowsimulation-basein lieu ofsimulation-data, andanalysis-organisation.ipynbbelowanalysis-organisation-basein lieu of its own directory (D. van Dyk) - Name a type in the
:type:fields of the docstrings, in lieu of prose such asiterable,2D numpy array, orint > 0; the admissible range of a value is now stated in the description of the parameter (issue #779) (D. van Dyk) - Build the documentation in Sphinx’
nitpickymode and treat its warnings as errors, so that a reference which does not resolve fails the build (issue #779) (D. van Dyk) - Let a task declare more than one output through the
eos.tasks.taskdecorator, and declare the importance samples thatsample-nestedandsample-pmcwrite and the masked predictions thatpredict-observableswrites, so thateos-data checkno longer reports them as unclaimed (D. van Dyk) - Report an absent output of the
predict-observablesorcreate-masktask as a warning ineos-data check, since it can be regenerated from the importance samples, and report an output that lacks one of its data files as an error (D. van Dyk)
Added
- Add the
SSEparametrization of theLambda_b->Lambda_cform factors, whose coefficients default to a description of theDKMR2017results (D. van Dyk) - Test that every observable of the
b-decays,c-decays,nonlocal-form-factors,rare-b-decays,rare-c-decays,s-decays, andtau-decayssections can be constructed with its default options, through a newobservables_TESTin each of these directories (D. van Dyk) - Add
height_ratiosandwidth_ratiostoeos.figure.GridFigure, for sizing a grid’s rows and columns unevenly (D. van Dyk) - Add a
mode_filekey toeos.figure.ConstraintResidueItem, reading the best-fit parameter values directly from a storedeos.data.Mode(e.g. as written byeos.tasks.find_mode) in lieu of an explicitparametersdictionary (D. van Dyk) - Add a
locationskey toeos.figure.plot.XTicksandYTicksfor pinning explicit major-tick positions, since automatic tick placement chooses its step from the axes’ rendered size and can otherwise label a small panel differently than intended (D. van Dyk) - Add the function
eos.analyze_expression, which reports whether an EOS expression is well-formed and which observables and parameters it references, without registering anything (D. van Dyk) - Document how to build an
eoshepwheel manually, in a new “Building a Wheel Manually” section of the installation guide (D. van Dyk) - Add the
SSE(Simplified Series Expansion) form factor parametrization for pseudoscalar-to-pseudoscalar, pseudoscalar-to-vector, and 1/2^+ -> 1/2^+ transitions (D. van Dyk) - Add the
M:2017Areference and its constraints on theLambda_c->protonandLambda_c->neutronform factors (D. van Dyk) - Add the
mass::D_u,0@HMEandmass::D_u,1@HMEparameters (D. van Dyk) - Add the
mass::Lambda_c(2595)@HME,mass::Lambda_c(2625)@HME, andmass::Lambda(1520)@HMEparameters (D. van Dyk) - Add the
Lambda_b->Lambda(1520)::tp_v@SE,Lambda_b->Lambda(1520)::tp_a@SE, andLambda_b->Lambda(1520)::t0@SEparameters (D. van Dyk) - Add the
eos-data check,create,publish, andregistercommands for validating analysis datasets, creating citable dataset tags, publishing GitHub releases for Zenodo, and registering published datasets (D. van Dyk) - Expose the
name_part(),year_part(), andindex_part()accessors ofeos.ReferenceNameto Python, whicheos.References’yearandindexfilters require (D. van Dyk) - Add a
has()member function to theConstraints,Kinematics,Observables,Options,Parameters,References, andSignalPDFsclasses, and export it to Python as__contains__, so thatname in eos.Constraints()and its analogues report membership (D. van Dyk) - Add a test case that creates every class exported to Python and calls each of its members, and that fails for any class or member exported in future without either an entry describing how to exercise it or an explicit exemption (D. van Dyk)
- Add a test case that checks that every class and member exported to Python carries a docstring, and that the docstring describes every argument that its binding declares under the name that callers must use (D. van Dyk)
- Add docstrings to the 57 classes and members exported to Python that carried none, among them the
eos.Parameters,eos.Observables,eos.Constraints,eos.References, andeos.SignalPDFsbase classes, the section and group classes that organise them,eos.KinematicVariable,eos.OptionSpecification, and all thirteeneos.Unitfactory methods (D. van Dyk) - Add
__repr__,__eq__, and__hash__toeos.ObservableId, so that an observable cache handle prints asObservableId(0), compares by value, and can serve as a dictionary key (D. van Dyk) - Accept the lepton flavor as a
strineos.Model.wilson_coefficients_b_to_s, which no Python call could satisfy before for want of a converter (D. van Dyk) - Add
ThreadPool::WaitGuard, a guard that a thread holds while it waits for the work it enqueued, so that an embedding runtime can relinquish exclusive access to its own state for as long as the pool’s threads need it in turn; the Python bindings install one that detaches the calling thread from the interpreter (D. van Dyk) - Add a test case that races sixteen threads for a singleton’s first
instance()call and checks that exactly one instance is constructed (D. van Dyk) - Add a generation index to
Parameters, exported to Python as theeos.Parameters.generationproperty: it changes whenever any of the parameters is written to and is invariant under reading them, so that a consumer can reuse a costly parameter-dependent result across observables that differ only in their kinematics (D. van Dyk) - Add
eos-mcp-server, an optional local MCP (Model Context Protocol) server exposingeos.Observables,eos.Parameters,eos.Constraints, andeos.Referencesas read-only lookup tools for an LLM coding agent, shipped aseos.mcpbehind the newmcpextra (L. Gärtner) - Add an opaque intermediate result to the
FormFactors<VacuumToPP>interface: it depends on the parameters only, is obtained fromprepare(), and is passed to every accessor alongside that accessor’s own kinematic variables, so that a parametrization can hoist an expensive parameter-dependent step out of its per-q^2work (D. van Dyk) - Register the twelve
0->pipiand0->Kpiform factor observables as cacheable observables, so that they share one intermediate result across all values ofq^2within one update of an observable cache (D. van Dyk) - Export
MemoisationControlto Python, so thateos.MemoisationControl.instance().clear()frees the memory held by all memoisation caches (L. Gärtner) - Expose the
numerator_kinematic_variables()anddenominator_kinematic_variables()accessors ofeos.SignalPDFEntryto Python, which listing a signal PDF’s kinematic variables requires (D. van Dyk) - Add double-differential rates
tau->K_Spinu::d^2Gamma/dq^2/dcos(theta_K)and similar based on [EPPRR:2026A] (D. van Dyk) - Link every bibliography entry that carries an INSPIRE id to its INSPIRE record, so that an entry without an eprint is no longer listed without any link at all (D. van Dyk)
- Link every bibliography entry that carries a URL but not INSPIRE id or arXiv eprint to said URL, so that an entry is no longer listed without any link at all (M. Kirk)
- Check the LaTeX representation of every observable in
doc/doc_TEST.py, mirroring the existing check of the parameters (D. van Dyk) - Declare the
ipywidgetsdependency, whicheos.tasksimports whenever a task runs under IPython (D. van Dyk) - Expose
url()property ofeos.Referenceto Python, so that the URL of a reference can be retrieved (M. Kirk) - Add final check on generated documentation to look for LaTeX -> HTML conversion errors (M. Kirk)
- Document the format of the constraint files in the new “Constraint Format” section of the reference manual (D. van Dyk)
- Document that a working (Xe)LaTeX installation is required for some functionality, such as the PDF output of the
reporttask and the labels drawn byeos.figure(D. van Dyk) - Document
eos.analysis_file_context.AnalysisFileContext,eos.data.SampleMask,eos.diagnostic.Diagnostic,eos.diagnostic.Severity,eos.PyhfLogLikelihood, and the bound classeseos.KinematicVariable,eos.ObservableId,eos.ReferenceName, and the parts of a qualified name and of a reference name (issue #779) (D. van Dyk) - Resolve references to the types documented by Python, NumPy, SciPy, matplotlib, and pyhf through intersphinx, whose inventories are pinned in
doc/_inventories/so that the documentation builds without network access (issue #779) (D. van Dyk) - Add the
k_\perp-dependent branching ratio observablesdBR/dkperpandBR(kperp_min,kperp_max)to allB->PlnuandB->Vlnudecays, which so far were only available forB_s->D_slnu; this also adds thek_\perp-differential branching ratio toBToVectorLeptonNeutrino, which previously offered only the integrated one. ForB->D^*lnuthe two new observables follow the naming of that decay’s other observables:BR_CP_specific(kperp_min,kperp_max)anddBR_CP_specific/dkperpevaluate a single CP conjugate, while the unqualifiedBR(kperp_min,kperp_max)anddBR/dkperpare the corresponding CP averages (D. van Dyk) - Document the
eoshep/ubuntu-resoluteDocker image, which ships all of EOS’s build dependencies pre-installed, as an alternative to installing them by hand (D. van Dyk, M. Kirk) - Add a workflow to generate Docker images with each released version of EOS preinstalled, and document them (M. Kirk)
Deprecated
Removed
- Remove the
eos.plotPython package, deprecated for removal in version 1.1; use theeos.figurepackage instead (D. van Dyk) - Remove the
corner-plottask and theeos-analysis corner-plotcommand, deprecated for removal in version 1.1; declare a figure of typecorner(eos.figure.CornerFigure) in the analysis file and draw it with thedraw-figuretask instead (D. van Dyk) - Remove the
eos-plot,eos-plot-1d, andeos-plot-2dscripts, which were mere drivers for the removedeos.plotpackage; use theeos-figure drawcommand instead (D. van Dyk) - Remove the
eos-analysis plot-samplescommand, whose sole output was produced by the removedeos.plotpackage; declare a figure in the analysis file and draw it with thedraw-figuretask instead (D. van Dyk) - Remove the
eos.Mutableandeos.ParameterDescriptionclasses, which no exported function or member could produce and which therefore could not be reached from Python (D. van Dyk) - Remove the
eos-make-constraint,eos-merge-mcmc,eos-prepare-home,eos-print-modes, andeos-print-uncertaintyscripts, none of which could be run any longer: all but one referred to the HDF5-based data-file classes thateos.datano longer provides, andeos-prepare-homeimported a module that no longer exists; useeos-analysis create-constraintin lieu ofeos-make-constraint(D. van Dyk) - Remove the
--base-directoryoption of theeos-figure drawcommand, which the command never read; the base directory addresses the data files of an analysis and therefore belongs toeos-analysis(D. van Dyk) - Remove the polarization-dependent
Lambda_c->LambdaandLambda_c->neutronsaturation observablesSaturation[...,0],Saturation[...,perp], andSaturation[...,para]; use the polarization-summedSaturation[...]in their stead, as the mesonic transitions and theLambda_bones already do (D. van Dyk) - Remove the
eos-evaluate,eos-print-polynomial, andeos-scancommand-line clients together with thelibclilibrary that supported them, leaving EOS without C++ clients; polynomials in the Wilson coefficients are now created from Python, andeos-scanhad not been part of the build for years. Thebtopilnu-evaluate.bashCLI example is removed along witheos-evaluate(D. van Dyk)
Fixed
- Declare
B_s->D_slnu::BR(kperp_min,kperp_max)dimensionless in lieu ofGeV^-1: integratingdBR/dkperpoverk_\perpyields a branching ratio, so the advertised unit made a client apply a spurious unit conversion (D. van Dyk) - Correct the
Lambda_cmass entering theLambda_b->Lambda_c,Lambda_c->Lambda,Lambda_c->proton, andLambda_c->neutronunitarity-bound thresholds to match the canonicalmass::Lambda_cparameter (D. van Dyk) - Convert the
Lambda_b->Lambda_c::DKMR2017,Lambda_b->Lambda::DM2016,Lambda_b->Lambda_c(2595)::HQET,Lambda_b->Lambda_c(2625)::HQET, andLambda_b->Lambda(1520)::SEform factors to read their initial- and final-state masses fromParametersin lieu of hardcoded compile-time constants that could silently drift from the corresponding@HMEparameter values (D. van Dyk) - Fix displaying
eos.Constraintsin a notebook, which raised for the 20 constraints whose qualified name has no suffix part and therefore no associated reference (D. van Dyk) - Fix
eos.References’yearandindexfilters, which raised anAttributeErroron every entry (D. van Dyk) - Fix
eos.Parameters.FromWCxffor theb->sWilson coefficients that EOS treats as real-valued, which raised an “Unknown parameter” error in lieu of taking their real-valued branch (D. van Dyk) - Fix membership tests on
eos.Constraints,eos.Kinematics,eos.Options,eos.Parameters,eos.References, andeos.SignalPDFs, which fell through to iteration over(name, entry)pairs and therefore reportedFalsefor every name, including names that exist (D. van Dyk) - Fix
Observables::has(), which consulted the copy of the observable registry taken when theObservablesobject was created in lieu of the registry thatObservables::operator[]consults, and therefore did not find observables inserted at run time (D. van Dyk) - Fix
eos-analysis list-likelihoods --display, which addressed the likelihood description as a dictionary and reported every likelihood as specifying neither theconstraintsnor themanual_constraintskey; the command now also lists a likelihood’spyhffile (D. van Dyk) - Fix
eos.tasks.find_modeto include the first optimization when searching for the best-fit point: a single optimization step previously raised anAttributeError, and any run silently discarded the result of the first step (D. van Dyk) - Fix
eos.figure.ConstraintItemforMultivariateGaussianconstraints, which raised anUnboundLocalErrorwhenever theobservablekey carried an options part (D. van Dyk) - Fix
eos.figure.UncertaintyBandItemto compare the options of the requestedobservableagainst those recorded in the data file as strings, in lieu of comparing them againstqnp::OptionKeyandqnp::OptionValueobjects that never equal them, which silently plotted predictions computed with other options (D. van Dyk) - Fix
eos.figure.ConstraintItem,ConstraintResidueItem, andTwoDimensionalConstraintItemto report an unknown constraint as aValueError, in lieu of theRuntimeErrorthat reached the user because the guard tested the looked-up entry for falsiness after the lookup had already raised (D. van Dyk) - Fix three diagnostic messages in
eos.figure.ConstraintItemandeos.figure.ConstraintResidueItemthat lacked anfprefix and therefore reported the names of skipped observables as literal braces (D. van Dyk) - Fix an intermittent segfault at interpreter shutdown after
eos.register_python_observable: the registered entry holds a reference to the Python provider and lives in a process-wide registry that outlives the interpreter, so releasing the reference during static destruction ran after the interpreter had shut down; the references are now released throughatexitwhile the interpreter is still alive (D. van Dyk) - Fix
eos.LogPrior.Gaussian, which reported no varied parameters at all, so that a Gaussian prior contributed none to aneos.LogPosteriorand could not be recognised as varying its parameter (D. van Dyk) - Fix
eos.LogPosterior.add, which accepted a second prior on an already-varied parameter: the set of names that the duplicate check consults was read but never written (D. van Dyk) - Fix the keyword names declared for
eos.make_wilson_polynomial_ratio_observable, which named only three of its four arguments and therefore boundnameto the numerator andreference_observableto the denominator (D. van Dyk) - Fix the docstring of
eos.LogPrior.Scale, which described its scale factor aslambda, a Python reserved word that can never be a keyword argument, in lieu of the declaredscale(D. van Dyk) - Fix a segfault when evaluating an observable that a Python provider backs: the
ObservableCachedispatches observables to threads of EOS’s own making, which called into the interpreter without holding the GIL; the external log prior and log-likelihood block now acquire it as well, although they are reached on the calling thread (D. van Dyk) - Fix a segfault when a callback registered with the native log outlives the caller’s last reference to it: the
Logsingleton recorded the Python callable as a borrowed reference, and now holds one of its own untilatexit(D. van Dyk) - Fix
eos.Parameters.declareappending a second entry for a name it has already declared, which grew the process-wide set of default parameters by one entry for everyeos.AnalysisFilethat declares parameters of its own and left twoeos.Parametersobjects created at different times disagreeing on which id a name denotes (D. van Dyk) - Fix the double-checked locking in
InstantiationPolicy<T_, Singleton>::instance(), which read the instance pointer outside its lock without synchronisation and could therefore hand a thread a pointer to an object whose construction it cannot yet observe (D. van Dyk) - Fix the order of marking a
Ticketand releasing the job associated with it, curing a race condition leading to a rare segfault on the Python side (D. van Dyk) - Share an intermediate result only between cacheable observables that agree on the function preparing it and on the implementation behind their provider interface: two observables of one provider whose prepare functions have the same signature were grouped together, and the second silently evaluated the first’s intermediate result (D. van Dyk)
- Fix the arXiv identifier that
eos-list-referencesprints: it searched the reversed eprint id for a colon and then sliced the unreversed id at that index, so thatoai:arXiv.org:1912.09335was reported asarXiv:org:1912.09335(D. van Dyk) - Fix
eos-list-constraints --dump-as-yaml, which emitted each constraint nested inside the one before it, so that the dump of all 741 constraints parsed as a mapping of 7 entries and the remainder was unreachable (D. van Dyk) - Fix bug in scalar contributions to
tau->K_spinu::dBR/dq2andtau->K^-pinu::dBR/dq2(issue #1203) (D. van Dyk) - Fix the LaTeX descriptions of the
B->K^*ll::P'_{4,5,6}(q2)andB->K^*ll::P'_{4,5,6,8}@LHCbobservables, the former naming the kinematic variableq2in lieu ofq^2, the latter placing a second superscript on a symbol that already carries a prime, which LaTeX rejects (D. van Dyk) - List FFTW3 among the prerequisites and add it to the
aptandbrewcommands, sinceconfigurerefuses to build EOS without it (D. van Dyk) - Describe
--with-boost-python-suffixas encoding the Python version that BOOST.Python was built against, in lieu of leaving it to be read as the minimal Python version EOS requires, and refresh its stalelibboost_python39andpython3.8examples (D. van Dyk) - Sort the list of units in the conventions page, which was built from a set and therefore ordered differently in every build (D. van Dyk)
- Let a display equation that exceeds the page width scroll horizontally in lieu of running off the page, and split the baryonic vector and axialvector matrix elements over more lines (D. van Dyk)
- Fix a stray space in the
basicsexample notebook, and an invalid\pescape sequence in theanalysis-organisationexample notebook that emitted aSyntaxWarninginto the rendered documentation (D. van Dyk) - Rename the custom observable of the
b-to-u-l-nuexample analysis file toB->pilnu::R_pi_e, since it shadowed the built-inB->pilnu::R_pi, which is a ratio of tau and muon modes rather than of tau and electron modes (D. van Dyk) - Emit
eos.figure’s per-item progress message at debug level in lieu of info level, so that drawing a figure no longer writes one line per item tostderr(D. van Dyk) - Forward the parameters used by the
ParameterUsermembers that aParameterUserowns, so that the set ofused_parameter_idsan observable reports is complete. TheSE,SSE,BSZ2015,BGL1997,DM2016,DKMR2017, andHKVT2025form factors now cover their traits objects; theB->gammaQCDF form factors cover the B-meson LCDAs and the model;HQETUnitarityBoundscovers the BGL coefficients; theLambda_b->Lambda_czero-recoil sum rules cover theLambda_c(2595)form factors; theBq->D(*)q Pamplitudes cover the light-meson LCDAs;BsToPhiDileptonAndConjugatecovers both of itsB_s->phillmembers; and a further set of classes cover the model (D. van Dyk) - Re-raise the exception of a failing task once the
ipywidgetsoutput widget has displayed it: the widget suppresses whatever is raised within it, so a task that failed inside a notebook was reported and then ignored, and a failing example produced a successful documentation build (D. van Dyk) - Typeset the parameter names of the
inferencereport template as math, so thateos.tasks.reportproduces its PDF in lieu of failing in XeLaTeX (D. van Dyk) - Name
pypandocin the installation instructions, in lieu of the unrelatedpandocpackage on PyPI, and list it among the packages to install into a virtual environment (D. van Dyk) - Define
\pandocboundedin the report template, which pandoc 3 wraps around every image and which only its own template provides, so thateos.tasks.reportproduces its PDF with a current pandoc (D. van Dyk) - Drop the dollar signs from the latex representations declared in the
b-to-u-l-nuandx-parametersexample analysis files, which the latex representation of a parameter no longer accepts (D. van Dyk)

