arpakitlib 1.7.17__py3-none-any.whl → 1.7.19__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 (25) hide show
  1. arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh +1 -1
  2. arpakitlib/_arpakit_project_template/manage/start_api_for_dev_with_reload.py +9 -0
  3. arpakitlib/_arpakit_project_template/manage/start_api_for_dev_without_reload.py +9 -0
  4. arpakitlib/_arpakit_project_template/src/api/create_api_app.py +57 -1
  5. arpakitlib/_arpakit_project_template/src/api/event.py +4 -4
  6. arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
  7. arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
  8. arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +3 -0
  9. arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
  10. arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
  11. arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
  12. arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
  13. arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py +3 -3
  14. arpakitlib/_arpakit_project_template/src/core/settings.py +2 -0
  15. arpakitlib/{ar_project_template_util.py → ar_arpakit_project_template_util.py} +15 -2
  16. arpakitlib/ar_arpakitlib_cli_util.py +16 -4
  17. arpakitlib/ar_fastapi_util.py +11 -7
  18. {arpakitlib-1.7.17.dist-info → arpakitlib-1.7.19.dist-info}/METADATA +2 -2
  19. {arpakitlib-1.7.17.dist-info → arpakitlib-1.7.19.dist-info}/RECORD +25 -16
  20. /arpakitlib/_arpakit_project_template/manage/{init_sqlalchemy_db.py → sqlalchemy_db_init.py} +0 -0
  21. /arpakitlib/_arpakit_project_template/manage/{reinit_sqlalchemy_db.py → sqlalchemy_db_reinit.py} +0 -0
  22. {arpakitlib-1.7.17.dist-info → arpakitlib-1.7.19.dist-info}/LICENSE +0 -0
  23. {arpakitlib-1.7.17.dist-info → arpakitlib-1.7.19.dist-info}/NOTICE +0 -0
  24. {arpakitlib-1.7.17.dist-info → arpakitlib-1.7.19.dist-info}/WHEEL +0 -0
  25. {arpakitlib-1.7.17.dist-info → arpakitlib-1.7.19.dist-info}/entry_points.txt +0 -0
@@ -1 +1 @@
1
- arpakitlib -c init_arpakit_project_template -project_dirpath ./ -overwrite_if_exists ... -project_name ... -ignore_paths_startswith ... -only_paths_startswith ...
1
+ arpakitlib -c init_arpakit_project_template -project_dirpath ./ -overwrite_if_exists ... -project_name ... -sql_db_port ... -api_port ... -ignore_paths_startswith ... -only_paths_startswith ...
@@ -0,0 +1,9 @@
1
+ from src.api.start_api_for_dev import start_api_for_dev
2
+
3
+
4
+ def command():
5
+ start_api_for_dev(reload=True)
6
+
7
+
8
+ if __name__ == '__main__':
9
+ command()
@@ -0,0 +1,9 @@
1
+ from src.api.start_api_for_dev import start_api_for_dev
2
+
3
+
4
+ def command():
5
+ start_api_for_dev(reload=False)
6
+
7
+
8
+ if __name__ == '__main__':
9
+ command()
@@ -1,5 +1,61 @@
1
1
  from fastapi import FastAPI
2
2
 
3
+ from arpakitlib.ar_fastapi_util import create_fastapi_app, InitSqlalchemyDBStartupAPIEvent, InitFileStoragesInDir, \
4
+ create_handle_exception, create_handle_exception_creating_story_log
5
+ from src.api.event import FirstStartupAPIEvent, FirstShutdownAPIEvent
6
+ from src.api.router.v1.main_router import api_v1_main_router
7
+ from src.api.transmitted_api_data import TransmittedAPIData
8
+ from src.core.settings import get_cached_settings
9
+ from src.core.util import get_cached_sqlalchemy_db, get_cached_media_file_storage_in_dir, \
10
+ get_cached_cache_file_storage_in_dir, get_cached_dump_file_storage_in_dir, setup_logging
11
+
3
12
 
4
13
  def create_api_app() -> FastAPI:
