vtexpy 0.0.0b28__tar.gz → 0.0.0b30__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.

Potentially problematic release.


This version of vtexpy might be problematic. Click here for more details.

Files changed (31) hide show
  1. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/PKG-INFO +1 -1
  2. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/pyproject.toml +1 -1
  3. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/base.py +16 -22
  4. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/orders.py +7 -0
  5. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/payments_gateway.py +3 -0
  6. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/LICENSE +0 -0
  7. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/README.md +0 -0
  8. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/__init__.py +0 -0
  9. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/__init__.py +0 -0
  10. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/catalog.py +0 -0
  11. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/checkout.py +0 -0
  12. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/custom.py +0 -0
  13. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/license_manager.py +0 -0
  14. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/logistics.py +0 -0
  15. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/master_data.py +0 -0
  16. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/pricing.py +0 -0
  17. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/promotions_and_taxes.py +0 -0
  18. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/types/__init__.py +0 -0
  19. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/types/catalog.py +0 -0
  20. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/types/generic.py +0 -0
  21. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_api/types/license_manager.py +0 -0
  22. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_config.py +0 -0
  23. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_constants.py +0 -0
  24. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_dto.py +0 -0
  25. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_exceptions.py +0 -0
  26. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_logging.py +0 -0
  27. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_sentinels.py +0 -0
  28. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_types.py +0 -0
  29. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_utils.py +0 -0
  30. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/_vtex.py +0 -0
  31. {vtexpy-0.0.0b28 → vtexpy-0.0.0b30}/vtex/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vtexpy
3
- Version: 0.0.0b28
3
+ Version: 0.0.0b30
4
4
  Summary: Unofficial VTEX API's Python SDK
5
5
  Home-page: https://github.com/lvieirajr/vtex-python
6
6
  License: Apache
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
5
5
  [tool.poetry]
6
6
  name = "vtexpy"
7
7
  description = "Unofficial VTEX API's Python SDK"
8
- version = "0.0.0b28"
8
+ version = "0.0.0b30"
9
9
  readme = "README.md"
10
10
  license = "Apache"
11
11
  authors = [
@@ -62,6 +62,7 @@ class BaseAPI:
62
62
  files: Union[RequestFiles, None] = None,
63
63
  config: Union[VTEXConfig, None] = None,
64
64
  rate_limit: Union[RateLimitItem, None] = None,
65
+ rate_limit_key: Union[str, None] = None,
65
66
  response_class: Union[Type[VTEXResponseType], None] = None,
66
67
  **kwargs: Any,
67
68
  ) -> VTEXResponseType:
@@ -87,7 +88,9 @@ class BaseAPI:
87
88
 
88
89
  rate_limiter = (
89
90
  None
90
- if not (rate_limit and request_config.rate_limit_storage_url)
91
+ if not (
92
+ rate_limit and rate_limit_key and request_config.rate_limit_storage_url
93
+ )
91
94
  else strategies.MovingWindowRateLimiter(
92
95
  storage.storage_from_string(request_config.rate_limit_storage_url),
93
96
  )
@@ -120,25 +123,13 @@ class BaseAPI:
120
123
  with Client(timeout=request_config.timeout) as client:
121
124
  with disable_loggers(["httpcore", "httpx"]):
122
125
  while (
123
- rate_limiter
124
- and rate_limit
125
- and not rate_limiter.test(
126
- rate_limit,
127
- request_config.account_name,
128
- endpoint,
129
- )
126
+ rate_limit
127
+ and rate_limit_key
128
+ and rate_limiter
129
+ and not rate_limiter.test(rate_limit, rate_limit_key)
130
130
  ):
131
131
  sleep(1)
132
- self.logger.info(
133
- f"{rate_limiter} limited {request_config.account_name} on "
134
- f"{endpoint}",
135
- extra={
136
- "endpoint": endpoint,
137
- "account_name": request_config.account_name,
138
- "rate_limiter": rate_limiter,
139
- "rate_limit": rate_limit,
140
- },
141
- )
132
+ self.logger.info(f"{rate_limiter} limited {rate_limit_key}")
142
133
 
143
134
  try:
144
135
  response = client.request(
@@ -153,11 +144,14 @@ class BaseAPI:
153
144
  files=files,
154
145
  )
155
146
  finally:
156
- if rate_limiter and rate_limit:
157
- rate_limiter.hit(
147
+ if rate_limit and rate_limit_key and rate_limiter:
148
+ rate_limiter.hit(rate_limit, rate_limit_key)
149
+ remaining = rate_limiter.get_window_stats(
158
150
  rate_limit,
159
- request_config.account_name,
160
- endpoint,
151
+ rate_limit_key,
152
+ ).remaining
153
+ self.logger.info(
154
+ f"Remaining requests for {rate_limit_key}: {remaining}",
161
155
  )
162
156
 
163
157
  response.request.headers = Headers(
@@ -89,6 +89,7 @@ class OrdersAPI(BaseAPI):
89
89
  params=params,
90
90
  config=self.client.config.with_overrides(**kwargs),
91
91
  rate_limit=parse("4500 per minute"),
92
+ rate_limit_key=f"{self.client.config.account_name}:orders",
92
93
  response_class=VTEXPaginatedItemsResponse[Any, Any],
93
94
  )
94
95
 
@@ -104,6 +105,8 @@ class OrdersAPI(BaseAPI):
104
105
  endpoint=f"/api/oms/pvt/orders/{order_id}",
105
106
  environment=self.ENVIRONMENT,
106
107
  config=self.client.config.with_overrides(**kwargs),
108
+ rate_limit=parse("4500 per minute"),
109
+ rate_limit_key=f"{self.client.config.account_name}:orders",
107
110
  response_class=VTEXDataResponse[Any],
108
111
  )
109
112
 
@@ -123,6 +126,8 @@ class OrdersAPI(BaseAPI):
123
126
  ),
124
127
  },
125
128
  config=self.client.config.with_overrides(**kwargs),
129
+ rate_limit=parse("4500 per minute"),
130
+ rate_limit_key=f"{self.client.config.account_name}:orders",
126
131
  response_class=VTEXItemsResponse[Any, Any],
127
132
  )
128
133
 
@@ -147,5 +152,7 @@ class OrdersAPI(BaseAPI):
147
152
  environment=self.ENVIRONMENT,
148
153
  json={"handles": handles},
149
154
  config=self.client.config.with_overrides(**kwargs),
155
+ rate_limit=parse("4500 per minute"),
156
+ rate_limit_key=f"{self.client.config.account_name}:orders",
150
157
  response_class=VTEXDataResponse[Any],
151
158
  )
@@ -38,6 +38,9 @@ class PaymentsGatewayAPI(BaseAPI):
38
38
  environment=self.ENVIRONMENT,
39
39
  config=self.client.config.with_overrides(**kwargs),
40
40
  rate_limit=parse("3500 per minute"),
41
+ rate_limit_key=(
42
+ f"{self.client.config.account_name}:transaction_interactions"
43
+ ),
41
44
  response_class=VTEXItemsResponse[Any, Any],
42
45
  )
43
46
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes