100 lines
3.6 KiB
Python
Executable File
100 lines
3.6 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
from dataclasses import dataclass, field
|
|
import sys, re, os, enum, itertools
|
|
from functools import partial, partialmethod
|
|
from time import sleep
|
|
from subprocess import Popen, PIPE, DEVNULL
|
|
from operator import itemgetter
|
|
from defl import log, cl, Path, Undefined, Null, Assert, Time, Obj, Dunder, IterableType, isIterableType, Run
|
|
from defl import CLIError
|
|
from defl._typing_ import *
|
|
import defl
|
|
import defl
|
|
from defl import log, cl, Assert
|
|
from defl.sheet_ import Sheet
|
|
from defl.testing_ import Tester, Test, TestState
|
|
|
|
tester = Tester(name=__file__)
|
|
|
|
@tester.add()
|
|
def getSet():
|
|
d = {'a': [1, 2, 3], 'b': (1.1, 2.2, 3.3), 'c': ['cat', 'dog', 'frog']}
|
|
s = Sheet(d)
|
|
slic = s['a', 'b']
|
|
Assert(slic) == {'a': [1, 2, 3], 'b': (1.1, 2.2, 3.3)}
|
|
s['a', 'b'] = {'a': [4, 5, 6], 'b': (4.4, 5.5, 6.6)}
|
|
Assert(s.toDict()) == {'a': [4, 5, 6], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
|
|
s[('a', )] = [[5, 6, 7]]
|
|
Assert(s.toDict()) == {'a': [5, 6, 7], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
|
|
s['a'] = [8, 9, 10]
|
|
Assert(s.toDict()) == {'a': [8, 9, 10], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
|
|
s.r('a')[1] = 5
|
|
Assert(s.toDict()) == {'a': [8, 5, 10], 'b': (4.4, 5.5, 6.6), 'c': ['cat', 'dog', 'frog']}
|
|
|
|
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
|
|
s['b', 'c'] = Sheet({'z': [5, 5, 5], 'y': [7, 7, 7]})
|
|
Assert(s.d) == {'a': [1, 2, 3], 'b': [5, 5, 5], 'c': [7, 7, 7]}
|
|
|
|
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
|
|
s['b', 'c'] = Sheet([[5, 5, 5], [7, 7, 7]])
|
|
Assert(s.d) == {'a': [1, 2, 3], 'b': [5, 5, 5], 'c': [7, 7, 7]}
|
|
|
|
@tester.add()
|
|
def map():
|
|
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
|
|
s['d'] = s.map['a', 'b'](lambda a, b: a * b)
|
|
Assert(s['d'].d) == {'d': [4, 10, 18]}
|
|
Assert(s.r('d')) == [4, 10, 18]
|
|
Assert(s['d'].d['d']) == [4, 10, 18]
|
|
|
|
@tester.add()
|
|
def rows():
|
|
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
|
|
Assert([x for x in s]) == [{'a': 1, 'b': 4, 'c': 7}, {'a': 2, 'b': 5, 'c': 8}, {'a': 3, 'b': 6, 'c': 9}]
|
|
Assert(s.mapRow(lambda x: x['a'] * x['c'] - x['b'])) == [3, 11, 21]
|
|
|
|
@tester.add()
|
|
def mangle():
|
|
s = Sheet({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]})
|
|
Assert(s.toDict()) == {'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}
|
|
|
|
@tester.add()
|
|
def sort():
|
|
s = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
|
|
sort = s.sort(lambda x: x['b'])
|
|
Assert(sort.d) == {'a': [3, 2, 1], 'b': [4, 5, 6], 'c': [9, 8, 7]}
|
|
|
|
@tester.add()
|
|
def init():
|
|
s1 = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
|
|
Assert(Sheet([x for x in s1])) == s1
|
|
|
|
s2 = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
|
|
Assert(Sheet([x for x in s2])) == s1
|
|
|
|
s2.r('a')[1] = 5
|
|
Assert(Sheet([x for x in s2])) != s1
|
|
|
|
@tester.add()
|
|
def filter():
|
|
s1 = Sheet({'a': [1, 2, 3], 'b': [6, 5, 4], 'c': [7, 8, 9]})
|
|
Assert(s1.filter(lambda x: x.a > 1 and x.c < 9).d) == {'a': [2], 'b': [5], 'c': [8]}
|
|
|
|
@tester.add()
|
|
def string():
|
|
s1 = Sheet({'a': [1, 22, 333], 'bbbb': [66666, 5555555, 4], 'c': [7, 8, 9]})
|
|
log.info(s1)
|
|
Assert(s1.str()) == '[a] [bbbb] [c]\n 1 66,666 7\n 22 5,555,555 8\n333 4 9'
|
|
|
|
s2 = Sheet({'a': [11, 2.22, 3.33], 'b': (1.12345, 2.23456, 3.34567)})
|
|
log.info(s2)
|
|
Assert(s2.str()) == ' [a] [b]\n11.00 1.12\n 2.22 2.23\n 3.33 3.35'
|
|
|
|
s2 = Sheet({'a': ['zdada', 'b', 'b'], 'b': (1.12345, 2.23456, 3.34567)})
|
|
log.info(s2)
|
|
Assert(s2.str()) == "[a] [b]\nzdada 1.12\nb 2.23\nb 3.35"
|
|
|
|
log.info(tester.run())
|
|
tester.exitWithStatus()
|