diff --git a/wrap/gtwrap/interface_parser.py b/wrap/gtwrap/interface_parser.py index c936cfe11..b4328327f 100644 --- a/wrap/gtwrap/interface_parser.py +++ b/wrap/gtwrap/interface_parser.py @@ -11,13 +11,33 @@ Author: Duy Nguyen Ta, Fan Jiang, Matthew Sklar, Varun Agrawal, and Frank Dellae # pylint: disable=unnecessary-lambda, unused-import, expression-not-assigned, no-else-return, protected-access, too-few-public-methods, too-many-arguments +import sys import typing +import pyparsing from pyparsing import (CharsNotIn, Forward, Group, Keyword, Literal, OneOrMore, Optional, Or, ParseException, ParserElement, Suppress, Word, ZeroOrMore, alphanums, alphas, cppStyleComment, delimitedList, empty, nums, stringEnd) +# Fix deepcopy issue with pyparsing +# Can remove once https://github.com/pyparsing/pyparsing/issues/208 is resolved. +if sys.version_info >= (3, 8): + def fixed_get_attr(self, item): + """ + Fix for monkey-patching issue with deepcopy in pyparsing.ParseResults + """ + if item == '__deepcopy__': + raise AttributeError(item) + try: + return self[item] + except KeyError: + return "" + + # apply the monkey-patch + pyparsing.ParseResults.__getattr__ = fixed_get_attr + + ParserElement.enablePackrat() # rule for identifiers (e.g. variable names) diff --git a/wrap/gtwrap/template_instantiator.py b/wrap/gtwrap/template_instantiator.py index 331b20d02..a55a868a3 100644 --- a/wrap/gtwrap/template_instantiator.py +++ b/wrap/gtwrap/template_instantiator.py @@ -126,7 +126,7 @@ def instantiate_name(original_name, instantiations): inst_name = '' return "{}{}".format(original_name, "".join( - [inst.instantiated_name().capitalize().replace('_', '') for inst in instantiations])) + [inst.instantiated_name().capitalize() for inst in instantiations])) class InstantiatedMethod(parser.Method):