setup.py sets MIN_PYTHON = (3, 10), but ten sites in the Spyre tree pass tempfile keywords that only exist in 3.12+. Each is a TypeError at the call on 3.10/3.11. The dev box runs 3.12, so none of it shows today.
TemporaryDirectory(delete=...) — backend code, breaks an installed wheel:
third_party/spyre/backend/compiler.py:687
NamedTemporaryFile(delete_on_close=...) — test/script code, breaks a 3.10 test run only:
third_party/spyre/test/conftest.py:453, :694
third_party/spyre/test/python/backend-options-test.py:121, :153, :198, :376
third_party/spyre/scripts/dump_round_trip.py:306, :338
third_party/spyre/test/test_non_pow2.py:62
The first becomes mkdtemp + try/finally. The rest need delete=False plus an explicit unlink — not a blind keyword swap, since delete_on_close=False still removes the file at context exit and delete=False does not.
setup.pysetsMIN_PYTHON = (3, 10), but ten sites in the Spyre tree passtempfilekeywords that only exist in 3.12+. Each is aTypeErrorat the call on 3.10/3.11. The dev box runs 3.12, so none of it shows today.TemporaryDirectory(delete=...)— backend code, breaks an installed wheel:third_party/spyre/backend/compiler.py:687NamedTemporaryFile(delete_on_close=...)— test/script code, breaks a 3.10 test run only:third_party/spyre/test/conftest.py:453,:694third_party/spyre/test/python/backend-options-test.py:121,:153,:198,:376third_party/spyre/scripts/dump_round_trip.py:306,:338third_party/spyre/test/test_non_pow2.py:62The first becomes
mkdtemp+try/finally. The rest needdelete=Falseplus an explicit unlink — not a blind keyword swap, sincedelete_on_close=Falsestill removes the file at context exit anddelete=Falsedoes not.