Skip to content

Commit 0eb1e00

Browse files
committed
Set namespace for TypeParam nodes
While technically the value should be in an annotation scope, I can't see any difference for our use. They are supposed to behave as if executing the parent's namespace.
1 parent b8c163e commit 0eb1e00

File tree

4 files changed

+17
-0
lines changed

4 files changed

+17
-0
lines changed

src/python_minifier/rename/mapper.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ def add_parent_to_functiondef(functiondef):
6161
for node in functiondef.decorator_list:
6262
add_parent(node, parent=functiondef, namespace=functiondef.namespace)
6363

64+
if hasattr(functiondef, 'type_params') and functiondef.type_params is not None:
65+
for node in functiondef.type_params:
66+
add_parent(node, parent=functiondef, namespace=functiondef.namespace)
67+
6468
if hasattr(functiondef, 'returns') and functiondef.returns is not None:
6569
add_parent(functiondef.returns, parent=functiondef, namespace=functiondef.namespace)
6670

@@ -89,6 +93,10 @@ def add_parent_to_classdef(classdef):
8993
for node in classdef.decorator_list:
9094
add_parent(node, parent=classdef, namespace=classdef.namespace)
9195

96+
if hasattr(classdef, 'type_params') and classdef.type_params is not None:
97+
for node in classdef.type_params:
98+
add_parent(node, parent=classdef, namespace=classdef.namespace)
99+
92100
def add_parent_to_comprehension(node, namespace):
93101
assert is_ast_node(node, (ast.GeneratorExp, 'SetComp', 'DictComp', 'ListComp'))
94102

src/python_minifier/transforms/remove_annotations.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ def visit_FunctionDef(self, node):
2525
node.body = self.suite(node.body, parent=node)
2626
node.decorator_list = [self.visit(d) for d in node.decorator_list]
2727

28+
if hasattr(node, 'type_params') and node.type_params is not None:
29+
node.type_params = [self.visit(t) for t in node.type_params]
30+
2831
if hasattr(node, 'returns') and self._options.remove_return_annotations:
2932
node.returns = None
3033

src/python_minifier/transforms/remove_object_base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ def visit_ClassDef(self, node):
1616
b for b in node.bases if not isinstance(b, ast.Name) or (isinstance(b, ast.Name) and b.id != 'object')
1717
]
1818

19+
if hasattr(node, 'type_params') and node.type_params is not None:
20+
node.type_params = [self.visit(t) for t in node.type_params]
21+
1922
node.body = [self.visit(n) for n in node.body]
2023

2124
return node

src/python_minifier/transforms/suite_transformer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ def __call__(self, node):
5050
def visit_ClassDef(self, node):
5151
node.bases = [self.visit(b) for b in node.bases]
5252

53+
if hasattr(node, 'type_params') and node.type_params is not None:
54+
node.type_params = [self.visit(t) for t in node.type_params]
55+
5356
node.body = self.suite(node.body, parent=node)
5457
node.decorator_list = [self.visit(d) for d in node.decorator_list]
5558

0 commit comments

Comments
 (0)