wexample-api 6.3.4__tar.gz → 6.5.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.3.4 → wexample_api-6.5.0}/PKG-INFO +6 -6
  2. {wexample_api-6.3.4 → wexample_api-6.5.0}/README.md +3 -3
  3. {wexample_api-6.3.4 → wexample_api-6.5.0}/pyproject.toml +3 -3
  4. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/common/abstract_gateway.py +15 -8
  5. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/__init__.py +0 -0
  6. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/__pycache__/__init__.py +0 -0
  7. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/common/__init__.py +0 -0
  8. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/common/__pycache__/__init__.py +0 -0
  9. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/common/http_request_payload.py +0 -0
  10. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/const/__init__.py +0 -0
  11. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/const/__pycache__/__init__.py +0 -0
  12. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/const/http.py +0 -0
  13. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/demo/__init__.py +0 -0
  14. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/demo/demo_simple_gateway.py +0 -0
  15. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/enums/__init__.py +0 -0
  16. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/enums/__pycache__/__init__.py +0 -0
  17. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/enums/http.py +0 -0
  18. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/errors/__init__.py +0 -0
  19. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/errors/gateway_authentication_error.py +0 -0
  20. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/errors/gateway_connexion_error.py +0 -0
  21. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/middleware/__init__.py +0 -0
  22. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/models/__init__.py +0 -0
  23. {wexample_api-6.3.4 → wexample_api-6.5.0}/src/wexample_api/py.typed +0 -0
  24. {wexample_api-6.3.4 → wexample_api-6.5.0}/tests/common/__init__.py +0 -0
  25. {wexample_api-6.3.4 → wexample_api-6.5.0}/tests/common/test_http_request_payload.py +0 -0
  26. {wexample_api-6.3.4 → wexample_api-6.5.0}/tests/demo/__init__.py +0 -0
  27. {wexample_api-6.3.4 → wexample_api-6.5.0}/tests/demo/test_demo_simple_gateway.py +0 -0
  28. {wexample_api-6.3.4 → wexample_api-6.5.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.3.4
3
+ Version: 6.5.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.0.0
16
- Requires-Dist: wexample-prompt>=13.1.0
15
+ Requires-Dist: wexample-helpers>=17.0.0
16
+ Requires-Dist: wexample-prompt>=13.3.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.3.4
24
+ Version: 6.5.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.0.0
108
- - wexample-prompt: >=13.1.0
107
+ - wexample-helpers: >=17.0.0
108
+ - wexample-prompt: >=13.3.0
109
109
 
110
110
  ## Versioning & Compatibility Policy
111
111
 
@@ -1,6 +1,6 @@
1
1
  # api
2
2
 
3
- Version: 6.3.4
3
+ Version: 6.5.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.0.0
87
- - wexample-prompt: >=13.1.0
86
+ - wexample-helpers: >=17.0.0
87
+ - wexample-prompt: >=13.3.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.3.4"
9
+ version = "6.5.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.0.0",
25
- "wexample-prompt>=13.1.0",
24
+ "wexample-helpers>=17.0.0",
25
+ "wexample-prompt>=13.3.0",
26
26
  ]
27
27
 
28
28
  [project.readme]
@@ -24,6 +24,14 @@ if TYPE_CHECKING:
24
24
  from wexample_api.common.http_request_payload import HttpRequestPayload
25
25
  from wexample_api.enums.http import Header
26
26
 
27
+ _RAW_BODY_CONTENT_TYPES = frozenset(
28
+ {
29
+ ContentType.FORM_URLENCODED.value,
30
+ ContentType.OCTET_STREAM.value,
31
+ ContentType.TEXT.value,
32
+ }
33
+ )
34
+
27
35
 
28
36
  @base_class
29
37
  class AbstractGateway(
@@ -238,11 +246,7 @@ class AbstractGateway(
238
246
  if files:
239
247
  request_kwargs["data"] = data or {}
240
248
  request_kwargs["files"] = files
241
- elif content_type in (
242
- ContentType.FORM_URLENCODED.value,
243
- ContentType.OCTET_STREAM.value,
244
- ContentType.TEXT.value,
245
- ):
249
+ elif content_type in _RAW_BODY_CONTENT_TYPES:
246
250
  request_kwargs["data"] = data
247
251
  else:
248
252
  request_kwargs["json"] = data
@@ -348,8 +352,9 @@ class AbstractGateway(
348
352
  """
349
353
  if not headers:
350
354
  return None
355
+ target = name.value.lower()
351
356
  raw = next(
352
- (v for k, v in headers.items() if k.lower() == name.value.lower()),
357
+ (v for k, v in headers.items() if k.lower() == target),
353
358
  None,
354
359
  )
355
360
  if raw is None:
@@ -358,8 +363,10 @@ class AbstractGateway(
358
363
  return raw.split(";", 1)[0].strip().lower() or None
359
364
 
360
365
  def _handle_rate_limiting(self) -> None:
366
+ now = time.time()
361
367
  if self.last_request_time is not None:
362
- elapsed = time.time() - self.last_request_time
368
+ elapsed = now - self.last_request_time
363
369
  if elapsed < self.rate_limit_delay:
364
370
  time.sleep(self.rate_limit_delay - elapsed)
365
- self.last_request_time = time.time()
371
+ now = time.time()
372
+ self.last_request_time = now