Description: python 3.12 compatibility
 https://github.com/python/cpython/issues/112282
Forwarded: https://github.com/Iotic-Labs/py-ubjson/pull/19
--- a/setup.py
+++ b/setup.py
@@ -28,17 +28,17 @@
     use_setuptools()
     from setuptools import setup  # pylint: disable=ungrouped-imports
 
-from distutils.core import Extension
-from distutils.command.build_ext import build_ext
-from distutils.errors import CCompilerError
-from distutils.errors import DistutilsPlatformError, DistutilsExecError
+from distutils.core import Extension  # pylint: disable=import-error
+from distutils.command.build_ext import build_ext  # pylint: disable=import-error
+from distutils.errors import CCompilerError  # pylint: disable=import-error
+from distutils.errors import DistutilsPlatformError, DistutilsExecError  # pylint: disable=import-error
 
 from ubjson import __version__ as version
 
 
 def load_description(filename):
     script_dir = os.path.abspath(os.path.dirname(__file__))
-    with open(os.path.join(script_dir, filename), 'r') as infile:
+    with open(os.path.join(script_dir, filename), 'r') as infile:  # pylint: disable=unspecified-encoding
         return infile.read()
 
 
@@ -113,6 +113,10 @@
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
         'Topic :: Software Development :: Libraries',
         'Topic :: Software Development :: Libraries :: Python Modules'
     ]
--- a/test/test.py
+++ b/test/test.py
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 
-from sys import version_info, getrecursionlimit, setrecursionlimit
+from sys import version_info, getrecursionlimit
 from functools import partial
 from io import BytesIO, SEEK_END
 from unittest import TestCase, skipUnless
@@ -464,23 +464,18 @@
         return (self.assertRaisesRegexp if PY2 else self.assertRaisesRegex)(*args, **kwargs)
 
     def test_recursion(self):
-        old_limit = getrecursionlimit()
-        setrecursionlimit(200)
-        try:
-            obj = current = []
-            for _ in range(getrecursionlimit() * 2):
-                new_list = []
-                current.append(new_list)
-                current = new_list
-
-            with self.assert_raises_regex(RuntimeError, 'recursion'):
-                self.ubjdumpb(obj)
-
-            raw = ARRAY_START * (getrecursionlimit() * 2)
-            with self.assert_raises_regex(RuntimeError, 'recursion'):
-                self.ubjloadb(raw)
-        finally:
-            setrecursionlimit(old_limit)
+        obj = current = []
+        for _ in range(getrecursionlimit() * 30):
+            new_list = []
+            current.append(new_list)
+            current = new_list
+
+        with self.assert_raises_regex(RuntimeError, 'recursion'):
+            self.ubjdumpb(obj)
+
+        raw = ARRAY_START * (getrecursionlimit() * 30)
+        with self.assert_raises_regex(RuntimeError, 'recursion'):
+            self.ubjloadb(raw)
 
     def test_encode_default(self):
         def default(obj):
--- a/ubjson/__main__.py
+++ b/ubjson/__main__.py
@@ -67,7 +67,7 @@
 specified, output goes to stdout.""", file=stderr)
         return 1
 
-    do_from_json = (argv[1] == 'fromjson')
+    do_from_json = argv[1] == 'fromjson'
     in_file = out_file = None
     try:
         # input
@@ -75,6 +75,7 @@
             in_stream = stdin if do_from_json else STDIN_RAW
         else:
             try:
+                # pylint: disable=consider-using-with
                 in_stream = in_file = open(argv[2], 'r' if do_from_json else 'rb')
             except IOError as ex:
                 __error('Failed to open input file for reading: %s' % ex)
@@ -84,6 +85,7 @@
             out_stream = STDOUT_RAW if do_from_json else stdout
         else:
             try:
+                # pylint: disable=unspecified-encoding,consider-using-with
                 out_stream = out_file = open(argv[3], 'wb' if do_from_json else 'w')
             except IOError as ex:
                 __error('Failed to open output file for writing: %s' % ex)
@@ -98,6 +100,8 @@
         if out_file:
             out_file.close()
 
+    return 0
+
 
 if __name__ == "__main__":
     exit(main())
--- a/ubjson/compat.py
+++ b/ubjson/compat.py
@@ -42,7 +42,7 @@
 
 from sys import stderr, stdout, stdin, version_info
 
-PY2 = (version_info[0] == 2)
+PY2 = version_info[0] == 2
 
 if PY2:
     # pylint: disable=undefined-variable
