diff --git a/algoliasearch/recommend/models/base_search_response.py b/algoliasearch/recommend/models/base_search_response.py index 2bdad3724..16b8bbd22 100644 --- a/algoliasearch/recommend/models/base_search_response.py +++ b/algoliasearch/recommend/models/base_search_response.py @@ -73,9 +73,6 @@ class BaseSearchResponse(BaseModel): facets_stats: Optional[Dict[str, FacetsStats]] = Field( default=None, description="Statistics for numerical facets." ) - hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( - description="Number of hits per page.", alias="hitsPerPage" - ) index: Optional[StrictStr] = Field( default=None, description="Index name used for the query." ) @@ -87,18 +84,11 @@ class BaseSearchResponse(BaseModel): message: Optional[StrictStr] = Field( default=None, description="Warnings about the query." ) - nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") - nb_pages: StrictInt = Field( - description="Number of pages of results.", alias="nbPages" - ) nb_sorted_hits: Optional[StrictInt] = Field( default=None, description="Number of hits selected and sorted by the relevant sort algorithm.", alias="nbSortedHits", ) - page: Annotated[int, Field(strict=True, ge=0)] = Field( - description="Page of search results to retrieve." - ) parsed_query: Optional[StrictStr] = Field( default=None, description="Post-[normalization](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/#what-does-normalization-mean) query string that will be searched.", @@ -154,14 +144,10 @@ class BaseSearchResponse(BaseModel): "exhaustiveTypo", "facets", "facets_stats", - "hitsPerPage", "index", "indexUsed", "message", - "nbHits", - "nbPages", "nbSortedHits", - "page", "parsedQuery", "processingTimeMS", "processingTimingsMS", @@ -267,14 +253,10 @@ def from_dict(cls, obj: Dict) -> Self: if obj.get("facets_stats") is not None else None ), - "hitsPerPage": obj.get("hitsPerPage"), "index": obj.get("index"), "indexUsed": obj.get("indexUsed"), "message": obj.get("message"), - "nbHits": obj.get("nbHits"), - "nbPages": obj.get("nbPages"), "nbSortedHits": obj.get("nbSortedHits"), - "page": obj.get("page"), "parsedQuery": obj.get("parsedQuery"), "processingTimeMS": obj.get("processingTimeMS"), "processingTimingsMS": obj.get("processingTimingsMS"), diff --git a/algoliasearch/recommend/models/recommendations_results.py b/algoliasearch/recommend/models/recommendations_results.py index 2fc67304c..6e9e79fc7 100644 --- a/algoliasearch/recommend/models/recommendations_results.py +++ b/algoliasearch/recommend/models/recommendations_results.py @@ -74,9 +74,6 @@ class RecommendationsResults(BaseModel): facets_stats: Optional[Dict[str, FacetsStats]] = Field( default=None, description="Statistics for numerical facets." ) - hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( - description="Number of hits per page.", alias="hitsPerPage" - ) index: Optional[StrictStr] = Field( default=None, description="Index name used for the query." ) @@ -88,18 +85,11 @@ class RecommendationsResults(BaseModel): message: Optional[StrictStr] = Field( default=None, description="Warnings about the query." ) - nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") - nb_pages: StrictInt = Field( - description="Number of pages of results.", alias="nbPages" - ) nb_sorted_hits: Optional[StrictInt] = Field( default=None, description="Number of hits selected and sorted by the relevant sort algorithm.", alias="nbSortedHits", ) - page: Annotated[int, Field(strict=True, ge=0)] = Field( - description="Page of search results to retrieve." - ) parsed_query: Optional[StrictStr] = Field( default=None, description="Post-[normalization](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/#what-does-normalization-mean) query string that will be searched.", @@ -143,6 +133,16 @@ class RecommendationsResults(BaseModel): description="Unique identifier for the query. This is used for [click analytics](https://www.algolia.com/doc/guides/analytics/click-analytics/).", alias="queryID", ) + page: Annotated[int, Field(strict=True, ge=0)] = Field( + description="Page of search results to retrieve." + ) + nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") + nb_pages: StrictInt = Field( + description="Number of pages of results.", alias="nbPages" + ) + hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( + description="Number of hits per page.", alias="hitsPerPage" + ) hits: List[RecommendationsHit] @field_validator("around_lat_lng") @@ -236,14 +236,10 @@ def from_dict(cls, obj: Dict) -> Self: if obj.get("facets_stats") is not None else None ), - "hitsPerPage": obj.get("hitsPerPage"), "index": obj.get("index"), "indexUsed": obj.get("indexUsed"), "message": obj.get("message"), - "nbHits": obj.get("nbHits"), - "nbPages": obj.get("nbPages"), "nbSortedHits": obj.get("nbSortedHits"), - "page": obj.get("page"), "parsedQuery": obj.get("parsedQuery"), "processingTimeMS": obj.get("processingTimeMS"), "processingTimingsMS": obj.get("processingTimingsMS"), @@ -262,6 +258,10 @@ def from_dict(cls, obj: Dict) -> Self: "serverUsed": obj.get("serverUsed"), "userData": obj.get("userData"), "queryID": obj.get("queryID"), + "page": obj.get("page"), + "nbHits": obj.get("nbHits"), + "nbPages": obj.get("nbPages"), + "hitsPerPage": obj.get("hitsPerPage"), "hits": ( [RecommendationsHit.from_dict(_item) for _item in obj.get("hits")] if obj.get("hits") is not None diff --git a/algoliasearch/recommend/models/search_pagination.py b/algoliasearch/recommend/models/search_pagination.py new file mode 100644 index 000000000..9881e858f --- /dev/null +++ b/algoliasearch/recommend/models/search_pagination.py @@ -0,0 +1,77 @@ +# coding: utf-8 + +""" +Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +""" + +from __future__ import annotations + +from json import loads +from typing import Annotated, Any, Dict, Self + +from pydantic import BaseModel, ConfigDict, Field, StrictInt + + +class SearchPagination(BaseModel): + """ + SearchPagination + """ + + page: Annotated[int, Field(strict=True, ge=0)] = Field( + description="Page of search results to retrieve." + ) + nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") + nb_pages: StrictInt = Field( + description="Number of pages of results.", alias="nbPages" + ) + hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( + description="Number of hits per page.", alias="hitsPerPage" + ) + + model_config = ConfigDict( + use_enum_values=True, populate_by_name=True, validate_assignment=True + ) + + def to_json(self) -> str: + return self.model_dump_json(by_alias=True, exclude_unset=True) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SearchPagination from a JSON string""" + return cls.from_dict(loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + _dict = self.model_dump( + by_alias=True, + exclude={}, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict) -> Self: + """Create an instance of SearchPagination from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": obj.get("page"), + "nbHits": obj.get("nbHits"), + "nbPages": obj.get("nbPages"), + "hitsPerPage": obj.get("hitsPerPage"), + } + ) + return _obj diff --git a/algoliasearch/search/models/base_search_response.py b/algoliasearch/search/models/base_search_response.py index 607f4ae3c..194f64f8b 100644 --- a/algoliasearch/search/models/base_search_response.py +++ b/algoliasearch/search/models/base_search_response.py @@ -73,9 +73,6 @@ class BaseSearchResponse(BaseModel): facets_stats: Optional[Dict[str, FacetsStats]] = Field( default=None, description="Statistics for numerical facets." ) - hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( - description="Number of hits per page.", alias="hitsPerPage" - ) index: Optional[StrictStr] = Field( default=None, description="Index name used for the query." ) @@ -87,18 +84,11 @@ class BaseSearchResponse(BaseModel): message: Optional[StrictStr] = Field( default=None, description="Warnings about the query." ) - nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") - nb_pages: StrictInt = Field( - description="Number of pages of results.", alias="nbPages" - ) nb_sorted_hits: Optional[StrictInt] = Field( default=None, description="Number of hits selected and sorted by the relevant sort algorithm.", alias="nbSortedHits", ) - page: Annotated[int, Field(strict=True, ge=0)] = Field( - description="Page of search results to retrieve." - ) parsed_query: Optional[StrictStr] = Field( default=None, description="Post-[normalization](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/#what-does-normalization-mean) query string that will be searched.", @@ -154,14 +144,10 @@ class BaseSearchResponse(BaseModel): "exhaustiveTypo", "facets", "facets_stats", - "hitsPerPage", "index", "indexUsed", "message", - "nbHits", - "nbPages", "nbSortedHits", - "page", "parsedQuery", "processingTimeMS", "processingTimingsMS", @@ -267,14 +253,10 @@ def from_dict(cls, obj: Dict) -> Self: if obj.get("facets_stats") is not None else None ), - "hitsPerPage": obj.get("hitsPerPage"), "index": obj.get("index"), "indexUsed": obj.get("indexUsed"), "message": obj.get("message"), - "nbHits": obj.get("nbHits"), - "nbPages": obj.get("nbPages"), "nbSortedHits": obj.get("nbSortedHits"), - "page": obj.get("page"), "parsedQuery": obj.get("parsedQuery"), "processingTimeMS": obj.get("processingTimeMS"), "processingTimingsMS": obj.get("processingTimingsMS"), diff --git a/algoliasearch/search/models/browse_pagination.py b/algoliasearch/search/models/browse_pagination.py new file mode 100644 index 000000000..f821ec2ea --- /dev/null +++ b/algoliasearch/search/models/browse_pagination.py @@ -0,0 +1,79 @@ +# coding: utf-8 + +""" +Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +""" + +from __future__ import annotations + +from json import loads +from typing import Annotated, Any, Dict, Optional, Self + +from pydantic import BaseModel, ConfigDict, Field, StrictInt + + +class BrowsePagination(BaseModel): + """ + BrowsePagination + """ + + page: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=0, description="Page of search results to retrieve." + ) + nb_hits: Optional[StrictInt] = Field( + default=None, description="Number of results (hits).", alias="nbHits" + ) + nb_pages: Optional[StrictInt] = Field( + default=None, description="Number of pages of results.", alias="nbPages" + ) + hits_per_page: Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]] = Field( + default=20, description="Number of hits per page.", alias="hitsPerPage" + ) + + model_config = ConfigDict( + use_enum_values=True, populate_by_name=True, validate_assignment=True + ) + + def to_json(self) -> str: + return self.model_dump_json(by_alias=True, exclude_unset=True) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of BrowsePagination from a JSON string""" + return cls.from_dict(loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + _dict = self.model_dump( + by_alias=True, + exclude={}, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict) -> Self: + """Create an instance of BrowsePagination from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": obj.get("page"), + "nbHits": obj.get("nbHits"), + "nbPages": obj.get("nbPages"), + "hitsPerPage": obj.get("hitsPerPage"), + } + ) + return _obj diff --git a/algoliasearch/search/models/browse_response.py b/algoliasearch/search/models/browse_response.py index 3985649da..038684af8 100644 --- a/algoliasearch/search/models/browse_response.py +++ b/algoliasearch/search/models/browse_response.py @@ -74,9 +74,6 @@ class BrowseResponse(BaseModel): facets_stats: Optional[Dict[str, FacetsStats]] = Field( default=None, description="Statistics for numerical facets." ) - hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( - description="Number of hits per page.", alias="hitsPerPage" - ) index: Optional[StrictStr] = Field( default=None, description="Index name used for the query." ) @@ -88,18 +85,11 @@ class BrowseResponse(BaseModel): message: Optional[StrictStr] = Field( default=None, description="Warnings about the query." ) - nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") - nb_pages: StrictInt = Field( - description="Number of pages of results.", alias="nbPages" - ) nb_sorted_hits: Optional[StrictInt] = Field( default=None, description="Number of hits selected and sorted by the relevant sort algorithm.", alias="nbSortedHits", ) - page: Annotated[int, Field(strict=True, ge=0)] = Field( - description="Page of search results to retrieve." - ) parsed_query: Optional[StrictStr] = Field( default=None, description="Post-[normalization](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/#what-does-normalization-mean) query string that will be searched.", @@ -143,6 +133,18 @@ class BrowseResponse(BaseModel): description="Unique identifier for the query. This is used for [click analytics](https://www.algolia.com/doc/guides/analytics/click-analytics/).", alias="queryID", ) + page: Optional[Annotated[int, Field(strict=True, ge=0)]] = Field( + default=0, description="Page of search results to retrieve." + ) + nb_hits: Optional[StrictInt] = Field( + default=None, description="Number of results (hits).", alias="nbHits" + ) + nb_pages: Optional[StrictInt] = Field( + default=None, description="Number of pages of results.", alias="nbPages" + ) + hits_per_page: Optional[Annotated[int, Field(le=1000, strict=True, ge=1)]] = Field( + default=20, description="Number of hits per page.", alias="hitsPerPage" + ) hits: List[Hit] = Field( description="Search results (hits). Hits are records from your index that match the search criteria, augmented with additional attributes, such as, for highlighting. " ) @@ -246,14 +248,10 @@ def from_dict(cls, obj: Dict) -> Self: if obj.get("facets_stats") is not None else None ), - "hitsPerPage": obj.get("hitsPerPage"), "index": obj.get("index"), "indexUsed": obj.get("indexUsed"), "message": obj.get("message"), - "nbHits": obj.get("nbHits"), - "nbPages": obj.get("nbPages"), "nbSortedHits": obj.get("nbSortedHits"), - "page": obj.get("page"), "parsedQuery": obj.get("parsedQuery"), "processingTimeMS": obj.get("processingTimeMS"), "processingTimingsMS": obj.get("processingTimingsMS"), @@ -272,6 +270,10 @@ def from_dict(cls, obj: Dict) -> Self: "serverUsed": obj.get("serverUsed"), "userData": obj.get("userData"), "queryID": obj.get("queryID"), + "page": obj.get("page"), + "nbHits": obj.get("nbHits"), + "nbPages": obj.get("nbPages"), + "hitsPerPage": obj.get("hitsPerPage"), "hits": ( [Hit.from_dict(_item) for _item in obj.get("hits")] if obj.get("hits") is not None diff --git a/algoliasearch/search/models/search_pagination.py b/algoliasearch/search/models/search_pagination.py new file mode 100644 index 000000000..9881e858f --- /dev/null +++ b/algoliasearch/search/models/search_pagination.py @@ -0,0 +1,77 @@ +# coding: utf-8 + +""" +Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. +""" + +from __future__ import annotations + +from json import loads +from typing import Annotated, Any, Dict, Self + +from pydantic import BaseModel, ConfigDict, Field, StrictInt + + +class SearchPagination(BaseModel): + """ + SearchPagination + """ + + page: Annotated[int, Field(strict=True, ge=0)] = Field( + description="Page of search results to retrieve." + ) + nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") + nb_pages: StrictInt = Field( + description="Number of pages of results.", alias="nbPages" + ) + hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( + description="Number of hits per page.", alias="hitsPerPage" + ) + + model_config = ConfigDict( + use_enum_values=True, populate_by_name=True, validate_assignment=True + ) + + def to_json(self) -> str: + return self.model_dump_json(by_alias=True, exclude_unset=True) + + @classmethod + def from_json(cls, json_str: str) -> Self: + """Create an instance of SearchPagination from a JSON string""" + return cls.from_dict(loads(json_str)) + + def to_dict(self) -> Dict[str, Any]: + """Return the dictionary representation of the model using alias. + + This has the following differences from calling pydantic's + `self.model_dump(by_alias=True)`: + + * `None` is only added to the output dict for nullable fields that + were set at model initialization. Other fields with value `None` + are ignored. + """ + _dict = self.model_dump( + by_alias=True, + exclude={}, + exclude_none=True, + ) + return _dict + + @classmethod + def from_dict(cls, obj: Dict) -> Self: + """Create an instance of SearchPagination from a dict""" + if obj is None: + return None + + if not isinstance(obj, dict): + return cls.model_validate(obj) + + _obj = cls.model_validate( + { + "page": obj.get("page"), + "nbHits": obj.get("nbHits"), + "nbPages": obj.get("nbPages"), + "hitsPerPage": obj.get("hitsPerPage"), + } + ) + return _obj diff --git a/algoliasearch/search/models/search_response.py b/algoliasearch/search/models/search_response.py index a664cef15..8140781d3 100644 --- a/algoliasearch/search/models/search_response.py +++ b/algoliasearch/search/models/search_response.py @@ -74,9 +74,6 @@ class SearchResponse(BaseModel): facets_stats: Optional[Dict[str, FacetsStats]] = Field( default=None, description="Statistics for numerical facets." ) - hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( - description="Number of hits per page.", alias="hitsPerPage" - ) index: Optional[StrictStr] = Field( default=None, description="Index name used for the query." ) @@ -88,18 +85,11 @@ class SearchResponse(BaseModel): message: Optional[StrictStr] = Field( default=None, description="Warnings about the query." ) - nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") - nb_pages: StrictInt = Field( - description="Number of pages of results.", alias="nbPages" - ) nb_sorted_hits: Optional[StrictInt] = Field( default=None, description="Number of hits selected and sorted by the relevant sort algorithm.", alias="nbSortedHits", ) - page: Annotated[int, Field(strict=True, ge=0)] = Field( - description="Page of search results to retrieve." - ) parsed_query: Optional[StrictStr] = Field( default=None, description="Post-[normalization](https://www.algolia.com/doc/guides/managing-results/optimize-search-results/handling-natural-languages-nlp/#what-does-normalization-mean) query string that will be searched.", @@ -143,6 +133,16 @@ class SearchResponse(BaseModel): description="Unique identifier for the query. This is used for [click analytics](https://www.algolia.com/doc/guides/analytics/click-analytics/).", alias="queryID", ) + page: Annotated[int, Field(strict=True, ge=0)] = Field( + description="Page of search results to retrieve." + ) + nb_hits: StrictInt = Field(description="Number of results (hits).", alias="nbHits") + nb_pages: StrictInt = Field( + description="Number of pages of results.", alias="nbPages" + ) + hits_per_page: Annotated[int, Field(le=1000, strict=True, ge=1)] = Field( + description="Number of hits per page.", alias="hitsPerPage" + ) hits: List[Hit] = Field( description="Search results (hits). Hits are records from your index that match the search criteria, augmented with additional attributes, such as, for highlighting. " ) @@ -162,14 +162,10 @@ class SearchResponse(BaseModel): "exhaustiveTypo", "facets", "facets_stats", - "hitsPerPage", "index", "indexUsed", "message", - "nbHits", - "nbPages", "nbSortedHits", - "page", "parsedQuery", "processingTimeMS", "processingTimingsMS", @@ -180,6 +176,10 @@ class SearchResponse(BaseModel): "serverUsed", "userData", "queryID", + "page", + "nbHits", + "nbPages", + "hitsPerPage", "hits", "query", "params", @@ -284,14 +284,10 @@ def from_dict(cls, obj: Dict) -> Self: if obj.get("facets_stats") is not None else None ), - "hitsPerPage": obj.get("hitsPerPage"), "index": obj.get("index"), "indexUsed": obj.get("indexUsed"), "message": obj.get("message"), - "nbHits": obj.get("nbHits"), - "nbPages": obj.get("nbPages"), "nbSortedHits": obj.get("nbSortedHits"), - "page": obj.get("page"), "parsedQuery": obj.get("parsedQuery"), "processingTimeMS": obj.get("processingTimeMS"), "processingTimingsMS": obj.get("processingTimingsMS"), @@ -310,6 +306,10 @@ def from_dict(cls, obj: Dict) -> Self: "serverUsed": obj.get("serverUsed"), "userData": obj.get("userData"), "queryID": obj.get("queryID"), + "page": obj.get("page"), + "nbHits": obj.get("nbHits"), + "nbPages": obj.get("nbPages"), + "hitsPerPage": obj.get("hitsPerPage"), "hits": ( [Hit.from_dict(_item) for _item in obj.get("hits")] if obj.get("hits") is not None