def test_declare_custom_parser2(): conf = confect.Conf() with conf.declare_group('dummy') as cg: cg.a_int = 3 cg.some_string = 'some string' cg.color = conf.prop( default=Color.RED, parser=lambda s: getattr(Color, s.upper()) ) assert conf.dummy.a_int == 3 assert conf.dummy.some_string == 'some string' assert conf.dummy.color == Color.RED
def conf(): conf = confect.Conf() with conf.declare_group('dummy') as cg: cg.a_number = 3 cg.some_string = 'some string' cg.some_day = dt.date(2018, 8, 3) cg.some_time = dt.datetime(2018, 8, 3, 10, 3, tzinfo=dt.timezone.utc) cg.color = conf.prop( default=Color.RED, parser=lambda s: getattr(Color, s.upper()) ) return conf
def test_declare_custom_parser1(): def simple_timedelta_parser(s): '''A simple timedelta parser It reads a string in '<amount><unit>' format, and return timedelta object. Available units - d: days - h: hours - m: minutes - s: seconds - ms: milliseconds >>> simple_timedelta_parser('-3d') datetime.timedelta(-3) >>> simple_timedelta_parser('5h') datetime.timedelta(0, 18000) ''' amount, unit = re.fullmatch(r'([+-]?\d+)(\w+)', s).groups() amount = int(amount) UNIT_MAP = { 'd': 'days', 'h': 'hours', 'm': 'minutes', 's': 'seconds', 'ms': 'microseconds' } unit = UNIT_MAP[unit] return dt.timedelta(**{unit: amount}) conf = confect.Conf() with conf.declare_group('yo') as g: g.some_prop = conf.prop( dt.timedelta(days=3), parser=simple_timedelta_parser)
def conf(): conf = confect.Conf() with conf.declare_group('dummy') as cg: cg.a_int = 3 cg.a_float = 3.14 cg.some_bytes = b'oeu' cg.some_string = 'some string' cg.some_day = dt.date(2018, 8, 3) cg.some_time = dt.datetime(2018, 8, 3, 10, 3) cg.some_time_tz = dt.datetime(2018, 8, 3, 10, 3, tzinfo=dt.timezone.utc) cg.a_list = [1, 3] cg.a_tuple = (2, 4) cg.a_dict = {'A': 'a', 'B': 'b'} cg.some_time_pdl = pdl.datetime(2018, 8, 9, 10, 3, 1) cg.some_day_pdl = pdl.date(2018, 8, 9) cg.color = conf.prop( default=Color.RED, parser=lambda s: getattr(Color, s.upper()) ) return conf
import confect conf = confect.Conf() conf.load_module('gcurtain_conf') conf.load_envvars('gcurtain')