[Python-checkins] bpo-34681: Rename class Pattern in sre_parse to State. (GH-9310)

Serhiy Storchaka webhook-mailer at python.org
Tue Sep 18 02:16:31 EDT 2018


https://github.com/python/cpython/commit/e0c19ddc661e56cc7e694be52d3e47f1dfe5af24
commit: e0c19ddc661e56cc7e694be52d3e47f1dfe5af24
branch: master
author: Serhiy Storchaka <storchaka at gmail.com>
committer: GitHub <noreply at github.com>
date: 2018-09-18T09:16:26+03:00
summary:

bpo-34681: Rename class Pattern in sre_parse to State. (GH-9310)

Also rename corresponding attributes, parameters and variables.

files:
M Lib/re.py
M Lib/sre_compile.py
M Lib/sre_parse.py

diff --git a/Lib/re.py b/Lib/re.py
index 94d486579e08..68d62dc2a93b 100644
--- a/Lib/re.py
+++ b/Lib/re.py
@@ -334,7 +334,7 @@ def __init__(self, lexicon, flags=0):
         self.lexicon = lexicon
         # combine phrases into a compound pattern
         p = []
-        s = sre_parse.Pattern()
+        s = sre_parse.State()
         s.flags = flags
         for phrase, action in lexicon:
             gid = s.opengroup()
diff --git a/Lib/sre_compile.py b/Lib/sre_compile.py
index e5216b792f6b..36670427db76 100644
--- a/Lib/sre_compile.py
+++ b/Lib/sre_compile.py
@@ -597,7 +597,7 @@ def isstring(obj):
 
 def _code(p, flags):
 
-    flags = p.pattern.flags | flags
+    flags = p.state.flags | flags
     code = []
 
     # compile info block
@@ -772,13 +772,13 @@ def compile(p, flags=0):
         dis(code)
 
     # map in either direction
-    groupindex = p.pattern.groupdict
-    indexgroup = [None] * p.pattern.groups
+    groupindex = p.state.groupdict
+    indexgroup = [None] * p.state.groups
     for k, i in groupindex.items():
         indexgroup[i] = k
 
     return _sre.compile(
-        pattern, flags | p.pattern.flags, code,
-        p.pattern.groups-1,
+        pattern, flags | p.state.flags, code,
+        p.state.groups-1,
         groupindex, tuple(indexgroup)
         )
diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index f414402f9379..84c912573e7f 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -71,8 +71,8 @@
 class Verbose(Exception):
     pass
 
-class Pattern:
-    # main pattern object.  keeps track of global attributes
+class State:
+    # keeps track of state for parsing
     def __init__(self):
         self.flags = 0
         self.groupdict = {}
@@ -108,8 +108,8 @@ def checklookbehindgroup(self, gid, source):
 
 class SubPattern:
     # a subpattern, in intermediate form
-    def __init__(self, pattern, data=None):
-        self.pattern = pattern
+    def __init__(self, state, data=None):
+        self.state = state
         if data is None:
             data = []
         self.data = data
@@ -163,7 +163,7 @@ def __delitem__(self, index):
         del self.data[index]
     def __getitem__(self, index):
         if isinstance(index, slice):
-            return SubPattern(self.pattern, self.data[index])
+            return SubPattern(self.state, self.data[index])
         return self.data[index]
     def __setitem__(self, index, code):
         self.data[index] = code
@@ -202,7 +202,7 @@ def getwidth(self):
                 lo = lo + 1
                 hi = hi + 1
             elif op is GROUPREF:
-                i, j = self.pattern.groupwidths[av]
+                i, j = self.state.groupwidths[av]
                 lo = lo + i
                 hi = hi + j
             elif op is GROUPREF_EXISTS:
@@ -940,28 +940,28 @@ def fix_flags(src, flags):
             raise ValueError("ASCII and LOCALE flags are incompatible")
     return flags
 
-def parse(str, flags=0, pattern=None):
+def parse(str, flags=0, state=None):
     # parse 're' pattern into list of (opcode, argument) tuples
 
     source = Tokenizer(str)
 
-    if pattern is None:
-        pattern = Pattern()
-    pattern.flags = flags
-    pattern.str = str
+    if state is None:
+        state = State()
+    state.flags = flags
+    state.str = str
 
     try:
-        p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
+        p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0)
     except Verbose:
         # the VERBOSE flag was switched on inside the pattern.  to be
         # on the safe side, we'll parse the whole thing again...
-        pattern = Pattern()
-        pattern.flags = flags | SRE_FLAG_VERBOSE
-        pattern.str = str
+        state = State()
+        state.flags = flags | SRE_FLAG_VERBOSE
+        state.str = str
         source.seek(0)
-        p = _parse_sub(source, pattern, True, 0)
+        p = _parse_sub(source, state, True, 0)
 
-    p.pattern.flags = fix_flags(str, p.pattern.flags)
+    p.state.flags = fix_flags(str, p.state.flags)
 
     if source.next is not None:
         assert source.next == ")"
@@ -972,7 +972,7 @@ def parse(str, flags=0, pattern=None):
 
     return p
 
-def parse_template(source, pattern):
+def parse_template(source, state):
     # parse 're' replacement string into list of literals and
     # group references
     s = Tokenizer(source)
@@ -982,14 +982,14 @@ def parse_template(source, pattern):
     literal = []
     lappend = literal.append
     def addgroup(index, pos):
-        if index > pattern.groups:
+        if index > state.groups:
             raise s.error("invalid group reference %d" % index, pos)
         if literal:
             literals.append(''.join(literal))
             del literal[:]
         groups.append((len(literals), index))
         literals.append(None)
-    groupindex = pattern.groupindex
+    groupindex = state.groupindex
     while True:
         this = sget()
         if this is None:



More information about the Python-checkins mailing list