edu-function-tools 0.1.0__tar.gz

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 (29) hide show
  1. edu_function_tools-0.1.0/CHANGELOG.md +39 -0
  2. edu_function_tools-0.1.0/LICENSE +30 -0
  3. edu_function_tools-0.1.0/MANIFEST.in +8 -0
  4. edu_function_tools-0.1.0/PKG-INFO +51 -0
  5. edu_function_tools-0.1.0/README.md +7 -0
  6. edu_function_tools-0.1.0/pyproject.toml +133 -0
  7. edu_function_tools-0.1.0/setup.cfg +4 -0
  8. edu_function_tools-0.1.0/src/edu_function_tools/__init__.py +1 -0
  9. edu_function_tools-0.1.0/src/edu_function_tools/apps.py +26 -0
  10. edu_function_tools-0.1.0/src/edu_function_tools/caches.py +56 -0
  11. edu_function_tools-0.1.0/src/edu_function_tools/consts.py +1 -0
  12. edu_function_tools-0.1.0/src/edu_function_tools/enums.py +1 -0
  13. edu_function_tools-0.1.0/src/edu_function_tools/errors.py +24 -0
  14. edu_function_tools-0.1.0/src/edu_function_tools/functions.py +99 -0
  15. edu_function_tools-0.1.0/src/edu_function_tools/helpers.py +63 -0
  16. edu_function_tools-0.1.0/src/edu_function_tools/managers.py +61 -0
  17. edu_function_tools-0.1.0/src/edu_function_tools/presenters.py +37 -0
  18. edu_function_tools-0.1.0/src/edu_function_tools/receivers.py +35 -0
  19. edu_function_tools-0.1.0/src/edu_function_tools/results.py +65 -0
  20. edu_function_tools-0.1.0/src/edu_function_tools/runners.py +140 -0
  21. edu_function_tools-0.1.0/src/edu_function_tools/strategies.py +166 -0
  22. edu_function_tools-0.1.0/src/edu_function_tools/strings.py +1 -0
  23. edu_function_tools-0.1.0/src/edu_function_tools/tests.py +1 -0
  24. edu_function_tools-0.1.0/src/edu_function_tools/validators.py +58 -0
  25. edu_function_tools-0.1.0/src/edu_function_tools.egg-info/PKG-INFO +51 -0
  26. edu_function_tools-0.1.0/src/edu_function_tools.egg-info/SOURCES.txt +27 -0
  27. edu_function_tools-0.1.0/src/edu_function_tools.egg-info/dependency_links.txt +1 -0
  28. edu_function_tools-0.1.0/src/edu_function_tools.egg-info/requires.txt +22 -0
  29. edu_function_tools-0.1.0/src/edu_function_tools.egg-info/top_level.txt +1 -0
