Changelog
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
The canonical copy for GitHub and releases also lives at the repository root as CHANGELOG.md.
[0.4.1] - 2026-05-16
0.4.1 — mypy/CI typing fixes for drill hierarchy and detail panel hashing; README and PyPI Documentation URLs center Read the Docs. See root CHANGELOG.md for bullets.
[0.4.0] - 2026-05-15
Coordinated 0.4.x for luxin, luxin-core, and luxin-nb: monorepo alignment, luxin_nb HTML tests, release workflow __version__ checks, NA-aware manual drill mapping and show_drill_table notebook fallback, expanded pytest suite (comparison, breadcrumbs, drill stack, aggregation builder, jupyter backend) with CI pytest-cov and cov-fail-under, and documentation/MkDocs updates (including Releasing). Canonical roots: luxin/, luxin_core/, luxin_nb/. See root CHANGELOG.md for full bullets.
[0.3.0] - 2026-05-15
Phase 3 features (this release): multi-level drill (DrillHierarchySpec + breadcrumbs), data-quality dashboard, comparison views (luxin.compare.inspect_pair), aggregation builder expander, optional SciPy extra luxin[compare], and new InspectorConfig flags.
Fixes in this release include filter index alignment for text search, stable detail-panel pagination keys, drill-stack push-guard cleanup on truncate, aggregation-builder template/manual consistency, and comparison significance copy clarifying pooled t-tests. CI runs on master as well as main / develop. See root CHANGELOG.md for full notes.
[0.2.1] - 2026-05-15
Fixed
- PyPI uploads: drop invalid trove classifier
Framework :: Streamlit(rejected by Warehouse with HTTP 400). - Require Streamlit >= 1.35 for dataframe row selection (
on_select/selection_mode); surface a clear upgrade error on older versions. - Canonical
source_mappingkeys so drill-down lookups work across numpy scalars, pandas timestamps, and mixed datetime representations. Inspector.renderwarns when aggregation metadata is missing or empty instead of falling through to the non-drill tip.- Unnamed aggregate index: after
reset_index(), column names align withgroupby_colsso row selection resolves to the correct detail rows. - Column filters: multiselect option sorting no longer raises on mixed-type uniques.
Changed
TrackedDataFrame.groupbysupports column names asstr,list/tupleof str, or a 1d ndarray of names; advanced pandas groupers (e.g.pd.Grouper) raiseNotImplementedErrorwith guidance.- Single-column groupby uses a scalar
byfor pandas to avoid spuriousgroupsAPI warnings. - Removed the empty
luxin[streamlit]optional extra; Streamlit stays a required dependency.
Documentation
- Troubleshooting (Streamlit install / version), roadmap phase timeline note, and Polars return types clarified.
[0.2.0] - prior
- Introduced the
InspectorAPI; deprecatedshow_drill_tablein favor ofInspector(df).render(). See Migration guide.