Skip to content

v2.0.0: Python 3.12+, modern tooling, performance improvements - #3

Merged
eturino merged 3 commits into
masterfrom
2.0
Jan 16, 2026
Merged

eturino merged 3 commits into
masterfrom
2.0

Conversation

@eturino

@eturino eturino commented Jan 16, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Python 3.12+ required (breaking change from 3.6+)
  • KeySetAll.len behavior change: Now raises TypeError (infinite set semantics)
  • Build system modernization: Pipenv → uv, setup.py → pyproject.toml
  • Performance improvements: frozenset, slots, hash

Breaking Changes

  • Requires Python 3.12+
  • len(KeySetAll()) now raises TypeError instead of returning 0
  • Use KeySetAll.enable_compat_len(True) for opt-in compatibility mode returning sys.maxsize

Features

  • __hash__ on all KeySet classes (usable as dict keys / in sets)
  • __slots__ for reduced memory footprint
  • frozenset internally for better performance
  • match statements with exhaustive assert_never type checking
  • Iterable[str] input types for more flexibility

Build & CI

  • Migrate from Pipenv to uv with pyproject.toml
  • CI tests on Python 3.12, 3.13, 3.14
  • Replace flake8 + plugins with ruff
  • Add Codecov coverage reporting (87%)
  • Trusted publishing to PyPI via OIDC
  • Add mise.toml for local tool versions

🤖 Generated with Claude Code

eturino and others added 3 commits January 16, 2026 14:26
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace setup.py with pyproject.toml (hatchling backend)
- Replace Pipfile/Makefile with uv-based justfile
- Update CI to test Python 3.12, 3.13, 3.14
- Add trusted publishing to PyPI via OIDC
- Replace flake8+isort with ruff
- Add pytest-cov for coverage + Codecov integration
- Add bump-my-version for releases
- Add .mise.toml for local tool versioning
- Fix ruff lint issues (star imports, line length)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@codecov-commenter

Copy link
Copy Markdown

Welcome to Codecov 🎉

Once you merge this PR into your default branch, you're all set! Codecov will compare coverage reports and display results in all future pull requests.

Thanks for integrating Codecov - We've got you covered ☂️

@eturino eturino changed the title 2.0 v2.0.0: Python 3.12+, modern tooling, performance improvements Jan 16, 2026
@eturino
eturino merged commit 01551e3 into master Jan 16, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants