def _extend_mask(condition, mask): '''extend the mask in the termination condition with the given mask''' if mask is None: return condition kwds = _term.state(condition).popitem()[-1] # short-circiut: if no kwds['mask'], then abort if not kwds.has_key('mask'): return _term.type(condition)(**kwds) # extend current mask _mask = kwds['mask'] if not _mask: # mask is None, {}, set(), or () kwds['mask'] = mask elif type(_mask) is set: # assumes mask is set kwds['mask'].update(mask) elif type(_mask) is dict: # assumes mask is dict for k,v in mask.iteritems(): _mask.setdefault(k,v).update(v) kwds['mask'] = _mask else: # assumes mask is tuple (or list) kwds['mask'] = type(_mask)(_mask[i]+mask[i] for i in range(2)) return _term.type(condition)(**kwds)
def _extend_mask(condition, mask): '''extend the mask in the termination condition with the given mask''' if mask is None: return condition kwds = _term.state(condition).popitem()[-1] # short-circiut: if no kwds['mask'], then abort if 'mask' not in kwds: return _term.type(condition)(**kwds) # extend current mask _mask = kwds['mask'] if not _mask: # mask is None, {}, set(), or () kwds['mask'] = mask elif type(_mask) is set: # assumes mask is set kwds['mask'].update(mask) elif type(_mask) is dict: # assumes mask is dict try: #XXX: better way to distinguish bounds collapse from not? for k, v in getattr(mask, 'iteritems', mask.items)(): _mask.setdefault(k, v).update(v) kwds['mask'] = _mask except AttributeError: # are list/tuple not set/dict, _mask is included kwds['mask'] = mask else: # assumes mask is tuple (or list) kwds['mask'] = type(_mask)(_mask[i] + mask[i] for i in range(2)) return _term.type(condition)(**kwds)
def _extend_mask(condition, mask): '''extend the mask in the termination condition with the given mask''' if mask is None: return condition kwds = _term.state(condition).popitem()[-1] # short-circiut: if no kwds['mask'], then abort if 'mask' not in kwds: return _term.type(condition)(**kwds) # extend current mask _mask = kwds['mask'] if not _mask: # mask is None, {}, set(), or () kwds['mask'] = mask elif type(_mask) is set: # assumes mask is set kwds['mask'].update(mask) elif type(_mask) is dict: # assumes mask is dict try: #XXX: better way to distinguish bounds collapse from not? for k,v in getattr(mask, 'iteritems', mask.items)(): _mask.setdefault(k,v).update(v) kwds['mask'] = _mask except AttributeError: # are list/tuple not set/dict, _mask is included kwds['mask'] = mask else: # assumes mask is tuple (or list) kwds['mask'] = type(_mask)(_mask[i]+mask[i] for i in range(2)) return _term.type(condition)(**kwds)
def _replace_mask(condition, mask): '''replace the mask in the termination condition with the given mask''' kwds = _term.state(condition).popitem()[-1] if 'mask' in kwds: kwds['mask'] = mask return _term.type(condition)(**kwds)
def _replace_mask(condition, mask): '''replace the mask in the termination condition with the given mask''' kwds = _term.state(condition).popitem()[-1] if kwds.has_key('mask'): kwds['mask'] = mask return _term.type(condition)(**kwds)