From 068a20a994ee7c16207696fe81e9c93597eb5fcb Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Mon, 30 Mar 2026 10:40:45 +0000 Subject: [PATCH 1/4] Initial plan From ac52558e2c00cebc0b5cd643c3cd790623831749 Mon Sep 17 00:00:00 2001 From: "anthropic-code-agent[bot]" <242468646+Claude@users.noreply.github.com> Date: Mon, 30 Mar 2026 10:44:23 +0000 Subject: [PATCH 2/4] fix: Add is_safe parameter and fix string concatenation issues Agent-Logs-Url: https://github.com/amitray007/etsy-python-sdk/sessions/e9a81aac-5766-4f24-9cf0-1bbd28b70777 Co-authored-by: amitray007 <51674969+amitray007@users.noreply.github.com> --- etsy_python/v3/models/Listing.py | 16 +++++++-------- etsy_python/v3/resources/Listing.py | 2 ++ etsy_python/v3/resources/Payment.py | 4 ++-- etsy_python/v3/resources/ShippingProfile.py | 4 ++-- tests/test_listing_resource.py | 22 +++++++++++++++++++++ 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/etsy_python/v3/models/Listing.py b/etsy_python/v3/models/Listing.py index b2a5363..410c0bb 100644 --- a/etsy_python/v3/models/Listing.py +++ b/etsy_python/v3/models/Listing.py @@ -110,10 +110,10 @@ def __init__( personalization_instructions, ]): warnings.warn( - "personalization_is_required, personalization_char_count_max, and " - "personalization_instructions are deprecated and will be removed " - "from the Etsy API on April 9, 2026. Use the personalization " - "endpoint (update_listing_personalization) instead.", + ("personalization_is_required, personalization_char_count_max, and " + "personalization_instructions are deprecated and will be removed " + "from the Etsy API on April 9, 2026. Use the personalization " + "endpoint (update_listing_personalization) instead."), DeprecationWarning, stacklevel=2, ) @@ -211,10 +211,10 @@ def __init__( personalization_instructions, ]): warnings.warn( - "personalization_is_required, personalization_char_count_max, and " - "personalization_instructions are deprecated and will be removed " - "from the Etsy API on April 9, 2026. Use the personalization " - "endpoint (update_listing_personalization) instead.", + ("personalization_is_required, personalization_char_count_max, and " + "personalization_instructions are deprecated and will be removed " + "from the Etsy API on April 9, 2026. Use the personalization " + "endpoint (update_listing_personalization) instead."), DeprecationWarning, stacklevel=2, ) diff --git a/etsy_python/v3/resources/Listing.py b/etsy_python/v3/resources/Listing.py index 97c377d..a0b45f1 100644 --- a/etsy_python/v3/resources/Listing.py +++ b/etsy_python/v3/resources/Listing.py @@ -90,6 +90,7 @@ def find_all_listings_active( max_price: Optional[float] = None, taxonomy_id: Optional[int] = None, shop_location: Optional[str] = None, + is_safe: Optional[bool] = None, legacy: Optional[bool] = None, ) -> Union[Response, RequestException]: endpoint = "/listings/active" @@ -103,6 +104,7 @@ def find_all_listings_active( "max_price": max_price, "taxonomy_id": taxonomy_id, "shop_location": shop_location, + "is_safe": is_safe, "legacy": legacy, } return self.session.make_request(endpoint, query_params=query_params) diff --git a/etsy_python/v3/resources/Payment.py b/etsy_python/v3/resources/Payment.py index 85feda1..837ef54 100644 --- a/etsy_python/v3/resources/Payment.py +++ b/etsy_python/v3/resources/Payment.py @@ -25,8 +25,8 @@ def get_shop_payment_account_ledger_entry_payments( ) -> Union[Response, RequestException]: """Deprecated: use get_payment_account_ledger_entry_payments instead.""" warnings.warn( - "get_shop_payment_account_ledger_entry_payments is deprecated, " - "use get_payment_account_ledger_entry_payments", + ("get_shop_payment_account_ledger_entry_payments is deprecated, " + "use get_payment_account_ledger_entry_payments"), DeprecationWarning, stacklevel=2, ) diff --git a/etsy_python/v3/resources/ShippingProfile.py b/etsy_python/v3/resources/ShippingProfile.py index 4b6a645..4f26729 100644 --- a/etsy_python/v3/resources/ShippingProfile.py +++ b/etsy_python/v3/resources/ShippingProfile.py @@ -91,8 +91,8 @@ def get_shop_shipping_profile_destination_by_shipping_profile( ) -> Union[Response, RequestException]: """Deprecated: use get_shop_shipping_profile_destinations_by_shipping_profile instead.""" warnings.warn( - "get_shop_shipping_profile_destination_by_shipping_profile is deprecated, " - "use get_shop_shipping_profile_destinations_by_shipping_profile", + ("get_shop_shipping_profile_destination_by_shipping_profile is deprecated, " + "use get_shop_shipping_profile_destinations_by_shipping_profile"), DeprecationWarning, stacklevel=2, ) diff --git a/tests/test_listing_resource.py b/tests/test_listing_resource.py index 14ac4ad..c8f62aa 100644 --- a/tests/test_listing_resource.py +++ b/tests/test_listing_resource.py @@ -163,6 +163,28 @@ def test_with_keywords_and_price_range(self, mock_session): assert qp["min_price"] == 10.0 assert qp["max_price"] == 50.0 + def test_with_is_safe_parameter(self, mock_session): + mock_session.make_request.return_value = Response( + 200, make_shop_listing_collection() + ) + resource = ListingResource(session=mock_session) + + resource.find_all_listings_active(is_safe=True) + + qp = mock_session.make_request.call_args[1]["query_params"] + assert qp["is_safe"] is True + + def test_is_safe_defaults_to_none(self, mock_session): + mock_session.make_request.return_value = Response( + 200, make_shop_listing_collection() + ) + resource = ListingResource(session=mock_session) + + resource.find_all_listings_active() + + qp = mock_session.make_request.call_args[1]["query_params"] + assert qp["is_safe"] is None + class TestFindAllActiveListingsByShop: def test_basic_call(self, mock_session): From 873eaef7f1b7aec7ee38368945079cdc1cb3daea Mon Sep 17 00:00:00 2001 From: Amit Ray <51674969+amitray007@users.noreply.github.com> Date: Mon, 30 Mar 2026 18:25:10 +0530 Subject: [PATCH 3/4] fix: revert unnecessary string parenthesization, add baseline updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Revert cosmetic parenthesization of multi-line strings in warnings.warn() calls — implicit string concatenation inside function calls is standard Python and doesn't need wrapping - Update specs/baseline.json to 2026-03-24 spec - Update specs/last-release-check.json to track latest release Co-Authored-By: Claude Opus 4.6 (1M context) --- etsy_python/v3/models/Listing.py | 16 ++++++++-------- etsy_python/v3/resources/Payment.py | 4 ++-- etsy_python/v3/resources/ShippingProfile.py | 4 ++-- specs/baseline.json | 17 +++++++++++++++-- specs/last-release-check.json | 4 ++-- 5 files changed, 29 insertions(+), 16 deletions(-) diff --git a/etsy_python/v3/models/Listing.py b/etsy_python/v3/models/Listing.py index 410c0bb..b2a5363 100644 --- a/etsy_python/v3/models/Listing.py +++ b/etsy_python/v3/models/Listing.py @@ -110,10 +110,10 @@ def __init__( personalization_instructions, ]): warnings.warn( - ("personalization_is_required, personalization_char_count_max, and " - "personalization_instructions are deprecated and will be removed " - "from the Etsy API on April 9, 2026. Use the personalization " - "endpoint (update_listing_personalization) instead."), + "personalization_is_required, personalization_char_count_max, and " + "personalization_instructions are deprecated and will be removed " + "from the Etsy API on April 9, 2026. Use the personalization " + "endpoint (update_listing_personalization) instead.", DeprecationWarning, stacklevel=2, ) @@ -211,10 +211,10 @@ def __init__( personalization_instructions, ]): warnings.warn( - ("personalization_is_required, personalization_char_count_max, and " - "personalization_instructions are deprecated and will be removed " - "from the Etsy API on April 9, 2026. Use the personalization " - "endpoint (update_listing_personalization) instead."), + "personalization_is_required, personalization_char_count_max, and " + "personalization_instructions are deprecated and will be removed " + "from the Etsy API on April 9, 2026. Use the personalization " + "endpoint (update_listing_personalization) instead.", DeprecationWarning, stacklevel=2, ) diff --git a/etsy_python/v3/resources/Payment.py b/etsy_python/v3/resources/Payment.py index 837ef54..85feda1 100644 --- a/etsy_python/v3/resources/Payment.py +++ b/etsy_python/v3/resources/Payment.py @@ -25,8 +25,8 @@ def get_shop_payment_account_ledger_entry_payments( ) -> Union[Response, RequestException]: """Deprecated: use get_payment_account_ledger_entry_payments instead.""" warnings.warn( - ("get_shop_payment_account_ledger_entry_payments is deprecated, " - "use get_payment_account_ledger_entry_payments"), + "get_shop_payment_account_ledger_entry_payments is deprecated, " + "use get_payment_account_ledger_entry_payments", DeprecationWarning, stacklevel=2, ) diff --git a/etsy_python/v3/resources/ShippingProfile.py b/etsy_python/v3/resources/ShippingProfile.py index 4f26729..4b6a645 100644 --- a/etsy_python/v3/resources/ShippingProfile.py +++ b/etsy_python/v3/resources/ShippingProfile.py @@ -91,8 +91,8 @@ def get_shop_shipping_profile_destination_by_shipping_profile( ) -> Union[Response, RequestException]: """Deprecated: use get_shop_shipping_profile_destinations_by_shipping_profile instead.""" warnings.warn( - ("get_shop_shipping_profile_destination_by_shipping_profile is deprecated, " - "use get_shop_shipping_profile_destinations_by_shipping_profile"), + "get_shop_shipping_profile_destination_by_shipping_profile is deprecated, " + "use get_shop_shipping_profile_destinations_by_shipping_profile", DeprecationWarning, stacklevel=2, ) diff --git a/specs/baseline.json b/specs/baseline.json index 8e50488..b4a8806 100644 --- a/specs/baseline.json +++ b/specs/baseline.json @@ -1647,6 +1647,16 @@ "type": "boolean", "description": "This parameter needed to enable new parameters and response values related to processing profiles." } + }, + { + "name": "is_safe", + "in": "query", + "description": "When true, filters out mature/adult content from search results.", + "required": false, + "schema": { + "type": "boolean", + "description": "When true, filters out mature/adult content from search results." + } } ], "responses": { @@ -3209,7 +3219,10 @@ "type": "string", "description": "The type of the personalization question. Note: Currently, only a single question with type 'text_input' is supported. See https://developers.etsy.com/documentation/tutorials/personalization-migration for details about new question types.", "enum": [ - "text_input" + "text_input", + "dropdown", + "unlabeled_upload", + "labeled_upload" ] }, "required": { @@ -5235,7 +5248,7 @@ "/v3/application/shops/{shop_id}/listings/{listing_id}/videos": { "post": { "operationId": "uploadListingVideo", - "description": "
General ReleaseReport bug

