edu-rdm-integration 3.4.9__py3-none-any.whl → 3.5.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. edu_rdm_integration/adapters/functions.py +3 -6
  2. edu_rdm_integration/adapters/helpers.py +2 -5
  3. edu_rdm_integration/adapters/managers.py +1 -4
  4. edu_rdm_integration/adapters/runners.py +9 -13
  5. edu_rdm_integration/apps.py +1 -1
  6. edu_rdm_integration/collect_data/base/caches.py +5 -7
  7. edu_rdm_integration/collect_data/base/helpers.py +1 -5
  8. edu_rdm_integration/collect_data/base/managers.py +4 -7
  9. edu_rdm_integration/collect_data/base/mixins.py +5 -8
  10. edu_rdm_integration/collect_data/calculated/base/functions.py +3 -6
  11. edu_rdm_integration/collect_data/calculated/base/helpers.py +2 -6
  12. edu_rdm_integration/collect_data/calculated/base/managers.py +1 -4
  13. edu_rdm_integration/collect_data/calculated/base/runners.py +3 -7
  14. edu_rdm_integration/collect_data/calculated/strategies.py +1 -2
  15. edu_rdm_integration/collect_data/collect.py +6 -10
  16. edu_rdm_integration/collect_data/generators.py +4 -6
  17. edu_rdm_integration/collect_data/helpers.py +1 -4
  18. edu_rdm_integration/collect_data/non_calculated/base/caches.py +2 -4
  19. edu_rdm_integration/collect_data/non_calculated/base/functions.py +3 -6
  20. edu_rdm_integration/collect_data/non_calculated/base/helpers.py +2 -6
  21. edu_rdm_integration/collect_data/non_calculated/base/managers.py +1 -4
  22. edu_rdm_integration/collect_data/non_calculated/base/runners.py +3 -7
  23. edu_rdm_integration/collect_data/non_calculated/strategies.py +1 -2
  24. edu_rdm_integration/collect_data/tests.py +3 -5
  25. edu_rdm_integration/entities.py +21 -22
  26. edu_rdm_integration/enum_register/mixins.py +7 -10
  27. edu_rdm_integration/enum_register/register.py +1 -2
  28. edu_rdm_integration/export_data/base/caches.py +1 -5
  29. edu_rdm_integration/export_data/base/functions.py +5 -7
  30. edu_rdm_integration/export_data/base/helpers.py +9 -13
  31. edu_rdm_integration/export_data/base/managers.py +3 -6
  32. edu_rdm_integration/export_data/base/runners.py +3 -7
  33. edu_rdm_integration/export_data/export.py +5 -9
  34. edu_rdm_integration/export_data/export_manger.py +1 -2
  35. edu_rdm_integration/export_data/generators.py +2 -3
  36. edu_rdm_integration/export_data/helpers.py +1 -4
  37. edu_rdm_integration/export_data/queue.py +3 -6
  38. edu_rdm_integration/export_data/strategies.py +1 -2
  39. edu_rdm_integration/function_templates/function_collect_data_template/functions.py-tpl +8 -9
  40. edu_rdm_integration/function_templates/function_collect_data_template/helpers.py-tpl +4 -6
  41. edu_rdm_integration/function_templates/function_collect_data_template/managers.py-tpl +2 -4
  42. edu_rdm_integration/function_templates/function_collect_data_template/runners.py-tpl +5 -7
  43. edu_rdm_integration/function_templates/function_collect_data_template/tests.py-tpl +1 -6
  44. edu_rdm_integration/function_templates/function_export_data_template/caches.py-tpl +1 -2
  45. edu_rdm_integration/function_templates/function_export_data_template/functions.py-tpl +5 -7
  46. edu_rdm_integration/function_templates/function_export_data_template/helpers.py-tpl +2 -6
  47. edu_rdm_integration/function_templates/function_export_data_template/managers.py-tpl +3 -6
  48. edu_rdm_integration/function_templates/function_export_data_template/runners.py-tpl +5 -7
  49. edu_rdm_integration/helpers.py +8 -11
  50. edu_rdm_integration/management/commands/async_fix_attachment_size.py +3 -7
  51. edu_rdm_integration/management/commands/check_upload_status.py +4 -4
  52. edu_rdm_integration/mapping.py +2 -7
  53. edu_rdm_integration/migrations/0013_set_attachment_size.py +4 -3
  54. edu_rdm_integration/models.py +3 -5
  55. edu_rdm_integration/redis_cache.py +1 -2
  56. edu_rdm_integration/registry/ui.py +5 -3
  57. edu_rdm_integration/storages.py +9 -15
  58. edu_rdm_integration/tasks.py +5 -7
  59. edu_rdm_integration/typing.py +1 -1
  60. edu_rdm_integration/uploader_log/actions.py +1 -1
  61. edu_rdm_integration/utils.py +6 -14
  62. {edu_rdm_integration-3.4.9.dist-info → edu_rdm_integration-3.5.1.dist-info}/METADATA +184 -58
  63. {edu_rdm_integration-3.4.9.dist-info → edu_rdm_integration-3.5.1.dist-info}/RECORD +67 -67
  64. {edu_rdm_integration-3.4.9.dist-info → edu_rdm_integration-3.5.1.dist-info}/LICENSE +0 -0
  65. {edu_rdm_integration-3.4.9.dist-info → edu_rdm_integration-3.5.1.dist-info}/WHEEL +0 -0
  66. {edu_rdm_integration-3.4.9.dist-info → edu_rdm_integration-3.5.1.dist-info}/namespace_packages.txt +0 -0
  67. {edu_rdm_integration-3.4.9.dist-info → edu_rdm_integration-3.5.1.dist-info}/top_level.txt +0 -0
