arpakitlib 1.7.136__py3-none-any.whl → 1.7.206__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 (49) hide show
  1. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py +4 -4
  2. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py +4 -4
  3. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py +4 -4
  4. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py +4 -4
  5. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py +4 -4
  6. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py +4 -4
  7. arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py +4 -4
  8. arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py +2 -0
  9. arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py +8 -2
  10. arpakitlib/_arpakit_project_template/src/admin1/model_view.py +0 -18
  11. arpakitlib/_arpakit_project_template/src/api/{start_api_with_reload.py → _start_api_with_reload.py} +2 -2
  12. arpakitlib/_arpakit_project_template/src/api/{start_api_without_reload.py → _start_api_without_reload.py} +2 -2
  13. arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py +1 -0
  14. arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +4 -0
  15. arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +1 -0
  16. arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +2 -0
  17. arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py +2 -0
  18. arpakitlib/_arpakit_project_template/src/core/{check_logging.py → _check_logging.py} +2 -2
  19. arpakitlib/_arpakit_project_template/src/core/{check_settings.py → _check_settings.py} +2 -2
  20. arpakitlib/_arpakit_project_template/src/core/{generate_settings_env_example.py → _generate_settings_env_example.py} +2 -2
  21. arpakitlib/_arpakit_project_template/src/core/const.py +5 -11
  22. arpakitlib/_arpakit_project_template/src/core/util.py +3 -0
  23. arpakitlib/_arpakit_project_template/src/db/{check_conn_sqlalchemy_db.py → _check_conn_sqlalchemy_db.py} +2 -2
  24. arpakitlib/_arpakit_project_template/src/db/{init_sqlalchemy_db.py → _init_sqlalchemy_db.py} +2 -2
  25. arpakitlib/_arpakit_project_template/src/db/{reinit_sqlalchemy_db.py → _reinit_sqlalchemy_db.py} +3 -3
  26. arpakitlib/_arpakit_project_template/src/db/const.py +1 -0
  27. arpakitlib/_arpakit_project_template/src/db/util.py +2 -0
  28. arpakitlib/_arpakit_project_template/src/operation_execution/{start_operation_executor_worker.py → _start_operation_executor_worker.py} +2 -2
  29. arpakitlib/_arpakit_project_template/src/operation_execution/{start_scheduled_operation_creator_worker.py → _start_scheduled_operation_creator_worker.py} +2 -2
  30. arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py +12 -8
  31. arpakitlib/_arpakit_project_template/src/operation_execution/util.py +1 -0
  32. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py +2 -0
  33. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py +2 -0
  34. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py +2 -0
  35. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py +2 -0
  36. arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py +2 -0
  37. arpakitlib/ar_class_util.py +17 -0
  38. arpakitlib/ar_enumeration_util.py +19 -1
  39. arpakitlib/ar_operation_execution_util.py +1 -0
  40. arpakitlib/ar_settings_util.py +2 -2
  41. arpakitlib/ar_sqladmin_util.py +101 -0
  42. {arpakitlib-1.7.136.dist-info → arpakitlib-1.7.206.dist-info}/METADATA +1 -1
  43. {arpakitlib-1.7.136.dist-info → arpakitlib-1.7.206.dist-info}/RECORD +47 -47
  44. arpakitlib/_arpakit_project_template/NOTICE +0 -16
  45. arpakitlib-1.7.136.dist-info/NOTICE +0 -16
  46. /arpakitlib/{api_key_util.py → ar_api_key_util.py} +0 -0
  47. {arpakitlib-1.7.136.dist-info → arpakitlib-1.7.206.dist-info}/LICENSE +0 -0
  48. {arpakitlib-1.7.136.dist-info → arpakitlib-1.7.206.dist-info}/WHEEL +0 -0
  49. {arpakitlib-1.7.136.dist-info → arpakitlib-1.7.206.dist-info}/entry_points.txt +0 -0
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -1,14 +1,14 @@
1
1
  import asyncio
2
2
 
3
3
 
4
- def __sandbox():
4
+ def _sandbox():
5
5
  pass
6
6
 
7
7
 
8
- async def __async_sandbox():
8
+ async def _async_sandbox():
9
9
  pass
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __sandbox()
14
- asyncio.run(__async_sandbox())
13
+ _sandbox()
14
+ asyncio.run(_async_sandbox())
@@ -4,3 +4,5 @@ from arpakitlib.ar_additional_model_util import BaseAM
4
4
  class ExampleAM(BaseAM):
5
5
  name: str = "Name"
6
6
  surname: str = "Surname"
7
+
8
+ # ...
@@ -1,8 +1,11 @@
1
+ import importlib
2
+ from contextlib import suppress
3
+
1
4
  from fastapi import FastAPI
2
5
  from sqladmin import Admin
3
6
 
7
+ from arpakitlib.ar_sqladmin_util import SimpleModelView
4
8
  from src.admin1.admin_auth import AdminAuth
5
- from src.admin1.model_view import MODEL_VIEWS
6
9
  from src.api.transmitted_api_data import TransmittedAPIData
7
10
  from src.core.settings import get_cached_settings
8
11
 
@@ -20,7 +23,10 @@ def add_admin1_in_app(*, app: FastAPI) -> FastAPI:
20
23
  title=get_cached_settings().project_name
21
24
  )
22
25
 
23
- for model_view in MODEL_VIEWS:
26
+ with suppress(Exception):
27
+ importlib.import_module("src.admin1.model_view")
28
+
29
+ for model_view in SimpleModelView.all_subclasses:
24
30
  admin.add_model_view(model_view)
25
31
 
26
32
  return app
