Skip to content

Commit

Permalink
Enable renaming of type parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
dflook committed Sep 1, 2024
1 parent 333acfe commit d5cc78d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/python_minifier/rename/bind_names.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,18 @@ def visit_MatchMapping(self, node):

self.generic_visit(node)

def visit_TypeVar(self, node):
if node.name not in node.namespace.nonlocal_names:
self.get_binding(node.name, node.namespace).add_reference(node)

def visit_TypeVarTuple(self, node):
if node.name not in node.namespace.nonlocal_names:
self.get_binding(node.name, node.namespace).add_reference(node)

def visit_ParamSpec(self, node):
if node.name not in node.namespace.nonlocal_names:
self.get_binding(node.name, node.namespace).add_reference(node)

def bind_names(module):
"""
Bind names to their local namespace
Expand Down
24 changes: 24 additions & 0 deletions src/python_minifier/rename/binding.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,12 @@ def additional_byte_cost(self):
pass
elif is_ast_node(node, 'MatchMapping'):
pass
elif is_ast_node(node, 'TypeVar'):
pass
elif is_ast_node(node, 'TypeVarTuple'):
pass
elif is_ast_node(node, 'ParamSpec'):
pass

else:
raise AssertionError('Unknown reference node')
Expand Down Expand Up @@ -177,6 +183,12 @@ def old_mention_count(self):
pass
elif is_ast_node(node, 'MatchMapping'):
pass
elif is_ast_node(node, 'TypeVar'):
pass
elif is_ast_node(node, 'TypeVarTuple'):
pass
elif is_ast_node(node, 'ParamSpec'):
pass

else:
raise AssertionError('Unknown reference node')
Expand Down Expand Up @@ -220,6 +232,12 @@ def new_mention_count(self):
mentions += 1
elif is_ast_node(node, 'MatchMapping'):
mentions += 1
elif is_ast_node(node, 'TypeVar'):
mentions += 1
elif is_ast_node(node, 'TypeVarTuple'):
mentions += 1
elif is_ast_node(node, 'ParamSpec'):
mentions += 1

else:
raise AssertionError('Unknown reference node')
Expand Down Expand Up @@ -386,6 +404,12 @@ def rename(self, new_name):
node.name = new_name
elif is_ast_node(node, 'MatchMapping'):
node.rest = new_name
elif is_ast_node(node, 'TypeVar'):
node.name = new_name
elif is_ast_node(node, 'TypeVarTuple'):
node.name = new_name
elif is_ast_node(node, 'ParamSpec'):
node.name = new_name

if func_namespace_binding is not None:
func_namespace_binding.body = list(
Expand Down

0 comments on commit d5cc78d

Please sign in to comment.