[lldb] Fix issue with re.Pattern availability
authorDave Lee <davelee.com@gmail.com>
Mon, 7 Nov 2022 21:20:48 +0000 (13:20 -0800)
committerDave Lee <davelee.com@gmail.com>
Tue, 8 Nov 2022 03:33:57 +0000 (19:33 -0800)
`re.Pattern` is introduced in Python 3.7. To support Python 3.6, fallback to typechecking against `SRE_Pattern`.

Differential Revision: https://reviews.llvm.org/D137582

lldb/packages/Python/lldbsuite/test/decorators.py
lldb/packages/Python/lldbsuite/test/lldbtest.py

index 3e3db09..dd47f68 100644 (file)
@@ -80,7 +80,9 @@ def _match_decorator_property(expected, actual):
     if isinstance(expected, no_match):
         return not _match_decorator_property(expected.item, actual)
 
-    if isinstance(expected, (re.Pattern, str)):
+    # Python 3.6 doesn't declare a `re.Pattern` type, get the dynamic type.
+    pattern_type = type(re.compile(''))
+    if isinstance(expected, (pattern_type, str)):
         return re.search(expected, actual) is not None
 
     if hasattr(expected, "__iter__"):
index 2d054f9..63bad9d 100644 (file)
@@ -282,11 +282,14 @@ class ValueCheck:
 
         test_base.assertSuccess(val.GetError())
 
+        # Python 3.6 doesn't declare a `re.Pattern` type, get the dynamic type.
+        pattern_type = type(re.compile(''))
+
         if self.expect_name:
             test_base.assertEqual(self.expect_name, val.GetName(),
                                   this_error_msg)
         if self.expect_value:
-            if isinstance(self.expect_value, re.Pattern):
+            if isinstance(self.expect_value, pattern_type):
                 test_base.assertRegex(val.GetValue(), self.expect_value,
                                       this_error_msg)
             else:
@@ -296,7 +299,7 @@ class ValueCheck:
             test_base.assertEqual(self.expect_type, val.GetDisplayTypeName(),
                                   this_error_msg)
         if self.expect_summary:
-            if isinstance(self.expect_summary, re.Pattern):
+            if isinstance(self.expect_summary, pattern_type):
                 test_base.assertRegex(val.GetSummary(), self.expect_summary,
                                       this_error_msg)
             else: