@@ -99,55 +99,60 @@ class DependentSet:
9999 A base name for the items in the set
100100 """
101101
102- def __init__ (self , name , _dependents = None , _dependent_sets = None ):
103- self ._dependents = _dependents or set ()
104- self ._dependent_sets = _dependent_sets or set ()
105- self ._name = name
102+ def __init__ (self , name , dependents = None , dependent_sets = None ):
103+ self .dependents = dependents or {}
104+ self .dependent_sets = dependent_sets or {}
105+ self .name = name
106106
107107 def __setattr__ (self , attr , value ):
108108 super ().__setattr__ (attr , value )
109109
110110 if isinstance (value , Dependent ):
111111 logger .log (logging .NOTSET ,
112- "Registering {0} to {1}" .format (value , self ._name ))
113- if value in self ._dependents :
112+ "Registering {0} to {1}" .format (value , self .name ))
113+ if value in self .dependents :
114114 logger .warn ("{0} has already been added to {1}. Could be "
115115 .format (value , self ) + "overwritten?" )
116- self ._dependents . add ( value )
116+ self .dependents [ attr ] = value
117117 elif isinstance (value , DependentSet ):
118- self ._dependent_sets .add (value )
118+ self .dependent_sets [attr ] = value
119+ else :
120+ pass # Just set it like a regular attribute
119121
120122 # String methods
121123 def __str__ (self ):
122124 return self .__repr__ ()
123125
124126 def __repr__ (self ):
125- return "{" + self ._name + "}"
127+ return "{" + self .name + "}"
126128
127129 def __hash__ (self ):
128- return hash ('dependent_set.' + self ._name )
130+ return hash ('dependent_set.' + self .name )
129131
130132 def __eq__ (self , other ):
131133 return hash (self ) == hash (other )
132134
133135 def __ne__ (self , other ):
134136 return not self == other
135137
138+ def all_dependencies (self ):
139+ return set (self .dependents .values ()).union (* self .dependent_sets .values ())
140+
136141 # Set methods
137142 def __len__ (self ):
138- return len (self ._dependents . union ( * self . _dependent_sets ))
143+ return len (self .all_dependencies ( ))
139144
140145 def __contains__ (self , item ):
141- return item in self ._dependents . union ( * self . _dependent_sets )
146+ return item in self .all_dependencies ( )
142147
143148 def __iter__ (self ):
144- return iter (self ._dependents . union ( * self . _dependent_sets ))
149+ return iter (self .all_dependencies ( ))
145150
146151 def __sub__ (self , other ):
147- return self ._dependents . union ( * self . _dependent_sets ) - other
152+ return self .all_dependencies ( ) - other
148153
149154 def __and__ (self , other ):
150- return self ._dependents . union ( * self . _dependent_sets ) & other
155+ return self .all_dependencies ( ) & other
151156
152157 def __or__ (self , other ):
153- return self ._dependents . union ( * self . _dependent_sets ) | other
158+ return self .all_dependencies ( ) | other
0 commit comments