예제 #1
0
 def _setting(m: Manager) -> DRef:
     nonlocal n1, n2, n3, n4
     n1 = mkstage(m, {'a': '1'}, lambda i, t: 33)
     n2 = mkstage(m, {'maman': n1})
     n3 = mkstage(m, {'a': '1'}, lambda i, t: 42)
     assert n1 == n3
     return n2
예제 #2
0
 def _setting(m: Manager) -> DRef:
     nonlocal n1, n2, n3, n4
     n1 = mkstage(m, {'a': '1'})
     n2 = mkstage(m, {'b': '2'})  # this one should not be realized
     n3 = mkstage(m, {'c': '3', 'maman': n1})
     n4 = mkstage(m, {'c': '4', 'papa': n3})  # neither this one
     return n3
예제 #3
0
 def _setup(m):
     nonlocal n1, n2, n3, toplevel
     n1 = mkstage(m, {'a': 1})
     n2 = mkstage(m, {'parent1': n1})
     n3 = mkstage(m, {'parent2': n1})
     toplevel = mkstage(m, {'n2': n2, 'n3': n3})
     return toplevel
예제 #4
0
 def _stage(m):
     s1 = mkstage(m, {'name': '1', 'promise': [promise, 'artifact']})
     s2 = mkstage(m, {
         'name': '2',
         'maman': s1,
         'promise': [promise, 'artifact']
     })
     s3 = mkstage(m, {
         'name': '3',
         'papa': s2,
         'promise': [promise, 'artifact']
     })
     return s3
예제 #5
0
        def _setting(m: Manager, fullfill: bool) -> DRef:
            n1 = mkstage(m, {'name': '1', 'promise': [promise, 'artifact']})

            def _realize(b: Build):
                o = build_outpath(b)
                c = build_cattrs(b)
                assert b.dref in c.promise
                assert n1 in store_cattrs(c.maman, S).promise
                assert build_path(b, c.promise) == join(o, 'uber-artifact')
                assert build_path(b,
                                  store_cattrs(c.maman,
                                               S).promise) == build_path(
                                                   b, c.maman_promise)
                if fullfill:
                    with open(build_path(b, c.promise), 'w') as f:
                        f.write('chickenpoop')

            return mkdrv(m,
                         mkconfig({
                             'name': '2',
                             'maman': n1,
                             'promise': [promise, 'uber-artifact'],
                             'maman_promise': [n1, 'artifact']
                         }),
                         matcher=match_some(),
                         realizer=build_wrapper(_realize))
예제 #6
0
def test_realize_base(d) -> None:
    with setup_storage2('test_realize_base') as (T, S):
        m = Manager(storage(S))
        mkstage(m, d)
        dref = list(m.builders.values())[-1].dref
        assert_valid_dref(dref)
        assert len(list(store_rrefs(dref, mkcontext(), S))) == 0
        rrefgs = list(m.builders.values())[-1].matcher(S, dref, mkcontext())
        assert rrefgs is None
        rrefg = mkrgroup(
            dref, mkcontext(),
            list(m.builders.values())[-1].realizer(S, dref, mkcontext(),
                                                   {})[0], S)
        assert len(list(store_rrefs(dref, mkcontext(), S))) == 1
        assert_valid_rref(rrefg[Tag('out')])
        rrefgs2 = list(m.builders.values())[-1].matcher(S, dref, mkcontext())
        assert rrefgs2 is not None
        rrefg2 = rrefgs2[0]
        assert rrefg == rrefg2
예제 #7
0
    def _setting(m:Manager)->DRef:
      n1=mkstage(m, {'name':'1', 'promise':[promise,'artifact']})
      n2=mkstage(m, {'name':'2', 'promise':[promise,'artifact'],
                        'dict':{'d1':1} })

      def _realize(b:Build):
        o=build_outpath(b)
        c=build_cattrs(b)
        assert isrefpath(mklens(b).maman.promise.refpath)
        assert isfile(mklens(b).papa.promise.syspath)
        assert o in mklens(b).promise.syspath
        assert o == mklens(b).syspath
        assert mklens(b).papa.name.val == '2'
        assert mklens(b).papa.dref == c.papa

        with open(mklens(b).promise.syspath,'w') as f:
          f.write('chickenpoop')

      return mkdrv(m,
        mkconfig({'name':'3', 'maman':n1, 'papa':n2,
                  'promise':[promise,'artifact'],
                  }),
                 matcher=match_some(),
                 realizer=build_wrapper(_realize))
