From d5141350978ece5b66ade27a3c86b7b9b65dd509 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 04:05:53 +0000 Subject: [PATCH 1/3] codegen metadata --- .stats.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 0221da5..45760cc 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 6 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brand-dev%2Fbrand.dev-c921d60adf854da13dbb83d547cbd8a32fd86d625fb12a325b7d305da7f3a93a.yml -openapi_spec_hash: c02b88f26faaf9fd04177b77d34fd5c3 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brand-dev%2Fbrand.dev-1f1bc5d70a89b56425a3bafbc06a80c233300b5d5d64438aa633597085a45974.yml +openapi_spec_hash: e87e758c5f59476e0ec486fa59455d60 config_hash: 372b187172495fc2f76f05ba016b4a45 From 9039f1632ed997579d6ab4f55a83adcf2fbc3fce Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 04:43:25 +0000 Subject: [PATCH 2/3] feat(api): manual updates --- .stats.yml | 4 +- api.md | 2 + src/brand/dev/resources/brand.py | 88 +++++++++++++++++++ src/brand/dev/types/__init__.py | 2 + src/brand/dev/types/brand_prefetch_params.py | 12 +++ .../dev/types/brand_prefetch_response.py | 18 ++++ tests/api_resources/test_brand.py | 69 +++++++++++++++ 7 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 src/brand/dev/types/brand_prefetch_params.py create mode 100644 src/brand/dev/types/brand_prefetch_response.py diff --git a/.stats.yml b/.stats.yml index 45760cc..91105ad 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 6 +configured_endpoints: 7 openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/brand-dev%2Fbrand.dev-1f1bc5d70a89b56425a3bafbc06a80c233300b5d5d64438aa633597085a45974.yml openapi_spec_hash: e87e758c5f59476e0ec486fa59455d60 -config_hash: 372b187172495fc2f76f05ba016b4a45 +config_hash: bb3f3ba0dca413263e40968648f9a1a6 diff --git a/api.md b/api.md index da9469f..0792451 100644 --- a/api.md +++ b/api.md @@ -7,6 +7,7 @@ from brand.dev.types import ( BrandRetrieveResponse, BrandAIQueryResponse, BrandIdentifyFromTransactionResponse, + BrandPrefetchResponse, BrandRetrieveByTickerResponse, BrandRetrieveNaicsResponse, BrandSearchResponse, @@ -18,6 +19,7 @@ Methods: - client.brand.retrieve(\*\*params) -> BrandRetrieveResponse - client.brand.ai_query(\*\*params) -> BrandAIQueryResponse - client.brand.identify_from_transaction(\*\*params) -> BrandIdentifyFromTransactionResponse +- client.brand.prefetch(\*\*params) -> BrandPrefetchResponse - client.brand.retrieve_by_ticker(\*\*params) -> BrandRetrieveByTickerResponse - client.brand.retrieve_naics(\*\*params) -> BrandRetrieveNaicsResponse - client.brand.search(\*\*params) -> BrandSearchResponse diff --git a/src/brand/dev/resources/brand.py b/src/brand/dev/resources/brand.py index 95ecfa0..7428064 100644 --- a/src/brand/dev/resources/brand.py +++ b/src/brand/dev/resources/brand.py @@ -10,6 +10,7 @@ from ..types import ( brand_search_params, brand_ai_query_params, + brand_prefetch_params, brand_retrieve_params, brand_retrieve_naics_params, brand_retrieve_by_ticker_params, @@ -28,6 +29,7 @@ from .._base_client import make_request_options from ..types.brand_search_response import BrandSearchResponse from ..types.brand_ai_query_response import BrandAIQueryResponse +from ..types.brand_prefetch_response import BrandPrefetchResponse from ..types.brand_retrieve_response import BrandRetrieveResponse from ..types.brand_retrieve_naics_response import BrandRetrieveNaicsResponse from ..types.brand_retrieve_by_ticker_response import BrandRetrieveByTickerResponse @@ -247,6 +249,43 @@ def identify_from_transaction( cast_to=BrandIdentifyFromTransactionResponse, ) + def prefetch( + self, + *, + domain: str, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + ) -> BrandPrefetchResponse: + """ + Signal that you may fetch brand data for a particular domain soon to improve + latency. This endpoint does not charge credits and is available for paid + customers to optimize future requests. [You must be on a paid plan to use this + endpoint] + + Args: + domain: Domain name to prefetch brand data for + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + return self._post( + "/brand/prefetch", + body=maybe_transform({"domain": domain}, brand_prefetch_params.BrandPrefetchParams), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=BrandPrefetchResponse, + ) + def retrieve_by_ticker( self, *, @@ -573,6 +612,43 @@ async def identify_from_transaction( cast_to=BrandIdentifyFromTransactionResponse, ) + async def prefetch( + self, + *, + domain: str, + # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs. + # The extra values given here take precedence over values defined on the client or passed to this method. + extra_headers: Headers | None = None, + extra_query: Query | None = None, + extra_body: Body | None = None, + timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN, + ) -> BrandPrefetchResponse: + """ + Signal that you may fetch brand data for a particular domain soon to improve + latency. This endpoint does not charge credits and is available for paid + customers to optimize future requests. [You must be on a paid plan to use this + endpoint] + + Args: + domain: Domain name to prefetch brand data for + + extra_headers: Send extra headers + + extra_query: Add additional query parameters to the request + + extra_body: Add additional JSON properties to the request + + timeout: Override the client-level default timeout for this request, in seconds + """ + return await self._post( + "/brand/prefetch", + body=await async_maybe_transform({"domain": domain}, brand_prefetch_params.BrandPrefetchParams), + options=make_request_options( + extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout + ), + cast_to=BrandPrefetchResponse, + ) + async def retrieve_by_ticker( self, *, @@ -705,6 +781,9 @@ def __init__(self, brand: BrandResource) -> None: self.identify_from_transaction = to_raw_response_wrapper( brand.identify_from_transaction, ) + self.prefetch = to_raw_response_wrapper( + brand.prefetch, + ) self.retrieve_by_ticker = to_raw_response_wrapper( brand.retrieve_by_ticker, ) @@ -729,6 +808,9 @@ def __init__(self, brand: AsyncBrandResource) -> None: self.identify_from_transaction = async_to_raw_response_wrapper( brand.identify_from_transaction, ) + self.prefetch = async_to_raw_response_wrapper( + brand.prefetch, + ) self.retrieve_by_ticker = async_to_raw_response_wrapper( brand.retrieve_by_ticker, ) @@ -753,6 +835,9 @@ def __init__(self, brand: BrandResource) -> None: self.identify_from_transaction = to_streamed_response_wrapper( brand.identify_from_transaction, ) + self.prefetch = to_streamed_response_wrapper( + brand.prefetch, + ) self.retrieve_by_ticker = to_streamed_response_wrapper( brand.retrieve_by_ticker, ) @@ -777,6 +862,9 @@ def __init__(self, brand: AsyncBrandResource) -> None: self.identify_from_transaction = async_to_streamed_response_wrapper( brand.identify_from_transaction, ) + self.prefetch = async_to_streamed_response_wrapper( + brand.prefetch, + ) self.retrieve_by_ticker = async_to_streamed_response_wrapper( brand.retrieve_by_ticker, ) diff --git a/src/brand/dev/types/__init__.py b/src/brand/dev/types/__init__.py index 00e8bf7..3feb8cc 100644 --- a/src/brand/dev/types/__init__.py +++ b/src/brand/dev/types/__init__.py @@ -4,9 +4,11 @@ from .brand_search_params import BrandSearchParams as BrandSearchParams from .brand_ai_query_params import BrandAIQueryParams as BrandAIQueryParams +from .brand_prefetch_params import BrandPrefetchParams as BrandPrefetchParams from .brand_retrieve_params import BrandRetrieveParams as BrandRetrieveParams from .brand_search_response import BrandSearchResponse as BrandSearchResponse from .brand_ai_query_response import BrandAIQueryResponse as BrandAIQueryResponse +from .brand_prefetch_response import BrandPrefetchResponse as BrandPrefetchResponse from .brand_retrieve_response import BrandRetrieveResponse as BrandRetrieveResponse from .brand_retrieve_naics_params import BrandRetrieveNaicsParams as BrandRetrieveNaicsParams from .brand_retrieve_naics_response import BrandRetrieveNaicsResponse as BrandRetrieveNaicsResponse diff --git a/src/brand/dev/types/brand_prefetch_params.py b/src/brand/dev/types/brand_prefetch_params.py new file mode 100644 index 0000000..2053c51 --- /dev/null +++ b/src/brand/dev/types/brand_prefetch_params.py @@ -0,0 +1,12 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from __future__ import annotations + +from typing_extensions import Required, TypedDict + +__all__ = ["BrandPrefetchParams"] + + +class BrandPrefetchParams(TypedDict, total=False): + domain: Required[str] + """Domain name to prefetch brand data for""" diff --git a/src/brand/dev/types/brand_prefetch_response.py b/src/brand/dev/types/brand_prefetch_response.py new file mode 100644 index 0000000..4995856 --- /dev/null +++ b/src/brand/dev/types/brand_prefetch_response.py @@ -0,0 +1,18 @@ +# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +from typing import Optional + +from .._models import BaseModel + +__all__ = ["BrandPrefetchResponse"] + + +class BrandPrefetchResponse(BaseModel): + domain: Optional[str] = None + """The domain that was queued for prefetching""" + + message: Optional[str] = None + """Success message""" + + status: Optional[str] = None + """Status of the response, e.g., 'ok'""" diff --git a/tests/api_resources/test_brand.py b/tests/api_resources/test_brand.py index 3f1629e..78704e4 100644 --- a/tests/api_resources/test_brand.py +++ b/tests/api_resources/test_brand.py @@ -12,6 +12,7 @@ from brand.dev.types import ( BrandSearchResponse, BrandAIQueryResponse, + BrandPrefetchResponse, BrandRetrieveResponse, BrandRetrieveNaicsResponse, BrandRetrieveByTickerResponse, @@ -185,6 +186,40 @@ def test_streaming_response_identify_from_transaction(self, client: BrandDev) -> assert cast(Any, response.is_closed) is True + @pytest.mark.skip() + @parametrize + def test_method_prefetch(self, client: BrandDev) -> None: + brand = client.brand.prefetch( + domain="domain", + ) + assert_matches_type(BrandPrefetchResponse, brand, path=["response"]) + + @pytest.mark.skip() + @parametrize + def test_raw_response_prefetch(self, client: BrandDev) -> None: + response = client.brand.with_raw_response.prefetch( + domain="domain", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + brand = response.parse() + assert_matches_type(BrandPrefetchResponse, brand, path=["response"]) + + @pytest.mark.skip() + @parametrize + def test_streaming_response_prefetch(self, client: BrandDev) -> None: + with client.brand.with_streaming_response.prefetch( + domain="domain", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + brand = response.parse() + assert_matches_type(BrandPrefetchResponse, brand, path=["response"]) + + assert cast(Any, response.is_closed) is True + @pytest.mark.skip() @parametrize def test_method_retrieve_by_ticker(self, client: BrandDev) -> None: @@ -452,6 +487,40 @@ async def test_streaming_response_identify_from_transaction(self, async_client: assert cast(Any, response.is_closed) is True + @pytest.mark.skip() + @parametrize + async def test_method_prefetch(self, async_client: AsyncBrandDev) -> None: + brand = await async_client.brand.prefetch( + domain="domain", + ) + assert_matches_type(BrandPrefetchResponse, brand, path=["response"]) + + @pytest.mark.skip() + @parametrize + async def test_raw_response_prefetch(self, async_client: AsyncBrandDev) -> None: + response = await async_client.brand.with_raw_response.prefetch( + domain="domain", + ) + + assert response.is_closed is True + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + brand = await response.parse() + assert_matches_type(BrandPrefetchResponse, brand, path=["response"]) + + @pytest.mark.skip() + @parametrize + async def test_streaming_response_prefetch(self, async_client: AsyncBrandDev) -> None: + async with async_client.brand.with_streaming_response.prefetch( + domain="domain", + ) as response: + assert not response.is_closed + assert response.http_request.headers.get("X-Stainless-Lang") == "python" + + brand = await response.parse() + assert_matches_type(BrandPrefetchResponse, brand, path=["response"]) + + assert cast(Any, response.is_closed) is True + @pytest.mark.skip() @parametrize async def test_method_retrieve_by_ticker(self, async_client: AsyncBrandDev) -> None: From 2bd63ea15a8feb0acb59f117e639ae1a3358e776 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 04:43:46 +0000 Subject: [PATCH 3/3] release: 1.2.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 8 ++++++++ pyproject.toml | 2 +- src/brand/dev/_version.py | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index 2601677..d0ab664 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.1.0" + ".": "1.2.0" } \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 15e4a3e..ea0ee24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 1.2.0 (2025-06-06) + +Full Changelog: [v1.1.0...v1.2.0](https://github.com/brand-dot-dev/python-sdk/compare/v1.1.0...v1.2.0) + +### Features + +* **api:** manual updates ([9039f16](https://github.com/brand-dot-dev/python-sdk/commit/9039f1632ed997579d6ab4f55a83adcf2fbc3fce)) + ## 1.1.0 (2025-06-03) Full Changelog: [v1.0.0...v1.1.0](https://github.com/brand-dot-dev/python-sdk/compare/v1.0.0...v1.1.0) diff --git a/pyproject.toml b/pyproject.toml index a9d0496..e3bee89 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "brand.dev" -version = "1.1.0" +version = "1.2.0" description = "The official Python library for the brand.dev API" dynamic = ["readme"] license = "Apache-2.0" diff --git a/src/brand/dev/_version.py b/src/brand/dev/_version.py index 655680d..f500d38 100644 --- a/src/brand/dev/_version.py +++ b/src/brand/dev/_version.py @@ -1,4 +1,4 @@ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. __title__ = "brand.dev" -__version__ = "1.1.0" # x-release-please-version +__version__ = "1.2.0" # x-release-please-version