Skip to content

Commit

Permalink
[3.12] pythongh-80527: Change support.requires_legacy_unicode_capi() (p…
Browse files Browse the repository at this point in the history
…ythonGH-108438) (python#108446)

pythongh-80527: Change support.requires_legacy_unicode_capi() (pythonGH-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 995f4c4)

Co-authored-by: Victor Stinner <vstinner@python.org>
  • Loading branch information
miss-islington and vstinner committed Aug 25, 2023
1 parent 2262190 commit 0eb6d87
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 16 deletions.
15 changes: 8 additions & 7 deletions Lib/test/support/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,6 @@
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",
Expand Down Expand Up @@ -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')
Expand Down
8 changes: 4 additions & 4 deletions Lib/test/test_capi/test_getargs.py
Original file line number Diff line number Diff line change
Expand Up @@ -1021,7 +1021,7 @@ def test_et_hash(self):
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):
Expand All @@ -1037,7 +1037,7 @@ def test_u(self):
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):
Expand All @@ -1053,7 +1053,7 @@ def test_u_hash(self):
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):
Expand All @@ -1069,7 +1069,7 @@ def test_Z(self):
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):
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_csv.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ def test_writerows_errors(self):
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
Expand Down
4 changes: 2 additions & 2 deletions Lib/test/test_decimal.py
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,7 @@ def test_explicit_from_string(self):
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
Expand Down Expand Up @@ -2919,7 +2919,7 @@ def test_none_args(self):
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
Expand Down
4 changes: 2 additions & 2 deletions Lib/test/test_unicode.py
Original file line number Diff line number Diff line change
Expand Up @@ -814,7 +814,7 @@ def test_isidentifier(self):
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 = '𝖀𝖓𝖎𝖈𝖔𝖉𝖊'
Expand Down Expand Up @@ -2491,7 +2491,7 @@ def test_getnewargs(self):
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):
Expand Down

0 comments on commit 0eb6d87

Please sign in to comment.