fastapi-rtk 1.0.19__py3-none-any.whl → 1.0.20__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.
- fastapi_rtk/__init__.py +4 -1
- fastapi_rtk/_version.py +1 -1
- fastapi_rtk/api/model_rest_api.py +195 -117
- fastapi_rtk/bases/__init__.py +2 -0
- fastapi_rtk/bases/file_manager.py +82 -10
- fastapi_rtk/file_managers/file_manager.py +1 -0
- fastapi_rtk/file_managers/image_manager.py +1 -0
- fastapi_rtk/file_managers/s3_file_manager.py +30 -13
- fastapi_rtk/file_managers/s3_image_manager.py +5 -0
- fastapi_rtk/lang/messages.pot +33 -28
- fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo +0 -0
- fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po +33 -26
- fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo +0 -0
- fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po +31 -26
- fastapi_rtk/setting.py +8 -0
- fastapi_rtk/utils/__init__.py +4 -3
- fastapi_rtk/utils/async_task_runner.py +27 -2
- fastapi_rtk/utils/{prettify_dict.py → formatter.py} +23 -1
- fastapi_rtk/utils/run_utils.py +3 -2
- {fastapi_rtk-1.0.19.dist-info → fastapi_rtk-1.0.20.dist-info}/METADATA +1 -1
- {fastapi_rtk-1.0.19.dist-info → fastapi_rtk-1.0.20.dist-info}/RECORD +24 -24
- {fastapi_rtk-1.0.19.dist-info → fastapi_rtk-1.0.20.dist-info}/WHEEL +0 -0
- {fastapi_rtk-1.0.19.dist-info → fastapi_rtk-1.0.20.dist-info}/entry_points.txt +0 -0
- {fastapi_rtk-1.0.19.dist-info → fastapi_rtk-1.0.20.dist-info}/licenses/LICENSE +0 -0
|
@@ -5,7 +5,7 @@ import inspect
|
|
|
5
5
|
import traceback as tb
|
|
6
6
|
import typing
|
|
7
7
|
|
|
8
|
-
from .
|
|
8
|
+
from .formatter import prettify_dict
|
|
9
9
|
|
|
10
10
|
__all__ = ["AsyncTaskRunner"]
|
|
11
11
|
|
|
@@ -180,13 +180,15 @@ class AsyncTaskRunner:
|
|
|
180
180
|
contextvars.ContextVar("_runner_stack", default=None)
|
|
181
181
|
)
|
|
182
182
|
|
|
183
|
-
def __init__(self, run_tasks_even_if_exception=False):
|
|
183
|
+
def __init__(self, id: str | None = None, run_tasks_even_if_exception=False):
|
|
184
184
|
"""
|
|
185
185
|
Initializes the AsyncTaskRunner.
|
|
186
186
|
|
|
187
187
|
Args:
|
|
188
|
+
id (str | None, optional): An optional identifier for the runner instance. Defaults to None.
|
|
188
189
|
run_tasks_even_if_exception (bool, optional): Whether to run tasks even if an exception occurs in the context. Defaults to False.
|
|
189
190
|
"""
|
|
191
|
+
self.id = id
|
|
190
192
|
self.run_tasks_even_if_exception = run_tasks_even_if_exception
|
|
191
193
|
|
|
192
194
|
@typing.overload
|
|
@@ -287,6 +289,29 @@ class AsyncTaskRunner:
|
|
|
287
289
|
stack = cls._get_current_runner_stack("get_current_runner")
|
|
288
290
|
return stack[-1]
|
|
289
291
|
|
|
292
|
+
@classmethod
|
|
293
|
+
def get_runner(cls, id: str):
|
|
294
|
+
"""
|
|
295
|
+
Retrieves the AsyncTaskRunner instance with the specified ID from the context stack.
|
|
296
|
+
|
|
297
|
+
Args:
|
|
298
|
+
id (str): The ID of the AsyncTaskRunner to retrieve.
|
|
299
|
+
|
|
300
|
+
Raises:
|
|
301
|
+
RuntimeError: If called outside of a context.
|
|
302
|
+
ValueError: If no AsyncTaskRunner with the specified ID is found.
|
|
303
|
+
|
|
304
|
+
Returns:
|
|
305
|
+
AsyncTaskRunner: The AsyncTaskRunner instance with the specified ID.
|
|
306
|
+
"""
|
|
307
|
+
stack = cls._get_current_runner_stack("get_runner_by_id")
|
|
308
|
+
for runner in reversed(stack):
|
|
309
|
+
if runner.id == id:
|
|
310
|
+
return runner
|
|
311
|
+
raise ValueError(
|
|
312
|
+
f"No AsyncTaskRunner with id '{id}' found in the current context."
|
|
313
|
+
)
|
|
314
|
+
|
|
290
315
|
async def __aenter__(self):
|
|
291
316
|
self._handle_enter_stack()
|
|
292
317
|
return self
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import math
|
|
1
2
|
import typing
|
|
2
3
|
|
|
3
|
-
__all__ = ["prettify_dict"]
|
|
4
|
+
__all__ = ["prettify_dict", "format_file_size"]
|
|
4
5
|
|
|
5
6
|
|
|
6
7
|
def prettify_dict(d: typing.Dict[str, typing.Any], indent: int = 0) -> str:
|
|
@@ -22,3 +23,24 @@ def prettify_dict(d: typing.Dict[str, typing.Any], indent: int = 0) -> str:
|
|
|
22
23
|
else:
|
|
23
24
|
result += f"{value}\n"
|
|
24
25
|
return result
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def format_file_size(size_bytes: int):
|
|
29
|
+
"""
|
|
30
|
+
Format a file size in bytes to a human-readable string.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
size_bytes (int): The file size in bytes.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
str: The formatted file size.
|
|
37
|
+
"""
|
|
38
|
+
if size_bytes == 0:
|
|
39
|
+
return "0B"
|
|
40
|
+
size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB")
|
|
41
|
+
i = int(math.floor(math.log(size_bytes, 1024)))
|
|
42
|
+
p = math.pow(1024, i)
|
|
43
|
+
s = round(size_bytes / p, 2)
|
|
44
|
+
if s.is_integer():
|
|
45
|
+
s = int(s)
|
|
46
|
+
return f"{s} {size_name[i]}"
|
fastapi_rtk/utils/run_utils.py
CHANGED
|
@@ -6,7 +6,7 @@ from concurrent.futures import ThreadPoolExecutor
|
|
|
6
6
|
|
|
7
7
|
from fastapi.concurrency import run_in_threadpool
|
|
8
8
|
|
|
9
|
-
from .
|
|
9
|
+
from .formatter import prettify_dict
|
|
10
10
|
|
|
11
11
|
P = typing.ParamSpec("P")
|
|
12
12
|
T = typing.TypeVar("T")
|
|
@@ -149,7 +149,8 @@ def run_function_in_threadpool(
|
|
|
149
149
|
with ThreadPoolExecutor(
|
|
150
150
|
max_workers=max_workers, **(thread_pool_kwargs or {})
|
|
151
151
|
) as executor:
|
|
152
|
-
|
|
152
|
+
ctx = contextvars.copy_context()
|
|
153
|
+
future = executor.submit(ctx.run, func, *args, **kwargs)
|
|
153
154
|
return future.result()
|
|
154
155
|
|
|
155
156
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastapi-rtk
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.20
|
|
4
4
|
Summary: A package that provides a set of tools to build a FastAPI application with a Class-Based CRUD API.
|
|
5
5
|
Project-URL: Homepage, https://codeberg.org/datatactics/fastapi-rtk
|
|
6
6
|
Project-URL: Issues, https://codeberg.org/datatactics/fastapi-rtk/issues
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
fastapi_rtk/__init__.py,sha256=
|
|
2
|
-
fastapi_rtk/_version.py,sha256=
|
|
1
|
+
fastapi_rtk/__init__.py,sha256=TGDmH62gymFCC6yFdAsiVHcdOvy4_tdDCzAK4WzEHH8,6264
|
|
2
|
+
fastapi_rtk/_version.py,sha256=D3FIR1OP9p54JyJSpU5wDfDWvaAjk2k-IH5FzjX_kCA,23
|
|
3
3
|
fastapi_rtk/apis.py,sha256=6X_Lhl98m7lKrDRybg2Oe24pLFLJ29eCOQSwCAvpKhY,172
|
|
4
4
|
fastapi_rtk/config.py,sha256=9PZF9E5i1gxmnsZEprZZKxVHSk0dFEklJSplX9NEqdo,14036
|
|
5
5
|
fastapi_rtk/const.py,sha256=sEj_cYeerj9pVwbCu0k5Sy1EYpdr1EHzUjqqbnporgc,4905
|
|
@@ -16,12 +16,12 @@ fastapi_rtk/mixins.py,sha256=78RqwrRJFOz6KAxf-GSNOmRdr7R3b-ws7OIENYlzRQQ,238
|
|
|
16
16
|
fastapi_rtk/models.py,sha256=lQSqe-r0H7jWBVdqXjEi_bNL1cGQr0YWnyI1ToS_coc,178
|
|
17
17
|
fastapi_rtk/routers.py,sha256=5gMGyH4Any9TwB3Fz23QDkmrX8MouzCxVgoAIcBqnTI,18988
|
|
18
18
|
fastapi_rtk/schemas.py,sha256=mdIX93QRaQBLrQz-kBvG5wyKoi8H6OQpFuTBO9-mCK4,17894
|
|
19
|
-
fastapi_rtk/setting.py,sha256=
|
|
19
|
+
fastapi_rtk/setting.py,sha256=mLIm-6DoVSEiXn2VUT-JByNVXujeIlyBFBUlPKTw7ys,19753
|
|
20
20
|
fastapi_rtk/types.py,sha256=-LPnTIbHvqJW81__gab3EWrhjNmznHhptz0BtXkEAHQ,3612
|
|
21
21
|
fastapi_rtk/version.py,sha256=D2cmQf2LNeHOiEfcNzVOOfcAmuLvPEmGEtZv5G54D0c,195
|
|
22
22
|
fastapi_rtk/api/__init__.py,sha256=MwFR7HHppnhbjZGg3sOdQ6nqy9uxnHHXvicpswNFMNA,245
|
|
23
23
|
fastapi_rtk/api/base_api.py,sha256=42I9v3b25lqxNAMDGEtajA5-btIDSyUWF0xMDgGkA8c,8078
|
|
24
|
-
fastapi_rtk/api/model_rest_api.py,sha256=
|
|
24
|
+
fastapi_rtk/api/model_rest_api.py,sha256=B29CA1pOoCyoyKbknPmnIfgbYBLAWKD8pRdBlPh0RA4,111332
|
|
25
25
|
fastapi_rtk/auth/__init__.py,sha256=iX7O41NivBYDfdomEaqm4lUx9KD17wI4g3EFLF6kUTw,336
|
|
26
26
|
fastapi_rtk/auth/auth.py,sha256=F2qZoR7go_7FnvVJrDxUCd6vtRz5XW8yyOv143MWPts,20664
|
|
27
27
|
fastapi_rtk/auth/hashers/__init__.py,sha256=uBThFj2VPPSMSioxYTktNiM4-mVgtDAjTpKA3ZzWxxs,110
|
|
@@ -58,9 +58,9 @@ fastapi_rtk/backends/sqla/extensions/audit/types.py,sha256=2RuEvmq8CeVDOY0T_AtS0
|
|
|
58
58
|
fastapi_rtk/backends/sqla/extensions/geoalchemy2/__init__.py,sha256=d8ODg17-NEPqyjNpDPlLANEIoYTliX2VkDFW2os1EYA,1814
|
|
59
59
|
fastapi_rtk/backends/sqla/extensions/geoalchemy2/filters.py,sha256=L1WgO7UzWuAgsf93iK7mmsL89DMUaRGUCEKX7CM7kz8,3846
|
|
60
60
|
fastapi_rtk/backends/sqla/extensions/geoalchemy2/geometry_converter.py,sha256=sckNoxPE8ApKCLgBZzE_2dokXrM6mIXvMguHZvyJzIM,3891
|
|
61
|
-
fastapi_rtk/bases/__init__.py,sha256=
|
|
61
|
+
fastapi_rtk/bases/__init__.py,sha256=Te9rcmi1AGG72iZCzGyvc5qEIVyIexN7ViFdb59a2RA,494
|
|
62
62
|
fastapi_rtk/bases/db.py,sha256=D27BhF89J0OaLHjALDCa85eNf35lBaTz6VV7EDa4wuM,18711
|
|
63
|
-
fastapi_rtk/bases/file_manager.py,sha256=
|
|
63
|
+
fastapi_rtk/bases/file_manager.py,sha256=A5Tt_BYQQc3cNYzWxJ5tCKcQe3HOxhXcrBoyWx6wtnc,11557
|
|
64
64
|
fastapi_rtk/bases/filter.py,sha256=XmWTcLaIcBj9pKF1PMAKdwSnZNpdT8Df3uLeUIOGUDE,1840
|
|
65
65
|
fastapi_rtk/bases/interface.py,sha256=Cq9Duxa3w-tw342P424h88fc0_X1DoxCdTa3rAN-6jM,45380
|
|
66
66
|
fastapi_rtk/bases/model.py,sha256=nUZf0AVs0Mzqh2u_ALiRNYN1bfOU9PzYLvEFHDQ57Y0,1692
|
|
@@ -85,40 +85,40 @@ fastapi_rtk/cli/commands/db/templates/fastapi-multidb/alembic.ini.mako,sha256=xm
|
|
|
85
85
|
fastapi_rtk/cli/commands/db/templates/fastapi-multidb/env.py,sha256=KXb0a5c_3zutlTgyTP6MofCL0jinixLZMdG5aYd0E_U,7529
|
|
86
86
|
fastapi_rtk/cli/commands/db/templates/fastapi-multidb/script.py.mako,sha256=o02Ul3GmWdWkOiLZiKInBcAuCN3OjgxCzdj5Y1gvgVY,1324
|
|
87
87
|
fastapi_rtk/file_managers/__init__.py,sha256=RZzSSUDq_cIv4MeVePRBGR0mbEiJua7WKccfE6IAawk,198
|
|
88
|
-
fastapi_rtk/file_managers/file_manager.py,sha256=
|
|
89
|
-
fastapi_rtk/file_managers/image_manager.py,sha256=
|
|
90
|
-
fastapi_rtk/file_managers/s3_file_manager.py,sha256=
|
|
91
|
-
fastapi_rtk/file_managers/s3_image_manager.py,sha256=
|
|
88
|
+
fastapi_rtk/file_managers/file_manager.py,sha256=eEoaoh1pw0negbNNo7z8adijwCR_Y6ZWlbIeWK-9ZB0,2668
|
|
89
|
+
fastapi_rtk/file_managers/image_manager.py,sha256=4Tq1m0cdEYXGPJdjXJoEJWERs1vL6Ejfwyd_MBHp71U,628
|
|
90
|
+
fastapi_rtk/file_managers/s3_file_manager.py,sha256=Rb5rEet2R72VFUHMPITJugVLhsTjxVh4oqrL7TjKZVo,6424
|
|
91
|
+
fastapi_rtk/file_managers/s3_image_manager.py,sha256=FBwdGu9FWDPjrUQVTvTyZNnyZvS5-hd-fkxQLOsLa80,533
|
|
92
92
|
fastapi_rtk/lang/__init__.py,sha256=zJejpbIXx1O-nSuWwrCYgr5f5EtwjYW6kh8jRy_Yo0U,68
|
|
93
93
|
fastapi_rtk/lang/babel.cfg,sha256=ahkzg8wUKyl9G9UqkgAyWEtRlCnaWkjStM5c4FhKuUE,18
|
|
94
94
|
fastapi_rtk/lang/lazy_text.py,sha256=UnCBmauuIQe5_hDoEnItyl3u6Hz5NnXAV-AAU3GpfKU,3888
|
|
95
|
-
fastapi_rtk/lang/messages.pot,sha256=
|
|
95
|
+
fastapi_rtk/lang/messages.pot,sha256=wepxsZG8S9k5sAsBBDLeC9E9LQOfDT9ZpkUBoDeSOZI,5807
|
|
96
96
|
fastapi_rtk/lang/babel/__init__.py,sha256=Pa1gbGSJbeMBcEMsPjvvtjl28cVy0VzWYiCSf5RsYzQ,101
|
|
97
97
|
fastapi_rtk/lang/babel/cli.py,sha256=YyjguB--oPEKYP_i3FdEour1gT9AgvkXODgGrpLTWCY,1105
|
|
98
98
|
fastapi_rtk/lang/babel/config.py,sha256=aKXlIRjDo0mg05widqRBA25ZgUXT5ECbxJV23jHaCOI,382
|
|
99
|
-
fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo,sha256=
|
|
100
|
-
fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po,sha256=
|
|
101
|
-
fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo,sha256=
|
|
102
|
-
fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po,sha256=
|
|
99
|
+
fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.mo,sha256=IbhJFhW178IXf2x6vdjHfe_zaVv4Bmqx47rTjkpVmTs,2976
|
|
100
|
+
fastapi_rtk/lang/translations/de/LC_MESSAGES/messages.po,sha256=8Pk2BIvZ-59XO0lbGGZC5iFREapCwDnTG4tQEz1KRr0,7277
|
|
101
|
+
fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.mo,sha256=WpjjrlYvMW9eIDkaR4TsxlkNfjBt_MvMmB-pfLxZi2g,2782
|
|
102
|
+
fastapi_rtk/lang/translations/en/LC_MESSAGES/messages.po,sha256=qxKDx7Q0xgKe48w9pH1MGFWVY-c7oNMrWCASKT4PTNc,7017
|
|
103
103
|
fastapi_rtk/security/__init__.py,sha256=XkYZ_GO2opdyQS_LJwbCH1C6SUkNfLUvLkpFhcO7ZlI,86
|
|
104
104
|
fastapi_rtk/security/sqla/__init__.py,sha256=qKh1mGQezDtMzvRzxzfHZRyKVaks-O7PXrOx16ekSZA,88
|
|
105
105
|
fastapi_rtk/security/sqla/apis.py,sha256=8Qtd1G73i2TaA9Euo63naaB8d_I9r4EHL8DWtWNJEfs,10699
|
|
106
106
|
fastapi_rtk/security/sqla/models.py,sha256=rEXpbljTMlTkiDp0VIxRXant8xN-WTjpqgQkr-ElXeM,7865
|
|
107
107
|
fastapi_rtk/security/sqla/security_manager.py,sha256=ui0g2cH8Z-YjDuqszcstyj6Li8U4IpuVV4bAVaD69Lc,31395
|
|
108
|
-
fastapi_rtk/utils/__init__.py,sha256=
|
|
109
|
-
fastapi_rtk/utils/async_task_runner.py,sha256=
|
|
108
|
+
fastapi_rtk/utils/__init__.py,sha256=_FbWJg5OwHqHdoDfJnGcp54oVKIvAMwEkfOOrsv0-Tw,1891
|
|
109
|
+
fastapi_rtk/utils/async_task_runner.py,sha256=ISKDmF8SJS9sVAwrGEzvUwL7D_c0mmTiYi3GJ3J67kA,16473
|
|
110
110
|
fastapi_rtk/utils/class_factory.py,sha256=jlVw8yCh-tYsMnR5Hm8fgxtL0kvXwnhe6DPJA1sUh7k,598
|
|
111
111
|
fastapi_rtk/utils/csv_json_converter.py,sha256=7szrPiB7DrK5S-s2GaHVCmEP9_OXk9RFwbZmRtAKM5A,14036
|
|
112
112
|
fastapi_rtk/utils/deep_merge.py,sha256=PHtKJgXfCngOBGVliX9aVlEFcwCxr-GlzU-w6vjgAIs,2426
|
|
113
113
|
fastapi_rtk/utils/extender_mixin.py,sha256=eu22VAZJIf-r_uD-zVn_2IzvknfuUkmEHn9oo-0KU0k,1388
|
|
114
114
|
fastapi_rtk/utils/flask_appbuilder_utils.py,sha256=nPLQIczDZgKElMtqBRSo_aPJZMOnPs7fRyjqKUtPDbo,2276
|
|
115
|
+
fastapi_rtk/utils/formatter.py,sha256=bLMAo6-NmD7bp64VkkenoybWTAvbMyOHX55FRfINjVI,1224
|
|
115
116
|
fastapi_rtk/utils/hooks.py,sha256=iGE8HTfDDVfQm7yeD3WqPB8_I1FXFGpBdl3ngyjaRbY,901
|
|
116
117
|
fastapi_rtk/utils/lazy.py,sha256=SlVYQ-RHRcp6pGmcslVNc5lKs5GOSjqLcRsQsSWIB0s,10352
|
|
117
118
|
fastapi_rtk/utils/merge_schema.py,sha256=AStYAS_t2idD63_YQri8sBcRM1jaq0kapjYUpI27syg,1398
|
|
118
119
|
fastapi_rtk/utils/multiple_async_contexts.py,sha256=-juAliUeG4XI1J-p31KknsJvzvM5vX0gXVXst_xZUIo,557
|
|
119
|
-
fastapi_rtk/utils/prettify_dict.py,sha256=VKve-52fE9usIzflD3mNtvql_p5F2jq9HYBTJF_1MX0,662
|
|
120
120
|
fastapi_rtk/utils/pydantic.py,sha256=c4TGu6fP5qmsMJcEerhgq3R1iTpJn_1oA91d43GaVlo,2408
|
|
121
|
-
fastapi_rtk/utils/run_utils.py,sha256=
|
|
121
|
+
fastapi_rtk/utils/run_utils.py,sha256=gmp-lWgCsSWcP5Hg_Q1mXyBbRYKHNPb1dzAlC7IZZD4,6283
|
|
122
122
|
fastapi_rtk/utils/self_dependencies.py,sha256=SjX8BOC3UvuLxfElo1MMgugCX8ZEgsCgLy0g011a4UU,4102
|
|
123
123
|
fastapi_rtk/utils/smartdefaultdict.py,sha256=UdA_N1eQ3TooE9_ci0O_5QKUjGkQfo-c2BwEX5OkXfY,645
|
|
124
124
|
fastapi_rtk/utils/sqla.py,sha256=To4PhsO5orPJVqjdLh5C9y_xPgiy8-zhrJdSqhR_tsc,690
|
|
@@ -126,8 +126,8 @@ fastapi_rtk/utils/timezone.py,sha256=62S0pPWuDFFXxV1YTFCsc4uKiSP_Ba36Fv7S3gYjfhs
|
|
|
126
126
|
fastapi_rtk/utils/update_signature.py,sha256=PIzZgNpGEwvDNgQ3G51Zi-QhVV3mbxvUvSwDwf_-yYs,2209
|
|
127
127
|
fastapi_rtk/utils/use_default_when_none.py,sha256=H2HqhKy_8eYk3i1xijEjuaKak0oWkMIkrdz6T7DK9QU,469
|
|
128
128
|
fastapi_rtk/utils/werkzeug.py,sha256=1Gv-oyqSmhVGrmNbB9fDqpqJzPpANOzWf4zMMrhW9UA,3245
|
|
129
|
-
fastapi_rtk-1.0.
|
|
130
|
-
fastapi_rtk-1.0.
|
|
131
|
-
fastapi_rtk-1.0.
|
|
132
|
-
fastapi_rtk-1.0.
|
|
133
|
-
fastapi_rtk-1.0.
|
|
129
|
+
fastapi_rtk-1.0.20.dist-info/METADATA,sha256=3HSGbdKbJ8IG24nA3D8HxptAVRj9NtYieA-3tF5GSZY,1302
|
|
130
|
+
fastapi_rtk-1.0.20.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
131
|
+
fastapi_rtk-1.0.20.dist-info/entry_points.txt,sha256=UuTkxSVIokSlVN28TMhoxzRRUaPxlVRSH3Gsx6yip60,53
|
|
132
|
+
fastapi_rtk-1.0.20.dist-info/licenses/LICENSE,sha256=NDrWi4Qwcxal3u1r2lBWGA6TVh3OeW7yMan098mQz98,1073
|
|
133
|
+
fastapi_rtk-1.0.20.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|