1FLOW_IN = "in"
2FLOW_OUT = "out"
3
4def memo():
5 """ its juts a meme """
6 meme_d = dict()
7 def memer(fn):
8 def memed(flow):
9 if flow not in meme_d:
10 meme_d[flow] = fn(flow)
11 return meme_d[flow]
12 return memed
13 return memer
14
15@memo()
16def get_logger(flow):
17 """ Know not why not """
18 if flow == FLOW_IN:
19 return lambda *args: print(f"Invalid input arguments, expected {", ".join(args)}!")
20 elif flow == FLOW_OUT:
21 return lambda *args: print(f"Invalid output value, expected {", ".join(args)}!")
22 else:
23 return lambda *_: print('dont do this please')
24
25def type_check(flow):
26 """ Cast into despair any readers """
27 def whitelister(*whitelist_args):
28 whitelist = set([str(x) for x in whitelist_args])
29 def decorator(fn):
30 def decorated_fn(*args, **kwargs):
31 in_types = list(map(lambda v: str(type(v)),[*args, *kwargs.values()]))
32 if flow == FLOW_IN and any([in_type not in whitelist for in_type in in_types]):
33 get_logger(flow)(*whitelist)
34 res = fn(*args, **kwargs)
35 if flow == FLOW_OUT and str(type(res)) not in whitelist:
36 get_logger(flow)(*whitelist)
37 return res
38 return decorated_fn
39 return decorator
40 return whitelister
41
42
43# @type_check(FLOW_IN)(int, float, complex)
44# def power(num, power):
45# return num ** power
46#
47# @type_check(FLOW_IN)(str)
48# @type_check(FLOW_OUT)(str)
49# def concatenate(*strings, separator=' beep boop '):
50# return separator.join(strings)
....
----------------------------------------------------------------------
Ran 4 tests in 0.002s
OK
Димитър Фенерски
25.10.2024 23:43thanks :)
|
Георги Кунчев
24.10.2024 21:25Разбирам несъгласието ти. До известна степен си прав. Още вчера видяхме качени решения с подобен похват, които файлват.
По принцип очакваме да питате, ако решите да интерпретирате условията по начин, който се различава от дадените примери, защото в твоя случай реално не получаваш същият резултат (или поне не винаги).
Въпреки всичко, ще обсъдим и е възможно да променим тестовете, така че да считат това решение за валидно. Утрото е по-мъдро от вечерта.
|
Димитър Фенерски
24.10.2024 19:10:@ order not defined
|