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

Variable Documentation

◆ retry_config

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