@@ -5,9 +5,6 @@ from abc import (
5
5
  )
6
6
  from typing import (
7
7
  Any,
8
- Dict,
9
- List,
10
- Tuple,
11
8
  Union,
12
9
  )
13
10
 
@@ -91,7 +88,7 @@ class RdmRedisSubStageAttachmentQueue(Queue):
91
88
  """Возвращает количество подэтапов в очереди."""
92
89
  return self.connection.zcard(self.queue_key)
93
90
 
94
- def enqueue(self, stage_id, entity_name: str, attachmets: List[UploadFile]) -> None:
91
+ def enqueue(self, stage_id, entity_name: str, attachmets: list[UploadFile]) -> None:
95
92
  """Помещение в очередь.
96
93
 
97
94
  Подэтап попадает в упорядоченную очередь.
@@ -103,7 +100,7 @@ class RdmRedisSubStageAttachmentQueue(Queue):
103
100
  pipe.set(self._make_key(stage_id), json.dumps(attachmets))
104
101
  pipe.execute()
105
102
 
106
- def dequeue_sub_stage_attachments(self, sub_stage_id: int) -> List[UploadFile]:
103
+ def dequeue_sub_stage_attachments(self, sub_stage_id: int) -> list[UploadFile]:
107
104
  """Возвращает файлы подэтапа из кеша."""
108
105
  result = []
109
106
  attachments = self.connection.get(self._make_key(sub_stage_id))
@@ -113,7 +110,7 @@ class RdmRedisSubStageAttachmentQueue(Queue):
113
110
 
114
111
  return result
115
112
 
116
- def dequeue(self) -> Dict[Tuple[Any, Any], List[UploadFile]]:
113
+ def dequeue(self) -> dict[tuple[Any, Any], list[UploadFile]]:
117
114
  """Возвращает подэтапы из очереди - берется вся очередь без ограничений."""
118
115
  upload_files = {}
119
116
  exported_sub_stages = self.connection.zrange(self.queue_key, 0, -1)
@@ -1,5 +1,4 @@
1
1
  from typing import (
2
- List,
3
2
  Optional,
4
3
  )
5
4
 
@@ -69,7 +68,7 @@ class ExportDataFunctionImplementationStrategy(
69
68
  return 'Стратегия создания функций выгрузки данных'
70
69
 
71
70
  @classmethod
72
- def _prepare_tags(cls) -> List[str]:
71
+ def _prepare_tags(cls) -> list[str]:
73
72
  """
74
73
  Список тегов, по которым сущность можно будет осуществлять поиск.
