Example #1
0
    def test_expand_identities(self):
        root = {0:'x'}
        l1 = [{1:'a'}, {1:'b'}, {1:'c'}]
        l2 = [{2:'a'}, {2:'b'}, {2:'c'}]
        l1cp = copy.deepcopy(l1)
        d = {'root': root, 'l1':l1, 'l2':l2}

        try:
            next(namespaces.expand_fuzzyspec_partial(d, ('root', 'l1', 'l2')))
        except StopIteration as e:
            specs = e.value
        else:
            raise RuntimeError()


        self.assertEqual(len(specs), 3*3)

        for i, spec in enumerate(specs):
            res = namespaces.resolve(d, spec)
            namespaces.push_nslevel(res, 'container', {'i':i})


        for  i, spec in enumerate(specs):
            res = namespaces.resolve(d, (*spec, 'container'))
            self.assertEqual(res['i'], i)
            self.assertEqual(res[1], l1cp[i//3][1])
            self.assertEqual(res[2], l2[i%3][2])

            self.assertEqual(res[0], 'x')
Example #2
0
    def _create_default_key(self, name, nsspec, put_index=None, defaults=None):
        """Push a namespace level for a node to store input values.
        Return the nsspec of that node."""
        if defaults is None:
            defaults = {}
        if put_index is None:
            put_index = 0

        defaults_label = "_" + name + "_defaults"
        nsspec = (*nsspec[: len(nsspec) - put_index], defaults_label)
        parent_ns = namespaces.resolve(self.rootns, nsspec[:-1])
        namespaces.push_nslevel(parent_ns, defaults_label, defaults)
        return nsspec
Example #3
0
 def nsspec(x, beginning=()):
     ns = namespaces.resolve(self.rootns, beginning)
     default_label =  '_default' + str(x)
     namespaces.push_nslevel(ns, default_label)
     return beginning + (default_label,)