arpakitlib 1.6.90__py3-none-any.whl → 1.6.92__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/manage/check_logging.py +13 -0
- arpakitlib/ar_aiogram_util.py +10 -9
- arpakitlib/ar_dream_ai_api_client_util.py +20 -50
- arpakitlib/ar_fastapi_util.py +23 -7
- arpakitlib/ar_logging_util.py +3 -0
- arpakitlib/ar_schedule_uust_api_client_util.py +2 -2
- {arpakitlib-1.6.90.dist-info → arpakitlib-1.6.92.dist-info}/METADATA +1 -1
- {arpakitlib-1.6.90.dist-info → arpakitlib-1.6.92.dist-info}/RECORD +12 -11
- {arpakitlib-1.6.90.dist-info → arpakitlib-1.6.92.dist-info}/LICENSE +0 -0
- {arpakitlib-1.6.90.dist-info → arpakitlib-1.6.92.dist-info}/NOTICE +0 -0
- {arpakitlib-1.6.90.dist-info → arpakitlib-1.6.92.dist-info}/WHEEL +0 -0
- {arpakitlib-1.6.90.dist-info → arpakitlib-1.6.92.dist-info}/entry_points.txt +0 -0
arpakitlib/ar_aiogram_util.py
CHANGED
@@ -326,19 +326,20 @@ class BaseTransmittedTgBotData(BaseModel):
|
|
326
326
|
model_config = ConfigDict(extra="ignore", arbitrary_types_allowed=True, from_attributes=True)
|
327
327
|
|
328
328
|
|
329
|
-
def create_aiogram_tg_bot(*, tg_bot_token: str, tg_bot_proxy_url: str | None = None) -> Bot:
|
330
|
-
|
329
|
+
def create_aiogram_tg_bot(*, tg_bot_token: str, tg_bot_proxy_url: str | None = None, **kwargs) -> Bot:
|
330
|
+
kwargs["token"] = tg_bot_token
|
331
|
+
|
331
332
|
if tg_bot_proxy_url:
|
332
|
-
session = AiohttpSession(proxy=tg_bot_proxy_url)
|
333
|
-
|
334
|
-
|
335
|
-
default=DefaultBotProperties(
|
333
|
+
kwargs["session"] = AiohttpSession(proxy=tg_bot_proxy_url)
|
334
|
+
|
335
|
+
if kwargs.get("default") is None:
|
336
|
+
kwargs["default"] = DefaultBotProperties(
|
336
337
|
parse_mode=ParseMode.HTML,
|
337
338
|
disable_notification=False,
|
338
339
|
link_preview_is_disabled=True
|
339
|
-
)
|
340
|
-
|
341
|
-
)
|
340
|
+
)
|
341
|
+
|
342
|
+
tg_bot = Bot(**kwargs)
|
342
343
|
|
343
344
|
return tg_bot
|
344
345
|
|
@@ -2,16 +2,14 @@
|
|
2
2
|
|
3
3
|
import asyncio
|
4
4
|
import logging
|
5
|
-
from
|
5
|
+
from typing import Any
|
6
6
|
from urllib.parse import urljoin
|
7
7
|
|
8
|
-
import
|
9
|
-
from aiohttp import ClientResponseError, ClientResponse, ClientTimeout
|
8
|
+
from aiohttp import ClientResponse
|
10
9
|
from pydantic import ConfigDict, BaseModel
|
11
10
|
|
12
11
|
from arpakitlib.ar_base64_util import convert_base64_string_to_bytes
|
13
|
-
from arpakitlib.
|
14
|
-
from arpakitlib.ar_sleep_util import async_safe_sleep
|
12
|
+
from arpakitlib.ar_http_request_util import async_make_http_request
|
15
13
|
|
16
14
|
_ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
17
15
|
|
@@ -19,9 +17,6 @@ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
|
19
17
|
class BaseAPIModel(BaseModel):
|
20
18
|
model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
|
21
19
|
|
22
|
-
def simple_json(self) -> str:
|
23
|
-
return safely_transfer_to_json_str(self.model_dump(mode="json"))
|
24
|
-
|
25
20
|
|
26
21
|
class GenerateImageFromNumberResApiModel(BaseAPIModel):
|
27
22
|
image_filename: str
|
@@ -39,7 +34,7 @@ class DreamAIAPIClient:
|
|
39
34
|
self,
|
40
35
|
*,
|
41
36
|
base_url: str = "https://api.dream_ai.arpakit.com/api/v1",
|
42
|
-
api_key: str | None =
|
37
|
+
api_key: str | None = "1"
|
43
38
|
):
|
44
39
|
self._logger = logging.getLogger(__name__)
|
45
40
|
self.api_key = api_key
|
@@ -51,60 +46,35 @@ class DreamAIAPIClient:
|
|
51
46
|
if api_key is not None:
|
52
47
|
self.headers.update({"apikey": api_key})
|
53
48
|
|
54
|
-
async def
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
self._logger.info(f"{method} {url}")
|
66
|
-
try:
|
67
|
-
async with aiohttp.ClientSession() as session:
|
68
|
-
async with session.request(**kwargs) as response:
|
69
|
-
await response.read()
|
70
|
-
return response
|
71
|
-
except Exception as err:
|
72
|
-
self._logger.warning(f"{tries}/{max_tries} {err} {method} {url}")
|
73
|
-
if tries >= max_tries:
|
74
|
-
raise err
|
75
|
-
await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
|
76
|
-
continue
|
49
|
+
async def _async_make_http_request(
|
50
|
+
self, *, method: str = "GET", url: str, params: dict[str, Any] | None = None
|
51
|
+
) -> ClientResponse:
|
52
|
+
response = await async_make_http_request(
|
53
|
+
method=method,
|
54
|
+
url=url,
|
55
|
+
headers=self.headers,
|
56
|
+
params=params
|
57
|
+
)
|
58
|
+
response.raise_for_status()
|
59
|
+
return response
|
77
60
|
|
78
61
|
async def healthcheck(self) -> bool:
|
79
|
-
response = await self.
|
80
|
-
response.raise_for_status()
|
62
|
+
response = await self._async_make_http_request(method="GET", url=urljoin(self.base_url, "healthcheck"))
|
81
63
|
json_data = await response.json()
|
82
|
-
return json_data["data"]["healthcheck"]
|
64
|
+
return json_data["data"]["healthcheck"] == "healthcheck"
|
83
65
|
|
84
66
|
async def is_healthcheck_good(self) -> bool:
|
85
67
|
try:
|
86
68
|
return await self.healthcheck()
|
87
|
-
except
|
88
|
-
|
89
|
-
|
90
|
-
async def auth_healthcheck(self) -> bool:
|
91
|
-
response = await self._async_make_request(method="GET", url=urljoin(self.base_url, "auth_healthcheck"))
|
92
|
-
response.raise_for_status()
|
93
|
-
json_data = await response.json()
|
94
|
-
return json_data["data"]["auth_healthcheck"]
|
95
|
-
|
96
|
-
async def is_auth_healthcheck_good(self) -> bool:
|
97
|
-
try:
|
98
|
-
return await self.auth_healthcheck()
|
99
|
-
except ClientResponseError:
|
69
|
+
except Exception as exception:
|
70
|
+
self._logger.error(exception)
|
100
71
|
return False
|
101
72
|
|
102
73
|
async def generate_image_from_number(self, *, number: int) -> GenerateImageFromNumberResApiModel:
|
103
|
-
response = await self.
|
74
|
+
response = await self._async_make_http_request(
|
104
75
|
method="GET", url=urljoin(self.base_url, "generate_image_from_number"),
|
105
76
|
params={"number": number}
|
106
77
|
)
|
107
|
-
response.raise_for_status()
|
108
78
|
json_data = await response.json()
|
109
79
|
return GenerateImageFromNumberResApiModel.model_validate(json_data)
|
110
80
|
|
arpakitlib/ar_fastapi_util.py
CHANGED
@@ -27,6 +27,7 @@ from starlette.staticfiles import StaticFiles
|
|
27
27
|
from arpakitlib.ar_base_worker_util import BaseWorker
|
28
28
|
from arpakitlib.ar_dict_util import combine_dicts
|
29
29
|
from arpakitlib.ar_enumeration_util import Enumeration
|
30
|
+
from arpakitlib.ar_file_storage_in_dir_util import FileStorageInDir
|
30
31
|
from arpakitlib.ar_json_util import safely_transfer_to_json_str_to_json_obj
|
31
32
|
from arpakitlib.ar_logging_util import setup_normal_logging
|
32
33
|
from arpakitlib.ar_sqlalchemy_model_util import StoryLogDBM
|
@@ -396,18 +397,29 @@ class InitSqlalchemyDBStartupAPIEvent(BaseStartupAPIEvent):
|
|
396
397
|
super().__init__()
|
397
398
|
self.sqlalchemy_db = sqlalchemy_db
|
398
399
|
|
399
|
-
def async_on_startup(self, *args, **kwargs):
|
400
|
+
async def async_on_startup(self, *args, **kwargs):
|
400
401
|
self.sqlalchemy_db.init()
|
401
402
|
|
402
403
|
|
403
404
|
class SafeRunWorkerStartupAPIEvent(BaseStartupAPIEvent):
|
404
|
-
def __init__(self,
|
405
|
+
def __init__(self, workers: list[BaseWorker], safe_run_in_background_mode: str):
|
405
406
|
super().__init__()
|
406
|
-
self.
|
407
|
+
self.workers = workers
|
407
408
|
self.safe_run_in_background_mode = safe_run_in_background_mode
|
408
409
|
|
409
|
-
def async_on_startup(self, *args, **kwargs):
|
410
|
-
|
410
|
+
async def async_on_startup(self, *args, **kwargs):
|
411
|
+
for worker in self.workers:
|
412
|
+
_ = worker.safe_run_in_background(safe_run_in_background_mode=self.safe_run_in_background_mode)
|
413
|
+
|
414
|
+
|
415
|
+
class InitFileStoragesInDir(BaseStartupAPIEvent):
|
416
|
+
def __init__(self, file_storages_in_dir: list[FileStorageInDir]):
|
417
|
+
super().__init__()
|
418
|
+
self.file_storages_in_dir = file_storages_in_dir
|
419
|
+
|
420
|
+
async def async_on_startup(self, *args, **kwargs):
|
421
|
+
for file_storage_in_dir in self.file_storages_in_dir:
|
422
|
+
file_storage_in_dir.init()
|
411
423
|
|
412
424
|
|
413
425
|
class BaseTransmittedAPIData(BaseModel):
|
@@ -422,7 +434,7 @@ class BaseAPIAuthData(BaseModel):
|
|
422
434
|
model_config = ConfigDict(extra="forbid", arbitrary_types_allowed=True, from_attributes=True)
|
423
435
|
|
424
436
|
require_api_key_string: bool = False
|
425
|
-
require_token_string: bool =
|
437
|
+
require_token_string: bool = False
|
426
438
|
|
427
439
|
token_string: str | None = None
|
428
440
|
api_key_string: str | None = None
|
@@ -567,7 +579,8 @@ def create_fastapi_app(
|
|
567
579
|
shutdown_api_events: list[BaseShutdownAPIEvent] | None = None,
|
568
580
|
transmitted_api_data: BaseTransmittedAPIData = BaseTransmittedAPIData(),
|
569
581
|
main_api_router: APIRouter = simple_api_router_for_testing(),
|
570
|
-
contact: dict[str, Any] | None = None
|
582
|
+
contact: dict[str, Any] | None = None,
|
583
|
+
media_dirpath: str | None = None
|
571
584
|
):
|
572
585
|
if contact is None:
|
573
586
|
contact = _DEFAULT_CONTACT
|
@@ -591,6 +604,9 @@ def create_fastapi_app(
|
|
591
604
|
contact=contact
|
592
605
|
)
|
593
606
|
|
607
|
+
if media_dirpath is not None:
|
608
|
+
app.mount("/media", StaticFiles(directory=media_dirpath), name="media")
|
609
|
+
|
594
610
|
app.state.transmitted_api_data = transmitted_api_data
|
595
611
|
|
596
612
|
add_cors_to_app(app=app)
|
arpakitlib/ar_logging_util.py
CHANGED
@@ -8,6 +8,9 @@ _ARPAKIT_LIB_MODULE_VERSION = "3.0"
|
|
8
8
|
|
9
9
|
|
10
10
|
def init_log_file(*, log_filepath: str):
|
11
|
+
directory = os.path.dirname(log_filepath)
|
12
|
+
if directory and not os.path.exists(directory):
|
13
|
+
os.makedirs(directory, exist_ok=True)
|
11
14
|
if not os.path.exists(path=log_filepath):
|
12
15
|
with open(file=log_filepath, mode="w") as file:
|
13
16
|
file.write("")
|
@@ -76,11 +76,11 @@ class ScheduleUUSTAPIClient:
|
|
76
76
|
self,
|
77
77
|
*,
|
78
78
|
url: str,
|
79
|
-
params: dict | None = None
|
79
|
+
params: dict[str, Any] | None = None
|
80
80
|
) -> dict[str, Any]:
|
81
81
|
response = await async_make_http_request(
|
82
|
-
url=url,
|
83
82
|
method="GET",
|
83
|
+
url=url,
|
84
84
|
params=combine_dicts(params, self.auth_params()),
|
85
85
|
proxy_url_=self.api_proxy_url,
|
86
86
|
max_tries_=9,
|
@@ -8,6 +8,7 @@ arpakitlib/_arpakit_project_template/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0
|
|
8
8
|
arpakitlib/_arpakit_project_template/README.md,sha256=n7bVQwXStxdwN07oMF9ot5076qVjTk_H-rmUaSYfHK8,66
|
9
9
|
arpakitlib/_arpakit_project_template/manage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
arpakitlib/_arpakit_project_template/manage/beutify_json.py,sha256=mzmt-5piAHqgihLsqOpPx1JjDc1qA5F1XHBxDdR-BxY,215
|
11
|
+
arpakitlib/_arpakit_project_template/manage/check_logging.py,sha256=77OQzbolrlfc6h5EK5nkJ4RamJ034mFVW8s0rVQGnhM,211
|
11
12
|
arpakitlib/_arpakit_project_template/manage/check_settings.py,sha256=JYR-IPgvYQOmJedKY9vOctbxEcUlaxZR-P0JXT9L2JQ,143
|
12
13
|
arpakitlib/_arpakit_project_template/manage/docker_ps.sh,sha256=uwm8vHgeuNLCOn0o9hgP_uc-PUkS9FwLyzZh6ItZ3do,15
|
13
14
|
arpakitlib/_arpakit_project_template/manage/generate_env_example.py,sha256=gveKEz6zf5rwKNBXtHacPEjxxjPTbLy4n-Ztv0BqCWE,331
|
@@ -64,7 +65,7 @@ arpakitlib/_arpakit_project_template/src/test_data/make_test_data_4.py,sha256=Wq
|
|
64
65
|
arpakitlib/_arpakit_project_template/src/test_data/make_test_data_5.py,sha256=ogTmetjQiRa57TKNfVH5A6GFTqBrU1Js0vTok6jlL_A,82
|
65
66
|
arpakitlib/_arpakit_project_template/src/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
67
|
arpakitlib/ar_additional_model_util.py,sha256=tNzZhZtvtJ1qC6Cn4UnyoEL58HudfpCdQy5ftkCqyik,473
|
67
|
-
arpakitlib/ar_aiogram_util.py,sha256=
|
68
|
+
arpakitlib/ar_aiogram_util.py,sha256=5JPCDZpdBGTE-EIWPRez9amCZAX7XemFIVu5YrQK7Pw,12264
|
68
69
|
arpakitlib/ar_arpakit_lib_module_util.py,sha256=V_mc3Ml73Tzz3arxmwEfIxruKMyrwbe8XZ9FfVDtUXY,5446
|
69
70
|
arpakitlib/ar_arpakit_schedule_uust_api_client_util.py,sha256=SYWWQDohPnw0qpBIu2hEvGZRVdaI4NUUQdEjnMnseo4,18237
|
70
71
|
arpakitlib/ar_arpakitlib_cli.py,sha256=T-YGAL6hRdrT2x3ug33N3GrWLYKSjK25r9SlaiBT7-M,2366
|
@@ -73,7 +74,7 @@ arpakitlib/ar_base_worker_util.py,sha256=YGoSpkE52QGu_mQdrefThc-pCnhhLEhWchSM3HZ
|
|
73
74
|
arpakitlib/ar_cache_file_util.py,sha256=Fo2pH-Zqm966KWFBHG_pbiySGZvhIFCYqy7k1weRfJ0,3476
|
74
75
|
arpakitlib/ar_datetime_util.py,sha256=Xe1NiT9oPQzNSG7RVRkhukhbg4i-hhS5ImmV7sPUc8o,971
|
75
76
|
arpakitlib/ar_dict_util.py,sha256=cF5LQJ6tLqyGoEXfDljMDZrikeZoWPw7CgINHIFGvXM,419
|
76
|
-
arpakitlib/ar_dream_ai_api_client_util.py,sha256=
|
77
|
+
arpakitlib/ar_dream_ai_api_client_util.py,sha256=CLN0RnuFn-JzoXLiz2eqnt-z2fkG6NbZEDLThVAyR88,2770
|
77
78
|
arpakitlib/ar_encrypt_decrypt_util.py,sha256=GhWnp7HHkbhwFVVCzO1H07m-5gryr4yjWsXjOaNQm1Y,520
|
78
79
|
arpakitlib/ar_enumeration_util.py,sha256=0DN46uyI0Gu9JPDgso3XPbnre7hZZefYTZwmmE1iYH4,2250
|
79
80
|
arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js,sha256=WCuodUNv1qVh0oW5fjnJDwb5AwOue73jKHdI9z8iGKU,909365
|
@@ -95,7 +96,7 @@ arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css,sha256=jzPZlgJTFwSdSphk9C
|
|
95
96
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map,sha256=5wq8eXMLU6Zxb45orZPL1zAsBFJReFw6GjYqGpUX3hg,262650
|
96
97
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js,sha256=ffrLZHHEQ_g84A-ul3yWa10Kk09waOAxHcQXPuZuavg,339292
|
97
98
|
arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map,sha256=9UhIW7MqCOZPAz1Sl1IKfZUuhWU0p-LJqrnjjJD9Xhc,1159454
|
98
|
-
arpakitlib/ar_fastapi_util.py,sha256=
|
99
|
+
arpakitlib/ar_fastapi_util.py,sha256=X0kwP4b58gUhIkdXv8ougCGWbbIMB_6Qy-FMcd7mdk0,21744
|
99
100
|
arpakitlib/ar_file_storage_in_dir_util.py,sha256=D3e3rGuHoI6xqAA5mVvEpVVpOWY1jyjNsjj2UhyHRbE,3674
|
100
101
|
arpakitlib/ar_file_util.py,sha256=XiwmeycxoLqtYnGOu5q6IEaJJXilZvtLvsKDKtwqSLY,137
|
101
102
|
arpakitlib/ar_hash_util.py,sha256=Iqy6KBAOLBQMFLWv676boI5sV7atT2B-fb7aCdHOmIQ,340
|
@@ -107,7 +108,7 @@ arpakitlib/ar_json_util.py,sha256=GwHDdrBWiJBHSc07Qe0aN1Gp_uM0pYpTwzU9JAgsKAo,97
|
|
107
108
|
arpakitlib/ar_jwt_util.py,sha256=Rhm4ywoTAn6yOV8NLjDASfAtAtheROxxDP40G3XjnuQ,761
|
108
109
|
arpakitlib/ar_list_of_dicts_to_xlsx.py,sha256=MyjEl4Jl4beLVZqLVQMMv0-XDtBD3Xh4Z_ZPDJeFu04,745
|
109
110
|
arpakitlib/ar_list_util.py,sha256=2woOAHAU8oTIiVjZ8GLnx15odEaoQUq3Q0JPxlufFF0,457
|
110
|
-
arpakitlib/ar_logging_util.py,sha256=
|
111
|
+
arpakitlib/ar_logging_util.py,sha256=Gyd7B9k0glIXPm6dASiigWLq9LC9lw6vhXTCeWpY5PY,1644
|
111
112
|
arpakitlib/ar_mongodb_util.py,sha256=2ECkTnGAZ92qxioL-fmN6R4yZOSr3bXdXLWTzT1C3vk,4038
|
112
113
|
arpakitlib/ar_need_type_util.py,sha256=xq5bbAXJG-93CRVZUcLW0ZdM22rj-ZUW17C5hX_5grg,1699
|
113
114
|
arpakitlib/ar_openai_util.py,sha256=dHUbfg1sVVCjsNl_fra3iCMEz1bR-Hk9fE-DdYbu7Wc,1215
|
@@ -116,7 +117,7 @@ arpakitlib/ar_parse_command.py,sha256=-s61xcATIsfw1eV_iD3xi-grsitbGzSDoAFc5V0OFy
|
|
116
117
|
arpakitlib/ar_postgresql_util.py,sha256=1AuLjEaa1Lg4pzn-ukCVnDi35Eg1k91APRTqZhIJAdo,945
|
117
118
|
arpakitlib/ar_project_template_util.py,sha256=Yh3tzNYq0rrKc1MY-qsW1Ljhi9ADz8nYXMiPDH-e6PQ,3097
|
118
119
|
arpakitlib/ar_run_cmd_util.py,sha256=D_rPavKMmWkQtwvZFz-Io5Ak8eSODHkcFeLPzNVC68g,1072
|
119
|
-
arpakitlib/ar_schedule_uust_api_client_util.py,sha256=
|
120
|
+
arpakitlib/ar_schedule_uust_api_client_util.py,sha256=XLaXoKqZRUY-pbn9YAXwnyX7LElDYju_eSTbXHPnyEY,6037
|
120
121
|
arpakitlib/ar_settings_util.py,sha256=NvFzpIaQhlMp-BZwttUY_9gamMC5cpJk2Kp2B3BtMug,1296
|
121
122
|
arpakitlib/ar_sleep_util.py,sha256=9ZN4Qo4eZ_q3hjM7vNBQjFRcH-9-sqv3QLSjnxVJE90,1405
|
122
123
|
arpakitlib/ar_sqlalchemy_model_util.py,sha256=ttdgOwQfoHTKqgivBtXoSbJoBCASHDjLEFK5tJ9kNNE,4779
|
@@ -126,9 +127,9 @@ arpakitlib/ar_str_util.py,sha256=AhcdrEm-pXRilCaDWCdTfVkQSy0SnbE52ur43Ltr6cI,212
|
|
126
127
|
arpakitlib/ar_type_util.py,sha256=5nDnXL5Oyozlg8XvxMrogsoYiG8_atItg46A0mtv-pk,2025
|
127
128
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=5GMvu8paByni8buhc1vpHB7n6oXe0gPfj1LSvnyZCrQ,5307
|
128
129
|
arpakitlib/ar_zabbix_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
|
129
|
-
arpakitlib-1.6.
|
130
|
-
arpakitlib-1.6.
|
131
|
-
arpakitlib-1.6.
|
132
|
-
arpakitlib-1.6.
|
133
|
-
arpakitlib-1.6.
|
134
|
-
arpakitlib-1.6.
|
130
|
+
arpakitlib-1.6.92.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
131
|
+
arpakitlib-1.6.92.dist-info/METADATA,sha256=FZocXYl5hW3Jsx-yVBCzGlw36cXaS3il6QcsGbtcl8I,2739
|
132
|
+
arpakitlib-1.6.92.dist-info/NOTICE,sha256=95aUzaPJjVpDsGAsNzVnq7tHTxAl0s5UFznCTkVCau4,763
|
133
|
+
arpakitlib-1.6.92.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
134
|
+
arpakitlib-1.6.92.dist-info/entry_points.txt,sha256=VHkTDXDOMrgcNzGfKhEhoOIIz6T8Kkt46hy95Zc1iL0,74
|
135
|
+
arpakitlib-1.6.92.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|