Skip to content

Commit 3c4546b

Browse files
committed
Handle chained indexing and attribute access in _ParameterReplacer
1 parent e4062a5 commit 3c4546b

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

src/ninetoothed/generation.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -959,6 +959,37 @@ def __init__(self, mapping):
959959
def visit_Name(self, node):
960960
return self._mapping.get(node.id, node)
961961

962+
def visit_Attribute(self, node):
963+
self.generic_visit(node)
964+
965+
if isinstance(node.value, ast.Subscript):
966+
return ast.Attribute(
967+
value=ast.Attribute(value=node.value.value, attr="dtype"),
968+
attr=node.attr,
969+
ctx=node.ctx,
970+
)
971+
972+
return node
973+
974+
def visit_Subscript(self, node):
975+
self.generic_visit(node)
976+
977+
def _get_slice_elements(slice):
978+
return slice.elts if isinstance(slice, ast.Tuple) else [slice]
979+
980+
if isinstance(node.value, ast.Subscript):
981+
return ast.Subscript(
982+
value=node.value.value,
983+
slice=ast.Tuple(
984+
elts=_get_slice_elements(node.value.slice)
985+
+ _get_slice_elements(node.slice),
986+
ctx=ast.Load(),
987+
),
988+
ctx=node.ctx,
989+
)
990+
991+
return node
992+
962993
class _LocalVariableRenamer(ast.NodeTransformer):
963994
def __init__(self, prefix, local_vars):
964995
self._prefix = prefix

0 commit comments

Comments
 (0)