# Development and testing dependencies pytest>=8.0.0 pytest-asyncio>=0.23.0 pytest-cov>=4.1.0 pytest-xdist>=3.5.0 pytest-timeout>=2.4.0 # Test-suite sharding for CI matrix. Splits the test set evenly across N # shards via --splits/--group; falls back to test-name hashing on the first # run, and uses recorded durations on subsequent runs (.test_durations). pytest-split>=0.9.0 httpx>=0.27.0 # Exact pin, deliberately. A floor lets a contributor's older ruff enforce rules # the current one has retired (UP038 was removed — PEP 604 in isinstance() is # slower than the tuple form), and lets `format --check` disagree between # machines. CI's lint job installs this exact line, so local == CI. Bump on # purpose, not by resolution order. ruff==0.15.20 pre-commit>=4.0 # Required by pyftpdlib TLS_FTPHandler for mock FTP server tests pyOpenSSL>=26.0.0 # Security scanning bandit[sarif]>=1.7.0 pip-audit>=2.7.0 # Transitive of pip-audit→CacheControl. 1.2.1 patches GHSA-6v7p-g79w-8964 # (Unpacker SEGV/DoS on reuse after caught error). Not a runtime dep of # Bambuddy — pinned here so the audit stays clean. msgpack>=1.2.1 # Secrets scan: gitleaks (Go binary, not a Python package). # Install: go install github.com/zricethezav/gitleaks/v8@latest