arpakitlib 1.7.44__py3-none-any.whl → 1.7.46__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.
@@ -5,9 +5,10 @@
5
5
  # api_title=
6
6
  # api_description=
7
7
  # api_create_story_log_before_response_in_handle_exception=
8
- # api_start_execute_operation_worker=
9
- # api_start_create_scheduled_operation_worker=
8
+ # api_start_operation_executor_worker=
9
+ # api_start_scheduled_operation_creator_worker=
10
10
  # api_port=
11
+ # api_correct_api_key=
11
12
  # var_dirname=
12
13
  # var_dirpath=
13
14
  # log_filename=
@@ -0,0 +1,209 @@
1
+ aiofiles==24.1.0 ; python_version >= "3.12" and python_version < "4.0"
2
+ aiogram==3.17.0 ; python_version >= "3.12" and python_version < "4.0"
3
+ aiohappyeyeballs==2.4.4 ; python_version >= "3.12" and python_version < "4.0"
4
+ aiohttp-socks==0.9.2 ; python_version >= "3.12" and python_version < "4.0"
5
+ aiohttp==3.11.11 ; python_version >= "3.12" and python_version < "4.0"
6
+ aiosignal==1.3.2 ; python_version >= "3.12" and python_version < "4.0"
7
+ alembic==1.14.0 ; python_version >= "3.12" and python_version < "4.0"
8
+ amqp==5.3.1 ; python_version >= "3.12" and python_version < "4.0"
9
+ annotated-types==0.7.0 ; python_version >= "3.12" and python_version < "4.0"
10
+ anyio==4.7.0 ; python_version >= "3.12" and python_version < "4.0"
11
+ appnope==0.1.4 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Darwin"
12
+ argon2-cffi-bindings==21.2.0 ; python_version >= "3.12" and python_version < "4.0"
13
+ argon2-cffi==23.1.0 ; python_version >= "3.12" and python_version < "4.0"
14
+ arrow==1.3.0 ; python_version >= "3.12" and python_version < "4.0"
15
+ asttokens==3.0.0 ; python_version >= "3.12" and python_version < "4.0"
16
+ async-lru==2.0.4 ; python_version >= "3.12" and python_version < "4.0"
17
+ asyncpg==0.30.0 ; python_version >= "3.12" and python_version < "4.0"
18
+ asyncssh==2.19.0 ; python_version >= "3.12" and python_version < "4.0"
19
+ attrs==24.3.0 ; python_version >= "3.12" and python_version < "4.0"
20
+ babel==2.16.0 ; python_version >= "3.12" and python_version < "4.0"
21
+ bcrypt==4.2.1 ; python_version >= "3.12" and python_version < "4.0"
22
+ beautifulsoup4==4.12.3 ; python_version >= "3.12" and python_version < "4.0"
23
+ billiard==4.2.1 ; python_version >= "3.12" and python_version < "4.0"
24
+ bleach[css]==6.2.0 ; python_version >= "3.12" and python_version < "4.0"
25
+ bs4==0.0.2 ; python_version >= "3.12" and python_version < "4.0"
26
+ build==1.2.2.post1 ; python_version >= "3.12" and python_version < "4.0"
27
+ cachecontrol[filecache]==0.14.1 ; python_version >= "3.12" and python_version < "4.0"
28
+ cachetools==5.5.0 ; python_version >= "3.12" and python_version < "4.0"
29
+ celery==5.4.0 ; python_version >= "3.12" and python_version < "4.0"
30
+ certifi==2024.12.14 ; python_version >= "3.12" and python_version < "4.0"
31
+ cffi==1.17.1 ; python_version >= "3.12" and python_version < "4.0"
32
+ charset-normalizer==3.4.1 ; python_version >= "3.12" and python_version < "4.0"
33
+ cleo==2.1.0 ; python_version >= "3.12" and python_version < "4.0"
34
+ click-didyoumean==0.3.1 ; python_version >= "3.12" and python_version < "4.0"
35
+ click-plugins==1.1.1 ; python_version >= "3.12" and python_version < "4.0"
36
+ click-repl==0.3.0 ; python_version >= "3.12" and python_version < "4.0"
37
+ click==8.1.8 ; python_version >= "3.12" and python_version < "4.0"
38
+ colorama==0.4.6 ; python_version >= "3.12" and python_version < "4.0" and (platform_system == "Windows" or os_name == "nt" or sys_platform == "win32")
39
+ comm==0.2.2 ; python_version >= "3.12" and python_version < "4.0"
40
+ contourpy==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
41
+ crashtest==0.4.1 ; python_version >= "3.12" and python_version < "4.0"
42
+ cryptography==44.0.0 ; python_version >= "3.12" and python_version < "4.0"
43
+ cycler==0.12.1 ; python_version >= "3.12" and python_version < "4.0"
44
+ debugpy==1.8.11 ; python_version >= "3.12" and python_version < "4.0"
45
+ decorator==5.1.1 ; python_version >= "3.12" and python_version < "4.0"
46
+ defusedxml==0.7.1 ; python_version >= "3.12" and python_version < "4.0"
47
+ distlib==0.3.9 ; python_version >= "3.12" and python_version < "4.0"
48
+ distro==1.9.0 ; python_version >= "3.12" and python_version < "4.0"
49
+ dnspython==2.7.0 ; python_version >= "3.12" and python_version < "4.0"
50
+ docutils==0.21.2 ; python_version >= "3.12" and python_version < "4.0"
51
+ dulwich==0.21.7 ; python_version >= "3.12" and python_version < "4.0"
52
+ email-validator==2.2.0 ; python_version >= "3.12" and python_version < "4.0"
53
+ emoji==2.14.0 ; python_version >= "3.12" and python_version < "4.0"
54
+ et-xmlfile==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
55
+ executing==2.1.0 ; python_version >= "3.12" and python_version < "4.0"
56
+ fastapi==0.115.6 ; python_version >= "3.12" and python_version < "4.0"
57
+ fastjsonschema==2.21.1 ; python_version >= "3.12" and python_version < "4.0"
58
+ filelock==3.16.1 ; python_version >= "3.12" and python_version < "4.0"
59
+ fonttools==4.55.3 ; python_version >= "3.12" and python_version < "4.0"
60
+ fqdn==1.5.1 ; python_version >= "3.12" and python_version < "4"
61
+ frozenlist==1.5.0 ; python_version >= "3.12" and python_version < "4.0"
62
+ greenlet==3.1.1 ; python_version < "3.13" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32") and python_version >= "3.12"
63
+ gunicorn==23.0.0 ; python_version >= "3.12" and python_version < "4.0"
64
+ h11==0.14.0 ; python_version >= "3.12" and python_version < "4.0"
65
+ httpcore==1.0.7 ; python_version >= "3.12" and python_version < "4.0"
66
+ httpx==0.28.1 ; python_version >= "3.12" and python_version < "4.0"
67
+ idna==3.10 ; python_version >= "3.12" and python_version < "4.0"
68
+ installer==0.7.0 ; python_version >= "3.12" and python_version < "4.0"
69
+ ipykernel==6.29.5 ; python_version >= "3.12" and python_version < "4.0"
70
+ ipython==8.31.0 ; python_version >= "3.12" and python_version < "4.0"
71
+ ipywidgets==8.1.5 ; python_version >= "3.12" and python_version < "4.0"
72
+ isoduration==20.11.0 ; python_version >= "3.12" and python_version < "4.0"
73
+ itsdangerous==2.2.0 ; python_version >= "3.12" and python_version < "4.0"
74
+ jaraco-classes==3.4.0 ; python_version >= "3.12" and python_version < "4.0"
75
+ jedi==0.19.2 ; python_version >= "3.12" and python_version < "4.0"
76
+ jeepney==0.8.0 ; python_version >= "3.12" and python_version < "4.0" and sys_platform == "linux"
77
+ jinja2==3.1.5 ; python_version >= "3.12" and python_version < "4.0"
78
+ jiter==0.8.2 ; python_version >= "3.12" and python_version < "4.0"
79
+ json5==0.10.0 ; python_version >= "3.12" and python_version < "4.0"
80
+ jsonpointer==3.0.0 ; python_version >= "3.12" and python_version < "4.0"
81
+ jsonschema-specifications==2024.10.1 ; python_version >= "3.12" and python_version < "4.0"
82
+ jsonschema==4.23.0 ; python_version >= "3.12" and python_version < "4.0"
83
+ jsonschema[format-nongpl]==4.23.0 ; python_version >= "3.12" and python_version < "4.0"
84
+ jupyter-client==8.6.3 ; python_version >= "3.12" and python_version < "4.0"
85
+ jupyter-console==6.6.3 ; python_version >= "3.12" and python_version < "4.0"
86
+ jupyter-core==5.7.2 ; python_version >= "3.12" and python_version < "4.0"
87
+ jupyter-events==0.11.0 ; python_version >= "3.12" and python_version < "4.0"
88
+ jupyter-lsp==2.2.5 ; python_version >= "3.12" and python_version < "4.0"
89
+ jupyter-server-terminals==0.5.3 ; python_version >= "3.12" and python_version < "4.0"
90
+ jupyter-server==2.15.0 ; python_version >= "3.12" and python_version < "4.0"
91
+ jupyter==1.1.1 ; python_version >= "3.12" and python_version < "4.0"
92
+ jupyterlab-pygments==0.3.0 ; python_version >= "3.12" and python_version < "4.0"
93
+ jupyterlab-server==2.27.3 ; python_version >= "3.12" and python_version < "4.0"
94
+ jupyterlab-widgets==3.0.13 ; python_version >= "3.12" and python_version < "4.0"
95
+ jupyterlab==4.3.4 ; python_version >= "3.12" and python_version < "4.0"
96
+ keyring==24.3.1 ; python_version >= "3.12" and python_version < "4.0"
97
+ kiwisolver==1.4.8 ; python_version >= "3.12" and python_version < "4.0"
98
+ kombu==5.4.2 ; python_version >= "3.12" and python_version < "4.0"
99
+ magic-filter==1.0.12 ; python_version >= "3.12" and python_version < "4.0"
100
+ mako==1.3.8 ; python_version >= "3.12" and python_version < "4.0"
101
+ markdown-it-py==3.0.0 ; python_version >= "3.12" and python_version < "4.0"
102
+ markupsafe==3.0.2 ; python_version >= "3.12" and python_version < "4.0"
103
+ matplotlib-inline==0.1.7 ; python_version >= "3.12" and python_version < "4.0"
104
+ matplotlib==3.10.0 ; python_version >= "3.12" and python_version < "4.0"
105
+ mdurl==0.1.2 ; python_version >= "3.12" and python_version < "4.0"
106
+ mistune==3.1.0 ; python_version >= "3.12" and python_version < "4.0"
107
+ more-itertools==10.5.0 ; python_version >= "3.12" and python_version < "4.0"
108
+ msgpack==1.1.0 ; python_version >= "3.12" and python_version < "4.0"
109
+ multidict==6.1.0 ; python_version >= "3.12" and python_version < "4.0"
110
+ nbclient==0.10.2 ; python_version >= "3.12" and python_version < "4.0"
111
+ nbconvert==7.16.5 ; python_version >= "3.12" and python_version < "4.0"
112
+ nbformat==5.10.4 ; python_version >= "3.12" and python_version < "4.0"
113
+ nest-asyncio==1.6.0 ; python_version >= "3.12" and python_version < "4.0"
114
+ nh3==0.2.20 ; python_version >= "3.12" and python_version < "4.0"
115
+ notebook-shim==0.2.4 ; python_version >= "3.12" and python_version < "4.0"
116
+ notebook==7.3.2 ; python_version >= "3.12" and python_version < "4.0"
117
+ numpy==2.2.1 ; python_version >= "3.12" and python_version < "4.0"
118
+ openai==1.58.1 ; python_version >= "3.12" and python_version < "4.0"
119
+ openpyxl==3.1.5 ; python_version >= "3.12" and python_version < "4.0"
120
+ overrides==7.7.0 ; python_version >= "3.12" and python_version < "4.0"
121
+ packaging==24.2 ; python_version >= "3.12" and python_version < "4.0"
122
+ pandas==2.2.3 ; python_version >= "3.12" and python_version < "4.0"
123
+ pandocfilters==1.5.1 ; python_version >= "3.12" and python_version < "4.0"
124
+ paramiko==3.5.0 ; python_version >= "3.12" and python_version < "4.0"
125
+ parso==0.8.4 ; python_version >= "3.12" and python_version < "4.0"
126
+ pexpect==4.9.0 ; python_version >= "3.12" and python_version < "4.0"
127
+ pillow==11.1.0 ; python_version >= "3.12" and python_version < "4.0"
128
+ pkginfo==1.12.0 ; python_version >= "3.12" and python_version < "4.0"
129
+ platformdirs==4.3.6 ; python_version >= "3.12" and python_version < "4.0"
130
+ poetry-core==1.9.1 ; python_version >= "3.12" and python_version < "4.0"
131
+ poetry-plugin-export==1.8.0 ; python_version >= "3.12" and python_version < "4.0"
132
+ poetry==1.8.5 ; python_version >= "3.12" and python_version < "4.0"
133
+ prometheus-client==0.21.1 ; python_version >= "3.12" and python_version < "4.0"
134
+ prompt-toolkit==3.0.48 ; python_version >= "3.12" and python_version < "4.0"
135
+ propcache==0.2.1 ; python_version >= "3.12" and python_version < "4.0"
136
+ psutil==6.1.1 ; python_version >= "3.12" and python_version < "4.0"
137
+ psycopg2-binary==2.9.10 ; python_version >= "3.12" and python_version < "4.0"
138
+ ptyprocess==0.7.0 ; python_version >= "3.12" and python_version < "4.0"
139
+ pure-eval==0.2.3 ; python_version >= "3.12" and python_version < "4.0"
140
+ pycparser==2.22 ; python_version >= "3.12" and python_version < "4.0"
141
+ pydantic-core==2.27.2 ; python_version >= "3.12" and python_version < "4.0"
142
+ pydantic-settings==2.7.1 ; python_version >= "3.12" and python_version < "4.0"
143
+ pydantic==2.10.4 ; python_version >= "3.12" and python_version < "4.0"
144
+ pygments==2.18.0 ; python_version >= "3.12" and python_version < "4.0"
145
+ pyjwt==2.10.1 ; python_version >= "3.12" and python_version < "4.0"
146
+ pymongo==4.10.1 ; python_version >= "3.12" and python_version < "4.0"
147
+ pynacl==1.5.0 ; python_version >= "3.12" and python_version < "4.0"
148
+ pyparsing==3.2.1 ; python_version >= "3.12" and python_version < "4.0"
149
+ pyproject-hooks==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
150
+ pysocks==1.7.1 ; python_version >= "3.12" and python_version < "4.0"
151
+ python-dateutil==2.9.0.post0 ; python_version >= "3.12" and python_version < "4.0"
152
+ python-dotenv==1.0.1 ; python_version >= "3.12" and python_version < "4.0"
153
+ python-json-logger==3.2.1 ; python_version >= "3.12" and python_version < "4.0"
154
+ python-multipart==0.0.20 ; python_version >= "3.12" and python_version < "4.0"
155
+ python-socks[asyncio]==2.6.1 ; python_version >= "3.12" and python_version < "4.0"
156
+ pytz==2024.2 ; python_version >= "3.12" and python_version < "4.0"
157
+ pywin32-ctypes==0.2.3 ; python_version >= "3.12" and python_version < "4.0" and sys_platform == "win32"
158
+ pywin32==308 ; sys_platform == "win32" and platform_python_implementation != "PyPy" and python_version >= "3.12" and python_version < "4.0"
159
+ pywinpty==2.0.14 ; python_version >= "3.12" and python_version < "4.0" and os_name == "nt"
160
+ pyyaml==6.0.2 ; python_version >= "3.12" and python_version < "4.0"
161
+ pyzabbix==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
162
+ pyzmq==26.2.0 ; python_version >= "3.12" and python_version < "4.0"
163
+ rapidfuzz==3.11.0 ; python_version >= "3.12" and python_version < "4.0"
164
+ readme-renderer==44.0 ; python_version >= "3.12" and python_version < "4.0"
165
+ redis==5.2.1 ; python_version >= "3.12" and python_version < "4.0"
166
+ referencing==0.35.1 ; python_version >= "3.12" and python_version < "4.0"
167
+ requests-toolbelt==1.0.0 ; python_version >= "3.12" and python_version < "4.0"
168
+ requests==2.32.3 ; python_version >= "3.12" and python_version < "4.0"
169
+ requests[socks]==2.32.3 ; python_version >= "3.12" and python_version < "4.0"
170
+ rfc3339-validator==0.1.4 ; python_version >= "3.12" and python_version < "4.0"
171
+ rfc3986-validator==0.1.1 ; python_version >= "3.12" and python_version < "4.0"
172
+ rfc3986==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
173
+ rich==13.9.4 ; python_version >= "3.12" and python_version < "4.0"
174
+ rpds-py==0.22.3 ; python_version >= "3.12" and python_version < "4.0"
175
+ secretstorage==3.3.3 ; python_version >= "3.12" and python_version < "4.0" and sys_platform == "linux"
176
+ send2trash==1.8.3 ; python_version >= "3.12" and python_version < "4.0"
177
+ setuptools==75.6.0 ; python_version >= "3.12" and python_version < "4.0"
178
+ shellingham==1.5.4 ; python_version >= "3.12" and python_version < "4.0"
179
+ six==1.17.0 ; python_version >= "3.12" and python_version < "4.0"
180
+ sniffio==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
181
+ soupsieve==2.6 ; python_version >= "3.12" and python_version < "4.0"
182
+ sqladmin==0.20.1 ; python_version >= "3.12" and python_version < "4.0"
183
+ sqlalchemy==2.0.36 ; python_version >= "3.12" and python_version < "4.0"
184
+ stack-data==0.6.3 ; python_version >= "3.12" and python_version < "4.0"
185
+ starlette==0.41.3 ; python_version >= "3.12" and python_version < "4.0"
186
+ terminado==0.18.1 ; python_version >= "3.12" and python_version < "4.0"
187
+ tinycss2==1.4.0 ; python_version >= "3.12" and python_version < "4.0"
188
+ tomlkit==0.13.2 ; python_version >= "3.12" and python_version < "4.0"
189
+ tornado==6.4.2 ; python_version >= "3.12" and python_version < "4.0"
190
+ tqdm==4.67.1 ; python_version >= "3.12" and python_version < "4.0"
191
+ traitlets==5.14.3 ; python_version >= "3.12" and python_version < "4.0"
192
+ trove-classifiers==2024.10.21.16 ; python_version >= "3.12" and python_version < "4.0"
193
+ twine==6.0.1 ; python_version >= "3.12" and python_version < "4.0"
194
+ types-python-dateutil==2.9.0.20241206 ; python_version >= "3.12" and python_version < "4.0"
195
+ typing-extensions==4.12.2 ; python_version >= "3.12" and python_version < "4.0"
196
+ tzdata==2024.2 ; python_version >= "3.12" and python_version < "4.0"
197
+ uri-template==1.3.0 ; python_version >= "3.12" and python_version < "4.0"
198
+ urllib3==2.3.0 ; python_version >= "3.12" and python_version < "4.0"
199
+ uvicorn==0.32.1 ; python_version >= "3.12" and python_version < "4.0"
200
+ vine==5.1.0 ; python_version >= "3.12" and python_version < "4.0"
201
+ virtualenv==20.28.0 ; python_version >= "3.12" and python_version < "4.0"
202
+ wcwidth==0.2.13 ; python_version >= "3.12" and python_version < "4.0"
203
+ webcolors==24.11.1 ; python_version >= "3.12" and python_version < "4.0"
204
+ webencodings==0.5.1 ; python_version >= "3.12" and python_version < "4.0"
205
+ websocket-client==1.8.0 ; python_version >= "3.12" and python_version < "4.0"
206
+ widgetsnbextension==4.0.13 ; python_version >= "3.12" and python_version < "4.0"
207
+ wtforms==3.1.2 ; python_version >= "3.12" and python_version < "4.0"
208
+ xattr==1.1.0 ; python_version >= "3.12" and python_version < "4.0" and sys_platform == "darwin"
209
+ yarl==1.18.3 ; python_version >= "3.12" and python_version < "4.0"
@@ -5,10 +5,8 @@ from src.core.settings import Settings
5
5
 
