[project] name = "han-bitrix-sync" version = "0.1.0" description = "Durable HAN App to Bitrix24 Contact synchronization" requires-python = ">=3.12" dependencies = [ "alembic>=1.16,<2", "asyncpg>=0.30,<1", "fastapi>=0.116,<1", "httpx>=0.28,<1", "opentelemetry-api>=1.36,<2", "opentelemetry-exporter-otlp-proto-grpc>=1.36,<2", "opentelemetry-instrumentation-fastapi>=0.57b0,<1", "opentelemetry-instrumentation-httpx>=0.57b0,<1", "opentelemetry-instrumentation-sqlalchemy>=0.57b0,<1", "opentelemetry-sdk>=1.36,<2", "pydantic-settings>=2.10,<3", "python-multipart>=0.0.20,<1", "sqlalchemy[asyncio]>=2.0.41,<3", "structlog>=25,<26", "uvicorn[standard]>=0.35,<1", ] [project.optional-dependencies] dev = [ "pytest>=8.4,<9", "pytest-asyncio>=1.0,<2", "ruff>=0.12,<1", ] [project.scripts] han-bitrix-sync-api = "app.main:run" han-bitrix-sync-worker = "app.worker:run" han-bitrix-sync-reconciliation = "app.reconciliation:run" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["app"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] [tool.ruff] target-version = "py312" line-length = 100 [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "ASYNC", "S"] ignore = ["S101"] [tool.ruff.lint.per-file-ignores] "tests/**" = ["S106", "S311"]