示例#1
0
    def testgetTargets(self):

        t1 = Target('t1')
        t2 = Target('t2')
        cmd = Command('tag', None, t1)
        cmd2 = Command('tag', None, t2=t2)

        cp = CommandPack([cmd, cmd2])

        tset = set(cp.getTargets())

        self.failUnlessEqual(tset, set([t1, t2]))
示例#2
0
    def test_get_target_cont(self):

        foo_tgt = Target('foo')
        bar_tgt = Target('bar')
        spam_src = Source('spam')

        c1 = Command('foo', None, foo_tgt, x=bar_tgt, src=spam_src)

        tc = c1.target_containers

        self.failUnlessEqual(len(tc), 2)

        self.failUnless('foo' in tc)
        self.failUnless('bar' in tc)

        self.failIf('spam' in tc)
示例#3
0
    def setunusedtarget( self, target ):
        """
        if this command contains an un-instanciated target class
        then replace it with @parameter: Target
        returns True if un-instanciated Source is found and false if not
        """
        

        if not isinstance( target, Node ):
            target = Target( target )
        
        for i in range( len( self.params ) ):
            if self.params[i] == Target: 
                self.params[i] = target
                return 
        
        for k in self.kparams.keys():
            if self.kparams[k] == Target: 
                self.kparams[k] = target
                return 
        
        if Target in self._other_dependants:
            
            self._other_dependants.remove( Target)
            self._other_dependants.add( target )
            return 
        
        raise Exception( 'No target to set' )
示例#4
0
    def setUp(self):
        """
        create commands
        """
        self.sourceOf1 = Source(1)
        self.sourceOfBob = Source('bob')

        self.targetOf2 = Target(2)
        self.targetOfFoo = Target('foo')

        self.c1 = Command('testFunc', '__adder', 1, a=2)
        self.c2 = Command('testFunc', '__adder', 3, b=Source)
        self.c3 = Command('testFunc', '__adder', self.sourceOf1,
                          self.sourceOfBob)
        self.c4 = Command('testFunc', '__adder', self.targetOfFoo,
                          self.targetOf2)

        #        for cmd in [self.c1,self.c2,self.c3,self.c4]:
        self.c1.func = testFunc
示例#5
0
    def testgetTargets(self):

        foo_tgt = Target('foo')
        bar_tgt = Target('bar')
        spam_tgt = Target('spam')
        spam_src = Source('eggs')

        c1 = Command('foo', None, foo_tgt, x=bar_tgt, ssc=spam_src)
        c1.add_other_dep(spam_tgt)

        targets = c1.getTargets()

        self.failUnless(foo_tgt in targets)
        self.failUnless(bar_tgt in targets)
        self.failUnless(spam_tgt in targets)

        self.failIf(spam_src in targets)

        c1 = Command('foo', None)
        targets = c1.getTargets()
        self.failUnlessEqual(targets, [])
示例#6
0
    def testcopy(self):

        foo_tgt = Target('foo')
        bar_tgt = Target('bar')
        spam_src = Source('spam')

        c1 = Command('foo', None, foo_tgt, x=bar_tgt, src=spam_src)

        c2 = c1.copy()

        self.failUnlessEqual(c1, c2)

        self.failIfEqual(id(c1), id(c2))

        func = lambda x: x

        c2.func = func

        self.failIfEqual(c1, c2)

        c1.func = func

        self.failUnlessEqual(c1, c2)
示例#7
0
    def test_get_source_cont(self):

        foo_src = Source('foo')
        bar_src = Source('bar')
        spam_tgt = Target('spam')

        c1 = Command('foo', None, foo_src, x=bar_src, src=spam_tgt)

        sc = c1.source_containers

        self.failUnlessEqual(len(sc), 2)

        self.failUnless('foo' in sc)
        self.failUnless('bar' in sc)

        self.failIf('spam' in sc)
示例#8
0
    def testsetunusedtarget(self):

        foo_tgt = Target('foo')

        cmd = Command('foo', None, Target)

        cmd.setunusedtarget(foo_tgt)

        targets = cmd.getTargets()

        self.failUnlessEqual(targets, [foo_tgt])

        self.failUnlessRaises(Exception, cmd.setunusedtarget, foo_tgt)

        cmd = Command('foo', None, Source)

        self.failUnlessRaises(Exception, cmd.setunusedtarget, foo_tgt)

        cmd.add_other_dep(foo_tgt)
        self.failUnlessEqual(targets, [foo_tgt])
示例#9
0
    def testsetTarget(self):

        cp = CommandPack(['comm'])

        self.failUnlessEqual(cp.target, True)

        cp.target = 'tgt'
        self.failUnlessEqual(cp.target, 'tgt')

        cmd = Command('tag', None)
        cp = CommandPack([cmd], out_cont=None)
        self.failUnlessRaises(Exception, setattr, cp, 'target', 'tgt')

        cmd = Command('tag', None, Target)
        cp = CommandPack([cmd], out_cont=None)

        tgt = Target('tgt')
        cp.target = tgt
        self.failUnlessEqual(cp.target, None)
        self.failUnlessEqual(cmd.getTargets(), [tgt])
示例#10
0
    def create_aug(self, other):

        already_exists = other.container.has_built_meta_info()

        cm = other.container.expand_meta()
        lst = []
        push = lst.append
        for cont in cm:
            push(Vector(cont))

        aug_vec = AugVector(lst)
        aug_vec.resize(self.kparams['num_blocks'])  #IGNORE:E1101

        aug_vec.meta = self.domain()
        aug_vec.meta['num_blocks'] = self.kparams['num_blocks']

        aug_vec.meta_vector = other

        if already_exists:
            return aug_vec

        struct = Structure()

        command = struct.generate_command('meta', Source(other.container),
                                          **self.kparams)
        #        command.add_other_dep(  )
        for cont in cm:
            command.add_other_dep(Target(cont))

        converter = other.container.get_converter(command)
        commpack = converter.convert(other, command)

        commpack.target = None
        commpack.source = None

        self.env['graphmgr'].graphAppend(commpack)

        return aug_vec
示例#11
0
    def scalar_reduction(cls, container, tag, *args, **kargs):
        """
        generate a Scalar from a command
        """
        scalar_methods = container.scalar_methods

        scmd = scalar_methods.get_command(tag)

        scalar = Scalar()
        cont = Source(container)
        scal = Target(scalar)

        if cls.env['slimvars']['use_scalar_obj']:

            command = general_command(tag, None, cont, scal, *args, **kargs)
            # set command
            command.func = scmd
            compack = CommandPack([command], None, None)
            cls.env['graphmgr'].graphAppend(compack)
        else:
            scalar = scal.data

        return scalar
示例#12
0
文件: Scalar.py 项目: LongyanU/SLIMpy
    def gen_new_scal(self,other,func):
        
        scalar = Scalar( )
        trg_scal = Target( scalar )
        src_self = Source( self )
        
        other_obj = self._num_src( other )
        
#        new_func = scalar_helper(func,func_name=func_name)
        
        tag = str(func)
        command = general_command( tag , None, src_self,other_obj,trg_scal )
        command.func = func
        
        if self.env['slimvars']['keep_tb_info']:
            stack = traceback.extract_stack( )
            st_list  = traceback.format_list( stack[:-3] )
            command.tb_info = "".join(st_list)
            
        compack = CommandPack([command], None, None)
        
        self.env['graphmgr'].graphAppend( compack )
    
        return scalar