Files
atm/pyproject.toml
Claude Agent 424437ceaf fix(audit)+test: deadlock fix + lifecycle test + pytest-asyncio
AuditLog deadlock: log() held self._lock and called _open() which called
close() which tried to acquire self._lock again — RLock not needed,
refactored to _close_locked() (called while already holding lock).

pyproject.toml: pytest-asyncio + httpx in dev deps.

test_main.py:
- lifecycle integration test (MUST-HAVE): IDLE→ARMED→PRIMED→auto-poll
  starts→FIRE→auto-poll stops, asserts scheduler event order
- asyncio import for async test marker

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 10:54:10 +00:00

46 lines
855 B
TOML

[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "atm"
version = "0.1.0"
description = "M2D Trading Monitor — TradeStation chart watcher, Discord/Telegram notifier"
requires-python = ">=3.11"
dependencies = [
"numpy>=1.26",
"opencv-python>=4.9",
"pillow>=10.0",
"requests>=2.31",
"rich>=13.0",
]
[project.optional-dependencies]
windows = [
"mss>=9.0",
"pygetwindow>=0.0.9",
"pywin32>=306",
]
dev = [
"pytest>=8.0",
"pytest-cov>=5.0",
"pytest-asyncio>=0.23",
"httpx>=0.27",
]
[project.scripts]
atm = "atm.main:main"
[tool.setuptools.packages.find]
where = ["src"]
[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["src"]
[tool.pyright]
include = ["src"]
extraPaths = ["src"]
pythonVersion = "3.11"
reportMissingImports = true