[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "tradingagents" version = "0.2.5" description = "TradingAgents: Multi-Agents LLM Financial Trading Framework" readme = "README.md" requires-python = ">=3.10" dependencies = [ "langchain-core>=0.3.81", "backtrader>=1.9.78.123", "langchain-anthropic>=0.3.15", "langchain-experimental>=0.3.4", "langchain-google-genai>=4.0.0", "langchain-openai>=0.3.23", "langgraph>=0.4.8", "langgraph-checkpoint-sqlite>=2.0.0", "pandas>=2.3.0", "parsel>=1.10.0", "python-dotenv>=1.0.0", "pytz>=2025.2", "questionary>=2.1.0", "redis>=6.2.0", "requests>=2.32.4", "rich>=14.0.0", "typer>=0.21.0", "setuptools>=80.9.0", "stockstats>=0.6.5", "tqdm>=4.67.1", "typing-extensions>=4.14.0", "yfinance>=1.4.1", ] [project.optional-dependencies] dev = [ "ruff>=0.15", "pytest>=8.0", "pytest-subtests>=0.13", ] # Amazon Bedrock support (AWS SigV4 auth + boto3). Optional so the core install # stays lean: pip install "tradingagents[bedrock]". bedrock = [ "langchain-aws>=1.5.0", ] [project.scripts] tradingagents = "cli.main:app" [tool.setuptools.packages.find] include = ["tradingagents*", "cli*"] [tool.setuptools.package-data] cli = ["static/*"] [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-ra --strict-markers" markers = [ "unit: fast isolated unit tests", "integration: tests requiring external services", "smoke: quick sanity-check tests", ] filterwarnings = [ "ignore::DeprecationWarning", ] [tool.ruff] line-length = 100 target-version = "py310" extend-exclude = ["results", "worklog"] [tool.ruff.lint] # Standard "good defaults" rule set (pyflakes + pycodestyle + isort + bugbear + # pyupgrade + comprehensions/simplify). Line length (E501) and layout are owned # by the formatter; whole-repo `ruff format` adoption is deferred until the # open-PR backlog clears, to avoid mass merge conflicts. select = ["E", "W", "F", "I", "B", "UP", "C4", "SIM"] ignore = ["E501"] [tool.ruff.lint.per-file-ignores] "**/__init__.py" = ["F401"] # intentional re-exports [tool.ruff.lint.isort] # Keep multiple aliased names from one module in a single combined import block # (e.g. the vendor re-exports in interface.py) instead of one statement per name. combine-as-imports = true