The async-only direction was already the only one used in production: * create_storage never accepted mode=sync; build_storage_config always emitted mode=async; zero callers referenced StorageBackend / SyncData / S3StorageBackend.sync / LocalStorageBackend.sync anywhere. * Drop the parallel sync base class, the sync concrete classes in backends/local.py and backends/s3.py, and the boto3 dependency. * Drop example_usage.py (zero importers; demonstration code, not part of the public surface). * Rename LocalAsyncStorageBackend -> LocalStorageBackend, S3AsyncStorageBackend -> S3StorageBackend to reflect the single remaining class per type. * Tighten create_storage: any mode=... key now raises StorageConfigError with the new pointer (settings.storage_backend controls behavior). * Cleanup call sites: schedule.application.service.build_object_store no longer passes mode=async to create_storage. * Cosmetic touch-ups in backend/services/storage.py and common/config.py docstrings where they still said "boto3" instead of "S3 client". Public API surface preserved: AsyncStorageBackend / ObjectMeta / create_storage / build_storage_config / register_backend all keep their names and call signatures. backend tests: 136 passed.
34 lines
632 B
TOML
34 lines
632 B
TOML
[project]
|
|
name = "common"
|
|
version = "0.2.0"
|
|
requires-python = ">=3.12"
|
|
dependencies = [
|
|
"SQLAlchemy==2.0.51",
|
|
"greenlet>=3.0.0",
|
|
"apscheduler>=3.11.3",
|
|
"asyncmy==0.2.11",
|
|
"fastapi==0.116.1",
|
|
"pydantic-settings>=2.14.2",
|
|
"loguru>=0.7.2",
|
|
"passlib==1.7.4",
|
|
"bcrypt>=4.0,<4.1",
|
|
"aiofiles>=25.1.0",
|
|
"aioboto3>=15.5.0",
|
|
]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/common"]
|
|
|
|
[[tool.uv.index]]
|
|
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
|
|
default = true
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=9.1.1",
|
|
]
|