@@ -1,19 +1 @@
1
- from sqladmin import ModelView
2
-
3
-
4
- class BaseModelView(ModelView):
5
- can_create = True
6
- can_edit = True
7
- can_delete = True
8
- can_view_details = True
9
- can_export = True
10
- page_size = 50
11
- page_size_options = [25, 50, 100, 200]
12
- save_as = True
13
- save_as_continue = True
14
- export_types = ["xlsx", "csv", "json"]
15
-
16
-
17
- MODEL_VIEWS = []
18
-
19
1
  # ...
@@ -3,7 +3,7 @@ import uvicorn
3
3
  from src.core.settings import get_cached_settings
4
4
 
5
5
 
6
- def __start_api_for_dev_with_reload():
6
+ def _start_api_for_dev_with_reload():
7
7
  uvicorn.run(
8
8
  "src.api.asgi:app",
9
9
  port=get_cached_settings().api_port,
@@ -14,4 +14,4 @@ def __start_api_for_dev_with_reload():
14
14
 
15
15
 
16
16
  if __name__ == '__main__':
17
- __start_api_for_dev_with_reload()
17
+ _start_api_for_dev_with_reload()
@@ -3,7 +3,7 @@ import uvicorn
3
3
  from src.core.settings import get_cached_settings
4
4
 
5
5
 
6
- def __start_api_for_dev_without_reload():
6
+ def _start_api_for_dev_without_reload():
7
7
  uvicorn.run(
8
8
  "src.api.asgi:app",
9
9
  port=get_cached_settings().api_port,
@@ -14,4 +14,4 @@ def __start_api_for_dev_without_reload():
14
14
 
15
15
 
16
16
  if __name__ == '__main__':
17
- __start_api_for_dev_without_reload()
17
+ _start_api_for_dev_without_reload()
@@ -12,6 +12,7 @@ api_router = APIRouter()
12
12
 
13
13
  @api_router.get(
14
14
  "",
15
+ name="Get API Error info",
15
16
  response_model=APIErrorInfoSO | ErrorSO,
16
17
  status_code=status.HTTP_200_OK
17
18
  )
@@ -4,8 +4,12 @@ from src.api.router.v1 import get_api_error_info
4
4
 
5
5
  main_v1_api_router = APIRouter()
6
6
 
7
+ # API Error Info
8
+
7
9
  main_v1_api_router.include_router(
8
10
  router=get_api_error_info.api_router,
9
11
  prefix="/get_api_error_info",
10
12
  tags=["API Error Info"]
11
13
  )
14
+
15
+ # ...
@@ -4,3 +4,5 @@ from arpakitlib.ar_fastapi_util import BaseSO
4
4
  class APIErrorInfoSO(BaseSO):
5
5
  api_error_codes: list[str] = []
6
6
  api_error_specification_codes: list[str] = []
7
+
8
+ # ...
@@ -11,3 +11,5 @@ class TransmittedAPIData(BaseTransmittedAPIData):
11
11
  media_file_storage_in_dir: FileStorageInDir | None = None
12
12
  cache_file_storage_in_dir: FileStorageInDir | None = None
13
13
  dump_file_storage_in_dir: FileStorageInDir | None = None
14
+
15
+ # ...
@@ -5,10 +5,10 @@ from src.core.util import setup_logging
5
5
  _logger = logging.getLogger(__name__)
6
6
 
7
7
 
8
- def __check_logging():
8
+ def _check_logging():
9
9
  setup_logging()
10
10
  _logger.info("logging is good")
11
11
 
12
12
 
13
13
  if __name__ == '__main__':
14
- __check_logging()
14
+ _check_logging()
@@ -2,9 +2,9 @@ from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
2
2
  from src.core.settings import get_cached_settings
3
3
 
4
4
 
5
- def __check_settings():
5
+ def _check_settings():
6
6
  print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
7
7
 
8
8
 
9
9
  if __name__ == '__main__':
10
- __check_settings()
10
+ _check_settings()
@@ -5,10 +5,10 @@ from src.core.const import ProjectPaths
5
5
  from src.core.settings import Settings, get_cached_settings
6
6
 
7
7
 
8
- def __generate_settings_env_example():
8
+ def _generate_settings_env_example():
9
9
  print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
10
10
  Settings.save_env_example_to_file(filepath=os.path.join(ProjectPaths.base_dirpath, "example.env"))
11
11
 
12
12
 
13
13
  if __name__ == '__main__':
14
- __generate_settings_env_example()
14
+ _generate_settings_env_example()
@@ -3,6 +3,7 @@ import os
3
3
  import pathlib
4
4
 
5
5
  from arpakitlib.ar_enumeration_util import Enumeration
6
+ from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
6
7
 
7
8
 
8
9
  class ProjectPaths(Enumeration):
@@ -24,18 +25,11 @@ class ProjectPaths(Enumeration):
24
25
  static_dirpath: str = os.path.join(resource_dirpath, static_dirname)
25
26
 
26
27
 
28
+ # ...
29
+
30
+
27
31
  def __example():
28
- print(f"base_dirpath: {ProjectPaths.base_dirpath}")
29
- print(f"env_filename: {ProjectPaths.env_filename}")
30
- print(f"env_filepath: {ProjectPaths.env_filepath}")
31
- print(f"src_dirname: {ProjectPaths.src_dirname}")
32
- print(f"src_dirpath: {ProjectPaths.src_dirpath}")
33
- print(f"manage_dirname: {ProjectPaths.manage_dirname}")
34
- print(f"manage_dirpath: {ProjectPaths.manage_dirpath}")
35
- print(f"resource_dirname: {ProjectPaths.resource_dirname}")
36
- print(f"resource_dirpath: {ProjectPaths.resource_dirpath}")
37
- print(f"static_dirname: {ProjectPaths.static_dirname}")
38
- print(f"static_dirpath: {ProjectPaths.static_dirpath}")
32
+ print(safely_transfer_obj_to_json_str(ProjectPaths.key_to_value()))
39
33
 
40
34
 
41
35
  async def __async_example():
@@ -45,6 +45,9 @@ def now_local_dt() -> datetime:
45
45
  return now_dt(tz=get_cached_settings().local_timezone_as_pytz)
46
46
 
47
47
 
48
+ # ...
49
+
50
+
48
51
  def __example():
49
52
  pass
50
53
 
@@ -2,10 +2,10 @@ from src.core.util import setup_logging
2
2
  from src.db.util import get_cached_sqlalchemy_db
3
3
 
4
4
 
5
- def __check_conn_sqlalchemy_db():
5
+ def _check_conn_sqlalchemy_db():
6
6
  setup_logging()
7
7
  get_cached_sqlalchemy_db().check_conn()
8
8
 
9
9
 
10
10
  if __name__ == '__main__':
11
- __check_conn_sqlalchemy_db()
11
+ _check_conn_sqlalchemy_db()
@@ -2,10 +2,10 @@ from src.core.util import setup_logging
2
2
  from src.db.util import get_cached_sqlalchemy_db
3
3
 
4
4
 
5
- def __init_sqlalchemy_db():
5
+ def _init_sqlalchemy_db():
6
6
  setup_logging()
7
7
  get_cached_sqlalchemy_db().init()
8
8
 
9
9
 
10
10
  if __name__ == '__main__':
11
- __init_sqlalchemy_db()
11
+ _init_sqlalchemy_db()
@@ -3,11 +3,11 @@ from src.core.util import setup_logging
3
3
  from src.db.util import get_cached_sqlalchemy_db
4
4
 
5
5
 
6
- def __reinit_sqlalchemy_db():
6
+ def _reinit_sqlalchemy_db():
7
7
  setup_logging()
8
- get_cached_settings().raise_if_mode_type_not_prod()
8
+ get_cached_settings().raise_if_mode_type_prod()
9
9
  get_cached_sqlalchemy_db().reinit()
10
10
 
11
11
 
12
12
  if __name__ == '__main__':
13
- __reinit_sqlalchemy_db()
13
+ _reinit_sqlalchemy_db()
@@ -0,0 +1 @@
1
+ # ...
@@ -19,3 +19,5 @@ def create_sqlalchemy_db() -> SQLAlchemyDB:
19
19
  @lru_cache()
20
20
  def get_cached_sqlalchemy_db() -> SQLAlchemyDB:
21
21
  return create_sqlalchemy_db()
22
+
23
+ # ...
@@ -4,7 +4,7 @@ from src.db.util import get_cached_sqlalchemy_db
4
4
  from src.operation_execution.operation_executor import OperationExecutor
5
5
 
6
6
 
7
- def start_operation_executor_worker():
7
+ def _start_operation_executor_worker():
8
8
  setup_logging()
9
9
  worker = OperationExecutorWorker(
10
10
  sqlalchemy_db=get_cached_sqlalchemy_db(),
@@ -14,4 +14,4 @@ def start_operation_executor_worker():
14
14
 
15
15
 
16
16
  if __name__ == '__main__':
17
- start_operation_executor_worker()
17
+ _start_operation_executor_worker()
@@ -4,7 +4,7 @@ from src.db.util import get_cached_sqlalchemy_db
4
4
  from src.operation_execution.scheduled_operations import SCHEDULED_OPERATIONS
5
5
 
6
6
 
7
- def start_scheduled_operation_creator_worker():
7
+ def _start_scheduled_operation_creator_worker():
8
8
  setup_logging()
9
9
  worker = ScheduledOperationCreatorWorker(
10
10
  sqlalchemy_db=get_cached_sqlalchemy_db(),
@@ -14,4 +14,4 @@ def start_scheduled_operation_creator_worker():
14
14
 
15
15
 
16
16
  if __name__ == '__main__':
17
- start_scheduled_operation_creator_worker()
17
+ _start_scheduled_operation_creator_worker()
@@ -3,23 +3,27 @@ from datetime import timedelta, time
3
3
  from arpakitlib.ar_operation_execution_util import ScheduledOperation, every_timedelta_is_time_func, \
4
4
  between_different_times_is_time_func
5
5
  from arpakitlib.ar_sqlalchemy_model_util import BaseOperationTypes
6
+ from src.core.settings import get_cached_settings
6
7
 
7
8
  SCHEDULED_OPERATIONS = []
8
9
 
9
- healthcheck_1_scheduled_operation = ScheduledOperation(
10
- type=BaseOperationTypes.healthcheck_,
11
- input_data={"healthcheck_1": "healthcheck_1"},
12
- is_time_func=every_timedelta_is_time_func(td=timedelta(seconds=15))
13
- )
14
- SCHEDULED_OPERATIONS.append(healthcheck_1_scheduled_operation)
10
+ if get_cached_settings().is_mode_type_not_prod:
11
+ healthcheck_1_scheduled_operation = ScheduledOperation(
12
+ type=BaseOperationTypes.healthcheck_,
13
+ input_data={"healthcheck_1": "healthcheck_1"},
14
+ is_time_func=every_timedelta_is_time_func(td=timedelta(seconds=15))
15
+ )
16
+ SCHEDULED_OPERATIONS.append(healthcheck_1_scheduled_operation)
15
17
 
16
18
  healthcheck_2_scheduled_operation = ScheduledOperation(
17
19
  type=BaseOperationTypes.healthcheck_,
18
20
  input_data={"healthcheck_2": "healthcheck_2"},
19
21
  is_time_func=between_different_times_is_time_func(
20
- from_time=time(hour=12, minute=0),
21
- to_time=time(hour=12, minute=15)
22
+ from_time=time(hour=0, minute=0),
23
+ to_time=time(hour=0, minute=30)
22
24
  ),
23
25
  timeout_after_creation=timedelta(seconds=60)
24
26
  )
25
27
  SCHEDULED_OPERATIONS.append(healthcheck_2_scheduled_operation)
28
+
29
+ # ...
@@ -1,6 +1,8 @@
1
1
  def make_test_data_1():
2
+ # ...
2
3
  pass
3
4
 
4
5
 
5
6
  async def async_make_test_data_1():
7
+ # ...
6
8
  pass
@@ -1,6 +1,8 @@
1
1
  def make_test_data_2():
2
+ # ...
2
3
  pass
3
4
 
4
5
 
5
6
  async def async_make_test_data_2():
7
+ # ...
6
8
  pass
@@ -1,6 +1,8 @@
1
1
  def make_test_data_3():
2
+ # ...
2
3
  pass
3
4
 
4
5
 
5
6
  async def async_make_test_data_3():
7
+ # ...
6
8
  pass
@@ -1,6 +1,8 @@
1
1
  def make_test_data_4():
2
+ # ...
2
3
  pass
3
4
 
4
5
 
5
6
  async def async_make_test_data_4():
7
+ # ...
6
8
  pass
@@ -1,6 +1,8 @@
1
1
  def make_test_data_5():
2
+ # ...
2
3
  pass
3
4
 
4
5
 
5
6
  async def async_make_test_data_5():
7
+ # ...
6
8
  pass
@@ -0,0 +1,17 @@
1
+ # arpakit
2
+
3
+
4
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
5
+
6
+
7
+ class CollectingSubclassesMeta(type):
8
+ """
9
+ Метакласс для автоматического сбора всех наследников в поле ALL_SUBCLASSES.
10
+ """
11
+
12
+ def __init__(cls, name, bases, dct, **kwargs):
13
+ super().__init__(name, bases, dct, **kwargs)
14
+ if not hasattr(cls, "all_subclasses"):
15
+ cls.all_subclasses = []
16
+ elif bases:
17
+ cls.all_subclasses.append(cls)
@@ -1,6 +1,6 @@
1
1
  # arpakit
2
2
 
3
- from typing import Union, Iterator, Iterable
3
+ from typing import Union, Iterator, Iterable, Any
4
4
 
5
5
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
6
6
 
@@ -80,6 +80,24 @@ class Enumeration:
80
80
  def print(cls):
81
81
  print(cls.str_for_print())
82
82
 
83
+ @classmethod
84
+ def key_to_value(cls) -> dict[str, Any]:
85
+ big_dict = {}
86
+ for class_ in reversed(cls.mro()):
87
+ big_dict.update(class_.__dict__)
88
+ big_dict.update(cls.__dict__)
89
+
90
+ result = {}
91
+ for key, value in big_dict.items():
92
+ if (
93
+ isinstance(key, str)
94
+ and not (key.startswith("__") or key.endswith("__"))
95
+ and isinstance(value, (str, int))
96
+ ):
97
+ result[key] = value
98
+
99
+ return result
100
+
83
101
 
84
102
  def __example():
85
103
  pass
@@ -411,6 +411,7 @@ class ScheduledOperationCreatorWorker(BaseWorker):
411
411
  session.add(operation_dbm)
412
412
  session.commit()
413
413
  session.refresh(operation_dbm)
414
+ self._logger.info(f"scheduled operation (id={operation_dbm.id}) was created")
414
415
 
415
416
  if scheduled_operation.timeout_after_creation is not None:
416
417
  if timeout is not None:
@@ -39,7 +39,7 @@ class SimpleSettings(BaseSettings):
39
39
 
40
40
  @property
41
41
  def is_mode_type_not_prod(self) -> bool:
42
- return self.mode_type == self.ModeTypes.not_prod
42
+ return self.mode_type == ModeTypes.not_prod
43
43
 
44
44
  def raise_if_mode_type_not_prod(self):
45
45
  if self.is_mode_type_not_prod:
@@ -47,7 +47,7 @@ class SimpleSettings(BaseSettings):
47
47
 
48
48
  @property
49
49
  def is_mode_type_prod(self) -> bool:
50
- return self.mode_type == self.ModeTypes.prod
50
+ return self.mode_type == ModeTypes.prod
51
51
 
52
52
  def raise_if_mode_type_prod(self):
53
53
  if self.is_mode_type_prod:
@@ -0,0 +1,101 @@
1
+ # arpakit
2
+ from sqladmin import ModelView
3
+ from sqladmin.models import ModelViewMeta
4
+
5
+ from arpakitlib.ar_class_util import CollectingSubclassesMeta
6
+ from arpakitlib.ar_sqlalchemy_model_util import OperationDBM, StoryLogDBM
7
+
8
+ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
9
+
10
+
11
+ def create_combined_meta(*metas):
12
+ """
13
+ Создает объединённый метакласс для устранения конфликтов.
14
+ """
15
+
16
+ class CombinedMeta(*metas):
17
+ pass
18
+
19
+ return CombinedMeta
20
+
21
+
22
+ class SimpleModelView(ModelView, metaclass=create_combined_meta(CollectingSubclassesMeta, ModelViewMeta)):
23
+ can_create = True
24
+ can_edit = True
25
+ can_delete = True
26
+ can_view_details = True
27
+ can_export = True
28
+ page_size = 50
29
+ page_size_options = [25, 50, 100, 200]
30
+ save_as = True
31
+ save_as_continue = True
32
+ export_types = ["xlsx", "csv", "json"]
33
+
34
+
35
+ class OperationMV(SimpleModelView, model=OperationDBM):
36
+ name = "Operation"
37
+ name_plural = "Operations"
38
+ column_list = [
39
+ OperationDBM.id,
40
+ OperationDBM.long_id,
41
+ OperationDBM.creation_dt,
42
+ OperationDBM.status,
43
+ OperationDBM.type,
44
+ OperationDBM.execution_start_dt,
45
+ OperationDBM.execution_finish_dt,
46
+ OperationDBM.input_data,
47
+ OperationDBM.output_data,
48
+ OperationDBM.error_data
49
+ ]
50
+ form_columns = [
51
+ OperationDBM.status,
52
+ OperationDBM.type,
53
+ OperationDBM.execution_start_dt,
54
+ OperationDBM.execution_finish_dt,
55
+ OperationDBM.input_data,
56
+ OperationDBM.output_data,
57
+ OperationDBM.error_data
58
+ ]
59
+ column_default_sort = [(OperationDBM.creation_dt, True)]
60
+ column_searchable_list = [
61
+ OperationDBM.id,
62
+ OperationDBM.long_id,
63
+ OperationDBM.status,
64
+ OperationDBM.type,
65
+ ]
66
+
67
+
68
+ class StoryLogMV(SimpleModelView, model=StoryLogDBM):
69
+ name = "Operation"
70
+ name_plural = "Operations"
71
+ column_list = [
72
+ StoryLogDBM.id,
73
+ StoryLogDBM.long_id,
74
+ StoryLogDBM.creation_dt,
75
+ StoryLogDBM.level,
76
+ StoryLogDBM.title,
77
+ StoryLogDBM.data
78
+ ]
79
+ form_columns = [
80
+ StoryLogDBM.level,
81
+ StoryLogDBM.title,
82
+ StoryLogDBM.data
83
+ ]
84
+ column_default_sort = [(StoryLogDBM.creation_dt, True)]
85
+ column_searchable_list = [
86
+ StoryLogDBM.id,
87
+ StoryLogDBM.long_id,
88
+ StoryLogDBM.level,
89
+ StoryLogDBM.title,
90
+ StoryLogDBM.data
91
+ ]
92
+
93
+
94
+ def __example():
95
+ print(len(SimpleModelView.all_subclasses))
96
+ for model_view in SimpleModelView.all_subclasses:
97
+ print(model_view)
98
+
99
+
100
+ if __name__ == '__main__':
101
+ __example()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.7.136
3
+ Version: 1.7.206
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -3,7 +3,6 @@ arpakitlib/_arpakit_project_template/.gitignore,sha256=Q8n7q3-hKsnFVN5NcACPs71Z9
3
3
  arpakitlib/_arpakit_project_template/.python-version,sha256=XMd40XBnlTFfBSmMldd-7VdqXNyFCy6wtxhw5e1mnhc,7
4
4
  arpakitlib/_arpakit_project_template/ARPAKITLIB,sha256=3-iAkMXtesLzJXHw_IIv2k2M0oH8cTjHzW22Vvbi0IE,4
5
5
  arpakitlib/_arpakit_project_template/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
6
- arpakitlib/_arpakit_project_template/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
7
6
  arpakitlib/_arpakit_project_template/README.md,sha256=AwqCtmMeywF2dJhZbKwCBA_wPnLF_VmoLGfPbFjH3bM,62
8
7
  arpakitlib/_arpakit_project_template/example.env,sha256=dJC2sjtywxm6ChP5jtIicGaaPvhI0NMNIhMmScg69b8,558
9
8
  arpakitlib/_arpakit_project_template/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,13 +43,13 @@ arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh,sha256=q2b
44
43
  arpakitlib/_arpakit_project_template/manage/poetry_update.sh,sha256=ZtoXIC4Qq7PMTDxQMwUxvkYC6lTc5LC23ILTywWbyoU,164
45
44
  arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh,sha256=hh7vj-yKgKqLfaGb8cjsJ_NTa7fBtE4s3yxzte4D8bw,163
46
45
  arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
48
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
49
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
50
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
51
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
52
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
53
- arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
46
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
47
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
48
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_3.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
49
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_4.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
50
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_5.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
51
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
52
+ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py,sha256=dr5K0bdhF-1PlzJuG5wCYqyJ9KeBoNCz6363ZVnxcsk,159
54
53
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
54
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
55
  arpakitlib/_arpakit_project_template/resource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -59,12 +58,14 @@ arpakitlib/_arpakit_project_template/resource/static/healthcheck,sha256=IIO7Wvjw
59
58
  arpakitlib/_arpakit_project_template/resource/static/helloworld,sha256=eH7Hbcr9IMGQjrCTahL5Ht0QWrXNfswrGuIDJkg0Xf8,11
60
59
  arpakitlib/_arpakit_project_template/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
60
  arpakitlib/_arpakit_project_template/src/additional_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
- arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sha256=4KCOvto9Hj5eMYpvfaJChghhR9bkCvKluGGPWrTezoY,134
61
+ arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sha256=rCjK4hbog2kF-37SGHet0mrSjGXrAi1LxCgLT1IzzW8,141
63
62
  arpakitlib/_arpakit_project_template/src/admin1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py,sha256=P1G7ppaec1tFkbKSFlf1CmvIfz9FpT2OPqQtXUVWmlA,755
63
+ arpakitlib/_arpakit_project_template/src/admin1/add_admin_in_app.py,sha256=7zF-9Xa15bAbzqRQD18hAbzUQTflASoTjVProcdGWTM,922
65
64
  arpakitlib/_arpakit_project_template/src/admin1/admin_auth.py,sha256=qEC7gMy9E6mwuQRxnSsmVthXahVai4zjiC6Z8O3MZn8,804
66
- arpakitlib/_arpakit_project_template/src/admin1/model_view.py,sha256=kSscddS6RDZS1VpX0t1n0sjoCjT5O7U8d5YRmT3dauQ,357
65
+ arpakitlib/_arpakit_project_template/src/admin1/model_view.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
67
66
  arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
+ arpakitlib/_arpakit_project_template/src/api/_start_api_with_reload.py,sha256=3IjlhcleK2JoG-rYDHxVKpJA8uq4dTW_-_lbgPXsufI,333
68
+ arpakitlib/_arpakit_project_template/src/api/_start_api_without_reload.py,sha256=SRU3vahgxvVAzb8nIRDspXusK8_SS5QGblJE824Y12s,340
68
69
  arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
69
70
  arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
70
71
  arpakitlib/_arpakit_project_template/src/api/const.py,sha256=7d4qD5hedqr7QxVzbfsA7E1bNZn2Pm2U8joXGtpANu0,287
@@ -73,52 +74,50 @@ arpakitlib/_arpakit_project_template/src/api/event.py,sha256=Jd1eWUpPzGSg-wBIsCh
73
74
  arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
75
  arpakitlib/_arpakit_project_template/src/api/router/main_router.py,sha256=Yv699WCJDcdiJMXFg1kPTvolqj-NAGoXfqe-vzbMzIU,228
75
76
  arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
- arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py,sha256=lz2yH5IjzKvkdAqOErnT4E4DCTwmE1Ru0h_7dc_ZNn4,844
77
- arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=fvT-t2c2o6XVVJWiUdNnIWEOE8Q8F4v1Ik1Nae5YqvU,256
77
+ arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py,sha256=FetRdIytQFOFlpo310jYEtrQSQm-SJ_6FOXB1Gbeq04,875
78
+ arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=QG-uAwxvFAWoY1g6U0wOBz-X4jmKnpVp1R904PPIp9E,281
78
79
  arpakitlib/_arpakit_project_template/src/api/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
80
  arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=odc-UyxBwUPh4t0H6qIuzAsBA_Qrm3H2qP-YBgJpaKc,164
82
- arpakitlib/_arpakit_project_template/src/api/start_api_with_reload.py,sha256=iVJ8LSmY3ikzxml0cOuawmsJ8d_zkgf3c6apkrrOuRA,335
83
- arpakitlib/_arpakit_project_template/src/api/start_api_without_reload.py,sha256=kHqVwznAbtgvsVmg3Y5rCzYcQ3KvF3hqJsTcmAAW_3Y,342
84
- arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=fEWpfjnIrGluDrjgbsJwucQoiXKTP1cUYYORTFKdOJY,531
81
+ arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
82
+ arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=zeHXIoRZYl4TlXEUKv1GMFYFmlNPVZ9jdMTJs3ZmBIk,171
83
+ arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=T17h65JMwfFqHTQRKcUUfwtm4NmlGAvs5wUZr0m0zks,542
85
84
  arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
85
  arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
86
  arpakitlib/_arpakit_project_template/src/business_service/hello_world.py,sha256=mEVxsTFsd5u_T88l4mtCfoPre9QixAmQvzQmM2J8Okc,247
88
87
  arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
- arpakitlib/_arpakit_project_template/src/core/check_logging.py,sha256=TXAG-v7rH3uSSyCgraEX-3gbDs4J2MGGaBJb1P-xj18,227
90
- arpakitlib/_arpakit_project_template/src/core/check_settings.py,sha256=hiRDvMLdECHUawl5Z0aMbsVmHJZkp0TML_1sWAnQjXI,286
91
- arpakitlib/_arpakit_project_template/src/core/const.py,sha256=86zjRG3umtjQWYUMPKGaNwHnXM-WSOF-2l0A-Le51kI,1504
92
- arpakitlib/_arpakit_project_template/src/core/generate_settings_env_example.py,sha256=VFxb3tV2eNfE93cn2rCIiLsRLx5eGgugnpak9OBKoro,485
88
+ arpakitlib/_arpakit_project_template/src/core/_check_logging.py,sha256=APQp8jQa3vQwuEt6nayPdu6GmCPHvVdAvv63RaCdHTs,225
89
+ arpakitlib/_arpakit_project_template/src/core/_check_settings.py,sha256=BQUcr-yj3cxz5GQo0jXe99wMoqHKrrrKD3-UovsJAt0,284
90
+ arpakitlib/_arpakit_project_template/src/core/_generate_settings_env_example.py,sha256=SiEJe8AYQPOWicsaCwf9RdXp6UAmfkBdBT18AAInGb4,483
91
+ arpakitlib/_arpakit_project_template/src/core/const.py,sha256=e2Y0NIQHfzm3bmnbQnGy3Z5YKt6OYnIsRoqVY8oIV2E,1008
93
92
  arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=Sie05LqTfxBOqnYz8trM3sAQdfYAJSQ2Xv4Xwt0aJbI,2348
94
- arpakitlib/_arpakit_project_template/src/core/util.py,sha256=5R8gvcZdvuDQes45FBnLC2IDv2Jhajp1VhJJYNKYjMQ,1539
93
+ arpakitlib/_arpakit_project_template/src/core/util.py,sha256=mcikqcjljZa2qhYeoR1tR9JUSprrVSod8XcIK_PqS6o,1547
95
94
  arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
- arpakitlib/_arpakit_project_template/src/db/check_conn_sqlalchemy_db.py,sha256=urdfQQxAdHNka6nwkxv1YG8cMsRKr8U6ddDxU92eWh4,251
97
- arpakitlib/_arpakit_project_template/src/db/const.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
- arpakitlib/_arpakit_project_template/src/db/init_sqlalchemy_db.py,sha256=gxCQT1bcJ-8Qos-zL8PnQ58i2GX_QkQnQSsSBKYR1f0,233
99
- arpakitlib/_arpakit_project_template/src/db/reinit_sqlalchemy_db.py,sha256=WFcv3bt2AdSIwwhpkxzNsh09wpJCmuHux63fMt_iLTg,345
95
+ arpakitlib/_arpakit_project_template/src/db/_check_conn_sqlalchemy_db.py,sha256=GPK7-w7x8ESqbZ0v1nI8m_ysWfnmjgRwyyh6kM8vYBQ,249
96
+ arpakitlib/_arpakit_project_template/src/db/_init_sqlalchemy_db.py,sha256=tHJ1NBUAR-9uAktx2RfPikzGGguhwEWfrWdj1y0XV-w,231
97
+ arpakitlib/_arpakit_project_template/src/db/_reinit_sqlalchemy_db.py,sha256=_4O_xr6FXt3qcWOmO82CKG3XX6_RqbqaOYSEygxpBfA,339
98
+ arpakitlib/_arpakit_project_template/src/db/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
100
99
  arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
101
- arpakitlib/_arpakit_project_template/src/db/util.py,sha256=8Jg9TtTwvyxVYIN_W5_lk9y-Pyh8To1aMRFUKCRDuuA,550
100
+ arpakitlib/_arpakit_project_template/src/db/util.py,sha256=a8lj54I-vVGjhDg4SLOxahDjYuiPOSFxU86myCfE1M0,557
102
101
  arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
+ arpakitlib/_arpakit_project_template/src/operation_execution/_start_operation_executor_worker.py,sha256=K861UI9LFNxfCoPpQ5AJX-oUwjB6bfFNKScKsyU9Xd8,575
103
+ arpakitlib/_arpakit_project_template/src/operation_execution/_start_scheduled_operation_creator_worker.py,sha256=i6bKSrdCElclkVWMQrIdwDtOCiy8YvrL5OTMNpQ3drE,577
103
104
  arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=HjupGEDUWVijQlbzxZPI9vBbAVOETUYzYU9pdnc9IcI,176
104
105
  arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=TuAlF3QPJq-Zsq693NHQ00dvCWAzuwce2q6ozesWFYY,725
105
- arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=N6erGXOf_Qm3soPzuraMoc1jLXA6M1KfNsp0l4aAWBM,973
106
- arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker.py,sha256=PHGL98QK3OClsdNC2rQ37ghiSIvNpFKcMhk-LXs-Abc,573
107
- arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker.py,sha256=cvk3vciWYfeOPJJQiDh66WyiNXwA5vm2eGeUsqWo93k,575
108
- arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
106
+ arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=DwEzbsQtO_7mSah25uOoV7IrlsMNEIU2j2gA-MGqUMQ,1100
107
+ arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
109
108
  arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=3WVPgRsNCIxWpA-6t_Phe-nFULdHPhS1S_DO11XRmqk,80
111
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=MVDc71sj5I1muWin50GwrSxMwYtOOSDOtRmeFErHcXs,80
112
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py,sha256=89Rg0wubztpCNHBOWkhjZz3nB8Teilrl9xHlJvDWw9o,80
113
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=BlVvIhSFclBMQMHftETS57bRaFpkOdKPrZyxMbYJuDY,80
114
- arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=7ruCZevqJoLSdqL1OEJWUy3YPCOHQif7JqVTKxZ9acM,80
109
+ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=w24o2vrlqaoCfPYftWogHCV8MoUjqctwLTI3-tFlgf4,100
110
+ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_2.py,sha256=bhriAB1GtC2dPWb0lltj145EhotgE6X1I7O8WnJmOyk,100
111
+ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_3.py,sha256=t51BUgjQl59NofTQkOK_keHSMOuow3OePShsdhRSg8c,100
112
+ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=t1iYFim7v9NNR7Y10rUVRMVyq76Pdc82d5tQKpNlUFI,100
113
+ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=ptptUxpEa7sX7coToAYZHvy8oxXXQExxS1zqng5ET2I,100
115
114
  arpakitlib/_arpakit_project_template/src/tg_bot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
115
  arpakitlib/_arpakit_project_template/src/tg_bot/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
116
  arpakitlib/_arpakit_project_template/src/tg_bot/start_tg_bot.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
117
  arpakitlib/_arpakit_project_template/src/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
- arpakitlib/api_key_util.py,sha256=E84JlJXiDHtxLQmV8BNHvqNKu_G8-Dox0XxknYJQ37Q,422
120
118
  arpakitlib/ar_additional_model_util.py,sha256=GFg-glLCxH9X95R2bhTJsscVwv37FgE1qbaAAyXrnIE,917
121
119
  arpakitlib/ar_aiogram_util.py,sha256=5JPCDZpdBGTE-EIWPRez9amCZAX7XemFIVu5YrQK7Pw,12264
120
+ arpakitlib/ar_api_key_util.py,sha256=E84JlJXiDHtxLQmV8BNHvqNKu_G8-Dox0XxknYJQ37Q,422
122
121
  arpakitlib/ar_arpakit_lib_module_util.py,sha256=UEPU8wk29R_bBP_RENnhXYzNbj_RF9FWjowrj_yxWLA,5931
123
122
  arpakitlib/ar_arpakit_project_template_util.py,sha256=c7yc8w2IvZGH5hH8eOpL7JuD005hUxZ0GVDcSkJF5iI,3705
124
123
  arpakitlib/ar_arpakit_schedule_uust_api_client_util.py,sha256=jGbP6egs2yhgfheyqhM0J-SeM2qp2YrW7dV-u9djv4Q,19223
@@ -126,11 +125,12 @@ arpakitlib/ar_arpakitlib_cli_util.py,sha256=8lhEDxnwMSRX2PGV2xQtQru1AYKSA92SVolo
126
125
  arpakitlib/ar_base64_util.py,sha256=aZkg2cZTuAaP2IWeG_LXJ6RO7qhyskVwec-Lks0iM-k,676
127
126
  arpakitlib/ar_base_worker_util.py,sha256=Qm_C7PFH5W-LPu1AGX1zp29zbqZ04i71Su1U-eeQBkA,5674
128
127
  arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
128
+ arpakitlib/ar_class_util.py,sha256=Eb4orGm2EFSaHfmrY2A_Nis5iwFMDKFaz1_nxTnfmnQ,487
129
129
  arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8o,971
130
130
  arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,419
131
131
  arpakitlib/ar_dream_ai_api_client_util.py,sha256=QF9XK7xK5ny1fvkcG4e0pfCySNNFRNPy0x0cmxfsAak,2818
132
132
  arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
133
- arpakitlib/ar_enumeration_util.py,sha256=1dQUEVgJRp0nCO-IrCKv5GTK0QkSzM44M1lOWkmPk3w,2532
133
+ arpakitlib/ar_enumeration_util.py,sha256=ZOkH1-duDcjQelJrdJ-nJ8h7wePFAgmpg_8e63Cyp0E,3072
134
134
  arpakitlib/ar_exception_util.py,sha256=3hZKsj34TZVdmd4JAQz7w515smWqB8o3gTwAEjuMdnI,408
135
135
  arpakitlib/ar_fastapi_static/healthcheck,sha256=IIO7Wvjwlr2-LPSQ7Y8O35hcI6t0_s8zqITDxkYCO8I,11
136
136
  arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js,sha256=WCuodUNv1qVh0oW5fjnJDwb5AwOue73jKHdI9z8iGKU,909365
@@ -168,13 +168,14 @@ arpakitlib/ar_logging_util.py,sha256=mx3H6CzX9dsh29ruFmYnva8lL6mwvdBXmeHH9E2tvu8
168
168
  arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
169
169
  arpakitlib/ar_need_type_util.py,sha256=GETiREPMEYhch-yU6T--Bdawlbb04Jp1Qy7cOsUlIeA,2228
170
170
  arpakitlib/ar_openai_api_client_util.py,sha256=_XmlApvHFMSyjvZydPa_kASIt9LsFrZmSC7YEzIG8Bg,1806
171
- arpakitlib/ar_operation_execution_util.py,sha256=Mu8U6h6WnPPmiNsByT788jroUNQxKHUK4UUTiRpRYYQ,17523
171
+ arpakitlib/ar_operation_execution_util.py,sha256=uWLDJWYbfsYItUQ48qOSWy4qxCTCFMjElWEXswKtaWk,17617
172
172
  arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
173
173
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
174
174
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
175
175
  arpakitlib/ar_schedule_uust_api_client_util.py,sha256=0Ns0mMEXYEkVmP6YTAXHyNcrhNsvCJ8X-G_5XwILhJ4,6855
176
- arpakitlib/ar_settings_util.py,sha256=WPlMp4mJdXds2PzmU4-w_poW2hzXlhoTukxKvHXA368,1866
176
+ arpakitlib/ar_settings_util.py,sha256=752EDXXnrA1uUbSD4InCHCZWEodLBwVUHrgOdOD2Xhw,1856
177
177
  arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1061
178
+ arpakitlib/ar_sqladmin_util.py,sha256=vQTRlf36VjW6l_zslZmjkHinMVuQfI-QZsXIlnXUpgE,2634
178
179
  arpakitlib/ar_sqlalchemy_model_util.py,sha256=nKJGN32eg3Gn5kmJwHdVJznPT5TydLsfUfwJGdypdUo,6264
179
180
  arpakitlib/ar_sqlalchemy_util.py,sha256=Hcg1THrDsSR_-8dsY1CG3NWPEv0FqCbkPXFXLtjlSJ0,4207
180
181
  arpakitlib/ar_ssh_runner_util.py,sha256=e9deuUdBW7Eh0Exx2nTBhk57SaOZYaJaSjNk8q6dbJk,6804
@@ -182,9 +183,8 @@ arpakitlib/ar_str_util.py,sha256=yU5gOwNXUQaH5b_tM5t6fXUn9oUcv5EQbVnq2wXXIpQ,337
182
183
  arpakitlib/ar_type_util.py,sha256=9C3ErtUVs0tAUqtK-foFzjJOykfBOntfCz2IogDOgfA,4134
183
184
  arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
184
185
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
185
- arpakitlib-1.7.136.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
186
- arpakitlib-1.7.136.dist-info/METADATA,sha256=r8QKqgVScUnDZ96DriYp3unV6UXdsM9JR4ARDo9n_Ts,3176
187
- arpakitlib-1.7.136.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
188
- arpakitlib-1.7.136.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
189
- arpakitlib-1.7.136.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
190
- arpakitlib-1.7.136.dist-info/RECORD,,
186
+ arpakitlib-1.7.206.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
187
+ arpakitlib-1.7.206.dist-info/METADATA,sha256=MwALBdVyl8K4gLJ9C-_MruUGQ1Caln_f7eJOPIthOXw,3176
188
+ arpakitlib-1.7.206.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
189
+ arpakitlib-1.7.206.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
190
+ arpakitlib-1.7.206.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- Copyright 2024-present Sabirzyanov Arsen
2
-
3
- This project includes software developed by Sabirzyanov Arsen.
4
-
5
- This project is licensed under the Apache License, Version 2.0 (the "License");
6
- you may not use this file except in compliance with the License.
7
- You may obtain a copy of the License at
8
-
9
- ./LICENSE
10
-
11
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and limitations under the License.
14
-
15
- Additional notices:
16
- - This project may include third-party components that are subject to other licenses. See the LICENSE file for more information.
@@ -1,16 +0,0 @@
1
- Copyright 2024-present Sabirzyanov Arsen
2
-
3
- This project includes software developed by Sabirzyanov Arsen.
4
-
5
- This project is licensed under the Apache License, Version 2.0 (the "License");
6
- you may not use this file except in compliance with the License.
7
- You may obtain a copy of the License at
8
-
9
- ./LICENSE
10
-
11
- Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS,
12
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- See the License for the specific language governing permissions and limitations under the License.
14
-
15
- Additional notices:
16
- - This project may include third-party components that are subject to other licenses. See the LICENSE file for more information.
File without changes