diff options
| author | Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D) <greg@krypto.org> | 2016-09-08 00:46:26 (GMT) |
|---|---|---|
| committer | Gregory P. Smith ext:(%20%5BGoogle%20Inc.%5D) <greg@krypto.org> | 2016-09-08 00:46:26 (GMT) |
| commit | 0c578d62fce2b98ee4e3be1e171569a67fe56178 (patch) | |
| tree | a39ae918d07825ec196ff03c80a971ab70d0e5d8 /Lib/lib2to3/pgen2/driver.py | |
| parent | ef37dfcd841bc1565a3e40bbcd0f5354aa150965 (diff) | |
| parent | dd1c638b92ae1552207451c82ed95aa2c1f07201 (diff) | |
| download | cpython-0c578d62fce2b98ee4e3be1e171569a67fe56178.zip cpython-0c578d62fce2b98ee4e3be1e171569a67fe56178.tar.gz cpython-0c578d62fce2b98ee4e3be1e171569a67fe56178.tar.bz2 | |
lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
between runs given the same Grammar.txt input regardless of the hash
randomization setting.
Diffstat (limited to 'Lib/lib2to3/pgen2/driver.py')
| -rw-r--r-- | Lib/lib2to3/pgen2/driver.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Lib/lib2to3/pgen2/driver.py b/Lib/lib2to3/pgen2/driver.py index 3ccc69d..a27b9cb 100644 --- a/Lib/lib2to3/pgen2/driver.py +++ b/Lib/lib2to3/pgen2/driver.py @@ -106,16 +106,19 @@ class Driver(object): return self.parse_tokens(tokens, debug) +def _generate_pickle_name(gt): + head, tail = os.path.splitext(gt) + if tail == ".txt": + tail = "" + return head + tail + ".".join(map(str, sys.version_info)) + ".pickle" + + def load_grammar(gt="Grammar.txt", gp=None, save=True, force=False, logger=None): """Load the grammar (maybe from a pickle).""" if logger is None: logger = logging.getLogger() - if gp is None: - head, tail = os.path.splitext(gt) - if tail == ".txt": - tail = "" - gp = head + tail + ".".join(map(str, sys.version_info)) + ".pickle" + gp = _generate_pickle_name(gt) if gp is None else gp if force or not _newer(gp, gt): logger.info("Generating grammar tables from %s", gt) g = pgen.generate_grammar(gt) @@ -124,7 +127,7 @@ def load_grammar(gt="Grammar.txt", gp=None, try: g.dump(gp) except OSError as e: - logger.info("Writing failed:"+str(e)) + logger.info("Writing failed: %s", e) else: g = grammar.Grammar() g.load(gp) |
