etsy-python 1.1.6__tar.gz → 1.1.8__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 (76) hide show
  1. {etsy_python-1.1.6/etsy_python.egg-info → etsy_python-1.1.8}/PKG-INFO +1 -1
  2. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/_version.py +1 -1
  3. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/ListingInventory.py +5 -0
  4. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/Listing.py +10 -6
  5. etsy_python-1.1.8/etsy_python/v3/models/Receipt.py +102 -0
  6. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingInventory.py +9 -1
  7. {etsy_python-1.1.6 → etsy_python-1.1.8/etsy_python.egg-info}/PKG-INFO +1 -1
  8. etsy_python-1.1.6/etsy_python/v3/models/Receipt.py +0 -46
  9. {etsy_python-1.1.6 → etsy_python-1.1.8}/LICENSE +0 -0
  10. {etsy_python-1.1.6 → etsy_python-1.1.8}/MANIFEST.in +0 -0
  11. {etsy_python-1.1.6 → etsy_python-1.1.8}/README.md +0 -0
  12. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/__init__.py +0 -0
  13. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/__init__.py +0 -0
  14. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/auth/OAuth.py +0 -0
  15. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/auth/__init__.py +0 -0
  16. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/common/Env.py +0 -0
  17. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/common/Request.py +0 -0
  18. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/common/Utils.py +0 -0
  19. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/common/__init__.py +0 -0
  20. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/HolidayPreferences.py +0 -0
  21. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/Language.py +0 -0
  22. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/Listing.py +0 -0
  23. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/ProcessingProfile.py +0 -0
  24. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/ShippingProfile.py +0 -0
  25. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/ShopReceipt.py +0 -0
  26. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/enums/__init__.py +0 -0
  27. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/exceptions/BaseAPIException.py +0 -0
  28. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/exceptions/RequestException.py +0 -0
  29. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/exceptions/__init__.py +0 -0
  30. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/FileRequest.py +0 -0
  31. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/HolidayPreferences.py +0 -0
  32. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/Miscellaneous.py +0 -0
  33. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/ProcessingProfile.py +0 -0
  34. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/Product.py +0 -0
  35. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/Request.py +0 -0
  36. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/ShippingProfile.py +0 -0
  37. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/Shop.py +0 -0
  38. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/ShopReturnPolicy.py +0 -0
  39. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/Utils.py +0 -0
  40. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/models/__init__.py +0 -0
  41. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/HolidayPreferences.py +0 -0
  42. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Listing.py +0 -0
  43. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingFile.py +0 -0
  44. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingImage.py +0 -0
  45. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingOffering.py +0 -0
  46. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingProduct.py +0 -0
  47. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingTranslation.py +0 -0
  48. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingVariationImages.py +0 -0
  49. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ListingVideo.py +0 -0
  50. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Miscellaneous.py +0 -0
  51. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Payment.py +0 -0
  52. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/PaymentLedgerEntry.py +0 -0
  53. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ProcessingProfile.py +0 -0
  54. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Receipt.py +0 -0
  55. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ReceiptTransactions.py +0 -0
  56. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Response.py +0 -0
  57. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Review.py +0 -0
  58. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Session.py +0 -0
  59. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ShippingProfile.py +0 -0
  60. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Shop.py +0 -0
  61. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ShopProductionPartner.py +0 -0
  62. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ShopReturnPolicy.py +0 -0
  63. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/ShopSection.py +0 -0
  64. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/Taxonomy.py +0 -0
  65. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/User.py +0 -0
  66. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/UserAddress.py +0 -0
  67. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/__init__.py +0 -0
  68. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/enums/RateLimit.py +0 -0
  69. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/enums/Request.py +0 -0
  70. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python/v3/resources/enums/__init__.py +0 -0
  71. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python.egg-info/SOURCES.txt +0 -0
  72. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python.egg-info/dependency_links.txt +0 -0
  73. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python.egg-info/requires.txt +0 -0
  74. {etsy_python-1.1.6 → etsy_python-1.1.8}/etsy_python.egg-info/top_level.txt +0 -0
  75. {etsy_python-1.1.6 → etsy_python-1.1.8}/setup.cfg +0 -0
  76. {etsy_python-1.1.6 → etsy_python-1.1.8}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etsy-python
3
- Version: 1.1.6
3
+ Version: 1.1.8
4
4
  Summary: Etsy API Client Library for Python
5
5
  Author: Amit Ray
6
6
  Author-email: mail@amitray.dev
@@ -1,3 +1,3 @@
1
1
  """Version information for etsy-python package."""
2
2
 
