etsy-python 1.1.0__tar.gz → 1.1.2__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.0/etsy_python.egg-info → etsy_python-1.1.2}/PKG-INFO +1 -1
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/_version.py +1 -1
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/HolidayPreferences.py +3 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/Listing.py +2 -1
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Listing.py +26 -1
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Listing.py +10 -3
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ReceiptTransactions.py +6 -4
- {etsy_python-1.1.0 → etsy_python-1.1.2/etsy_python.egg-info}/PKG-INFO +1 -1
- {etsy_python-1.1.0 → etsy_python-1.1.2}/LICENSE +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/MANIFEST.in +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/README.md +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/auth/OAuth.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/auth/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/common/Env.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/common/Request.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/common/Utils.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/common/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/Language.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/ListingInventory.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/ProcessingProfile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/ShippingProfile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/ShopReceipt.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/enums/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/exceptions/BaseAPIException.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/exceptions/RequestException.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/exceptions/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/FileRequest.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/HolidayPreferences.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Miscellaneous.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/ProcessingProfile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Product.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Receipt.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Request.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/ShippingProfile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Shop.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/ShopReturnPolicy.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/Utils.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/models/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/HolidayPreferences.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingFile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingImage.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingInventory.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingOffering.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingProduct.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingTranslation.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingVariationImages.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ListingVideo.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Miscellaneous.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Payment.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/PaymentLedgerEntry.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ProcessingProfile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Receipt.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Response.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Review.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Session.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ShippingProfile.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Shop.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ShopProductionPartner.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ShopReturnPolicy.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/ShopSection.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/Taxonomy.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/User.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/UserAddress.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/enums/RateLimit.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/enums/Request.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python/v3/resources/enums/__init__.py +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python.egg-info/SOURCES.txt +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python.egg-info/dependency_links.txt +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python.egg-info/requires.txt +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/etsy_python.egg-info/top_level.txt +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/setup.cfg +0 -0
- {etsy_python-1.1.0 → etsy_python-1.1.2}/setup.py +0 -0
|
@@ -15,6 +15,7 @@ class HOLIDAYS(Enum):
|
|
|
15
15
|
pass
|
|
16
16
|
|
|
17
17
|
class US_HOLIDAYS(Enum):
|
|
18
|
+
"""US holidays (IDs 1-11)."""
|
|
18
19
|
NEW_YEARS_DAY = 1
|
|
19
20
|
MARTIN_LUTHER_KING_JR_DAY = 2
|
|
20
21
|
PRESIDENTS_DAY = 3
|
|
@@ -28,6 +29,8 @@ class US_HOLIDAYS(Enum):
|
|
|
28
29
|
CHRISTMAS_DAY = 11
|
|
29
30
|
|
|
30
31
|
class CA_HOLIDAYS(Enum):
|
|
32
|
+
"""Canadian holidays (IDs 12-23). For other regions (IDs 24-105),
|
|
33
|
+
pass the integer ID directly to update_holiday_preferences()."""
|
|
31
34
|
GOOD_FRIDAY = 12
|
|
32
35
|
EASTER = 13
|
|
33
36
|
VICTORIA_DAY = 14
|
|
@@ -58,7 +58,7 @@ class State(Enum):
|
|
|
58
58
|
SOLD_OUT = "sold_out"
|
|
59
59
|
DRAFT = "draft"
|
|
60
60
|
EXPIRED = "expired"
|
|
61
|
-
REMOVED = "removed"
|
|
61
|
+
REMOVED = "removed" # Not in OAS spec; kept for backward compatibility, may be removed in next major version
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
class VideoState(Enum):
|
|
@@ -92,6 +92,7 @@ class Includes(Enum):
|
|
|
92
92
|
TRANSLATIONS = "Translations"
|
|
93
93
|
INVENTORY = "Inventory"
|
|
94
94
|
VIDEOS = "Videos"
|
|
95
|
+
PERSONALIZATION = "Personalization"
|
|
95
96
|
|
|
96
97
|
|
|
97
98
|
class InventoryIncludes(Enum):
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import warnings
|
|
1
2
|
from typing import List, Optional, Dict, Any
|
|
2
3
|
|
|
3
4
|
from etsy_python.v3.enums.Listing import (
|
|
@@ -104,6 +105,18 @@ class CreateDraftListingRequest(Request):
|
|
|
104
105
|
self.personalization_is_required = personalization_is_required
|
|
105
106
|
self.personalization_char_count_max = personalization_char_count_max
|
|
106
107
|
self.personalization_instructions = personalization_instructions
|
|
108
|
+
if any(v is not None for v in [
|
|
109
|
+
personalization_is_required, personalization_char_count_max,
|
|
110
|
+
personalization_instructions,
|
|
111
|
+
]):
|
|
112
|
+
warnings.warn(
|
|
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.",
|
|
117
|
+
DeprecationWarning,
|
|
118
|
+
stacklevel=2,
|
|
119
|
+
)
|
|
107
120
|
self.production_partner_ids = production_partner_ids
|
|
108
121
|
self.image_ids = image_ids
|
|
109
122
|
self.is_supply = is_supply
|
|
@@ -133,7 +146,7 @@ class UpdateListingRequest(Request):
|
|
|
133
146
|
"tags",
|
|
134
147
|
"featured_rank",
|
|
135
148
|
"production_partner_ids",
|
|
136
|
-
"
|
|
149
|
+
"_type",
|
|
137
150
|
]
|
|
138
151
|
|
|
139
152
|
mandatory: List[str] = []
|
|
@@ -193,6 +206,18 @@ class UpdateListingRequest(Request):
|
|
|
193
206
|
self.personalization_is_required = personalization_is_required
|
|
194
207
|
self.personalization_char_count_max = personalization_char_count_max
|
|
195
208
|
self.personalization_instructions = personalization_instructions
|
|
209
|
+
if any(v is not None for v in [
|
|
210
|
+
personalization_is_required, personalization_char_count_max,
|
|
211
|
+
personalization_instructions,
|
|
212
|
+
]):
|
|
213
|
+
warnings.warn(
|
|
214
|
+
"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.",
|
|
218
|
+
DeprecationWarning,
|
|
219
|
+
stacklevel=2,
|
|
220
|
+
)
|
|
196
221
|
self.state = state
|
|
197
222
|
self.is_supply = is_supply
|
|
198
223
|
self.production_partner_ids = production_partner_ids
|
|
@@ -129,7 +129,10 @@ class ListingResource:
|
|
|
129
129
|
return self.session.make_request(endpoint, query_params=query_params)
|
|
130
130
|
|
|
131
131
|
def get_listings_by_listing_ids(
|
|
132
|
-
self,
|
|
132
|
+
self,
|
|
133
|
+
listing_ids: List[int],
|
|
134
|
+
includes: Optional[List[Includes]] = None,
|
|
135
|
+
legacy: Optional[bool] = None,
|
|
133
136
|
) -> Union[Response, RequestException]:
|
|
134
137
|
endpoint = "/listings/batch"
|
|
135
138
|
query_params: Dict[str, Any] = {
|
|
@@ -137,11 +140,15 @@ class ListingResource:
|
|
|
137
140
|
"includes": ",".join(list(map(lambda inc: inc.value, includes)))
|
|
138
141
|
if includes is not None
|
|
139
142
|
else None,
|
|
143
|
+
"legacy": legacy,
|
|
140
144
|
}
|
|
141
145
|
return self.session.make_request(endpoint, query_params=query_params)
|
|
142
146
|
|
|
143
147
|
def get_listings_by_listings_ids(
|
|
144
|
-
self,
|
|
148
|
+
self,
|
|
149
|
+
listing_ids: List[int],
|
|
150
|
+
includes: Optional[List[Includes]] = None,
|
|
151
|
+
legacy: Optional[bool] = None,
|
|
145
152
|
) -> Union[Response, RequestException]:
|
|
146
153
|
"""Deprecated: use get_listings_by_listing_ids instead."""
|
|
147
154
|
warnings.warn(
|
|
@@ -149,7 +156,7 @@ class ListingResource:
|
|
|
149
156
|
DeprecationWarning,
|
|
150
157
|
stacklevel=2,
|
|
151
158
|
)
|
|
152
|
-
return self.get_listings_by_listing_ids(listing_ids, includes)
|
|
159
|
+
return self.get_listings_by_listing_ids(listing_ids, includes, legacy)
|
|
153
160
|
|
|
154
161
|
def get_featured_listings_by_shop(
|
|
155
162
|
self, shop_id: int, limit: int = 25, offset: int = 0,
|
|
@@ -34,14 +34,16 @@ class ReceiptTransactionsResource:
|
|
|
34
34
|
return self.session.make_request(endpoint)
|
|
35
35
|
|
|
36
36
|
def get_shop_receipt_transactions_by_shop(
|
|
37
|
-
self, shop_id: int, limit: int = 25, offset: int = 0
|
|
37
|
+
self, shop_id: int, limit: int = 25, offset: int = 0,
|
|
38
|
+
legacy: Optional[bool] = None,
|
|
38
39
|
) -> Union[Response, RequestException]:
|
|
39
40
|
endpoint = f"/shops/{shop_id}/transactions"
|
|
40
|
-
query_params: Dict[str, Any] = {"limit": limit, "offset": offset}
|
|
41
|
+
query_params: Dict[str, Any] = {"limit": limit, "offset": offset, "legacy": legacy}
|
|
41
42
|
return self.session.make_request(endpoint, query_params=query_params)
|
|
42
43
|
|
|
43
44
|
def get_shop_receipt_transaction_by_shop(
|
|
44
|
-
self, shop_id: int, limit: int = 25, offset: int = 0
|
|
45
|
+
self, shop_id: int, limit: int = 25, offset: int = 0,
|
|
46
|
+
legacy: Optional[bool] = None,
|
|
45
47
|
) -> Union[Response, RequestException]:
|
|
46
48
|
"""Deprecated: use get_shop_receipt_transactions_by_shop instead."""
|
|
47
49
|
warnings.warn(
|
|
@@ -49,4 +51,4 @@ class ReceiptTransactionsResource:
|
|
|
49
51
|
DeprecationWarning,
|
|
50
52
|
stacklevel=2,
|
|
51
53
|
)
|
|
52
|
-
return self.get_shop_receipt_transactions_by_shop(shop_id, limit, offset)
|
|
54
|
+
return self.get_shop_receipt_transactions_by_shop(shop_id, limit, offset, legacy)
|
|
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
|