61 lines
1.3 KiB
Python
61 lines
1.3 KiB
Python
|
|
#!/usr/bin/env python
|
||
|
|
|
||
|
|
import defl
|
||
|
|
import json
|
||
|
|
from defl import log, cl
|
||
|
|
from defl.testing_ import Tester
|
||
|
|
from defl import DotDict
|
||
|
|
|
||
|
|
from dataclasses import dataclass, field, KW_ONLY
|
||
|
|
import sys
|
||
|
|
import re
|
||
|
|
import os
|
||
|
|
import enum
|
||
|
|
import itertools
|
||
|
|
from functools import partial, partialmethod
|
||
|
|
from time import sleep
|
||
|
|
from operator import itemgetter
|
||
|
|
from defl import log, cl, Path, Undefined, Null
|
||
|
|
from defl import CLIError
|
||
|
|
from defl._typing_ import *
|
||
|
|
import defl
|
||
|
|
|
||
|
|
|
||
|
|
tester = Tester(name=__file__)
|
||
|
|
|
||
|
|
|
||
|
|
@dataclass(slots=True, kw_only=False, frozen=False)
|
||
|
|
class OverrideMe:
|
||
|
|
ClassLevel: ClassVar = 1
|
||
|
|
|
||
|
|
|
||
|
|
@tester.add()
|
||
|
|
def override():
|
||
|
|
om = defl.Overrider('level1', 'level2', default=0)
|
||
|
|
assert om.result == 0
|
||
|
|
om.level2 = 2
|
||
|
|
assert om.result == 2
|
||
|
|
om.level1 = 1
|
||
|
|
assert om.result == 2
|
||
|
|
|
||
|
|
om = defl.Overrider('level1', 'level2', default=0)
|
||
|
|
assert om.r == 0
|
||
|
|
om.level1 = 1
|
||
|
|
assert om.r == 1
|
||
|
|
om.level2 = 2
|
||
|
|
assert om.r == 2
|
||
|
|
|
||
|
|
def classResolve(): return OverrideMe.ClassLevel
|
||
|
|
classResolve.overrideResolve = True
|
||
|
|
om = defl.Overrider('level1', 'level2', default=classResolve)
|
||
|
|
assert om.r == 1
|
||
|
|
OverrideMe.ClassLevel = 2
|
||
|
|
assert om.r == 2
|
||
|
|
|
||
|
|
|
||
|
|
log.info(tester.run())
|
||
|
|
tester.exitWithStatus()
|
||
|
|
|
||
|
|
# for i in ch:
|
||
|
|
# print(defl.printTable([[y for y in x] for x in ch], squareFill=True))
|