-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathutils.py
51 lines (33 loc) · 1.1 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
from datetime import datetime
from pytz import timezone
from tinkoff.invest import MoneyValue
from config import RUBBLES_SHORTCUT
from exceptions import InvalidNumber
def handler(func):
"""Хендлеры имеют право не пробрасывать исключение вверх по иерархии, а осуществлять их обработку внутри себя"""
def wrapper(*args, **kwargs):
return func(*args, **kwargs)
return wrapper
def localize(d: datetime) \
-> datetime:
return timezone('Europe/Moscow').localize(d)
def get_now() \
-> datetime:
return localize(datetime.now())
def parse_int(n: str) \
-> int:
try:
return int(n)
except ValueError:
raise InvalidNumber()
def get_canonical_price(price: MoneyValue) -> float:
return float(str(abs(price.units)) + "." + str(abs(price.nano)))
def to_rub(i: int) \
-> str:
return str(i) + " " + RUBBLES_SHORTCUT
def list_to_string(l: list) \
-> str:
res: str = ""
for elem in l:
res += str(elem) + "\n"
return res