The repo has tests but nothing that runs them, and no agreed way to run them.
Current state
- No CI. There is no
.github/workflows directory, so nothing runs on push or PR.
- pytest is not declared.
tests/test_byoc_refresh.py and tests/test_byoc_training.py are pytest modules, but pytest appears in neither dependencies nor the dev extra, so uv run pytest fails on a clean checkout. Both files have been effectively orphaned since they landed in b5dd9d6.
- Ruff is configured but never run.
pyproject.toml carries a per-file-ignores entry and nothing else — no select, and no invocation anywhere.
- No async test support. Nearly every path in the SDK is async, and there is no
pytest-asyncio or equivalent. tests/test_live_runner_payments.py works around this by wrapping asyncio.run in sync functions so it needs no plugin.
Worth deciding together
The ruff rule set matters more than it looks. With ruff's documented defaults (E4, E7, E9, F) the repo has 8 findings, all trivial — 6 unused imports and 2 one-line if x: y. Under a wider default it has 543, dominated by UP045 (Optional[X] → X | None, 357 alone) and BLE001 (blind except, 65).
So a lint gate is either an afternoon or a large mechanical diff, depending on that one choice. Pinning select explicitly in pyproject.toml is worth doing regardless, so a ruff upgrade cannot silently change what CI enforces.
Suggested scope
- Declare pytest in the
dev extra; decide on pytest-asyncio versus the asyncio.run wrapper style already used in tests/test_live_runner_payments.py
- Pin
[tool.ruff.lint] select deliberately, and fix whatever that surfaces
- Add a workflow running lint and tests on PRs
- Optionally lift the
FakeOrchestrator from tests/test_live_runner_payments.py into a conftest.py fixture once there is more than one payment test module
Context: #53 added tests/test_live_runner_payments.py deliberately framework-free (plain functions and asserts, runnable via uv run python tests/test_live_runner_payments.py) so it would not have to answer these questions inside a payments review. It is already discovered by pytest unchanged.
The repo has tests but nothing that runs them, and no agreed way to run them.
Current state
.github/workflowsdirectory, so nothing runs on push or PR.tests/test_byoc_refresh.pyandtests/test_byoc_training.pyare pytest modules, but pytest appears in neitherdependenciesnor thedevextra, souv run pytestfails on a clean checkout. Both files have been effectively orphaned since they landed in b5dd9d6.pyproject.tomlcarries aper-file-ignoresentry and nothing else — noselect, and no invocation anywhere.pytest-asyncioor equivalent.tests/test_live_runner_payments.pyworks around this by wrappingasyncio.runin sync functions so it needs no plugin.Worth deciding together
The ruff rule set matters more than it looks. With ruff's documented defaults (
E4,E7,E9,F) the repo has 8 findings, all trivial — 6 unused imports and 2 one-lineif x: y. Under a wider default it has 543, dominated byUP045(Optional[X]→X | None, 357 alone) andBLE001(blind except, 65).So a lint gate is either an afternoon or a large mechanical diff, depending on that one choice. Pinning
selectexplicitly inpyproject.tomlis worth doing regardless, so a ruff upgrade cannot silently change what CI enforces.Suggested scope
devextra; decide onpytest-asyncioversus theasyncio.runwrapper style already used intests/test_live_runner_payments.py[tool.ruff.lint] selectdeliberately, and fix whatever that surfacesFakeOrchestratorfromtests/test_live_runner_payments.pyinto aconftest.pyfixture once there is more than one payment test moduleContext: #53 added
tests/test_live_runner_payments.pydeliberately framework-free (plain functions and asserts, runnable viauv run python tests/test_live_runner_payments.py) so it would not have to answer these questions inside a payments review. It is already discovered by pytest unchanged.