75
74
  """
@@ -1,10 +1,7 @@
1
1
  from typing import (
2
2
  TYPE_CHECKING,
3
3
  Any,
4
- Dict,
5
- List,
6
4
  Optional,
7
- Type,
8
5
  )
9
6
 
10
7
  from educommon.integration_entities.enums import (
@@ -45,6 +42,8 @@ if TYPE_CHECKING:
45
42
  class {{ camel_case_function_name }}Function({{ strategy.function_class_name }}):
46
43
  """Функция "{{ function_verbose_name }}"."""
47
44
 
45
+ helper: '{{ camel_case_function_name }}FunctionHelper'
46
+
48
47
  def __init__(
49
48
  self,
50
49
  *args,
@@ -77,7 +76,7 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
77
76
  return 'Функция "{{ function_verbose_name }}"'
78
77
 
79
78
  @classmethod
80
- def _prepare_tags(cls) -> List[str]:
79
+ def _prepare_tags(cls) -> list[str]:
81
80
  """Список тегов, по которым сущность можно будет осуществлять поиск."""
82
81
  tags = [
83
82
  REGIONAL_DATA_MART_INTEGRATION_COLLECTING_DATA,
@@ -86,7 +85,7 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
86
85
  return tags
87
86
 
88
87
  @classmethod
89
- def _prepare_entities(cls) -> List['ModelEnumValue']:
88
+ def _prepare_entities(cls) -> list['ModelEnumValue']:
90
89
  """Формирование списка ключей модели-перечисления моделей РВД."""
91
90
  rdm_models = [
92
91
  RegionalDataMartModelEnum.,
@@ -94,15 +93,15 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
94
93
 
95
94
  return rdm_models
96
95
 
97
- def _prepare_helper_class(self) -> Type[{{ camel_case_function_name }}FunctionHelper]:
96
+ def _prepare_helper_class(self) -> type[{{ camel_case_function_name }}FunctionHelper]:
98
97
  """Возвращает класс помощника функции."""
99
98
  return {{ camel_case_function_name }}FunctionHelper
100
99
 
101
- def _prepare_validator_class(self) -> Type[{{ camel_case_function_name }}FunctionValidator]:
100
+ def _prepare_validator_class(self) -> type[{{ camel_case_function_name }}FunctionValidator]:
102
101
  """Возвращает класс валидатора функции."""
103
102
  return {{ camel_case_function_name }}FunctionValidator
104
103
 
105
- def _prepare_result_class(self) -> Type[{{ camel_case_function_name }}FunctionResult]:
104
+ def _prepare_result_class(self) -> type[{{ camel_case_function_name }}FunctionResult]:
106
105
  """Возвращает класс результата функции."""
107
106
  return {{ camel_case_function_name }}FunctionResult
108
107
 
@@ -110,7 +109,7 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
110
109
  """Подготовка объектов модели РВД для создания."""
111
110
  raise NotImplementedError
112
111
 
113
- def _prepare_model_instances_for_update(self, class_id: int, log_changes: Dict[str, Any], **kwargs) -> None:
112
+ def _prepare_model_instances_for_update(self, class_id: int, log_changes: dict[str, Any], **kwargs) -> None:
114
113
  """Подготовка объектов модели РВД для обновления."""
115
114
  raise NotImplementedError
116
115
 
@@ -1,7 +1,3 @@
1
- from typing import (
2
- Type,
3
- )
4
-
5
1
  from {{ strategy.function_helper_class_module }} import (
6
2
  {{ strategy.function_helper_class_name }},
7
3
  )
@@ -18,7 +14,7 @@ from {{ function_python_path }}.caches import (
18
14
  class {{ camel_case_function_name }}RunnerHelper({{ strategy.runner_helper_class_name }}):
19
15
  """Помощник ранера функции "{{ function_verbose_name }}"."""
20
16
 
21
- def _prepare_cache_class(self) -> Type[{{ camel_case_function_name }}RunnerCacheStorage]:
17
+ def _prepare_cache_class(self) -> type[{{ camel_case_function_name }}RunnerCacheStorage]:
22
18
  """Возвращает класс кеша помощника ранера."""
23
19
  return {{ camel_case_function_name }}RunnerCacheStorage
24
20
 
@@ -26,6 +22,8 @@ class {{ camel_case_function_name }}RunnerHelper({{ strategy.runner_helper_class
26
22
  class {{ camel_case_function_name }}FunctionHelper({{ strategy.function_helper_class_name }}):
27
23
  """Помощник функции "{{ function_verbose_name }}"."""
28
24
 
29
- def _prepare_cache_class(self) -> Type[{{ camel_case_function_name }}FunctionCacheStorage]:
25
+ cache: '{{ camel_case_function_name }}FunctionCacheStorage'
26
+
27
+ def _prepare_cache_class(self) -> type[{{ camel_case_function_name }}FunctionCacheStorage]:
30
28
  """Возвращает класс кеша помощника функции."""
31
29
  return {{ camel_case_function_name }}FunctionCacheStorage
@@ -1,7 +1,5 @@
1
1
  from typing import (
2
- List,
3
2
  Optional,
4
- Type,
5
3
  )
6
4
 
7
5
  from edu_rdm_integration.consts import (
@@ -34,7 +32,7 @@ class {{ camel_case_function_name }}RunnerManager({{ strategy.manager_class_name
34
32
  return 'Менеджер Функции "{{ function_verbose_name }}"'
35
33
 
36
34
  @classmethod
37
- def _prepare_tags(cls) -> List[str]:
35
+ def _prepare_tags(cls) -> list[str]:
38
36
  """Список тегов, по которым сущность можно будет осуществлять поиск."""
39
37
  tags = [
40
38
  REGIONAL_DATA_MART_INTEGRATION_COLLECTING_DATA,
@@ -43,6 +41,6 @@ class {{ camel_case_function_name }}RunnerManager({{ strategy.manager_class_name
43
41
  return tags
44
42
 
45
43
  @classmethod
46
- def _prepare_runner_class(cls) -> Type[{{ camel_case_function_name }}Runner]:
44
+ def _prepare_runner_class(cls) -> type[{{ camel_case_function_name }}Runner]:
47
45
  """Возвращает класс ранера."""
48
46
  return {{ camel_case_function_name }}Runner
@@ -1,7 +1,5 @@
1
1
  from typing import (
2
- List,
3
2
  Optional,
4
- Type,
5
3
  )
6
4
 
7
5
  from function_tools.general import (
@@ -47,7 +45,7 @@ class {{ camel_case_function_name }}Runner({{ strategy.runner_class_name }}):
47
45
  return 'Ранер функции "{{ function_verbose_name }}"'
48
46
 
49
47
  @classmethod
50
- def _prepare_tags(cls) -> List[str]:
48
+ def _prepare_tags(cls) -> list[str]:
51
49
  """Список тегов, по которым сущность можно будет осуществлять поиск."""
52
50
  tags = [
53
51
  REGIONAL_DATA_MART_INTEGRATION_COLLECTING_DATA,
@@ -56,18 +54,18 @@ class {{ camel_case_function_name }}Runner({{ strategy.runner_class_name }}):
56
54
  return tags
57
55
 
58
56
  @classmethod
59
- def _prepare_runnable_classes(cls) -> Optional[List[Type[RunnableObject]]]:
57
+ def _prepare_runnable_classes(cls) -> Optional[list[type[RunnableObject]]]:
60
58
  """Возвращает список классов запускаемых объектов, которые будут ставиться в очередь на исполнение."""
61
59
  return [{{ camel_case_function_name }}Function]
62
60
 
63
- def _prepare_helper_class(self) -> Type[{{ camel_case_function_name }}RunnerHelper]:
61
+ def _prepare_helper_class(self) -> type[{{ camel_case_function_name }}RunnerHelper]:
64
62
  """Возвращает класс помощника ранера функции."""
65
63
  return {{ camel_case_function_name }}RunnerHelper
66
64
 
67
- def _prepare_validator_class(self) -> Type[{{ camel_case_function_name }}RunnerValidator]:
65
+ def _prepare_validator_class(self) -> type[{{ camel_case_function_name }}RunnerValidator]:
68
66
  """Возвращает класс валидатора ранера функции."""
69
67
  return {{ camel_case_function_name }}RunnerValidator
70
68
 
71
- def _prepare_result_class(self) -> Type[{{ camel_case_function_name }}RunnerResult]:
69
+ def _prepare_result_class(self) -> type[{{ camel_case_function_name }}RunnerResult]:
72
70
  """Возвращает класс результата ранера функции."""
73
71
  return {{ camel_case_function_name }}RunnerResult
@@ -1,6 +1,5 @@
1
1
  from typing import (
2
2
  TYPE_CHECKING,
3
- Type,
4
3
  )
5
4
 
6
5
  from edu_rdm_integration.collect_data.tests import (
@@ -22,10 +21,6 @@ class Base{{ camel_case_function_name }}TestCase(BaseCollectingFunctionTestCase)
22
21
  """Базовый класс тестирования Функции "{{ function_verbose_name }}"."""
23
22
 
24
23
  @property
25
- def manager(self) -> Type['RunnerManager']:
24
+ def manager(self) -> type['RunnerManager']:
26
25
  """Менеджер раннера Функции сбора."""
27
26
  return {{ camel_case_function_name }}RunnerManager
28
-
29
- def setUp(self) -> None:
30
- """Подготавливает фикстуры."""
31
- super().setUp()
@@ -1,6 +1,5 @@
1
1
  from typing import (
2
2
  TYPE_CHECKING,
3
- List,
4
3
  )
5
4
 
6
5
  from {{ strategy.function_cache_storage_class_module }} import (
@@ -24,7 +23,7 @@ class {{ camel_case_function_name }}RunnerCacheStorage({{ strategy.runner_cache_
24
23
  class {{ camel_case_function_name }}FunctionCacheStorage({{ strategy.function_cache_storage_class_name }}):
25
24
  """Кеш помощника функции "{{ function_verbose_name }}"."""
26
25
 
27
- def _prepare_entity_instances(self, model_ids, *args, **kwargs) -> List['BaseEntity']:
26
+ def _prepare_entity_instances(self, model_ids, *args, **kwargs) -> list['BaseEntity']:
28
27
  """Подготовка данных для экспорта в виде экземпляров сущности."""
29
28
  instances = []
30
29
 
@@ -1,8 +1,6 @@
1
1
  from typing import (
2
2
  TYPE_CHECKING,
3
- List,
4
3
  Optional,
5
- Type,
6
4
  )
7
5
 
8
6
  from edu_rdm_integration.consts import (
@@ -50,7 +48,7 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
50
48
  return 'Функция "{{ function_verbose_name }}"'
51
49
 
52
50
  @classmethod
53
- def _prepare_entities(cls) -> List['ModelEnumValue']:
51
+ def _prepare_entities(cls) -> list['ModelEnumValue']:
54
52
  """Формирование списка ключей модели-перечисления сущностей."""
55
53
  entities = [
56
54
  RegionalDataMartEntityEnum.,
@@ -59,7 +57,7 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
59
57
  return entities
60
58
 
61
59
  @classmethod
62
- def _prepare_tags(cls) -> List[str]:
60
+ def _prepare_tags(cls) -> list[str]:
63
61
  """Список тегов, по которым сущность можно будет осуществлять поиск."""
64
62
  tags = [
65
63
  REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
@@ -67,14 +65,14 @@ class {{ camel_case_function_name }}Function({{ strategy.function_class_name }})
67
65
 
68
66
  return tags
69
67
 
70
- def _prepare_helper_class(self) -> Type[{{ camel_case_function_name }}FunctionHelper]:
68
+ def _prepare_helper_class(self) -> type[{{ camel_case_function_name }}FunctionHelper]:
71
69
  """Возвращает класс помощника функции."""
72
70
  return {{ camel_case_function_name }}FunctionHelper
73
71
 
74
- def _prepare_validator_class(self) -> Type[{{ camel_case_function_name }}FunctionValidator]:
72
+ def _prepare_validator_class(self) -> type[{{ camel_case_function_name }}FunctionValidator]:
75
73
  """Возвращает класс валидатора функции."""
76
74
  return {{ camel_case_function_name }}FunctionValidator
77
75
 
78
- def _prepare_result_class(self) -> Type[{{ camel_case_function_name }}FunctionResult]:
76
+ def _prepare_result_class(self) -> type[{{ camel_case_function_name }}FunctionResult]:
79
77
  """Возвращает класс результата функции."""
80
78
  return {{ camel_case_function_name }}FunctionResult
@@ -1,7 +1,3 @@
1
- from typing import (
2
- Type,
3
- )
4
-
5
1
  from {{ strategy.function_helper_class_module }} import (
6
2
  {{ strategy.function_helper_class_name }},
7
3
  )
@@ -18,7 +14,7 @@ from {{ function_python_path }}.caches import (
18
14
  class {{ camel_case_function_name }}RunnerHelper({{ strategy.runner_helper_class_name }}):
19
15
  """Помощник ранера функции "{{ function_verbose_name }}"."""
20
16
 
21
- def _prepare_cache_class(self) -> Type[{{ camel_case_function_name }}RunnerCacheStorage]:
17
+ def _prepare_cache_class(self) -> type[{{ camel_case_function_name }}RunnerCacheStorage]:
22
18
  """Возвращает класс кеша помощника ранера."""
23
19
  return {{ camel_case_function_name }}RunnerCacheStorage
24
20
 
@@ -26,7 +22,7 @@ class {{ camel_case_function_name }}RunnerHelper({{ strategy.runner_helper_class
26
22
  class {{ camel_case_function_name }}FunctionHelper({{ strategy.function_helper_class_name }}):
27
23
  """Помощник функции "{{ function_verbose_name }}"."""
28
24
 
29
- def _prepare_cache_class(self) -> Type[{{ camel_case_function_name }}FunctionCacheStorage]:
25
+ def _prepare_cache_class(self) -> type[{{ camel_case_function_name }}FunctionCacheStorage]:
30
26
  """
