Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
93 lines (84 loc) · 2.66 KB
/
Copy pathpyproject.toml
File metadata and controls
93 lines (84 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
[build-system]
requires = ["setuptools>=69", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "uw-scan"
version = "0.13.38"
description = "Streamlit opportunity scanner for Unusual Whales data"
requires-python = ">=3.11"
dependencies = [
"httpx>=0.27,<1.0",
"pandas>=2.2",
"playwright>=1.44",
"pyarrow>=18.0",
"pydantic>=2.7",
"fastapi>=0.117,<1.0",
"uvicorn[standard]>=0.32,<1.0",
"APScheduler>=3.11,<4.0",
"tzdata>=2024.2",
"beautifulsoup4>=4.14.3",
"xlrd>=2.0.2",
"openpyxl>=3.1.5",
"pyyaml>=6.0",
"websockets>=12.0",
"scipy>=1.17.1",
"arch==8.0.0",
"statsmodels>=0.14",
]
[project.scripts]
# One entry point for verifying and controlling the local stack:
# uv run control-argon doctor | sync | smoke <ticker> | screenshot <name>
control-argon = "uw_scan.control_argon:main"
[project.optional-dependencies]
postgres = [
"psycopg[binary,pool]>=3.2",
]
[tool.ruff.format]
# Vendored VERBATIM from signal-lab (v13 density model) — bodies must stay
# byte-identical to source; the golden parity test pins behaviour. Never format.
# force-exclude makes the exclusion hold even when a hook passes the path explicitly.
exclude = [
"src/uw_scan/density/constants.py",
"src/uw_scan/density/cone.py",
"src/uw_scan/density/fit.py",
]
[tool.ruff]
force-exclude = true
[dependency-groups]
dev = [
"pytest>=8.2",
"pytest-playwright>=0.5",
"pytest-postgresql>=6",
"ruff>=0.5",
"pytest-asyncio>=0.24,<1.0",
# Integration suite is sharded by recorded per-test duration (pytest-split) and
# parallelised within each shard across cores (pytest-xdist). See tests/integration
# conftest per-worker DB isolation + .github/workflows/ci.yml.
"pytest-xdist>=3.6",
"pytest-split>=0.9",
]
# Notebook/plotting tooling for docs/research/*.ipynb (not needed by the app/worker).
research = [
"matplotlib>=3.8",
"nbconvert>=7",
"nbformat>=5",
"ipykernel>=6",
]
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
"uw_scan.cards" = ["data/*.json", "data/*.md"]
# The frozen v13 research panel is read at RUNTIME (density/forecast.py hashes it and
# checks the DB series against it before publishing a cone), so it must ship in the
# wheel — without it the container refuses every run on the digest check.
"uw_scan.density" = ["data/*.parquet"]
# Vendored S&P 500 list for sector RS breadth, read at RUNTIME by
# sources/sp500_members.py; must ship in the wheel.
"uw_scan.sources" = ["data/*.json"]
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src", "."]
markers = [
"integration: requires local Postgres/integration fixtures; run in CI shards",
"live: hits the real UW API; requires UW_SCAN_API_KEY",
]