3
- __version__ = "1.1.6"
3
+ __version__ = "1.1.8"
@@ -3,3 +3,8 @@ from enum import Enum
3
3
 
4
4
  class Includes(Enum):
5
5
  LISTING = "listing"
6
+
7
+
8
+ class MaxVariationsSupported(Enum):
9
+ TWO = "2"
10
+ THREE = "3"
@@ -111,9 +111,11 @@ class CreateDraftListingRequest(Request):
111
111
  ]):
112
112
  warnings.warn(
113
113
  "personalization_is_required, personalization_char_count_max, and "
114
- "personalization_instructions are deprecated and will be removed "
115
- "from the Etsy API on April 9, 2026. Use the personalization "
116
- "endpoint (update_listing_personalization) instead.",
114
+ "personalization_instructions are deprecated by the Etsy API and "
115
+ "scheduled for removal. Use the personalization endpoint "
116
+ "(update_listing_personalization) instead. See "
117
+ "https://developers.etsy.com/documentation/tutorials/personalization-migration "
118
+ "for migration details.",
117
119
  DeprecationWarning,
118
120
  stacklevel=2,
119
121
  )
@@ -212,9 +214,11 @@ class UpdateListingRequest(Request):
212
214
  ]):
213
215
  warnings.warn(
214
216
  "personalization_is_required, personalization_char_count_max, and "
215
- "personalization_instructions are deprecated and will be removed "
216
- "from the Etsy API on April 9, 2026. Use the personalization "
217
- "endpoint (update_listing_personalization) instead.",
217
+ "personalization_instructions are deprecated by the Etsy API and "
218
+ "scheduled for removal. Use the personalization endpoint "
219
+ "(update_listing_personalization) instead. See "
220
+ "https://developers.etsy.com/documentation/tutorials/personalization-migration "
221
+ "for migration details.",
218
222
  DeprecationWarning,
219
223
  stacklevel=2,
220
224
  )
@@ -0,0 +1,102 @@
1
+ from typing import List, Optional, TypedDict
2
+
3
+ from etsy_python.v3.models.Request import Request
4
+
5
+
6
+ class CustomsItem(TypedDict):
7
+ # HS_code preserves Etsy's spec casing (Harmonized System code); do not snake_case.
8
+ country_of_origin: Optional[str]
9
+ declared_value: Optional[float]
10
+ HS_code: Optional[str]
11
+
12
+
13
+ class CreateReceiptShipmentRequest(Request):
14
+ # Spec marks these fields nullable: true. Strings + array are added so callers
15
+ # can pass empty values to clear them; floats are intentionally excluded so
16
+ # legitimate zero values (free label, zero duty) serialize as 0, not null.
17
+ nullable: List[str] = [
18
+ "mail_class",
19
+ "weight_units",
20
+ "dimension_units",
21
+ "shipping_label_currency",
22
+ "revenue_eligibility",
23
+ "ship_from_country",
24
+ "ship_to_country",
25
+ "incoterm",
26
+ "customs_data",
27
+ "duty_currency",
28
+ "ship_date",
29
+ ]
30
+ mandatory: List[str] = []
31
+
32
+ def __init__(
33
+ self,
34
+ tracking_code: Optional[str] = None,
35
+ carrier_name: Optional[str] = None,
36
+ send_bcc: Optional[bool] = None,
37
+ note_to_buyer: Optional[str] = None,
38
+ mail_class: Optional[str] = None,
39
+ weight: Optional[float] = None,
40
+ weight_units: Optional[str] = None,
41
+ length: Optional[float] = None,
42
+ width: Optional[float] = None,
43
+ height: Optional[float] = None,
44
+ dimension_units: Optional[str] = None,
45
+ shipping_label_cost: Optional[float] = None,
46
+ shipping_label_currency: Optional[str] = None,
47
+ revenue_eligibility: Optional[str] = None,
48
+ ship_from_country: Optional[str] = None,
49
+ ship_to_country: Optional[str] = None,
50
+ incoterm: Optional[str] = None,
51
+ customs_data: Optional[List[CustomsItem]] = None,
52
+ duty_amount: Optional[float] = None,
53
+ duty_currency: Optional[str] = None,
54
+ ship_date: Optional[str] = None,
55
+ ):
56
+ self.tracking_code = tracking_code
57
+ self.carrier_name = carrier_name
58
+ self.send_bcc = send_bcc
59
+ self.note_to_buyer = note_to_buyer
60
+ self.mail_class = mail_class
61
+ self.weight = weight
62
+ self.weight_units = weight_units
63
+ self.length = length
64
+ self.width = width
65
+ self.height = height
66
+ self.dimension_units = dimension_units
67
+ self.shipping_label_cost = shipping_label_cost
68
+ self.shipping_label_currency = shipping_label_currency
69
+ self.revenue_eligibility = revenue_eligibility
70
+ self.ship_from_country = ship_from_country
71
+ self.ship_to_country = ship_to_country
72
+ self.incoterm = incoterm
73
+ self.customs_data = customs_data
74
+ self.duty_amount = duty_amount
75
+ self.duty_currency = duty_currency
76
+ self.ship_date = ship_date
77
+
78
+ super().__init__(
79
+ nullable=CreateReceiptShipmentRequest.nullable,
80
+ mandatory=CreateReceiptShipmentRequest.mandatory,
81
+ )
82
+
83
+
84
+ class UpdateShopReceiptRequest(Request):
85
+ nullable: List[str] = [
86
+ "was_shipped",
87
+ "was_paid",
88
+ ]
89
+ mandatory: List[str] = []
90
+
91
+ def __init__(
92
+ self,
93
+ was_shipped: Optional[bool] = None,
94
+ was_paid: Optional[bool] = None,
95
+ ):
96
+ self.was_shipped = was_shipped
97
+ self.was_paid = was_paid
98
+
99
+ super().__init__(
100
+ nullable=UpdateShopReceiptRequest.nullable,
101
+ mandatory=UpdateShopReceiptRequest.mandatory,
102
+ )
@@ -3,6 +3,7 @@ from typing import Optional, Dict, Any, Union
3
3
 
