1313
1414__all__ = ['issiso' , 'timebase' , 'common_timebase' , 'timebaseEqual' ,
1515 'isdtime' , 'isctime' ]
16+
1617# Define module default parameter values
1718_namedio_defaults = {
1819 'namedio.state_name_delim' : '_' ,
@@ -57,6 +58,8 @@ def _name_or_default(self, name=None):
5758 if name is None :
5859 name = "sys[{}]" .format (NamedIOSystem ._idCounter )
5960 NamedIOSystem ._idCounter += 1
61+ elif re .match (r".*\..*" , name ):
62+ raise ValueError (f"invalid system name '{ name } ' ('.' not allowed)" )
6063 return name
6164
6265 # Check if system name is generic
@@ -174,7 +177,6 @@ def copy(self, name=None, use_prefix_suffix=True):
174177 return newsys
175178
176179 def set_inputs (self , inputs , prefix = 'u' ):
177-
178180 """Set the number/names of the system inputs.
179181
180182 Parameters
@@ -258,7 +260,7 @@ def set_states(self, states, prefix='x'):
258260
259261 """
260262 self .nstates , self .state_index = \
261- _process_signal_list (states , prefix = prefix )
263+ _process_signal_list (states , prefix = prefix , allow_dot = True )
262264
263265 def find_state (self , name ):
264266 """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):
613615
614616
615617# 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 ):
617619 if signals is None :
618620 # No information provided; try and make it up later
619621 return None , {}
@@ -624,10 +626,17 @@ def _process_signal_list(signals, prefix='s'):
624626
625627 elif isinstance (signals , str ):
626628 # 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)" )
627632 return 1 , {signals : 0 }
628633
629634 elif all (isinstance (s , str ) for s in signals ):
630635 # 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)" )
631640 return len (signals ), {signals [i ]: i for i in range (len (signals ))}
632641
633642 else :
0 commit comments