6
6
 
7
7
  def command():
8
- env_example = Settings.generate_env_example()
9
- print(env_example)
10
- with open(os.path.join(BASE_DIRPATH, "example.env"), mode="w") as f:
11
- f.write(env_example)
8
+ print(Settings.generate_env_example())
9
+ Settings.save_env_example_to_file(filepath=os.path.join(BASE_DIRPATH, "example.env"))
12
10
 
13
11
 
14
12
  if __name__ == '__main__':
@@ -1,9 +1,13 @@
1
- from arpakitlib.ar_fastapi_util import BaseAPIErrorCodes
1
+ from arpakitlib.ar_fastapi_util import BaseAPIErrorCodes, BaseAPIErrorSpecificationCodes
2
2
 
3
3
 
4
4
  class APIErrorCodes(BaseAPIErrorCodes):
5
5
  pass
6
6
 
7
7
 
8
+ class APIErrorSpecificationCodes(BaseAPIErrorSpecificationCodes):
9
+ pass
10
+
11
+
8
12
  if __name__ == '__main__':
9
13
  print(APIErrorCodes.str_for_print())
@@ -55,7 +55,7 @@ def create_api_app() -> FastAPI:
55
55
 
56
56
  startup_api_events.append(StartupAPIEvent(transmitted_api_data=transmitted_api_data))