예제 #8
0
  def _stage(m, root):
    drefs:dict={}
    for n,deps in list(dag):

      def _nondet(ngroup,tag,nn):
        a=nondets[nn]
        # note(str(({nn:(a,'[',ngroup,']')})))
        return a[ngroup]

      drefs[n]=mkstage(m,
                       config={'name':f'node_{n}',
                               'parents':[drefs[d] for d in deps]},
                       tagset=tss[n],
                       # nondet=lambda i,tag: nondets[n][i],
                       nondet=partial(_nondet,nn=n),
                       nmatch=nmatches[n])
    return drefs[root]
예제 #9
0
 def _setting1(m: Manager) -> DRef:
     return mkstage(m, {'a': '1'}, lambda i, tag: 33, buildtime=False)
예제 #10
0
 def _setting(m:Manager)->DRef:
   n1=mkstage(m, {'name':'1', 'x':33, 'promise':[promise,'artifact']})
   n2=mkstage(m, {'name':'2', 'papa':n1, 'dict':{'d1':1} })
   n3=mkstage(m, {'name':'3', 'maman':n2 })
   return n3
예제 #11
0
 def _somenode(m):
     return mkstage(m, {'a': 0})
예제 #12
0
 def _setup(m):
     nonlocal n1, n2, n3
     n1 = mkstage(m, {'a': '1'})
     n2 = mkstage(m, {'maman': n1}, _gen)
     n3 = mkstage(m, {'papa': n2})
     return n3
예제 #13
0
 def _anothernode(m):
     n1 = mkstage(m, {'a': 1})
     n2 = _somenode(m)
     n3 = mkstage(m, {'maman': n1, 'papa': n2})
     return n3
예제 #14
0
 def _node1(m: Manager) -> DRef:
     return mkstage(m, {'name': '1'})
예제 #15
0
 def _node3(m: Manager) -> DRef:
     return mkstage(m, {'name': '3', 'maman': _node1(m)})
예제 #16
0
 def _setup(m):
     rref = realize(instantiate(mkstage, {'foo': 'bar'}))
     n2 = mkstage(m, {'bogus': rref})
     return n2
예제 #17
0
 def _setup(m):
     clo = instantiate(mkstage, {'foo': 'bar'})
     return mkstage(m, {'bogus': clo.dref})
예제 #18
0
 def _setting(m: Manager) -> DRef:
     return mkstage(m, {'a': '1'})
예제 #19
0
 def _setting(m: Manager) -> DRef:
     n1 = mkstage(m, {'a': '1'})
     n2 = mkstage(m, {'maman': n1})
     return n2
예제 #20
0
 def _setup_outer(m):
     nonlocal rref_inner
     rref_inner = realize(instantiate(_setup_inner, S=S))
     return mkstage(m, {'baz': mklens(rref_inner, S=S).foo.val})
예제 #21
0
 def _setup_inner(m):
     return mkstage(m, {'foo': 'bar'})
예제 #22
0
 def _setup(m):
     derivs = instantiate_(m, _setup)
     n2 = mkstage(m, {'bogus': derivs.dref})
     return n2
예제 #23
0
 def _setting(m: Manager) -> DRef:
     nonlocal n1, n2
     n1 = mkstage(m, {'a': '1'}, lambda i, tag: 33)
     n2 = mkstage(m, {'maman': n1}, lambda i, tag: 42)
     return n2
예제 #24
0
 def _setting2(m: Manager) -> DRef:
     return mkstage(m, {'a': '1'}, lambda i, tag: 42, buildtime=True)