class I(dobject):
        s = datt(int)
        n = datt(int)

        x = datt(int)

        __dobject_key__ =[s, 'n']
Example #2
0
def test_subst_reshape():
    class A(dobject):
        a = datt(int)
        b = datt(int)
        c = datt(int)

        __dobject_key__ = [a, b]

    A1 = A._re(_subst=dict(b='s'), _name='A1')
    with pytest.raises(ValueError):
        a1 = A1(a=1, b=2, c=3)

    a1 = A1(a=1, s=2, c=3)
    assert a1.a == 1 and a1.s == 2 and a1.c == 3

    A1 = A._re(_subst=dict(b='s'), b=datt(float), _name='A1')

    a1 = A1(A(a=1, b=2, c=3))
    print(a1)
    assert a1.a == 1 and a1.s == 2 and a1.b is None and a1.c == 3

    # switch
    a = A(a=1, b=2, c=3)
    A2 = A._re(_subst=dict(b='c', c='b'), b=datt(float), _name='A2')
    a = A(a=4, b=5, c=6)
    a2 = A2(a)
    assert a.b == 5 and a.c == 6
    assert a2.b == 6 and a2.c == 5
Example #3
0
def test_subst_reshape():

    class A(dobject):
        a = datt(int)
        b = datt(int)
        c = datt(int)

        __dobject_key__ = [a, b]

    A1 = A._re(_subst = dict( b = 's'), _name='A1')
    with pytest.raises(ValueError):
        a1 = A1(a=1, b=2, c=3)

    a1 = A1(a=1, s=2, c=3)
    assert a1.a == 1 and a1.s == 2 and a1.c == 3

    A1 = A._re(_subst = dict(b = 's'), b = datt(float), _name = 'A1')

    a1 = A1(A(a=1, b=2, c=3))
    print(a1)
    assert a1.a == 1 and a1.s == 2 and a1.b is None and a1.c == 3

    # switch
    a = A(a=1, b=2, c=3)
    A2 = A._re(_subst = dict(b = 'c', c='b'), b = datt(float), _name = 'A2')
    a = A(a=4, b=5, c=6)
    a2 = A2(a)
    assert a.b == 5 and a.c == 6
    assert a2.b == 6 and a2.c == 5
Example #4
0
class t_b(dtable):
    a = datt(int)
    b = datt(int)
    c = datt(int)
    d = datt(int)

    __dobject_key__ = [a, b]
    class A(dobject):
        a = datt(int)
        b = datt(int)
        c = datt(int)
        d = datt(int)

        __dobject_key__ = [a, b]
Example #6
0
    class A(dobject):
        a = datt(int)
        b = datt(str)
        c = datt(float)
        d = datt(Decimal)
        e = datt(datetime)

        __dobject_key__ = [a, b]
Example #7
0
async def test_recall2(db, module_dtables):

    ASet = dset(t_b, _key=dict(a=datt(int))) # define a key of dset

    ds1 = ASet(a=1)
    ds1 += [t_b(b=12, c=13, d= 14), t_b(b=22, c=23, d=24)]
    await dmerge(ds1)

    db << 'SELECT 1 as sn FROM t_b'
    await db

    ds2 = ASet(a=2)
    print(333, ds2)
    ds2 += [t_b(b=32, c=33, d= 34), t_b(b=42, c=43, d=44)]
    await dmerge(ds2)

    ds1 = await drecall(ASet(a=1))
    assert len(ds1) == 2

    ds1 += [t_b(b=12, c=113, d=114), t_b(b=62, c=63, d=64)]
    del ds1[t_b(b=22)]
    with pytest.raises(KeyError):
        del ds1[t_b(b=55)]

    ds0 = await drecall(ASet(a=1))

    print("O: ", ds0)
    print("N: ", ds1)

    await dmerge(ds1, ds0)

    ds2 = await drecall(ASet(a=1))
    assert ds2[0].c == ds1[0].c
    assert ds2[1].c == ds1[1].c
