DrugDesign Data Analysis
Module of the DrugDesign project responsible for loading and pre-processing data from ChEMBL and PubChem
All Classes Namespaces Files Functions Variables Pages
decorators Namespace Reference

Functions

Callable IgnoreWarnings (Callable func)
 
Callable ReTry (int attempts_amount=retry_config["attempts_amount"], type[Exception] exception_to_check=Exception, float sleep_time=retry_config["sleep_time"])
 

Variables

Config retry_config = config["Utils"]["ReTry"]
 

Detailed Description

Utils/decorators.py Этот модуль содержит декораторы для обработки исключений и игнорирования предупреждений.

Function Documentation

◆ IgnoreWarnings()

Callable decorators.IgnoreWarnings ( Callable func)
Игнорирует предупреждения RuntimeWarning и UserWarning. Args: func (Callable): декорируемая функция. Returns: Callable: декорируемая функция.
17def IgnoreWarnings(func: Callable) -> Callable:
18 """
19 Игнорирует предупреждения RuntimeWarning и UserWarning.
20
21 Args:
22 func (Callable): декорируемая функция.
23
24 Returns:
25 Callable: декорируемая функция.
26 """
27
28 @wraps(func)
29 def Wrapper(*args, **kwargs):
30 # перехватываем предупреждения.
31 with warnings.catch_warnings():
32 # игнорируем RuntimeWarning.
33 warnings.simplefilter("ignore", RuntimeWarning)
34 # игнорируем UserWarning.
35 warnings.simplefilter("ignore", UserWarning)
36
37 # вызываем декорируемую функцию.
38 return func(*args, **kwargs)
39
40 return Wrapper
41
42
43# конфигурация для повторных попыток.

◆ ReTry()

Callable decorators.ReTry ( int attempts_amount = retry_config["attempts_amount"],
type[Exception] exception_to_check = Exception,
float sleep_time = retry_config["sleep_time"] )
Повторяет попытки выполнения функции в случае возникновения исключения. Если `attempts_amount == 1`, просто оборачивает декорируемую функцию в `try-except`. Args: attempts_amount (int, optional): количество попыток. Defaults to [берется из конфигурации]. exception_to_check (type[Exception], optional): тип исключения для перехвата. Defaults to Exception. sleep_time (int, optional): время ожидания между попытками (в секундах). Defaults to [берется из конфигурации]. Returns: Callable: декорируемая функция.
51) -> Callable:
52 """
53 Повторяет попытки выполнения функции в случае возникновения исключения.
54
55 Если `attempts_amount == 1`, просто оборачивает декорируемую функцию в
56 `try-except`.
57
58 Args:
59 attempts_amount (int, optional): количество попыток.
60 Defaults to [берется из конфигурации].
61 exception_to_check (type[Exception], optional): тип исключения для
62 перехвата. Defaults to Exception.
63 sleep_time (int, optional): время ожидания между попытками (в секундах).
64 Defaults to [берется из конфигурации].
65
66 Returns:
67 Callable: декорируемая функция.
68 """
69
70 def Decorate(func: Callable) -> Callable:
71 """Декорирует функцию."""
72
73 @wraps(func)
74 def Wrapper(*args, **kwargs):
75 # итерируемся по количеству попыток.
76 for attempt in range(1, attempts_amount + 1):
77 try:
78 # пытаемся выполнить функцию.
79 return func(*args, **kwargs)
80
81 # если возникло исключение.
82 except exception_to_check as exception:
83 # логируем исключение.
84 v_logger.LogException(exception)
85
86 # если это не последняя попытка.
87 if attempt < attempts_amount:
88 v_logger.warning(f"Attempt: {attempt}. Retrying.")
89 # ждем перед следующей попыткой.
90 time.sleep(sleep_time)
91
92 # если все попытки не удались.
93 if attempts_amount != 1:
94 v_logger.error("All attempts failed!")
95 # если количество попыток равно 1,
96 # значит в функции просто отлавливается исключение.
97
98 return None
99
100 # возвращаем функцию-обертку.
101 return Wrapper
102
103 # возвращаем декоратор.
104 return Decorate

Variable Documentation

◆ retry_config

Config decorators.retry_config = config["Utils"]["ReTry"]