arpakitlib 1.7.132__py3-none-any.whl → 1.7.136__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/src/api/event.py +2 -8
- arpakitlib/_arpakit_project_template/src/api/{start_api_for_dev_with_reload.py → start_api_with_reload.py} +2 -2
- arpakitlib/_arpakit_project_template/src/api/{start_api_for_dev_without_reload.py → start_api_without_reload.py} +2 -2
- arpakitlib/_arpakit_project_template/src/business_service/hello_world.py +4 -1
- arpakitlib/_arpakit_project_template/src/core/check_settings.py +2 -4
- arpakitlib/_arpakit_project_template/src/core/generate_settings_env_example.py +2 -4
- arpakitlib/_arpakit_project_template/src/core/settings.py +1 -11
- arpakitlib/_arpakit_project_template/src/db/check_conn_sqlalchemy_db.py +2 -2
- arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker.py +0 -2
- arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker.py +0 -2
- arpakitlib/ar_type_util.py +15 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.136.dist-info}/METADATA +1 -1
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.136.dist-info}/RECORD +17 -18
- arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh +0 -1
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.136.dist-info}/LICENSE +0 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.136.dist-info}/NOTICE +0 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.136.dist-info}/WHEEL +0 -0
- {arpakitlib-1.7.132.dist-info → arpakitlib-1.7.136.dist-info}/entry_points.txt +0 -0
@@ -35,10 +35,7 @@ class StartupAPIEvent(BaseStartupAPIEvent):
|
|
35
35
|
worker=OperationExecutorWorker(
|
36
36
|
sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db,
|
37
37
|
operation_executor=OperationExecutor(sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db),
|
38
|
-
filter_operation_types=None
|
39
|
-
startup_funcs=[
|
40
|
-
self.transmitted_api_data.sqlalchemy_db.init
|
41
|
-
]
|
38
|
+
filter_operation_types=None
|
42
39
|
),
|
43
40
|
mode=SafeRunInBackgroundModes.thread
|
44
41
|
)
|
@@ -48,10 +45,7 @@ class StartupAPIEvent(BaseStartupAPIEvent):
|
|
48
45
|
_ = safe_run_worker_in_background(
|
49
46
|
worker=ScheduledOperationCreatorWorker(
|
50
47
|
sqlalchemy_db=self.transmitted_api_data.sqlalchemy_db,
|
51
|
-
scheduled_operations=SCHEDULED_OPERATIONS
|
52
|
-
startup_funcs=[
|
53
|
-
self.transmitted_api_data.sqlalchemy_db.init
|
54
|
-
]
|
48
|
+
scheduled_operations=SCHEDULED_OPERATIONS
|
55
49
|
),
|
56
50
|
mode=SafeRunInBackgroundModes.async_task
|
57
51
|
)
|
@@ -3,7 +3,7 @@ import uvicorn
|
|
3
3
|
from src.core.settings import get_cached_settings
|
4
4
|
|
5
5
|
|
6
|
-
def
|
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 __command():
|
|
14
14
|
|
15
15
|
|
16
16
|
if __name__ == '__main__':
|
17
|
-
|
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
|
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 __command():
|
|
14
14
|
|
15
15
|
|
16
16
|
if __name__ == '__main__':
|
17
|
-
|
17
|
+
__start_api_for_dev_without_reload()
|
@@ -1,12 +1,10 @@
|
|
1
1
|
from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
|
2
2
|
from src.core.settings import get_cached_settings
|
3
|
-
from src.core.util import setup_logging
|
4
3
|
|
5
4
|
|
6
|
-
def
|
7
|
-
setup_logging()
|
5
|
+
def __check_settings():
|
8
6
|
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
9
7
|
|
10
8
|
|
11
9
|
if __name__ == '__main__':
|
12
|
-
|
10
|
+
__check_settings()
|
@@ -3,14 +3,12 @@ import os.path
|
|
3
3
|
from arpakitlib.ar_json_util import safely_transfer_obj_to_json_str
|
4
4
|
from src.core.const import ProjectPaths
|
5
5
|
from src.core.settings import Settings, get_cached_settings
|
6
|
-
from src.core.util import setup_logging
|
7
6
|
|
8
7
|
|
9
|
-
def
|
10
|
-
setup_logging()
|
8
|
+
def __generate_settings_env_example():
|
11
9
|
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
12
10
|
Settings.save_env_example_to_file(filepath=os.path.join(ProjectPaths.base_dirpath, "example.env"))
|
13
11
|
|
14
12
|
|
15
13
|
if __name__ == '__main__':
|
16
|
-
|
14
|
+
__generate_settings_env_example()
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import asyncio
|
2
1
|
import os
|
3
2
|
from functools import lru_cache
|
4
3
|
from typing import Any
|
@@ -79,14 +78,5 @@ def get_cached_settings() -> Settings:
|
|
79
78
|
return Settings()
|
80
79
|
|
81
80
|
|
82
|
-
def __example():
|
83
|
-
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
84
|
-
|
85
|
-
|
86
|
-
async def __async_example():
|
87
|
-
pass
|
88
|
-
|
89
|
-
|
90
81
|
if __name__ == '__main__':
|
91
|
-
|
92
|
-
asyncio.run(__async_example())
|
82
|
+
print(safely_transfer_obj_to_json_str(get_cached_settings().model_dump(mode="json")))
|
@@ -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
|
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
|
-
|
11
|
+
__check_conn_sqlalchemy_db()
|
arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker.py
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
from arpakitlib.ar_operation_execution_util import OperationExecutorWorker
|
2
|
-
from src.core.settings import get_cached_settings
|
3
2
|
from src.core.util import setup_logging
|
4
3
|
from src.db.util import get_cached_sqlalchemy_db
|
5
4
|
from src.operation_execution.operation_executor import OperationExecutor
|
@@ -7,7 +6,6 @@ from src.operation_execution.operation_executor import OperationExecutor
|
|
7
6
|
|
8
7
|
def start_operation_executor_worker():
|
9
8
|
setup_logging()
|
10
|
-
get_cached_settings().raise_if_mode_type_prod()
|
11
9
|
worker = OperationExecutorWorker(
|
12
10
|
sqlalchemy_db=get_cached_sqlalchemy_db(),
|
13
11
|
operation_executor=OperationExecutor(sqlalchemy_db=get_cached_sqlalchemy_db())
|
@@ -1,5 +1,4 @@
|
|
1
1
|
from arpakitlib.ar_operation_execution_util import ScheduledOperationCreatorWorker
|
2
|
-
from src.core.settings import get_cached_settings
|
3
2
|
from src.core.util import setup_logging
|
4
3
|
from src.db.util import get_cached_sqlalchemy_db
|
5
4
|
from src.operation_execution.scheduled_operations import SCHEDULED_OPERATIONS
|
@@ -7,7 +6,6 @@ from src.operation_execution.scheduled_operations import SCHEDULED_OPERATIONS
|
|
7
6
|
|
8
7
|
def start_scheduled_operation_creator_worker():
|
9
8
|
setup_logging()
|
10
|
-
get_cached_settings().raise_if_mode_type_prod()
|
11
9
|
worker = ScheduledOperationCreatorWorker(
|
12
10
|
sqlalchemy_db=get_cached_sqlalchemy_db(),
|
13
11
|
scheduled_operations=SCHEDULED_OPERATIONS
|
arpakitlib/ar_type_util.py
CHANGED
@@ -84,6 +84,19 @@ def raise_if_not_none(v: Any) -> Any:
|
|
84
84
|
return v
|
85
85
|
|
86
86
|
|
87
|
+
def get_setted_elements_as_dict_from_dict(d: dict) -> dict[str, Any]:
|
88
|
+
raise_for_type(d, dict)
|
89
|
+
setted_ = {}
|
90
|
+
for k, v in d.items():
|
91
|
+
if is_set(v):
|
92
|
+
setted_[k] = v
|
93
|
+
return setted_
|
94
|
+
|
95
|
+
|
96
|
+
def get_setted_keys_from_dict(d: dict) -> list[Any]:
|
97
|
+
return list(get_setted_elements_as_dict_from_dict(d).keys())
|
98
|
+
|
99
|
+
|
87
100
|
def __example():
|
88
101
|
print("is_set:")
|
89
102
|
print(is_set(v=NotSet)) # False
|
@@ -138,6 +151,8 @@ def __example():
|
|
138
151
|
except TypeError as e:
|
139
152
|
print(e)
|
140
153
|
|
154
|
+
print(get_setted_elements_as_dict_from_dict({"afs": "ASfa", "asfasf": NotSet}))
|
155
|
+
|
141
156
|
|
142
157
|
if __name__ == '__main__':
|
143
158
|
__example()
|
@@ -35,7 +35,6 @@ arpakitlib/_arpakit_project_template/manage/poetry_check.sh,sha256=mxkbFqw-mVlAk
|
|
35
35
|
arpakitlib/_arpakit_project_template/manage/poetry_clear_cache.sh,sha256=5NmoMsA377JCeTMLERzE2GZywgi8mXQDTQ_yhIJtR8k,139
|
36
36
|
arpakitlib/_arpakit_project_template/manage/poetry_config.sh,sha256=gIctNLSvRJmER_iU_HwPpHR83adZV12LoXcoWfY9M00,26
|
37
37
|
arpakitlib/_arpakit_project_template/manage/poetry_config_virtualenvs_in_project_true.sh,sha256=CHAGXfmyztxgimUQ4MC4IwnLzd2uZ7Da1Xvem_lw60w,47
|
38
|
-
arpakitlib/_arpakit_project_template/manage/poetry_generate_requirements.txt.sh,sha256=Df2ms0GlmAymMGqf9Bp2i3_DI61Ii1xYKf7S0By7tdw,76
|
39
38
|
arpakitlib/_arpakit_project_template/manage/poetry_install.sh,sha256=oLSrFGHKIRWc-1VEiM9wPRUNPTjtYJ3hEKwbeCpCvlk,153
|
40
39
|
arpakitlib/_arpakit_project_template/manage/poetry_lock.sh,sha256=9oiTdi8ynGQWctQjI3g4ThGkvpT07-g5ajLmG47iVh8,17
|
41
40
|
arpakitlib/_arpakit_project_template/manage/poetry_remove_and_add_arpakitlib.sh,sha256=-DvxXI-oaAQxIZFtiCfNBhqpRgJcWWuxhoHb9Nou0a4,197
|
@@ -70,7 +69,7 @@ arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiD
|
|
70
69
|
arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
71
70
|
arpakitlib/_arpakit_project_template/src/api/const.py,sha256=7d4qD5hedqr7QxVzbfsA7E1bNZn2Pm2U8joXGtpANu0,287
|
72
71
|
arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=5NJ50NqReuCTs-CH4_C_lcgpqKR9XuBONJOl2IRqOQI,2769
|
73
|
-
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=
|
72
|
+
arpakitlib/_arpakit_project_template/src/api/event.py,sha256=Jd1eWUpPzGSg-wBIsCh1SNywemykQuXrf_6IlsoSO5w,2999
|
74
73
|
arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
75
74
|
arpakitlib/_arpakit_project_template/src/api/router/main_router.py,sha256=Yv699WCJDcdiJMXFg1kPTvolqj-NAGoXfqe-vzbMzIU,228
|
76
75
|
arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -80,21 +79,21 @@ arpakitlib/_arpakit_project_template/src/api/schema/__init__.py,sha256=47DEQpj8H
|
|
80
79
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
81
80
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
81
|
arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=odc-UyxBwUPh4t0H6qIuzAsBA_Qrm3H2qP-YBgJpaKc,164
|
83
|
-
arpakitlib/_arpakit_project_template/src/api/
|
84
|
-
arpakitlib/_arpakit_project_template/src/api/
|
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
|
85
84
|
arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=fEWpfjnIrGluDrjgbsJwucQoiXKTP1cUYYORTFKdOJY,531
|
86
85
|
arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
86
|
arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
88
|
-
arpakitlib/_arpakit_project_template/src/business_service/hello_world.py,sha256=
|
87
|
+
arpakitlib/_arpakit_project_template/src/business_service/hello_world.py,sha256=mEVxsTFsd5u_T88l4mtCfoPre9QixAmQvzQmM2J8Okc,247
|
89
88
|
arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
90
89
|
arpakitlib/_arpakit_project_template/src/core/check_logging.py,sha256=TXAG-v7rH3uSSyCgraEX-3gbDs4J2MGGaBJb1P-xj18,227
|
91
|
-
arpakitlib/_arpakit_project_template/src/core/check_settings.py,sha256=
|
90
|
+
arpakitlib/_arpakit_project_template/src/core/check_settings.py,sha256=hiRDvMLdECHUawl5Z0aMbsVmHJZkp0TML_1sWAnQjXI,286
|
92
91
|
arpakitlib/_arpakit_project_template/src/core/const.py,sha256=86zjRG3umtjQWYUMPKGaNwHnXM-WSOF-2l0A-Le51kI,1504
|
93
|
-
arpakitlib/_arpakit_project_template/src/core/generate_settings_env_example.py,sha256=
|
94
|
-
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=
|
92
|
+
arpakitlib/_arpakit_project_template/src/core/generate_settings_env_example.py,sha256=VFxb3tV2eNfE93cn2rCIiLsRLx5eGgugnpak9OBKoro,485
|
93
|
+
arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=Sie05LqTfxBOqnYz8trM3sAQdfYAJSQ2Xv4Xwt0aJbI,2348
|
95
94
|
arpakitlib/_arpakit_project_template/src/core/util.py,sha256=5R8gvcZdvuDQes45FBnLC2IDv2Jhajp1VhJJYNKYjMQ,1539
|
96
95
|
arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
97
|
-
arpakitlib/_arpakit_project_template/src/db/check_conn_sqlalchemy_db.py,sha256=
|
96
|
+
arpakitlib/_arpakit_project_template/src/db/check_conn_sqlalchemy_db.py,sha256=urdfQQxAdHNka6nwkxv1YG8cMsRKr8U6ddDxU92eWh4,251
|
98
97
|
arpakitlib/_arpakit_project_template/src/db/const.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
99
98
|
arpakitlib/_arpakit_project_template/src/db/init_sqlalchemy_db.py,sha256=gxCQT1bcJ-8Qos-zL8PnQ58i2GX_QkQnQSsSBKYR1f0,233
|
100
99
|
arpakitlib/_arpakit_project_template/src/db/reinit_sqlalchemy_db.py,sha256=WFcv3bt2AdSIwwhpkxzNsh09wpJCmuHux63fMt_iLTg,345
|
@@ -104,8 +103,8 @@ arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=
|
|
104
103
|
arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=HjupGEDUWVijQlbzxZPI9vBbAVOETUYzYU9pdnc9IcI,176
|
105
104
|
arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=TuAlF3QPJq-Zsq693NHQ00dvCWAzuwce2q6ozesWFYY,725
|
106
105
|
arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=N6erGXOf_Qm3soPzuraMoc1jLXA6M1KfNsp0l4aAWBM,973
|
107
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_worker.py,sha256=
|
108
|
-
arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_worker.py,sha256=
|
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
|
109
108
|
arpakitlib/_arpakit_project_template/src/operation_execution/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
110
109
|
arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
111
110
|
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_1.py,sha256=3WVPgRsNCIxWpA-6t_Phe-nFULdHPhS1S_DO11XRmqk,80
|
@@ -180,12 +179,12 @@ arpakitlib/ar_sqlalchemy_model_util.py,sha256=nKJGN32eg3Gn5kmJwHdVJznPT5TydLsfUf
|
|
180
179
|
arpakitlib/ar_sqlalchemy_util.py,sha256=Hcg1THrDsSR_-8dsY1CG3NWPEv0FqCbkPXFXLtjlSJ0,4207
|
181
180
|
arpakitlib/ar_ssh_runner_util.py,sha256=e9deuUdBW7Eh0Exx2nTBhk57SaOZYaJaSjNk8q6dbJk,6804
|
182
181
|
arpakitlib/ar_str_util.py,sha256=yU5gOwNXUQaH5b_tM5t6fXUn9oUcv5EQbVnq2wXXIpQ,3378
|
183
|
-
arpakitlib/ar_type_util.py,sha256=
|
182
|
+
arpakitlib/ar_type_util.py,sha256=9C3ErtUVs0tAUqtK-foFzjJOykfBOntfCz2IogDOgfA,4134
|
184
183
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
|
185
184
|
arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
186
|
-
arpakitlib-1.7.
|
187
|
-
arpakitlib-1.7.
|
188
|
-
arpakitlib-1.7.
|
189
|
-
arpakitlib-1.7.
|
190
|
-
arpakitlib-1.7.
|
191
|
-
arpakitlib-1.7.
|
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,,
|
@@ -1 +0,0 @@
|
|
1
|
-
poetry export -f requirements.txt --without-hashes --output requirements.txt
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|