vregistry.py
branchtls-sprint
changeset 946 a130b5ceeca9
parent 943 9fdfa8d38359
child 1046 52ee022d87e3
equal deleted inserted replaced
945:912b604f0e42 946:a130b5ceeca9
   623         AndSelector(AndSelector(sel1, sel2), AndSelector(sel3, sel4))
   623         AndSelector(AndSelector(sel1, sel2), AndSelector(sel3, sel4))
   624         ==> AndSelector(sel1, sel2, sel3, sel4)
   624         ==> AndSelector(sel1, sel2, sel3, sel4)
   625         """
   625         """
   626         merged_selectors = []
   626         merged_selectors = []
   627         for selector in selectors:
   627         for selector in selectors:
   628             selector = _instantiate_selector(selector)
   628             try:
   629             assert isinstance(selector, Selector), selector
   629                 selector = _instantiate_selector(selector)
       
   630             except:
       
   631                 pass
       
   632             #assert isinstance(selector, Selector), selector
   630             if isinstance(selector, cls):
   633             if isinstance(selector, cls):
   631                 merged_selectors += selector.selectors
   634                 merged_selectors += selector.selectors
   632             else:
   635             else:
   633                 merged_selectors.append(selector)
   636                 merged_selectors.append(selector)
   634         return merged_selectors
   637         return merged_selectors
   660 
   663 
   661 def _instantiate_selector(selector):
   664 def _instantiate_selector(selector):
   662     """ensures `selector` is a `Selector` instance
   665     """ensures `selector` is a `Selector` instance
   663     
   666     
   664     NOTE: This should only be used locally in build___select__()
   667     NOTE: This should only be used locally in build___select__()
       
   668     XXX: then, why not do it ??
   665     """
   669     """
   666     if isinstance(selector, types.FunctionType):
   670     if isinstance(selector, types.FunctionType):
   667         return objectify_selector(selector)()
   671         return objectify_selector(selector)()
   668     if isinstance(selector, type) and issubclass(selector, Selector):
   672     if isinstance(selector, type) and issubclass(selector, Selector):
   669         return selector()
   673         return selector()