Skip to content

Commit c4d1764

Browse files
authored
Merge pull request #857 from henklaak/main
Fix Interconnect name clobbering
2 parents 1f837a5 + 5f2e758 commit c4d1764

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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy