[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "acef" version = "0.1.0" description = "ACE-F v1 -- US Stock Event Swing Trading System" requires-python = ">=3.11" dependencies = [ "httpx>=0.27", "pydantic>=2.6", "pydantic-settings>=2.2", "sqlalchemy[asyncio]>=2.0", "asyncpg>=0.29", "alembic>=1.13", "structlog>=24.1", "python-dotenv>=1.0", "pyyaml>=6.0", "exchange-calendars>=4.5", "jsonschema>=4.21", "beautifulsoup4>=4.12", "tenacity>=8.2", "duckdb>=1.0", "pyarrow>=15.0", "alpaca-py>=0.28", "pytz>=2024.1", ] [project.optional-dependencies] web = [ "fastapi>=0.115", "uvicorn[standard]>=0.30", ] dev = [ "pytest>=8.0", "pytest-asyncio>=0.23", "pytest-httpx>=0.30", "pytest-cov>=5.0", "ruff>=0.3", "mypy>=1.9", "testcontainers[postgres]>=4.0", "types-pyyaml", "types-beautifulsoup4", ] [project.scripts] fithia2 = "apps.tracker.cli:main" [tool.hatch.build.targets.wheel] packages = ["apps", "libs"] [tool.ruff] line-length = 100 target-version = "py311" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B", "C4", "SIM"] ignore = ["E501"] [tool.mypy] python_version = "3.11" strict = true ignore_missing_imports = true [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] markers = [ "unit: unit tests (no external dependencies)", "integration: integration tests (requires postgres)", "replay: determinism and idempotency tests", ]