Repository: ni/nimi-python (language: python)

Issue:
Add support for Python 3.11
### Description of issue

Python 3.11 released on 2022-10-24 and nimi-python does not yet officially support it.
In order to claim support, we need nimibot to run all the automated tests on all the supported platforms.  


Discussion / hints:

Fix patch:
diff --git a/.travis.yml b/.travis.yml
index 8998cbe23..686ee6e17 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,10 +5,11 @@ matrix:
     include:
       # We run tests on the latest supported version of Python first.
       # This is where additional tests are run so we give it more time.
-      - python: "3.10"
+      - python: "3.11"
       - python: "3.7"
       - python: "3.8"
       - python: "3.9"
+      - python: "3.10"
 
 install:
   - travis_retry sudo apt-get -y install python3-pip
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0f7af4ce3..38fd33538 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -33,6 +33,7 @@ All notable changes to this project will be documented in this file.
 ## Unreleased
 * ### ALL
     * #### Added
+        * Support for Python 3.11
     * #### Changed
         * Fix [#1888](https://github.com/ni/nimi-python/issues/1888): Deadlock on multithreaded usage due to UnlockSession always being called with callerHasLock=False.
     * #### Removed
diff --git a/tox-travis.ini b/tox-travis.ini
index fbdb96e82..04379d1d5 100644
--- a/tox-travis.ini
+++ b/tox-travis.ini
@@ -7,9 +7,9 @@
 # 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
 # Uncomment this line for tox.ini
-# envlist = py310-build_test,py310-codegen,py310-installers,py{37,38,39,310}-test,py310-flake8,py310-docs,py310-pkg
+# envlist = py311-build_test,py311-codegen,py311-installers,py{37,38,39,310,311}-test,py311-flake8,py311-docs,py311-pkg
 # Uncomment this line for tox-travis.ini
-envlist = py310-clean,py310-build_test,py310-codegen,py{37,38,39,310}-installers,py{37,38,39,310}-test,py310-flake8,py310-docs,py310-pkg
+envlist = py311-clean,py311-build_test,py311-codegen,py{37,38,39,310,311}-installers,py{37,38,39,310,311}-test,py311-flake8,py311-docs,py311-pkg
 skip_missing_interpreters=True
 ignore_basepython_conflict=True
 skipsdist = true
@@ -149,12 +149,12 @@ deps =
     pkg: twine
 
 depends =
-    codegen: py310-clean
-    installers: py310-codegen
-    flake8: py310-codegen
-    docs: py310-codegen
-    test: py310-installers
-    pkg: py310-installers
+    codegen: py311-clean
+    installers: py311-codegen
+    flake8: py311-codegen
+    docs: py311-codegen
+    test: py311-installers
+    pkg: py311-installers
 
 allowlist_externals =
     build_test: mv
diff --git a/tox.ini b/tox.ini
index b3f01bfee..ad430589b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -7,9 +7,9 @@
 # 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
 # Uncomment this line for tox.ini
-envlist = py310-build_test,py310-codegen,py310-installers,py{37,38,39,310}-test,py310-flake8,py310-docs,py310-pkg
+envlist = py311-build_test,py311-codegen,py311-installers,py{37,38,39,310,311}-test,py311-flake8,py311-docs,py311-pkg
 # Uncomment this line for tox-travis.ini
-# envlist = py310-clean,py310-build_test,py310-codegen,py{37,38,39,310}-installers,py{37,38,39,310}-test,py310-flake8,py310-docs,py310-pkg
+# envlist = py311-clean,py311-build_test,py311-codegen,py{37,38,39,310,311}-installers,py{37,38,39,310,311}-test,py311-flake8,py311-docs,py311-pkg
 skip_missing_interpreters=True
 ignore_basepython_conflict=True
 skipsdist = true
@@ -149,12 +149,12 @@ deps =
     pkg: twine
 
 depends =
-    codegen: py310-clean
-    installers: py310-codegen
-    flake8: py310-codegen
-    docs: py310-codegen
-    test: py310-installers
-    pkg: py310-installers
+    codegen: py311-clean
+    installers: py311-codegen
+    flake8: py311-codegen
+    docs: py311-codegen
+    test: py311-installers
+    pkg: py311-installers
 
 allowlist_externals =
     build_test: mv


Test patch:
diff --git a/build/templates/tox-system_tests.ini.mako b/build/templates/tox-system_tests.ini.mako
index 8e442be1a..e3b3d5423 100644
--- a/build/templates/tox-system_tests.ini.mako
+++ b/build/templates/tox-system_tests.ini.mako
@@ -26,7 +26,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{37,38,39,310}-${module_name}-system_tests, py310-${module_name}-coverage
+envlist = ${wheel_env}py{37,38,39,310,311}-${module_name}-system_tests, py311-${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
@@ -90,7 +90,7 @@ deps =
     ${module_name}-coverage: codecov
 
 depends =
-    ${module_name}-coverage: py{37,38,39,310}-${module_name}-system_tests
+    ${module_name}-coverage: py{37,38,39,310,311}-${module_name}-system_tests
 % if uses_other_wheel:
     ${module_name}-system_tests: ${wheel_env}
 % endif
diff --git a/generated/nidcpower/tox-system_tests.ini b/generated/nidcpower/tox-system_tests.ini
index 9487dfb4d..dc141c540 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{37,38,39,310}-nidcpower-system_tests, py310-nidcpower-coverage
+envlist = py{37,38,39,310,311}-nidcpower-system_tests, py311-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
@@ -48,7 +48,7 @@ deps =
     nidcpower-coverage: codecov
 
 depends =
-    nidcpower-coverage: py{37,38,39,310}-nidcpower-system_tests
+    nidcpower-coverage: py{37,38,39,310,311}-nidcpower-system_tests
 
 passenv =
     GIT_BRANCH
diff --git a/generated/nidigital/tox-system_tests.ini b/generated/nidigital/tox-system_tests.ini
index ac42d61c2..87c61a03e 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 = py3-nidigital-wheel_dep,py{37,38,39,310}-nidigital-system_tests, py310-nidigital-coverage
+envlist = py3-nidigital-wheel_dep,py{37,38,39,310,311}-nidigital-system_tests, py311-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
@@ -55,7 +55,7 @@ deps =
     nidigital-coverage: codecov
 
 depends =
-    nidigital-coverage: py{37,38,39,310}-nidigital-system_tests
+    nidigital-coverage: py{37,38,39,310,311}-nidigital-system_tests
     nidigital-system_tests: py3-nidigital-wheel_dep,
 
 passenv =
diff --git a/generated/nidmm/tox-system_tests.ini b/generated/nidmm/tox-system_tests.ini
index d5415a8cd..fba7714b9 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{37,38,39,310}-nidmm-system_tests, py310-nidmm-coverage
+envlist = py{37,38,39,310,311}-nidmm-system_tests, py311-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
@@ -48,7 +48,7 @@ deps =
     nidmm-coverage: codecov
 
 depends =
-    nidmm-coverage: py{37,38,39,310}-nidmm-system_tests
+    nidmm-coverage: py{37,38,39,310,311}-nidmm-system_tests
 
 passenv =
     GIT_BRANCH
diff --git a/generated/nifake/tox-system_tests.ini b/generated/nifake/tox-system_tests.ini
index 3cf99239a..51d467712 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 = py3-nifake-wheel_dep,py{37,38,39,310}-nifake-system_tests, py310-nifake-coverage
+envlist = py3-nifake-wheel_dep,py{37,38,39,310,311}-nifake-system_tests, py311-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
@@ -55,7 +55,7 @@ deps =
     nifake-coverage: codecov
 
 depends =
-    nifake-coverage: py{37,38,39,310}-nifake-system_tests
+    nifake-coverage: py{37,38,39,310,311}-nifake-system_tests
     nifake-system_tests: py3-nifake-wheel_dep,
 
 passenv =
diff --git a/generated/nifgen/tox-system_tests.ini b/generated/nifgen/tox-system_tests.ini
index 2cdbfde53..897131811 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 = py3-nifgen-wheel_dep,py{37,38,39,310}-nifgen-system_tests, py310-nifgen-coverage
+envlist = py3-nifgen-wheel_dep,py{37,38,39,310,311}-nifgen-system_tests, py311-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
@@ -55,7 +55,7 @@ deps =
     nifgen-coverage: codecov
 
 depends =
-    nifgen-coverage: py{37,38,39,310}-nifgen-system_tests
+    nifgen-coverage: py{37,38,39,310,311}-nifgen-system_tests
     nifgen-system_tests: py3-nifgen-wheel_dep,
 
 passenv =
diff --git a/generated/nimodinst/tox-system_tests.ini b/generated/nimodinst/tox-system_tests.ini
index 2c1ea523e..50adebd5b 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{37,38,39,310}-nimodinst-system_tests, py310-nimodinst-coverage
+envlist = py{37,38,39,310,311}-nimodinst-system_tests, py311-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
@@ -46,7 +46,7 @@ deps =
     nimodinst-coverage: codecov
 
 depends =
-    nimodinst-coverage: py{37,38,39,310}-nimodinst-system_tests
+    nimodinst-coverage: py{37,38,39,310,311}-nimodinst-system_tests
 
 passenv =
     GIT_BRANCH
diff --git a/generated/niscope/tox-system_tests.ini b/generated/niscope/tox-system_tests.ini
index 665dab148..21317a95a 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 = py3-niscope-wheel_dep,py{37,38,39,310}-niscope-system_tests, py310-niscope-coverage
+envlist = py3-niscope-wheel_dep,py{37,38,39,310,311}-niscope-system_tests, py311-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
@@ -55,7 +55,7 @@ deps =
     niscope-coverage: codecov
 
 depends =
-    niscope-coverage: py{37,38,39,310}-niscope-system_tests
+    niscope-coverage: py{37,38,39,310,311}-niscope-system_tests
     niscope-system_tests: py3-niscope-wheel_dep,
 
 passenv =
diff --git a/generated/nise/tox-system_tests.ini b/generated/nise/tox-system_tests.ini
index 9e1c4ef5e..09f5474da 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{37,38,39,310}-nise-system_tests, py310-nise-coverage
+envlist = py{37,38,39,310,311}-nise-system_tests, py311-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
@@ -46,7 +46,7 @@ deps =
     nise-coverage: codecov
 
 depends =
-    nise-coverage: py{37,38,39,310}-nise-system_tests
+    nise-coverage: py{37,38,39,310,311}-nise-system_tests
 
 passenv =
     GIT_BRANCH
diff --git a/generated/niswitch/tox-system_tests.ini b/generated/niswitch/tox-system_tests.ini
index d6f3606ab..841e50583 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{37,38,39,310}-niswitch-system_tests, py310-niswitch-coverage
+envlist = py{37,38,39,310,311}-niswitch-system_tests, py311-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
@@ -48,7 +48,7 @@ deps =
     niswitch-coverage: codecov
 
 depends =
-    niswitch-coverage: py{37,38,39,310}-niswitch-system_tests
+    niswitch-coverage: py{37,38,39,310,311}-niswitch-system_tests
 
 passenv =
     GIT_BRANCH
diff --git a/generated/nitclk/tox-system_tests.ini b/generated/nitclk/tox-system_tests.ini
index 229ce7cac..af77d7a8f 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 = py3-nitclk-wheel_dep,py{37,38,39,310}-nitclk-system_tests, py310-nitclk-coverage
+envlist = py3-nitclk-wheel_dep,py{37,38,39,310,311}-nitclk-system_tests, py311-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
@@ -53,7 +53,7 @@ deps =
     nitclk-coverage: codecov
 
 depends =
-    nitclk-coverage: py{37,38,39,310}-nitclk-system_tests
+    nitclk-coverage: py{37,38,39,310,311}-nitclk-system_tests
     nitclk-system_tests: py3-nitclk-wheel_dep,
 
 passenv =