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.
- {etsy_python-1.1.8/etsy_python.egg-info → etsy_python-1.1.10}/PKG-INFO +1 -1
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/_version.py +1 -1
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/Listing.py +4 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Listing.py +46 -26
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Listing.py +18 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10/etsy_python.egg-info}/PKG-INFO +1 -1
- {etsy_python-1.1.8 → etsy_python-1.1.10}/LICENSE +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/MANIFEST.in +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/README.md +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/auth/OAuth.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/auth/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/Env.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/Request.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/Utils.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/common/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/HolidayPreferences.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/Language.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ListingInventory.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ProcessingProfile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ShippingProfile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/ShopReceipt.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/enums/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/exceptions/BaseAPIException.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/exceptions/RequestException.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/exceptions/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/FileRequest.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/HolidayPreferences.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Miscellaneous.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/ProcessingProfile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Product.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Receipt.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Request.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/ShippingProfile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Shop.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/ShopReturnPolicy.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/Utils.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/models/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/HolidayPreferences.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingFile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingImage.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingInventory.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingOffering.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingProduct.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingTranslation.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingVariationImages.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ListingVideo.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Miscellaneous.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Payment.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/PaymentLedgerEntry.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ProcessingProfile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Receipt.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ReceiptTransactions.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Response.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Review.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Session.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShippingProfile.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Shop.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShopProductionPartner.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShopReturnPolicy.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/ShopSection.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/Taxonomy.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/User.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/UserAddress.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/enums/RateLimit.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/enums/Request.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python/v3/resources/enums/__init__.py +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/SOURCES.txt +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/dependency_links.txt +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/requires.txt +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/etsy_python.egg-info/top_level.txt +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/setup.cfg +0 -0
- {etsy_python-1.1.8 → etsy_python-1.1.10}/setup.py +0 -0
|
@@ -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
|
-
|
|
109
|
-
|
|
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
|
-
|
|
212
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|