5
- pass
14
+ setup_logging()
15
+
16
+ settings = get_cached_settings()
17
+ sqlalchemy_db = get_cached_sqlalchemy_db() if settings.sql_db_url is not None else None
18
+
19
+ transmitted_api_data = TransmittedAPIData(
20
+ settings=get_cached_settings(),
21
+ sqlalchemy_db=sqlalchemy_db
22
+ )
23
+
24
+ api_app = create_fastapi_app(
25
+ title="{PROJECT_NAME}",
26
+ description="{PROJECT_NAME}",
27
+ log_filepath=get_cached_settings().log_filepath,
28
+ handle_exception_=create_handle_exception(
29
+ funcs_before_response=[
30
+ create_handle_exception_creating_story_log(sqlalchemy_db=sqlalchemy_db)
31
+ if sqlalchemy_db is not None else None
32
+ ],
33
+ async_funcs_after_response=[]
34
+ ),
35
+ startup_api_events=[
36
+ FirstStartupAPIEvent(transmitted_api_data=transmitted_api_data),
37
+ InitFileStoragesInDir(
38
+ file_storages_in_dir=[
39
+ get_cached_media_file_storage_in_dir(),
40
+ get_cached_cache_file_storage_in_dir(),
41
+ get_cached_dump_file_storage_in_dir()
42
+ ]
43
+ ),
44
+ (
45
+ InitSqlalchemyDBStartupAPIEvent(sqlalchemy_db=sqlalchemy_db)
46
+ if (sqlalchemy_db is not None and settings.init_sql_db_at_start) else None
47
+ ),
48
+ ],
49
+ shutdown_api_events=[
50
+ FirstShutdownAPIEvent(transmitted_api_data=transmitted_api_data)
51
+ ],
52
+ transmitted_api_data=transmitted_api_data,
53
+ main_api_router=api_v1_main_router,
54
+ media_dirpath=settings.media_dirpath
55
+ )
56
+
57
+ return api_app
58
+
59
+
60
+ if __name__ == '__main__':
61
+ create_api_app()
@@ -6,19 +6,19 @@ from src.api.transmitted_api_data import TransmittedAPIData
6
6
  _logger = logging.getLogger(__name__)
7
7
 
8
8
 
9
- class StartupAPIEvent(BaseStartupAPIEvent):
9
+ class FirstStartupAPIEvent(BaseStartupAPIEvent):
10
10
  def __init__(self, transmitted_api_data: TransmittedAPIData):
11
11
  super().__init__()
12
12
  self.transmitted_api_data = transmitted_api_data
13
13
 
14
14
  async def async_on_startup(self, *args, **kwargs):
15
- pass
15
+ self._logger.info(self.__class__.__name__)
16
16
 
17
17
 
18
- class ShutdownAPIEvent(BaseShutdownAPIEvent):
18
+ class FirstShutdownAPIEvent(BaseShutdownAPIEvent):
19
19
  def __init__(self, transmitted_api_data: TransmittedAPIData):
20
20
  super().__init__()
21
21
  self.transmitted_api_data = transmitted_api_data
22
22
 
23
23
  async def async_on_shutdown(self, *args, **kwargs):
24
- pass
24
+ self._logger.info(self.__class__.__name__)
@@ -0,0 +1,3 @@
1
+ from fastapi import APIRouter
2
+
3
+ api_v1_main_router = APIRouter()
@@ -1,10 +1,10 @@
1
1
  import uvicorn
2
2
 
3
3
 
4
- def start_app_for_dev(reload: bool = True):
4
+ def start_api_for_dev(reload: bool = True):
5
5
  uvicorn.run(
6
6
  "src.api.asgi:app",
7
- port=...,
7
+ port=int("{API_PORT}"),
8
8
  host="localhost",
9
9
  workers=1,
10
10
  reload=reload
@@ -12,4 +12,4 @@ def start_app_for_dev(reload: bool = True):
12
12
 
13
13
 
14
14
  if __name__ == '__main__':
15
- start_app_for_dev()
15
+ start_api_for_dev()
@@ -34,6 +34,8 @@ class Settings(SimpleSettings):
34
34
  "postgresql://{PROJECT_NAME}:{PROJECT_NAME}@127.0.0.1:{SQL_DB_PORT}/{PROJECT_NAME}"
35
35
  )
36
36
 
37
+ init_sql_db_at_start: bool = False
38
+
37
39
  sql_db_echo: bool = False
