Spaces:
Sleeping
Sleeping
| [tool.poetry] | |
| name = "finresearch-ai" | |
| version = "1.0.0" | |
| description = "Multi-Agent Financial Research System powered by CrewAI" | |
| authors = ["Yan Cotta <yan.cotta@example.com>"] | |
| readme = "README.md" | |
| license = "MIT" | |
| packages = [{ include = "src" }] | |
| keywords = ["finance", "ai", "agents", "crewai", "research", "fastapi"] | |
| classifiers = [ | |
| "Development Status :: 4 - Beta", | |
| "Environment :: Console", | |
| "Environment :: Web Environment", | |
| "Framework :: FastAPI", | |
| "Intended Audience :: Financial and Insurance Industry", | |
| "License :: OSI Approved :: MIT License", | |
| "Operating System :: OS Independent", | |
| "Programming Language :: Python :: 3", | |
| "Programming Language :: Python :: 3.11", | |
| "Programming Language :: Python :: 3.12", | |
| "Topic :: Office/Business :: Financial :: Investment", | |
| "Typing :: Typed", | |
| ] | |
| [tool.poetry.dependencies] | |
| python = ">=3.11,<=3.13" | |
| # CrewAI Framework | |
| crewai = "^0.86.0" | |
| crewai-tools = "^0.17.0" | |
| # LLM Integration | |
| langchain-openai = "^0.2.14" | |
| openai = "^1.58.0" | |
| # Financial Data | |
| yfinance = "^0.2.51" | |
| # News Search | |
| duckduckgo-search = "^6.3.7" | |
| # Vector Memory | |
| chromadb = "^0.5.23" | |
| # Configuration & Validation | |
| pydantic = "^2.10.3" | |
| pydantic-settings = "^2.6.1" | |
| python-dotenv = "^1.0.1" | |
| pyyaml = "^6.0.2" | |
| # Web Server (FastAPI) | |
| fastapi = "^0.115.0" | |
| uvicorn = { version = "^0.32.0", extras = ["standard"] } | |
| python-multipart = "^0.0.18" | |
| [tool.poetry.group.dev.dependencies] | |
| # Testing | |
| pytest = "^8.3.4" | |
| pytest-cov = "^6.0.0" | |
| pytest-asyncio = "^0.24.0" | |
| pytest-mock = "^3.14.0" | |
| # Code Quality | |
| black = "^24.10.0" | |
| isort = "^5.13.2" | |
| ruff = "^0.8.3" | |
| mypy = "^1.13.0" | |
| # Type Stubs | |
| types-pyyaml = "^6.0.12" | |
| types-requests = "^2.32.0" | |
| [tool.poetry.scripts] | |
| finresearch = "main:main" | |
| [build-system] | |
| requires = ["poetry-core>=1.9.0"] | |
| build-backend = "poetry.core.masonry.api" | |
| # ============================================================================ | |
| # Tool Configuration | |
| # ============================================================================ | |
| [tool.black] | |
| line-length = 100 | |
| target-version = ["py311", "py312"] | |
| include = '\.pyi?$' | |
| extend-exclude = ''' | |
| /( | |
| \.git | |
| | \.venv | |
| | \.chroma_db | |
| | __pycache__ | |
| | reports | |
| )/ | |
| ''' | |
| [tool.isort] | |
| profile = "black" | |
| line_length = 100 | |
| known_first_party = ["src"] | |
| skip = [".venv", ".chroma_db", "reports"] | |
| [tool.ruff] | |
| line-length = 100 | |
| target-version = "py311" | |
| exclude = [ | |
| ".git", | |
| ".venv", | |
| ".chroma_db", | |
| "__pycache__", | |
| "reports", | |
| ] | |
| [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 | |
| ] | |
| ignore = [ | |
| "E501", # line too long (handled by black) | |
| "B008", # do not perform function calls in argument defaults | |
| "B904", # raise without from in except | |
| ] | |
| [tool.mypy] | |
| python_version = "3.11" | |
| warn_return_any = true | |
| warn_unused_ignores = true | |
| disallow_untyped_defs = true | |
| disallow_incomplete_defs = true | |
| check_untyped_defs = true | |
| ignore_missing_imports = true | |
| exclude = [ | |
| ".venv", | |
| ".chroma_db", | |
| "reports", | |
| ] | |
| [tool.pytest.ini_options] | |
| testpaths = ["tests"] | |
| python_files = ["test_*.py"] | |
| python_classes = ["Test*"] | |
| python_functions = ["test_*"] | |
| addopts = [ | |
| "-v", | |
| "--strict-markers", | |
| "--tb=short", | |
| "--cov=src", | |
| "--cov-report=term-missing", | |
| "--cov-report=html:reports/coverage", | |
| ] | |
| markers = [ | |
| "unit: Unit tests (no external dependencies)", | |
| "integration: Integration tests (may require network)", | |
| "slow: Slow tests (deselect with -m 'not slow')", | |
| ] | |
| filterwarnings = [ | |
| "ignore::DeprecationWarning", | |
| "ignore::PendingDeprecationWarning", | |
| ] | |
| [tool.coverage.run] | |
| source = ["src"] | |
| omit = [ | |
| "*/tests/*", | |
| "*/__pycache__/*", | |
| ] | |
| [tool.coverage.report] | |
| exclude_lines = [ | |
| "pragma: no cover", | |
| "def __repr__", | |
| "raise NotImplementedError", | |
| "if TYPE_CHECKING:", | |
| "if __name__ == .__main__.:", | |
| ] | |