TradingAgents/pyproject.toml

187 lines
4.0 KiB
TOML

[project]
name = "tradingagents"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
"akshare>=1.16.98",
"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",
"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",
"typing-extensions>=4.14.0",
"yfinance>=0.2.63",
]
[project.optional-dependencies]
test = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"pytest-mock>=3.10.0",
"pytest-asyncio>=0.21.0",
"pytest-timeout>=2.1.0",
"pytest-xdist>=3.0.0", # for parallel testing
"hypothesis>=6.70.0", # property-based testing
"factory-boy>=3.2.0", # test data factories
"responses>=0.23.0", # HTTP request mocking
"freezegun>=1.2.0", # time mocking
]
dev = [
"pytest>=7.0.0",
"pytest-cov>=4.0.0",
"pytest-mock>=3.10.0",
"pytest-asyncio>=0.21.0",
"pytest-timeout>=2.1.0",
"pytest-xdist>=3.0.0",
"hypothesis>=6.70.0",
"factory-boy>=3.2.0",
"responses>=0.23.0",
"freezegun>=1.2.0",
"mypy>=1.0.0",
"black>=23.0.0",
"isort>=5.12.0",
"flake8>=6.0.0",
"pre-commit>=3.0.0",
]
[build-system]
requires = ["setuptools>=61.0", "wheel"]
build-backend = "setuptools.build_meta"
[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = "test_*.py"
python_classes = "Test*"
python_functions = "test_*"
addopts = [
"--strict-markers",
"--strict-config",
"--verbose",
"--tb=short",
"--cov=tradingagents",
"--cov=cli",
"--cov-report=term-missing",
"--cov-report=html:htmlcov",
"--cov-report=xml",
]
markers = [
"unit: Fast unit tests",
"integration: Integration tests (slower)",
"api: Tests requiring API access",
"slow: Tests that take a long time",
]
filterwarnings = [
"ignore::DeprecationWarning",
"ignore::PendingDeprecationWarning",
"ignore::UserWarning:langchain.*",
"ignore::UserWarning:langgraph.*",
]
[tool.coverage.run]
source = ["tradingagents", "cli"]
omit = [
"*/tests/*",
"*/test_*",
"*/venv/*",
"*/.venv/*",
"*/__pycache__/*",
"setup.py",
]
branch = true
[tool.coverage.report]
show_missing = true
skip_covered = false
exclude_lines = [
"pragma: no cover",
"def __repr__",
"raise AssertionError",
"raise NotImplementedError",
"if __name__ == .__main__.:",
]
[tool.black]
line-length = 88
target-version = ["py310"]
include = '\.pyi?$'
extend-exclude = '''
(
/(
\.eggs # exclude a few common directories in the
| \.git # root of the project
| \.mypy_cache
| \.pytest_cache
| \.venv
| venv
| build
| dist
)/
)
'''
[tool.isort]
profile = "black"
line_length = 88
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
[tool.mypy]
python_version = "3.12"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false
disallow_any_generics = false
ignore_missing_imports = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true
strict_equality = true
files = ["tradingagents/", "cli/", "tests/"]
exclude = ["venv/", ".venv/", "__pycache__/", ".mypy_cache/"]
[[tool.mypy.overrides]]
module = [
"langchain.*",
"langgraph.*",
"pandas.*",
"yfinance.*",
"praw.*",
"finnhub.*",
"stockstats.*",
"backtrader.*",
"chromadb.*",
"chainlit.*",
"redis.*",
"questionary.*",
"rich.*",
"akshare.*",
"tushare.*",
]
ignore_missing_imports = true