@@ -0,0 +1,39 @@
1
+ # История изменений
2
+
3
+ Все изменения проекта должны быть отражены в этом файле.
4
+
5
+ Формат основан на [Keep a Changelog](http://keepachangelog.com/)
6
+ и проект следует [Семантическому версионированию](http://semver.org/).
7
+
8
+ ## [x.y.z] - гггг-мм-дд
9
+
10
+ Здесь должно быть расширенное описание того, что было сделано, какие есть планы у команды по дальнейшему развитию.
11
+ Желательно будущие цели привязывать к конкретным задачам. Т.е. на каждую цель нужно поставить отдельную задачу и
12
+ отразить ее номер здесь.
13
+
14
+ ### Добавлено
15
+
16
+ - [ПРОЕКТ-ZZZZ](https://jira.bars.group/browse/ПРОЕКТ-ZZZZ)
17
+ PATCH Название задачи или изменения.
18
+
19
+ - [ПРОЕКТ-YYYY](https://jira.bars.group/browse/ПРОЕКТ-YYYY)
20
+ MINOR Название задачи или изменения.
21
+
22
+ - [ПРОЕКТ-XXXX](https://jira.bars.group/browse/ПРОЕКТ-XXXX)
23
+ MAJOR Название задачи или изменения.
24
+
25
+ ### Изменено
26
+
27
+ ### Исправлено
28
+
29
+ ### Удалено
30
+
31
+
32
+ ## [0.1.0] - 2025-07-03
33
+
34
+ Выполнен перенос адаптированных компонентов function-tools из edu-rdm-integration.
35
+
36
+ ### Добавлено
37
+
38
+ - [EDUDEVOPS-91](https://jira.bars.group/browse/EDUDEVOPS-91)
39
+ MINOR Перенос адаптированных компонентов function-tools для проектов "Образования" из edu-rdm-integration.
@@ -0,0 +1,30 @@
1
+ Copyright © 2022 ЗАО “БАРС Груп”
2
+
3
+ Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем
4
+ именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное
5
+ право на использование, копирование, изменение, добавление, публикацию, распространение, сублицензирование и/или продажу копий
6
+ Программного Обеспечения, также как и лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих
7
+ условий:
8
+
9
+ Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного
10
+ Программного Обеспечения.
11
+
12
+ ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ,
13
+ НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ ПРАВ.
14
+ НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО ИСКАМ О ВОЗМЕЩЕНИИ УЩЕРБА, УБЫТКОВ ИЛИ ДРУГИХ ТРЕБОВАНИЙ
15
+ ПО ДЕЙСТВУЮЩИМ КОНТРАКТАМ, ДЕЛИКТАМ ИЛИ ИНОМУ, ВОЗНИКШИМ ИЗ, ИМЕЮЩИМ ПРИЧИНОЙ ИЛИ СВЯЗАННЫМ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ
16
+ ИСПОЛЬЗОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
17
+
18
+ Copyright © 2022 BARS Group
19
+
20
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
21
+ (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
22
+ merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
23
+ furnished to do so, subject to the following conditions:
24
+
25
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
28
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
29
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
30
+ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,8 @@
1
+ graft src
2
+
3
+ global-exclude *.pyc
4
+ global-exclude __pycache__
5
+
6
+ include LICENSE
7
+ include CHANGELOG.md
8
+ include README.md
@@ -0,0 +1,51 @@
1
+ Metadata-Version: 2.4
2
+ Name: edu-function-tools
3
+ Version: 0.1.0
4
+ Summary: Компоненты для адаптации библиотеки function-tools
5
+ Author-email: BARS Group <education_dev@bars.group>
6
+ Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/edu-function-tools/browse
7
+ Project-URL: Repository, https://stash.bars-open.ru/scm/edubase/edu-function-tools.git
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Framework :: Django :: 2.2
15
+ Classifier: Framework :: Django :: 3.0
16
+ Classifier: Framework :: Django :: 3.1
17
+ Classifier: Framework :: Django :: 3.2
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Environment :: Web Environment
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: transliterate<2
24
+ Requires-Dist: Django<3.3,>=3.1
25
+ Requires-Dist: celery<5.3,>=4.4.7
26
+ Requires-Dist: asyncpg==0.23.0
27
+ Requires-Dist: educommon<4,>=3.11.0
28
+ Requires-Dist: function-tools<1,>=0.9.0
29
+ Requires-Dist: m3-db-utils<1,>=0.3.10
30
+ Requires-Dist: m3-django-compat<2,>=1.10.2
31
+ Requires-Dist: uploader-client<1,>=0.2.3
32
+ Provides-Extra: dev
33
+ Requires-Dist: isort==5.12.0; extra == "dev"
34
+ Requires-Dist: ruff==0.6.9; extra == "dev"
35
+ Requires-Dist: flake8<7,>=4.0.1; extra == "dev"
36
+ Requires-Dist: pytest<8,>=3.2.5; extra == "dev"
37
+ Requires-Dist: pytest-cov<5; extra == "dev"
38
+ Provides-Extra: docs
39
+ Requires-Dist: sphinx<7.5,>=7; extra == "docs"
40
+ Requires-Dist: sphinx-autodoc-typehints<2.5,>=2; extra == "docs"
41
+ Requires-Dist: myst-parser<3.2,>=3; extra == "docs"
42
+ Requires-Dist: sphinx_design<0.7,>=0.6; extra == "docs"
43
+ Dynamic: license-file
44
+
45
+ # Компоненты адаптации пакета function-tools для продуктов "Образования".
46
+
47
+ Пакет содержит адаптированные компоненты function-tools для продуктов Образования.
48
+
49
+ ## Требования к окружению
50
+
51
+ Для работы требуется Python >=3.9. Версии всех применяемых пакетов уточнены в pyproject.toml.
@@ -0,0 +1,7 @@
1
+ # Компоненты адаптации пакета function-tools для продуктов "Образования".
2
+
3
+ Пакет содержит адаптированные компоненты function-tools для продуктов Образования.
4
+
5
+ ## Требования к окружению
6
+
7
+ Для работы требуется Python >=3.9. Версии всех применяемых пакетов уточнены в pyproject.toml.
@@ -0,0 +1,133 @@
1
+ [build-system]
2
+ requires = [
3
+ 'packaging>=24,<25',
4
+ 'wheel>=0.45,<0.46',
5
+ 'setuptools>=77,<78',
6
+ 'setuptools-git-versioning>=2,<3',
7
+ ]
8
+
9
+ build-backend = 'setuptools.build_meta'
10
+
11
+ [project]
12
+ name = 'edu-function-tools'
13
+ description = 'Компоненты для адаптации библиотеки function-tools'
14
+ license-files = ['LICENSE']
15
+ authors = [
16
+ {name = 'BARS Group', email = 'education_dev@bars.group'},
17
+ ]
18
+ readme = 'README.md'
19
+ requires-python = '>=3.9'
20
+ dependencies = [
21
+ 'transliterate<2',
22
+ 'Django>=3.1,<3.3',
23
+ 'celery>=4.4.7,<5.3',
24
+ 'asyncpg==0.23.0',
25
+ 'educommon>=3.11.0,<4',
26
+ 'function-tools>=0.9.0,<1',
27
+ 'm3-db-utils>=0.3.10,<1',
28
+ 'm3-django-compat>=1.10.2,<2',
29
+ 'uploader-client>=0.2.3,<1',
30
+ ]
31
+ classifiers=[
32
+ 'Development Status :: 5 - Production/Stable',
33
+ 'Programming Language :: Python :: 3',
34
+ 'Programming Language :: Python :: 3.9',
35
+ 'Programming Language :: Python :: 3.10',
36
+ 'Programming Language :: Python :: 3.11',
37
+ 'Programming Language :: Python :: 3.12',
38
+ 'Framework :: Django :: 2.2',
39
+ 'Framework :: Django :: 3.0',
40
+ 'Framework :: Django :: 3.1',
41
+ 'Framework :: Django :: 3.2',
42
+ 'Intended Audience :: Developers',
43
+ 'Environment :: Web Environment',
44
+ ]
45
+ dynamic = ['version']
46
+
47
+ [project.urls]
48
+ Homepage = 'https://stash.bars-open.ru/projects/EDUBASE/repos/edu-function-tools/browse'
49
+ Repository = 'https://stash.bars-open.ru/scm/edubase/edu-function-tools.git'
50
+
51
+ [project.optional-dependencies]
52
+ dev = [
53
+ 'isort==5.12.0',
54
+ 'ruff==0.6.9',
55
+ 'flake8>=4.0.1,<7',
56
+ 'pytest>=3.2.5,<8',
57
+ 'pytest-cov<5',
58
+ ]
59
+ docs = [
60
+ 'sphinx>=7,<7.5',
61
+ 'sphinx-autodoc-typehints>=2,<2.5',
62
+ 'myst-parser>=3,<3.2',
63
+ 'sphinx_design>=0.6,<0.7',
64
+ ]
65
+
66
+ [tool.setuptools.packages.find]
67
+ where = ['src']
68
+
69
+ [tool.setuptools.package-data]
70
+ edu_rdm_integration = ['*.py-tpl', '*.js']
71
+
72
+ [tool.setuptools.exclude-package-data]
73
+ edu_function_tools = ['tests', 'tests.*']
74
+
75
+ [tool.setuptools-git-versioning]
76
+ enabled = true
77
+
78
+ [tool.ruff]
79
+ line-length = 120
80
+ indent-width = 4
81
+
82
+ target-version = 'py312'
83
+
84
+ [tool.ruff.format]
85
+ quote-style = 'single'
86
+ indent-style = 'space'
87
+ docstring-code-format = true
88
+
89
+ [tool.flake8]
90
+ max-line-length = 120
91
+ ignore = [
92
+ # Missing docstring in public module
93
+ 'D100',
94
+ # Missing docstring in public package
95
+ 'D104',
96
+ # Missing docstring in public nested class
97
+ 'D106',
98
+ # Missing docstring in __init__
99
+ 'D107',
100
+ # One-line docstring should fit on one line with quotes
101
+ 'D200',
102
+ # Line break before binary operator
103
+ 'W503',
104
+ # use of assert detected (useless with pytest)
105
+ 'S101',
106
+ ]
107
+ per-file-ignores = [
108
+ # variable '...' in class scope should not be mixedCase
109
+ # В SOAP моделях могут использоваться имена с различным написанием
110
+ 'wsmodel.py:N815',
111
+ # function name '...' should be lowercase
112
+ # SOAP методы могут именоваться разными способами
113
+ 'wsapi.py:N802,N815',
114
+ ]
115
+ exclude = [
116
+ 'venv',
117
+ ]
118
+ max-complexity = 10
119
+
120
+ [tool.pylint]
121
+ score = 'no'
122
+ msg-template = '{path}:{line} {msg} ({symbol})'
123
+ disable = 'all'
124
+ enable = [
125
+ 'import-error',
126
+ 'no-name-in-module',
127
+ 'undefined-variable',
128
+ 'undefined-all-variable',
129
+ ]
130
+
131
+ extension-pkg-whitelist = [
132
+ 'lxml',
133
+ ]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ default_app_config = 'edu_function_tools.apps.EduFunctionToolsConfig'
@@ -0,0 +1,26 @@
1
+ from django.apps import (
2
+ AppConfig,
3
+ )
4
+
5
+
6
+ class EduFunctionToolsConfig(AppConfig):
7
+ """Конфигурация приложения для интеграции с function_tools.
8
+
9
+ Определяет основные параметры Django-приложения, которое
10
+ обеспечивает работу с библиотекой function_tools в контексте
11
+ продуктов Образования.
12
+
13
+ Attributes:
14
+ name (str): Полное имя приложения в системе Django
15
+ verbose_name (str): Человекочитаемое название приложения
16
+ label (str): Уникальная метка приложения для Django
17
+
18
+ Note:
19
+ Приложение автоматически регистрируется в Django при старте
20
+ и обеспечивает всю необходимую инфраструктуру для работы
21
+ с function_tools.
22
+ """
23
+
24
+ name = 'edu_function_tools.function_tools'
25
+ verbose_name = 'Приложение для работы с function_tools'
26
+ label = 'web_edu_function_tools'
@@ -0,0 +1,56 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ )
4
+
5
+ from function_tools.caches import (
6
+ CacheStorage,
7
+ EntityCache,
8
+ PatchedGlobalCacheStorage,
9
+ PeriodicalEntityCache,
10
+ )
11
+
12
+
13
+ class EduEntityCache(EntityCache, metaclass=ABCMeta):
14
+ """Базовый класс кэша для сущностей продуктов Образования.
15
+
16
+ Предоставляет механизм кэширования отдельных сущностей системы.
17
+ Используется для:
18
+ - Хранения часто запрашиваемых объектов
19
+ - Снижения нагрузки на базу данных
20
+ - Ускорения доступа к данным
21
+
22
+ Note:
23
+ Конкретные реализации должны определить специфику кэширования
24
+ для каждого типа сущности.
25
+ """
26
+
27
+
28
+ class EduPeriodicalEntityCache(PeriodicalEntityCache, metaclass=ABCMeta):
29
+ """Базовый класс периодического кеша продуктов Образования.
30
+
31
+ Кеш создается для определенной модели с указанием двух дат, на которые
32
+ должны быть собраны кеши актуальных объектов модели.
33
+ """
34
+
35
+
36
+ class EduRunnerCacheStorage(CacheStorage, metaclass=ABCMeta):
37
+ """Базовый класс кешей помощников ранеров функций продуктов Образования."""
38
+
39
+
40
+ class EduFunctionCacheStorage(CacheStorage, metaclass=ABCMeta):
41
+ """Базовый класс кешей функций продуктов Образования."""
42
+
43
+
44
+ class EduFunctionPatchedGlobalCacheStorage(PatchedGlobalCacheStorage, metaclass=ABCMeta):
45
+ """Базовый класс глобального хранилища кэша с поддержкой патчинга.
46
+
47
+ Расширяет стандартное хранилище кэша, добавляя возможность
48
+ модификации данных через механизм патчинга. Это позволяет:
49
+ - Обновлять кэшированные данные без полной перезагрузки
50
+ - Синхронизировать кэш между разными компонентами
51
+ - Эффективно управлять общими данными
52
+
53
+ Note:
54
+ Патчинг должен использоваться с осторожностью, чтобы избежать
55
+ несогласованности данных между разными частями системы.
56
+ """
@@ -0,0 +1 @@
1
+ # Модуль должен содержать константы
@@ -0,0 +1 @@
1
+ # Модуль предназначен для размещения перечислений
@@ -0,0 +1,24 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ )
4
+
5
+ from function_tools.errors import (
6
+ BaseError,
7
+ )
8
+
9
+
10
+ class EduError(BaseError, metaclass=ABCMeta):
11
+ """Базовый класс для ошибок в системе интеграции с продуктами Образования.
12
+
13
+ Предоставляет основную функциональность для обработки ошибок:
14
+ - Форматирование сообщений об ошибках
15
+ - Сохранение контекста возникновения ошибки
16
+ - Классификация типов ошибок
17
+ - Механизм обработки вложенных ошибок
18
+
19
+ Note:
20
+ При создании конкретных типов ошибок рекомендуется:
21
+ - Определять специфичные коды ошибок
22
+ - Предоставлять информативные сообщения
23
+ - Включать контекстную информацию в details
24
+ """
@@ -0,0 +1,99 @@
1
+ """Базовые классы функций для интеграции с продуктами Образования.
2
+
3
+ Этот модуль содержит базовые классы функций, которые используются для создания
4
+ конкретных реализаций функций обработки данных в системе. Модуль предоставляет
5
+ различные варианты базовых классов с разными стратегиями сохранения данных
6
+ и управления очередями объектов.
7
+ """
8
+
9
+ from abc import (
10
+ ABCMeta,
11
+ )
12
+
13
+ from function_tools.functions import (
14
+ BaseFunction,
15
+ LazySavingPredefinedQueueFunction,
16
+ LazySavingPredefinedQueueGlobalHelperFunction,
17
+ )
18
+
19
+ from edu_function_tools.helpers import (
20
+ EduFunctionHelper,
21
+ )
22
+ from edu_function_tools.results import (
23
+ EduFunctionResult,
24
+ )
25
+ from edu_function_tools.validators import (
26
+ EduFunctionValidator,
27
+ )
28
+
29
+
30
+ class EduFunction(BaseFunction, metaclass=ABCMeta):
31
+ """Базовый класс для создания функций продуктов Образования.
32
+
33
+ Предоставляет основной интерфейс для создания функций обработки данных.
34
+ Наследуется от BaseFunction и добавляет специфичную для продуктов
35
+ Образования функциональность.
36
+
37
+ Note:
38
+ Этот класс является абстрактным и должен быть расширен конкретными
39
+ реализациями функций.
40
+ """
41
+
42
+
43
+ class EduLazySavingPredefinedQueueFunction(LazySavingPredefinedQueueFunction, metaclass=ABCMeta):
44
+ """Базовый класс для создания функций с отложенным сохранением.
45
+
46
+ Реализует паттерн отложенного сохранения (lazy saving) с предустановленной
47
+ очередью объектов. Это позволяет:
48
+ - Накапливать объекты для сохранения в течение выполнения функции
49
+ - Сохранять все объекты атомарно после успешного выполнения всех операций
50
+ - Откатывать все изменения в случае ошибки
51
+ - Оптимизировать производительность за счет пакетного сохранения
52
+
53
+ Attributes:
54
+ helper (EduFunctionHelper): Помощник функции для вспомогательных операций
55
+ validator (EduFunctionValidator): Валидатор для проверки данных
56
+ result (EduFunctionResult): Объект для хранения результатов работы
57
+ """
58
+
59
+ def _prepare_helper_class(self) -> type[EduFunctionHelper]:
60
+ """Возвращает класс помощника функции.
61
+
62
+ Returns:
63
+ type[EduFunctionHelper]: Класс помощника для работы с данными
64
+ """
65
+ return EduFunctionHelper
66
+
67
+ def _prepare_validator_class(self) -> type[EduFunctionValidator]:
68
+ """Возвращает класс валидатора функции.
69
+
70
+ Returns:
71
+ type[EduFunctionValidator]: Класс для валидации входных данных
72
+ """
73
+ return EduFunctionValidator
74
+
75
+ def _prepare_result_class(self) -> type[EduFunctionResult]:
76
+ """Возвращает класс результата функции.
77
+
78
+ Returns:
79
+ type[EduFunctionResult]: Класс для хранения результатов выполнения
80
+ """
81
+ return EduFunctionResult
82
+
83
+
84
+ class EduLazySavingPredefinedQueueGlobalHelperFunction(
85
+ LazySavingPredefinedQueueGlobalHelperFunction,
86
+ metaclass=ABCMeta,
87
+ ):
88
+ """Базовый класс для создания функций с глобальным помощником.
89
+
90
+ Расширяет функциональность EduLazySavingPredefinedQueueFunction,
91
+ добавляя поддержку глобального помощника. Это позволяет:
92
+ - Использовать общие вспомогательные методы между разными функциями
93
+ - Кэшировать часто используемые данные на уровне всего приложения
94
+ - Оптимизировать использование ресурсов при массовой обработке данных
95
+
96
+ Note:
97
+ Глобальный помощник должен быть потокобезопасным, так как может
98
+ использоваться одновременно несколькими функциями.
99
+ """
@@ -0,0 +1,63 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ )
4
+
5
+ from function_tools.helpers import (
6
+ BaseFunctionHelper,
7
+ BaseRunnerHelper,
8
+ )
9
+
10
+ from edu_function_tools.caches import (
11
+ EduFunctionCacheStorage,
12
+ EduRunnerCacheStorage,
13
+ )
14
+
15
+
16
+ class EduRunnerHelper(BaseRunnerHelper, metaclass=ABCMeta):
17
+ """Базовый класс помощников для исполнителей функций.
18
+
19
+ Предоставляет вспомогательную функциональность для исполнителей,
20
+ включая:
21
+ - Кэширование данных исполнителя
22
+ - Общие утилиты для работы с функциями
23
+ - Доступ к разделяемым ресурсам
24
+
25
+ Attributes:
26
+ cache (EduRunnerCacheStorage): Хранилище кэша для исполнителя
27
+ """
28
+
29
+ def _prepare_cache_class(self) -> type[EduRunnerCacheStorage]:
30
+ """Возвращает класс хранилища кэша для исполнителя.
31
+
32
+ Returns:
33
+ type[EduRunnerCacheStorage]: Класс для кэширования данных
34
+ исполнителя
35
+ """
36
+ return EduRunnerCacheStorage
37
+
38
+
39
+ class EduFunctionHelper(BaseFunctionHelper, metaclass=ABCMeta):
40
+ """Базовый класс помощников для функций обработки данных.
41
+
42
+ Предоставляет вспомогательную функциональность для функций,
43
+ включая:
44
+ - Кэширование данных функции
45
+ - Общие утилиты для обработки данных
46
+ - Доступ к разделяемым ресурсам
47
+
48
+ Note:
49
+ Каждая конкретная функция может расширить этот класс,
50
+ добавив специфичные для неё вспомогательные методы.
51
+
52
+ Attributes:
53
+ cache (EduFunctionCacheStorage): Хранилище кэша для функции
54
+ """
55
+
56
+ def _prepare_cache_class(self) -> type[EduFunctionCacheStorage]:
57
+ """Возвращает класс хранилища кэша для функции.
58
+
59
+ Returns:
60
+ type[EduFunctionCacheStorage]: Класс для кэширования данных
61
+ функции
62
+ """
63
+ return EduFunctionCacheStorage
@@ -0,0 +1,61 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ )
4
+
5
+ from function_tools.managers import (
6
+ RunnerManager,
7
+ )
8
+
9
+ from edu_function_tools.runners import (
10
+ EduRunner,
11
+ )
12
+
13
+
14
+ class EduRunnerManager(RunnerManager, metaclass=ABCMeta):
15
+ """Базовый класс менеджеров исполнителей функций продуктов Образования.
16
+
17
+ Предоставляет базовую функциональность для управления исполнителями
18
+ (runners) функций в контексте образовательных продуктов. Наследует
19
+ возможности RunnerManager и адаптирует их для специфики образовательной
20
+ системы.
21
+
22
+ Основные возможности:
23
+ - Создание и инициализация исполнителей функций
24
+ - Управление жизненным циклом исполнителей
25
+ - Конфигурация исполнителей для образовательных задач
26
+ - Интеграция с системой образовательных продуктов
27
+
28
+ Note:
29
+ - Является абстрактным классом
30
+ - Требует реализации в конкретных менеджерах
31
+ - Использует EduRunner как базовый класс исполнителей
32
+ - Интегрируется с другими компонентами системы образования
33
+ - Обеспечивает единообразное управление исполнителями
34
+
35
+ See Also:
36
+ - RunnerManager: базовый класс для управления исполнителями
37
+ - EduRunner: базовый класс исполнителей
38
+ - EduRunnerCacheStorage: хранилище кеша для исполнителей
39
+ """
40
+
41
+ @classmethod
42
+ def _prepare_runner_class(cls) -> type[EduRunner]:
43
+ """Возвращает класс исполнителя для образовательных функций.
44
+
45
+ Определяет EduRunner как базовый класс для всех исполнителей
46
+ в системе образовательных продуктов. Этот метод вызывается при
47
+ создании новых исполнителей.
48
+
49
+ Returns:
50
+ type[EduRunner]: Класс исполнителя EduRunner
51
+
52
+ Note:
53
+ - Метод является частью инициализации исполнителей
54
+ - Переопределяет метод базового класса RunnerManager
55
+ - Гарантирует использование правильного типа исполнителя
56
+ - Может быть переопределен в наследниках для специфических исполнителей
57
+
58
+ See Also:
59
+ - EduRunner: базовый класс исполнителей
60
+ """
61
+ return EduRunner
@@ -0,0 +1,37 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ )
4
+
5
+ from function_tools.presenters import (
6
+ ResultPresenter,
7
+ )
8
+
9
+
10
+ class EduResultPresenter(ResultPresenter, metaclass=ABCMeta):
11
+ """Базовый класс презентеров результатов работы функций продуктов Образования.
12
+
13
+ Предоставляет базовую функциональность для форматирования и представления
14
+ результатов выполнения функций в контексте образовательных продуктов.
15
+ Наследует возможности ResultPresenter и адаптирует их для специфики
16
+ образовательной системы.
17
+
18
+ Основные возможности:
19
+ - Форматирование результатов выполнения функций
20
+ - Адаптация данных для различных потребителей
21
+ - Поддержка различных форматов вывода
22
+ - Интеграция с системой отчетности
23
+
24
+ Note:
25
+ - Является абстрактным классом
26
+ - Требует реализации в конкретных презентерах
27
+ - Поддерживает различные форматы представления данных
28
+ - Учитывает специфику образовательных данных
29
+ - Интегрируется с другими компонентами системы
30
+ - Обеспечивает единообразное представление результатов
31
+
32
+
33
+ See Also:
34
+ - ResultPresenter: базовый класс для презентеров результатов
35
+ - EduRunner: исполнитель функций образовательных продуктов
36
+ - EduRunnerManager: менеджер исполнителей функций
37
+ """
@@ -0,0 +1,35 @@
1
+ from sys import (
2
+ stdout,
3
+ )
4
+
5
+
6
+ def m3_edu_function_tools_after_migrate_receiver(sender, **kwargs):
7
+ """Обработчик сигнала, выполняющийся после применения миграций.
8
+
9
+ Автоматически регистрирует сущности в системе после успешного
10
+ выполнения миграций базы данных. Это обеспечивает:
11
+ - Синхронизацию моделей с системой регистрации
12
+ - Корректную инициализацию новых сущностей
13
+ - Обновление существующих регистраций
14
+
15
+ Args:
16
+ sender: Отправитель сигнала (обычно приложение Django)
17
+ **kwargs: Дополнительные параметры сигнала
18
+
19
+ Note:
20
+ В случае возникновения ошибок при регистрации, они будут
21
+ перехвачены и залогированы, но не будут прерывать процесс
22
+ миграции.
23
+ """
24
+ from function_tools.management.commands.register_entities import (
25
+ EntityRegistrar,
26
+ )
27
+
28
+ try:
29
+ registrar = EntityRegistrar(logger=stdout)
30
+ registrar.run()
31
+ except Exception as e:
32
+ stdout.write(
33
+ f'Register function_tools_entities exception. ----- START IGNORING EXCEPTION\n{e}\n----- '
34
+ f'FINISH IGNORING EXCEPTION\n'
35
+ )
@@ -0,0 +1,65 @@
1
+ from abc import (
2
+ ABCMeta,
3
+ )
4
+
5
+ from function_tools.results import (
6
+ BaseRunnableResult,
7
+ )
8
+
9
+
10
+ class EduRunnerResult(BaseRunnableResult, metaclass=ABCMeta):
11
+ """Базовый класс результатов работы исполнителей функций продуктов Образования.
12
+
13
+ Предоставляет базовую структуру для представления результатов выполнения
14
+ исполнителей (runners) в контексте образовательных продуктов. Наследует
15
+ функциональность BaseRunnableResult и адаптирует её для специфики
16
+ образовательной системы.
17
+
18
+ Основные возможности:
19
+ - Хранение результатов выполнения исполнителей
20
+ - Доступ к данным результата и метаданным
21
+ - Поддержка цепочки обработки результатов
22
+ - Интеграция с системой логирования
23
+
24
+ Note:
25
+ - Является абстрактным классом
26
+ - Требует реализации в конкретных классах результатов
27
+ - Поддерживает стандартные операции с результатами
28
+ - Интегрируется с системой обработки ошибок
29
+ - Обеспечивает единообразную обработку результатов
30
+
31
+ See Also:
32
+ - BaseRunnableResult: базовый класс для результатов исполнителей
33
+ - EduRunner: исполнитель функций образовательных продуктов
34
+ - EduFunctionResult: результаты функций образовательных продуктов
35
+ """
36
+
37
+
38
+ class EduFunctionResult(BaseRunnableResult, metaclass=ABCMeta):
39
+ """Базовый класс результатов функций продуктов Образования.
40
+
41
+ Предоставляет базовую структуру для представления результатов выполнения
42
+ функций в контексте образовательных продуктов. Наследует функциональность
43
+ BaseRunnableResult и адаптирует её для специфики бизнес-функций
44
+ образовательной системы.
45
+
46
+ Основные возможности:
47
+ - Хранение результатов выполнения функций
48
+ - Структурированное представление данных
49
+ - Поддержка метаданных и контекста выполнения
50
+ - Валидация результатов бизнес-функций
51
+ - Интеграция с системой отчетности
52
+
53
+ Note:
54
+ - Является абстрактным классом
55
+ - Требует реализации в конкретных классах результатов
56
+ - Поддерживает различные типы данных результатов
57
+ - Учитывает бизнес-правила образовательной системы
58
+ - Интегрируется с системой аудита
59
+ - Обеспечивает прослеживаемость выполнения функций
60
+
61
+ See Also:
62
+ - BaseRunnableResult: базовый класс для результатов
63
+ - EduRunnerResult: результаты исполнителей
64
+ - EduResultPresenter: презентер результатов
65
+ """
@@ -0,0 +1,140 @@
1
+ """Исполнители (runners) для функций интеграции с продуктами Образования.
2
+
3
+ Этот модуль содержит классы исполнителей, которые отвечают за запуск и управление
4
+ выполнением функций обработки данных. Исполнители обеспечивают:
5
+ - Подготовку и валидацию входных данных
6
+ - Управление жизненным циклом функций
7
+ - Логирование процесса выполнения
8
+ - Обработку результатов и ошибок
9
+ """
10
+
11
+ from abc import (
12
+ ABCMeta,
13
+ )
14
+
15
+ from educommon import (
16
+ logger,
17
+ )
18
+ from function_tools.runners import (
19
+ BaseRunner,
20
+ GlobalHelperRunner,
21
+ )
22
+
23
+ from edu_function_tools.helpers import (
24
+ EduRunnerHelper,
25
+ )
26
+ from edu_function_tools.results import (
27
+ EduRunnerResult,
28
+ )
29
+ from edu_function_tools.validators import (
30
+ EduRunnerValidator,
31
+ )
32
+ from edu_rdm_integration.core.consts import (
33
+ LOGS_DELIMITER,
34
+ )
35
+
36
+
37
+ class EduRunner(BaseRunner, metaclass=ABCMeta):
38
+ """Базовый класс исполнителей функций продуктов Образования.
39
+
40
+ Предоставляет основную функциональность для запуска и управления
41
+ выполнением функций обработки данных. Включает:
42
+ - Подготовку и валидацию входных параметров
43
+ - Логирование процесса выполнения
44
+ - Обработку результатов и ошибок
45
+ - Управление очередью выполнения
46
+
47
+ Attributes:
48
+ helper (EduRunnerHelper): Помощник для вспомогательных операций
49
+ validator (EduRunnerValidator): Валидатор входных данных
50
+ result (EduRunnerResult): Объект для хранения результатов
51
+ """
52
+
53
+ def _prepare_helper_class(self) -> type[EduRunnerHelper]:
54
+ """Возвращает класс помощника исполнителя.
55
+
56
+ Returns:
57
+ type[EduRunnerHelper]: Класс помощника для вспомогательных операций
58
+ при выполнении функций
59
+ """
60
+ return EduRunnerHelper
61
+
62
+ def _prepare_validator_class(self) -> type[EduRunnerValidator]:
63
+ """Возвращает класс валидатора исполнителя.
64
+
65
+ Returns:
66
+ type[EduRunnerValidator]: Класс для валидации входных параметров
67
+ и проверки состояния исполнителя
68
+ """
69
+ return EduRunnerValidator
70
+
71
+ def _prepare_result_class(self) -> type[EduRunnerResult]:
72
+ """Возвращает класс результата исполнителя.
73
+
74
+ Returns:
75
+ type[EduRunnerResult]: Класс для хранения результатов выполнения
76
+ функций и возможных ошибок
77
+ """
78
+ return EduRunnerResult
79
+
80
+ def _prepare_runnable_before_enqueue(self, runnable, *args, **kwargs):
81
+ """Подготовка запускаемого объекта перед добавлением в очередь.
82
+
83
+ Выполняет базовую подготовку объекта и добавляет логирование
84
+ для отслеживания процесса выполнения.
85
+
86
+ Args:
87
+ runnable: Объект для выполнения
88
+ *args: Дополнительные позиционные аргументы
89
+ **kwargs: Дополнительные именованные аргументы
90
+ """
91
+ super()._prepare_runnable_before_enqueue(runnable, *args, **kwargs)
92
+
93
+ logger.info(f'{LOGS_DELIMITER * 2}enqueue {runnable.__class__.__name__}..')
94
+
95
+
96
+ class EduGlobalHelperRunner(GlobalHelperRunner, metaclass=ABCMeta):
97
+ """Базовый класс исполнителей с глобальным помощником.
98
+
99
+ Расширяет функциональность EduRunner, добавляя поддержку
100
+ глобального помощника. Это позволяет:
101
+ - Использовать общие вспомогательные методы между разными исполнителями
102
+ - Кэшировать часто используемые данные
103
+ - Оптимизировать использование ресурсов
104
+
105
+ Note:
106
+ Глобальный помощник должен быть потокобезопасным, так как может
107
+ использоваться одновременно несколькими исполнителями.
108
+
109
+ Attributes:
110
+ helper (EduRunnerHelper): Глобальный помощник для всех исполнителей
111
+ validator (EduRunnerValidator): Валидатор входных данных
112
+ result (EduRunnerResult): Объект для хранения результатов
113
+ """
114
+
115
+ def _prepare_helper_class(self) -> type[EduRunnerHelper]:
116
+ """Возвращает класс глобального помощника.
117
+
118
+ Returns:
119
+ type[EduRunnerHelper]: Класс помощника, который будет использоваться
120
+ всеми исполнителями
121
+ """
122
+ return EduRunnerHelper
123
+
124
+ def _prepare_validator_class(self) -> type[EduRunnerValidator]:
125
+ """Возвращает класс валидатора исполнителя.
126
+
127
+ Returns:
128
+ type[EduRunnerValidator]: Класс для валидации входных параметров
129
+ и проверки состояния исполнителя
130
+ """
131
+ return EduRunnerValidator
132
+
133
+ def _prepare_result_class(self) -> type[EduRunnerResult]:
134
+ """Возвращает класс результата исполнителя.
135
+
136
+ Returns:
137
+ type[EduRunnerResult]: Класс для хранения результатов выполнения
138
+ функций и возможных ошибок
139
+ """
140
+ return EduRunnerResult
@@ -0,0 +1,166 @@
1
+ """Стратегии реализации функций для интеграции с продуктами Образования.
2
+
3
+ Этот модуль содержит классы стратегий, определяющие способы реализации функций
4
+ для работы с продуктами Образования. Стратегии определяют конфигурацию классов
5
+ для различных компонентов системы: менеджеров, исполнителей, валидаторов и т.д.
6
+ """
7
+
8
+ from abc import (
9
+ ABCMeta,
10
+ )
11
+ from typing import (
12
+ Optional,
13
+ )
14
+
15
+ from function_tools.strategies import (
16
+ FunctionImplementationStrategy,
17
+ )
18
+
19
+ from edu_function_tools.caches import (
20
+ EduFunctionCacheStorage,
21
+ EduRunnerCacheStorage,
22
+ )
23
+ from edu_function_tools.errors import (
24
+ EduError,
25
+ )
26
+ from edu_function_tools.functions import (
27
+ EduFunction,
28
+ EduLazySavingPredefinedQueueFunction,
29
+ )
30
+ from edu_function_tools.helpers import (
31
+ EduFunctionHelper,
32
+ EduRunnerHelper,
33
+ )
34
+ from edu_function_tools.managers import (
35
+ EduRunnerManager,
36
+ )
37
+ from edu_function_tools.presenters import (
38
+ EduResultPresenter,
39
+ )
40
+ from edu_function_tools.results import (
41
+ EduFunctionResult,
42
+ EduRunnerResult,
43
+ )
44
+ from edu_function_tools.runners import (
45
+ EduRunner,
46
+ )
47
+ from edu_function_tools.validators import (
48
+ EduFunctionValidator,
49
+ EduRunnerValidator,
50
+ )
51
+
52
+
53
+ class EduFunctionImplementationStrategy(FunctionImplementationStrategy, metaclass=ABCMeta):
54
+ """Базовая стратегия реализации функций для продуктов Образования.
55
+
56
+ Определяет основную конфигурацию классов для всех компонентов системы:
57
+ - Менеджеры для управления выполнением функций
58
+ - Исполнители (runners) для запуска функций
59
+ - Помощники (helpers) для вспомогательных операций
60
+ - Валидаторы для проверки данных
61
+ - Кэши для хранения промежуточных результатов
62
+ - Обработчики ошибок и результатов
63
+
64
+ Все методы в этом классе отвечают за установку конкретных реализаций
65
+ различных компонентов системы.
66
+ """
67
+
68
+ def _prepare_manager_class(self):
69
+ """Устанавливает класс менеджера для управления выполнением функций."""
70
+ self._manager_class = EduRunnerManager
71
+
72
+ def _prepare_runner_class(self):
73
+ """Устанавливает класс исполнителя для запуска функций."""
74
+ self._runner_class = EduRunner
75
+
76
+ def _prepare_function_class(self):
77
+ """Устанавливает базовый класс функции для обработки данных."""
78
+ self._function_class = EduFunction
79
+
80
+ def _prepare_runner_helper_class(self):
81
+ """Устанавливает класс помощника для исполнителя функций."""
82
+ self._runner_helper_class = EduRunnerHelper
83
+
84
+ def _prepare_function_helper_class(self):
85
+ """Устанавливает класс помощника для функций обработки данных."""
86
+ self._function_helper_class = EduFunctionHelper
87
+
88
+ def _prepare_runner_validator_class(self):
89
+ """Устанавливает класс валидатора для проверки параметров исполнителя."""
90
+ self._runner_validator_class = EduRunnerValidator
91
+
92
+ def _prepare_function_validator_class(self):
93
+ """Устанавливает класс валидатора для проверки данных функции."""
94
+ self._function_validator_class = EduFunctionValidator
95
+
96
+ def _prepare_runner_cache_storage_class(self):
97
+ """Устанавливает класс хранилища кэша для исполнителя."""
98
+ self._runner_cache_storage_class = EduRunnerCacheStorage
99
+
100
+ def _prepare_function_cache_storage_class(self):
101
+ """Устанавливает класс хранилища кэша для функции."""
102
+ self._function_cache_storage_class = EduFunctionCacheStorage
103
+
104
+ def _prepare_error_class(self):
105
+ """Устанавливает класс для обработки ошибок."""
106
+ self._error_class = EduError
107
+
108
+ def _prepare_runner_result_class(self):
109
+ """Устанавливает класс для хранения результатов работы исполнителя."""
110
+ self._runner_result_class = EduRunnerResult
111
+
112
+ def _prepare_function_result_class(self):
113
+ """Устанавливает класс для хранения результатов работы функции."""
114
+ self._function_result_class = EduFunctionResult
115
+
116
+ def _prepare_result_presenter_class(self):
117
+ """Устанавливает класс для представления результатов."""
118
+ self._result_presenter_class = EduResultPresenter
119
+
120
+
121
+ class EduSyncBaseRunnerLazySavingPredefinedQueueFunctionImplementationStrategy(
122
+ EduFunctionImplementationStrategy, metaclass=ABCMeta
123
+ ):
124
+ """Стратегия создания функции с отложенным сохранением и предустановленной очередью.
125
+
126
+ Расширяет базовую стратегию, добавляя специфическую логику для:
127
+ - Отложенного сохранения данных (lazy saving)
128
+ - Работы с предустановленной очередью объектов
129
+ - Синхронного выполнения операций
130
+
131
+ Сохранение данных производится только после успешного выполнения всех операций
132
+ функции, что обеспечивает целостность данных и атомарность операций.
133
+ """
134
+
135
+ def _prepare_key(self) -> str:
136
+ """Возвращает уникальный идентификатор стратегии.
137
+
138
+ Returns:
139
+ str: Ключ для идентификации стратегии в системе
140
+ """
141
+ return 'WEB_EDU_SYNC_LAZY_SAVING_FUNCTION'
142
+
143
+ def _prepare_title(self) -> str:
144
+ """Возвращает название стратегии.
145
+
146
+ Returns:
147
+ str: Человекочитаемое описание стратегии
148
+ """
149
+ return (
150
+ 'Стратегия создания функции с отложенным сохранением и предустановленной очередью объектов на сохранение '
151
+ 'продуктов Образования. Сохранение производится после удачной работы функции'
152
+ )
153
+
154
+ @classmethod
155
+ def _prepare_function_template_name(cls) -> Optional[str]:
156
+ """Формирование названия шаблона создания функции.
157
+
158
+ Returns:
159
+ Optional[str]: Имя шаблона для создания функции или None,
160
+ если шаблон не требуется
161
+ """
162
+ return 'function_sync_template'
163
+
164
+ def _prepare_function_class(self):
165
+ """Устанавливает класс функции с поддержкой отложенного сохранения."""
166
+ self._function_class = EduLazySavingPredefinedQueueFunction
@@ -0,0 +1 @@
1
+ # В этом модуле должны располагаться все сообщения пользователю, сообщения для формирования логов
@@ -0,0 +1 @@
1
+ # Реализуйте свои unit-тесты здесь
@@ -0,0 +1,58 @@
1
+ """Классы для валидации данных в системе интеграции.
2
+
3
+ Этот модуль содержит базовые классы валидаторов, которые обеспечивают
4
+ проверку корректности данных на разных уровнях системы:
5
+ - Валидация входных параметров функций
6
+ - Проверка состояния исполнителей
7
+ - Валидация результатов обработки
8
+ - Проверка бизнес-правил
9
+ """
10
+
11
+ from abc import (
12
+ ABCMeta,
13
+ )
14
+
15
+ from function_tools.validators import (
16
+ BaseValidator,
17
+ )
18
+
19
+
20
+ class EduRunnerValidator(BaseValidator, metaclass=ABCMeta):
21
+ """Базовый класс для валидации исполнителей функций.
22
+
23
+ Предоставляет механизмы проверки:
24
+ - Корректности конфигурации исполнителя
25
+ - Доступности необходимых ресурсов
26
+ - Состояния исполнителя перед запуском
27
+ - Валидности результатов выполнения
28
+
29
+ Note:
30
+ Конкретные реализации должны определить специфичные
31
+ правила валидации для каждого типа исполнителя.
32
+
33
+ Attributes:
34
+ errors (list): Список обнаруженных ошибок
35
+ warnings (list): Список предупреждений
36
+ """
37
+
38
+
39
+ class EduFunctionValidator(BaseValidator, metaclass=ABCMeta):
40
+ """Базовый класс для валидации функций обработки данных.
41
+
42
+ Предоставляет механизмы проверки:
43
+ - Входных параметров функции
44
+ - Формата данных
45
+ - Бизнес-правил
46
+ - Результатов обработки
47
+
48
+ Note:
49
+ При реализации валидаторов для конкретных функций следует:
50
+ - Определить специфичные правила проверки
51
+ - Добавить проверку бизнес-ограничений
52
+ - Реализовать валидацию форматов данных
53
+
54
+ Attributes:
55
+ errors (list): Список обнаруженных ошибок
56
+ warnings (list): Список предупреждений
57
+ context (dict): Контекст валидации
58
+ """
@@ -0,0 +1,51 @@
1
+ Metadata-Version: 2.4
2
+ Name: edu-function-tools
3
+ Version: 0.1.0
4
+ Summary: Компоненты для адаптации библиотеки function-tools
5
+ Author-email: BARS Group <education_dev@bars.group>
6
+ Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/edu-function-tools/browse
7
+ Project-URL: Repository, https://stash.bars-open.ru/scm/edubase/edu-function-tools.git
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Framework :: Django :: 2.2
15
+ Classifier: Framework :: Django :: 3.0
16
+ Classifier: Framework :: Django :: 3.1
17
+ Classifier: Framework :: Django :: 3.2
18
+ Classifier: Intended Audience :: Developers
19
+ Classifier: Environment :: Web Environment
20
+ Requires-Python: >=3.9
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Requires-Dist: transliterate<2
24
+ Requires-Dist: Django<3.3,>=3.1
25
+ Requires-Dist: celery<5.3,>=4.4.7
26
+ Requires-Dist: asyncpg==0.23.0
27
+ Requires-Dist: educommon<4,>=3.11.0
28
+ Requires-Dist: function-tools<1,>=0.9.0
29
+ Requires-Dist: m3-db-utils<1,>=0.3.10
30
+ Requires-Dist: m3-django-compat<2,>=1.10.2
31
+ Requires-Dist: uploader-client<1,>=0.2.3
32
+ Provides-Extra: dev
33
+ Requires-Dist: isort==5.12.0; extra == "dev"
34
+ Requires-Dist: ruff==0.6.9; extra == "dev"
35
+ Requires-Dist: flake8<7,>=4.0.1; extra == "dev"
36
+ Requires-Dist: pytest<8,>=3.2.5; extra == "dev"
37
+ Requires-Dist: pytest-cov<5; extra == "dev"
38
+ Provides-Extra: docs
39
+ Requires-Dist: sphinx<7.5,>=7; extra == "docs"
40
+ Requires-Dist: sphinx-autodoc-typehints<2.5,>=2; extra == "docs"
41
+ Requires-Dist: myst-parser<3.2,>=3; extra == "docs"
42
+ Requires-Dist: sphinx_design<0.7,>=0.6; extra == "docs"
43
+ Dynamic: license-file
44
+
45
+ # Компоненты адаптации пакета function-tools для продуктов "Образования".
46
+
47
+ Пакет содержит адаптированные компоненты function-tools для продуктов Образования.
48
+
49
+ ## Требования к окружению
50
+
51
+ Для работы требуется Python >=3.9. Версии всех применяемых пакетов уточнены в pyproject.toml.
@@ -0,0 +1,27 @@
1
+ CHANGELOG.md
2
+ LICENSE
3
+ MANIFEST.in
4
+ README.md
5
+ pyproject.toml
6
+ src/edu_function_tools/__init__.py
7
+ src/edu_function_tools/apps.py
8
+ src/edu_function_tools/caches.py
9
+ src/edu_function_tools/consts.py
10
+ src/edu_function_tools/enums.py
11
+ src/edu_function_tools/errors.py
12
+ src/edu_function_tools/functions.py
13
+ src/edu_function_tools/helpers.py
14
+ src/edu_function_tools/managers.py
15
+ src/edu_function_tools/presenters.py
16
+ src/edu_function_tools/receivers.py
17
+ src/edu_function_tools/results.py
18
+ src/edu_function_tools/runners.py
19
+ src/edu_function_tools/strategies.py
20
+ src/edu_function_tools/strings.py
21
+ src/edu_function_tools/tests.py
22
+ src/edu_function_tools/validators.py
23
+ src/edu_function_tools.egg-info/PKG-INFO
24
+ src/edu_function_tools.egg-info/SOURCES.txt
25
+ src/edu_function_tools.egg-info/dependency_links.txt
26
+ src/edu_function_tools.egg-info/requires.txt
27
+ src/edu_function_tools.egg-info/top_level.txt
@@ -0,0 +1,22 @@
1
+ transliterate<2
2
+ Django<3.3,>=3.1
3
+ celery<5.3,>=4.4.7
4
+ asyncpg==0.23.0
5
+ educommon<4,>=3.11.0
6
+ function-tools<1,>=0.9.0
7
+ m3-db-utils<1,>=0.3.10
8
+ m3-django-compat<2,>=1.10.2
9
+ uploader-client<1,>=0.2.3
10
+
11
+ [dev]
12
+ isort==5.12.0
13
+ ruff==0.6.9
14
+ flake8<7,>=4.0.1
15
+ pytest<8,>=3.2.5
16
+ pytest-cov<5
17
+
18
+ [docs]
19
+ sphinx<7.5,>=7
20
+ sphinx-autodoc-typehints<2.5,>=2
21
+ myst-parser<3.2,>=3
22
+ sphinx_design<0.7,>=0.6
@@ -0,0 +1 @@
1
+ edu_function_tools