Changelog
All notable changes to skeval are documented here.
The format follows Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.2.3 (2026-06-02)
Release highlights
compute_metricsnow raises a clearValueErrorwhen fewer than two distinct labels are present — a 1×1 confusion matrix has no diagnostic value.load()raises a user-friendlyFileNotFoundErrorinstead of a raw Python traceback when the saved model directory does not exist.CSV and JSONL dataset loaders now validate their inputs and report errors clearly before any training begins.
Doc-build dependencies pinned to exact versions for fully reproducible Read the Docs builds.
Fixed
compute_metricsnow raisesValueErrorwhen fewer than 2 distinct labels are found in the combinedy_true/y_predset — previously it produced a meaningless 1×1 confusion matrix and emitted aUserWarning. See issue #131 by @direkkakkar319-ops.load()now raisesFileNotFoundErrorwith a clear message ("No saved model found in '<path>'. Call save() first.") instead of propagating a raw PythonFileNotFoundErrorwith no context. See issue #115 by @direkkakkar319-ops.DatasetLoadernow validates that the requiredtextandlabelcolumns are present in CSV files before attempting to load, raisingValueErrorwith the missing column names. See issue #121 by @iccccccccccccc.DatasetLoadernow catchesjson.JSONDecodeErroron malformed JSONL lines and re-raises with the line number and content for easier debugging. See issue #120 by @iccccccccccccc.Added
wheelandbuildto[project.optional-dependencies] devinpyproject.tomlsopython -m build --no-isolationworks out of the box for contributors without extra manual installs. See issue #143 by @direkkakkar319-ops.
Changed
Pinned exact doc-build dependency versions in
docs/requirements-docs.txtfor reproducible Read the Docs builds. See issue #139 by @direkkakkar319-ops.Bumped
codecov/codecov-actionfrom 5 to 6. By @dependabot.Bumped
actions/upload-artifactfrom 4 to 7. By @dependabot.Bumped
actions/download-artifactfrom 4 to 8. By @dependabot.Bumped
MishaKav/pytest-coverage-commentfrom 1.0.26 to 1.7.2. By @dependabot.
Added
Integrated CodeRabbit AI review — maintainers can trigger a review on any pull request by commenting
@coderabbitai review. See issue #144 by @direkkakkar319-ops.
0.2.2 (2026-05-26)
Release highlights
Deprecated
train()fully replaced byfit()across all examples, scripts, and documentation — the API is now consistent with scikit-learn conventions throughout.assertin_batch_forwardreplaced with an explicitRuntimeErrorso unfitted-model errors survivepython -Ooptimised mode.
Fixed
Replace
assert self.model is not Nonewith an explicitRuntimeErrorin_batch_forward— assertions are silently stripped underpython -O, causing an unhelpfulAttributeErrorfrom PyTorch when callingpredict()orpredict_proba()on an unfitted model. See issue #113 by @direkkakkar319-ops.Replace deprecated
train()withfit()inscripts/train_model.py. See issue #111 by @iccccccccccccc.Replace deprecated
train()withfit()inexamples/01_quickstart.py. See issue #112 by @iccccccccccccc.Replace deprecated
train()withfit()inexamples/02_save_and_load.py. See issue #135 by @direkkakkar319-ops.Replace deprecated
train()withfit()inexamples/03_evaluation.py. See issue #133 by @Storm1289.Replace deprecated
train()withfit()inexamples/04_custom_labels.py. See issue #134 by @direkkakkar319-ops.Update
train()tofit()indocs/usage.rst. See issue #126 by @direkkakkar319-ops.Move
epochsargument toSentenceClassifierconstructor indocs/index.rst. See issue #127 by @direkkakkar319-ops.
Changed
Updated repository dependencies. See issue #129 by @direkkakkar319-ops.
Bumped
actions/labelerfrom 5 to 6. By @dependabot.Bumped
actions/upload-artifactfrom 4 to 7. By @dependabot.
Added
Documentation link added to
README.md. See issue #100 by @YuuGR1337.New CI/CD labels. See issue #119 by @direkkakkar319-ops.
Test coverage for all example scripts. See issue #128 by @atharrva01.
New Contributors
@YuuGR1337 made their first contribution.
@iccccccccccccc made their first contribution.
@Storm1289 made their first contribution.
@atharrva01 made their first contribution.
0.2.1 (2026-05-21)
Fixed
Updated
CONTRIBUTING.mdlinks to the correct repository URL. By @Raviteja2299.Replaced
Sentinel AIlabel in CLI description,train_modelscript,evaluate_llmscript, and04_custom_labelsexample. By @taiman724.Fixed README clone URL and changelog repository URL. By @donglrd.
Removed scikit-learn boilerplate from PR template. By @donglrd.
New Contributors
@Raviteja2299 made their first contribution.
@taiman724 made their first contribution.
@donglrd made their first contribution.
0.2.0 (2026-05-19)
Release highlights
New
model_selectionmodule withtrain_test_split()andcross_val_score().predict_proba()— probability outputs for LIME, SHAP, and ONNX compatibility.SentenceClassifiernow inherits fromsklearn.base.BaseEstimator, enabling full sklearn pipeline andGridSearchCVcompatibility.
Added
model_selection— new module withtrain_test_split()andcross_val_score(). By @direkkakkar319-ops.predict_proba()— probability outputs for LIME, SHAP, and ONNX compatibility. By @direkkakkar319-ops.Validation split and early stopping in
fit()(val_split,patienceparameters). By @direkkakkar319-ops.Batched prediction in
predict()andpredict_proba(). By @direkkakkar319-ops.num_workersandpin_memoryparameters on the DataLoader for faster data loading. By @direkkakkar319-ops.random_stateparameter onSentenceClassifierfor reproducible training. By @direkkakkar319-ops.Input validation in
fit()andpredict(). By @direkkakkar319-ops.SentenceClassifiernow inherits fromsklearn.base.BaseEstimator— fully compatible with sklearn pipelines andGridSearchCV. By @direkkakkar319-ops.check_estimator()compliance tests in CI. By @direkkakkar319-ops.Integration tests for the full pipeline (CSV → train → save → load → predict → evaluate). By @direkkakkar319-ops.
Test suite grew from 11 to 79 tests. By @direkkakkar319-ops.
Google-style docstrings on all public classes and functions. By @direkkakkar319-ops.
Ecosystem compatibility documentation (LIME, SHAP, ONNX, skore, GridSearchCV). By @direkkakkar319-ops.
Read the Docs configuration and Sphinx docs build workflow. By @direkkakkar319-ops.
Changed
VocabBuildernow buildsword2idxandidx2wordin a single pass. By @direkkakkar319-ops.transformersanddatasetsmoved to optional extras (pip install skeval[transformers]). By @direkkakkar319-ops.Dependency upper bounds pinned to prevent silent breakage. By @direkkakkar319-ops.
Full type annotations with
mypy --strictenforced in CI. By @direkkakkar319-ops.
0.1.2 (2026-04-25)
Changed
Renamed the library to
skeval. By @direkkakkar319-ops.
Fixed
Miscellaneous fixes and stability improvements. By @direkkakkar319-ops.
0.1.1 (2026-04-25)
Fixed
CI workflow: updated
actions/checkouttov4andactions/setup-pythontov5(v6does not exist and caused CI failures). By @direkkakkar319-ops.README: corrected
predict()usage example — method takes a list of strings, not a single string. By @direkkakkar319-ops.README: corrected example output keys (
per_class_f1→per_class). By @direkkakkar319-ops.README: fixed install URL placeholder (
your-username→ correct repository path). By @direkkakkar319-ops.
0.1.0 (2026-04-25)
Release highlights
First public release of skeval — a lightweight semantic evaluation layer for LLMs.
Added
SentenceClassifier— train, predict, save, and load a PyTorch sentence classifier. By @direkkakkar319-ops.BasicTextClassifier—EmbeddingBag + Linearneural network architecture. By @direkkakkar319-ops.Evaluator— evaluate predicted labels against ground truth. By @direkkakkar319-ops.compute_metrics()— accuracy, per-class precision / recall / F1, and confusion matrix via scikit-learn. By @direkkakkar319-ops.DatasetLoader— load training data from CSV or JSON Lines files. By @direkkakkar319-ops.SentenceDataset— PyTorchDatasetwrapper with variable-length collation. By @direkkakkar319-ops.VocabBuilder— bag-of-words tokenizer with<PAD>/<UNK>support. By @direkkakkar319-ops.LabelEncoder— string label ↔ integer index mapping. By @direkkakkar319-ops.scripts/train_model.py— CLI script for training from file. By @direkkakkar319-ops.scripts/evaluate_llm.py— CLI script for evaluation from file. By @direkkakkar319-ops.Sphinx documentation. By @direkkakkar319-ops.
Full pytest test suite. By @direkkakkar319-ops.
5 example scripts in
examples/. By @direkkakkar319-ops.