4
4
  from etsy_python.v3.exceptions.RequestException import RequestException
5
5
  from etsy_python.v3.enums.Listing import InventoryIncludes
6
+ from etsy_python.v3.enums.ListingInventory import MaxVariationsSupported
6
7
  from etsy_python.v3.models.Listing import UpdateListingInventoryRequest
7
8
  from etsy_python.v3.resources.Session import EtsyClient
8
9
  from etsy_python.v3.resources.enums.Request import Method
@@ -31,9 +32,16 @@ class ListingInventoryResource:
31
32
  def update_listing_inventory(
32
33
  self, listing_id: int, listing_inventory: UpdateListingInventoryRequest,
33
34
  legacy: Optional[bool] = None,
35
+ max_variations_supported: Optional[MaxVariationsSupported] = None,
34
36
  ) -> Union[Response, RequestException]:
35
37
  endpoint = f"/listings/{listing_id}/inventory"
38
+ query_params: Dict[str, Any] = {
39
+ "legacy": legacy,
40
+ "max_variations_supported": max_variations_supported.value
41
+ if max_variations_supported is not None
42
+ else None,
43
+ }
36
44
  return self.session.make_request(
37
45
  endpoint, method=Method.PUT, payload=listing_inventory,
38
- query_params={"legacy": legacy},
46
+ query_params=query_params,
39
47
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etsy-python
3
- Version: 1.1.6
3
+ Version: 1.1.8
4
4
  Summary: Etsy API Client Library for Python
5
5
  Author: Amit Ray
6
6
  Author-email: mail@amitray.dev
@@ -1,46 +0,0 @@
1
- from typing import List, Optional
2
-
3
- from etsy_python.v3.models.Request import Request
4
-
5
-
6
- class CreateReceiptShipmentRequest(Request):
7
- nullable: List[str] = []
8
- mandatory: List[str] = []
9
-
10
- def __init__(
11
- self,
12
- tracking_code: Optional[str] = None,
13
- carrier_name: Optional[str] = None,
14
- send_bcc: Optional[bool] = None,
15
- note_to_buyer: Optional[str] = None,
16
- ):
17
- self.tracking_code = tracking_code
18
- self.carrier_name = carrier_name
19
- self.send_bcc = send_bcc
20
- self.note_to_buyer = note_to_buyer
21
-
22
- super().__init__(
23
- nullable=CreateReceiptShipmentRequest.nullable,
24
- mandatory=CreateReceiptShipmentRequest.mandatory,
25
- )
26
-
27
-
28
- class UpdateShopReceiptRequest(Request):
29
- nullable: List[str] = [
30
- "was_shipped",
31
- "was_paid",
32
- ]
33
- mandatory: List[str] = []
34
-
35
- def __init__(
36
- self,
37
- was_shipped: Optional[bool] = None,
38
- was_paid: Optional[bool] = None,
39
- ):
40
- self.was_shipped = was_shipped
41
- self.was_paid = was_paid
42
-
43
- super().__init__(
44
- nullable=UpdateShopReceiptRequest.nullable,
45
- mandatory=UpdateShopReceiptRequest.mandatory,
46
- )
File without changes
File without changes
File without changes
File without changes
File without changes