31
27
  Возвращает класс кеша помощника функции.
32
28
  """
@@ -1,10 +1,7 @@
1
1
  from typing import (
2
2
  TYPE_CHECKING,
3
- Dict,
4
3
  Iterator,
5
- List,
6
4
  Optional,
7
- Type,
8
5
  )
9
6
 
10
7
  from edu_rdm_integration.consts import (
@@ -46,7 +43,7 @@ class {{ camel_case_function_name }}RunnerManager({{ strategy.manager_class_name
46
43
  return 'Менеджер Функции "{{ function_verbose_name }}"'
47
44
 
48
45
  @classmethod
49
- def _prepare_tags(cls) -> List[str]:
46
+ def _prepare_tags(cls) -> list[str]:
50
47
  """Список тегов, по которым сущность можно будет осуществлять поиск."""
51
48
  tags = [
52
49
  REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
@@ -55,11 +52,11 @@ class {{ camel_case_function_name }}RunnerManager({{ strategy.manager_class_name
55
52
  return tags
56
53
 
57
54
  @classmethod
58
- def _prepare_runner_class(cls) -> Type[{{ camel_case_function_name }}Runner]:
55
+ def _prepare_runner_class(cls) -> type[{{ camel_case_function_name }}Runner]:
59
56
  """Возвращает класс ранера."""
60
57
  return {{ camel_case_function_name }}Runner
61
58
 
62
- def _prepare_model_ids_map(self) -> Dict['ModelEnumValue', Iterator[int]]:
59
+ def _prepare_model_ids_map(self) -> dict['ModelEnumValue', Iterator[int]]:
63
60
  """Осуществляется поиск записей моделей добавленных или обновленных за указанный период времени.
