7c1be58860
Two follow-ups to the v0.2.0 release: 1. Add cryptography>=49.0,<50 to the [project.dependencies] list. cyclone.backup / cyclone.backup_service import it at module top level, so it has to be a hard dep — not an extra — or the test suite fails to collect on a fresh 'uv sync'. A clean install (without this commit) gets 28 collection errors with no tracked file changes. This was latent because the original 99M venv had cryptography installed out-of-band and masked the missing dep declaration. 2. Add pytest-randomly>=4.1.0 to the dev dep group. Used to characterize the test suite's order-dependence: under alphabetic order the suite shows 7 failures; under seed=12345 it shows 34. That variance is evidence of test-order state interactions, not venv issues. Keeping pytest-randomly in the dev deps so this can be re-verified on demand. Note: pytest-randomly was added with 'uv add --dev', which uses the PEP 735 [dependency-groups] syntax. pyproject.toml now has two 'dev' groups — the legacy [project.optional-dependencies] dev = [pytest, pytest-cov, pytest-asyncio, httpx] and the new [dependency-groups] dev = [pytest-randomly]. To get the full dev env, run: uv sync --extra dev --group dev. Worth consolidating in a follow-up.
59 lines
1.5 KiB
TOML
59 lines
1.5 KiB
TOML
[build-system]
|
|
requires = ["setuptools>=68", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "cyclone"
|
|
version = "0.1.0"
|
|
description = "Cyclone EDI suite — X12 837P/835 parser"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"pydantic>=2.6,<3",
|
|
"click>=8.1,<9",
|
|
"fastapi>=0.110,<1",
|
|
"uvicorn[standard]>=0.27,<1",
|
|
"python-multipart>=0.0.9,<1",
|
|
"sqlalchemy>=2.0,<3",
|
|
"pyyaml>=6.0,<7",
|
|
"keyring>=25.0,<26",
|
|
# backup_service / backup: encryption-at-rest (SP17). Used at module
|
|
# top-level by cyclone.backup, so it has to be a hard dep — not an
|
|
# extra — or the test suite fails to collect when the venv is built
|
|
# from a clean `uv sync`.
|
|
"cryptography>=49.0,<50",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"pytest>=8.0",
|
|
"pytest-cov>=4.1",
|
|
"pytest-asyncio>=0.23,<1",
|
|
"httpx>=0.27,<1",
|
|
]
|
|
sqlcipher = [
|
|
# SP12: encryption at rest. Optional — without it the DB is plain SQLite.
|
|
# Install via: pip install -e .[sqlcipher] (after brew install sqlcipher).
|
|
"sqlcipher3>=0.6,<1",
|
|
]
|
|
sftp = [
|
|
# SP13: real SFTP wire-up. Optional — without it the stub keeps working.
|
|
# Install via: pip install -e .[sftp].
|
|
"paramiko>=3.4,<6",
|
|
]
|
|
|
|
[project.scripts]
|
|
cyclone = "cyclone.cli:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where = ["src"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|
|
addopts = "-ra --strict-markers"
|
|
asyncio_mode = "auto"
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest-randomly>=4.1.0",
|
|
]
|