38
40
 
39
41
 
@@ -4,6 +4,7 @@ import logging
4
4
  import os
5
5
 
6
6
  from arpakitlib.ar_str_util import make_none_if_blank, raise_if_string_blank
7
+ from arpakitlib.ar_type_util import raise_for_type
7
8
 
8
9
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
9
10
 
@@ -15,8 +16,10 @@ def init_arpakit_project_template(
15
16
  project_dirpath: str,
16
17
  overwrite_if_exists: bool = False,
17
18
  project_name: str | None = None,
19
+ sql_db_port: int | None = None,
20
+ api_port: int | None = None,
18
21
  ignore_paths_startswith: list[str] | str | None = None,
19
- only_paths_startswith: list[str] | str | None = None
22
+ only_paths_startswith: list[str] | str | None = None,
20
23
  ):
21
24
  raise_if_string_blank(project_dirpath)
22
25
 
@@ -24,6 +27,12 @@ def init_arpakit_project_template(
24
27
  project_name = project_name.strip()
25
28
  project_name = make_none_if_blank(project_name)
26
29
 
30
+ if sql_db_port is not None:
31
+ raise_for_type(sql_db_port, int)
32
+
33
+ if api_port is not None:
34
+ raise_for_type(api_port, int)
35
+
27
36
  if isinstance(ignore_paths_startswith, str):
28
37
  ignore_paths_startswith = [ignore_paths_startswith]
29
38
  if ignore_paths_startswith is None:
@@ -59,8 +68,12 @@ def init_arpakit_project_template(
59
68
  continue
60
69
  with open(os.path.join(root, file), "r", encoding="utf-8") as _file:
61
70
  _content = _file.read()
62
- if project_name:
71
+ if project_name is not None:
63
72
  _content = _content.replace("{PROJECT_NAME}", project_name)
73
+ if sql_db_port is not None:
74
+ _content = _content.replace("{SQL_DB_PORT}", str(sql_db_port))
75
+ if api_port is not None:
76
+ _content = _content.replace("{API_PORT}", str(api_port))
64
77
  res[rel_path] = _content
65
78
  return res
66
79
 
@@ -2,9 +2,9 @@
2
2
 
3
3
  import sys
4
4
 
5
+ from arpakitlib.ar_arpakit_project_template_util import init_arpakit_project_template
5
6
  from arpakitlib.ar_need_type_util import parse_need_type, NeedTypes
6
7
  from arpakitlib.ar_parse_command import parse_command
7
- from arpakitlib.ar_project_template_util import init_arpakit_project_template
8
8
  from arpakitlib.ar_str_util import raise_if_string_blank
9
9
 
10
10
 
@@ -25,7 +25,8 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
25
25
  print(
26
26
  "Commands:"
27
27
  "\n- init_arpakit_project_template"
28
- " (project_dirpath, overwrite_if_exists, project_name, ignore_paths_startswith, only_paths_startswith)"
28
+ " (project_dirpath, overwrite_if_exists, project_name, sql_db_port, api_port,"
29
+ " ignore_paths_startswith, only_paths_startswith)"
29
30
  )
30
31
 
31
32
  elif command == "init_arpakit_project_template":
@@ -36,7 +37,17 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
36
37
  allow_none=False
37
38
  )
38
39
  project_name: str = parsed_command.get_value_by_keys(keys=["pm", "project_name"])
39
- project_name = project_name if project_name.strip() else None
40
+ project_name = project_name.strip() if project_name.strip() else None
41
+ sql_db_port: int | None = parse_need_type(
42
+ value=parsed_command.get_value_by_keys(keys=["sdp", "sql_db_port"]),
43
+ need_type=NeedTypes.int_,
44
+ allow_none=True
45
+ )
46
+ api_port: int | None = parse_need_type(
47
+ value=parsed_command.get_value_by_keys(keys=["ap", "api_port"]),
48
+ need_type=NeedTypes.int_,
49
+ allow_none=True
50
+ )
40
51
  ignore_paths_startswith: list[str] | None = parse_need_type(
41
52
  value=parsed_command.get_value_by_keys(keys=["ipsw", "ignore_paths_startswith"]),
42
53
  need_type=NeedTypes.list_of_str,
@@ -48,7 +59,8 @@ def execute_arpakitlib_cli(*, full_command: str | None = None):
48
59
  allow_none=True
49
60
  )
50
61
  init_arpakit_project_template(
51
- project_dirpath=project_dirpath, overwrite_if_exists=overwrite_if_exists, project_name=project_name,
62
+ project_dirpath=project_dirpath, overwrite_if_exists=overwrite_if_exists,
63
+ project_name=project_name, sql_db_port=sql_db_port, api_port=api_port,
52
64
  ignore_paths_startswith=ignore_paths_startswith, only_paths_startswith=only_paths_startswith
53
65
  )
54
66
 
@@ -7,6 +7,7 @@ import logging
7
7
  import os.path
8
8
  import pathlib
9
9
  import traceback
10
+ from contextlib import suppress
10
11
  from datetime import datetime
11
12
  from typing import Any, Callable
12
13
 
@@ -19,7 +20,6 @@ import starlette.status
19
20
  from fastapi import FastAPI, APIRouter, Query, Security
20
21
  from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
21
22
  from fastapi.security import APIKeyHeader
22
- from jaraco.context import suppress
23
23
  from pydantic import BaseModel, ConfigDict
24
24
  from starlette.middleware.cors import CORSMiddleware
25
25
  from starlette.staticfiles import StaticFiles
@@ -147,14 +147,16 @@ class APIException(fastapi.exceptions.HTTPException):
147
147
 
148
148
  def create_handle_exception(
149
149
  *,
150
- funcs_before_response: list[Callable] | None = None,
151
- async_funcs_after_response: list[Callable] | None = None,
152
- ) -> Any:
150
+ funcs_before_response: list[Callable | None] | None = None,
151
+ async_funcs_after_response: list[Callable | None] | None = None,
152
+ ) -> Callable:
153
153
  if funcs_before_response is None:
