Skip to content

Commit d613cbc

Browse files
committed
Add explicit context to name_from
1 parent 1be8f42 commit d613cbc

File tree

5 files changed

+15
-15
lines changed

5 files changed

+15
-15
lines changed

edg/abstract_parts/IoController.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ def _make_pinning(self) -> Dict[str, CircuitPort]:
175175
allocation_list.append((io_port.elt_type(), self.get(io_port.requested())))
176176
elif isinstance(io_port, Port): # derive Port connections from is_connected
177177
if self.get(io_port.is_connected()):
178-
requested = [self._name_of_child(io_port)] # generate requested name from port name if connected
178+
requested = [self._name_of_child(io_port, self)] # generate requested name from port name if connected
179179
else:
180180
requested = []
181181
allocation_list.append((type(io_port), requested))

edg/core/Array.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -130,12 +130,12 @@ def items(self) -> ItemsView[str, VectorType]:
130130
return self._elts.items()
131131

132132
# unlike most other LibraryElement types, the names are stored in _elts and _allocates
133-
def _name_of_child(self, subelt: Any, allow_unknown: bool = False) -> str:
133+
def _name_of_child(self, subelt: Any, context: Any, allow_unknown: bool = False) -> str:
134134
from .HierarchyBlock import Block
135135
block_parent = self._block_parent()
136136
assert isinstance(block_parent, Block)
137137

138-
if builder.get_enclosing_block() is block_parent or builder.get_enclosing_block() is None:
138+
if context is block_parent:
139139
# in block defining this port (direct elt definition), or in test top
140140
assert self._elts is not None, "can't get name on undefined vector"
141141
for (name, elt) in self._elts.items():
@@ -145,7 +145,7 @@ def _name_of_child(self, subelt: Any, allow_unknown: bool = False) -> str:
145145
return f"(unknown {subelt.__class__.__name__})"
146146
else:
147147
raise ValueError(f"no name for {subelt}")
148-
elif builder.get_enclosing_block() is block_parent._parent:
148+
elif context is block_parent._parent:
149149
# in block enclosing the block defining this port (allocate required)
150150
for (i, (suggested_name, allocate_elt)) in enumerate(self._requests):
151151
if subelt is allocate_elt:

edg/core/Core.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ def __setattr__(self, name: str, value: Any) -> None:
209209
self.manager.add_element(name, value)
210210
super().__setattr__(name, value)
211211

