[project] name = "tradingagents" version = "0.1.0" description = "Multi-Agents LLM Financial Trading Framework" readme = "README.md" requires-python = ">=3.13" dependencies = [ "backtrader>=1.9.78.123", "chainlit>=2.5.5", "chromadb>=1.0.12", "eodhd>=1.0.32", "feedparser>=6.0.11", "finnhub-python>=2.4.23", "langchain-anthropic>=0.3.15", "langchain-experimental>=0.3.4", "langchain-google-genai>=2.1.5", "langchain-openai>=0.3.23", "langgraph>=0.4.8", "pandas>=2.3.0", "parsel>=1.10.0", "praw>=7.8.1", "python-dotenv>=1.1.0", "pytz>=2025.2", "questionary>=2.1.0", "redis>=6.2.0", "requests>=2.32.4", "rich>=14.0.0", "setuptools>=80.9.0", "stockstats>=0.6.5", "tqdm>=4.67.1", "tushare>=1.4.21", "typer>=0.12.0", "typing-extensions>=4.14.0", "yfinance>=0.2.63", "TA-Lib>=0.4.28", "newspaper4k>=0.9.3", ] [project.optional-dependencies] dev = [ "pytest>=8.0.0", "pytest-cov>=5.0.0", "pytest-asyncio>=0.24.0", "ruff>=0.8.0", "pyright>=1.1.390", ] [project.scripts] tradingagents = "cli.main:app" [build-system] requires = ["setuptools>=61.0", "wheel"] build-backend = "setuptools.build_meta" [tool.ruff] line-length = 88 target-version = "py310" extend-exclude = [ "migrations", "venv", ".venv", "build", "dist", "*.egg-info", ] [tool.ruff.lint] select = [ "E", # pycodestyle errors "W", # pycodestyle warnings "F", # pyflakes "I", # isort "B", # flake8-bugbear "C4", # flake8-comprehensions "UP", # pyupgrade "ARG", # flake8-unused-arguments "SIM", # flake8-simplify "TCH", # flake8-type-checking ] ignore = [ "E501", # line too long, handled by formatter "B008", # do not perform function calls in argument defaults "C901", # too complex "ARG002", # unused method argument "ARG001", # unused function argument ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401"] # unused imports in __init__.py "tests/**/*" = ["ARG", "SIM"] # test files can be more flexible [tool.ruff.lint.isort] known-first-party = ["tradingagents", "cli"] [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto" [tool.pyright] include = ["tradingagents", "cli", "main.py"] exclude = [ "**/__pycache__", "**/node_modules", ".venv", "venv", "build", "dist", ] pythonVersion = "3.10" pythonPlatform = "All" typeCheckingMode = "standard" reportMissingImports = true reportMissingTypeStubs = false reportGeneralTypeIssues = true reportOptionalMemberAccess = true reportOptionalCall = true reportOptionalIterable = true reportOptionalContextManager = true reportOptionalOperand = true reportTypedDictNotRequiredAccess = false reportPrivateImportUsage = false reportUnknownParameterType = false reportUnknownArgumentType = false reportUnknownLambdaType = false reportUnknownVariableType = false reportUnknownMemberType = false [tool.pytest.ini_options] minversion = "6.0" addopts = "-ra -q --strict-markers --strict-config" python_files = ["test_*.py", "*_test.py"] python_classes = ["Test*"] python_functions = ["test_*"] markers = [ "slow: marks tests as slow (deselect with '-m \"not slow\"')", "integration: marks tests as integration tests", "unit: marks tests as unit tests", ] [dependency-groups] dev = [ "pytest>=8.4.1", "pytest-asyncio>=1.1.0", "pytest-cov>=6.2.1", "pytest-vcr>=1.0.2", "ruff>=0.12.5", ]