-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutils.py
113 lines (81 loc) · 2.95 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import os
import logging
import time
from functools import wraps
"""
Time wrapper from https://gist.github.com/bradmontgomery/bd6288f09a24c06746bbe54afe4b8a82
"""
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s %(levelname)-4s %(message)s')
time_logger = logging.getLogger(__name__)
file_handler = logging.FileHandler('logs/global.log')
file_handler.setLevel(logging.ERROR)
file_handler.setFormatter(formatter)
file_handler2 = logging.FileHandler('logs/global_debug.log')
file_handler2.setLevel(logging.DEBUG)
file_handler2.setFormatter(formatter)
file_handler_time = logging.FileHandler('logs/execution_time.log')
file_handler_time.setFormatter(formatter)
file_handler_time.setLevel(logging.WARNING)
stream_handler = logging.StreamHandler()
stream_handler_formatter = logging.Formatter('[%(levelname)s] %(message)s')
stream_handler.setFormatter(stream_handler_formatter)
stream_handler.setLevel(logging.DEBUG)
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
logger.addHandler(file_handler2)
time_logger.addHandler(stream_handler)
time_logger.addHandler(file_handler_time)
def log(log_type,string):
if log_type=="AUTHORING ERROR" or log_type=="FATAL ERROR":
logger.error(string)
elif log_type == 'ERROR':
logger.error(string)
elif log_type == 'DEBUG':
logger.debug(string)
elif log_type == "INFO":
logger.info(string)
elif log_type == "TIME TOOK":
logger.debug(string)
time_logger.warning(string)
else:
logger.debug(string)
def timed(func):
"""This decorator prints the execution time for the decorated function."""
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
file_path = func.__code__.co_filename # extract the path of the function
k = file_path.rfind("/")
file_name = file_path[k+1:] #take the latest / of the path (may cause error if running on windows )
log('TIME TOOK',"Time took for function {} in file {} is {} s".format(func.__name__,file_name, round(end - start, 2)))
return result
return wrapper
def flatten(l):
"""
Parameters:
l (list) -- input list 2d array list
Returns:
(list) -- output list flatten
"""
return [item for sublist in l for item in sublist]
if __name__ == "__main__":
log("AUTHORING ERROR",'@Thierry Lincoln Test')
"""
import slack
import asyncio
import tracemalloc
tracemalloc.start()
#SLACK_API_DEBUG_TOKEN = os.getenv("SLACK_API_DEBUG_TOKEN")
#client = slack.WebClient(token=SLACK_API_DEBUG_TOKEN,run_async=True)
#loop = asyncio.get_event_loop()
#loop.run_until_complete(post_slack_message(string))
async def post_slack_message(text):
response = await client.chat_postMessage(
channel="popbots-bugs-report",
text=text
)
"""