Common Module
Shared utilities and models for the TL;DR.tv platform.
Structure
common/
├── src/common/
│ ├── core/ # Core functionality (config, exceptions, dependencies)
│ ├── dao/ # Data Access Objects
│ ├── database/ # Database connectivity
│ ├── logging/ # Logging configuration
│ ├── message/ # Message queue models
│ ├── models/ # Domain models
│ ├── platform/ # Platform-specific APIs (Twitch, Kick)
│ └── utils/ # Utility functions
└── tests/
├── unit/ # Unit tests
└── integration/ # Integration tests
Installation
The common module is part of the uv workspace and is automatically available to other services.
For development:
uv pip install -e common
Usage
Data Access Objects (DAOs)
from common.dao import UserDAO, StreamDAO, ClipDAO
from common.database import Db, DBConfig
# Initialize database
db = Db(DBConfig())
# Create DAOs
user_dao = UserDAO(db)
stream_dao = StreamDAO(db)
clip_dao = ClipDAO(db)
Platform APIs
from common.platform.twitch import TwitchApi, TwitchApiConfig
from common.platform.kick import KickApi, KickApiConfig
# Initialize APIs
twitch_api = TwitchApi(config=TwitchApiConfig())
kick_api = KickApi(config=KickApiConfig())
Message Models
from common.message import StreamOnlineMessage, StreamOfflineMessage
# Create messages for RabbitMQ
message = StreamOnlineMessage(
stream_id="12345",
user_id=67890,
platform="twitch",
started_at=datetime.now()
)
Exception Handling
from common.core.exceptions import (
DatabaseError,
TwitchError,
KickError,
ValidationError,
RateLimitError
)
try:
# Database operation
user = await user_dao.get_user_by_id(user_id)
except DatabaseError as e:
logger.error(f"Database error: {e}")
Testing
Run all tests:
uv run pytest common/tests/
Run unit tests only:
uv run pytest common/tests/unit/
Run integration tests:
uv run pytest common/tests/integration/
Type Checking
The module includes type information (py.typed). Run type checking with:
uv run ty check common/
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
tldr_common-2.0.16.tar.gz
(135.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
tldr_common-2.0.16-py3-none-any.whl
(164.6 kB
view details)
File details
Details for the file tldr_common-2.0.16.tar.gz.
File metadata
- Download URL: tldr_common-2.0.16.tar.gz
- Upload date:
- Size: 135.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bba490f6bf1a7f29941f3a9b5e3343e9f1a95e5c20b27541aaeb24d9637ba50
|
|
| MD5 |
432bcbbb9fcb3620fe36164503ac2373
|
|
| BLAKE2b-256 |
341d9250e4e45bf2a841d849c3438eab1df6c6a27a485b02be02efad5f9e583a
|
File details
Details for the file tldr_common-2.0.16-py3-none-any.whl.
File metadata
- Download URL: tldr_common-2.0.16-py3-none-any.whl
- Upload date:
- Size: 164.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
147e39dd700c91e85ea576678cda016498fbf57e7610035ac5abbd23a45ef67a
|
|
| MD5 |
40d87e94a2ffe4e15c2d7f3bd5376438
|
|
| BLAKE2b-256 |
0076716cb7614e18accf7f112a8b8f52b908aa5c9b8c5419d2de56f2987a8234
|