0fc6c68a99
Issue persistent signed anonymous IDs and accept cookie/token-bound events. Resolve verified email, phone, OAuth, and namespaced third-party IDs into transactionally merged master identities with historical event aliases. Protect shared-device account switching, tenant isolation, and event retries. Store sparse canonical profiles as PostgreSQL JSONB or local SQLite JSON. Support an optional versioned Cassandra wide-column projection through a transactional outbox, retry worker, and immediate canonical read fallback. Document deployment settings and provide opt-in database integration tests. Validation: 43 local tests passed; 6 external database tests skipped. Ruff checks, formatting, and offline uv lock verification passed.
31 lines
836 B
TOML
31 lines
836 B
TOML
[project]
|
|
name = "adcloud-server"
|
|
version = "0.1.0"
|
|
description = "AdCloud tracking and ad delivery backend for developers and coding agents"
|
|
readme = "README.md"
|
|
requires-python = ">=3.12"
|
|
dependencies = ["fastapi>=0.115,<1", "uvicorn>=0.30,<1", "sqlalchemy>=2.0,<3", "email-validator>=2.2,<3", "phonenumbers>=9,<10", "python-dotenv>=1,<2"]
|
|
|
|
[project.optional-dependencies]
|
|
postgres = ["psycopg[binary]>=3.2,<4"]
|
|
cassandra = ["cassandra-driver>=3.29,<4"]
|
|
|
|
[project.scripts]
|
|
adcloud-profiles = "adcloud_server.projection:main"
|
|
|
|
[dependency-groups]
|
|
dev = ["httpx>=0.27,<1", "pytest>=8,<10", "ruff>=0.9,<1"]
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["src/adcloud_server"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py312"
|