producteca 2.0.38__tar.gz → 2.0.40__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 producteca might be problematic. Click here for more details.

Files changed (31) hide show
  1. {producteca-2.0.38 → producteca-2.0.40}/PKG-INFO +1 -1
  2. {producteca-2.0.38 → producteca-2.0.40}/producteca/products/products.py +38 -39
  3. {producteca-2.0.38 → producteca-2.0.40}/pyproject.toml +1 -1
  4. {producteca-2.0.38 → producteca-2.0.40}/LICENSE +0 -0
  5. {producteca-2.0.38 → producteca-2.0.40}/README.md +0 -0
  6. {producteca-2.0.38 → producteca-2.0.40}/producteca/__init__.py +0 -0
  7. {producteca-2.0.38 → producteca-2.0.40}/producteca/abstract/__init__.py +0 -0
  8. {producteca-2.0.38 → producteca-2.0.40}/producteca/abstract/abstract_dataclass.py +0 -0
  9. {producteca-2.0.38 → producteca-2.0.40}/producteca/client.py +0 -0
  10. {producteca-2.0.38 → producteca-2.0.40}/producteca/config/__init__.py +0 -0
  11. {producteca-2.0.38 → producteca-2.0.40}/producteca/config/config.py +0 -0
  12. {producteca-2.0.38 → producteca-2.0.40}/producteca/payments/__init__.py +0 -0
  13. {producteca-2.0.38 → producteca-2.0.40}/producteca/payments/payments.py +0 -0
  14. {producteca-2.0.38 → producteca-2.0.40}/producteca/payments/tests/__init__.py +0 -0
  15. {producteca-2.0.38 → producteca-2.0.40}/producteca/payments/tests/test_payments.py +0 -0
  16. {producteca-2.0.38 → producteca-2.0.40}/producteca/products/__init__.py +0 -0
  17. {producteca-2.0.38 → producteca-2.0.40}/producteca/products/search_products.py +0 -0
  18. {producteca-2.0.38 → producteca-2.0.40}/producteca/products/tests/__init__.py +0 -0
  19. {producteca-2.0.38 → producteca-2.0.40}/producteca/products/tests/test_products.py +0 -0
  20. {producteca-2.0.38 → producteca-2.0.40}/producteca/products/tests/test_search_products.py +0 -0
  21. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/__init__.py +0 -0
  22. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/sales_orders.py +0 -0
  23. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/search_sale_orders.py +0 -0
  24. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/tests/__init__.py +0 -0
  25. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/tests/search.json +0 -0
  26. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/tests/test_sales_orders.py +0 -0
  27. {producteca-2.0.38 → producteca-2.0.40}/producteca/sales_orders/tests/test_search_so.py +0 -0
  28. {producteca-2.0.38 → producteca-2.0.40}/producteca/shipments/__init__.py +0 -0
  29. {producteca-2.0.38 → producteca-2.0.40}/producteca/shipments/shipment.py +0 -0
  30. {producteca-2.0.38 → producteca-2.0.40}/producteca/shipments/tests/__init__.py +0 -0
  31. {producteca-2.0.38 → producteca-2.0.40}/producteca/shipments/tests/test_shipment.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: producteca
3
- Version: 2.0.38
3
+ Version: 2.0.40
4
4
  Summary:
5
5
  Author: Chroma Agency, Matias Rivera
6
6
  Author-email: mrivera@chroma.agency
@@ -69,13 +69,13 @@ class Integration(BaseModel):
69
69
  class Variation(BaseModel):
70
70
  variation_id: Optional[int] = Field(default=None, alias='variationId')
71
71
  components: Optional[List] = None
72
- pictures: Optional[List[Picture]] = None
73
- stocks: Optional[List[Stock]] = None
72
+ pictures: Optional[Union[List[Picture], List]] = None
73
+ stocks: Optional[Union[List[Stock], List]] = None
74
74
  attributes_hash: Optional[str] = Field(default=None, alias='attributesHash')
75
75
  primary_color: Optional[str] = Field(default=None, alias='primaryColor')
76
76
  thumbnail: Optional[str] = None
77
- attributes: Optional[List[Attribute]] = None
78
- integrations: Optional[List[Integration]] = None
77
+ attributes: Optional[Union[List[Attribute], List]] = None
78
+ integrations: Optional[Union[List[Integration], List]] = None
79
79
  id: Optional[int] = None
