Why?
A service's own contract says what it is for — a logger logs, a lock locks, a bus dispatches. This package holds the other kind: what something built by a container must answer to so the container can manage it, whatever it is for.
Keeping the two apart matters. reset() is not a logging idea, so a logging contract that ships
it makes every consumer of that contract inherit a concern belonging to the container. Here it is
declared once, and any contract or library that needs it depends on a package with no
dependencies at all.
That last part is the whole design: this is a leaf, and it should stay one. Every other contract package in the ecosystem is free to depend on it, which only remains true while nothing here can drag anything in.
Install
uv add xtr-service-contracts
Requires Python 3.11+.
ResettableInterface
@runtime_checkable
class ResettableInterface(Protocol):
def reset(self) -> None: ...
A long-running process — a worker consuming messages, a server answering requests — builds its
services once and uses them many times. Buffers, caches, accumulated state and generated ids
belong to one unit of work rather than to the service holding them. reset() ends that unit, so
the next starts clean while configuration survives:
from xtr_service_contracts import ResettableInterface
class Buffer:
def __init__(self, capacity: int) -> None:
self.capacity = capacity # configuration — survives
self.items: list[str] = [] # this unit of work — does not
def reset(self) -> None:
self.items.clear()
assert isinstance(Buffer(10), ResettableInterface)
The protocol is structural and @runtime_checkable, so nothing has to inherit from it — a class
that already has a reset() satisfies it as it stands. A container is the usual caller: it knows
what it built, so it can reset whatever asks for it between units of work, and neither side has
to know anything else about the other.
for service in container.services:
if isinstance(service, ResettableInterface):
service.reset()
Who uses it
| Package | Uses it for |
|---|---|
| xtr-logging | Buffered and fingers-crossed handlers, generated ids, and LoggerFactory.reset() between requests or messages |
Development
Developed in the python-xtr monorepo, under
packages/xtr-service-contracts; run the commands below from there. The python-xtr-service-contracts repository is a
read-only copy, so send issues and pull requests to the monorepo.
uv sync
uv run ruff check . && uv run ruff format --check .
uv run basedpyright
uv run ty check
uv run pytest
License
MIT — see LICENSE.
Release files for xtr-service-contracts 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xtr_service_contracts-1.0.0.tar.gz | 4.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xtr_service_contracts-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 10.0 kB
Release files / xtr_service_contracts-1.0.0.tar.gz
| Download URL | xtr_service_contracts-1.0.0.tar.gz |
|---|---|
| Size | 4.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a7fe42fd4b896a2fc487539bb5f3dd60caeab140b1eb55330236cd0430524bc6
|
|
BLAKE2b-256 checksum How to use checksums |
2068bbd7e75d918c67dec437095ee58b423c546d87c77754451562372dbee412
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency logRelease files / xtr_service_contracts-1.0.0-py3-none-any.whl
| Download URL | xtr_service_contracts-1.0.0-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
af4dc34250fb89643a233aa6849643da56d41ee802559e9b795c5fbdb60437eb
|
|
BLAKE2b-256 checksum How to use checksums |
b8f88f7d16893f031a450e2817380f705b4372725dbca3a94a619f6f8fbe0c83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 25, 2026.
Transparency log