arpakitlib 1.5.38__tar.gz → 1.5.39__tar.gz

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.
Files changed (70) hide show
  1. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/PKG-INFO +1 -1
  2. arpakitlib-1.5.38/arpakitlib/ar_cache_file.py → arpakitlib-1.5.39/arpakitlib/ar_cache_file_util.py +1 -1
  3. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_http_request_util.py +8 -3
  4. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_operation_execution_util.py +1 -1
  5. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_postgresql_util.py +1 -1
  6. arpakitlib-1.5.38/arpakitlib/ar_schedule_uust_api_client.py → arpakitlib-1.5.39/arpakitlib/ar_schedule_uust_api_client_util.py +2 -2
  7. arpakitlib-1.5.38/arpakitlib/ar_yookassa_api_client.py → arpakitlib-1.5.39/arpakitlib/ar_yookassa_api_client_util.py +30 -55
  8. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/pyproject.toml +1 -1
  9. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/LICENSE +0 -0
  10. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/NOTICE +0 -0
  11. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/README.md +0 -0
  12. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/AUTHOR.md +0 -0
  13. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/LICENSE +0 -0
  14. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/NOTICE +0 -0
  15. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/README.md +0 -0
  16. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/__init__.py +0 -0
  17. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_additional_model_util.py +0 -0
  18. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_aiogram_util.py +0 -0
  19. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_arpakit_lib_module_util.py +0 -0
  20. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_arpakit_schedule_uust_api_client.py +0 -0
  21. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_arpakitlib_info.py +0 -0
  22. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_base64_util.py +0 -0
  23. /arpakitlib-1.5.38/arpakitlib/ar_base_worker.py → /arpakitlib-1.5.39/arpakitlib/ar_base_worker_util.py +0 -0
  24. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_datetime_util.py +0 -0
  25. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_dict_util.py +0 -0
  26. /arpakitlib-1.5.38/arpakitlib/ar_dream_ai_api_client.py → /arpakitlib-1.5.39/arpakitlib/ar_dream_ai_api_client_util.py +0 -0
  27. /arpakitlib-1.5.38/arpakitlib/ar_encrypt_and_decrypt_util.py → /arpakitlib-1.5.39/arpakitlib/ar_encrypt_decrypt_util.py +0 -0
  28. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_enumeration_util.py +0 -0
  29. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/redoc/redoc.standalone.js +0 -0
  30. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-16x16.png +0 -0
  31. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/favicon-32x32.png +0 -0
  32. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/index.css +0 -0
  33. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/index.html +0 -0
  34. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/oauth2-redirect.html +0 -0
  35. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-initializer.js +0 -0
  36. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js +0 -0
  37. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-bundle.js.map +0 -0
  38. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js +0 -0
  39. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle-core.js.map +0 -0
  40. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js +0 -0
  41. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-es-bundle.js.map +0 -0
  42. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js +0 -0
  43. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui-standalone-preset.js.map +0 -0
  44. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css +0 -0
  45. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.css.map +0 -0
  46. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js +0 -0
  47. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_static/swagger-ui/swagger-ui.js.map +0 -0
  48. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_fastapi_util.py +0 -0
  49. /arpakitlib-1.5.38/arpakitlib/ar_file_storage_in_dir.py → /arpakitlib-1.5.39/arpakitlib/ar_file_storage_in_dir_util.py +0 -0
  50. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_generate_env_example.py +0 -0
  51. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_hash_util.py +0 -0
  52. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_ip_util.py +0 -0
  53. /arpakitlib-1.5.38/arpakitlib/ar_json_db.py → /arpakitlib-1.5.39/arpakitlib/ar_json_db_util.py +0 -0
  54. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_json_util.py +0 -0
  55. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_jwt_util.py +0 -0
  56. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_list_of_dicts_to_xlsx.py +0 -0
  57. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_list_util.py +0 -0
  58. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_logging_util.py +0 -0
  59. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_mongodb_util.py +0 -0
  60. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_need_type_util.py +0 -0
  61. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_openai_util.py +0 -0
  62. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_parse_command.py +0 -0
  63. /arpakitlib-1.5.38/arpakitlib/ar_run_cmd.py → /arpakitlib-1.5.39/arpakitlib/ar_run_cmd_util.py +0 -0
  64. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_sleep_util.py +0 -0
  65. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_sqlalchemy_model_util.py +0 -0
  66. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_sqlalchemy_util.py +0 -0
  67. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_ssh_util.py +0 -0
  68. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_str_util.py +0 -0
  69. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_type_util.py +0 -0
  70. {arpakitlib-1.5.38 → arpakitlib-1.5.39}/arpakitlib/ar_zabbix_util.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: arpakitlib
3
- Version: 1.5.38
3
+ Version: 1.5.39
4
4
  Summary: arpakitlib
5
5
  Home-page: https://github.com/ARPAKIT-Company/arpakitlib
6
6
  License: Apache-2.0
