def __init__(self, *args, **kwargs): kwargs.setdefault('ctype', Complementarity) kwargs.setdefault('dense', False) _init = tuple(_arg for _arg in (kwargs.pop('initialize', None), kwargs.pop('rule', None), kwargs.pop('expr', None)) if _arg is not None) if len(_init) > 1: raise ValueError( "Duplicate initialization: Complementarity() only accepts " "one of 'initialize=', 'rule=', and 'expr='") elif _init: _init = _init[0] else: _init = None self._init_rule = Initializer(_init, treat_sequences_as_mappings=False, allow_generators=True) if self._init_rule is not None: kwargs['rule'] = Complementarity._complementarity_rule Block.__init__(self, *args, **kwargs) # HACK to make the "counted call" syntax work. We wait until # after the base class is set up so that is_indexed() is # reliable. if self._init_rule is not None \ and self._init_rule.__class__ is IndexedCallInitializer: self._init_rule = CountedCallInitializer(self, self._init_rule)
def __init__(self, *args, **kwargs): if kwargs.pop('_deep_copying', None): # Hack for Python 2.4 compatibility # Deep copy will copy all items as necessary, so no need to # complete parsing return kwargs.setdefault('ctype', Disjunct) Block.__init__(self, *args, **kwargs)