13
13
14
14
__all__ = ['issiso' , 'timebase' , 'common_timebase' , 'timebaseEqual' ,
15
15
'isdtime' , 'isctime' ]
16
+
16
17
# Define module default parameter values
17
8000
18
_namedio_defaults = {
18
19
'namedio.state_name_delim' : '_' ,
@@ -57,6 +58,8 @@ def _name_or_default(self, name=None):
57
58
if name is None :
58
59
name = "sys[{}]" .format (NamedIOSystem ._idCounter )
59
60
NamedIOSystem ._idCounter += 1
61
+ elif re .match (r".*\..*" , name ):
62
+ raise ValueError (f"invalid system name '{ name } ' ('.' not allowed)" )
60
63
return name
61
64
62
65
# Check if system name is generic
@@ -174,7 +177,6 @@ def copy(self, name=None, use_prefix_suffix=True):
174
177
return newsys
175
178
176
179
def set_inputs (self , inputs , prefix = 'u' ):
177
-
178
180
"""Set the number/names of the system inputs.
179
181
180
182
Parameters
@@ -258,7 +260,7 @@ def set_states(self, states, prefix='x'):
258
260
259
261
"""
260
262
self .nstates , self .state_index = \
261
- _process_signal_list (states , prefix = prefix )
263
+ _process_signal_list (states , prefix = prefix , allow_dot = True )
262
264
263
265
def find_state (self , name ):
264
266
"""Find the index for a state given its name (`None` if not found)"""
@@ -613,7 +615,7 @@ def _process_dt_keyword(keywords, defaults={}, static=False):
613
615
614
616
615
617
# Utility function to parse a list of signals
616
- def _process_signal_list (signals , prefix = 's' ):
618
+ def _process_signal_list (signals , prefix = 's' , allow_dot = False ):
617
619
if signals is None :
618
620
# No information provided; try and make it up later
619
621
return None , {}
@@ -624,10 +626,17 @@ def _process_signal_list(signals, prefix='s'):
624
626
625
627
elif isinstance (signals , str ):
626
628
# Single string given => single signal with given name
629
+ if not allow_dot and re .match (r".*\..*" , signals ):
630
+ raise ValueError (
631
+ f"invalid signal name '{ signals } ' ('.' not allowed)" )
627
632
return 1 , {signals : 0 }
628
633
629
634
elif all (isinstance (s , str ) for s in signals ):
630
635
# Use the list of strings as the signal names
636
+ for signal in signals :
637
+ if not allow_dot and re .match (r".*\..*" , signal ):
638
+ raise ValueError (
639
+ f"invalid signal name '{ signal } ' ('.' not allowed)" )
631
640
return len (signals ), {signals [i ]: i for i in range (len (signals ))}
632
641
633
642
else :
0 commit comments