Repository navigation
Released on PyPI on 2026-10-05: https://pypi.org/project/s3e/0.5.0/
Added
- JOSS submission materials:
paper/paper.mdandpaper/paper.bib, with a
GitHub Actions workflow that builds the draft PDF. - Sphinx API reference under
docs/(Read the Docs configuration in
.readthedocs.yaml) and docstrings for the remaining public calibration,
answer-space, and serialization APIs. - Continuous integration running the fast test suite on Python 3.10–3.14 and
building the documentation. - Community files:
CONTRIBUTING.md,CODE_OF_CONDUCT.md, issue and pull
request templates, andCITATION.cff. .mailmapconsolidating the maintainer's commit identities.MANIFEST.inso the source distribution ships the full test suite.Prediction.has_answerandPrediction.matched, and an
UnmatchedAnswerWarningemitted once perQueryEngine.askcall when some
queries match no answer option (atext_matchreply that starts with no
answer token, or zero mass on every answer token).
Changed
- Breaking:
to_stateandSemanticStateEstimator.__call__always return
a completedict[str, bool]: a predicate is True iff P(true) >= confidence,
neverNone.Prediction.answeris neverNone. - Breaking: a prediction has no answer when the explicit null option is
its top answer or no answer token received any mass. Its P(true) is 0.5 (a
uniform distribution for categorical spaces), even when calibrated, so it is
True at the default confidence of 0.5 and False above it. - Breaking: for binary spaces,
Prediction.answeris
probability >= 0.5, so it follows a calibrated probability; previously it
was the argmax of the raw masses. Categorical ties, including the uniform
distribution of a prediction with no answer, go to the first listed option. - Breaking:
text_matchscoring matches only when the reply starts with
an answer token (as a whole word, longest token first, with the null option
competing); previously a token anywhere in the reply matched. Replies such
asAnswer: yes,**Yes**, or a leading<think>block now match nothing. Prediction.probabilityisT / (T + F)without smoothing, so a matched
text_matchreply gives exactly 1.0. Calibration scores are unchanged.Prediction.probabilityraisesValueErrorfor non-binary answer spaces
even when a calibrated probability is set.
Fixed
CalibrationSet.collectskips predictions with no answer, which are not
valid training points.PredictionSet.averageaverages calibrated probabilities only over members
that have an answer.