64
61
 
65
62
  В выборках (QuerySet) необходимо использовать iterator().
@@ -1,7 +1,5 @@
1
1
  from typing import (
2
- List,
3
2
  Optional,
4
- Type,
5
3
  )
6
4
 
7
5
  from django.conf import (
@@ -57,7 +55,7 @@ class {{ camel_case_function_name }}Runner({{ strategy.runner_class_name }}):
57
55
  return 'Ранер функции "{{ function_verbose_name }}"'
58
56
 
59
57
  @classmethod
60
- def _prepare_tags(cls) -> List[str]:
58
+ def _prepare_tags(cls) -> list[str]:
61
59
  """Список тегов, по которым сущность можно будет осуществлять поиск."""
62
60
  tags = [
63
61
  REGIONAL_DATA_MART_INTEGRATION_EXPORTING_DATA,
@@ -66,19 +64,19 @@ class {{ camel_case_function_name }}Runner({{ strategy.runner_class_name }}):
66
64
  return tags
67
65
 
68
66
  @classmethod
69
- def _prepare_runnable_classes(cls) -> Optional[List[Type[RunnableObject]]]:
67
+ def _prepare_runnable_classes(cls) -> Optional[list[type[RunnableObject]]]:
70
68
  """Возвращает список классов запускаемых объектов, которые будут ставиться в очередь на исполнение."""
71
69
  return [{{ camel_case_function_name }}Function]
72
70
 
73
- def _prepare_helper_class(self) -> Type[{{ camel_case_function_name }}RunnerHelper]:
71
+ def _prepare_helper_class(self) -> type[{{ camel_case_function_name }}RunnerHelper]:
74
72
  """Возвращает класс помощника ранера функции."""
75
73
  return {{ camel_case_function_name }}RunnerHelper
76
74
 
77
- def _prepare_validator_class(self) -> Type[{{ camel_case_function_name }}RunnerValidator]:
75
+ def _prepare_validator_class(self) -> type[{{ camel_case_function_name }}RunnerValidator]:
78
76
  """Возвращает класс валидатора ранера функции."""
79
77
  return {{ camel_case_function_name }}RunnerValidator
80
78
 
81
- def _prepare_result_class(self) -> Type[{{ camel_case_function_name }}RunnerResult]:
79
+ def _prepare_result_class(self) -> type[{{ camel_case_function_name }}RunnerResult]:
82
80
  """Возвращает класс результата ранера функции."""
83
81
  return {{ camel_case_function_name }}RunnerResult
84
82
 
@@ -9,11 +9,8 @@ from json import (
9
9
  from typing import (
10
10
  TYPE_CHECKING,
11
11
  Any,
12
- Dict,
13
12
  Iterable,
14
- List,
15
13
  Optional,
16
- Tuple,
17
14
  Union,
18
15
  )
19
16
 
@@ -102,7 +99,7 @@ class UploadStatusHelper:
102
99
  self._process_upload(upload)
103
100
 
104
101
  @classmethod
105
- def send_upload_status_request(cls, request_id: str) -> Tuple[Optional[Dict[str, Any]], 'Entry']:
102
+ def send_upload_status_request(cls, request_id: str) -> tuple[Optional[dict[str, Any]], 'Entry']:
106
103
  """Формирует и отправляет запрос для получения статуса загрузки данных в витрину."""
107
104
  request = RegionalDataMartStatusRequest(
108
105
  request_id=request_id,
@@ -141,7 +138,7 @@ class UploadStatusHelper:
141
138
  def update_upload_status(
142
139
  cls,
143
140
  upload: ExportingDataSubStageUploaderClientLog,
144
- response: Optional[Dict[str, Any]],
141
+ response: Optional[dict[str, Any]],
145
142
  log_entry: 'Entry',
146
143
  ) -> None:
147
144
  """Обновляет статус загрузки данных в витрину."""
@@ -201,7 +198,7 @@ class Graph:
201
198
  """
202
199
 
203
200
  def __init__(self):
204
- self.vertices: Dict[str, Dict[str, Optional[str]]] = {}
201
+ self.vertices: dict[str, dict[str, Optional[str]]] = {}
205
202
  """Словарь для хранения данных графа."""
206
203
 
207
204
  def add_vertex(self, vertex: str):
@@ -232,11 +229,11 @@ class Graph:
232
229
  self.vertices[vertex1].pop(vertex2, None)
233
230
  self.vertices[vertex2].pop(vertex1, None)
234
231
 
235
- def get_vertices(self) -> List[str]:
232
+ def get_vertices(self) -> list[str]:
236
233
  """Получение списка всех вершин."""
237
234
  return list(self.vertices)
238
235
 
239
- def get_edges(self) -> List[Tuple[str, str, Optional[str]]]:
236
+ def get_edges(self) -> list[tuple[str, str, Optional[str]]]:
240
237
  """Получение всех связей."""
241
238
  edges = []
242
239
 
@@ -258,7 +255,7 @@ class Graph:
258
255
 
259
256
  def get_edges_between_vertices(
260
257
  self, from_vertex: str, to_vertex: str, required_edge_name: bool = True
261
- ) -> List[str]:
258
+ ) -> list[str]:
262
259
  """Получение списка наименований ребер между вершинами."""
263
260
  if from_vertex not in self.vertices and to_vertex not in self.vertices:
264
261
  return []
@@ -326,7 +323,7 @@ def save_command_log_link(
326
323
 
327
324
  def get_collecting_managers_max_period_ended_dates(
328
325
  collecting_managers: Iterable['BaseCollectingExportedDataRunnerManager'],
329
- ) -> Dict[str, 'datetime']:
326
+ ) -> dict[str, 'datetime']:
330
327
  """Возвращает дату и время завершения последнего успешного этапа сбора для менеджеров Функций сбора."""
331
328
  managers_last_period_ended = CollectingExportedDataStage.objects.filter(
332
329
  manager_id__in=[manager.uuid for manager in collecting_managers],
@@ -351,7 +348,7 @@ def get_collecting_managers_max_period_ended_dates(
351
348
 
352
349
  def get_exporting_managers_max_period_ended_dates(
353
350
  exporting_managers: Iterable['BaseExportDataRunnerManager'],
354
- ) -> Dict[str, 'datetime']:
351
+ ) -> dict[str, 'datetime']:
355
352
  """Возвращает дату и время последнего успешного этапа экспорта для менеджеров Функций экспорта."""
356
353
  managers_last_period_ended = ExportingDataStage.objects.filter(
357
354
  manager_id__in=[manager.uuid for manager in exporting_managers],
@@ -22,10 +22,6 @@ from datetime import (
22
22
  datetime,
23
23
  timedelta,
24
24
  )
25
- from typing import (
26
- List,
27
- Tuple,
28
- )
29
25
 
30
26
  import asyncpg
31
27
  from django.conf import (
@@ -117,7 +113,7 @@ class Command(BaseCommand):
117
113
  date_begin: date,
118
114
  date_end: date,
119
115
  count_store_size: bool
120
- ) -> List[Tuple[int, int]]:
116
+ ) -> list[tuple[int, int]]:
121
117
  """Формирование id файлов, которым надо обновить размер."""
122
118
  logger.info('Определение файлов, которым надо обновить размер.')
123
119
  attachment_query = ExportingDataSubStageAttachment.objects.filter(
@@ -149,7 +145,7 @@ class Command(BaseCommand):
149
145
  async def execute_update_sql(
150
146
  self,
151
147
  pool: asyncpg.Pool,
152
- data: List[Tuple[int, int]]
148
+ data: list[tuple[int, int]]
153
149
  ) -> None:
154
150
  """Метод для исполнения сгенерированного UPDATE sql запроса."""
155
151
  self.result['initial_count_rows_to_fix'] += len(data)
@@ -169,7 +165,7 @@ class Command(BaseCommand):
169
165
 
170
166
  async def fix_attachment_size(
171
167
  self,
172
- fix_queries: List,
168
+ fix_queries: list,
173
169
  pool_size: int = None,
174
170
  workers_count: int = None
175
171
  ) -> None:
@@ -17,8 +17,6 @@ from datetime import (
17
17
  from typing import (
18
18
  TYPE_CHECKING,
19
19
  Any,
20
- Dict,
21
- Tuple,
22
20
  )
23
21
 
24
22
  from django.core.management.base import (
@@ -31,7 +29,9 @@ from edu_rdm_integration.consts import (
31
29
  from edu_rdm_integration.enums import (
32
30
  FileUploadStatusEnum,
33
31
  )
34
- from edu_rdm_integration.helpers import UploadStatusHelper
32
+ from edu_rdm_integration.helpers import (
33
+ UploadStatusHelper,
34
+ )
35
35
  from edu_rdm_integration.models import (
36
36
  ExportingDataSubStageUploaderClientLog,
37
37
  )
@@ -81,7 +81,7 @@ class Command(BaseCommand):
81
81
  help='Количество потоков для обработки. По умолчанию, 1.',
82
82
  )
83
83
 
84
- def handle(self, *args: Tuple[Any], **kwargs: Dict[str, Any]) -> None:
84
+ def handle(self, *args: tuple[Any], **kwargs: dict[str, Any]) -> None:
85
85
  """Обработчик команды."""
86
86
  thread_count = kwargs['thread_count']
87
87
  if thread_count < 1:
@@ -1,18 +1,13 @@
1
- from typing import (
2
- Dict,
3
- Tuple,
4
- )
5
-
6
1
  from educommon.integration_entities.enums import (
7
2
  EntityLogOperation,
8
3
  )
9
4
 
10
5
 
11
6
  # Перечень отслеживаемых моделей и перечней полей по операциям лога. Расширяется в продуктах
12
- MODEL_FIELDS_LOG_FILTER: Dict[EntityLogOperation, Dict[str, Tuple]] = {
7
+ MODEL_FIELDS_LOG_FILTER: dict[EntityLogOperation, dict[str, tuple]] = {
13
8
  EntityLogOperation.CREATE: {},
14
9
  EntityLogOperation.UPDATE: {},
15
- EntityLogOperation.DELETE: {}
10
+ EntityLogOperation.DELETE: {},
16
11
  }
17
12
 
18
13
  # Маппинг операций логов моделей и сущностей по умолчанию
@@ -4,13 +4,14 @@ from django.db import (
4
4
  migrations,
5
5
  )
6
6
 
7
- from edu_rdm_integration.enums import (
8
- FileUploadStatusEnum,
9
- )
10
7
  from educommon.utils.seqtools import (
11
8
  make_chunks,
12
9
  )
13
10
 
11
+ from edu_rdm_integration.enums import (
12
+ FileUploadStatusEnum,
13
+ )
14
+
14
15
 
15
16
  # Значение размера файла по умолчанию (если файл не найден)
16
17
  ATTACHMENT_SIZES = 10_485_760
@@ -6,9 +6,7 @@ from io import (
6
6
  StringIO,
7
7
  )
8
8
  from typing import (
9
- List,
10
9
  Optional,
11
- Tuple,
12
10
  )
13
11
 
14
12
  from django.contrib.postgres.fields import (
@@ -737,9 +735,9 @@ class RegionalDataMartEntityEnum(TitledModelEnum):
737
735
  @classmethod
738
736
  def get_entities_model_enums(
739
737
  cls,
740
- entity_enums: List[ModelEnumValue],
738
+ entity_enums: list[ModelEnumValue],
741
739
  is_sorted: bool = True,
742
- ) -> List[ModelEnumValue]:
740
+ ) -> list[ModelEnumValue]:
743
741
  """Получение списка значений модели-перечисления моделей RegionalDataMartModelEnum.
744
742
 
745
743
  Args:
@@ -872,7 +870,7 @@ class UploaderClientLog(Entry):
872
870
  base_objects = Manager()
873
871
 
874
872
  @cached_property
875
- def http_method_and_url(self) -> Tuple[str, str]:
873
+ def http_method_and_url(self) -> tuple[str, str]:
876
874
  """Возвращает http-метод и url из поля запроса Entry.request."""
877
875
  request = StringIO(self.request)
878
876
  request_first_line = request.readline()
@@ -3,7 +3,6 @@ from abc import (
3
3
  abstractmethod,
4
4
  )
5
5
  from typing import (
6
- Tuple,
7
6
  Union,
8
7
  )
9
8
 
@@ -13,7 +12,7 @@ from redis import (
13
12
  )
14
13
 
15
14
 
16
- def get_redis_version(connection: 'Redis') -> Tuple[int, int, int]:
15
+ def get_redis_version(connection: 'Redis') -> tuple[int, int, int]:
17
16
  """Возвращает кортеж с версией сервера Redis."""
18
17
  try:
19
18
  version = getattr(connection, '__redis_server_version', None)
@@ -1,13 +1,15 @@
1
- from objectpack.ui import (
2
- BaseListWindow,
3
- )
4
1
  from m3_ext.ui.all_components import (
5
2
  ExtButton,
6
3
  )
4
+ from objectpack.ui import (
5
+ BaseListWindow,
6
+ )
7
+
7
8
  from educommon.utils.ui import (
8
9
  append_template_globals,
9
10
  )
10
11
 
12
+
11
13
  class TransferredEntityListWindow(BaseListWindow):
12
14
  """Окно реестра сущностей для сбора и экспорта данных."""
13
15