#3247 Get rid of Py_FindMethod; use tp_members instead.
Otherwise dir(_sre.SRE_Match) returns an empty list.
First step: handle most occurrences, remove tp_getattr and fill the tp_methods and tp_members slots.
Add some test about attribute access.
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index 0b023c2..fd41b6e 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -326,6 +326,13 @@
self.assertNotEqual(re.match("^x{}$", "x{}"), None)
def test_getattr(self):
+ self.assertEqual(re.compile("(?i)(a)(b)").pattern, "(?i)(a)(b)")
+ self.assertEqual(re.compile("(?i)(a)(b)").flags, re.I)
+ self.assertEqual(re.compile("(?i)(a)(b)").groups, 2)
+ self.assertEqual(re.compile("(?i)(a)(b)").groupindex, {})
+ self.assertEqual(re.compile("(?i)(?P<first>a)(?P<other>b)").groupindex,
+ {'first': 1, 'other': 2})
+
self.assertEqual(re.match("(a)", "a").pos, 0)
self.assertEqual(re.match("(a)", "a").endpos, 1)
self.assertEqual(re.match("(a)", "a").string, "a")