80
80
  sku: Optional[str] = None
81
81
  barcode: Optional[str] = None
@@ -96,34 +96,34 @@ class BundleComponent(BaseModel):
96
96
 
97
97
  class BundleVariation(BaseModel):
98
98
  variation_id: int = Field(alias='variationId')
99
- components: List[BundleComponent]
99
+ components: Union[List[BundleComponent], List]
100
100
 
101
101
 
102
102
  class BundleResult(BaseModel):
103
103
  company_id: int = Field(alias='companyId')
104
104
  product_id: int = Field(alias='productId')
105
- variations: List[BundleVariation]
105
+ variations: Union[List[BundleVariation], List]
106
106
  id: str
107
107
 
108
108
 
109
109
  class BundleResponse(BaseModel):
110
- results: List[BundleResult]
110
+ results: Union[List[BundleResult], List]
111
111
  count: int
112
112
 
113
113
 
114
114
  class Product(BaseModel):
115
- integrations: Optional[List[Integration]] = None
116
- variations: Optional[List[Variation]] = None
115
+ integrations: Optional[Union[List[Integration], List]] = None
116
+ variations: Optional[Union[List[Variation], List]] = None
117
117
  is_simple: Optional[bool] = Field(default=None, alias='isSimple')
118
118
  has_variations: Optional[bool] = Field(default=None, alias='hasVariations')
119
119
  thumbnail: Optional[str] = None
120
120
  category: Optional[str] = None
121
121
  notes: Optional[str] = None
122
- prices: Optional[List[Price]] = None
122
+ prices: Optional[Union[List[Price], List]] = None
123
123
  buying_price: Optional[float] = Field(default=None, alias='buyingPrice')
124
124
  is_archived: Optional[bool] = Field(default=None, alias='isArchived')
125
- dimensions: Optional[Dimensions] = None
126
- attributes: Optional[List[Attribute]] = None
125
+ dimensions: Optional[Union[Dimensions, dict]] = None
126
+ attributes: Optional[Union[List[Attribute], List]] = None
127
127
  metadata: Optional[List[str]] = None
128
128
  is_original: Optional[bool] = Field(default=None, alias='isOriginal')
129
129
  name: str
@@ -138,16 +138,16 @@ class ProductVariationBase(BaseModel):
138
138
  variation_id: Optional[int] = Field(default=None, alias='variationId')
139
139
  code: Optional[str] = None
140
140
  barcode: Optional[str] = None
141
- attributes: List[Attribute] = []
141
+ attributes: Union[List[Attribute], List] = []
142
142
  tags: Optional[List[str]] = []
143
143
  buying_price: Optional[float] = Field(0, alias='buyingPrice')
144
- dimensions: Optional[Dimensions] = Field(default_factory=Dimensions)
144
+ dimensions: Optional[Union[Dimensions, dict]] = Field(default_factory=Dimensions)
145
145
  brand: Optional[str] = ''
146
146
  notes: Optional[str] = ''
147
- deals: Optional[List[Deal]] = []
148
- stocks: List[Stock]
149
- prices: Optional[List[Price]] = []
150
- pictures: Optional[List[Picture]] = []
147
+ deals: Optional[Union[List[Deal], List]] = []
148
+ stocks: Optional[Union[List[Stock], List]] = []
149
+ prices: Optional[Union[List[Price], List]] = []
150
+ pictures: Optional[Union[List[Picture], List]] = []
151
151
 
152
152
 
153
153
  class ProductVariation(ProductVariationBase):
@@ -180,11 +180,11 @@ class MeliProduct(BaseModel):
180
180
  product_id: Optional[int] = Field(default=None, alias='productId')
181
181
  tags: Optional[List[str]] = Field(default=None)
182
182
  has_custom_shipping_costs: Optional[bool] = Field(default=None, alias='hasCustomShippingCosts')
183
- shipping: Optional[Shipping] = None
184
- mshops_shipping: Optional[MShopsShipping] = Field(default=None, alias='mShopsShipping')
183
+ shipping: Optional[Union[Shipping, dict]] = None
184
+ mshops_shipping: Optional[Union[MShopsShipping, dict]] = Field(default=None, alias='mShopsShipping')
185
185
  add_free_shipping_cost_to_price: Optional[bool] = Field(default=None, alias='addFreeShippingCostToPrice')
