Skip to content

Release v0.10.0

Choose a tag to compare

@github-actions github-actions released this 23 Feb 01:52
· 82 commits to main since this release
Immutable release. Only release title and notes can be modified.
7dd1763

[0.10.0] - 2026-02-21

Features

  • schema: Add namespaced key builders and GSI4 (#364) (0117576)
  • schema: Add namespaced key builders and GSI4 (#374) (3bd748e)
  • repository: Thread namespace_id through all call sites (#365) (91dba61)
  • repository: Thread namespace_id through all call sites (#376) (3a3ca1e)
  • aggregator: Extract namespace_id from stream record PKs (#367) (36a40d4)
  • aggregator: Extract namespace_id from stream record PKs (#378) (2e5cb95)
  • repository: Add RepositoryBuilder with namespace resolution and version management (31dc785)
  • repository: Add GSI4 attributes on all creation paths (10a1a9e)
  • models: Emit DeprecationWarning on StackOptions instantiation (c9f96bd)
  • repository: Add on_unavailable to builder and namespace() (02f0af7)
  • repository: Add parallel_mode() to SyncRepositoryBuilder (f64ffcc)
  • repository: Add Builder pattern replacing StackOptions + with_options() (#379) (bbc8120)
  • repository: Add namespace registry with concurrent bulk registration (#369) (7e355b0)
  • repository,cli: Add namespace registry with DynamoDB records and CLI commands (#382) (d808008)
  • cli: Add --namespace / -N flag to 17 data-access commands (#368) (8a98db7)
  • cli: Add --namespace / -N flag to data-access commands (#383) (e5cd385)
  • infra: Add namespace-scoped IAM policies with PrincipalTag conditions (#370) (86f7357)
  • infra: Add namespace-scoped IAM policies with PrincipalTag conditions (#370) (#387) (1df0db4)
  • repository: Add Repository.connect() factory classmethod (#381) (f363e69)
  • cli: Migrate data-access commands to Repository.connect() (3f25c2c)
  • repository: Add Repository.connect() factory classmethod (#381) (#402) (6b450ad)
  • repository: Add Repository.connect() factory classmethod (#403) (55bb4c0)
  • repository: Add Repository.open() unified entry point (#404) (b67b904)
  • repository: Add Repository.open() unified entry point (#404) (#407) (32429c9)
  • models: Add burst parameter to Limit factory methods (a51c4ce)
  • cli: Support period suffix in -l flag syntax (c48d712)
  • schema: Add sk_provisioner() key builder for #PROVISIONER record (#405) (34421d2)
  • repository: Add get/put_provisioner_state() for declarative limits (#405) (1e5ef18)
  • infra: Add LimitsManifest dataclass with YAML parsing (#405) (2083ed5)
  • infra: Add diff engine for declarative limits provisioner (#405) (b8f8a0c)
  • infra: Add applier module for declarative limits provisioner (#405) (9741dff)
  • infra: Add Lambda handler for declarative limits provisioner (#405) (7213735)
  • infra: Add Lambda builder for limits provisioner (#405) (5973283)
  • infra: Add limits provisioner Lambda to CloudFormation template (#405) (e697c7b)
  • infra: Deploy provisioner Lambda code alongside aggregator (#405) (b325fe2)
  • cli: Add limits plan/apply/diff/cfn-template commands (#405) (aa3bfe4)
  • cli: Auto-register namespace on first limits apply (#405) (1ab4654)
  • infra: Add declarative limits management via YAML and Lambda provisioner (#405) (#409) (d4bf8e0)

Bug Fixes

  • repository: Update archiver and remaining tests for namespaced keys (a2efd8f)
  • test: Add namespace_id to integration test dataclass constructors (3040c80)
  • repository: Version record uses RESERVED_NAMESPACE, remove strict_version/skip_version_check (1cf4913)
  • repository: Remove skip_version_check from doctests and examples (abca7ef)
  • repository: Copy parallel mode fields to SyncRepository.namespace() scoped repo (79de8f2)
  • repository: Filter "purging" status in _resolve_namespace (34dd767)
  • limiter: Forward deprecated params to repo + reset on_unavailable cache on invalidate (77b0a9a)
  • docs: Split multi-import line to pass ruff E401 lint (f1d44c6)
  • docs: Tag namespace migration examples as lint-only for doctest (4ce8cf0)
  • test: Make namespace migration doc examples executable in doctest (3164a9b)
  • test: Support RepositoryBuilder in doctest conftest (6dcdc56)
  • test: Move pytest_plugins to root conftest (#170) (7f9e779)
  • test: Integrate aiobotocore patch into mock_dynamodb fixture (#173) (a48271c)
  • limiter: Reject namespace IDs starting with dash (#398) (5b21823)
  • limiter: Reject namespace IDs starting with dash (#399) (fbb2896)
  • test: Replace print-based warnings with warnings.warn in test cleanup (#175) (3c1729d)
  • test: Replace print-based warnings with warnings.warn in test cleanup (#175) (#400) (8e129fe)
  • limiter: Distinguish TransactionConflict from ConditionalCheckFailed in _commit_initial (#332) (25a50bb)
  • limiter: Distinguish TransactionConflict from ConditionalCheckFailed in _commit_initial (#332) (#401) (f8582a0)
  • test: Fix integration and doctest failures after connect() migration (8966b7c)
  • test: Use constructor for CLI audit test to match CLI namespace (5ceca1c)
  • test: Fix pagination mock passing fake ExclusiveStartKey to moto (a922164)
  • test: Use opaque namespace ID in E2E usage snapshot items (c897641)
  • ci: Make verify-sync-generated hook work in both CI and local environments (343927d)
  • docs: Pass required limits arg to set_system_defaults() in examples (4ba6a45)
  • test: Pass parallel_mode after open() since it's a sync-only constructor param (#404) (060e9eb)
  • test: Inject parallel_mode into SyncRepository.open() via generator (#404) (d8ad337)
  • docs: Correct CLI namespace note — open() auto-registers namespaces (#404) (7739654)
  • cli: Mark unreachable _format_period fallback with pragma no cover (60a95fc)
  • docs: Replace deprecated capacity= kwarg with positional arg in examples (960f040)
  • docs: Avoid [:burst] pattern that triggers mkdocs-autorefs warning (c889d38)
  • cli: Migrate connect() to open() after Repository API rename (#405) (49c7d7b)
  • infra: Use RoleNameFormat for provisioner Lambda role (#405) (a3d2db6)

Revert

  • 📝 docs(infra): use builder pattern for namespace registration in deployment guide (#404) (2f3f7ef)

Documentation

  • Migrate code examples to Repository-first pattern (#366) (1bab3aa)
  • infra: Add namespace-scoped access control documentation (#370) (ed8d3ca)
  • schema: Add namespace-prefixed keys migration guide (#371) (f4fc60f)
  • schema: Clarify GSI4 empty backfill and UPDATING state (#371) (7efe9af)
  • schema: Add namespace-prefixed keys migration guide (#371) (#391) (0858e59)
  • Migrate to RepositoryBuilder API and add namespace documentation (#389) (6343a95)
  • Update cost headline to $0.625/1M with $0 fast rejections (880873f)
  • Fix verification gaps for namespace documentation (#389) (457afe4)
  • Migrate to RepositoryBuilder API and add namespace documentation (#392) (de8ff6d)
  • test: Clarify xdist must stay enabled for non-benchmark tests (9e9b260)
  • benchmark: Add fixture scope design for #171 (3eb7d48)
  • benchmark: Write implementation plan for fixture scope (#171) (0d0f93e)
  • test: Add fixture scope selection guidance (#171) (1529681)
  • limiter: Add Repository.open() design document (#404) (776029a)
  • Migrate remaining connect()/builder(args) references to open()/builder() (#404) (0ebb35b)
  • Simplify examples to use Repository.open() without stack/region (#404) (6eb1712)
  • Migrate README from connect() to open() and simplify examples (#404) (390c376)
  • guide: Use builder pattern for per-namespace on_unavailable examples (#404) (b38baab)
  • infra: Use builder pattern for namespace registration in deployment guide (#404) (038ca1d)
  • infra: Mention builder().build() also registers default namespace (#404) (2f58d24)
  • infra: Add declarative limits management design (#405) (8ac1110)
  • infra: Add declarative limits implementation plan (#405) (e76c0bc)
  • infra: Add declarative limits management documentation (#405) (0656eda)
  • Fix 29 stale/inaccurate items across 9 documentation files (2ecedee)
  • Fix stale documentation across 9 files for v0.10.0 namespace release (#411) (cc9fd6a)

Performance

  • benchmark: Add module-scoped moto fixtures and BenchmarkEntities (#171) (87c1e78)
  • benchmark: Switch test_throughput.py to pre-warmed entities (#171) (98e2872)
  • benchmark: Switch test_latency.py to pre-warmed entities (#171) (1c89e80)
  • benchmark: Switch test_operations.py to pre-warmed entities (#171) (729d3fb)
  • benchmark: Reduce pre-warmed entities from 100 to 15 (#171) (9924227)
  • benchmark: Module-scope fixtures for faster benchmark runs (#171) (#396) (0edbb57)

Refactoring

  • repository: Use secrets.token_urlsafe(8) for namespace IDs (1d3b340)
  • test: Migrate test fixtures to Repository-first pattern (#366) (83532a3)
  • repository: Add get_namespace() public method for CLI (d50be2b)
  • test: Extract shared fixtures to tests/fixtures/ package (#170) (8325b1a)
  • test: Add FileLock shared stacks and pytest_sessionfinish cleanup (#170) (d7a3c8e)
  • test: Remove unused SharedStack re-exports from conftest files (ef9b260)
  • test: Deduplicate remaining fixtures across conftest files (#170) (20ebc9d)
  • test: Remove unused fixture imports from conftest files (#170) (76a5e17)
  • test: Use pytest_plugins for fixture module registration (#170) (0805c21)
  • test: Extract shared fixtures to tests/fixtures/ package (#395) (1cbe2e3)
  • benchmark: Remove fixture scope plan doc (#171) (e413927)
  • test: Make aiobotocore patch an autouse session fixture (#173) (4d9cf16)
  • test: Make aiobotocore patch an autouse session fixture (#397) (eca1c42)
  • cli: Migrate remaining commands from constructor to connect() (6555b33)
  • repository: Migrate test fixtures to connect() and fix deprecation version to v1.0.0 (953aac6)
  • test: Migrate e2e/integration/benchmark tests from connect()/builder(args) to open()/builder() (#404) (378aef7)
  • models: Remove redundant burst field from Limit model (#406) (e17e3a5)
  • models: Remove redundant burst field from Limit model (#408) (b8800bb)
  • infra: Remove burst field from declarative limits (#405) (fd4beef)

Testing

  • schema: Add empty string edge case for parse_namespace (0048917)
  • repository: Add namespace scoping tests (7718102)
  • repository: Add coverage for version management and namespace edge cases (08d6875)
  • repository: Filter create_stack deprecation test by message (bf46375)
  • repository: Add coverage for on_unavailable in builder and namespace() (cf8afe4)
  • repository,limiter: Add coverage for deprecated params + delete_stack + resolve_on_unavailable (#366) (b3cee98)
  • repository,cli: Add coverage for namespace registry and CLI commands (5b6d0e2)
  • limiter: Add namespace isolation integration tests and update CLAUDE.md (#372) (08a87a6)
  • limiter: Add namespace isolation integration tests and update CLAUDE.md (#372) (#390) (4e0dc4f)
  • e2e: Add namespace multi-tenant lifecycle and CLI E2E tests (23d7aee)
  • e2e: Add namespace multi-tenant isolation and CLI integration tests (#394) (01ccc9d)
  • cli: Add coverage for NamespaceNotFoundError in _connect helper (95f11b3)
  • repository: Add test for open() re-raising non-ResourceNotFoundException errors (#404) (8179372)
  • repository: Add version check test for local endpoints and fix LocalStack doc (#404) (90f5068)
  • cli: Add tests for burst parameter in _parse_limit and _format_limit (9815661)
  • infra: Add integration tests for declarative limits provisioner (#405) (75a50f6)
  • infra: Add coverage for provisioner builder, stack manager, and CLI (#405) (526a918)
  • infra: Cover remaining uncovered lines in provisioner and CLI (#405) (2a522dd)
  • infra: Add integration and AWS e2e tests for provisioner handler (#405) (cf3ac77)
  • infra: Add true CFN e2e test for Custom::ZaeLimiterLimits (#405) (4a46c5d)

Miscellaneous Tasks

  • Use uv run python in verify-sync-generated pre-commit hook (9566d34)

CI

  • Skip integration and e2e tests on draft PRs (c2792e1)
  • Skip integration and e2e tests on draft PRs (#377) (68207b1)
  • Make benchmark-localstack a manual-only job (5c1facf)
  • Make benchmark-localstack a manual-only job (#388) (91b3348)
  • benchmark: Enable LocalStack benchmarks by default (867449b)
  • Retrigger CI after flaky namespace ID test (#173) (467ddc6)
  • Add uv.lock to ci-tests paths filter (e47cad6)
  • Add uv.lock to ci-tests paths filter (#413) (d81c678)

Security

  • deps: Bump flask from 3.1.2 to 3.1.3 (#412) (2a06067)
  • deps: Bump werkzeug from 3.1.5 to 3.1.6 (#414) (7dd1763)

Build

  • deps: Bump flask from 3.1.2 to 3.1.3 (856ac69)
  • deps: Bump werkzeug from 3.1.5 to 3.1.6 (f5737da)