Skip to content

Commit f9cedc0

Browse files
committed
handle when pylint is called
1 parent de2a30d commit f9cedc0

1 file changed

Lines changed: 22 additions & 3 deletions

File tree

py/noxfile.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,29 @@
1212

1313
import glob
1414
import os
15+
import pathlib
16+
import re
1517
import sys
1618
import tempfile
1719

1820
import nox
1921

22+
23+
def _pinned_python_version():
24+
"""Return the (major, minor) Python version pinned in ../.tool-versions, or None."""
25+
tool_versions = pathlib.Path(__file__).parent.parent / ".tool-versions"
26+
try:
27+
for line in tool_versions.read_text().splitlines():
28+
m = re.match(r"^python\s+(\d+)\.(\d+)", line)
29+
if m:
30+
return (int(m.group(1)), int(m.group(2)))
31+
except OSError:
32+
pass
33+
return None
34+
35+
36+
_PINNED_PYTHON = _pinned_python_version()
37+
2038
# much faster than pip
2139
nox.options.default_venv_backend = "uv"
2240

@@ -293,9 +311,6 @@ def test_otel_not_installed(session):
293311
@nox.session()
294312
def pylint(session):
295313
# pylint needs everything so we don't trigger missing import errors
296-
# Skip on Python < 3.10 because some deps (like temporalio 1.19+) require 3.10+
297-
if sys.version_info < (3, 10):
298-
session.skip("pylint requires Python >= 3.10 for full dependency support")
299314
session.install(".[all]")
300315
session.install("-r", "requirements-dev.txt")
301316
session.install(*VENDOR_PACKAGES)
@@ -311,6 +326,10 @@ def pylint(session):
311326
files = result.strip().splitlines()
312327
if not files:
313328
return
329+
# scripts/ may use APIs only available in the latest pinned Python version
330+
# (e.g. datetime.UTC requires 3.11+); skip them on older versions.
331+
if _PINNED_PYTHON and sys.version_info[:2] < _PINNED_PYTHON:
332+
files = [f for f in files if not f.startswith("scripts/")]
314333
session.run("pylint", "--errors-only", *files)
315334

316335

0 commit comments

Comments
 (0)