This endpoint is ready for production use.

\n\nUploads a new video for a listing, or associates an existing video with a specific listing. You must either provide the `video_id` of an existing video, or the name and binary file data for a video to upload.", + "description": "
General ReleaseReport bug

This endpoint is ready for production use.

\n\nUploads a new video for a listing, or associates an existing video with a specific listing. You must either provide the `video_id` of an existing video, or the name and binary file data for a video to upload. If providing a `video_id`, the video must already be associated with the same shop as the listing, but it does not need to be currently associated with the listing. ", "tags": [ "ShopListing Video" ], diff --git a/specs/last-release-check.json b/specs/last-release-check.json index 150d9bc..aaef51f 100644 --- a/specs/last-release-check.json +++ b/specs/last-release-check.json @@ -1,4 +1,4 @@ { - "last_checked_release": "3.0.0-general-release-2025-10-24", - "last_checked_date": "2025-10-24T18:26:22Z" + "last_checked_release": "3.0.0-general-release-2026-03-24", + "last_checked_date": "2026-03-24T18:09:26Z" } From 481b870eb75044f0eeb8a0a1480291ecb8e4de42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 09:51:41 +0000 Subject: [PATCH 4/4] chore(deps): bump requests from 2.32.4 to 2.33.0 in /etsy_python Bumps [requests](https://github.com/psf/requests) from 2.32.4 to 2.33.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.4...v2.33.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- etsy_python/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etsy_python/requirements.txt b/etsy_python/requirements.txt index 0ffbc04..89b7f07 100644 --- a/etsy_python/requirements.txt +++ b/etsy_python/requirements.txt @@ -1,2 +1,2 @@ -requests==2.32.4 +requests==2.33.0 requests-oauthlib>=1.3.1