Callosum is an asyncio-based RPC library for Python that supports multiple transport backends (ZeroMQ, Redis, Thrift).
This project uses uv as the package manager.
uv sync --extra zeromq --extra redis --extra thrift# Run all tests
uv run pytest
# Run specific test file
uv run pytest tests/test_rpc.py -v
# Run specific test
uv run pytest tests/test_rpc.py::test_external_context_injection -vuv run mypy src/callosumuv run ruff check src/
uv run ruff format src/src/callosum/
├── lower/ # Transport layer (zeromq, redis)
│ ├── __init__.py # BaseTransport, AbstractBinder, AbstractConnector
│ ├── zeromq.py # ZeroMQ transport implementation
│ └── redis.py # Redis transport implementation
├── rpc/ # RPC layer
│ ├── channel.py # Peer class (main RPC interface)
│ ├── message.py # RPC message types
│ └── exceptions.py
├── auth.py # Authentication (CURVE for ZeroMQ)
├── ordering.py # Async schedulers
└── serial.py # Serialization utilities
Peer(rpc/channel.py): Main RPC interface for both client and serverZeroMQBaseTransport(lower/zeromq.py): ZeroMQ transport with context managementZeroMQRPCTransport: RPC-specific transport using ROUTER/DEALER sockets
Defined in pyproject.toml under [project.optional-dependencies]:
zeromq: pyzmq for ZeroMQ transportredis: redis-py for Redis transportthrift: thriftpy2 for Thrift serializationsnappy: python-snappy for compression