Example #8
0
def test_new_object():

    class A(dobject):
        a = datt(int)
        b = datt(str)
        c = datt(float)
        d = datt(Decimal)
        e = datt(datetime)

        __dobject_key__ = [a, b]

    A1 = A._re('a')
    assert len(A1.__dobject_key__) == 1 and len(A1.__dobject_att__) == 0

    with pytest.raises(ValueError) as exc:
        A1 = A._re(_ignore=['a', 'c'], _key=['c', 'e']) # c conflict!

    A1 = A._re(_ignore=['a', 'c'], _key=['b', 'e'])
    A2 = A._re(c=datt(date, default=date(2015,7,29)))
    assert A.c.type == float and A2.c.type == date

    A3 = A._re('a', 'b', 'c', _subst=dict(a='s'))
    assert tuple(A3.__dobject_key__) == ('s', 'b')
    assert tuple(A3.__dobject_att__) == ('c',)
    print(A3(s=1, b=2, c=3))
Example #9
0
def test_dset_declaration1():
    class A(dobject):
        a = datt(int)
        b = datt(int)
        __dobject_key__ = [a]

    class B(dobject):
        x = datt(int)
        y = datt(int)
        __dobject_key__ = [x]


    # A <>---> B
    BSet = dset(B, _key=A.a)
    assert tuple(BSet.__dobject_key__) == ('a',)
    assert BSet.__dominion_class__ == A
    assert BSet.a != A.a
    assert BSet.a.owner_class == BSet

    BSet = dset(B, _dominion=A, _key=['a'])
    assert tuple(BSet.__dobject_key__) == ('a',)
    assert BSet.__dominion_class__ == A
    assert BSet.a != A.a
    assert BSet.a.owner_class == BSet

    with pytest.raises(ValueError):
        BSet = dset(B, _key=['a']) # the attribute a is undefined

    BSet = dset(B, _key=dict(a=datt(int)))
    assert tuple(BSet.__dobject_key__) == ('a',)
    assert BSet.__dominion_class__ is None
    assert BSet.a != A.a
    assert BSet.a.owner_class == BSet
Example #10
0
def test_dset_declaration1():
    class A(dobject):
        a = datt(int)
        b = datt(int)
        __dobject_key__ = [a]

    class B(dobject):
        x = datt(int)
        y = datt(int)
        __dobject_key__ = [x]

    # A <>---> B
    BSet = dset(B, _key=A.a)
    assert tuple(BSet.__dobject_key__) == ('a', )
    assert BSet.__dominion_class__ == A
    assert BSet.a != A.a
    assert BSet.a.owner_class == BSet

    BSet = dset(B, _dominion=A, _key=['a'])
    assert tuple(BSet.__dobject_key__) == ('a', )
    assert BSet.__dominion_class__ == A
    assert BSet.a != A.a
    assert BSet.a.owner_class == BSet

    with pytest.raises(ValueError):
        BSet = dset(B, _key=['a'])  # the attribute a is undefined

    BSet = dset(B, _key=dict(a=datt(int)))
    assert tuple(BSet.__dobject_key__) == ('a', )
    assert BSet.__dominion_class__ is None
    assert BSet.a != A.a
    assert BSet.a.owner_class == BSet
Example #11
0
def case2(page: DPage) -> DSet[test_a]:
    print(3444, page)
    page = DPage(start=3, limit=5, sortable='+sn,-line')

    ASet = dset(test_a, _key=dict(sn=datt(int)))
    ds1 = ASet(sn=101, _page=page)
    for i in range(3, 8):
        ds1 += [test_a(line=i, name='L%03d' % i)]

    return ds1
Example #12
0
def case2(page: DPage) -> DSet[test_a] :
    print(3444, page)
    page = DPage(start=3, limit=5, sortable='+sn,-line')

    ASet = dset(test_a, _key=dict(sn=datt(int)))
    ds1 = ASet(sn=101, _page=page)
    for i in range(3,8):
        ds1 += [test_a(line=i, name='L%03d' % i)]

    return ds1
