wexample-api 6.4.0__tar.gz → 6.6.0__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 (28) hide show
  1. {wexample_api-6.4.0 → wexample_api-6.6.0}/PKG-INFO +6 -6
  2. {wexample_api-6.4.0 → wexample_api-6.6.0}/README.md +3 -3
  3. {wexample_api-6.4.0 → wexample_api-6.6.0}/pyproject.toml +3 -3
  4. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/common/abstract_gateway.py +14 -10
  5. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/__init__.py +0 -0
  6. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/__pycache__/__init__.py +0 -0
  7. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/common/__init__.py +0 -0
  8. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/common/__pycache__/__init__.py +0 -0
  9. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/common/http_request_payload.py +0 -0
  10. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/const/__init__.py +0 -0
  11. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/const/__pycache__/__init__.py +0 -0
  12. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/const/http.py +0 -0
  13. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/demo/__init__.py +0 -0
  14. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/demo/demo_simple_gateway.py +0 -0
  15. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/enums/__init__.py +0 -0
  16. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/enums/__pycache__/__init__.py +0 -0
  17. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/enums/http.py +0 -0
  18. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/errors/__init__.py +0 -0
  19. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/errors/gateway_authentication_error.py +0 -0
  20. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/errors/gateway_connexion_error.py +0 -0
  21. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/middleware/__init__.py +0 -0
  22. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/models/__init__.py +0 -0
  23. {wexample_api-6.4.0 → wexample_api-6.6.0}/src/wexample_api/py.typed +0 -0
  24. {wexample_api-6.4.0 → wexample_api-6.6.0}/tests/common/__init__.py +0 -0
  25. {wexample_api-6.4.0 → wexample_api-6.6.0}/tests/common/test_http_request_payload.py +0 -0
  26. {wexample_api-6.4.0 → wexample_api-6.6.0}/tests/demo/__init__.py +0 -0
  27. {wexample_api-6.4.0 → wexample_api-6.6.0}/tests/demo/test_demo_simple_gateway.py +0 -0
  28. {wexample_api-6.4.0 → wexample_api-6.6.0}/tests/new_architecture/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-api
3
- Version: 6.4.0
3
+ Version: 6.6.0
4
4
  Summary: Some python basic helpers for apis.
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -12,8 +12,8 @@ Requires-Python: >=3.10
12
12
  Requires-Dist: attrs>=23.1.0
13
13
  Requires-Dist: cattrs>=23.1.0
14
14
  Requires-Dist: requests
15
- Requires-Dist: wexample-helpers>=16.2.0
16
- Requires-Dist: wexample-prompt>=13.2.0
15
+ Requires-Dist: wexample-helpers>=17.2.0
16
+ Requires-Dist: wexample-prompt>=13.4.0
17
17
  Provides-Extra: dev
18
18
  Requires-Dist: pytest; extra == "dev"
19
19
  Requires-Dist: pytest-cov; extra == "dev"
@@ -21,7 +21,7 @@ Description-Content-Type: text/markdown
21
21
 
22
22
  # api
23
23
 
24
- Version: 6.4.0
24
+ Version: 6.6.0
25
25
 
26
26
  Some python basic helpers for apis.
27
27
 
@@ -104,8 +104,8 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
104
104
  - attrs: >=23.1.0
105
105
  - cattrs: >=23.1.0
106
106
  - requests:
107
- - wexample-helpers: >=16.2.0
108
- - wexample-prompt: >=13.2.0
107
+ - wexample-helpers: >=17.2.0
108
+ - wexample-prompt: >=13.4.0
109
109
 
110
110
  ## Versioning & Compatibility Policy
111
111
 
@@ -1,6 +1,6 @@
1
1
  # api
2
2
 
3
- Version: 6.4.0
3
+ Version: 6.6.0
4
4
 
5
5
  Some python basic helpers for apis.
6
6
 
@@ -83,8 +83,8 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
83
83
  - attrs: >=23.1.0
84
84
  - cattrs: >=23.1.0
85
85
  - requests:
86
- - wexample-helpers: >=16.2.0
87
- - wexample-prompt: >=13.2.0
86
+ - wexample-helpers: >=17.2.0
87
+ - wexample-prompt: >=13.4.0
88
88
 
89
89
  ## Versioning & Compatibility Policy
90
90
 
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-api"
9
- version = "6.4.0"
9
+ version = "6.6.0"
10
10
  description = "Some python basic helpers for apis."
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -21,8 +21,8 @@ dependencies = [
21
21
  "attrs>=23.1.0",
22
22
  "cattrs>=23.1.0",
23
23
  "requests",
24
- "wexample-helpers>=16.2.0",
25
- "wexample-prompt>=13.2.0",
24
+ "wexample-helpers>=17.2.0",
25
+ "wexample-prompt>=13.4.0",
26
26
  ]
27
27
 
28
28
  [project.readme]
@@ -17,13 +17,19 @@ from wexample_prompt.mixins.with_io_manager import WithIoManager
17
17
  from wexample_api.enums.http import ContentType, HttpMethod
18
18
 
19
19
  if TYPE_CHECKING:
20
- from collections.abc import Mapping
21
-
22
20
  from wexample_helpers.const.types import StringsList
23
21
 
24
22
  from wexample_api.common.http_request_payload import HttpRequestPayload
25
23
  from wexample_api.enums.http import Header
26
24
 
25
+ _RAW_BODY_CONTENT_TYPES = frozenset(
26
+ {
27
+ ContentType.FORM_URLENCODED.value,
28
+ ContentType.OCTET_STREAM.value,
29
+ ContentType.TEXT.value,
30
+ }
31
+ )
32
+
27
33
 
28
34
  @base_class
29
35
  class AbstractGateway(
@@ -238,11 +244,7 @@ class AbstractGateway(
238
244
  if files:
239
245
  request_kwargs["data"] = data or {}
240
246
  request_kwargs["files"] = files
241
- elif content_type in {
242
- ContentType.FORM_URLENCODED.value,
243
- ContentType.OCTET_STREAM.value,
244
- ContentType.TEXT.value,
245
- }:
247
+ elif content_type in _RAW_BODY_CONTENT_TYPES:
246
248
  request_kwargs["data"] = data
247
249
  else:
248
250
  request_kwargs["json"] = data
@@ -277,7 +279,7 @@ class AbstractGateway(
277
279
  exception.response = (
278
280
  response # Attach response to exception for debugging
279
281
  )
280
- if raise_exceptions and exception:
282
+ if raise_exceptions:
281
283
  raise exception
282
284
 
283
285
  return self.handle_api_response(
@@ -359,8 +361,10 @@ class AbstractGateway(
359
361
  return raw.split(";", 1)[0].strip().lower() or None
360
362
 
361
363
  def _handle_rate_limiting(self) -> None:
364
+ now = time.time()
362
365
  if self.last_request_time is not None:
363
- elapsed = time.time() - self.last_request_time
366
+ elapsed = now - self.last_request_time
364
367
  if elapsed < self.rate_limit_delay:
365
368
  time.sleep(self.rate_limit_delay - elapsed)
366
- self.last_request_time = time.time()
369
+ now = time.time()
370
+ self.last_request_time = now