From c9185cf4435a63c4e1a4906083129f8f8d061e8d Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 3 May 2025 11:22:50 +0300 Subject: [PATCH 1/2] gh-133210: Fix `test_rlcompleter` in `--without-doc-strings` mode --- Lib/test/test_rlcompleter.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py index 1cff6a218f8d75..b1cade5a830dbd 100644 --- a/Lib/test/test_rlcompleter.py +++ b/Lib/test/test_rlcompleter.py @@ -54,11 +54,24 @@ def test_attr_matches(self): ['str.{}('.format(x) for x in dir(str) if x.startswith('s')]) self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) - expected = sorted({'None.%s%s' % (x, - '()' if x in ('__init_subclass__', '__class__') - else '' if x == '__doc__' - else '(') - for x in dir(None)}) + + def create_expected_for_none(): + items = set() + for x in dir(None): + if ( + x == '__init_subclass__' + # When `--without-doc-strings` is used, `__class__` + # won't have a known signature. + or (x == '__class__' and not MISSING_C_DOCSTRINGS) + ): + items.add(f'None.{x}()') + elif x == '__doc__': + items.add(f'None.{x}') + else: + items.add(f'None.{x}(') + return sorted(items) + + expected = create_expected_for_none() self.assertEqual(self.stdcompleter.attr_matches('None.'), expected) self.assertEqual(self.stdcompleter.attr_matches('None._'), expected) self.assertEqual(self.stdcompleter.attr_matches('None.__'), expected) From ab4eb39f516261f763193db6f43e6fb276d9ba7e Mon Sep 17 00:00:00 2001 From: sobolevn Date: Sat, 3 May 2025 14:50:50 +0300 Subject: [PATCH 2/2] Address review --- Lib/test/test_rlcompleter.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_rlcompleter.py b/Lib/test/test_rlcompleter.py index b1cade5a830dbd..d403a0fe96be3d 100644 --- a/Lib/test/test_rlcompleter.py +++ b/Lib/test/test_rlcompleter.py @@ -56,14 +56,16 @@ def test_attr_matches(self): self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) def create_expected_for_none(): + if not MISSING_C_DOCSTRINGS: + parentheses = ('__init_subclass__', '__class__') + else: + # When `--without-doc-strings` is used, `__class__` + # won't have a known signature. + parentheses = ('__init_subclass__',) + items = set() for x in dir(None): - if ( - x == '__init_subclass__' - # When `--without-doc-strings` is used, `__class__` - # won't have a known signature. - or (x == '__class__' and not MISSING_C_DOCSTRINGS) - ): + if x in parentheses: items.add(f'None.{x}()') elif x == '__doc__': items.add(f'None.{x}')