arpakitlib 1.7.16__py3-none-any.whl → 1.7.18__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.
- arpakitlib/_arpakit_project_template/.gitignore +1 -0
- arpakitlib/_arpakit_project_template/example_pyproject.toml +4 -4
- arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh +4 -0
- arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh +2 -0
- arpakitlib/_arpakit_project_template/manage/docker_stop_postgres_for_dev.sh +2 -0
- arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh +1 -1
- arpakitlib/_arpakit_project_template/manage/start_api_for_dev_with_reload.py +9 -0
- arpakitlib/_arpakit_project_template/manage/start_api_for_dev_without_reload.py +9 -0
- arpakitlib/_arpakit_project_template/src/api/create_api_app.py +57 -1
- arpakitlib/_arpakit_project_template/src/api/event.py +4 -4
- arpakitlib/_arpakit_project_template/src/api/router/__init__.py +0 -0
- arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py +0 -0
- arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py +3 -0
- arpakitlib/_arpakit_project_template/src/api/schema/__init__.py +0 -0
- arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py +0 -0
- arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py +0 -0
- arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py +0 -0
- arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py +3 -3
- arpakitlib/_arpakit_project_template/src/core/settings.py +6 -2
- arpakitlib/_arpakit_project_template/src/core/util.py +2 -2
- arpakitlib/{ar_project_template_util.py → ar_arpakit_project_template_util.py} +15 -2
- arpakitlib/ar_arpakitlib_cli_util.py +16 -4
- arpakitlib/ar_fastapi_util.py +11 -7
- {arpakitlib-1.7.16.dist-info → arpakitlib-1.7.18.dist-info}/METADATA +2 -2
- {arpakitlib-1.7.16.dist-info → arpakitlib-1.7.18.dist-info}/RECORD +31 -22
- arpakitlib/_arpakit_project_template/manage/example_docker_run_postgres_for_dev.sh +0 -4
- arpakitlib/_arpakit_project_template/manage/example_docker_start_postgres_for_dev.sh +0 -2
- arpakitlib/_arpakit_project_template/manage/example_docker_stop_postgres_for_dev.sh +0 -2
- /arpakitlib/_arpakit_project_template/manage/{init_sqlalchemy_db.py → sqlalchemy_db_init.py} +0 -0
- /arpakitlib/_arpakit_project_template/manage/{reinit_sqlalchemy_db.py → sqlalchemy_db_reinit.py} +0 -0
- {arpakitlib-1.7.16.dist-info → arpakitlib-1.7.18.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.16.dist-info → arpakitlib-1.7.18.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.16.dist-info → arpakitlib-1.7.18.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.16.dist-info → arpakitlib-1.7.18.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,11 @@
|
|
1
1
|
[tool.poetry]
|
2
|
-
name = "
|
2
|
+
name = "{PROJECT_NAME}"
|
3
3
|
version = "0.1.0"
|
4
|
-
description = "
|
5
|
-
authors = ["arpakit <arpakit@gmail.com>", "
|
4
|
+
description = "{PROJECT_NAME}"
|
5
|
+
authors = ["arpakit <arpakit@gmail.com>", "arpakitsupport <support@arpakit.com>"]
|
6
6
|
license = "Apache License 2.0"
|
7
7
|
readme = "README.md"
|
8
|
-
keywords = ["
|
8
|
+
keywords = ["{PROJECT_NAME}", "arpakitlib", "arpakit", "arpakit-company", "arpakitcompany", "arpakit_company"]
|
9
9
|
package-mode = false
|
10
10
|
|
11
11
|
|
@@ -0,0 +1,4 @@
|
|
1
|
+
cd ..
|
2
|
+
docker rm {PROJECT_NAME}_postgres
|
3
|
+
docker run --name {PROJECT_NAME}_postgres -d -p {SQL_DB_PORT}:5432 -e POSTGRES_USER={PROJECT_NAME} -e POSTGRES_PASSWORD={PROJECT_NAME} -e POSTGRES_DB={PROJECT_NAME} postgres:16 -c max_connections=100
|
4
|
+
docker start {PROJECT_NAME}_postgres
|
@@ -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 ...
|
@@ -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
|
-
|
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
|
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
|
-
|
15
|
+
self._logger.info(self.__class__.__name__)
|
16
16
|
|
17
17
|
|
18
|
-
class
|
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
|
-
|
24
|
+
self._logger.info(self.__class__.__name__)
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import uvicorn
|
2
2
|
|
3
3
|
|
4
|
-
def
|
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
|
-
|
15
|
+
start_api_for_dev()
|
@@ -30,9 +30,13 @@ class Settings(SimpleSettings):
|
|
30
30
|
|
31
31
|
dump_dirpath: str = os.path.join(var_dirpath, dump_dirname)
|
32
32
|
|
33
|
-
|
33
|
+
sql_db_url: str | None = (
|
34
|
+
"postgresql://{PROJECT_NAME}:{PROJECT_NAME}@127.0.0.1:{SQL_DB_PORT}/{PROJECT_NAME}"
|
35
|
+
)
|
34
36
|
|
35
|
-
|
37
|
+
init_sql_db_at_start: bool = False
|
38
|
+
|
39
|
+
sql_db_echo: bool = False
|
36
40
|
|
37
41
|
|
38
42
|
@lru_cache()
|
@@ -45,8 +45,8 @@ def create_sqlalchemy_db() -> SQLAlchemyDB:
|
|
45
45
|
importlib.import_module("src.db.sqlalchemy_model")
|
46
46
|
|
47
47
|
return SQLAlchemyDB(
|
48
|
-
db_url=get_cached_settings().
|
49
|
-
db_echo=get_cached_settings().
|
48
|
+
db_url=get_cached_settings().sql_db_url,
|
49
|
+
db_echo=get_cached_settings().sql_db_echo
|
50
50
|
)
|
51
51
|
|
52
52
|
|
@@ -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,
|
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,
|
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
|
|
arpakitlib/ar_fastapi_util.py
CHANGED
@@ -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
|
-
) ->
|
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": "
|
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.
|
3
|
+
Version: 1.7.18
|
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 ::
|
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
|
@@ -1,5 +1,5 @@
|
|
1
1
|
arpakitlib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
2
|
-
arpakitlib/_arpakit_project_template/.gitignore,sha256=
|
2
|
+
arpakitlib/_arpakit_project_template/.gitignore,sha256=Q8n7q3-hKsnFVN5NcACPs71Z9t5EtyjK8HOp0FMA5cg,428
|
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/AUTHOR.md,sha256=d5QAx-1vbHfYYABpNQ0Yfjaxsw8UnfXhcLVirz6lMyo,45
|
@@ -7,17 +7,17 @@ arpakitlib/_arpakit_project_template/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaW
|
|
7
7
|
arpakitlib/_arpakit_project_template/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
8
8
|
arpakitlib/_arpakit_project_template/README.md,sha256=EEoHPZrJQtLS3fKD3JvoPhkGhjfuDihxK5fmAGwihCQ,65
|
9
9
|
arpakitlib/_arpakit_project_template/example.env,sha256=84xZODEykuSbGylHSCBv9eRznvX5Et6f-LVXNmVLrwA,196
|
10
|
-
arpakitlib/_arpakit_project_template/example_pyproject.toml,sha256=
|
10
|
+
arpakitlib/_arpakit_project_template/example_pyproject.toml,sha256=wLzoszIWqIC8qwgJD7FH_2UzKVh4PB7gi030zO6aYbA,485
|
11
11
|
arpakitlib/_arpakit_project_template/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
12
12
|
arpakitlib/_arpakit_project_template/manage/beutify_json.py,sha256=mzmt-5piAHqgihLsqOpPx1JjDc1qA5F1XHBxDdR-BxY,215
|
13
13
|
arpakitlib/_arpakit_project_template/manage/check_logging.py,sha256=rfrl4MK5ItRKaLKb0UU_EfQLckRQSYJ1S_2VAQJQ2Yk,212
|
14
14
|
arpakitlib/_arpakit_project_template/manage/check_settings.py,sha256=JYR-IPgvYQOmJedKY9vOctbxEcUlaxZR-P0JXT9L2JQ,143
|
15
15
|
arpakitlib/_arpakit_project_template/manage/check_sqlalchemy_db_conn.py,sha256=3Q4QfvFVBZsbMMH5yr6v3a6v6UjQuIEIujlxGpvykNA,190
|
16
16
|
arpakitlib/_arpakit_project_template/manage/docker_ps.sh,sha256=uwm8vHgeuNLCOn0o9hgP_uc-PUkS9FwLyzZh6ItZ3do,15
|
17
|
-
arpakitlib/_arpakit_project_template/manage/
|
18
|
-
arpakitlib/_arpakit_project_template/manage/
|
19
|
-
arpakitlib/_arpakit_project_template/manage/
|
20
|
-
arpakitlib/_arpakit_project_template/manage/example_init_arpakit_project_template.sh,sha256=
|
17
|
+
arpakitlib/_arpakit_project_template/manage/docker_run_postgres_for_dev.sh,sha256=EKytHfg5nDIen_QZhltfU7fHNJ68cSbM2ab13smKnTk,276
|
18
|
+
arpakitlib/_arpakit_project_template/manage/docker_start_postgres_for_dev.sh,sha256=vY_NMqqZzYhrRMyZhZkJ5ppOJnzhpvHr82U3zTXJWPw,43
|
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=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,17 +70,24 @@ 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=
|
72
|
-
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=
|
73
|
-
arpakitlib/_arpakit_project_template/src/api/
|
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=
|
81
|
-
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=
|
89
|
+
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=DbGqZUYnBJtRhy-nCI5BHaQOb4zKeVYMHZ1PVhba_9M,1385
|
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
|
84
93
|
arpakitlib/_arpakit_project_template/src/db/util.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=
|
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=
|
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.
|
155
|
-
arpakitlib-1.7.
|
156
|
-
arpakitlib-1.7.
|
157
|
-
arpakitlib-1.7.
|
158
|
-
arpakitlib-1.7.
|
159
|
-
arpakitlib-1.7.
|
163
|
+
arpakitlib-1.7.18.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
164
|
+
arpakitlib-1.7.18.dist-info/METADATA,sha256=hmOyGhWvu5hGkkWcrv7pEVAADBLnBBzZRrw6N2m7WWQ,2824
|
165
|
+
arpakitlib-1.7.18.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
166
|
+
arpakitlib-1.7.18.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
167
|
+
arpakitlib-1.7.18.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
168
|
+
arpakitlib-1.7.18.dist-info/RECORD,,
|
/arpakitlib/_arpakit_project_template/manage/{init_sqlalchemy_db.py → sqlalchemy_db_init.py}
RENAMED
File without changes
|
/arpakitlib/_arpakit_project_template/manage/{reinit_sqlalchemy_db.py → sqlalchemy_db_reinit.py}
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|