Changelog¶
All significant changes to this project are documented in this release file.
| Legend | |
|---|---|
| Feature | New feature |
| Enhancement | Improvement in existing functionality |
| API Change | Changes in the API |
| Fix | Bug fix |
Released (2026-08-16, v0.4.0)¶
The headline is that IsoKernel gains a third way of partitioning the data space. Everything else is documentation: how the API reference is built, what the site ships for language models, and how it looks.
- Feature
IsoKernel(method="iforest")works. It was documented alongsideanneandinne, and dispatched to, but the class behind it was an empty stub, so following the documentation raisedTypeError. Isolation trees now cut the space into axis-parallel boxes, whereanneproduces Voronoi cells andinneproduces hyperspheres. The other estimators still accept only the methods their papers specify. - Enhancement The API reference is generated from the package rather than hand-written. A new estimator now needs no documentation page and no navigation entry, and a missing one fails the build instead of silently having no page. The reference also gained an overview listing every estimator with its description and publication.
- Enhancement The docs publish an
llms.txtindex and a Markdown copy of every page, and each page carries controls to copy or view that Markdown, so a page can be handed to a language model without going through rendered HTML. - Enhancement Pages have social preview cards and a last-updated date, and the fonts the theme uses are served from the site rather than fetched from Google.
- Enhancement New logo, and the site palette moves to scikit-learn's blue and orange to match it. IKPyKit implements the scikit-learn API, and that colour pair is how the surrounding ecosystem signals membership.
- Fix
IK_INNE's description said it used isolation forests and produced Voronoi diagrams. It does neither; it partitions with hyperspheres. - Fix The
iforestconstruction cited the paper that introducesanne. It now cites Ting, Zhu and Zhou (KDD 2018), andIsoKernellists all three papers its methods come from. - Fix References in docstrings reached the API pages as the literal characters
.. [1], because they used reST citation syntax in docstrings that are rendered as Markdown. They are numbered lists now, across every file that carries references. - Fix The tables of implemented algorithms were maintained in three places and had drifted apart. They are generated from one source, which corrected IForest's second publication year (given as 2022, the paper is 2012), STREAMKHC's description (which was IKAT's, copied), and a misspelling of "Trajectory".
Released (2026-08-16, v0.3.0)¶
This release raises the minimum Python version and the minimum versions of several runtime dependencies. Both are breaking for anyone on an older environment; everything else is additive or internal.
- Feature Python 3.14 is now supported and covered by CI on Linux, macOS, and Windows. Installs on 3.14 already worked, since the runtime requirements are lower bounds, but the version was neither tested nor declared.
- API Change The minimum supported Python version is now 3.11 (previously 3.9). Python 3.9 reached end of life in October 2025, and NumPy and scikit-learn have already dropped support for it under SPEC 0 — installs on 3.9 and 3.10 silently resolved to noticeably older versions of the scientific stack.
- API Change Minimum versions of
numba,numpy, andscikit-learnwere raised to 0.63.0, 2.3.2, and 1.7.2. The previous bounds claimed support for versions that publish no wheels for Python 3.13 or 3.14, so the declared floor could not actually be installed across the supported Python range. A scheduled CI job now resolves against these bounds to keep them honest. - Enhancement Type annotations were modernized to PEP 604 syntax (
X | Y,X | None) now that the minimum version allows it. - Enhancement All
zip()calls over collections that are equal-length by construction now passstrict=True, so a length mismatch raises instead of silently truncating. - Fix Spelling errors were corrected in user-facing documentation, including IKTOD's class docstring and a variable name in the IKGOD usage example.
- Fix Locked development dependencies were upgraded, clearing all open security advisories. These were confined to the docs and dev dependency groups and never reached the published package, whose runtime requirements are unaffected.
Released (2026-03-22, v0.2.4 Hotfix)¶
- Fix Converted hard-coded site links in the docs home page to version-safe relative links, so navigation works under
latest,dev, and versioned routes.
Released (2026-03-22)¶
- Feature IDKC now supports optional
force_assign_unassignedto force final assignment of remaining-1samples. - Enhancement CI/CD workflows were unified around
uvwith reusable pipelines for lint, tests, and docs checks. - Enhancement Installation guidance was standardized to recommend
uv pip install, with classicpipretained as fallback. - Enhancement A top-level CI entry workflow was introduced to run lint, tests, and docs validation in a consistent matrix-driven flow.
- Enhancement Docs deployment was refactored to support branch/tag version publishing using
mikewithdevandlatestaliases. - Enhancement PyPI release workflow was modernized with
uv build, OIDC publishing, and GitHub Release artifact upload. - Enhancement Shared cluster bookkeeping was consolidated in
KCluster(build_labels,total_points) and reused by IDKC/PSKC. - Enhancement IDKC and PSKC internals were refactored into clearer helper methods without changing their core algorithmic intent.
- Enhancement Project formatting and linting gates were strengthened by integrating
blackwith existingruffchecks. - Fix Notebook web rendering reliability was improved by enabling
mkdocs-jupyterexecution and validating notebook build in strict docs checks. - Fix Documentation build failures caused by notebook runtime dependencies were resolved by adding docs-time plotting dependencies.
-
Fix User guide notebook example import paths were corrected to match actual public API symbols.
-
Fix Multiple Ruff and warning issues were resolved across anomaly, kernel, stream, graph, and utility modules.
-
Fix Pytest warning noise was reduced via dependency/config updates (
pytest-asyncio,pytest-timeout) and timeout tuning. -
Fix IDKC post-processing logic for unassigned points was corrected to prevent invalid cluster transitions.
-
Fix Graph test sparse matrix construction was optimized to avoid efficiency warnings (
lilconstruction thencsrconversion). -
Fix Time-series test regex matching for exception messages was fixed using escaped expected patterns.
-
Fix FAQ content was rewritten for IKPyKit and reconnected to site navigation.
- Fix Multiple documentation links and navigation targets were corrected to pass
mkdocs --strict.