From 8fdedff8e7683689b7cada78499f959eb8fb0229 Mon Sep 17 00:00:00 2001 From: David Wilson Date: Thu, 11 Aug 2016 02:48:17 +0100 Subject: [PATCH] Do docstring and comment removal before compression. --- econtext/master.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/econtext/master.py b/econtext/master.py index 7eb6a4e0..8f97baf7 100644 --- a/econtext/master.py +++ b/econtext/master.py @@ -18,6 +18,16 @@ LOG = logging.getLogger('econtext') IOLOG = logging.getLogger('econtext.io') RLOG = logging.getLogger('econtext.ctx') +DOCSTRING_RE = re.compile(r'""".+?"""', re.M | re.S) +COMMENT_RE = re.compile(r'^\s*#.*$', re.M) + + +def MinimizeSource(source): + subber = lambda match: '""' + ('\n' * match.group(0).count('\n')) + source = DOCSTRING_RE.sub(subber, source) + source = COMMENT_RE.sub('\n', source) + return source.replace(' ', '\t') + def GetChildModules(module, prefix): it = pkgutil.iter_modules(module.__path__, prefix) @@ -105,7 +115,7 @@ class ModuleResponder(object): else: present = None - compressed = zlib.compress(source) + compressed = zlib.compress(MinimizeSource(source)) reply = (is_pkg, present, path, compressed) self._context.Enqueue(reply_to, reply) except Exception: @@ -186,7 +196,7 @@ class LocalStream(econtext.core.Stream): LOG.level or logging.getLogger().level or logging.INFO, ),) - compressed = zlib.compress(source) + compressed = zlib.compress(MinimizeSource(source)) preamble = str(len(compressed)) + '\n' + compressed econtext.core.write_all(self.write_side.fd, preamble) assert os.read(self.read_side.fd, 3) == 'OK\n'