diff --git a/.github/actions/run_examples_using_pypi_uploads/action.yml b/.github/actions/run_examples_using_pypi_uploads/action.yml index f112987cb..d46cb5dc9 100644 --- a/.github/actions/run_examples_using_pypi_uploads/action.yml +++ b/.github/actions/run_examples_using_pypi_uploads/action.yml @@ -15,7 +15,7 @@ runs: steps: # The local wheel installation and single environment would have made using tox-system_tests.ini difficult. # To keep things simple, we just use pip and pytest directly for a single Python version. - - run: py -3.12 -m venv --clear .venv + - run: py -3.13 -m venv --clear .venv shell: powershell - run: | .venv\Scripts\Activate.ps1 diff --git a/.travis.yml b/.travis.yml index 39a66604f..d231b62bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,12 +3,15 @@ language: python dist: focal matrix: include: - # We run tests on the latest supported version of Python first. + # Historically, we've run tests on the latest supported version of Python first. + # For now, we're running Python 3.12 first, because it's the version currently used for codegen. # This is where additional tests are run so we give it more time. + # When the version used for codegen changes, the version that runs first should change to match. - python: "3.12" - python: "3.9" - python: "3.10" - python: "3.11" + - python: "3.13" install: - travis_retry sudo apt-get -y install python3-pip @@ -18,7 +21,8 @@ install: - travis_retry pip install --upgrade tox==3.* tox-travis before_script: - - python tools/ensure_codegen_up_to_date.py + # Python 3.13 is only supported by grpcio-tools >= 1.67.0, a later version than what we use in the tox.ini + - if [[ "$TRAVIS_PYTHON_VERSION" != "3.13" ]]; then python tools/ensure_codegen_up_to_date.py; fi script: - tox -c tox-travis.ini diff --git a/CHANGELOG.md b/CHANGELOG.md index 24b51fb89..f829835fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,6 +38,7 @@ All notable changes to this project will be documented in this file. ## Unreleased * ### ALL * #### Added + * Support for Python 3.13 * #### Changed * Fix [#2069](https://github.com/ni/nimi-python/issues/2069) * #### Removed diff --git a/build/templates/setup.py.mako b/build/templates/setup.py.mako index e9f05f726..6c921be1c 100644 --- a/build/templates/setup.py.mako +++ b/build/templates/setup.py.mako @@ -46,7 +46,7 @@ setup( extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, % endif @@ -63,6 +63,7 @@ setup( "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/build/templates/tox-system_tests.ini.mako b/build/templates/tox-system_tests.ini.mako index cd3f27d5a..4070299d6 100644 --- a/build/templates/tox-system_tests.ini.mako +++ b/build/templates/tox-system_tests.ini.mako @@ -11,7 +11,7 @@ wheel_env_no_py = '{}-wheel_dep'.format(module_name) # We only actually need to build it once, but we specify multiple versions here # to prevent tox from trying to build the wheel with an unsupported (earlier) Python version - wheel_env = 'py{39,310,311,312}-' + wheel_env_no_py + ',' + wheel_env = 'py{39,310,311,312,313}-' + wheel_env_no_py + ',' uses_other_wheel = True if module_name == 'nitclk': # nitclk system tests use niscope @@ -28,7 +28,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/${module_name}) [tox] -envlist = ${wheel_env}py{39,310,311,312}-${module_name}-system_tests, py312-${module_name}-coverage +envlist = ${wheel_env}py{39,310,311,312,313}-${module_name}-system_tests, py313-${module_name}-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -87,7 +87,7 @@ deps = ${module_name}-coverage: coverage depends = - ${module_name}-coverage: py{39,310,311,312}-${module_name}-system_tests + ${module_name}-coverage: py{39,310,311,312,313}-${module_name}-system_tests % if uses_other_wheel: ${module_name}-system_tests: ${wheel_env} % endif diff --git a/generated/nidcpower/setup.py b/generated/nidcpower/setup.py index b91691c21..064352292 100644 --- a/generated/nidcpower/setup.py +++ b/generated/nidcpower/setup.py @@ -36,7 +36,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -52,6 +52,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nidcpower/tox-system_tests.ini b/generated/nidcpower/tox-system_tests.ini index a10b36735..2fc11e0b7 100644 --- a/generated/nidcpower/tox-system_tests.ini +++ b/generated/nidcpower/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nidcpower) [tox] -envlist = py{39,310,311,312}-nidcpower-system_tests, py312-nidcpower-coverage +envlist = py{39,310,311,312,313}-nidcpower-system_tests, py313-nidcpower-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -43,7 +43,7 @@ deps = nidcpower-coverage: coverage depends = - nidcpower-coverage: py{39,310,311,312}-nidcpower-system_tests + nidcpower-coverage: py{39,310,311,312,313}-nidcpower-system_tests passenv = GIT_BRANCH diff --git a/generated/nidigital/setup.py b/generated/nidigital/setup.py index 33bea8ae5..37238ce24 100644 --- a/generated/nidigital/setup.py +++ b/generated/nidigital/setup.py @@ -37,7 +37,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -53,6 +53,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nidigital/tox-system_tests.ini b/generated/nidigital/tox-system_tests.ini index 4bcef3a22..a0e1d4f9c 100644 --- a/generated/nidigital/tox-system_tests.ini +++ b/generated/nidigital/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nidigital) [tox] -envlist = py{39,310,311,312}-nidigital-wheel_dep,py{39,310,311,312}-nidigital-system_tests, py312-nidigital-coverage +envlist = py{39,310,311,312,313}-nidigital-wheel_dep,py{39,310,311,312,313}-nidigital-system_tests, py313-nidigital-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -50,8 +50,8 @@ deps = nidigital-coverage: coverage depends = - nidigital-coverage: py{39,310,311,312}-nidigital-system_tests - nidigital-system_tests: py{39,310,311,312}-nidigital-wheel_dep, + nidigital-coverage: py{39,310,311,312,313}-nidigital-system_tests + nidigital-system_tests: py{39,310,311,312,313}-nidigital-wheel_dep, passenv = GIT_BRANCH diff --git a/generated/nidmm/setup.py b/generated/nidmm/setup.py index 62bb6aa65..1dec9caa2 100644 --- a/generated/nidmm/setup.py +++ b/generated/nidmm/setup.py @@ -36,7 +36,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -52,6 +52,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nidmm/tox-system_tests.ini b/generated/nidmm/tox-system_tests.ini index 3a3f88b93..87bdc8e6f 100644 --- a/generated/nidmm/tox-system_tests.ini +++ b/generated/nidmm/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nidmm) [tox] -envlist = py{39,310,311,312}-nidmm-system_tests, py312-nidmm-coverage +envlist = py{39,310,311,312,313}-nidmm-system_tests, py313-nidmm-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -43,7 +43,7 @@ deps = nidmm-coverage: coverage depends = - nidmm-coverage: py{39,310,311,312}-nidmm-system_tests + nidmm-coverage: py{39,310,311,312,313}-nidmm-system_tests passenv = GIT_BRANCH diff --git a/generated/nifake/setup.py b/generated/nifake/setup.py index cb551df17..1e696a4b0 100644 --- a/generated/nifake/setup.py +++ b/generated/nifake/setup.py @@ -37,7 +37,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -53,6 +53,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nifake/tox-system_tests.ini b/generated/nifake/tox-system_tests.ini index b7be0467e..540b2bd20 100644 --- a/generated/nifake/tox-system_tests.ini +++ b/generated/nifake/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nifake) [tox] -envlist = py{39,310,311,312}-nifake-wheel_dep,py{39,310,311,312}-nifake-system_tests, py312-nifake-coverage +envlist = py{39,310,311,312,313}-nifake-wheel_dep,py{39,310,311,312,313}-nifake-system_tests, py313-nifake-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -50,8 +50,8 @@ deps = nifake-coverage: coverage depends = - nifake-coverage: py{39,310,311,312}-nifake-system_tests - nifake-system_tests: py{39,310,311,312}-nifake-wheel_dep, + nifake-coverage: py{39,310,311,312,313}-nifake-system_tests + nifake-system_tests: py{39,310,311,312,313}-nifake-wheel_dep, passenv = GIT_BRANCH diff --git a/generated/nifgen/setup.py b/generated/nifgen/setup.py index 6c0c9b489..c140bbc9d 100644 --- a/generated/nifgen/setup.py +++ b/generated/nifgen/setup.py @@ -37,7 +37,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -53,6 +53,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nifgen/tox-system_tests.ini b/generated/nifgen/tox-system_tests.ini index 1572fbc08..ca9a84c27 100644 --- a/generated/nifgen/tox-system_tests.ini +++ b/generated/nifgen/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nifgen) [tox] -envlist = py{39,310,311,312}-nifgen-wheel_dep,py{39,310,311,312}-nifgen-system_tests, py312-nifgen-coverage +envlist = py{39,310,311,312,313}-nifgen-wheel_dep,py{39,310,311,312,313}-nifgen-system_tests, py313-nifgen-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -50,8 +50,8 @@ deps = nifgen-coverage: coverage depends = - nifgen-coverage: py{39,310,311,312}-nifgen-system_tests - nifgen-system_tests: py{39,310,311,312}-nifgen-wheel_dep, + nifgen-coverage: py{39,310,311,312,313}-nifgen-system_tests + nifgen-system_tests: py{39,310,311,312,313}-nifgen-wheel_dep, passenv = GIT_BRANCH diff --git a/generated/nimodinst/setup.py b/generated/nimodinst/setup.py index 02c8fb049..59efa3822 100644 --- a/generated/nimodinst/setup.py +++ b/generated/nimodinst/setup.py @@ -46,6 +46,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nimodinst/tox-system_tests.ini b/generated/nimodinst/tox-system_tests.ini index f48dcebea..422c5918e 100644 --- a/generated/nimodinst/tox-system_tests.ini +++ b/generated/nimodinst/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nimodinst) [tox] -envlist = py{39,310,311,312}-nimodinst-system_tests, py312-nimodinst-coverage +envlist = py{39,310,311,312,313}-nimodinst-system_tests, py313-nimodinst-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -42,7 +42,7 @@ deps = nimodinst-coverage: coverage depends = - nimodinst-coverage: py{39,310,311,312}-nimodinst-system_tests + nimodinst-coverage: py{39,310,311,312,313}-nimodinst-system_tests passenv = GIT_BRANCH diff --git a/generated/niscope/setup.py b/generated/niscope/setup.py index 3ebb546cf..2f61e270d 100644 --- a/generated/niscope/setup.py +++ b/generated/niscope/setup.py @@ -37,7 +37,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -53,6 +53,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/niscope/tox-system_tests.ini b/generated/niscope/tox-system_tests.ini index a2a99de8e..a6a59b6a0 100644 --- a/generated/niscope/tox-system_tests.ini +++ b/generated/niscope/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/niscope) [tox] -envlist = py{39,310,311,312}-niscope-wheel_dep,py{39,310,311,312}-niscope-system_tests, py312-niscope-coverage +envlist = py{39,310,311,312,313}-niscope-wheel_dep,py{39,310,311,312,313}-niscope-system_tests, py313-niscope-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -50,8 +50,8 @@ deps = niscope-coverage: coverage depends = - niscope-coverage: py{39,310,311,312}-niscope-system_tests - niscope-system_tests: py{39,310,311,312}-niscope-wheel_dep, + niscope-coverage: py{39,310,311,312,313}-niscope-system_tests + niscope-system_tests: py{39,310,311,312,313}-niscope-wheel_dep, passenv = GIT_BRANCH diff --git a/generated/nise/setup.py b/generated/nise/setup.py index 79b5eaf6c..735df6b4c 100644 --- a/generated/nise/setup.py +++ b/generated/nise/setup.py @@ -46,6 +46,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nise/tox-system_tests.ini b/generated/nise/tox-system_tests.ini index 04fabd029..7c5b7adb0 100644 --- a/generated/nise/tox-system_tests.ini +++ b/generated/nise/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nise) [tox] -envlist = py{39,310,311,312}-nise-system_tests, py312-nise-coverage +envlist = py{39,310,311,312,313}-nise-system_tests, py313-nise-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -42,7 +42,7 @@ deps = nise-coverage: coverage depends = - nise-coverage: py{39,310,311,312}-nise-system_tests + nise-coverage: py{39,310,311,312,313}-nise-system_tests passenv = GIT_BRANCH diff --git a/generated/niswitch/setup.py b/generated/niswitch/setup.py index 9cad4ee76..04d9c59b2 100644 --- a/generated/niswitch/setup.py +++ b/generated/niswitch/setup.py @@ -36,7 +36,7 @@ def read_contents(file_to_read): extras_require={ 'grpc': [ 'grpcio>=1.59.0,<2.0', - 'protobuf>=4.21.6,<5.0' + 'protobuf>=4.21.6' ], }, classifiers=[ @@ -52,6 +52,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/niswitch/tox-system_tests.ini b/generated/niswitch/tox-system_tests.ini index e8c6f8afd..7b7527617 100644 --- a/generated/niswitch/tox-system_tests.ini +++ b/generated/niswitch/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/niswitch) [tox] -envlist = py{39,310,311,312}-niswitch-system_tests, py312-niswitch-coverage +envlist = py{39,310,311,312,313}-niswitch-system_tests, py313-niswitch-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -43,7 +43,7 @@ deps = niswitch-coverage: coverage depends = - niswitch-coverage: py{39,310,311,312}-niswitch-system_tests + niswitch-coverage: py{39,310,311,312,313}-niswitch-system_tests passenv = GIT_BRANCH diff --git a/generated/nitclk/setup.py b/generated/nitclk/setup.py index 216466c63..8890cfd98 100644 --- a/generated/nitclk/setup.py +++ b/generated/nitclk/setup.py @@ -46,6 +46,7 @@ def read_contents(file_to_read): "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: Implementation :: CPython", "Topic :: System :: Hardware :: Hardware Drivers" ], diff --git a/generated/nitclk/tox-system_tests.ini b/generated/nitclk/tox-system_tests.ini index dd05deb4f..c360ec5e9 100644 --- a/generated/nitclk/tox-system_tests.ini +++ b/generated/nitclk/tox-system_tests.ini @@ -3,7 +3,7 @@ # test suite on all supported python versions. To use it, "pip install tox" # and then run "tox -c tox-system_tests.ini" from the driver directory. (generated/nitclk) [tox] -envlist = py{39,310,311,312}-nitclk-wheel_dep,py{39,310,311,312}-nitclk-system_tests, py312-nitclk-coverage +envlist = py{39,310,311,312,313}-nitclk-wheel_dep,py{39,310,311,312,313}-nitclk-system_tests, py313-nitclk-coverage skip_missing_interpreters=True ignore_basepython_conflict=True # We put the .tox directory outside of the Jenkins workspace so that it isn't wiped with the rest of the repo @@ -49,8 +49,8 @@ deps = nitclk-coverage: coverage depends = - nitclk-coverage: py{39,310,311,312}-nitclk-system_tests - nitclk-system_tests: py{39,310,311,312}-nitclk-wheel_dep, + nitclk-coverage: py{39,310,311,312,313}-nitclk-system_tests + nitclk-system_tests: py{39,310,311,312,313}-nitclk-wheel_dep, passenv = GIT_BRANCH diff --git a/tox-travis.ini b/tox-travis.ini index 8e3311b39..8f781ede1 100644 --- a/tox-travis.ini +++ b/tox-travis.ini @@ -6,10 +6,15 @@ # tox.ini and tox-travis.ini are copies of the same content with different envlist commented out # tox-travis.ini will have pyXX-clean and all pyXX-installers in the default envlist, while the developer tox.ini # does not have clean and only has one pyXX-installers +# Historically we've used the latest Python for environments that we only list one Python for. For now, we're using Python 3.12 +# to avoid updating our pb2 files, which could possibly cause incompatibilities with other NI Python packages. +# When other NI Python packages bump the version that they use for generating pb2 files, we can bump this Python version to match. +# We may also bump it sooner, if we agree with team members who own other NI Python packages that it's okay to do so. +# At the latest, we'll bump it when we drop support for Python 3.12. # Uncomment this line for tox.ini -# envlist = py312-build_test,py312-codegen,py312-installers,py{39,310,311,312}-test,py312-flake8,py312-docs,py312-pkg +# envlist = py312-build_test,py312-codegen,py312-installers,py{39,310,311,312,313}-test,py312-flake8,py312-docs,py312-pkg # Uncomment this line for tox-travis.ini -envlist = py312-clean,py312-build_test,py312-codegen,py{39,310,311,312}-installers,py{39,310,311,312}-test,py312-flake8,py312-docs,py312-pkg +envlist = py312-clean,py312-build_test,py312-codegen,py{39,310,311,312,313}-installers,py{39,310,311,312,313}-test,py312-flake8,py312-docs,py312-pkg skip_missing_interpreters=True ignore_basepython_conflict=True skipsdist = true @@ -136,8 +141,8 @@ deps = test: mako test: numpy test: hightime - test: grpcio == 1.59.0 # Compatible with grpcio-tools 1.59.0 - test: protobuf == 4.21.6 # Compatible with grpcio-tools 1.59.0 + test: grpcio == 1.67.0 # Compatible with Python 3.13; should be backwards compatible with grpcio-tools 1.59.0 + test: protobuf == 5.27.2 # Compatible with Python 3.13; should be backwards compatible with grpcio-tools 1.59.0 build_test: pytest build_test: coverage build_test: mako @@ -145,7 +150,7 @@ deps = build_test: pep8-naming codegen: mako codegen: packaging - codegen: grpcio-tools == 1.59.0 # First version to support Python 3.12 + codegen: grpcio-tools == 1.59.0 # First version to support Python 3.12 installers: build flake8: hacking flake8: pep8-naming diff --git a/tox.ini b/tox.ini index a7cd94b32..0f9ec336f 100644 --- a/tox.ini +++ b/tox.ini @@ -6,10 +6,15 @@ # tox.ini and tox-travis.ini are copies of the same content with different envlist commented out # tox-travis.ini will have pyXX-clean and all pyXX-installers in the default envlist, while the developer tox.ini # does not have clean and only has one pyXX-installers +# Historically we've used the latest Python for environments that we only list one Python for. For now, we're using Python 3.12 +# to avoid updating our pb2 files, which could possibly cause incompatibilities with other NI Python packages. +# When other NI Python packages bump the version that they use for generating pb2 files, we can bump this Python version to match. +# We may also bump it sooner, if we agree with team members who own other NI Python packages that it's okay to do so. +# At the latest, we'll bump it when we drop support for Python 3.12. # Uncomment this line for tox.ini -envlist = py312-build_test,py312-codegen,py312-installers,py{39,310,311,312}-test,py312-flake8,py312-docs,py312-pkg +envlist = py312-build_test,py312-codegen,py312-installers,py{39,310,311,312,313}-test,py312-flake8,py312-docs,py312-pkg # Uncomment this line for tox-travis.ini -# envlist = py312-clean,py312-build_test,py312-codegen,py{39,310,311,312}-installers,py{39,310,311,312}-test,py312-flake8,py312-docs,py312-pkg +# envlist = py312-clean,py312-build_test,py312-codegen,py{39,310,311,312,313}-installers,py{39,310,311,312,313}-test,py312-flake8,py312-docs,py312-pkg skip_missing_interpreters=True ignore_basepython_conflict=True skipsdist = true @@ -136,8 +141,8 @@ deps = test: mako test: numpy test: hightime - test: grpcio == 1.59.0 # Compatible with grpcio-tools 1.59.0 - test: protobuf == 4.21.6 # Compatible with grpcio-tools 1.59.0 + test: grpcio == 1.67.0 # Compatible with Python 3.13; should be backwards compatible with grpcio-tools 1.59.0 + test: protobuf == 5.27.2 # Compatible with Python 3.13; should be backwards compatible with grpcio-tools 1.59.0 build_test: pytest build_test: coverage build_test: mako @@ -145,7 +150,7 @@ deps = build_test: pep8-naming codegen: mako codegen: packaging - codegen: grpcio-tools == 1.59.0 # First version to support Python 3.12 + codegen: grpcio-tools == 1.59.0 # First version to support Python 3.12 installers: build flake8: hacking flake8: pep8-naming