Repository navigation
Releases: cokeSchlumpf/lib--python-commons
Release list
v1.6.1
1.6.1 (2026-11-03)
Highlights
Pluralization of words ending in -is was fixed so they now form correct plurals (e.g. analysis → analyses), which prevents incorrectly derived table names for ORM classes. Tests were added for the pluralize function and for derived entity/history table names. Known apps are unaffected because the only ORM classes ending in -is set tablename explicitly; apps that relied on the old incorrect derived names should pin the name with tablename.
Bug Fixes
v1.6.0
v1.5.0
1.5.0 (2026-11-01)
Highlights
Adds NVARCHAR-based Unicode column types used for name and display-name fields on Azure SQL to prevent non-Latin characters being stored as question marks. Existing tables remain VARCHAR until you convert them (no breakage), and the docs include guidance and an ALTER TABLE recipe; tests covering SQL Server, SQLite DDL and a non-Latin-1 round trip were added.
Features
v1.4.0
v1.3.0
v1.2.0
v1.1.0
1.1.0 (2026-11-01)
Highlights
IDs created by commons now use time-ordered UUIDv7 strings via a new public function, new_id(), so primary keys are appended to indexes and carry their creation time. There are no schema or data changes and existing IDs remain valid, but UUIDv7 has fewer random bits so treat IDs-as-secrets with caution before upgrading.
Features
v1.0.0
1.0.0 (2026-10-31)
Highlights
This release introduces two reusable event packages — commons.events (transactional outbox, at-least-once delivery) and commons.streams (short-lived live streams, at-most-once delivery) — allowing apps and libraries to share outbox, relay, background workers and live-streams backends. Event IDs are time-ordered UUIDv7 and the package now requires Python 3.14. See the Migration section for upgrade steps.
⚠ BREAKING CHANGES
- Add event patterns and require Python 3.14 (#18)
Features
Pull requests
#18: feat!: Add event patterns and require Python 3.14
Adds two event patterns to commons as reusable packages. Until now app--beleglotse and lib--conversations each had their own copy. An app and the libraries it uses can now share one outbox, one relay, one set of background workers and one live-streams backend. Event ids are time-ordered UUIDv7 from the standard library, so commons now requires Python 3.14.
commons.events: the transactional outbox, delivered at least once.Event,EventEnvelope, and the portsOutbox,HasOutbox,EventPublisher,EventSubscriber,EventConsumer.SqlOutbox, on the tableoutbox_events.OutboxRelay,LogBrokerwithInMemoryEventLogandFileEventLog,BackgroundWorkers,CommitNotifyingUnitOfWorkFactory.EventsSettings([app.events]) andbackground_workers_from_settings.
commons.streams: short-lived live streams, delivered at most once:LiveStreams,InMemoryLiveStreams,TypedLiveStreams,Codec,PydanticCodec.- Python 3.14:
requires-python = ">=3.14, <4.0", and the check and docs workflows run on 3.14. This needscore--devops-workflows1.0.2 (Poetry 2.5.1). - Docs: new pages "Events" and "Live streams".
The code comes from lib--conversations, with its behavior and tests.
- Intent: changes/03--closed/T-001--event-patterns/intent.md
- Spec and outcome: changes/03--closed/T-001--event-patterns/spec.md
Migration
commons 1.0.0 requires Python 3.14 and is released on versions/1. versions/0 stays at 0.2.1 for projects on older Python. To move:
- Raise the project's
requires-pythonto>=3.14, <4.0. - Reference
commonsonbranch = "versions/1". - If CI uses the shared
python-check.yml/python-docs.yml, passpython-version: "3.14". Theirversions/1already uses Poetry 2.5.1.
Nothing else in the public API changed.
After merging
Merge the Release PR (1.0.0). Then migrate lib--conversations (its T-008) and app--beleglotse to commons.events/commons.streams in their own repositories.
v0.2.1
0.2.1 (2026-10-25)
Highlights
LoginTokenService gains request_id_for_link(link_token), which returns the request id a login link belongs to without redeeming the link. This lets web apps auto-login when the requesting browser opens the link while keeping single-use links safe from mail scanners; the lookup is read-only and returns None for unknown, redeemed, or expired links.