Changelog

The project follows semantic-versioning conventions where practical during the 0.x development series. Public changes are recorded here; private modules may change independently.

0.8.2 - 2026-09-06

Fixed

  • Treat string delimiters as scalar patterns in views.split and views.join_with, so multi-character string separators work as documented.

0.8.1 - 2026-09-06

Fixed

  • Added a less precise fallback type for views.zip and views.cartesian_product calls with more than two companion iterables, matching their existing runtime support.

0.8.0 - 2026-09-06

Changed

  • Improved public typing for views.zip and views.cartesian_product with zero, one, and two companion iterables. Larger runtime arities remain supported but are typed less precisely.

0.7.0 - 2026-09-06

Changed

  • Range.__str__() now matches normal list formatting, including quoted string elements.

0.6.1 - 2026-09-06

Added

  • views.to(str) for concatenating string elements without requiring an explicit "".join factory.

Fixed

  • Corrected the historical 0.2.0 changelog entry so it no longer repeats changes from 0.5.0.

0.6.0 - 2026-09-05

Added

  • Automated PyPI publishing through GitHub Releases and PyPI Trusted Publishing.

  • Publishing documentation covering the release flow, trusted publisher fields, and GitHub environment behavior.

  • Manual PyPI publishing workflow dispatch for existing releases.

0.5.1 - 2026-09-05

Added

  • C++ ranges comparison notes documenting where rangeslib follows C++ naming and where Python’s eager iterable model intentionally differs.

  • Roadmap notes for collecting future work as issues instead of adding more adaptors immediately.

Changed

  • Reworked the README into a shorter tutorial-style introduction focused on the core mental model: ranges creates, views transforms, and views.to converts.

  • Tightened usage documentation examples so the README stays concise and the usage guide carries the fuller API catalog.

0.5.0 - 2026-09-05

Added

  • Reusable adaptor composition, allowing pipelines such as views.filter(predicate) | views.take(3) to be reused with multiple inputs.

  • views.take_while and views.drop_while aliases for C++-style naming.

  • Scalar delimiters for views.split and views.join_with, while retaining iterable separator-pattern support.

  • scripts/benchmark.py for local performance measurements of large eager pipelines.

Changed

  • views.split now validates an empty separator before consuming its input.

  • Public typing now supports mixed-type two-range zip and cartesian_product, typed keys and values, and exact pairwise tuple output.

0.4.0 - 2026-09-05

Added

  • views.all for materializing existing Python iterables into reusable Range values, similar in purpose to C++ views::all.

  • Coverage now reports 100% executable line and branch coverage.

0.3.3 - 2026-09-05

Added

  • Automated GitHub releases when [project].version changes on main after source quality, documentation, package, and wheel-install checks pass.

  • GitHub issue and pull request templates, plus local pre-commit hooks for Ruff, mypy, and Pyright.

Changed

  • Moved developer commands into scripts/ and updated CI, documentation, and source-distribution packaging to use the new paths.

0.3.2 - 2026-09-05

Added

  • Ruff, mypy, and Pyright as required, independently configured validation categories in the local quality gate and CI.

  • scripts/typecheck.sh for running mypy and Pyright without the full test, coverage, package, and documentation checks.

Changed

  • The CI quality job now explicitly reports its Ruff, mypy, and Pyright gate.

  • scripts/check.sh forwards its selected PYTHON interpreter to scripts/typecheck.sh.

0.3.1

Fixed

  • Corrected Range slicing, concatenation, multiplication, and copying so UserList reconstruction does not create nested single-element ranges.

  • Made non-negative take consume only the requested prefix, allowing it to bound one-shot and infinite iterators.

  • Corrected stale contributor guidance that told contributors to export private adaptor classes from the package root.

  • Corrected API reference section markup and removed contradictory validation wording from the architecture contract.

Changed

  • ranges.single is now generically typed and preserves the input value type.

  • Public typing for several no-input-type adaptor factories now uses structural protocols so pipeline element types can be inferred at call/pipe time.

  • Development helper scripts use the active Python environment rather than assuming a repository-local .venv.

  • CI now invokes repository validation scripts directly, and GitHub Pages deployment waits for a successful CI run on main before building the exact validated commit.

  • Documentation now distinguishes end-user installation from contributor setup and documents materialization, iterator consumption, validation, extension, and compatibility contracts.

Added

  • py.typed marker for PEP 561 inline typing.

  • Public-facade and Range collection-contract regression tests.

  • Static public API type assertions.

  • Coverage, linting, formatting, typing, package-build, wheel-install, and documentation quality gates in CI.

  • format.sh, check.sh, and check_package.sh developer commands so local formatting, quality validation, and distribution validation use the same executable policy as CI.

  • Project metadata, repository/documentation links, migration notes, and this changelog.

0.3.0

  • Introduced the lowercase ranges and views facade.

  • Reduced the package-root public namespace to Range, ranges, and views.

  • Documented eager execution and ordinary-iterable pipeline support.

0.2.0

  • Established the initial range container, source generators, and adaptor set.