A compatibility check separates grammar acceptance from actual interpreter execution and installed dependency behavior.
Python compatibility checks: parse syntax and execute contracts as separate evidence
Operation contract
The fixture parses one owned program with the Python 3.11 grammar, then executes it in an isolated child using the current interpreter. Exact output confirms the selected operation on that interpreter. Reporting the current patch version makes the executed environment visible instead of equating grammar parsing with a runtime matrix.
Failure and ownership boundary
The fixture executes only CPython 3.14.6 in the recorded environment. It does not run 3.11, PyPy, a free-threaded build or another operating system. Grammar parsing cannot verify library availability, dependency wheels or runtime semantics. A CI matrix must launch each declared target and install/test its declared dependencies. Mypy static checks: annotations do not validate runtime payloads and Python wheel installation: test the built artifact outside its source directory provide different checks.
Working program
import ast
import subprocess
import sys
source = 'receipt_amounts = [125, 250, 75]\nprint(sum(receipt_amounts))\n'
ast.parse(source, feature_version=(3, 11))
print("3.11 grammar accepted")
result = subprocess.run([sys.executable, "-I", "-c", source], check=True, capture_output=True, text=True, timeout=5)
assert result.stdout == "450\n"
print("executed output:", result.stdout.strip())
print("executed runtime:", sys.version.split()[0])Output
3.11 grammar accepted
executed output: 450
executed runtime: 3.14.6Costs and limits
The selected parse/execution has fixed small input and a child timeout. A full compatibility matrix multiplies build/install/test cost across runtimes and platforms. One successful target supplies evidence only for that tested target.
Common Mistakes
- Grammar acceptance is not execution on that older interpreter.
- Report executed runtimes and dependency versions rather than a generic compatibility claim.
Connected lessons
Mypy static checks: annotations do not validate runtime payloads, Python wheel installation: test the built artifact outside its source directory, Python type hints: annotations do not enforce runtime arguments.