212-
def _name_of_child(self, subelt: Any, allow_unknown: bool = False) -> str:
212+
def _name_of_child(self, subelt: Any, context: Any, allow_unknown: bool = False) -> str:
213213
self_name = self.manager.name_of(subelt)
214214
if self_name is not None:
215215
return self_name
@@ -224,7 +224,7 @@ def _path_from(self, base: LibraryElement, allow_unknown: bool = False) -> List[
224224
return []
225225
else:
226226
assert self._parent is not None, "can't get path / name for non-bound element"
227-
return self._parent._path_from(base, allow_unknown) + [self._parent._name_of_child(self, allow_unknown)]
227+
return self._parent._path_from(base, allow_unknown) + [self._parent._name_of_child(self, base, allow_unknown)]
228228

229229
def _name_from(self, base: LibraryElement, allow_unknown: bool = False) -> str:
230230
"""Returns the path name to (inclusive) this element from some starting point.

edg/core/DesignTop.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def _populate_def_proto_block_contents(self, pb: edgir.HierarchyBlock) -> edgir.
8484
else:
8585
raise TypeError
8686
assert isinstance(multipack_block, MultipackBlock)
87-
multipack_name = self._name_of_child(multipack_block)
87+
multipack_name = self._name_of_child(multipack_block, self)
8888
multipack_ref_base = edgir.LocalPath()
8989
multipack_ref_base.steps.add().name = multipack_name
9090
multipack_ref_map = multipack_block._get_ref_map(multipack_ref_base)
@@ -96,9 +96,9 @@ def _populate_def_proto_block_contents(self, pb: edgir.HierarchyBlock) -> edgir.
9696
packed_ref_map = multipack_part_block._get_ref_map(packed_ref_base)
9797

9898
if isinstance(multipack_part, Block):
99-
part_name = multipack_block._name_of_child(multipack_part)
99+
part_name = multipack_block._name_of_child(multipack_part, self)
100100
elif isinstance(multipack_part, PackedBlockAllocate):
101-
part_name = multipack_block._name_of_child(multipack_part.parent)
101+
part_name = multipack_block._name_of_child(multipack_part.parent, self)
102102
assert multipack_part.suggested_name, "multipack parts must have suggested name, for consistency"
103103
part_name += f"[{multipack_part.suggested_name}]"
104104
else:
@@ -111,7 +111,7 @@ def _populate_def_proto_block_contents(self, pb: edgir.HierarchyBlock) -> edgir.
111111
packed_port_port = packed_port.port
112112
else:
113113
raise TypeError
114-
packed_port_name = multipack_part_block._name_of_child(packed_port_port)
114+
packed_port_name = multipack_part_block._name_of_child(packed_port_port, self)
115115
exported_tunnel = edgir.add_pair(pb.constraints,
116116
f"(packed){multipack_name}.{part_name}.{packed_port_name}").exportedTunnel
117117
exported_tunnel.internal_block_port.ref.CopyFrom(multipack_ref_map[exterior_port])
@@ -123,13 +123,13 @@ def _populate_def_proto_block_contents(self, pb: edgir.HierarchyBlock) -> edgir.
123123

124124
for multipack_param, packed_param in packing_rule.tunnel_assigns.items():
125125
if isinstance(packed_param, ConstraintExpr):
126-
packed_param_name = multipack_part_block._name_of_child(packed_param)
126+
packed_param_name = multipack_part_block._name_of_child(packed_param, self)
127127
assign_tunnel = edgir.add_pair(pb.constraints,
128128
f"(packed){multipack_name}.{part_name}.{packed_param_name}").assignTunnel
129129
assign_tunnel.dst.CopyFrom(multipack_ref_map[multipack_param])
130130
assign_tunnel.src.ref.CopyFrom(packed_ref_map[packed_param])
131131
elif isinstance(packed_param, PackedBlockParamArray):
132-
multipack_param_name = multipack_block._name_of_child(multipack_param)
132+
multipack_param_name = multipack_block._name_of_child(multipack_param, self)
133133
constr_name = f"(packed){multipack_name}.{multipack_param_name}"
134134
packed_params.setdefault(constr_name, (multipack_ref_map[multipack_param], []))[1].append(
135135
packed_ref_map[packed_param.param])
@@ -138,14 +138,14 @@ def _populate_def_proto_block_contents(self, pb: edgir.HierarchyBlock) -> edgir.
138138

139139
for multipack_param, unpacked_param in packing_rule.tunnel_unpack_assigns.items():
140140
if isinstance(unpacked_param, ConstraintExpr):
141-
multipack_param_name = multipack_block._name_of_child(multipack_param)
141+
multipack_param_name = multipack_block._name_of_child(multipack_param, self)
142142
# TODO need better constraint naming scheme
143143
assign_tunnel = edgir.add_pair(pb.constraints,
144144
f"(unpacked){multipack_name}.{part_name}.{multipack_param_name}").assignTunnel
145145
assign_tunnel.dst.CopyFrom(packed_ref_map[unpacked_param])
146146
assign_tunnel.src.ref.CopyFrom(multipack_ref_map[multipack_param])
147147
elif isinstance(unpacked_param, PackedBlockParam):
148-
multipack_param_name = multipack_block._name_of_child(multipack_param)
148+
multipack_param_name = multipack_block._name_of_child(multipack_param, self)
149149
# TODO need better constraint naming scheme
150150
assign_tunnel = edgir.add_pair(pb.constraints,
151151
f"(unpacked){multipack_name}.{part_name}.{multipack_param_name}").assignTunnel

edg/core/Ports.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ def _convert(self, adapter: PortAdapter[ConvertTargetType]) -> ConvertTargetType
183183
adapter_inst = enclosing_block.Block(adapter)
184184
adapter_name_suffix = f"_{self._adapter_count}" if self._adapter_count > 0 else ""
185185
enclosing_block.manager.add_element(
186-
f"(adapter){block_parent._name_from(enclosing_block)}.{self._name_from(block_parent)}{adapter_name_suffix}",
186+
f"(adapter){self._name_from(enclosing_block)}{adapter_name_suffix}",
187187
adapter_inst)
188188
enclosing_block.connect(self, adapter_inst.src) # we don't name it to avoid explicit name conflicts
189189
self._adapter_count += 1

0 commit comments

Comments
 (0)