#!/usr/bin/env python import enum import itertools import json import os import re import sys from dataclasses import KW_ONLY, dataclass, field from functools import partial, partialmethod from operator import itemgetter from time import sleep import defl from defl import CLIError, DotDict, Null, Path, Undefined, cl, log from defl._run_ import * from defl._assert_ import Assert from defl._typing_ import * from defl.testing_ import Tester defl.log.setLevel('i') tester = Tester(name=__file__) # assert (u := log.toDict()) == { # 'e': { # 'name': 'error', # 'color': '\x1b[1m\x1b[38;2;255;65;65m', # 'lineInfo': False, # 'enabled': True, # 'tgt': '' # }, # 'w': { # 'name': 'warning', # 'color': '\x1b[1m\x1b[38;2;255;255;65m', # 'lineInfo': False, # 'enabled': True, # 'tgt': '' # }, # 'i': { # 'name': 'info', # 'color': '\x1b[1m\x1b[38;2;255;65;255m', # 'lineInfo': False, # 'enabled': True, # 'tgt': '' # }, # 'd': { # 'name': 'debug', # 'color': '\x1b[1m\x1b[38;2;0;255;255m', # 'lineInfo': True, # 'enabled': True, # 'tgt': '' # } # }, u @tester.add() def run(): tm = { 'info': io.StringIO(), 'debug': io.StringIO(), 'error': io.StringIO(), 'warning': io.StringIO(), } l = defl.Logger() l.setLevel(None, colorMap='', lineInfoMap=False, tgtMap=tm) l.info('info') l.debug('debug') l.error('error') l.warning('warning') Assert(tm['info'].getvalue()) == 'info\n' Assert(tm['debug'].getvalue()) == 'debug\n' Assert(tm['error'].getvalue()) == 'error\n' Assert(tm['warning'].getvalue()) == 'warning\n' @tester.add() def run(): tm = { 'info': io.StringIO(), 'debug': io.StringIO(), 'error': io.StringIO(), 'warning': io.StringIO(), } l = defl.Logger() l.setLevel('d', tgtMap=tm, colorMap='') l.info('info') l.debug('debug') l.error('error') l.warning('warning') li = tm['info'].getvalue() ld = tm['debug'].getvalue() le = tm['error'].getvalue() lw = tm['warning'].getvalue() Assert(li).reSearch(r'^\[.*:.*:.*\] info\n$') Assert(ld).reSearch(r'^\[.*:.*:.*\] debug\n$') Assert(le).reSearch(r'^\[.*:.*:.*\] error\n$') Assert(lw).reSearch(r'^\[.*:.*:.*\] warning\n$') @tester.add() def run(): tm = { 'info': io.StringIO(), 'debug': io.StringIO(), 'error': io.StringIO(), 'warning': io.StringIO(), } l = defl.Logger() l.setLevel('i', tgtMap=tm, colorMap='') Assert({k: v.enabled for k, v in l._meta.items()}) == {'i': T, 'e': T, 'w': T, 'd': F} l.info('info') l.debug('debug') l.error('error') l.warning('warning') li = tm['info'].getvalue() ld = tm['debug'].getvalue() le = tm['error'].getvalue() lw = tm['warning'].getvalue() Assert(li).reSearch(r'^info\n$') Assert(ld).reSearch('^$') Assert(le).reSearch(r'^error\n$') Assert(lw).reSearch(r'^warning\n$') log.info(tester.run()) tester.exitWithStatus() # for i in ch: # print(defl.printTable([[y for y in x] for x in ch], squareFill=T))