186
- category: MeliCategory
187
- attribute_completion: Optional[AttributeCompletion] = Field(default=None, alias='attributeCompletion')
186
+ category: Union[MeliCategory, dict]
187
+ attribute_completion: Optional[Union[AttributeCompletion, dict]] = Field(default=None, alias='attributeCompletion')
188
188
  catalog_products: Optional[List[str]] = Field(default=None, alias='catalogProducts')
189
189
  warranty: Optional[str] = None
190
190
  domain: Optional[str] = None
@@ -211,8 +211,8 @@ class ResolvedValue(BaseModel):
211
211
 
212
212
  class ResolvedError(BaseModel):
213
213
  resolved: Optional[bool] = None
214
- reason: Optional[ErrorReason] = None
215
- value: Optional[ResolvedValue] = None
214
+ reason: Optional[Union[ErrorReason, dict]] = None
215
+ value: Optional[Union[ResolvedValue, dict]] = None
216
216
  statusCode: Optional[int] = None
217
217
 
218
218
 
@@ -227,20 +227,20 @@ class ErrorContext(BaseModel):
227
227
 
228
228
 
229
229
  class SynchronizeResponse(BaseModel):
230
- product: Optional[ResolvedError] = None
231
- variation: Optional[ResolvedError] = None
232
- deals: Optional[ResolvedError] = None
233
- bundles: Optional[ResolvedError] = None
234
- taxes: Optional[ResolvedError] = None
235
- meliProductListingIntegrations: Optional[ResolvedError] = None
236
- tags: Optional[ResolvedError] = None
237
- productIntegrations: Optional[ResolvedError] = None
230
+ product: Optional[Union[ResolvedError, dict]] = None
231
+ variation: Optional[Union[ResolvedError, dict]] = None
232
+ deals: Optional[Union[ResolvedError, dict]] = None
233
+ bundles: Optional[Union[ResolvedError, dict]] = None
234
+ taxes: Optional[Union[ResolvedError, dict]] = None
235
+ meliProductListingIntegrations: Optional[Union[ResolvedError, dict]] = None
236
+ tags: Optional[Union[ResolvedError, dict]] = None
237
+ productIntegrations: Optional[Union[ResolvedError, dict]] = None
238
238
  statusCode: Optional[int] = None
239
- error_context: Optional[ErrorContext] = Field(None, alias='error@context')
239
+ error_context: Optional[Union[ErrorContext, dict]] = Field(None, alias='error@context')
240
240
 
241
241
 
242
242
  class ListedSynchronizeResponse(BaseModel):
243
- results: List[SynchronizeResponse]
243
+ results: Union[List[SynchronizeResponse], List]
244
244
 
245
245
 
246
246
  @dataclass
@@ -262,6 +262,10 @@ class ProductService(BaseService):
262
262
  raise Exception("Sku or code should be provided to update the product")
263
263
  data = product_variation.model_dump(by_alias=True, exclude_none=True)
264
264
  response = requests.post(endpoint_url, json=data, headers=headers)
265
+ if not response.ok:
266
+ raise Exception(f"Error getting product {product_variation.sku} - {product_variation.code}\n {response.text}")
267
+ if response.status_code == 204:
268
+ raise Exception("Status code is 204, meaning nothing was updated or created")
265
269
  response_data = response.json()
266
270
  try:
267
271
  return Product(**response_data)
@@ -286,11 +290,6 @@ class ProductService(BaseService):
286
290
  raise Exception(f"Errored with the following message {error_res.message} - {error_res.model_dump_json()}")
287
291
  except ValidationError:
288
292
  pass
289
-
290
- if not response.ok:
291
- raise Exception(f"Error getting product {product_variation.sku} - {product_variation.code}\n {response.text}")
292
- if response.status_code == 204:
293
- raise Exception("Status code is 204, meaning nothing was updated or created")
294
293
  raise Exception(f"Unhandled error, check response {response.text}")
295
294
 
296
295
  def get(self, product_id: int) -> "ProductService":
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "producteca"
3
- version = "2.0.38"
3
+ version = "2.0.40"
4
4
  description = ""
5
5
  authors = ["Chroma Agency, Matias Rivera <mrivera@chroma.agency>"]
6
6
  readme = "README.md"
File without changes
File without changes