From 7bf3cb3ee871b6707b7f5114a7fde61485df450e Mon Sep 17 00:00:00 2001 From: Dave Lee Date: Mon, 7 Nov 2022 13:20:48 -0800 Subject: [PATCH] [lldb] Fix issue with re.Pattern availability `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 | 4 +++- lldb/packages/Python/lldbsuite/test/lldbtest.py | 7 +++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lldb/packages/Python/lldbsuite/test/decorators.py b/lldb/packages/Python/lldbsuite/test/decorators.py index 3e3db099cd4a6..dd47f6845ef2f 100644 --- a/lldb/packages/Python/lldbsuite/test/decorators.py +++ b/lldb/packages/Python/lldbsuite/test/decorators.py @@ -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__"): diff --git a/lldb/packages/Python/lldbsuite/test/lldbtest.py b/lldb/packages/Python/lldbsuite/test/lldbtest.py index 2d054f971cd02..63bad9d0241de 100644 --- a/lldb/packages/Python/lldbsuite/test/lldbtest.py +++ b/lldb/packages/Python/lldbsuite/test/lldbtest.py @@ -282,11 +282,14 @@ def check_value(self, test_base, val, error_msg=None): 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 @@ def check_value(self, test_base, val, error_msg=None): 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: