What Python Versions Does BrassCoders Support?
BrassCoders requires Python 3.10 or higher. It runs on macOS, Linux, and Windows via WSL2. Python 3.9 and earlier are not supported due to Pyre/Pysa requirements.
Python 3.10 and Higher
BrassCoders requires Python 3.10 or later — the minimum version set in pyproject.toml and enforced at install time. Python 3.9 and earlier are not supported.
The Python 3.10 minimum exists because BrassCoders bundles Pyre/Pysa (https://pyre-check.org/), Meta’s taint analyzer, which uses structural pattern matching and type narrowing features added in Python 3.10. Earlier Python builds will fail the install.
All currently-maintained Python releases work: 3.10, 3.11, 3.12, and 3.13. Python’s release schedule (https://devguide.python.org/versions/) shows the active maintenance windows. BrassCoders tests against 3.10 and 3.12 in CI.
The version requirement applies to the Python that runs BrassCoders, not the Python version of the code you’re scanning. BrassCoders can scan Python 3.8-syntax codebases as long as it runs on Python 3.10+.
OS Support: macOS, Linux, Windows (WSL2)
BrassCoders supports macOS and Linux natively. Windows support requires WSL2 — Pyre/Pysa has no native Windows build, and BrassCoders uses POSIX file-locking that is Unix-only.
Native Windows is not supported. Pyre/Pysa (Meta’s interprocedural taint analyzer, one of the 12 scanners) has no Windows build, and BrassCoders internally uses fcntl.flock, a Unix-only file-locking mechanism. Both constraints require a POSIX environment.
WSL2 (Windows Subsystem for Linux 2) provides that environment on Windows. Install BrassCoders inside a WSL2 distribution (Ubuntu 22.04 or 24.04 work well) and run it against your project from there. The scan reads files in the WSL2 filesystem; Windows-path projects can be accessed via the WSL2 mount at /mnt/c/.
If you’re on macOS or Linux, no special setup is needed beyond Python 3.10+.
Install BrassCoders with pip install brasscoders and run brasscoders scan . from your project root. The OSS core is free and Apache 2.0 licensed. BrassCoders Paid adds semantic noise reduction for $12/dev/month.
Frequently Asked Questions
Can I use Python 3.9 with BrassCoders?
No — BrassCoders requires Python 3.10 or later. The minimum is set by Pyre/Pysa, which uses structural pattern matching features added in Python 3.10. Installing brasscoders on Python 3.9 fails at install time with a version constraint error.
Can BrassCoders scan Python 3.8 or 3.9 code?
Yes — BrassCoders can scan codebases written for Python 3.8 or 3.9 syntax, as long as BrassCoders itself runs on Python 3.10+. The version requirement applies to the Python that executes the scanner, not the syntax of the files being scanned.
Does BrassCoders work on Windows?
Not natively — Windows (WSL2) is the supported path. Pyre/Pysa has no native Windows build, and BrassCoders uses POSIX file-locking. Install BrassCoders inside WSL2 (Ubuntu 22.04 or 24.04 work well) and run it from there. WSL2 projects on Windows paths are accessible via /mnt/c/.
Which Python version should I use in CI for BrassCoders?
Python 3.12 is the recommended CI version — it's fast, fully-maintained, and well-tested with BrassCoders. Python 3.10, 3.11, and 3.13 all work. Use actions/setup-python with python-version: '3.12' in your GitHub Actions workflow.