]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.12] gh-80527: Change support.requires_legacy_unicode_capi() (GH-108438) (#108446)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Fri, 25 Aug 2023 16:18:24 +0000 (09:18 -0700)
committerGitHub <noreply@github.com>
Fri, 25 Aug 2023 16:18:24 +0000 (18:18 +0200)
gh-80527: Change support.requires_legacy_unicode_capi() (GH-108438)

The decorator now requires to be called with parenthesis:

    @support.requires_legacy_unicode_capi()

instead of:

    @support.requires_legacy_unicode_capi

The implementation now only imports _testcapi when the decorator is
called, so "import test.support" no longer imports the _testcapi
extension.
(cherry picked from commit 995f4c48e11349fbfb9233e02b732d4534d3008e)

Co-authored-by: Victor Stinner <vstinner@python.org>
Lib/test/support/__init__.py
Lib/test/test_capi/test_getargs.py
Lib/test/test_csv.py
Lib/test/test_decimal.py
Lib/test/test_unicode.py

index c3c3cf0a71596cce01fada828b92866351941ce9..ef7b5c814d5d47c366783b2e340a0acb2a77fe70 100644 (file)
@@ -21,11 +21,6 @@ import warnings
 from .testresult import get_test_runner
 
 
-try:
-    from _testcapi import unicode_legacy_string
-except ImportError:
-    unicode_legacy_string = None
-
 __all__ = [
     # globals
     "PIPE_MAX_SIZE", "verbose", "max_memuse", "use_resources", "failfast",
@@ -507,8 +502,14 @@ def has_no_debug_ranges():
 def requires_debug_ranges(reason='requires co_positions / debug_ranges'):
     return unittest.skipIf(has_no_debug_ranges(), reason)
 
-requires_legacy_unicode_capi = unittest.skipUnless(unicode_legacy_string,
-                        'requires legacy Unicode C API')
+def requires_legacy_unicode_capi():
+    try:
+        from _testcapi import unicode_legacy_string
+    except ImportError:
+        unicode_legacy_string = None
+
+    return unittest.skipUnless(unicode_legacy_string,
+                               'requires legacy Unicode C API')
 
 # Is not actually used in tests, but is kept for compatibility.
 is_jython = sys.platform.startswith('java')
index 3792d1a6515b44ac78670a2bf7cfcdf68d8cf126..ec4100e976e50de047fd441f3eb1893a53d27798 100644 (file)
@@ -1021,7 +1021,7 @@ class String_TestCase(unittest.TestCase):
         buf = bytearray()
         self.assertRaises(ValueError, getargs_et_hash, 'abc\xe9', 'latin1', buf)
 
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     def test_u(self):
         from _testcapi import getargs_u
         with self.assertWarns(DeprecationWarning):
@@ -1037,7 +1037,7 @@ class String_TestCase(unittest.TestCase):
         with self.assertWarns(DeprecationWarning):
             self.assertRaises(TypeError, getargs_u, None)
 
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     def test_u_hash(self):
         from _testcapi import getargs_u_hash
         with self.assertWarns(DeprecationWarning):
@@ -1053,7 +1053,7 @@ class String_TestCase(unittest.TestCase):
         with self.assertWarns(DeprecationWarning):
             self.assertRaises(TypeError, getargs_u_hash, None)
 
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     def test_Z(self):
         from _testcapi import getargs_Z
         with self.assertWarns(DeprecationWarning):
@@ -1069,7 +1069,7 @@ class String_TestCase(unittest.TestCase):
         with self.assertWarns(DeprecationWarning):
             self.assertIsNone(getargs_Z(None))
 
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     def test_Z_hash(self):
         from _testcapi import getargs_Z_hash
         with self.assertWarns(DeprecationWarning):
index de7ac97d72cb8efaa311614861121df498f8b68d..bc9961e0831f0e4f50faed9b97be17e1a4839f5f 100644 (file)
@@ -282,7 +282,7 @@ class Test_Csv(unittest.TestCase):
             self.assertRaises(OSError, writer.writerows, BadIterable())
 
     @support.cpython_only
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     @warnings_helper.ignore_warnings(category=DeprecationWarning)
     def test_writerows_legacy_strings(self):
         import _testcapi
index d0ba34803c21e6236ef9f3a11730ab5dd8458008..4d3ea732212905f47c7a2ccbb428022a28c17007 100644 (file)
@@ -587,7 +587,7 @@ class ExplicitConstructionTest:
             self.assertRaises(InvalidOperation, Decimal, "1_2_\u00003")
 
     @cpython_only
-    @requires_legacy_unicode_capi
+    @requires_legacy_unicode_capi()
     @warnings_helper.ignore_warnings(category=DeprecationWarning)
     def test_from_legacy_strings(self):
         import _testcapi
@@ -2919,7 +2919,7 @@ class ContextAPItests:
                                               Overflow])
 
     @cpython_only
-    @requires_legacy_unicode_capi
+    @requires_legacy_unicode_capi()
     @warnings_helper.ignore_warnings(category=DeprecationWarning)
     def test_from_legacy_strings(self):
         import _testcapi
index 4ebbb9d32a3d757691758ba911b6eb040013d712..2fd66c93f9f3199f3fe5a6b99f1264abcc234a5f 100644 (file)
@@ -814,7 +814,7 @@ class UnicodeTest(string_tests.CommonTest,
         self.assertFalse("0".isidentifier())
 
     @support.cpython_only
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     @unittest.skipIf(_testcapi is None, 'need _testcapi module')
     def test_isidentifier_legacy(self):
         u = '𝖀𝖓𝖎𝖈𝖔𝖉𝖊'
@@ -2491,7 +2491,7 @@ class UnicodeTest(string_tests.CommonTest,
         self.assertEqual(len(args), 1)
 
     @support.cpython_only
-    @support.requires_legacy_unicode_capi
+    @support.requires_legacy_unicode_capi()
     @unittest.skipIf(_testcapi is None, 'need _testcapi module')
     def test_resize(self):
         for length in range(1, 100, 7):