etsy-python 1.1.8__tar.gz → 1.1.10__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 (75) hide show
  1. {etsy_python-1.1.8/etsy_python.egg-info → etsy_python-1.1.10}/PKG-INFO +1 -1
  2. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/_version.py +1 -1
  3. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/Listing.py +4 -0
  4. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Listing.py +46 -26
  5. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Listing.py +18 -0
  6. {etsy_python-1.1.8 → etsy_python-1.1.10/etsy_python.egg-info}/PKG-INFO +1 -1
  7. {etsy_python-1.1.8 → etsy_python-1.1.10}/LICENSE +0 -0
  8. {etsy_python-1.1.8 → etsy_python-1.1.10}/MANIFEST.in +0 -0
  9. {etsy_python-1.1.8 → etsy_python-1.1.10}/README.md +0 -0
  10. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/__init__.py +0 -0
  11. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/__init__.py +0 -0
  12. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/auth/OAuth.py +0 -0
  13. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/auth/__init__.py +0 -0
  14. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/Env.py +0 -0
  15. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/Request.py +0 -0
  16. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/Utils.py +0 -0
  17. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/__init__.py +0 -0
  18. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/HolidayPreferences.py +0 -0
  19. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/Language.py +0 -0
  20. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ListingInventory.py +0 -0
  21. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ProcessingProfile.py +0 -0
  22. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ShippingProfile.py +0 -0
  23. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ShopReceipt.py +0 -0
  24. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/__init__.py +0 -0
  25. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/exceptions/BaseAPIException.py +0 -0
  26. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/exceptions/RequestException.py +0 -0
  27. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/exceptions/__init__.py +0 -0
  28. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/FileRequest.py +0 -0
  29. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/HolidayPreferences.py +0 -0
  30. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Miscellaneous.py +0 -0
  31. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/ProcessingProfile.py +0 -0
  32. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Product.py +0 -0
  33. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Receipt.py +0 -0
  34. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Request.py +0 -0
  35. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/ShippingProfile.py +0 -0
  36. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Shop.py +0 -0
  37. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/ShopReturnPolicy.py +0 -0
  38. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Utils.py +0 -0
  39. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/__init__.py +0 -0
  40. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/HolidayPreferences.py +0 -0
  41. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingFile.py +0 -0
  42. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingImage.py +0 -0
  43. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingInventory.py +0 -0
  44. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingOffering.py +0 -0
  45. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingProduct.py +0 -0
  46. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingTranslation.py +0 -0
  47. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingVariationImages.py +0 -0
  48. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingVideo.py +0 -0
  49. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Miscellaneous.py +0 -0
  50. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Payment.py +0 -0
  51. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/PaymentLedgerEntry.py +0 -0
  52. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ProcessingProfile.py +0 -0
  53. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Receipt.py +0 -0
  54. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ReceiptTransactions.py +0 -0
  55. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Response.py +0 -0
  56. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Review.py +0 -0
  57. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Session.py +0 -0
  58. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShippingProfile.py +0 -0
  59. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Shop.py +0 -0
  60. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShopProductionPartner.py +0 -0
  61. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShopReturnPolicy.py +0 -0
  62. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShopSection.py +0 -0
  63. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Taxonomy.py +0 -0
  64. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/User.py +0 -0
  65. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/UserAddress.py +0 -0
  66. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/__init__.py +0 -0
  67. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/enums/RateLimit.py +0 -0
  68. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/enums/Request.py +0 -0
  69. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/enums/__init__.py +0 -0
  70. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/SOURCES.txt +0 -0
  71. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/dependency_links.txt +0 -0
  72. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/requires.txt +0 -0
  73. {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/top_level.txt +0 -0
  74. {etsy_python-1.1.8 → etsy_python-1.1.10}/setup.cfg +0 -0
  75. {etsy_python-1.1.8 → etsy_python-1.1.10}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etsy-python
3
- Version: 1.1.8
3
+ Version: 1.1.10
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.8"
3
+ __version__ = "1.1.10"
@@ -85,6 +85,10 @@ class SortOrder(Enum):
85
85
 
86
86
 
87
87
  class Includes(Enum):
88
+ # SHIPPING and INVENTORY were removed from the includes enum on getListing
89
+ # and getListingsByListingIds, but remain valid on getListingsByShop, which
90
+ # shares this enum. They are kept for backward compatibility; removing them
91
+ # would break callers. May be revisited in the next major version.
88
92
  SHIPPING = "Shipping"
89
93
  IMAGES = "Images"
90
94
  SHOP = "Shop"
@@ -14,6 +14,42 @@ from etsy_python.v3.models.Request import Request
14
14
  from etsy_python.v3.models.FileRequest import FileRequest
15
15
 
16
16
 
17
+ _PERSONALIZATION_DEPRECATION_MSG = (
18
+ "is_personalizable, personalization_is_required, "
19
+ "personalization_char_count_max, and personalization_instructions "
20
+ "are deprecated by the Etsy API and scheduled for removal. "
21
+ "Use the personalization endpoint (update_listing_personalization) "
22
+ "instead. See "
23
+ "https://developers.etsy.com/documentation/tutorials/personalization-migration "
24
+ "for migration details."
25
+ )
26
+
27
+
28
+ def _warn_if_personalization_used(
29
+ is_personalizable: Optional[bool],
30
+ personalization_is_required: Optional[bool],
31
+ personalization_char_count_max: Optional[int],
32
+ personalization_instructions: Optional[str],
33
+ ) -> None:
34
+ """Emit DeprecationWarning when a deprecated personalization field is actively set.
35
+
36
+ Falsy values (False, 0, empty string, None) match the API's documented
37
+ defaults and remain no-ops after the fields are removed, so they do not
38
+ trigger the warning.
39
+ """
40
+ if any([
41
+ is_personalizable,
42
+ personalization_is_required,
43
+ personalization_char_count_max,
44
+ personalization_instructions,
45
+ ]):
46
+ warnings.warn(
47
+ _PERSONALIZATION_DEPRECATION_MSG,
48
+ DeprecationWarning,
49
+ stacklevel=3,
50
+ )
51
+
52
+
17
53
  class CreateDraftListingRequest(Request):
18
54
  nullable = [
19
55
  "shipping_profile_id",
@@ -105,20 +141,12 @@ class CreateDraftListingRequest(Request):
105
141
  self.personalization_is_required = personalization_is_required
106
142
  self.personalization_char_count_max = personalization_char_count_max
107
143
  self.personalization_instructions = personalization_instructions
108
- if any(v is not None for v in [
109
- personalization_is_required, personalization_char_count_max,
144
+ _warn_if_personalization_used(
145
+ is_personalizable,
146
+ personalization_is_required,
147
+ personalization_char_count_max,
110
148
  personalization_instructions,
111
- ]):
112
- warnings.warn(
113
- "personalization_is_required, personalization_char_count_max, and "
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.",
119
- DeprecationWarning,
120
- stacklevel=2,
121
- )
149
+ )
122
150
  self.production_partner_ids = production_partner_ids
123
151
  self.image_ids = image_ids
124
152
  self.is_supply = is_supply
@@ -208,20 +236,12 @@ class UpdateListingRequest(Request):
208
236
  self.personalization_is_required = personalization_is_required
209
237
  self.personalization_char_count_max = personalization_char_count_max
210
238
  self.personalization_instructions = personalization_instructions
211
- if any(v is not None for v in [
212
- personalization_is_required, personalization_char_count_max,
239
+ _warn_if_personalization_used(
240
+ is_personalizable,
241
+ personalization_is_required,
242
+ personalization_char_count_max,
213
243
  personalization_instructions,
214
- ]):
215
- warnings.warn(
216
- "personalization_is_required, personalization_char_count_max, and "
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.",
222
- DeprecationWarning,
223
- stacklevel=2,
224
- )
244
+ )
225
245
  self.state = state
226
246
  self.is_supply = is_supply
227
247
  self.production_partner_ids = production_partner_ids
@@ -168,6 +168,24 @@ class ListingResource:
168
168
  )
169
169
  return self.get_listings_by_listing_ids(listing_ids, includes, legacy)
170
170
 
171
+ def get_listings_inventory_by_listing_ids(
172
+ self, listing_ids: List[int]
173
+ ) -> Union[Response, RequestException]:
174
+ endpoint = "/listings/batch/inventory"
175
+ query_params: Dict[str, Any] = {
176
+ "listing_ids": ",".join(list(map(str, listing_ids))),
177
+ }
178
+ return self.session.make_request(endpoint, query_params=query_params)
179
+
180
+ def get_listings_shipping_by_listing_ids(
181
+ self, listing_ids: List[int]
182
+ ) -> Union[Response, RequestException]:
183
+ endpoint = "/listings/batch/shipping"
184
+ query_params: Dict[str, Any] = {
185
+ "listing_ids": ",".join(list(map(str, listing_ids))),
186
+ }
187
+ return self.session.make_request(endpoint, query_params=query_params)
188
+
171
189
  def get_featured_listings_by_shop(
172
190
  self, shop_id: int, limit: int = 25, offset: int = 0,
173
191
  legacy: Optional[bool] = None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: etsy-python
3
- Version: 1.1.8
3
+ Version: 1.1.10
4
4
  Summary: Etsy API Client Library for Python
5
5
  Author: Amit Ray
6
6
  Author-email: mail@amitray.dev
File without changes
File without changes
File without changes
File without changes
File without changes