Example #13
0
def test_recall1():

    ASet = dset(t_b, _key=dict(a=datt(int))) # define a key of dset

    ds1 = ASet(a=11)
    ds1 += [t_b(b=12, c=13, d= 14), t_b(b=22, c=23, d=24)]
    dmerge(ds1)

    r1 = drecall(t_b(a=11, b=12))
    assert r1.a == 11 and r1.b == 12 and r1.c == 13
    r1 = drecall(t_b(a=99, b=12)) # no found and return empty dobject
    assert r1 is not None and not bool(r1)
Example #14
0
def test_recall1():

    ASet = dset(t_b, _key=dict(a=datt(int)))  # define a key of dset

    ds1 = ASet(a=11)
    ds1 += [t_b(b=12, c=13, d=14), t_b(b=22, c=23, d=24)]
    dmerge(ds1)

    r1 = drecall(t_b(a=11, b=12))
    assert r1.a == 11 and r1.b == 12 and r1.c == 13
    r1 = drecall(t_b(a=99, b=12))  # no found and return empty dobject
    assert r1 is not None and not bool(r1)
Example #15
0
class t_a(dtable):
    a = datt(int)
    b = datt(int)
    c = datt(int, doc="should be constrained")
    d = datt(int)
    e = datt(int, doc="should be constrained")
    f = datt(int)

    __dobject_key__ = [a, b]
Example #16
0
def test_dset_key_error():
    ASet = dset(t_b, _key=dict(a=datt(int))) # define a key of dset
    print()

    ds1 = ASet(a=1)
    ds1._add(t_b(b=12, c=13, d= 14))
    ds1._add(t_b(b=22, c=23, d=24))

    print('-------------------')

    ds2 = ASet(a=2)
    ds2._add(t_b(b=32, c=33, d= 34))
    ds2._add(t_b(b=42, c=43, d=44))
    assert ds2[0].a == 2
    print(ds1)
    print(ds2)
Example #17
0
def test_recall2():

    ASet = dset(t_b, _key=dict(a=datt(int)))  # define a key of dset

    ds1 = ASet(a=1)
    ds1 += [t_b(b=12, c=13, d=14), t_b(b=22, c=23, d=24)]
    dmerge(ds1)

    ds2 = ASet(a=2)
    ds2 += [t_b(b=32, c=33, d=34), t_b(b=42, c=43, d=44)]
    dmerge(ds2)

    ds1 = drecall(ASet(a=1))
    ds1 += [t_b(b=12, c=113, d=114), t_b(b=62, c=63, d=64)]
    del ds1[t_b(b=22)]
    with pytest.raises(KeyError):
        del ds1[t_b(b=55)]
    ds0 = drecall(ASet(a=1))
    print("O: ", ds0)
    print("N: ", ds1)
    dmerge(ds1, ds0)
Example #18
0
def test_recall2():

    ASet = dset(t_b, _key=dict(a=datt(int))) # define a key of dset


    ds1 = ASet(a=1)
    ds1 += [t_b(b=12, c=13, d= 14), t_b(b=22, c=23, d=24)]
    dmerge(ds1)

    ds2 = ASet(a=2)
    ds2 += [t_b(b=32, c=33, d= 34), t_b(b=42, c=43, d=44)]
    dmerge(ds2)

    ds1 = drecall(ASet(a=1))
    ds1 += [t_b(b=12, c=113, d=114), t_b(b=62, c=63, d=64)]
    del ds1[t_b(b=22)]
    with pytest.raises(KeyError):
        del ds1[t_b(b=55)]
    ds0 = drecall(ASet(a=1))
    print("O: ", ds0)
    print("N: ", ds1)
    dmerge(ds1, ds0)
Example #19
0
def test_case2():

    ASet = dset(test_a, _key=dict(sn=datt(int)))
    ds1 = ASet(sn=101)
    for i in range(10):
        ds1 += [test_a(line=i, name='L%03d' % i)]

    ds1 = ASet(sn=202)
    for i in range(10):
        ds1 += [test_a(line=i, name='L%03d' % i)]

    dmerge(ds1)

    page = DPage(start=2, limit=3, sortable='+sn,-line')
    ds1 = ASet(sn=101, _page=page)
    ds2 = drecall(ds1)

    print('ds: ', ds2)

    assert len(ds2) == 3
    assert ds2[test_a(line=7)].line == 7
    assert not ds2[test_a(line=4)]
    assert not ds2[test_a(line=8)]
