POTE/pyproject.toml
ilia bd3f7097bd
Some checks failed
CI / lint-and-test (push) Successful in 2m32s
CI / secret-scanning (push) Successful in 1m33s
CI / security-scan (push) Successful in 2m13s
CI / dependency-scan (push) Successful in 1m38s
CI / sast-scan (push) Successful in 2m39s
CI / container-scan (push) Successful in 2m13s
CI / sonar-analysis (push) Failing after 3m11s
CI / docker-build-test (push) Failing after 2m31s
CI / workflow-summary (push) Successful in 1m31s
Fix CI pipeline issues: missing httpx, Python in sonar job, Dockerfile
FIXES:
======
1.  Added httpx to dependencies
   - Required by house_watcher.py
   - Fixes: ModuleNotFoundError: No module named 'httpx'

2.  Install Python/pip in sonar-analysis job
   - Ubuntu container doesn't have Python by default
   - Fixes: pip: not found error

3.  Remove README.md from Dockerfile
   - README.md is excluded by .dockerignore
   - Not needed for container to run
   - Fixes: Docker build error

CHANGES:
========
- pyproject.toml: Added httpx>=0.24 to dependencies
- ci.yml: Added Python/pip installation step before coverage
- Dockerfile: Removed README.md copy (excluded by .dockerignore)
- .dockerignore: Kept *.md exclusion (docs not needed in container)

All CI jobs should now pass!
2026-01-10 14:17:11 -05:00

76 lines
1.6 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 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",
"httpx>=0.24",
"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__.:",
]