예제 #1
0
 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)
예제 #2
0
 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 ''
예제 #3
0
 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 ''
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 def pack_one(self, atomic):
     value = self.get_value(atomic)
     with temporary_attr(value, '_data', atomic.data, True):
         str(value)
         return ''
예제 #8
0
 def pack_one(self, atomic):
     value = self.get_value(atomic)
     with temporary_attr(value, '_data', atomic.data, True):
         str(value)
         return ''