- Required for SQLAlchemy PostgreSQL connections - Fixes: ModuleNotFoundError: No module named 'psycopg2'
96 lines
1.9 KiB
TOML
96 lines
1.9 KiB
TOML
[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-only transparency tool"
|
||
readme = "README.md"
|
||
requires-python = ">=3.10"
|
||
license = {text = "MIT"}
|
||
authors = [
|
||
{name = "POTE Research", email = "research@example.com"}
|
||
]
|
||
dependencies = [
|
||
"sqlalchemy>=2.0",
|
||
"alembic>=1.13",
|
||
"psycopg2-binary>=2.9",
|
||
"pydantic>=2.0",
|
||
"pydantic-settings>=2.0",
|
||
"pandas>=2.0",
|
||
"numpy>=1.24",
|
||
"httpx>=0.25",
|
||
"yfinance>=0.2.35",
|
||
"python-dotenv>=1.0",
|
||
"click>=8.1",
|
||
]
|
||
|
||
[project.optional-dependencies]
|
||
dev = [
|
||
"pytest>=7.4",
|
||
"pytest-cov>=4.1",
|
||
"pytest-asyncio>=0.21",
|
||
"ruff>=0.1",
|
||
"black>=23.0",
|
||
"mypy>=1.7",
|
||
"ipython>=8.0",
|
||
]
|
||
analytics = [
|
||
"scikit-learn>=1.3",
|
||
"matplotlib>=3.7",
|
||
"plotly>=5.18",
|
||
]
|
||
api = [
|
||
"fastapi>=0.104",
|
||
"uvicorn[standard]>=0.24",
|
||
]
|
||
|
||
[tool.setuptools.packages.find]
|
||
where = ["src"]
|
||
|
||
[tool.black]
|
||
line-length = 100
|
||
target-version = ["py310", "py311"]
|
||
|
||
[tool.ruff]
|
||
line-length = 100
|
||
target-version = "py310"
|
||
|
||
[tool.ruff.lint]
|
||
select = [
|
||
"E", # pycodestyle errors
|
||
"W", # pycodestyle warnings
|
||
"F", # pyflakes
|
||
"I", # isort
|
||
"B", # flake8-bugbear
|
||
"C4", # flake8-comprehensions
|
||
"UP", # pyupgrade
|
||
]
|
||
ignore = [
|
||
"E501", # line too long (handled by black)
|
||
]
|
||
|
||
[tool.ruff.lint.per-file-ignores]
|
||
"__init__.py" = ["F401"]
|
||
"tests/*.py" = ["B011"] # allow assert False in tests
|
||
|
||
[tool.mypy]
|
||
python_version = "3.10"
|
||
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 --tb=short"
|
||
markers = [
|
||
"integration: marks tests as integration tests (require DB/network)",
|
||
"slow: marks tests as slow",
|
||
]
|
||
|