[project] name = "stock_chart_site_backend" version = "0.0.1" description = "Stock chart + prediction backend (FastAPI + Chronos + LightGBM + KR-FinBERT)" requires-python = ">=3.11,<3.13" dependencies = [ # web "fastapi==0.111.0", "uvicorn[standard]==0.30.0", "pydantic==2.7.1", "pydantic-settings==2.3.0", # db "sqlalchemy==2.0.30", "psycopg[binary]==3.1.19", "alembic==1.13.1", # data "pandas==2.2.2", "numpy==1.26.4", "pykrx==1.0.45", "yfinance==0.2.40", "feedparser==6.0.11", "requests==2.32.3", "httpx==0.27.0", "beautifulsoup4==4.12.3", "lxml==5.2.2", # ml "transformers==4.41.2", "tokenizers==0.19.1", "sentencepiece==0.2.0", "accelerate==0.30.1", "chronos-forecasting==1.4.1", "scikit-learn==1.5.0", "lightgbm==4.3.0", "ta==0.11.0", "joblib==1.4.2", # scheduler "apscheduler==3.10.4", "pytz==2024.1", # utils "python-dotenv==1.0.1", "loguru==0.7.2", "tenacity==8.3.0", ] [project.optional-dependencies] dev = [ "pytest==8.2.1", "ruff==0.4.7", "mypy==1.10.0", ] [build-system] requires = ["setuptools>=68"] build-backend = "setuptools.build_meta" [tool.setuptools.packages.find] where = ["."] include = ["app*"] [tool.ruff] line-length = 100 target-version = "py311" [tool.mypy] python_version = "3.11" strict_optional = true warn_unused_ignores = true warn_redundant_casts = true warn_unreachable = true ignore_missing_imports = true # 3rd-party stub 부족 무시 (pykrx, chronos, ta, feedparser ...) no_implicit_optional = true show_error_codes = true exclude = ["build", "dist", ".venv"] [[tool.mypy.overrides]] module = ["app.*"] disallow_untyped_defs = false # 점진적 도입. 핵심 모듈만 strict 로 올릴 예정. check_untyped_defs = true