def test_case2():

    ASet = dset(test_a, _key=dict(sn=datt(int)))
    ds1 = ASet(sn=101)
    for i in range(10):
        ds1 += [test_a(line=i, name='L%03d' % i)]

    ds1 = ASet(sn=202)
    for i in range(10):
        ds1 += [test_a(line=i, name='L%03d' % i)]

    dmerge(ds1)

    page = DPage(start=2, limit=3, sortable='+sn,-line')
    ds1 = ASet(sn=101, _page=page)
    ds2 = drecall(ds1)

    print('ds: ', ds2)

    assert len(ds2) == 3
    assert ds2[test_a(line=7)].line == 7
    assert not ds2[test_a(line=4)]
    assert not ds2[test_a(line=8)]
Example #21
0
def test_new_object():
    class A(dobject):
        a = datt(int)
        b = datt(str)
        c = datt(float)
        d = datt(Decimal)
        e = datt(datetime)

        __dobject_key__ = [a, b]

    A1 = A._re('a')
    assert len(A1.__dobject_key__) == 1 and len(A1.__dobject_att__) == 0

    with pytest.raises(ValueError) as exc:
        A1 = A._re(_ignore=['a', 'c'], _key=['c', 'e'])  # c conflict!

    A1 = A._re(_ignore=['a', 'c'], _key=['b', 'e'])
    A2 = A._re(c=datt(date, default=date(2015, 7, 29)))
    assert A.c.type == float and A2.c.type == date

    A3 = A._re('a', 'b', 'c', _subst=dict(a='s'))
    assert tuple(A3.__dobject_key__) == ('s', 'b')
    assert tuple(A3.__dobject_att__) == ('c', )
    print(A3(s=1, b=2, c=3))
Example #22
0
 class B(dobject):
     a = datt(int)  # the same name with dset key
     x = datt(int)
     y = datt(int)
     __dobject_key__ = [x]
 class A(dobject):
     a = datt(int)
     b = datt(int)
     c = datt(int)
     d = datt(int)
Example #24
0
 class B(dobject):
     a = datt(int)
     b = datt(int)
     __dobject_key__ = [b]
Example #25
0
class A(dobject):
    sn = datt(str)
    name = datt(str)
Example #26
0
 class C(A, B):
     c = datt(int)
     __dobject_key__ = [c]
Example #27
0
 class B(dobject):
     a_sn = datt(int)
     line = datt(int)
     name = datt(str)
     __dobject_key__ = [a_sn, line]
Example #28
0
 class A(dobject):
     a_sn = datt(int)
     b = datt(dset(B))
     __dobject_key__ = [a_sn]
Example #29
0
class t_a(dtable):
    a = datt(seq_test)
    b = datt(int)

    __dobject_key__ = [a]
Example #30
0
    class A(dobject):
        a = datt(int)

        x = datt(dset(B))

        __dobject_key__ = [a]
 class A(dobject):
     a = datt(int)
     b = datt(int)
     c = datt(int, default=100)
     d = datt(int)
Example #32
0
 class B(dobject):
     a = datt(int)
     x = datt(int)
     y = datt(int)
     __dobject_key__ = [x]
Example #33
0
 class B(dobject):
     x = datt(int)
     y = datt(int)
     __dobject_key__ = x
Example #34
0
 class B(dobject):
     x = datt(int)
     y = datt(int)
Example #35
0
class test_a(dtable):
    sn = datt(int)
    line = datt(int)
    name = datt(str)

    __dobject_key__ = [sn, line]
Example #36
0
 class Bill(dobject):
     sn = datt(int)
     __dobject_key__ = [sn]
     items = datt(dset(Item, sn='bill_sn'), doc="")
Example #37
0
class t_a(dtable):
    a = datt(int)
    b = datt(array(str, dimensions=1))

    __dobject_key__ = [a]
Example #38
0
    class Item(dobject):
        bill_sn = datt(int)
        line_no = datt(int)
        item_sn = datt(int)

        __dobject_key__ = [line_no]