8000 Fix Interconnect name clobbering · python-control/python-control@5f2e758 · GitHub
[go: up one dir, main page]

Skip to content

Commit 5f2e758

Browse files
committed
Fix Interconnect name clobbering
1 parent 1f837a5 commit 5f2e758

File tree

2 files changed

+29
-8
lines changed

2 files changed

+29
-8
lines changed

control/iosys.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2840,17 +2840,17 @@ def interconnect(syslist, connections=None, inplist=None, outlist=None,
28402840
# Check for signal names without a system name
28412841
if isinstance(signal, str) and len(signal.split('.')) == 1:
28422842
# Get the signal name
2843-
name = signal[1:] if signal[0] == '-' else signal
2843+
signal_name = signal[1:] if signal[0] == '-' else signal
28442844
sign = '-' if signal[0] == '-' else ""
28452845

28462846
# Look for the signal name as a system input
28472847
for sys in syslist:
2848-
if name in sys.input_index.keys():
2849-
connection.append(sign + sys.name + "." + name)
2848+
if signal_name in sys.input_index.keys():
2849+
connection.append(sign + sys.name + "." + signal_name)
28502850

28512851
# Make sure we found the name
28522852
if len(connection) == 0:
2853-
raise ValueError("could not find signal %s" % name)
2853+
raise ValueError("could not find signal %s" % signal_name)
28542854
else:
28552855
new_inplist.append(connection)
28562856
else:
@@ -2868,17 +2868,17 @@ def interconnect(syslist, connections=None, inplist=None, outlist=None,
28682868
# Check for signal names without a system name
28692869
if isinstance(signal, str) and len(signal.split('.')) == 1:
28702870
# Get the signal name
2871-
name = signal[1:] if signal[0] == '-' else signal
2871+
signal_name = signal[1:] if signal[0] == '-' else signal
28722872
sign = '-' if signal[0] == '-' else ""
28732873

28742874
# Look for the signal name as a system output
28752875
for sys in syslist:
2876-
if name in sys.output_index.keys():
2877-
connection.append(sign + sys.name + "." + name)
2876+
if signal_name in sys.output_index.keys():
2877+
connection.append(sign + sys.name + "." + signal_name)
28782878

28792879
# Make sure we found the name
28802880
if len(connection) == 0:
2881-
raise ValueError("could not find signal %s" % name)
2881+
raise ValueError("could not find signal %s" % signal_name)
28822882
else:
28832883
new_outlist.append(connection)
28842884
else:

control/tests/iosys_test.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,6 +1619,27 @@ def secord_output(t, x, u, params={}):
16191619
return np.array([x[0]])
16201620

16211621

1622+
def test_interconnect_name():
1623+
g = ct.LinearIOSystem(ct.ss(-1,1,1,0),
1624+
inputs=['u'],
1625+
outputs=['y'],
1626+
name='g')
1627+
k = ct.LinearIOSystem(ct.ss(0,10,2,0),
1628+
inputs=['e'],
1629+
outputs=['z'],
1630+
name='k')
1631+
h = ct.interconnect([g,k],
1632+
inputs=['u','e'],
1633+
outputs=['y','z'])
1634+
assert re.match(r'sys\[\d+\]', h.name), f"Interconnect default name does not match 'sys[]' pattern, got '{h.name}'"
1635+
1636+
h = ct.interconnect([g,k],
1637+
inputs=['u','e'],
1638+
outputs=['y','z'],
1639+
name='ic_system')
1640+
assert h.name == 'ic_system', f"Interconnect name excpected 'ic_system', got '{h.name}'"
1641+
1642+
16221643
def test_interconnect_unused_input():
16231644
# test that warnings about unused inputs are reported, or not,
16241645
# as required

0 commit comments

Comments
 (0)
0