154
154
  funcs_before_response = []
155
+ funcs_before_response = [v for v in funcs_before_response if v is not None]
155
156
 
156
157
  if async_funcs_after_response is None:
157
158
  async_funcs_after_response = []
159
+ async_funcs_after_response = [v for v in async_funcs_after_response if v is not None]
158
160
 
159
161
  async def handle_exception(
160
162
  request: starlette.requests.Request, exception: Exception
@@ -564,7 +566,7 @@ def simple_api_router_for_testing():
564
566
 
565
567
 
566
568
  _DEFAULT_CONTACT = {
567
- "name": "arpakit",
569
+ "name": "ARPAKIT Company",
568
570
  "email": "support@arpakit.com"
569
571
  }
570
572
 
@@ -575,8 +577,8 @@ def create_fastapi_app(
575
577
  description: str | None = "arpakitlib FastAPI",
576
578
  log_filepath: str | None = "./story.log",
577
579
  handle_exception_: Callable | None = create_handle_exception(),
578
- startup_api_events: list[BaseStartupAPIEvent] | None = None,
579
- shutdown_api_events: list[BaseShutdownAPIEvent] | None = None,
580
+ startup_api_events: list[BaseStartupAPIEvent | None] | None = None,
581
+ shutdown_api_events: list[BaseShutdownAPIEvent | None] | None = None,
580
582
  transmitted_api_data: BaseTransmittedAPIData = BaseTransmittedAPIData(),
581
583
  main_api_router: APIRouter = simple_api_router_for_testing(),
582
584
  contact: dict[str, Any] | None = None,
@@ -589,9 +591,11 @@ def create_fastapi_app(
589
591
 
590
592
  if not startup_api_events:
591
593
  startup_api_events = [BaseStartupAPIEvent()]
594
+ startup_api_events = [v for v in startup_api_events if v is not None]
592
595
 
593
596
  if not shutdown_api_events:
594
597
  shutdown_api_events = [BaseShutdownAPIEvent()]
598
+ shutdown_api_events = [v for v in shutdown_api_events if v is not None]
595
599
 
596
600
  app = FastAPI(
597
601
  title=title,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.7.17
3
+ Version: 1.7.19
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -8,7 +8,7 @@ Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
8
8
  Author: arpakit
9
9
  Author-email: arpakit@gmail.com
10
10
  Requires-Python: >=3.12,<4.0
11
- Classifier: Development Status :: 4 - Beta
11
+ Classifier: Development Status :: 5 - Production/Stable
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Apache Software License
14
14
  Classifier: Operating System :: OS Independent
@@ -17,7 +17,7 @@ arpakitlib/_arpakit_project_template/manage/docker_ps.sh,sha256=uwm8vHgeuNLCOn0o
17
17
  arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh,sha256=EKytHfg5nDIen_QZhltfU7fHNJ68cSbM2ab13smKnTk,276
18
18
  arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh,sha256=vY_NMqqZzYhrRMyZhZkJ5ppOJnzhpvHr82U3zTXJWPw,43
19
19
  arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh,sha256=Mlerpr5giJvpAtmYsudx-bYb4SuL1Hw7iF1Jv_b061k,41
20
- arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh,sha256=0J1mESu315fb8KRnUq9SIOg6Oj8QpJgIcjbs8vhvgsQ,162
20
+ arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh,sha256=LeVtGUWhMXJuOQOS1HDtOfaU5SV757AENJ3u11oDHh8,193
21
21
  arpakitlib/_arpakit_project_template/manage/example_nginx_proxy.nginx,sha256=Ch4vCoa1QBdDpfRAz2tgOMO8Gw-6tgNyvOkte7A3MsA,326
22
22
  arpakitlib/_arpakit_project_template/manage/example_systemd.service,sha256=Cunp3074ZKg1AQiX4Q_Xe5Q39Jca7hQj5ljXqryWwTU,143
23
23
  arpakitlib/_arpakit_project_template/manage/generate_env_example.py,sha256=pRTr6SzBJxDUaxTXZgLJr7rJawHyvpyTJbrJSZW0hEc,330
@@ -31,7 +31,6 @@ arpakitlib/_arpakit_project_template/manage/git_set_arpakit_company_origin.sh,sh
31
31
  arpakitlib/_arpakit_project_template/manage/git_set_arpakit_origin.sh,sha256=uMtOEDLe_L8SD5cqZ1ZU_pC2C5ZOD-eM8igf1z0LUIk,225
32
32
  arpakitlib/_arpakit_project_template/manage/git_status.sh,sha256=N9JGYX5_UfCdirw4EQYzu4sS7pMLGrF4-QrTSTcpUtA,16
33
33
  arpakitlib/_arpakit_project_template/manage/hello_world.py,sha256=1b1YIedAgtvBttAcKBeF03XsJ_pVKIThsr-0MYw0Uxg,83
34
- arpakitlib/_arpakit_project_template/manage/init_sqlalchemy_db.py,sha256=FqKVuakafDndHKBsyPcSowhss6MZb0Soy5oREUPVLUw,184
35
34
  arpakitlib/_arpakit_project_template/manage/note/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
35
  arpakitlib/_arpakit_project_template/manage/note/note_1.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
36
  arpakitlib/_arpakit_project_template/manage/note/note_2.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -50,7 +49,6 @@ arpakitlib/_arpakit_project_template/manage/poetry_show.sh,sha256=pclR9efCNrrGyJ
50
49
  arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh,sha256=5ibH12wGYc-Cj8zl5abtI_hLVSW0o4ofktt-w7I6wQo,37
51
50
  arpakitlib/_arpakit_project_template/manage/poetry_update.sh,sha256=ZtoXIC4Qq7PMTDxQMwUxvkYC6lTc5LC23ILTywWbyoU,164
52
51
  arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh,sha256=hh7vj-yKgKqLfaGb8cjsJ_NTa7fBtE4s3yxzte4D8bw,163
53
- arpakitlib/_arpakit_project_template/manage/reinit_sqlalchemy_db.py,sha256=twBWh64WU-sqHUte8v9ZJUZ_bCsFABExgIWLOnfLu4w,186
54
52
  arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
53
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py,sha256=WdE1IWyObxVUT9jE3qgNMaFXXkKV6nUI0ZToLT1uhdk,155
56
54
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py,sha256=WdE1IWyObxVUT9jE3qgNMaFXXkKV6nUI0ZToLT1uhdk,155
@@ -61,6 +59,10 @@ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_6.py,sha256=WdE1IWyO
61
59
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py,sha256=WdE1IWyObxVUT9jE3qgNMaFXXkKV6nUI0ZToLT1uhdk,155
62
60
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
61
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
+ arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py,sha256=FqKVuakafDndHKBsyPcSowhss6MZb0Soy5oREUPVLUw,184
63
+ arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py,sha256=twBWh64WU-sqHUte8v9ZJUZ_bCsFABExgIWLOnfLu4w,186
64
+ arpakitlib/_arpakit_project_template/manage/start_api_for_dev_with_reload.py,sha256=xg2SFemhe8KmmoYvaG8zkFZyonzxdxcHuugjS3i0q0I,151
65
+ arpakitlib/_arpakit_project_template/manage/start_api_for_dev_without_reload.py,sha256=_7Zf0_Wciui4cHJSmpRXYVU7MakWCafIqek52LbfwSI,152
64
66
  arpakitlib/_arpakit_project_template/resource/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
67
  arpakitlib/_arpakit_project_template/resource/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
68
  arpakitlib/_arpakit_project_template/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -68,16 +70,23 @@ arpakitlib/_arpakit_project_template/src/additional_model/__init__.py,sha256=47D
68
70
  arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sha256=4KCOvto9Hj5eMYpvfaJChghhR9bkCvKluGGPWrTezoY,134
69
71
  arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
72
  arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
71
- arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=alLtgeeTBuQXK4Bq5w9CDI5nkslYAa7mJ4vo3uCgqR0,72
72
- arpakitlib/_arpakit_project_template/src/api/event.py,sha256=5CGfQ9xcEqNp3rGAod-XvobShy-AlFOKmp6p7PAzuxk,729
73
- arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py,sha256=MndA66oVIEmhNTYAaSgaz4lz2vsfFrFa3lp24UTOwks,250
73
+ arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=DbmisByJaT9HK5u0IwMVuA6pAM244LaWLZtrYMade78,2352
74
+ arpakitlib/_arpakit_project_template/src/api/event.py,sha256=h2UkOd_I643XiIe_xi5n2iSR2C5hy0Z8pGbbIwbJXe0,815
75
+ arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=7MnhMwhmkYlbtvhmprXJ8nfs_iOPYBluwhcef5e_EBY,64
78
+ arpakitlib/_arpakit_project_template/src/api/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
+ 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=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py,sha256=l0_-PiWXT4_u01a3_-ypRh4U73n8gdR5eDPzJq-C1MA,264
74
83
  arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=YtpATqzN216e76W5QOuzN-Vo6343PVDiHpKWYQ6oqyU,278
75
84
  arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
85
  arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
86
  arpakitlib/_arpakit_project_template/src/core/const.py,sha256=CZZew674y7LhCAlYhvuF5cV4Zb9nQ17j2Tcuj2GEBf4,1232
78
87
  arpakitlib/_arpakit_project_template/src/core/operation_executor.py,sha256=oTz6gWnhfOUevjo44OK6lx4f4A9x5SuFJOUsuO-YzIo,591
79
88
  arpakitlib/_arpakit_project_template/src/core/scheduled_operations.py,sha256=W6ALtmW8oNuX0Y03Aqfgb4WlUWKtQetRgv1P3Lp6acE,324
80
- arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=LauOleX-YUN21OaXyhyyOuas8_Rqhz2uvZcNYVskIKc,1345
89
+ arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=DbGqZUYnBJtRhy-nCI5BHaQOb4zKeVYMHZ1PVhba_9M,1385
81
90
  arpakitlib/_arpakit_project_template/src/core/util.py,sha256=I5Cxd-lXVMnpjMOyfoNcfOdL05xrujXBmYi5d91AjJg,1714
82
91
  arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
92
  arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -92,8 +101,9 @@ arpakitlib/_arpakit_project_template/src/util/__init__.py,sha256=47DEQpj8HBSa-_T
92
101
  arpakitlib/ar_additional_model_util.py,sha256=tNzZhZtvtJ1qC6Cn4UnyoEL58HudfpCdQy5ftkCqyik,473
93
102
  arpakitlib/ar_aiogram_util.py,sha256=5JPCDZpdBGTE-EIWPRez9amCZAX7XemFIVu5YrQK7Pw,12264
94
103
  arpakitlib/ar_arpakit_lib_module_util.py,sha256=V_mc3Ml73Tzz3arxmwEfIxruKMyrwbe8XZ9FfVDtUXY,5446
104
+ arpakitlib/ar_arpakit_project_template_util.py,sha256=p_Xl6snazS17UwX0EI5M0mPE_GDBIZNgtpIfVixJIms,3692
95
105
  arpakitlib/ar_arpakit_schedule_uust_api_client_util.py,sha256=SYWWQDohPnw0qpBIu2hEvGZRVdaI4NUUQdEjnMnseo4,18237
96
- arpakitlib/ar_arpakitlib_cli_util.py,sha256=v8zZmc_qV6Yuzuh_jKrf4klEXBEnXRK_fjlpHvZPZ_8,2466
106
+ arpakitlib/ar_arpakitlib_cli_util.py,sha256=h1Iby85XsNjEy88ABZqYQr5fDfdtbysnkxsbTZfOaHI,2985
97
107
  arpakitlib/ar_base64_util.py,sha256=aZkg2cZTuAaP2IWeG_LXJ6RO7qhyskVwec-Lks0iM-k,676
98
108
  arpakitlib/ar_base_worker_util.py,sha256=fW7kzbo7gKFaF7-l7DnOGTVkt4H_BeHSkTHSoGQR8Fw,3295
99
109
  arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
@@ -121,7 +131,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
121
131
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
122
132
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
123
133
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
124
- arpakitlib/ar_fastapi_util.py,sha256=Et9lypLbCEOFBV4WXGn8NUkXAk4gdG_tdJmTgKCszLY,21844
134
+ arpakitlib/ar_fastapi_util.py,sha256=xzevlyT-kyEO9L_jQ41l5MlIvEwH1dsCjJOYeHFcWU8,22201
125
135
  arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
126
136
  arpakitlib/ar_file_util.py,sha256=XiwmeycxoLqtYnGOu5q6IEaJJXilZvtLvsKDKtwqSLY,137
127
137
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
@@ -139,7 +149,6 @@ arpakitlib/ar_openai_api_client_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9f
139
149
  arpakitlib/ar_operation_execution_util.py,sha256=2neWCjko_UwDdIhhHrCKbwR3L_ve7dHbtGNJf6OZ9ug,12373
140
150
  arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
141
151
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
142
- arpakitlib/ar_project_template_util.py,sha256=RpzLFTjutqKmGTI6PrewfJFMwXGz7ZbXJjHjGHh6KpI,3164
143
152
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
144
153
  arpakitlib/ar_schedule_uust_api_client_util.py,sha256=JD-hRUQSs-euK0zq9w_4QUfGO00yWM08gllWUVKTtHc,6109
145
154
  arpakitlib/ar_settings_util.py,sha256=pWinOOnBDRhFxvkkuAjOq_U37QQJL-WwjIyVgsJTJB4,1216
@@ -151,9 +160,9 @@ arpakitlib/ar_str_util.py,sha256=oCEtQ_TTn35OEz9jCNLjbhopq76JmaifD_iYR-nEJJ4,214
151
160
  arpakitlib/ar_type_util.py,sha256=GNc9PgFKonj5lRlAHSnVPBN5nLIslrG8GTiZHjkf05w,2138
152
161
  arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
153
162
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
154
- arpakitlib-1.7.17.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
155
- arpakitlib-1.7.17.dist-info/METADATA,sha256=MmlZqTsouCqDOv6ZfG4aDS47zgz-G74PNyLZ2BMDRss,2811
156
- arpakitlib-1.7.17.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
157
- arpakitlib-1.7.17.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
158
- arpakitlib-1.7.17.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
159
- arpakitlib-1.7.17.dist-info/RECORD,,
163
+ arpakitlib-1.7.19.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
164
+ arpakitlib-1.7.19.dist-info/METADATA,sha256=7ttb29gZONKpi34x6BgHH6N68L8rgQN4el61-dm3E2k,2824
165
+ arpakitlib-1.7.19.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
166
+ arpakitlib-1.7.19.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
167
+ arpakitlib-1.7.19.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
168
+ arpakitlib-1.7.19.dist-info/RECORD,,