57
57
 
58
- if settings.api_start_execute_operation_worker:
58
+ if settings.api_start_operation_executor_worker:
59
59
  raise_for_type(sqlalchemy_db, SQLAlchemyDB)
60
60
  startup_api_events.append(
61
61
  SafeRunWorkerStartupAPIEvent(
@@ -70,7 +70,7 @@ def create_api_app() -> FastAPI:
70
70
  )
71
71
  )
72
72
 
73
- if settings.api_start_create_scheduled_operation_worker:
73
+ if settings.api_start_scheduled_operation_creator_worker:
74
74
  raise_for_type(sqlalchemy_db, SQLAlchemyDB)
75
75
  startup_api_events.append(
76
76
  SafeRunWorkerStartupAPIEvent(
@@ -0,0 +1,14 @@
1
+ from fastapi import APIRouter
2
+
3
+ from src.api.const import APIErrorCodes, APIErrorSpecificationCodes
4
+ from src.api.schema.v1.out import APIErrorInfo
5
+
6
+ api_router = APIRouter()
7
+
8
+
9
+ @api_router.get("/", response_model=APIErrorInfo)
10
+ async def _():
11
+ return APIErrorInfo(
12
+ api_error_codes=APIErrorCodes.values_list(),
13
+ api_error_specification_codes=APIErrorSpecificationCodes.values_list()
14
+ )
@@ -1,3 +1,7 @@
1
1
  from fastapi import APIRouter
2
2
 
3
+ from src.api.router.v1 import get_api_error_info
4
+
3
5
  api_v1_main_router = APIRouter()
6
+
7
+ api_v1_main_router.include_router(get_api_error_info.api_router)
@@ -0,0 +1,6 @@
1
+ from arpakitlib.ar_fastapi_util import BaseSO
2
+
3
+
4
+ class APIErrorInfo(BaseSO):
5
+ api_error_codes: list[str] = []
6
+ api_error_specification_codes: list[str] = []
@@ -25,9 +25,9 @@ class Settings(SimpleSettings):
25
25
 
26
26
  api_create_story_log_before_response_in_handle_exception: bool = True
27
27
 
28
- api_start_execute_operation_worker: bool = False
28
+ api_start_operation_executor_worker: bool = False
29
29
 
30
- api_start_create_scheduled_operation_worker: bool = False
30
+ api_start_scheduled_operation_creator_worker: bool = False
31
31
 
32
32
  api_port: int | None = int("{API_PORT}") if "{API_PORT}".isdigit() else None
33
33
 
@@ -6,6 +6,4 @@ class OperationTypes(BaseOperationTypes):
6
6
 
7
7
 
8
8
  if __name__ == '__main__':
9
- print(f"OperationTypes (len={len(OperationTypes.values_list())})")
10
- for v in OperationTypes.values_list():
11
- print(f"- {v}")
9
+ OperationTypes.print()
@@ -1,13 +1,25 @@
1
- from datetime import timedelta
1
+ from datetime import timedelta, time
2
2
 
3
- from arpakitlib.ar_operation_execution_util import ScheduledOperation, every_timedelta_is_time_func
3
+ from arpakitlib.ar_operation_execution_util import ScheduledOperation, every_timedelta_is_time_func, \
4
+ between_different_times_is_time_func
4
5
  from arpakitlib.ar_sqlalchemy_model_util import BaseOperationTypes
5
6
 
6
7
  ALL_SCHEDULED_OPERATIONS = []
7
8
 
8
- healthcheck_scheduled_operation = ScheduledOperation(
9
+ healthcheck_1_scheduled_operation = ScheduledOperation(
9
10
  type=BaseOperationTypes.healthcheck_,
10
- input_data={},
11
- is_time_func=every_timedelta_is_time_func(td=timedelta(seconds=5))
11
+ input_data={"healthcheck_1": "healthcheck_1"},
12
+ is_time_func=every_timedelta_is_time_func(td=timedelta(seconds=15))
12
13
  )
13
- ALL_SCHEDULED_OPERATIONS.append(healthcheck_scheduled_operation)
14
+ ALL_SCHEDULED_OPERATIONS.append(healthcheck_1_scheduled_operation)
15
+
16
+ healthcheck_2_scheduled_operation = ScheduledOperation(
17
+ type=BaseOperationTypes.healthcheck_,
18
+ input_data={"healthcheck_2": "healthcheck_2"},
19
+ 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
+ ),
23
+ timeout_after_creation=timedelta(seconds=60)
24
+ )
25
+ ALL_SCHEDULED_OPERATIONS.append(healthcheck_2_scheduled_operation)
@@ -75,10 +75,14 @@ class BaseAPIErrorCodes(Enumeration):
75
75
  not_found = "NOT_FOUND"
76
76
 
77
77
 
78
+ class BaseAPIErrorSpecificationCodes(Enumeration):
79
+ pass
80
+
81
+
78
82
  class ErrorSO(BaseSO):
79
83
  has_error: bool = True
80
84
  error_code: str | None = None
81
- error_code_specification: str | None = None
85
+ error_specification_code: str | None = None
82
86
  error_description: str | None = None
83
87
  error_data: dict[str, Any] = {}
84
88
 
@@ -120,13 +124,13 @@ class APIException(fastapi.exceptions.HTTPException):
120
124
  *,
121
125
  status_code: int = starlette.status.HTTP_400_BAD_REQUEST,
122
126
  error_code: str | None = BaseAPIErrorCodes.unknown_error,
123
- error_code_specification: str | None = None,
127
+ error_specification_code: str | None = None,
124
128
  error_description: str | None = None,
125
129
  error_data: dict[str, Any] | None = None
126
130
  ):
127
131
  self.status_code = status_code
128
132
  self.error_code = error_code
129
- self.error_code_specification = error_code_specification
133
+ self.error_specification_code = error_specification_code
130
134
  self.error_description = error_description
131
135
  if error_data is None:
132
136
  error_data = {}
@@ -135,7 +139,7 @@ class APIException(fastapi.exceptions.HTTPException):
135
139
  self.error_so = ErrorSO(
136
140
  has_error=True,
137
141
  error_code=self.error_code,
138
- error_code_specification=self.error_code_specification,
142
+ error_specification_code=self.error_specification_code,
139
143
  error_description=self.error_description,
140
144
  error_data=self.error_data
141
145
  )
@@ -211,9 +215,9 @@ def create_handle_exception(
211
215
  if error_so.error_code:
212
216
  error_so.error_code = error_so.error_code.upper().replace(" ", "_").strip()
213
217
 
214
- if error_so.error_code_specification:
215
- error_so.error_code_specification = (
216
- error_so.error_code_specification.upper().replace(" ", "_").strip()
218
+ if error_so.error_specification_code:
219
+ error_so.error_specification_code = (
220
+ error_so.error_specification_code.upper().replace(" ", "_").strip()
217
221
  )
218
222
 
219
223
  if _need_exc_info:
@@ -588,7 +592,7 @@ def simple_api_router_for_testing():
588
592
  async def _():
589
593
  raise APIException(
590
594
  error_code="raise_fake_exception_2",
591
- error_code_specification="raise_fake_exception_2",
595
+ error_specification_code="raise_fake_exception_2",
592
596
  error_description="raise_fake_exception_2"
593
597
  )
594
598
 
@@ -16,6 +16,7 @@ from sqlalchemy.orm import Session
16
16
  from arpakitlib.ar_base_worker_util import BaseWorker
17
17
  from arpakitlib.ar_datetime_util import now_utc_dt
18
18
  from arpakitlib.ar_dict_util import combine_dicts
19
+ from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
19
20
  from arpakitlib.ar_sqlalchemy_model_util import OperationDBM, StoryLogDBM, BaseOperationTypes
20
21
  from arpakitlib.ar_sqlalchemy_util import SQLAlchemyDB
21
22
 
@@ -292,6 +293,7 @@ class ScheduledOperation(BaseModel):
292
293
  type: str
293
294
  input_data: dict[str, Any] | None = None
294
295
  is_time_func: Callable[[], bool]
296
+ timeout_after_creation: timedelta | None = None
295
297
 
296
298
 
297
299
  class ScheduledOperationCreatorWorker(BaseWorker):
@@ -315,6 +317,8 @@ class ScheduledOperationCreatorWorker(BaseWorker):
315
317
  self.sqlalchemy_db.init()
316
318
 
317
319
  def sync_run(self):
320
+ timeout = None
321
+
318
322
  for scheduled_operation in self.scheduled_operations:
319
323
  if not scheduled_operation.is_time_func():
320
324
  continue
@@ -327,10 +331,22 @@ class ScheduledOperationCreatorWorker(BaseWorker):
327
331
  session.commit()
328
332
  session.refresh(operation_dbm)
329
333
 
330
- def async_on_startup(self):
334
+ if scheduled_operation.timeout_after_creation is not None:
335
+ if timeout is not None:
336
+ if scheduled_operation.timeout_after_creation > timeout:
337
+ timeout = scheduled_operation.timeout_after_creation
338
+ else:
339
+ timeout = scheduled_operation.timeout_after_creation
340
+
341
+ if timeout is not None:
342
+ sync_safe_sleep(n=timeout)
343
+
344
+ async def async_on_startup(self):
331
345
  self.sqlalchemy_db.init()
332
346
 
333
- def async_run(self):
347
+ async def async_run(self):
348
+ timeout: timedelta | None = None
349
+
334
350
  for scheduled_operation in self.scheduled_operations:
335
351
  if not scheduled_operation.is_time_func():
336
352
  continue
@@ -343,6 +359,16 @@ class ScheduledOperationCreatorWorker(BaseWorker):
343
359
  session.commit()
344
360
  session.refresh(operation_dbm)
345
361
 
362
+ if scheduled_operation.timeout_after_creation is not None:
363
+ if timeout is not None:
364
+ if scheduled_operation.timeout_after_creation > timeout:
365
+ timeout = scheduled_operation.timeout_after_creation
366
+ else:
367
+ timeout = scheduled_operation.timeout_after_creation
368
+
369
+ if timeout is not None:
370
+ await async_safe_sleep(n=timeout)
371
+
346
372
 
347
373
  def every_timedelta_is_time_func(*, td: timedelta) -> Callable:
348
374
  last_now_utc_dt = now_utc_dt()
@@ -35,8 +35,8 @@ class SimpleSettings(BaseSettings):
35
35
  return v
36
36
 
37
37
  @property
38
- def is_mode_type_dev(self) -> bool:
39
- return self.mode_type == self.ModeTypes.dev
38
+ def is_mode_type_not_prod(self) -> bool:
39
+ return self.mode_type == self.ModeTypes.not_prod
40
40
 
41
41
  @property
42
42
  def is_mode_type_prod(self) -> bool:
@@ -45,3 +45,10 @@ class SimpleSettings(BaseSettings):
45
45
  @classmethod
46
46
  def generate_env_example(cls) -> str:
47
47
  return generate_env_example(settings_class=cls)
48
+
49
+ @classmethod
50
+ def save_env_example_to_file(cls, filepath: str) -> str:
51
+ env_example = cls.generate_env_example()
52
+ with open(filepath, mode="w") as f:
53
+ f.write(env_example)
54
+ return env_example
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.7.44
3
+ Version: 1.7.46
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -6,7 +6,7 @@ arpakitlib/_arpakit_project_template/AUTHOR.md,sha256=d5QAx-1vbHfYYABpNQ0Yfjaxsw
6
6
  arpakitlib/_arpakit_project_template/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
7
7
  arpakitlib/_arpakit_project_template/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
8
8
  arpakitlib/_arpakit_project_template/README.md,sha256=EEoHPZrJQtLS3fKD3JvoPhkGhjfuDihxK5fmAGwihCQ,65
9
- arpakitlib/_arpakit_project_template/example.env,sha256=p5qdXuMHudefuGVkf1dcqSDlS3Xx2TjvebeufaROMOE,439
9
+ arpakitlib/_arpakit_project_template/example.env,sha256=WGjeWQDQBZOh5c1jef6U8D7xxxz4dZAHWqBP8uEQAHs,464
10
10
  arpakitlib/_arpakit_project_template/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  arpakitlib/_arpakit_project_template/manage/docker_ps.sh,sha256=uwm8vHgeuNLCOn0o9hgP_uc-PUkS9FwLyzZh6ItZ3do,15
12
12
  arpakitlib/_arpakit_project_template/manage/docker_ps_a.sh,sha256=nOQejihYlzstg9oROvYwHIsSLt2Sw0DWQEeT3GBaBNs,18
@@ -48,6 +48,7 @@ arpakitlib/_arpakit_project_template/manage/poetry_show.sh,sha256=pclR9efCNrrGyJ
48
48
  arpakitlib/_arpakit_project_template/manage/poetry_show_arpakitlib.sh,sha256=5ibH12wGYc-Cj8zl5abtI_hLVSW0o4ofktt-w7I6wQo,37
49
49
  arpakitlib/_arpakit_project_template/manage/poetry_update.sh,sha256=ZtoXIC4Qq7PMTDxQMwUxvkYC6lTc5LC23ILTywWbyoU,164
50
50
  arpakitlib/_arpakit_project_template/manage/poetry_update_arpakitlib.sh,sha256=hh7vj-yKgKqLfaGb8cjsJ_NTa7fBtE4s3yxzte4D8bw,163
51
+ arpakitlib/_arpakit_project_template/manage/requirements.txt,sha256=CGgX4eDsmuQN9UP0KZd4J0EeTIJVpdoC6_DyF1U6bco,15651
51
52
  arpakitlib/_arpakit_project_template/manage/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
53
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_1.py,sha256=WdE1IWyObxVUT9jE3qgNMaFXXkKV6nUI0ZToLT1uhdk,155
53
54
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_2.py,sha256=WdE1IWyObxVUT9jE3qgNMaFXXkKV6nUI0ZToLT1uhdk,155
@@ -59,7 +60,7 @@ arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_7.py,sha256=WdE1IWyO
59
60
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_8.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
61
  arpakitlib/_arpakit_project_template/manage/sandbox/sandbox_9.sh,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
62
  arpakitlib/_arpakit_project_template/manage/settings_check.py,sha256=DeOGoWXgk2_VXpCIFbQgf1k2zcnv4hOLWIVc5BDv80c,260
62
- arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py,sha256=pRTr6SzBJxDUaxTXZgLJr7rJawHyvpyTJbrJSZW0hEc,330
63
+ arpakitlib/_arpakit_project_template/manage/settings_generate_env_example.py,sha256=BLLeF4JenexXbO1mMj8X-lB81TG3-QTmN4DjPYEUI8o,288
63
64
  arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_check_conn.py,sha256=3Q4QfvFVBZsbMMH5yr6v3a6v6UjQuIEIujlxGpvykNA,190
64
65
  arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_init.py,sha256=FqKVuakafDndHKBsyPcSowhss6MZb0Soy5oREUPVLUw,184
65
66
  arpakitlib/_arpakit_project_template/manage/sqlalchemy_db_reinit.py,sha256=twBWh64WU-sqHUte8v9ZJUZ_bCsFABExgIWLOnfLu4w,186
@@ -72,31 +73,32 @@ arpakitlib/_arpakit_project_template/src/additional_model/additional_model.py,sh
72
73
  arpakitlib/_arpakit_project_template/src/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
74
  arpakitlib/_arpakit_project_template/src/api/asgi.py,sha256=a5UBxOyNC8NG3E0ayhiDo3t5tPoB3WtOf2gbZJFWBAA,74
74
75
  arpakitlib/_arpakit_project_template/src/api/auth.py,sha256=Ljq_VjjiAaW3HEzq60nkSI-HkHfuv6j5-8Q6Qs8V9bU,261
75
- arpakitlib/_arpakit_project_template/src/api/const.py,sha256=ttbzJdOUZoAngR5naFubXjaI3ED06051HGpXZFpDPV0,178
76
- arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=mqEg3MV_EQQI2RhtpRu0ElWZ1vo_F7iRYqAvk88qSJo,4500
76
+ arpakitlib/_arpakit_project_template/src/api/const.py,sha256=7d4qD5hedqr7QxVzbfsA7E1bNZn2Pm2U8joXGtpANu0,287
77
+ arpakitlib/_arpakit_project_template/src/api/create_api_app.py,sha256=JQMzbvdu6Vnl8zrQFFkOTNKmqj0tMvDEz5JRVnMJlf4,4502
77
78
  arpakitlib/_arpakit_project_template/src/api/event.py,sha256=58wCVyVSIe_kydWi44M0Wvp7bTnV8xvO30gMXzjbFYc,750
78
79
  arpakitlib/_arpakit_project_template/src/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
80
  arpakitlib/_arpakit_project_template/src/api/router/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
- arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=7MnhMwhmkYlbtvhmprXJ8nfs_iOPYBluwhcef5e_EBY,64
81
+ arpakitlib/_arpakit_project_template/src/api/router/v1/get_api_error_info.py,sha256=aq_AXaJAz335shcPhUvoPXgXSk_KnbFztBCEXaI7UWE,402
82
+ arpakitlib/_arpakit_project_template/src/api/router/v1/main_router.py,sha256=9vhW_qzBuBV0rl4X8iP85ZF8K0xv-ughO34JNAG8DHc,180
81
83
  arpakitlib/_arpakit_project_template/src/api/schema/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
84
  arpakitlib/_arpakit_project_template/src/api/schema/v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
85
  arpakitlib/_arpakit_project_template/src/api/schema/v1/in_.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
+ arpakitlib/_arpakit_project_template/src/api/schema/v1/out.py,sha256=v5MDcwcHPEbdUEJqC7lzLhI4n8LRfQRcyRKr_C4xSN8,162
85
87
  arpakitlib/_arpakit_project_template/src/api/start_api_for_dev.py,sha256=BwROGTR8Hm1ewx_Z0k8HXeql4RIItCdCtP_hmhTT_PM,344
86
88
  arpakitlib/_arpakit_project_template/src/api/transmitted_api_data.py,sha256=YtpATqzN216e76W5QOuzN-Vo6343PVDiHpKWYQ6oqyU,278
87
89
  arpakitlib/_arpakit_project_template/src/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
90
  arpakitlib/_arpakit_project_template/src/business_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
89
91
  arpakitlib/_arpakit_project_template/src/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
92
  arpakitlib/_arpakit_project_template/src/core/const.py,sha256=CZZew674y7LhCAlYhvuF5cV4Zb9nQ17j2Tcuj2GEBf4,1232
91
- arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=Rg90TaiilxSxqvfeqrFeZNIXxrvfWgvwYME9ErHJ200,2058
93
+ arpakitlib/_arpakit_project_template/src/core/settings.py,sha256=O3uVuw9TSSIR2R32EWALAuUK05B6ufdWHl0LKVOuY98,2060
92
94
  arpakitlib/_arpakit_project_template/src/core/util.py,sha256=J1_AiI4DW_VB8ldLNATP6mjxz254CSxceGcqUbT0SVU,2006
93
95
  arpakitlib/_arpakit_project_template/src/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
96
  arpakitlib/_arpakit_project_template/src/db/sqlalchemy_model.py,sha256=nXtayUkBaVb6tWx5qJgXZLbLOTVAjnSLpSDxBm7yZLc,234
95
97
  arpakitlib/_arpakit_project_template/src/db/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
98
  arpakitlib/_arpakit_project_template/src/operation_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
- arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=4wOXu1042rDeNMe0KhMEhRVtJajQfoYMeqqaQ_UICkk,287
99
+ arpakitlib/_arpakit_project_template/src/operation_execution/const.py,sha256=HjupGEDUWVijQlbzxZPI9vBbAVOETUYzYU9pdnc9IcI,176
98
100
  arpakitlib/_arpakit_project_template/src/operation_execution/operation_executor.py,sha256=5sZpn3tVxnmcuIVRD5sbBhiMY5SAqPCc4tHzoNzDe4c,619
99
- arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=slgfIZikNcTPchjb8hxpf1aGCqlN0Q4VO-LxbptNOCA,484
101
+ arpakitlib/_arpakit_project_template/src/operation_execution/scheduled_operations.py,sha256=hBPZIOJAX7ym54s2tJ2QRky15FqqDF9r4yTr8Nh2YqI,985
100
102
  arpakitlib/_arpakit_project_template/src/operation_execution/start_operation_executor_for_dev_.py,sha256=N-X3kvjQZeEDxp2Z7DDrr4hR-wR9LmFMLPAA8tzo87A,589
101
103
  arpakitlib/_arpakit_project_template/src/operation_execution/start_scheduled_operation_creator_for_dev.py,sha256=RyHCafGTJaY-o3mgt7MReqgJ2txoBDhhsFzrjRiZWe4,574
102
104
  arpakitlib/_arpakit_project_template/src/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -141,7 +143,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
141
143
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
142
144
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
143
145
  arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
144
- arpakitlib/ar_fastapi_util.py,sha256=HOn_jpi4ruH11m8XGiFpyvUZmAED7z31-CdL-wXvjK8,24119
146
+ arpakitlib/ar_fastapi_util.py,sha256=hPJwvxVMo9AtMoFLTlvxhFgP6pavO_haiCQOK8-dSWg,24181
145
147
  arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
146
148
  arpakitlib/ar_file_util.py,sha256=07xCF7paAUP2JUyfpeX0l3N1oCSma7qAcBmrCIZVi3g,452
147
149
  arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
@@ -156,12 +158,12 @@ arpakitlib/ar_logging_util.py,sha256=Gyd7B9k0glIXPm6dASiigWLq9LC9lw6vhXTCeWpY5PY
156
158
  arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
157
159
  arpakitlib/ar_need_type_util.py,sha256=xq5bbAXJG-93CRVZUcLW0ZdM22rj-ZUW17C5hX_5grg,1699
158
160
  arpakitlib/ar_openai_api_client_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9fE-DdYbu7Wc,1215
159
- arpakitlib/ar_operation_execution_util.py,sha256=EZMQbjvp3EDFEfUYAdRV7_qtdqIW-qJrmVWpv5plxas,13874
161
+ arpakitlib/ar_operation_execution_util.py,sha256=EL7X7vN2GlOjlps3lCNoJPOP5lyqpbz4VTKmOWz7gVE,14948
160
162
  arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy4,3447
161
163
  arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
162
164
  arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
163
165
  arpakitlib/ar_schedule_uust_api_client_util.py,sha256=JD-hRUQSs-euK0zq9w_4QUfGO00yWM08gllWUVKTtHc,6109
164
- arpakitlib/ar_settings_util.py,sha256=95SaC8ROUoFFIZvGsOUmz4OEyn-KospL_EqjFYAJs9U,1231
166
+ arpakitlib/ar_settings_util.py,sha256=gnuC8rs7IkyXkRWurrV-K0jObDMMxeH_1NdfJLkekHA,1473
165
167
  arpakitlib/ar_sleep_util.py,sha256=OaLtRaJQWMkGjfj_mW1RB2P4RaSWsAIH8LUoXqsH0zM,1061
166
168
  arpakitlib/ar_sqlalchemy_model_util.py,sha256=TFGOAgpxcnBV_u7yZrLCkf1ldlB4Of8vIRsyk9kyP5c,4987
167
169
  arpakitlib/ar_sqlalchemy_util.py,sha256=Hcg1THrDsSR_-8dsY1CG3NWPEv0FqCbkPXFXLtjlSJ0,4207
@@ -170,9 +172,9 @@ arpakitlib/ar_str_util.py,sha256=oCEtQ_TTn35OEz9jCNLjbhopq76JmaifD_iYR-nEJJ4,214
170
172
  arpakitlib/ar_type_util.py,sha256=e6Ch8I_B3FMJMj-fiZvTwtGde4hxSa48fGt5g8RlV6I,2301
171
173
  arpakitlib/ar_yookassa_api_client_util.py,sha256=sh4fcUkAkdOetFn9JYoTvjcSXP-M1wU04KEY-ECLfLg,5137
172
174
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
173
- arpakitlib-1.7.44.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
174
- arpakitlib-1.7.44.dist-info/METADATA,sha256=9Rsxl80OE2FYpC5fZKMwsvGOHbxY3o0t7djohbxNnzs,2824
175
- arpakitlib-1.7.44.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
176
- arpakitlib-1.7.44.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
177
- arpakitlib-1.7.44.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
178
- arpakitlib-1.7.44.dist-info/RECORD,,
175
+ arpakitlib-1.7.46.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
176
+ arpakitlib-1.7.46.dist-info/METADATA,sha256=QFhSuPk-zI6tFcm5u0DM1SQO-EtJnWOxjsyHnWwLDIE,2824
177
+ arpakitlib-1.7.46.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
178
+ arpakitlib-1.7.46.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
179
+ arpakitlib-1.7.46.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
180
+ arpakitlib-1.7.46.dist-info/RECORD,,