@@ -7,7 +7,7 @@ from typing import Optional, Any
7
7
  import pytz
8
8
  from pydantic import BaseModel
9
9
 
10
- from arpakitlib.ar_json_db import JSONDbFile
10
+ from arpakitlib.ar_json_db_util import JSONDbFile
11
11
  from arpakitlib.ar_type_util import raise_for_type
12
12
 
13
13
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
@@ -9,22 +9,27 @@ import requests
9
9
  from aiohttp_socks import ProxyConnector
10
10
 
11
11
  from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
12
+ from arpakitlib.ar_type_util import raise_for_type
12
13
 
13
14
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
14
15
 
15
16
  _logger = logging.getLogger(__name__)
16
17
 
17
18
 
18
- def sync_make_request(
19
+ def sync_make_http_request(
19
20
  *,
20
21
  method: str = "GET",
21
22
  url: str,
22
23
  max_tries_: int = 9,
23
24
  proxy_url_: str | None = None,
24
25
  raise_for_status_: bool = False,
25
- timeout_: timedelta = timedelta(seconds=15).total_seconds(),
26
+ timeout_: timedelta | float = timedelta(seconds=15).total_seconds(),
26
27
  **kwargs
27
28
  ) -> requests.Response:
29
+ if isinstance(timeout_, float):
30
+ timeout_ = timedelta(seconds=timeout_)
31
+ raise_for_type(timeout_, timedelta)
32
+
28
33
  tries_counter = 0
29
34
 
30
35
  kwargs["method"] = method
@@ -55,7 +60,7 @@ def sync_make_request(
55
60
  continue
56
61
 
57
62
 
58
- async def async_make_request(
63
+ async def async_make_http_request(
59
64
  *,
60
65
  method: str = "GET",
61
66
  url: str,
@@ -10,7 +10,7 @@ from typing import Any
10
10
  from sqlalchemy import asc
11
11
  from sqlalchemy.orm import Session
12
12
 
13
- from arpakitlib.ar_base_worker import BaseWorker
13
+ from arpakitlib.ar_base_worker_util import BaseWorker
14
14
  from arpakitlib.ar_datetime_util import now_utc_dt
15
15
  from arpakitlib.ar_dict_util import combine_dicts
16
16
  from arpakitlib.ar_sqlalchemy_model_util import OperationDBM, StoryLogDBM
@@ -1,7 +1,7 @@
1
1
  # arpakit
2
2
 
3
3
  from arpakitlib.ar_logging_util import setup_normal_logging
4
- from arpakitlib.ar_run_cmd import run_cmd
4
+ from arpakitlib.ar_run_cmd_util import run_cmd
5
5
  from arpakitlib.ar_type_util import raise_for_type
6
6
 
7
7
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
@@ -9,7 +9,7 @@ from typing import Any
9
9
  import pytz
10
10
 
11
11
  from arpakitlib.ar_dict_util import combine_dicts
12
- from arpakitlib.ar_http_request_util import async_make_request
12
+ from arpakitlib.ar_http_request_util import async_make_http_request
13
13
  from arpakitlib.ar_type_util import raise_for_type
14
14
 
15
15
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
@@ -75,7 +75,7 @@ class ScheduleUUSTAPIClient:
75
75
  url: str,
76
76
  params: dict | None = None
77
77
  ) -> dict[str, Any]:
78
- response = await async_make_request(
78
+ response = await async_make_http_request(
79
79
  url=url,
80
80
  method="GET",
81
81
  params=combine_dicts(params, self.auth_params()),
@@ -13,7 +13,7 @@ import requests
13
13
 
14
14
  from arpakitlib.ar_dict_util import combine_dicts
15
15
  from arpakitlib.ar_enumeration_util import Enumeration
16
- from arpakitlib.ar_sleep_util import sync_safe_sleep, async_safe_sleep
16
+ from arpakitlib.ar_http_request_util import sync_make_http_request, async_make_http_request
17
17
  from arpakitlib.ar_type_util import raise_for_type
18
18
 
19
19
  _ARPAKIT_LIB_MODULE_VERSION = "3.0"
@@ -42,56 +42,23 @@ class YookassaAPIClient:
42
42
  self.headers = {"Content-Type": "application/json"}
43
43
  self._logger = logging.getLogger(self.__class__.__name__)
44
44
 
45
- def _sync_make_request(self, method: str, url: str, **kwargs) -> requests.Response:
46
- max_tries = 7
47
- tries = 0
48
-
49
- kwargs["url"] = url
50
- kwargs["method"] = method
51
- kwargs["timeout"] = (timedelta(seconds=3).total_seconds(), timedelta(seconds=3).total_seconds())
45
+ def _sync_make_request(
46
+ self,
47
+ *,
48
+ method: str,
49
+ url: str,
50
+ **kwargs
51
+ ) -> requests.Response:
52
52
  if "headers" not in kwargs:
53
53
  kwargs["headers"] = {}
54
54
  kwargs["headers"] = combine_dicts(self.headers, kwargs["headers"])
55
55
  kwargs["auth"] = (self.shop_id, self.secret_key)
56
-
57
- while True:
58
- self._logger.info(f"{method} {url}")
59
- tries += 1
60
- try:
61
- return requests.request(**kwargs)
62
- except Exception as err:
63
- self._logger.warning(f"{tries}/{max_tries} {err} {method} {url}")
64
- if tries >= max_tries:
65
- raise YookassaAPIException(err)
66
- sync_safe_sleep(timedelta(seconds=0.1).total_seconds())
67
- continue
68
-
69
- async def _async_make_request(self, method: str, url: str, **kwargs) -> aiohttp.ClientResponse:
70
- max_tries = 7
71
- tries = 0
72
-
73
- kwargs["url"] = url
74
- kwargs["method"] = method
75
- kwargs["timeout"] = aiohttp.ClientTimeout(total=timedelta(seconds=15).total_seconds())
76
- if "headers" not in kwargs:
77
- kwargs["headers"] = {}
78
- kwargs["headers"] = combine_dicts(self.headers, kwargs["headers"])
79
- kwargs["auth"] = aiohttp.BasicAuth(login=str(self.shop_id), password=self.secret_key)
80
-
81
- while True:
82
- self._logger.info(f"{method} {url}")
83
- tries += 1
84
- try:
85
- async with aiohttp.ClientSession() as session:
86
- async with session.request(**kwargs) as response:
87
- await response.read()
88
- return response
89
- except Exception as err:
90
- self._logger.warning(f"{tries}/{max_tries} {err} {method} {url}")
91
- if tries >= max_tries:
92
- raise YookassaAPIException(err)
93
- await async_safe_sleep(timedelta(seconds=0.1).total_seconds())
94
- continue
56
+ kwargs["timeout_"] = timedelta(seconds=3)
57
+ return sync_make_http_request(
58
+ method=method,
59
+ url=url,
60
+ **kwargs
61
+ )
95
62
 
96
63
  def sync_create_payment(
97
64
  self,
@@ -121,12 +88,10 @@ class YookassaAPIClient:
121
88
  if idempotence_key is None:
122
89
  idempotence_key = str(uuid.uuid4())
123
90
 
124
- headers = combine_dicts({"Idempotence-Key": idempotence_key})
125
-
126
91
  response = self._sync_make_request(
127
92
  method="POST",
128
93
  url="https://api.yookassa.ru/v3/payments",
129
- headers=headers,
94
+ headers={"Idempotence-Key": idempotence_key},
130
95
  json=json_body,
131
96
  )
132
97
 
@@ -154,6 +119,18 @@ class YookassaAPIClient:
154
119
 
155
120
  return json_data
156
121
 
122
+ async def async_make_request(self, method: str, url: str, **kwargs) -> aiohttp.ClientResponse:
123
+ if "headers" not in kwargs:
124
+ kwargs["headers"] = {}
125
+ kwargs["headers"] = combine_dicts(self.headers, kwargs["headers"])
126
+ kwargs["auth"] = aiohttp.BasicAuth(login=str(self.shop_id), password=self.secret_key)
127
+ kwargs["timeout_"] = timedelta(seconds=3)
128
+ return await async_make_http_request(
129
+ method=method,
130
+ url=url,
131
+ **kwargs
132
+ )
133
+
157
134
  async def async_create_payment(
158
135
  self, json_body: dict[str, Any], idempotence_key: Optional[str] = None
159
136
  ) -> dict[str, Any]:
@@ -180,12 +157,10 @@ class YookassaAPIClient:
180
157
  if idempotence_key is None:
181
158
  idempotence_key = str(uuid.uuid4())
182
159
 
183
- headers = combine_dicts({"Idempotence-Key": idempotence_key})
184
-
185
- response = await self._async_make_request(
160
+ response = await self.async_make_request(
186
161
  method="POST",
187
162
  url="https://api.yookassa.ru/v3/payments",
188
- headers=headers,
163
+ headers={"Idempotence-Key": idempotence_key},
189
164
  json=json_body,
190
165
  )
191
166
 
@@ -198,7 +173,7 @@ class YookassaAPIClient:
198
173
  async def async_get_payment(self, payment_id: str) -> Optional[dict[str, Any]]:
199
174
  raise_for_type(payment_id, str)
200
175
 
201
- response = await self._async_make_request(
176
+ response = await self.async_make_request(
202
177
  method="GET",
203
178
  url=f"https://api.yookassa.ru/v3/payments/{payment_id}",
204
179
  )
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "arpakitlib"
3
- version = "1.5.38"
3
+ version = "1.5.39"
4
4
  description = "arpakitlib"
5
5
  authors = ["arpakit <arpakit@gmail.com>", "arpakit <support@arpakit.com>"]
6
6
  license = "Apache License 2.0"
File without changes
File without changes
File without changes