Skip to content

Commit

Permalink
pythongh-80527: Change support.requires_legacy_unicode_capi()
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
vstinner committed Aug 24, 2023
1 parent b780882 commit dfc7f82
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 @@ -1004,7 +1004,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 @@ -1020,7 +1020,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 @@ -1036,7 +1036,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 @@ -1052,7 +1052,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 @@ -588,7 +588,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 @@ -2920,7 +2920,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_str.py
Original file line number Diff line number Diff line change
Expand Up @@ -813,7 +813,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 @@ -2490,7 +2490,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 dfc7f82

Please sign in to comment.