diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 37affc56c..b00d5d513 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -36,11 +36,11 @@ jobs: strategy: fail-fast: true matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] os: [ubuntu-latest, windows-latest, macos-13, macos-latest] include: # Only run slow tests on the latest version of Python - - python-version: "3.13" + - python-version: "3.14" slow: true runs-on: ${{ matrix.os }} @@ -63,6 +63,7 @@ jobs: uses: actions/setup-python@42375524e23c412d93fb67b49958b491fce71c38 with: python-version: ${{ matrix.python-version }} + allow-prereleases: true cache: 'pip' - name: Update pip diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 703fabe41..4f86e1d46 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,10 +3,10 @@ repos: rev: 25.1.0 hooks: - id: black - language_version: python3.13 + language_version: python3.14 - repo: https://github.com/pycqa/isort rev: 5.12.0 hooks: - id: isort - language_version: python3.13 + language_version: python3.14 diff --git a/docs/conf.py b/docs/conf.py index 02628a3ec..cbb53d094 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -605,7 +605,9 @@ def add_directive_header(self, sig): orig_object_description = sphinx.util.inspect.object_description -def object_description(obj): +def object_description(obj, **kwargs): + # Accept **kwargs to support Sphinx ≥7.2, which passes the `_seen` argument + # to object_description. This ensures compatibility across Sphinx versions. if obj is scenic.core.regions.nowhere or obj is scenic.core.regions.everywhere: return str(obj) elif isinstance( @@ -622,7 +624,7 @@ def object_description(obj): elif obj is sys.stderr: return "sys.stderr" else: - return orig_object_description(obj) + return orig_object_description(obj, **kwargs) sphinx.util.inspect.object_description = object_description diff --git a/docs/simulators.rst b/docs/simulators.rst index 2b1e22df0..4214ff69f 100644 --- a/docs/simulators.rst +++ b/docs/simulators.rst @@ -10,6 +10,10 @@ On this page we list interfaces that we and others have developed; if you have a Note that not every interface supports all Scenic features: in particular, some interfaces do not support dynamic scenarios. See the individual entries for details on each interface's capabilities and how to set it up. +.. note:: + While Scenic aims to support multiple Python versions, some simulators may have more limited compatibility. + Be sure to check the documentation of each simulator to confirm which Python versions are supported. + .. contents:: List of Simulators :local: diff --git a/pyproject.toml b/pyproject.toml index aea2630d9..995f1b665 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,16 +67,17 @@ test = [ # minimum dependencies for running tests (used for tox virtualenvs) test-full = [ # like 'test' but adds dependencies for optional features "scenic[test]", # all dependencies from 'test' extra above "scenic[guideways]", # for running guideways modules - 'scenic[metadrive]; python_version <= "3.11"', # MetaDrive only supports Python ≤ 3.11; excluded for newer versions "astor >= 0.8.1", 'carla >= 0.9.12; python_version <= "3.10" and (platform_system == "Linux" or platform_system == "Windows")', "dill", "exceptiongroup", "inflect ~= 5.5", + 'metadrive-simulator >= 0.4.3; python_version <= "3.11"', # listed directly (not scenic[metadrive]) to work around tox issue that ignored the python_version<=3.11 guard "pygments ~= 2.11", - "sphinx >= 6.2.0, <7.2.0", + "sphinx >= 6.2.0, <8", "sphinx_rtd_theme >= 0.5.2", "sphinx-tabs ~= 3.4.1", + 'sumolib >= 1.21.0; python_version <= "3.11"', # required for MetaDrive "verifai >= 2.1.0b1", ] dev = [ diff --git a/tox.ini b/tox.ini index d4f9392dd..19ed9d3f8 100644 --- a/tox.ini +++ b/tox.ini @@ -1,7 +1,7 @@ [tox] -envlist = py{38,39,310,311,312,313}{,-extras} +envlist = py{38,39,310,311,312,313,314}{,-extras} labels = - basic = py{38,39,310,311,312,313} + basic = py{38,39,310,311,312,313,314} [testenv] extras =