diff options
author | Michał Górny <mgorny@gentoo.org> | 2017-08-27 20:07:13 +0200 |
---|---|---|
committer | Michał Górny <mgorny@gentoo.org> | 2017-08-27 20:07:49 +0200 |
commit | d1e3eb8faa09741a67cc56a0ff6d5332a7bc6068 (patch) | |
tree | 0f4155884c4e0a6c925fe7ecb2c71dd986bef101 /dev-python/pycparser/files | |
parent | dev-python/pycparser: Enforce regenerating tables (diff) | |
download | gentoo-d1e3eb8faa09741a67cc56a0ff6d5332a7bc6068.tar.gz gentoo-d1e3eb8faa09741a67cc56a0ff6d5332a7bc6068.tar.bz2 gentoo-d1e3eb8faa09741a67cc56a0ff6d5332a7bc6068.zip |
dev-python/pycparser: Backport upstream -OO patch, #628386
Diffstat (limited to 'dev-python/pycparser/files')
-rw-r--r-- | dev-python/pycparser/files/pycparser-2.18-OO.patch | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/dev-python/pycparser/files/pycparser-2.18-OO.patch b/dev-python/pycparser/files/pycparser-2.18-OO.patch new file mode 100644 index 000000000000..ae42b2b9bd1d --- /dev/null +++ b/dev-python/pycparser/files/pycparser-2.18-OO.patch @@ -0,0 +1,56 @@ +From 673accec311a027c22b0718d753f8da922915305 Mon Sep 17 00:00:00 2001 +From: Eli Bendersky <eliben@gmail.com> +Date: Thu, 13 Jul 2017 20:25:29 -0700 +Subject: [PATCH] Address an import of pycparser in -OO mode. + +In this mode there are no docstrings; we don't want an instantiation of CParser +to fail, though it won't actually work correctly if used. + +See #197 and #198 +--- + pycparser/plyparser.py | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +diff --git a/pycparser/plyparser.py b/pycparser/plyparser.py +index af91922..b6640fa 100644 +--- a/pycparser/plyparser.py ++++ b/pycparser/plyparser.py +@@ -8,6 +8,7 @@ + # License: BSD + #----------------------------------------------------------------- + ++import warnings + + class Coord(object): + """ Coordinates of a syntactic element. Consists of: +@@ -87,12 +88,28 @@ def template(cls): + + See `parameterized` for more information on parameterized rules. + """ ++ issued_nodoc_warning = False + for attr_name in dir(cls): + if attr_name.startswith('p_'): + method = getattr(cls, attr_name) + if hasattr(method, '_params'): +- delattr(cls, attr_name) # Remove template method +- _create_param_rules(cls, method) ++ # Remove the template method ++ delattr(cls, attr_name) ++ # Create parameterized rules from this method; only run this if ++ # the method has a docstring. This is to address an issue when ++ # pycparser's users are installed in -OO mode which strips ++ # docstrings away. ++ # See: https://github.com/eliben/pycparser/pull/198/ and ++ # https://github.com/eliben/pycparser/issues/197 ++ # for discussion. ++ if method.__doc__ is not None: ++ _create_param_rules(cls, method) ++ elif not issued_nodoc_warning: ++ warnings.warn( ++ 'parsing methods must have __doc__ for pycparser to work properly', ++ RuntimeWarning, ++ stacklevel=2) ++ issued_nodoc_warning = True + return cls + + |