mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-107715: Escape class name in regular expression (GH-107716)
This patch escapes the class name before embedding it in the regular expression for `pat` in `doctest.DocTestFinder._find_lineno`. While class names do not ordinarily contain special characters, it is possible to encounter these when a class is created dynamically. Escaping the name will correctly return `None` in this scenario, rather than potentially matching a different class or raising `re.error` depending on the symbols used.
This commit is contained in:
parent
ed64204716
commit
8579327879
2 changed files with 2 additions and 1 deletions
|
@ -1110,7 +1110,7 @@ class DocTestFinder:
|
|||
if source_lines is None:
|
||||
return None
|
||||
pat = re.compile(r'^\s*class\s*%s\b' %
|
||||
getattr(obj, '__name__', '-'))
|
||||
re.escape(getattr(obj, '__name__', '-')))
|
||||
for i, line in enumerate(source_lines):
|
||||
if pat.match(line):
|
||||
lineno = i
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue