[python-astropy] 02/02: Bring an unmodified copy of ply

Ole Streicher olebole-guest at moszumanska.debian.org
Sun Jul 6 19:24:37 UTC 2014


This is an automated email from the git hooks/post-receive script.

olebole-guest pushed a commit to branch debian
in repository python-astropy.

commit f3f5cb16637d53563593af632d7eed8dd213c7e7
Author: Ole Streicher <debian at liska.ath.cx>
Date:   Sun Jul 6 21:24:10 2014 +0200

    Bring an unmodified copy of ply
---
 debian/patches/series               |   1 +
 debian/patches/use_extern_ply.patch | 214 ++++++++++++++++++++++++++++++++++++
 2 files changed, 215 insertions(+)

diff --git a/debian/patches/series b/debian/patches/series
index 70f129b..611fd83 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 mark_known_failures.patch
 fix_checksum_test.patch
+use_extern_ply.patch
diff --git a/debian/patches/use_extern_ply.patch b/debian/patches/use_extern_ply.patch
new file mode 100644
index 0000000..5124485
--- /dev/null
+++ b/debian/patches/use_extern_ply.patch
@@ -0,0 +1,214 @@
+From 3ac3b5e3522a270ef88f46aae5474bc201549b54 Mon Sep 17 00:00:00 2001
+From: Sergio Pascual <sergiopr at fis.ucm.es>
+Date: Thu, 22 May 2014 14:37:05 +0200
+Subject: [PATCH] Bring an unmodified copy of ply
+--- a/astropy/extern/ply/lex.py
++++ b/astropy/extern/ply/lex.py
+@@ -34,7 +34,7 @@
+ __version__    = "3.4"
+ __tabversion__ = "3.2"       # Version of table file used
+ 
+-import re, sys, types, copy, os, inspect
++import re, sys, types, copy, os
+ 
+ # This tuple contains known string types
+ try:
+@@ -548,7 +548,7 @@
+         self.tokens     = []
+         self.reflags    = reflags
+         self.stateinfo  = { 'INITIAL' : 'inclusive'}
+-        self.modules    = {}
++        self.files      = {}
+         self.error      = 0
+ 
+         if log is None:
+@@ -729,8 +729,7 @@
+             for fname, f in self.funcsym[state]:
+                 line = func_code(f).co_firstlineno
+                 file = func_code(f).co_filename
+-                module = inspect.getmodule(f)
+-                self.modules[module] = 1
++                self.files[file] = 1
+ 
+                 tokname = self.toknames[fname]
+                 if isinstance(f, types.MethodType):
+@@ -800,8 +799,7 @@
+                 f = efunc
+                 line = func_code(f).co_firstlineno
+                 file = func_code(f).co_filename
+-                module = inspect.getmodule(f)
+-                self.modules[module] = 1
++                self.files[file] = 1
+ 
+                 if isinstance(f, types.MethodType):
+                     reqargs = 2
+@@ -816,26 +814,35 @@
+                     self.log.error("%s:%d: Rule '%s' requires an argument", file,line,f.__name__)
+                     self.error = 1
+ 
+-        for module in self.modules:
+-            self.validate_module(module)
++        for f in self.files:
++            self.validate_file(f)
+ 
+ 
+     # -----------------------------------------------------------------------------
+-    # validate_module()
++    # validate_file()
+     #
+     # This checks to see if there are duplicated t_rulename() functions or strings
+     # in the parser input file.  This is done using a simple regular expression
+-    # match on each line in the source code of the given module.
++    # match on each line in the given file.
+     # -----------------------------------------------------------------------------
+ 
+-    def validate_module(self, module):
+-        lines, linen = inspect.getsourcelines(module)
++    def validate_file(self,filename):
++        import os.path
++        base,ext = os.path.splitext(filename)
++        if ext != '.py': return         # No idea what the file is. Return OK
++
++        try:
++            f = open(filename)
++            lines = f.readlines()
++            f.close()
++        except IOError:
++            return                      # Couldn't find the file.  Don't worry about it
+ 
+         fre = re.compile(r'\s*def\s+(t_[a-zA-Z_0-9]*)\(')
+         sre = re.compile(r'\s*(t_[a-zA-Z_0-9]*)\s*=')
+ 
+         counthash = { }
+-        linen += 1
++        linen = 1
+         for l in lines:
+             m = fre.match(l)
+             if not m:
+@@ -846,7 +853,6 @@
+                 if not prev:
+                     counthash[name] = linen
+                 else:
+-                    filename = inspect.getsourcefile(module)
+                     self.log.error("%s:%d: Rule %s redefined. Previously defined on line %d",filename,linen,name,prev)
+                     self.error = 1
+             linen += 1
+--- a/astropy/extern/ply/yacc.py
++++ b/astropy/extern/ply/yacc.py
+@@ -84,7 +84,7 @@
+ 
+ pickle_protocol = 0            # Protocol to use when writing pickle files
+ 
+-import re, types, sys, os.path, inspect
++import re, types, sys, os.path
+ 
+ # Compatibility function for python 2.6/3.0
+ if sys.version_info[0] < 3:
+@@ -1191,7 +1191,7 @@
+         return len(self.prod)
+ 
+     def __nonzero__(self):
+-        return True
++        return 1
+ 
+     def __getitem__(self,index):
+         return self.prod[index]
+@@ -2765,7 +2765,7 @@
+         self.start      = None
+         self.error_func = None
+         self.tokens     = None
+-        self.modules    = {}
++        self.files      = {}
+         self.grammar    = []
+         self.error      = 0
+ 
+@@ -2789,7 +2789,7 @@
+         self.validate_tokens()
+         self.validate_precedence()
+         self.validate_pfunctions()
+-        self.validate_modules()
++        self.validate_files()
+         return self.error
+ 
+     # Compute a signature over the grammar
+@@ -2814,7 +2814,7 @@
+         return sig.digest()
+ 
+     # -----------------------------------------------------------------------------
+-    # validate_modules()
++    # validate_file()
+     #
+     # This method checks to see if there are duplicated p_rulename() functions
+     # in the parser module file.  Without this function, it is really easy for
+@@ -2824,12 +2824,20 @@
+     # to try and detect duplicates.
+     # -----------------------------------------------------------------------------
+ 
+-    def validate_modules(self):
++    def validate_files(self):
+         # Match def p_funcname(
+         fre = re.compile(r'\s*def\s+(p_[a-zA-Z_0-9]*)\(')
+ 
+-        for module in self.modules.keys():
+-            lines, linen = inspect.getsourcelines(module)
++        for filename in self.files.keys():
++            base,ext = os.path.splitext(filename)
++            if ext != '.py': return 1          # No idea. Assume it's okay.
++
++            try:
++                f = open(filename)
++                lines = f.readlines()
++                f.close()
++            except IOError:
++                continue
+ 
+             counthash = { }
+             for linen,l in enumerate(lines):
+@@ -2841,7 +2849,6 @@
+                     if not prev:
+                         counthash[name] = linen
+                     else:
+-                        filename = inspect.getsourcefile(module)
+                         self.log.warning("%s:%d: Function %s redefined. Previously defined on line %d", filename,linen,name,prev)
+ 
+     # Get the start symbol
+@@ -2872,8 +2879,7 @@
+ 
+             eline = func_code(self.error_func).co_firstlineno
+             efile = func_code(self.error_func).co_filename
+-            module = inspect.getmodule(self.error_func)
+-            self.modules[module] = 1
++            self.files[efile] = 1
+ 
+             if (func_code(self.error_func).co_argcount != 1+ismethod):
+                 self.log.error("%s:%d: p_error() requires 1 argument",efile,eline)
+@@ -2956,8 +2962,8 @@
+             if name == 'p_error': continue
+             if isinstance(item,(types.FunctionType,types.MethodType)):
+                 line = func_code(item).co_firstlineno
+-                module = inspect.getmodule(item)
+-                p_functions.append((line,module,name,item.__doc__))
++                file = func_code(item).co_filename
++                p_functions.append((line,file,name,item.__doc__))
+ 
+         # Sort all of the actions by line number
+         p_functions.sort()
+@@ -2973,8 +2979,7 @@
+             self.error = 1
+             return
+ 
+-        for line, module, name, doc in self.pfuncs:
+-            file = inspect.getsourcefile(module)
++        for line, file, name, doc in self.pfuncs:
+             func = self.pdict[name]
+             if isinstance(func, types.MethodType):
+                 reqargs = 2
+@@ -3000,7 +3005,7 @@
+ 
+                 # Looks like a valid grammar rule
+                 # Mark the file in which defined.
+-                self.modules[module] = 1
++                self.files[file] = 1
+ 
+         # Secondary validation step that looks for p_ definitions that are not functions
+         # or functions that look like they might be grammar rules.

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-astro/packages/python-astropy.git



More information about the debian-science-commits mailing list