[build-system] requires = ["setuptools>=65.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "pote" version = "0.1.0" description = "Public Officials Trading Explorer - research tool for congressional stock trading analysis" readme = "README.md" requires-python = ">=3.11" license = { text = "MIT" } authors = [{ name = "POTE Team" }] dependencies = [ "sqlalchemy>=2.0", "alembic>=1.12", "pydantic>=2.0", "pydantic-settings>=2.0", "python-dotenv>=1.0", "requests>=2.31", "pandas>=2.0", "numpy>=1.24", "yfinance>=0.2", "psycopg2-binary>=2.9", ] [project.optional-dependencies] dev = [ "pytest>=7.4", "pytest-cov>=4.1", "ruff>=0.1", "black>=23.0", "mypy>=1.5", ] [tool.setuptools.packages.find] where = ["src"] [tool.ruff] line-length = 100 target-version = "py311" select = ["E", "F", "W", "I", "N", "UP", "B", "A", "C4", "SIM", "RET"] ignore = ["E501"] # Line too long (handled by black) [tool.black] line-length = 100 target-version = ["py311"] [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = false ignore_missing_imports = true [tool.pytest.ini_options] testpaths = ["tests"] python_files = "test_*.py" python_classes = "Test*" python_functions = "test_*" addopts = "-v --strict-markers" [tool.coverage.run] source = ["src/pote"] omit = ["*/tests/*", "*/migrations/*"] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", ]