[project] name = "zhixing-server" version = "0.1.0" description = "FastAPI backend and quantitative processing foundation for Zhixing System" readme = "README.md" requires-python = ">=3.12,<3.13" dependencies = [ "alembic>=1.18.0", "fastapi>=0.141.1", "numpy>=2.4.0", "pandas>=2.3.3", "psycopg[binary,pool]>=3.3.2", "pydantic-settings>=2.14.2", "sqlalchemy>=2.0.46", "tushare>=1.4.24", "uvicorn[standard]>=0.52.1", ] [dependency-groups] dev = [ "httpx2>=2.9.1", "pandas-stubs>=2.3.2.250926", "pyright>=1.1.411", "pytest>=9.1.1", "pytest-cov>=7.1.0", "ruff>=0.16.1", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/zhixing_server"] [project.scripts] market-data-sync = "zhixing_server.modules.market_data.presentation.cli:main" [tool.pytest.ini_options] addopts = "-ra --strict-config --strict-markers" pythonpath = ["src"] testpaths = ["tests"] markers = ["integration: requires a PostgreSQL test database"] [tool.pyright] include = ["src", "tests"] extraPaths = ["src"] pythonVersion = "3.12" typeCheckingMode = "strict" venvPath = "." venv = ".venv" [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["B", "E", "F", "I", "SIM", "UP"] [tool.ruff.format] quote-style = "double"