recombee-api-client 6.0.0__tar.gz → 6.2.0__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.
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/PKG-INFO +1 -1
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_client.py +1 -1
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/__init__.py +3 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/composite_recommendation.py +8 -1
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_item_segments_to_item.py +67 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_item_segments_to_item_segment.py +67 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_item_segments_to_user.py +67 -0
- recombee_api_client-6.2.0/recombee_api_client/api_requests/recommend_next_item_segments.py +64 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/search_item_segments.py +67 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/PKG-INFO +1 -1
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/SOURCES.txt +1 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/setup.py +1 -1
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/tests/test.py +9 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/LICENSE +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/README.rst +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/__init__.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_bookmark.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_cart_addition.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_detail_view.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_item.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_item_property.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_manual_reql_segment.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_purchase.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_rating.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_search_synonym.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_series.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_user.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_user_property.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/batch.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/create_auto_reql_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/create_manual_reql_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/create_property_based_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_all_search_synonyms.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_bookmark.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_cart_addition.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_detail_view.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_item.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_item_property.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_manual_reql_segment.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_more_items.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_purchase.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_rating.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_search_synonym.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_series.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_user.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_user_property.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/delete_view_portion.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_item_property_info.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_item_values.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_user_property_info.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/get_user_values.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/insert_to_series.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_bookmarks.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_cart_additions.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_detail_views.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_properties.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_purchases.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_ratings.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_item_view_portions.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_items.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_scenarios.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_search_synonyms.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_segmentations.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_series.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_series_items.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_bookmarks.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_cart_additions.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_detail_views.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_properties.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_purchases.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_ratings.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_user_view_portions.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/list_users.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/merge_users.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_items_to_item.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_items_to_item_segment.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_items_to_user.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_next_items.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_users_to_item.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/recommend_users_to_user.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/remove_from_series.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/request.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/reset_database.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/search_items.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_item_values.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_user_values.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_values.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/set_view_portion.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_auto_reql_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_manual_reql_segment.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_manual_reql_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_more_items.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/update_property_based_segmentation.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/exceptions.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/__init__.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/composite_recommendation_stage_parameters.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/input.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/logic.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/utils/__init__.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/utils/serialize_to_json.py +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/dependency_links.txt +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/requires.txt +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/top_level.txt +0 -0
- {recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/setup.cfg +0 -0
|
@@ -105,7 +105,7 @@ class RecombeeClient:
|
|
|
105
105
|
|
|
106
106
|
@staticmethod
|
|
107
107
|
def __get_http_headers(additional_headers: dict = None) -> dict:
|
|
108
|
-
headers = {"User-Agent": "recombee-python-api-client/6.
|
|
108
|
+
headers = {"User-Agent": "recombee-python-api-client/6.2.0"}
|
|
109
109
|
if additional_headers:
|
|
110
110
|
headers.update(additional_headers)
|
|
111
111
|
return headers
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/__init__.py
RENAMED
|
@@ -82,6 +82,9 @@ from recombee_api_client.api_requests.recommend_item_segments_to_item import (
|
|
|
82
82
|
from recombee_api_client.api_requests.recommend_item_segments_to_item_segment import (
|
|
83
83
|
RecommendItemSegmentsToItemSegment,
|
|
84
84
|
)
|
|
85
|
+
from recombee_api_client.api_requests.recommend_next_item_segments import (
|
|
86
|
+
RecommendNextItemSegments,
|
|
87
|
+
)
|
|
85
88
|
from recombee_api_client.api_requests.composite_recommendation import (
|
|
86
89
|
CompositeRecommendation,
|
|
87
90
|
)
|
|
@@ -13,7 +13,7 @@ DEFAULT = uuid.uuid4()
|
|
|
13
13
|
|
|
14
14
|
class CompositeRecommendation(Request):
|
|
15
15
|
"""
|
|
16
|
-
Composite Recommendation returns both a *source entity* (e.g., an Item or [Item Segment](https://docs.recombee.com/segmentations
|
|
16
|
+
Composite Recommendation returns both a *source entity* (e.g., an Item or [Item Segment](https://docs.recombee.com/segmentations)) and a list of related recommendations in a single response.
|
|
17
17
|
|
|
18
18
|
It is ideal for use cases such as personalized homepage sections (*Articles from <category>*), *Because You Watched <movie>*, or *Artists Related to Your Favorite Artist <artist>*.
|
|
19
19
|
|
|
@@ -79,6 +79,9 @@ class CompositeRecommendation(Request):
|
|
|
79
79
|
:param segment_id: ID of the segment from `contextSegmentationId` for which the recommendations are to be generated.
|
|
80
80
|
|
|
81
81
|
|
|
82
|
+
:param search_query: Search query provided by the user. It is used for the full-text search. Only applicable if the *scenario* corresponds to a search scenario.
|
|
83
|
+
|
|
84
|
+
|
|
82
85
|
:param cascade_create: If the entity for the source recommendation does not exist in the database, returns a list of non-personalized recommendations and creates the user in the database. This allows, for example, rotations in the following recommendations for that entity, as the entity will be already known to the system.
|
|
83
86
|
|
|
84
87
|
|
|
@@ -101,6 +104,7 @@ class CompositeRecommendation(Request):
|
|
|
101
104
|
user_id: str = DEFAULT,
|
|
102
105
|
logic: Logic = DEFAULT,
|
|
103
106
|
segment_id: str = DEFAULT,
|
|
107
|
+
search_query: str = DEFAULT,
|
|
104
108
|
cascade_create: bool = DEFAULT,
|
|
105
109
|
source_settings: CompositeRecommendationStageParameters = DEFAULT,
|
|
106
110
|
result_settings: CompositeRecommendationStageParameters = DEFAULT,
|
|
@@ -115,6 +119,7 @@ class CompositeRecommendation(Request):
|
|
|
115
119
|
self.user_id = user_id
|
|
116
120
|
self.logic = logic
|
|
117
121
|
self.segment_id = segment_id
|
|
122
|
+
self.search_query = search_query
|
|
118
123
|
self.cascade_create = cascade_create
|
|
119
124
|
self.source_settings = source_settings
|
|
120
125
|
self.result_settings = result_settings
|
|
@@ -135,6 +140,8 @@ class CompositeRecommendation(Request):
|
|
|
135
140
|
p["logic"] = serialize_to_json(self.logic)
|
|
136
141
|
if self.segment_id is not DEFAULT:
|
|
137
142
|
p["segmentId"] = serialize_to_json(self.segment_id)
|
|
143
|
+
if self.search_query is not DEFAULT:
|
|
144
|
+
p["searchQuery"] = serialize_to_json(self.search_query)
|
|
138
145
|
if self.cascade_create is not DEFAULT:
|
|
139
146
|
p["cascadeCreate"] = serialize_to_json(self.cascade_create)
|
|
140
147
|
if self.source_settings is not DEFAULT:
|
|
@@ -101,6 +101,69 @@ class RecommendItemSegmentsToItem(Request):
|
|
|
101
101
|
:param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
|
|
102
102
|
|
|
103
103
|
|
|
104
|
+
:param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
|
|
105
|
+
|
|
106
|
+
This can be used to compute additional properties of the recommended Item Segments.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
The keys are the names of the expressions, and the values are the actual ReQL expressions.
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
Example request:
|
|
113
|
+
|
|
114
|
+
```json
|
|
115
|
+
|
|
116
|
+
E{lb}
|
|
117
|
+
|
|
118
|
+
"reqlExpressions": E{lb}
|
|
119
|
+
|
|
120
|
+
"countItems": "size(segment_items(\"categories\", 'segmentId'))"
|
|
121
|
+
E{rb}
|
|
122
|
+
E{rb}
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
Example response:
|
|
128
|
+
|
|
129
|
+
```json
|
|
130
|
+
|
|
131
|
+
E{lb}
|
|
132
|
+
|
|
133
|
+
"recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
|
|
134
|
+
|
|
135
|
+
"recomms":
|
|
136
|
+
|
|
137
|
+
[
|
|
138
|
+
|
|
139
|
+
E{lb}
|
|
140
|
+
|
|
141
|
+
"id": "category-fantasy-books",
|
|
142
|
+
|
|
143
|
+
"reqlEvaluations": E{lb}
|
|
144
|
+
|
|
145
|
+
"countItems": 486
|
|
146
|
+
E{rb}
|
|
147
|
+
E{rb},
|
|
148
|
+
|
|
149
|
+
E{lb}
|
|
150
|
+
|
|
151
|
+
"id": "category-sci-fi-costumes",
|
|
152
|
+
|
|
153
|
+
"reqlEvaluations": E{lb}
|
|
154
|
+
|
|
155
|
+
"countItems": 19
|
|
156
|
+
E{rb}
|
|
157
|
+
E{rb}
|
|
158
|
+
|
|
159
|
+
],
|
|
160
|
+
|
|
161
|
+
"numberNextRecommsCalls": 0
|
|
162
|
+
E{rb}
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
|
|
104
167
|
"""
|
|
105
168
|
|
|
106
169
|
def __init__(
|
|
@@ -115,6 +178,7 @@ class RecommendItemSegmentsToItem(Request):
|
|
|
115
178
|
logic: Logic = DEFAULT,
|
|
116
179
|
expert_settings: dict = DEFAULT,
|
|
117
180
|
return_ab_group: bool = DEFAULT,
|
|
181
|
+
reql_expressions: dict = DEFAULT,
|
|
118
182
|
):
|
|
119
183
|
super().__init__(
|
|
120
184
|
path="/recomms/items/%s/item-segments/" % (item_id),
|
|
@@ -132,6 +196,7 @@ class RecommendItemSegmentsToItem(Request):
|
|
|
132
196
|
self.logic = logic
|
|
133
197
|
self.expert_settings = expert_settings
|
|
134
198
|
self.return_ab_group = return_ab_group
|
|
199
|
+
self.reql_expressions = reql_expressions
|
|
135
200
|
|
|
136
201
|
def get_body_parameters(self) -> dict:
|
|
137
202
|
"""
|
|
@@ -154,6 +219,8 @@ class RecommendItemSegmentsToItem(Request):
|
|
|
154
219
|
p["expertSettings"] = serialize_to_json(self.expert_settings)
|
|
155
220
|
if self.return_ab_group is not DEFAULT:
|
|
156
221
|
p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
|
|
222
|
+
if self.reql_expressions is not DEFAULT:
|
|
223
|
+
p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
|
|
157
224
|
|
|
158
225
|
return p
|
|
159
226
|
|
|
@@ -100,6 +100,69 @@ class RecommendItemSegmentsToItemSegment(Request):
|
|
|
100
100
|
:param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
|
|
101
101
|
|
|
102
102
|
|
|
103
|
+
:param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
|
|
104
|
+
|
|
105
|
+
This can be used to compute additional properties of the recommended Item Segments.
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
The keys are the names of the expressions, and the values are the actual ReQL expressions.
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
Example request:
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
|
|
115
|
+
E{lb}
|
|
116
|
+
|
|
117
|
+
"reqlExpressions": E{lb}
|
|
118
|
+
|
|
119
|
+
"countItems": "size(segment_items(\"categories\", 'segmentId'))"
|
|
120
|
+
E{rb}
|
|
121
|
+
E{rb}
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
Example response:
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
|
|
130
|
+
E{lb}
|
|
131
|
+
|
|
132
|
+
"recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
|
|
133
|
+
|
|
134
|
+
"recomms":
|
|
135
|
+
|
|
136
|
+
[
|
|
137
|
+
|
|
138
|
+
E{lb}
|
|
139
|
+
|
|
140
|
+
"id": "category-fantasy-books",
|
|
141
|
+
|
|
142
|
+
"reqlEvaluations": E{lb}
|
|
143
|
+
|
|
144
|
+
"countItems": 486
|
|
145
|
+
E{rb}
|
|
146
|
+
E{rb},
|
|
147
|
+
|
|
148
|
+
E{lb}
|
|
149
|
+
|
|
150
|
+
"id": "category-sci-fi-costumes",
|
|
151
|
+
|
|
152
|
+
"reqlEvaluations": E{lb}
|
|
153
|
+
|
|
154
|
+
"countItems": 19
|
|
155
|
+
E{rb}
|
|
156
|
+
E{rb}
|
|
157
|
+
|
|
158
|
+
],
|
|
159
|
+
|
|
160
|
+
"numberNextRecommsCalls": 0
|
|
161
|
+
E{rb}
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
|
|
103
166
|
"""
|
|
104
167
|
|
|
105
168
|
def __init__(
|
|
@@ -114,6 +177,7 @@ class RecommendItemSegmentsToItemSegment(Request):
|
|
|
114
177
|
logic: Logic = DEFAULT,
|
|
115
178
|
expert_settings: dict = DEFAULT,
|
|
116
179
|
return_ab_group: bool = DEFAULT,
|
|
180
|
+
reql_expressions: dict = DEFAULT,
|
|
117
181
|
):
|
|
118
182
|
super().__init__(
|
|
119
183
|
path="/recomms/item-segments/item-segments/",
|
|
@@ -131,6 +195,7 @@ class RecommendItemSegmentsToItemSegment(Request):
|
|
|
131
195
|
self.logic = logic
|
|
132
196
|
self.expert_settings = expert_settings
|
|
133
197
|
self.return_ab_group = return_ab_group
|
|
198
|
+
self.reql_expressions = reql_expressions
|
|
134
199
|
|
|
135
200
|
def get_body_parameters(self) -> dict:
|
|
136
201
|
"""
|
|
@@ -154,6 +219,8 @@ class RecommendItemSegmentsToItemSegment(Request):
|
|
|
154
219
|
p["expertSettings"] = serialize_to_json(self.expert_settings)
|
|
155
220
|
if self.return_ab_group is not DEFAULT:
|
|
156
221
|
p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
|
|
222
|
+
if self.reql_expressions is not DEFAULT:
|
|
223
|
+
p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
|
|
157
224
|
|
|
158
225
|
return p
|
|
159
226
|
|
|
@@ -70,6 +70,69 @@ class RecommendItemSegmentsToUser(Request):
|
|
|
70
70
|
:param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
|
|
71
71
|
|
|
72
72
|
|
|
73
|
+
:param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
|
|
74
|
+
|
|
75
|
+
This can be used to compute additional properties of the recommended Item Segments.
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
The keys are the names of the expressions, and the values are the actual ReQL expressions.
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
Example request:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
|
|
85
|
+
E{lb}
|
|
86
|
+
|
|
87
|
+
"reqlExpressions": E{lb}
|
|
88
|
+
|
|
89
|
+
"countItems": "size(segment_items(\"categories\", 'segmentId'))"
|
|
90
|
+
E{rb}
|
|
91
|
+
E{rb}
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
Example response:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
|
|
100
|
+
E{lb}
|
|
101
|
+
|
|
102
|
+
"recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
|
|
103
|
+
|
|
104
|
+
"recomms":
|
|
105
|
+
|
|
106
|
+
[
|
|
107
|
+
|
|
108
|
+
E{lb}
|
|
109
|
+
|
|
110
|
+
"id": "category-fantasy-books",
|
|
111
|
+
|
|
112
|
+
"reqlEvaluations": E{lb}
|
|
113
|
+
|
|
114
|
+
"countItems": 486
|
|
115
|
+
E{rb}
|
|
116
|
+
E{rb},
|
|
117
|
+
|
|
118
|
+
E{lb}
|
|
119
|
+
|
|
120
|
+
"id": "category-sci-fi-costumes",
|
|
121
|
+
|
|
122
|
+
"reqlEvaluations": E{lb}
|
|
123
|
+
|
|
124
|
+
"countItems": 19
|
|
125
|
+
E{rb}
|
|
126
|
+
E{rb}
|
|
127
|
+
|
|
128
|
+
],
|
|
129
|
+
|
|
130
|
+
"numberNextRecommsCalls": 0
|
|
131
|
+
E{rb}
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
|
|
73
136
|
"""
|
|
74
137
|
|
|
75
138
|
def __init__(
|
|
@@ -83,6 +146,7 @@ class RecommendItemSegmentsToUser(Request):
|
|
|
83
146
|
logic: Logic = DEFAULT,
|
|
84
147
|
expert_settings: dict = DEFAULT,
|
|
85
148
|
return_ab_group: bool = DEFAULT,
|
|
149
|
+
reql_expressions: dict = DEFAULT,
|
|
86
150
|
):
|
|
87
151
|
super().__init__(
|
|
88
152
|
path="/recomms/users/%s/item-segments/" % (user_id),
|
|
@@ -99,6 +163,7 @@ class RecommendItemSegmentsToUser(Request):
|
|
|
99
163
|
self.logic = logic
|
|
100
164
|
self.expert_settings = expert_settings
|
|
101
165
|
self.return_ab_group = return_ab_group
|
|
166
|
+
self.reql_expressions = reql_expressions
|
|
102
167
|
|
|
103
168
|
def get_body_parameters(self) -> dict:
|
|
104
169
|
"""
|
|
@@ -120,6 +185,8 @@ class RecommendItemSegmentsToUser(Request):
|
|
|
120
185
|
p["expertSettings"] = serialize_to_json(self.expert_settings)
|
|
121
186
|
if self.return_ab_group is not DEFAULT:
|
|
122
187
|
p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
|
|
188
|
+
if self.reql_expressions is not DEFAULT:
|
|
189
|
+
p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
|
|
123
190
|
|
|
124
191
|
return p
|
|
125
192
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
from recombee_api_client.api_requests.request import Request
|
|
2
|
+
from recombee_api_client.utils.serialize_to_json import serialize_to_json
|
|
3
|
+
from typing import Union, List
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
import uuid
|
|
6
|
+
|
|
7
|
+
DEFAULT = uuid.uuid4()
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class RecommendNextItemSegments(Request):
|
|
11
|
+
"""
|
|
12
|
+
Returns Item segments that shall be shown to a user as next recommendations when the user e.g. scrolls the page down (*infinite scroll*) or goes to the next page.
|
|
13
|
+
|
|
14
|
+
It accepts `recommId` of a base recommendation request (e.g., request from the first page) and the number of segments that shall be returned (`count`).
|
|
15
|
+
The base request can be one of:
|
|
16
|
+
- [Recommend Item Segments to Item](https://docs.recombee.com/api#recommend-item-segments-to-item)
|
|
17
|
+
- [Recommend Item Segments to User](https://docs.recombee.com/api#recommend-item-segments-to-user)
|
|
18
|
+
- [Recommend Item Segments to Item Segment](https://docs.recombee.com/api#recommend-item-segments-to-item-segment)
|
|
19
|
+
- [Search Item Segments](https://docs.recombee.com/api#search-item-segments)
|
|
20
|
+
|
|
21
|
+
All the other parameters are inherited from the base request.
|
|
22
|
+
|
|
23
|
+
*Recommend next Item segments* can be called many times for a single `recommId` and each call returns different (previously not recommended) segments.
|
|
24
|
+
The number of *Recommend next Item segments* calls performed so far is returned in the `numberNextRecommsCalls` field.
|
|
25
|
+
|
|
26
|
+
*Recommend next Item segments* can be requested up to 30 minutes after the base request or a previous *Recommend next Item segments* call.
|
|
27
|
+
|
|
28
|
+
For billing purposes, each call to *Recommend next Item segments* is counted as a separate recommendation request.
|
|
29
|
+
|
|
30
|
+
Required parameters:
|
|
31
|
+
|
|
32
|
+
:param recomm_id: ID of the base recommendation request for which next recommendations should be returned
|
|
33
|
+
|
|
34
|
+
:param count: Number of item segments to be recommended
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self, recomm_id: str, count: int):
|
|
40
|
+
super().__init__(
|
|
41
|
+
path="/recomms/next/item-segments/%s" % (recomm_id),
|
|
42
|
+
method="post",
|
|
43
|
+
timeout=3000,
|
|
44
|
+
ensure_https=False,
|
|
45
|
+
)
|
|
46
|
+
self.recomm_id = recomm_id
|
|
47
|
+
self.count = count
|
|
48
|
+
|
|
49
|
+
def get_body_parameters(self) -> dict:
|
|
50
|
+
"""
|
|
51
|
+
Values of body parameters as a dictionary (name of parameter: value of the parameter).
|
|
52
|
+
"""
|
|
53
|
+
p = dict()
|
|
54
|
+
p["count"] = serialize_to_json(self.count)
|
|
55
|
+
|
|
56
|
+
return p
|
|
57
|
+
|
|
58
|
+
def get_query_parameters(self) -> dict:
|
|
59
|
+
"""
|
|
60
|
+
Values of query parameters as a dictionary (name of parameter: value of the parameter).
|
|
61
|
+
"""
|
|
62
|
+
params = dict()
|
|
63
|
+
|
|
64
|
+
return params
|
|
@@ -71,6 +71,69 @@ class SearchItemSegments(Request):
|
|
|
71
71
|
:param return_ab_group: If there is a custom AB-testing running, return the name of the group to which the request belongs.
|
|
72
72
|
|
|
73
73
|
|
|
74
|
+
:param reql_expressions: A dictionary of [ReQL](https://docs.recombee.com/reql) expressions that will be executed for each recommended Item Segment.
|
|
75
|
+
|
|
76
|
+
This can be used to compute additional properties of the recommended Item Segments.
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
The keys are the names of the expressions, and the values are the actual ReQL expressions.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
Example request:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
|
|
86
|
+
E{lb}
|
|
87
|
+
|
|
88
|
+
"reqlExpressions": E{lb}
|
|
89
|
+
|
|
90
|
+
"countItems": "size(segment_items(\"categories\", 'segmentId'))"
|
|
91
|
+
E{rb}
|
|
92
|
+
E{rb}
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
Example response:
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
|
|
101
|
+
E{lb}
|
|
102
|
+
|
|
103
|
+
"recommId": "a7ac55a4-8d6e-4f19-addc-abac4164d8a8",
|
|
104
|
+
|
|
105
|
+
"recomms":
|
|
106
|
+
|
|
107
|
+
[
|
|
108
|
+
|
|
109
|
+
E{lb}
|
|
110
|
+
|
|
111
|
+
"id": "category-fantasy-books",
|
|
112
|
+
|
|
113
|
+
"reqlEvaluations": E{lb}
|
|
114
|
+
|
|
115
|
+
"countItems": 486
|
|
116
|
+
E{rb}
|
|
117
|
+
E{rb},
|
|
118
|
+
|
|
119
|
+
E{lb}
|
|
120
|
+
|
|
121
|
+
"id": "category-sci-fi-costumes",
|
|
122
|
+
|
|
123
|
+
"reqlEvaluations": E{lb}
|
|
124
|
+
|
|
125
|
+
"countItems": 19
|
|
126
|
+
E{rb}
|
|
127
|
+
E{rb}
|
|
128
|
+
|
|
129
|
+
],
|
|
130
|
+
|
|
131
|
+
"numberNextRecommsCalls": 0
|
|
132
|
+
E{rb}
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
|
|
74
137
|
"""
|
|
75
138
|
|
|
76
139
|
def __init__(
|
|
@@ -85,6 +148,7 @@ class SearchItemSegments(Request):
|
|
|
85
148
|
logic: Logic = DEFAULT,
|
|
86
149
|
expert_settings: dict = DEFAULT,
|
|
87
150
|
return_ab_group: bool = DEFAULT,
|
|
151
|
+
reql_expressions: dict = DEFAULT,
|
|
88
152
|
):
|
|
89
153
|
super().__init__(
|
|
90
154
|
path="/search/users/%s/item-segments/" % (user_id),
|
|
@@ -102,6 +166,7 @@ class SearchItemSegments(Request):
|
|
|
102
166
|
self.logic = logic
|
|
103
167
|
self.expert_settings = expert_settings
|
|
104
168
|
self.return_ab_group = return_ab_group
|
|
169
|
+
self.reql_expressions = reql_expressions
|
|
105
170
|
|
|
106
171
|
def get_body_parameters(self) -> dict:
|
|
107
172
|
"""
|
|
@@ -124,6 +189,8 @@ class SearchItemSegments(Request):
|
|
|
124
189
|
p["expertSettings"] = serialize_to_json(self.expert_settings)
|
|
125
190
|
if self.return_ab_group is not DEFAULT:
|
|
126
191
|
p["returnAbGroup"] = serialize_to_json(self.return_ab_group)
|
|
192
|
+
if self.reql_expressions is not DEFAULT:
|
|
193
|
+
p["reqlExpressions"] = serialize_to_json(self.reql_expressions)
|
|
127
194
|
|
|
128
195
|
return p
|
|
129
196
|
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/SOURCES.txt
RENAMED
|
@@ -78,6 +78,7 @@ recombee_api_client/api_requests/recommend_item_segments_to_user.py
|
|
|
78
78
|
recombee_api_client/api_requests/recommend_items_to_item.py
|
|
79
79
|
recombee_api_client/api_requests/recommend_items_to_item_segment.py
|
|
80
80
|
recombee_api_client/api_requests/recommend_items_to_user.py
|
|
81
|
+
recombee_api_client/api_requests/recommend_next_item_segments.py
|
|
81
82
|
recombee_api_client/api_requests/recommend_next_items.py
|
|
82
83
|
recombee_api_client/api_requests/recommend_users_to_item.py
|
|
83
84
|
recombee_api_client/api_requests/recommend_users_to_user.py
|
|
@@ -10,7 +10,7 @@ with open(path.join(here, "README.rst"), encoding="utf-8") as f:
|
|
|
10
10
|
|
|
11
11
|
setup(
|
|
12
12
|
name="recombee-api-client",
|
|
13
|
-
version="6.
|
|
13
|
+
version="6.2.0",
|
|
14
14
|
description="Client for Recombee recommendation API",
|
|
15
15
|
long_description=long_description,
|
|
16
16
|
url="https://github.com/Recombee/python-api-client",
|
|
@@ -326,6 +326,15 @@ if __name__ == "__main__":
|
|
|
326
326
|
RecommendItemSegmentsToItemSegmentTestCase
|
|
327
327
|
)
|
|
328
328
|
)
|
|
329
|
+
from tests.test_cases.test_recommend_next_item_segments import (
|
|
330
|
+
RecommendNextItemSegmentsTestCase,
|
|
331
|
+
)
|
|
332
|
+
|
|
333
|
+
suite.addTests(
|
|
334
|
+
unittest.defaultTestLoader.loadTestsFromTestCase(
|
|
335
|
+
RecommendNextItemSegmentsTestCase
|
|
336
|
+
)
|
|
337
|
+
)
|
|
329
338
|
from tests.test_cases.test_composite_recommendation import (
|
|
330
339
|
CompositeRecommendationTestCase,
|
|
331
340
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_item.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/add_user.py
RENAMED
|
File without changes
|
|
File without changes
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/batch.py
RENAMED
|
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
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/api_requests/request.py
RENAMED
|
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
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/inputs/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/requires.txt
RENAMED
|
File without changes
|
{recombee_api_client-6.0.0 → recombee_api_client-6.2.0}/recombee_api_client.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|