Skip to content

Commit 37d3148

Browse files
committed
Interpret str-type args to interconnect as non-sequence
If the arguments `inputs` or `outputs` (or their aliases `input` or `output`) are of type str, treat as a list containing that string. Fixes gh-692.
1 parent e8db508 commit 37d3148

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

control/iosys.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2519,6 +2519,11 @@ def interconnect(syslist, connections=None, inplist=[], outlist=[],
25192519
# Use an empty connections list
25202520
connections = []
25212521

2522+
if isinstance(inputs, str):
2523+
inputs = [inputs]
2524+
if isinstance(outputs, str):
2525+
outputs = [outputs]
2526+
25222527
# If inplist/outlist is not present, try using inputs/outputs instead
25232528
if not inplist and inputs is not None:
25242529
inplist = list(inputs)

control/tests/interconnect_test.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,3 +210,23 @@ def test_interconnect_exceptions():
210210

211211
with pytest.raises(TypeError, match="unknown parameter"):
212212
sumblk = ct.summing_junction(input_count=2, output_count=2)
213+
214+
215+
def test_string_inputoutput():
216+
# regression test for gh-692
217+
P1 = ct.rss(2, 1, 1)
218+
P1_iosys = ct.LinearIOSystem(P1, inputs='u1', outputs='y1')
219+
P2 = ct.rss(2, 1, 1)
220+
P2_iosys = ct.LinearIOSystem(P2, inputs='y1', outputs='y2')
221+
222+
P_s1 = ct.interconnect([P1_iosys, P2_iosys], inputs='u1', outputs=['y2'])
223+
assert P_s1.input_index == {'u1' : 0}
224+
225+
P_s2 = ct.interconnect([P1_iosys, P2_iosys], input='u1', outputs=['y2'])
226+
assert P_s2.input_index == {'u1' : 0}
227+
228+
P_s1 = ct.interconnect([P1_iosys, P2_iosys], inputs=['u1'], outputs='y2')
229+
assert P_s1.output_index == {'y2' : 0}
230+
231+
P_s2 = ct.interconnect([P1_iosys, P2_iosys], inputs=['u1'], output='y2')
232+
assert P_s2.output_index == {'y2' : 0}

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