def wrapper_func(*args, **kwargs): old_args = (args, kwargs.copy()) builder = None base = target_attr._base_copy func_code = code.get_func_code(target_attr) vars = func_code.co_varnames argnames = list(func_code.co_varnames[0:func_code.co_argcount]) try: argnames.remove('self') except: pass kwargs.update(dict(zip(argnames, args))) print(target_attr, kwargs) if 'atomic' in kwargs: if not isinstance(kwargs['atomic'].data, DataConsumer): builder = kwargs['atomic'].data kwargs['atomic'] = resolve_atomic(kwargs['atomic'], self) args = args[len(argnames):] args = [kwargs.pop(arg) for arg in argnames] + list(args) if builder is not None: with temporary_attr(kwargs['atomic'], '_data', builder, True): return target_attr(*args, **kwargs) else: return target_attr(*args, **kwargs)
def pack_one(self, atomic): # TODO: if offset is static, pad to start+offset. self.offset_valence.get_value = lambda atomic: atomic.data.offset - \ self.get_start(atomic) with temporary_attr(self.offset_valence.pack_one, 'update', False): atomic.data[atomic.data.seek_map[self.offset_valence.identity()]] = \ self.offset_valence.pack_one(atomic) self.offset_valence.get_value = VALUE_ZERO_FUNC return ''
def target_func(*args, **kwargs): builder = None func_code = target_attr.func_code argnames = list(func_code.co_varnames[0:func_code.co_argcount]) try: argnames.remove('self') except: pass kwargs.update(dict(zip(argnames, args))) if 'atomic' in kwargs: if not isinstance(kwargs['atomic'].data, DataConsumer): builder = kwargs['atomic'].data atomic = kwargs['atomic'] = self.get_atomic( kwargs['atomic'], self._base.namespace) args = args[len(argnames):] args = [kwargs.pop(arg) for arg in argnames]+list(args) if builder is not None: with temporary_attr(atomic, '_data', builder, True): return target_attr(*args, **kwargs) else: return target_attr(*args, **kwargs)
def target_func(*args, **kwargs): builder = None func_code = target_attr.func_code argnames = list(func_code.co_varnames[0:func_code.co_argcount]) try: argnames.remove('self') except: pass kwargs.update(dict(zip(argnames, args))) if 'atomic' in kwargs: if not isinstance(kwargs['atomic'].data, DataConsumer): builder = kwargs['atomic'].data atomic = kwargs['atomic'] = self.get_atomic( kwargs['atomic'], self._base.namespace) args = args[len(argnames):] args = [kwargs.pop(arg) for arg in argnames] + list(args) if builder is not None: with temporary_attr(atomic, '_data', builder, True): return target_attr(*args, **kwargs) else: return target_attr(*args, **kwargs)
def wrapper_func(self, *args, **kwargs): old_args = (args, kwargs.copy()) builder = None func_code = target_attr.func_code vars = func_code.co_varnames argnames = list(func_code.co_varnames[1:func_code.co_argcount]) """try: argnames.remove('self') except: pass""" kwargs.update(dict(zip(argnames, args))) if 'atomic' in kwargs: if not isinstance(kwargs['atomic'].data, DataConsumer): builder = kwargs['atomic'].data atomic = kwargs['atomic'] = resolve_atomic(kwargs['atomic'], self) args = args[len(argnames):] args = [kwargs.pop(arg) for arg in argnames]+list(args) if builder is not None: with temporary_attr(atomic, '_data', builder, True): return target_attr(self, *args, **kwargs) else: return target_attr(self, *args, **kwargs)
def pack_one(self, atomic): value = self.get_value(atomic) with temporary_attr(value, '_data', atomic.data, True): str(value) return ''