shaped 0.14.0__py3-none-any.whl → 1.0.1__py3-none-any.whl
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.
- shaped/__init__.py +1 -1
- shaped/autogen/__init__.py +1 -0
- shaped/autogen/api/dataset_api.py +12 -4
- shaped/autogen/api/model_inference_api.py +33 -14
- shaped/autogen/api/model_management_api.py +15 -5
- shaped/autogen/api_client.py +19 -3
- shaped/autogen/configuration.py +152 -37
- shaped/autogen/models/__init__.py +1 -0
- shaped/autogen/models/complement_items_request.py +4 -2
- shaped/autogen/models/create_model_arguments.py +3 -3
- shaped/autogen/models/http_validation_error.py +3 -3
- shaped/autogen/models/list_datasets_response.py +3 -3
- shaped/autogen/models/list_models_response.py +3 -3
- shaped/autogen/models/post_rank_request.py +3 -3
- shaped/autogen/models/retrieve_response.py +91 -0
- shaped/autogen/models/retriever_top_k_override.py +3 -3
- shaped/autogen/models/similar_item_request.py +3 -1
- shaped/autogen/models/similar_users_request.py +3 -1
- shaped/autogen/rest.py +1 -1
- shaped/client.py +6 -0
- {shaped-0.14.0.dist-info → shaped-1.0.1.dist-info}/METADATA +38 -20
- {shaped-0.14.0.dist-info → shaped-1.0.1.dist-info}/RECORD +26 -25
- {shaped-0.14.0.dist-info → shaped-1.0.1.dist-info}/WHEEL +1 -1
- {shaped-0.14.0.dist-info → shaped-1.0.1.dist-info}/entry_points.txt +0 -0
- {shaped-0.14.0.dist-info → shaped-1.0.1.dist-info}/top_level.txt +0 -0
- {shaped-0.14.0.dist-info → shaped-1.0.1.dist-info}/zip-safe +0 -0
shaped/__init__.py
CHANGED
shaped/autogen/__init__.py
CHANGED
|
@@ -73,6 +73,7 @@ from shaped.autogen.models.rank_grid_attribute_response import RankGridAttribute
|
|
|
73
73
|
from shaped.autogen.models.rank_response import RankResponse
|
|
74
74
|
from shaped.autogen.models.redshift_dataset_config import RedshiftDatasetConfig
|
|
75
75
|
from shaped.autogen.models.retrieve_request import RetrieveRequest
|
|
76
|
+
from shaped.autogen.models.retrieve_response import RetrieveResponse
|
|
76
77
|
from shaped.autogen.models.retriever_top_k_override import RetrieverTopKOverride
|
|
77
78
|
from shaped.autogen.models.rudder_stack_dataset_config import RudderStackDatasetConfig
|
|
78
79
|
from shaped.autogen.models.segment_dataset_config import SegmentDatasetConfig
|
|
@@ -272,7 +272,9 @@ class DatasetApi:
|
|
|
272
272
|
_query_params: List[Tuple[str, str]] = []
|
|
273
273
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
274
274
|
_form_params: List[Tuple[str, str]] = []
|
|
275
|
-
_files: Dict[
|
|
275
|
+
_files: Dict[
|
|
276
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
277
|
+
] = {}
|
|
276
278
|
_body_params: Optional[bytes] = None
|
|
277
279
|
|
|
278
280
|
# process the path parameters
|
|
@@ -561,7 +563,9 @@ class DatasetApi:
|
|
|
561
563
|
_query_params: List[Tuple[str, str]] = []
|
|
562
564
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
563
565
|
_form_params: List[Tuple[str, str]] = []
|
|
564
|
-
_files: Dict[
|
|
566
|
+
_files: Dict[
|
|
567
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
568
|
+
] = {}
|
|
565
569
|
_body_params: Optional[bytes] = None
|
|
566
570
|
|
|
567
571
|
# process the path parameters
|
|
@@ -837,7 +841,9 @@ class DatasetApi:
|
|
|
837
841
|
_query_params: List[Tuple[str, str]] = []
|
|
838
842
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
839
843
|
_form_params: List[Tuple[str, str]] = []
|
|
840
|
-
_files: Dict[
|
|
844
|
+
_files: Dict[
|
|
845
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
846
|
+
] = {}
|
|
841
847
|
_body_params: Optional[bytes] = None
|
|
842
848
|
|
|
843
849
|
# process the path parameters
|
|
@@ -1100,7 +1106,9 @@ class DatasetApi:
|
|
|
1100
1106
|
_query_params: List[Tuple[str, str]] = []
|
|
1101
1107
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1102
1108
|
_form_params: List[Tuple[str, str]] = []
|
|
1103
|
-
_files: Dict[
|
|
1109
|
+
_files: Dict[
|
|
1110
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1111
|
+
] = {}
|
|
1104
1112
|
_body_params: Optional[bytes] = None
|
|
1105
1113
|
|
|
1106
1114
|
# process the path parameters
|
|
@@ -31,6 +31,7 @@ from shaped.autogen.models.rank_grid_attribute_request1 import RankGridAttribute
|
|
|
31
31
|
from shaped.autogen.models.rank_grid_attribute_response import RankGridAttributeResponse
|
|
32
32
|
from shaped.autogen.models.rank_response import RankResponse
|
|
33
33
|
from shaped.autogen.models.retrieve_request import RetrieveRequest
|
|
34
|
+
from shaped.autogen.models.retrieve_response import RetrieveResponse
|
|
34
35
|
from shaped.autogen.models.similar_item_request import SimilarItemRequest
|
|
35
36
|
from shaped.autogen.models.similar_response import SimilarResponse
|
|
36
37
|
from shaped.autogen.models.similar_users_request import SimilarUsersRequest
|
|
@@ -297,7 +298,9 @@ class ModelInferenceApi:
|
|
|
297
298
|
_query_params: List[Tuple[str, str]] = []
|
|
298
299
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
299
300
|
_form_params: List[Tuple[str, str]] = []
|
|
300
|
-
_files: Dict[
|
|
301
|
+
_files: Dict[
|
|
302
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
303
|
+
] = {}
|
|
301
304
|
_body_params: Optional[bytes] = None
|
|
302
305
|
|
|
303
306
|
# process the path parameters
|
|
@@ -601,7 +604,9 @@ class ModelInferenceApi:
|
|
|
601
604
|
_query_params: List[Tuple[str, str]] = []
|
|
602
605
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
603
606
|
_form_params: List[Tuple[str, str]] = []
|
|
604
|
-
_files: Dict[
|
|
607
|
+
_files: Dict[
|
|
608
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
609
|
+
] = {}
|
|
605
610
|
_body_params: Optional[bytes] = None
|
|
606
611
|
|
|
607
612
|
# process the path parameters
|
|
@@ -905,7 +910,9 @@ class ModelInferenceApi:
|
|
|
905
910
|
_query_params: List[Tuple[str, str]] = []
|
|
906
911
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
907
912
|
_form_params: List[Tuple[str, str]] = []
|
|
908
|
-
_files: Dict[
|
|
913
|
+
_files: Dict[
|
|
914
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
915
|
+
] = {}
|
|
909
916
|
_body_params: Optional[bytes] = None
|
|
910
917
|
|
|
911
918
|
# process the path parameters
|
|
@@ -1209,7 +1216,9 @@ class ModelInferenceApi:
|
|
|
1209
1216
|
_query_params: List[Tuple[str, str]] = []
|
|
1210
1217
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1211
1218
|
_form_params: List[Tuple[str, str]] = []
|
|
1212
|
-
_files: Dict[
|
|
1219
|
+
_files: Dict[
|
|
1220
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1221
|
+
] = {}
|
|
1213
1222
|
_body_params: Optional[bytes] = None
|
|
1214
1223
|
|
|
1215
1224
|
# process the path parameters
|
|
@@ -1513,7 +1522,9 @@ class ModelInferenceApi:
|
|
|
1513
1522
|
_query_params: List[Tuple[str, str]] = []
|
|
1514
1523
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1515
1524
|
_form_params: List[Tuple[str, str]] = []
|
|
1516
|
-
_files: Dict[
|
|
1525
|
+
_files: Dict[
|
|
1526
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1527
|
+
] = {}
|
|
1517
1528
|
_body_params: Optional[bytes] = None
|
|
1518
1529
|
|
|
1519
1530
|
# process the path parameters
|
|
@@ -1817,7 +1828,9 @@ class ModelInferenceApi:
|
|
|
1817
1828
|
_query_params: List[Tuple[str, str]] = []
|
|
1818
1829
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1819
1830
|
_form_params: List[Tuple[str, str]] = []
|
|
1820
|
-
_files: Dict[
|
|
1831
|
+
_files: Dict[
|
|
1832
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1833
|
+
] = {}
|
|
1821
1834
|
_body_params: Optional[bytes] = None
|
|
1822
1835
|
|
|
1823
1836
|
# process the path parameters
|
|
@@ -1895,7 +1908,7 @@ class ModelInferenceApi:
|
|
|
1895
1908
|
_content_type: Optional[StrictStr] = None,
|
|
1896
1909
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1897
1910
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1898
|
-
) ->
|
|
1911
|
+
) -> RetrieveResponse:
|
|
1899
1912
|
"""Retrieve
|
|
1900
1913
|
|
|
1901
1914
|
Retrieve returns relevant item_ids for the given input text or user query. It can be used instead of rank if the filtering, scoring and ordering stages aren't needed for the final ranking. Typically people use this endpoint over rank if they want to reduce latency and complexity of the ranking pipeline and only need a subset of the functionality, e.g. just search but without personalization.
|
|
@@ -1939,7 +1952,7 @@ class ModelInferenceApi:
|
|
|
1939
1952
|
)
|
|
1940
1953
|
|
|
1941
1954
|
_response_types_map: Dict[str, Optional[str]] = {
|
|
1942
|
-
'200': "
|
|
1955
|
+
'200': "RetrieveResponse",
|
|
1943
1956
|
'422': "HTTPValidationError",
|
|
1944
1957
|
}
|
|
1945
1958
|
response_data = self.api_client.call_api(
|
|
@@ -1971,7 +1984,7 @@ class ModelInferenceApi:
|
|
|
1971
1984
|
_content_type: Optional[StrictStr] = None,
|
|
1972
1985
|
_headers: Optional[Dict[StrictStr, Any]] = None,
|
|
1973
1986
|
_host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
|
|
1974
|
-
) -> ApiResponse[
|
|
1987
|
+
) -> ApiResponse[RetrieveResponse]:
|
|
1975
1988
|
"""Retrieve
|
|
1976
1989
|
|
|
1977
1990
|
Retrieve returns relevant item_ids for the given input text or user query. It can be used instead of rank if the filtering, scoring and ordering stages aren't needed for the final ranking. Typically people use this endpoint over rank if they want to reduce latency and complexity of the ranking pipeline and only need a subset of the functionality, e.g. just search but without personalization.
|
|
@@ -2015,7 +2028,7 @@ class ModelInferenceApi:
|
|
|
2015
2028
|
)
|
|
2016
2029
|
|
|
2017
2030
|
_response_types_map: Dict[str, Optional[str]] = {
|
|
2018
|
-
'200': "
|
|
2031
|
+
'200': "RetrieveResponse",
|
|
2019
2032
|
'422': "HTTPValidationError",
|
|
2020
2033
|
}
|
|
2021
2034
|
response_data = self.api_client.call_api(
|
|
@@ -2091,7 +2104,7 @@ class ModelInferenceApi:
|
|
|
2091
2104
|
)
|
|
2092
2105
|
|
|
2093
2106
|
_response_types_map: Dict[str, Optional[str]] = {
|
|
2094
|
-
'200': "
|
|
2107
|
+
'200': "RetrieveResponse",
|
|
2095
2108
|
'422': "HTTPValidationError",
|
|
2096
2109
|
}
|
|
2097
2110
|
response_data = self.api_client.call_api(
|
|
@@ -2121,7 +2134,9 @@ class ModelInferenceApi:
|
|
|
2121
2134
|
_query_params: List[Tuple[str, str]] = []
|
|
2122
2135
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
2123
2136
|
_form_params: List[Tuple[str, str]] = []
|
|
2124
|
-
_files: Dict[
|
|
2137
|
+
_files: Dict[
|
|
2138
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
2139
|
+
] = {}
|
|
2125
2140
|
_body_params: Optional[bytes] = None
|
|
2126
2141
|
|
|
2127
2142
|
# process the path parameters
|
|
@@ -2425,7 +2440,9 @@ class ModelInferenceApi:
|
|
|
2425
2440
|
_query_params: List[Tuple[str, str]] = []
|
|
2426
2441
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
2427
2442
|
_form_params: List[Tuple[str, str]] = []
|
|
2428
|
-
_files: Dict[
|
|
2443
|
+
_files: Dict[
|
|
2444
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
2445
|
+
] = {}
|
|
2429
2446
|
_body_params: Optional[bytes] = None
|
|
2430
2447
|
|
|
2431
2448
|
# process the path parameters
|
|
@@ -2742,7 +2759,9 @@ class ModelInferenceApi:
|
|
|
2742
2759
|
_query_params: List[Tuple[str, str]] = []
|
|
2743
2760
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
2744
2761
|
_form_params: List[Tuple[str, str]] = []
|
|
2745
|
-
_files: Dict[
|
|
2762
|
+
_files: Dict[
|
|
2763
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
2764
|
+
] = {}
|
|
2746
2765
|
_body_params: Optional[bytes] = None
|
|
2747
2766
|
|
|
2748
2767
|
# process the path parameters
|
|
@@ -273,7 +273,9 @@ class ModelManagementApi:
|
|
|
273
273
|
_query_params: List[Tuple[str, str]] = []
|
|
274
274
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
275
275
|
_form_params: List[Tuple[str, str]] = []
|
|
276
|
-
_files: Dict[
|
|
276
|
+
_files: Dict[
|
|
277
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
278
|
+
] = {}
|
|
277
279
|
_body_params: Optional[bytes] = None
|
|
278
280
|
|
|
279
281
|
# process the path parameters
|
|
@@ -549,7 +551,9 @@ class ModelManagementApi:
|
|
|
549
551
|
_query_params: List[Tuple[str, str]] = []
|
|
550
552
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
551
553
|
_form_params: List[Tuple[str, str]] = []
|
|
552
|
-
_files: Dict[
|
|
554
|
+
_files: Dict[
|
|
555
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
556
|
+
] = {}
|
|
553
557
|
_body_params: Optional[bytes] = None
|
|
554
558
|
|
|
555
559
|
# process the path parameters
|
|
@@ -812,7 +816,9 @@ class ModelManagementApi:
|
|
|
812
816
|
_query_params: List[Tuple[str, str]] = []
|
|
813
817
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
814
818
|
_form_params: List[Tuple[str, str]] = []
|
|
815
|
-
_files: Dict[
|
|
819
|
+
_files: Dict[
|
|
820
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
821
|
+
] = {}
|
|
816
822
|
_body_params: Optional[bytes] = None
|
|
817
823
|
|
|
818
824
|
# process the path parameters
|
|
@@ -1086,7 +1092,9 @@ class ModelManagementApi:
|
|
|
1086
1092
|
_query_params: List[Tuple[str, str]] = []
|
|
1087
1093
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1088
1094
|
_form_params: List[Tuple[str, str]] = []
|
|
1089
|
-
_files: Dict[
|
|
1095
|
+
_files: Dict[
|
|
1096
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1097
|
+
] = {}
|
|
1090
1098
|
_body_params: Optional[bytes] = None
|
|
1091
1099
|
|
|
1092
1100
|
# process the path parameters
|
|
@@ -1375,7 +1383,9 @@ class ModelManagementApi:
|
|
|
1375
1383
|
_query_params: List[Tuple[str, str]] = []
|
|
1376
1384
|
_header_params: Dict[str, Optional[str]] = _headers or {}
|
|
1377
1385
|
_form_params: List[Tuple[str, str]] = []
|
|
1378
|
-
_files: Dict[
|
|
1386
|
+
_files: Dict[
|
|
1387
|
+
str, Union[str, bytes, List[str], List[bytes], List[Tuple[str, bytes]]]
|
|
1388
|
+
] = {}
|
|
1379
1389
|
_body_params: Optional[bytes] = None
|
|
1380
1390
|
|
|
1381
1391
|
# process the path parameters
|
shaped/autogen/api_client.py
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import datetime
|
|
16
16
|
from dateutil.parser import parse
|
|
17
17
|
from enum import Enum
|
|
18
|
+
import decimal
|
|
18
19
|
import json
|
|
19
20
|
import mimetypes
|
|
20
21
|
import os
|
|
@@ -66,6 +67,7 @@ class ApiClient:
|
|
|
66
67
|
'bool': bool,
|
|
67
68
|
'date': datetime.date,
|
|
68
69
|
'datetime': datetime.datetime,
|
|
70
|
+
'decimal': decimal.Decimal,
|
|
69
71
|
'object': object,
|
|
70
72
|
}
|
|
71
73
|
_pool = None
|
|
@@ -338,6 +340,7 @@ class ApiClient:
|
|
|
338
340
|
If obj is str, int, long, float, bool, return directly.
|
|
339
341
|
If obj is datetime.datetime, datetime.date
|
|
340
342
|
convert to string in iso8601 format.
|
|
343
|
+
If obj is decimal.Decimal return string representation.
|
|
341
344
|
If obj is list, sanitize each element in the list.
|
|
342
345
|
If obj is dict, return the dict.
|
|
343
346
|
If obj is OpenAPI model, return the properties dict.
|
|
@@ -363,6 +366,8 @@ class ApiClient:
|
|
|
363
366
|
)
|
|
364
367
|
elif isinstance(obj, (datetime.datetime, datetime.date)):
|
|
365
368
|
return obj.isoformat()
|
|
369
|
+
elif isinstance(obj, decimal.Decimal):
|
|
370
|
+
return str(obj)
|
|
366
371
|
|
|
367
372
|
elif isinstance(obj, dict):
|
|
368
373
|
obj_dict = obj
|
|
@@ -399,12 +404,12 @@ class ApiClient:
|
|
|
399
404
|
data = json.loads(response_text)
|
|
400
405
|
except ValueError:
|
|
401
406
|
data = response_text
|
|
402
|
-
elif
|
|
407
|
+
elif re.match(r'^application/(json|[\w!#$&.+-^_]+\+json)\s*(;|$)', content_type, re.IGNORECASE):
|
|
403
408
|
if response_text == "":
|
|
404
409
|
data = ""
|
|
405
410
|
else:
|
|
406
411
|
data = json.loads(response_text)
|
|
407
|
-
elif
|
|
412
|
+
elif re.match(r'^text\/[a-z.+-]+\s*(;|$)', content_type, re.IGNORECASE):
|
|
408
413
|
data = response_text
|
|
409
414
|
else:
|
|
410
415
|
raise ApiException(
|
|
@@ -454,6 +459,8 @@ class ApiClient:
|
|
|
454
459
|
return self.__deserialize_date(data)
|
|
455
460
|
elif klass == datetime.datetime:
|
|
456
461
|
return self.__deserialize_datetime(data)
|
|
462
|
+
elif klass == decimal.Decimal:
|
|
463
|
+
return decimal.Decimal(data)
|
|
457
464
|
elif issubclass(klass, Enum):
|
|
458
465
|
return self.__deserialize_enum(data, klass)
|
|
459
466
|
else:
|
|
@@ -528,7 +535,10 @@ class ApiClient:
|
|
|
528
535
|
|
|
529
536
|
return "&".join(["=".join(map(str, item)) for item in new_params])
|
|
530
537
|
|
|
531
|
-
def files_parameters(
|
|
538
|
+
def files_parameters(
|
|
539
|
+
self,
|
|
540
|
+
files: Dict[str, Union[str, bytes, List[str], List[bytes], Tuple[str, bytes]]],
|
|
541
|
+
):
|
|
532
542
|
"""Builds form parameters.
|
|
533
543
|
|
|
534
544
|
:param files: File parameters.
|
|
@@ -543,6 +553,12 @@ class ApiClient:
|
|
|
543
553
|
elif isinstance(v, bytes):
|
|
544
554
|
filename = k
|
|
545
555
|
filedata = v
|
|
556
|
+
elif isinstance(v, tuple):
|
|
557
|
+
filename, filedata = v
|
|
558
|
+
elif isinstance(v, list):
|
|
559
|
+
for file_param in v:
|
|
560
|
+
params.extend(self.files_parameters({k: file_param}))
|
|
561
|
+
continue
|
|
546
562
|
else:
|
|
547
563
|
raise ValueError("Unsupported file value")
|
|
548
564
|
mimetype = (
|
shaped/autogen/configuration.py
CHANGED
|
@@ -13,14 +13,16 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
import copy
|
|
16
|
+
import http.client as httplib
|
|
16
17
|
import logging
|
|
17
18
|
from logging import FileHandler
|
|
18
19
|
import multiprocessing
|
|
19
20
|
import sys
|
|
20
|
-
from typing import Optional
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Literal, Optional, TypedDict
|
|
22
|
+
from typing_extensions import NotRequired, Self
|
|
23
|
+
|
|
21
24
|
import urllib3
|
|
22
25
|
|
|
23
|
-
import http.client as httplib
|
|
24
26
|
|
|
25
27
|
JSON_SCHEMA_VALIDATION_KEYWORDS = {
|
|
26
28
|
'multipleOf', 'maximum', 'exclusiveMaximum',
|
|
@@ -28,6 +30,106 @@ JSON_SCHEMA_VALIDATION_KEYWORDS = {
|
|
|
28
30
|
'minLength', 'pattern', 'maxItems', 'minItems'
|
|
29
31
|
}
|
|
30
32
|
|
|
33
|
+
ServerVariablesT = Dict[str, str]
|
|
34
|
+
|
|
35
|
+
GenericAuthSetting = TypedDict(
|
|
36
|
+
"GenericAuthSetting",
|
|
37
|
+
{
|
|
38
|
+
"type": str,
|
|
39
|
+
"in": str,
|
|
40
|
+
"key": str,
|
|
41
|
+
"value": str,
|
|
42
|
+
},
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
OAuth2AuthSetting = TypedDict(
|
|
47
|
+
"OAuth2AuthSetting",
|
|
48
|
+
{
|
|
49
|
+
"type": Literal["oauth2"],
|
|
50
|
+
"in": Literal["header"],
|
|
51
|
+
"key": Literal["Authorization"],
|
|
52
|
+
"value": str,
|
|
53
|
+
},
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
APIKeyAuthSetting = TypedDict(
|
|
58
|
+
"APIKeyAuthSetting",
|
|
59
|
+
{
|
|
60
|
+
"type": Literal["api_key"],
|
|
61
|
+
"in": str,
|
|
62
|
+
"key": str,
|
|
63
|
+
"value": Optional[str],
|
|
64
|
+
},
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
BasicAuthSetting = TypedDict(
|
|
69
|
+
"BasicAuthSetting",
|
|
70
|
+
{
|
|
71
|
+
"type": Literal["basic"],
|
|
72
|
+
"in": Literal["header"],
|
|
73
|
+
"key": Literal["Authorization"],
|
|
74
|
+
"value": Optional[str],
|
|
75
|
+
},
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
BearerFormatAuthSetting = TypedDict(
|
|
80
|
+
"BearerFormatAuthSetting",
|
|
81
|
+
{
|
|
82
|
+
"type": Literal["bearer"],
|
|
83
|
+
"in": Literal["header"],
|
|
84
|
+
"format": Literal["JWT"],
|
|
85
|
+
"key": Literal["Authorization"],
|
|
86
|
+
"value": str,
|
|
87
|
+
},
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
BearerAuthSetting = TypedDict(
|
|
92
|
+
"BearerAuthSetting",
|
|
93
|
+
{
|
|
94
|
+
"type": Literal["bearer"],
|
|
95
|
+
"in": Literal["header"],
|
|
96
|
+
"key": Literal["Authorization"],
|
|
97
|
+
"value": str,
|
|
98
|
+
},
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
HTTPSignatureAuthSetting = TypedDict(
|
|
103
|
+
"HTTPSignatureAuthSetting",
|
|
104
|
+
{
|
|
105
|
+
"type": Literal["http-signature"],
|
|
106
|
+
"in": Literal["header"],
|
|
107
|
+
"key": Literal["Authorization"],
|
|
108
|
+
"value": None,
|
|
109
|
+
},
|
|
110
|
+
)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
AuthSettings = TypedDict(
|
|
114
|
+
"AuthSettings",
|
|
115
|
+
{
|
|
116
|
+
},
|
|
117
|
+
total=False,
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class HostSettingVariable(TypedDict):
|
|
122
|
+
description: str
|
|
123
|
+
default_value: str
|
|
124
|
+
enum_values: List[str]
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class HostSetting(TypedDict):
|
|
128
|
+
url: str
|
|
129
|
+
description: str
|
|
130
|
+
variables: NotRequired[Dict[str, HostSettingVariable]]
|
|
131
|
+
|
|
132
|
+
|
|
31
133
|
class Configuration:
|
|
32
134
|
"""This class contains various settings of the API client.
|
|
33
135
|
|
|
@@ -61,20 +163,26 @@ class Configuration:
|
|
|
61
163
|
|
|
62
164
|
"""
|
|
63
165
|
|
|
64
|
-
_default = None
|
|
65
|
-
|
|
66
|
-
def __init__(
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
166
|
+
_default: ClassVar[Optional[Self]] = None
|
|
167
|
+
|
|
168
|
+
def __init__(
|
|
169
|
+
self,
|
|
170
|
+
host: Optional[str]=None,
|
|
171
|
+
api_key: Optional[Dict[str, str]]=None,
|
|
172
|
+
api_key_prefix: Optional[Dict[str, str]]=None,
|
|
173
|
+
username: Optional[str]=None,
|
|
174
|
+
password: Optional[str]=None,
|
|
175
|
+
access_token: Optional[str]=None,
|
|
176
|
+
server_index: Optional[int]=None,
|
|
177
|
+
server_variables: Optional[ServerVariablesT]=None,
|
|
178
|
+
server_operation_index: Optional[Dict[int, int]]=None,
|
|
179
|
+
server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None,
|
|
180
|
+
ignore_operation_servers: bool=False,
|
|
181
|
+
ssl_ca_cert: Optional[str]=None,
|
|
182
|
+
retries: Optional[int] = None,
|
|
183
|
+
*,
|
|
184
|
+
debug: Optional[bool] = None,
|
|
185
|
+
) -> None:
|
|
78
186
|
"""Constructor
|
|
79
187
|
"""
|
|
80
188
|
self._base_path = "https://api.shaped.ai/v1" if host is None else host
|
|
@@ -198,7 +306,7 @@ class Configuration:
|
|
|
198
306
|
"""date format
|
|
199
307
|
"""
|
|
200
308
|
|
|
201
|
-
def __deepcopy__(self, memo):
|
|
309
|
+
def __deepcopy__(self, memo: Dict[int, Any]) -> Self:
|
|
202
310
|
cls = self.__class__
|
|
203
311
|
result = cls.__new__(cls)
|
|
204
312
|
memo[id(self)] = result
|
|
@@ -212,11 +320,11 @@ class Configuration:
|
|
|
212
320
|
result.debug = self.debug
|
|
213
321
|
return result
|
|
214
322
|
|
|
215
|
-
def __setattr__(self, name, value):
|
|
323
|
+
def __setattr__(self, name: str, value: Any) -> None:
|
|
216
324
|
object.__setattr__(self, name, value)
|
|
217
325
|
|
|
218
326
|
@classmethod
|
|
219
|
-
def set_default(cls, default):
|
|
327
|
+
def set_default(cls, default: Optional[Self]) -> None:
|
|
220
328
|
"""Set default instance of configuration.
|
|
221
329
|
|
|
222
330
|
It stores default configuration, which can be
|
|
@@ -227,7 +335,7 @@ class Configuration:
|
|
|
227
335
|
cls._default = default
|
|
228
336
|
|
|
229
337
|
@classmethod
|
|
230
|
-
def get_default_copy(cls):
|
|
338
|
+
def get_default_copy(cls) -> Self:
|
|
231
339
|
"""Deprecated. Please use `get_default` instead.
|
|
232
340
|
|
|
233
341
|
Deprecated. Please use `get_default` instead.
|
|
@@ -237,7 +345,7 @@ class Configuration:
|
|
|
237
345
|
return cls.get_default()
|
|
238
346
|
|
|
239
347
|
@classmethod
|
|
240
|
-
def get_default(cls):
|
|
348
|
+
def get_default(cls) -> Self:
|
|
241
349
|
"""Return the default configuration.
|
|
242
350
|
|
|
243
351
|
This method returns newly created, based on default constructor,
|
|
@@ -247,11 +355,11 @@ class Configuration:
|
|
|
247
355
|
:return: The configuration object.
|
|
248
356
|
"""
|
|
249
357
|
if cls._default is None:
|
|
250
|
-
cls._default =
|
|
358
|
+
cls._default = cls()
|
|
251
359
|
return cls._default
|
|
252
360
|
|
|
253
361
|
@property
|
|
254
|
-
def logger_file(self):
|
|
362
|
+
def logger_file(self) -> Optional[str]:
|
|
255
363
|
"""The logger file.
|
|
256
364
|
|
|
257
365
|
If the logger_file is None, then add stream handler and remove file
|
|
@@ -263,7 +371,7 @@ class Configuration:
|
|
|
263
371
|
return self.__logger_file
|
|
264
372
|
|
|
265
373
|
@logger_file.setter
|
|
266
|
-
def logger_file(self, value):
|
|
374
|
+
def logger_file(self, value: Optional[str]) -> None:
|
|
267
375
|
"""The logger file.
|
|
268
376
|
|
|
269
377
|
If the logger_file is None, then add stream handler and remove file
|
|
@@ -282,7 +390,7 @@ class Configuration:
|
|
|
282
390
|
logger.addHandler(self.logger_file_handler)
|
|
283
391
|
|
|
284
392
|
@property
|
|
285
|
-
def debug(self):
|
|
393
|
+
def debug(self) -> bool:
|
|
286
394
|
"""Debug status
|
|
287
395
|
|
|
288
396
|
:param value: The debug status, True or False.
|
|
@@ -291,7 +399,7 @@ class Configuration:
|
|
|
291
399
|
return self.__debug
|
|
292
400
|
|
|
293
401
|
@debug.setter
|
|
294
|
-
def debug(self, value):
|
|
402
|
+
def debug(self, value: bool) -> None:
|
|
295
403
|
"""Debug status
|
|
296
404
|
|
|
297
405
|
:param value: The debug status, True or False.
|
|
@@ -313,7 +421,7 @@ class Configuration:
|
|
|
313
421
|
httplib.HTTPConnection.debuglevel = 0
|
|
314
422
|
|
|
315
423
|
@property
|
|
316
|
-
def logger_format(self):
|
|
424
|
+
def logger_format(self) -> str:
|
|
317
425
|
"""The logger format.
|
|
318
426
|
|
|
319
427
|
The logger_formatter will be updated when sets logger_format.
|
|
@@ -324,7 +432,7 @@ class Configuration:
|
|
|
324
432
|
return self.__logger_format
|
|
325
433
|
|
|
326
434
|
@logger_format.setter
|
|
327
|
-
def logger_format(self, value):
|
|
435
|
+
def logger_format(self, value: str) -> None:
|
|
328
436
|
"""The logger format.
|
|
329
437
|
|
|
330
438
|
The logger_formatter will be updated when sets logger_format.
|
|
@@ -335,7 +443,7 @@ class Configuration:
|
|
|
335
443
|
self.__logger_format = value
|
|
336
444
|
self.logger_formatter = logging.Formatter(self.__logger_format)
|
|
337
445
|
|
|
338
|
-
def get_api_key_with_prefix(self, identifier, alias=None):
|
|
446
|
+
def get_api_key_with_prefix(self, identifier: str, alias: Optional[str]=None) -> Optional[str]:
|
|
339
447
|
"""Gets API key (with prefix if set).
|
|
340
448
|
|
|
341
449
|
:param identifier: The identifier of apiKey.
|
|
@@ -352,7 +460,9 @@ class Configuration:
|
|
|
352
460
|
else:
|
|
353
461
|
return key
|
|
354
462
|
|
|
355
|
-
|
|
463
|
+
return None
|
|
464
|
+
|
|
465
|
+
def get_basic_auth_token(self) -> Optional[str]:
|
|
356
466
|
"""Gets HTTP basic authentication header (string).
|
|
357
467
|
|
|
358
468
|
:return: The token for basic HTTP authentication.
|
|
@@ -367,15 +477,15 @@ class Configuration:
|
|
|
367
477
|
basic_auth=username + ':' + password
|
|
368
478
|
).get('authorization')
|
|
369
479
|
|
|
370
|
-
def auth_settings(self):
|
|
480
|
+
def auth_settings(self)-> AuthSettings:
|
|
371
481
|
"""Gets Auth Settings dict for api client.
|
|
372
482
|
|
|
373
483
|
:return: The Auth Settings information dict.
|
|
374
484
|
"""
|
|
375
|
-
auth = {}
|
|
485
|
+
auth: AuthSettings = {}
|
|
376
486
|
return auth
|
|
377
487
|
|
|
378
|
-
def to_debug_report(self):
|
|
488
|
+
def to_debug_report(self) -> str:
|
|
379
489
|
"""Gets the essential information for debugging.
|
|
380
490
|
|
|
381
491
|
:return: The report for debugging.
|
|
@@ -387,7 +497,7 @@ class Configuration:
|
|
|
387
497
|
"SDK Package Version: 1.0.0".\
|
|
388
498
|
format(env=sys.platform, pyversion=sys.version)
|
|
389
499
|
|
|
390
|
-
def get_host_settings(self):
|
|
500
|
+
def get_host_settings(self) -> List[HostSetting]:
|
|
391
501
|
"""Gets an array of host settings
|
|
392
502
|
|
|
393
503
|
:return: An array of host settings
|
|
@@ -399,7 +509,12 @@ class Configuration:
|
|
|
399
509
|
}
|
|
400
510
|
]
|
|
401
511
|
|
|
402
|
-
def get_host_from_settings(
|
|
512
|
+
def get_host_from_settings(
|
|
513
|
+
self,
|
|
514
|
+
index: Optional[int],
|
|
515
|
+
variables: Optional[ServerVariablesT]=None,
|
|
516
|
+
servers: Optional[List[HostSetting]]=None,
|
|
517
|
+
) -> str:
|
|
403
518
|
"""Gets host URL based on the index and variables
|
|
404
519
|
:param index: array index of the host settings
|
|
405
520
|
:param variables: hash of variable and the corresponding value
|
|
@@ -439,12 +554,12 @@ class Configuration:
|
|
|
439
554
|
return url
|
|
440
555
|
|
|
441
556
|
@property
|
|
442
|
-
def host(self):
|
|
557
|
+
def host(self) -> str:
|
|
443
558
|
"""Return generated host."""
|
|
444
559
|
return self.get_host_from_settings(self.server_index, variables=self.server_variables)
|
|
445
560
|
|
|
446
561
|
@host.setter
|
|
447
|
-
def host(self, value):
|
|
562
|
+
def host(self, value: str) -> None:
|
|
448
563
|
"""Fix base path."""
|
|
449
564
|
self._base_path = value
|
|
450
565
|
self.server_index = None
|
|
@@ -54,6 +54,7 @@ from shaped.autogen.models.rank_grid_attribute_response import RankGridAttribute
|
|
|
54
54
|
from shaped.autogen.models.rank_response import RankResponse
|
|
55
55
|
from shaped.autogen.models.redshift_dataset_config import RedshiftDatasetConfig
|
|
56
56
|
from shaped.autogen.models.retrieve_request import RetrieveRequest
|
|
57
|
+
from shaped.autogen.models.retrieve_response import RetrieveResponse
|
|
57
58
|
from shaped.autogen.models.retriever_top_k_override import RetrieverTopKOverride
|
|
58
59
|
from shaped.autogen.models.rudder_stack_dataset_config import RudderStackDatasetConfig
|
|
59
60
|
from shaped.autogen.models.segment_dataset_config import SegmentDatasetConfig
|
|
@@ -17,7 +17,7 @@ import pprint
|
|
|
17
17
|
import re # noqa: F401
|
|
18
18
|
import json
|
|
19
19
|
|
|
20
|
-
from pydantic import BaseModel, ConfigDict, StrictBool, StrictStr
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr
|
|
21
21
|
from typing import Any, ClassVar, Dict, List, Optional
|
|
22
22
|
from shaped.autogen.models.inference_config import InferenceConfig
|
|
23
23
|
from typing import Optional, Set
|
|
@@ -30,8 +30,9 @@ class ComplementItemsRequest(BaseModel):
|
|
|
30
30
|
item_ids: List[StrictStr]
|
|
31
31
|
user_id: Optional[StrictStr] = None
|
|
32
32
|
return_metadata: Optional[StrictBool] = None
|
|
33
|
+
filter_predicate: Optional[StrictStr] = Field(default=None, description="A SQL where query that can be used to filter candidate items.")
|
|
33
34
|
config: Optional[InferenceConfig] = None
|
|
34
|
-
__properties: ClassVar[List[str]] = ["item_ids", "user_id", "return_metadata", "config"]
|
|
35
|
+
__properties: ClassVar[List[str]] = ["item_ids", "user_id", "return_metadata", "filter_predicate", "config"]
|
|
35
36
|
|
|
36
37
|
model_config = ConfigDict(
|
|
37
38
|
populate_by_name=True,
|
|
@@ -90,6 +91,7 @@ class ComplementItemsRequest(BaseModel):
|
|
|
90
91
|
"item_ids": obj.get("item_ids"),
|
|
91
92
|
"user_id": obj.get("user_id"),
|
|
92
93
|
"return_metadata": obj.get("return_metadata"),
|
|
94
|
+
"filter_predicate": obj.get("filter_predicate"),
|
|
93
95
|
"config": InferenceConfig.from_dict(obj["config"]) if obj.get("config") is not None else None
|
|
94
96
|
})
|
|
95
97
|
return _obj
|
|
@@ -79,9 +79,9 @@ class CreateModelArguments(BaseModel):
|
|
|
79
79
|
# override the default output from pydantic by calling `to_dict()` of each item in connectors (list)
|
|
80
80
|
_items = []
|
|
81
81
|
if self.connectors:
|
|
82
|
-
for
|
|
83
|
-
if
|
|
84
|
-
_items.append(
|
|
82
|
+
for _item_connectors in self.connectors:
|
|
83
|
+
if _item_connectors:
|
|
84
|
+
_items.append(_item_connectors.to_dict())
|
|
85
85
|
_dict['connectors'] = _items
|
|
86
86
|
# override the default output from pydantic by calling `to_dict()` of fetch
|
|
87
87
|
if self.fetch:
|
|
@@ -72,9 +72,9 @@ class HTTPValidationError(BaseModel):
|
|
|
72
72
|
# override the default output from pydantic by calling `to_dict()` of each item in detail (list)
|
|
73
73
|
_items = []
|
|
74
74
|
if self.detail:
|
|
75
|
-
for
|
|
76
|
-
if
|
|
77
|
-
_items.append(
|
|
75
|
+
for _item_detail in self.detail:
|
|
76
|
+
if _item_detail:
|
|
77
|
+
_items.append(_item_detail.to_dict())
|
|
78
78
|
_dict['detail'] = _items
|
|
79
79
|
return _dict
|
|
80
80
|
|
|
@@ -72,9 +72,9 @@ class ListDatasetsResponse(BaseModel):
|
|
|
72
72
|
# override the default output from pydantic by calling `to_dict()` of each item in datasets (list)
|
|
73
73
|
_items = []
|
|
74
74
|
if self.datasets:
|
|
75
|
-
for
|
|
76
|
-
if
|
|
77
|
-
_items.append(
|
|
75
|
+
for _item_datasets in self.datasets:
|
|
76
|
+
if _item_datasets:
|
|
77
|
+
_items.append(_item_datasets.to_dict())
|
|
78
78
|
_dict['datasets'] = _items
|
|
79
79
|
return _dict
|
|
80
80
|
|
|
@@ -72,9 +72,9 @@ class ListModelsResponse(BaseModel):
|
|
|
72
72
|
# override the default output from pydantic by calling `to_dict()` of each item in models (list)
|
|
73
73
|
_items = []
|
|
74
74
|
if self.models:
|
|
75
|
-
for
|
|
76
|
-
if
|
|
77
|
-
_items.append(
|
|
75
|
+
for _item_models in self.models:
|
|
76
|
+
if _item_models:
|
|
77
|
+
_items.append(_item_models.to_dict())
|
|
78
78
|
_dict['models'] = _items
|
|
79
79
|
return _dict
|
|
80
80
|
|
|
@@ -82,9 +82,9 @@ class PostRankRequest(BaseModel):
|
|
|
82
82
|
# override the default output from pydantic by calling `to_dict()` of each item in interactions (list)
|
|
83
83
|
_items = []
|
|
84
84
|
if self.interactions:
|
|
85
|
-
for
|
|
86
|
-
if
|
|
87
|
-
_items.append(
|
|
85
|
+
for _item_interactions in self.interactions:
|
|
86
|
+
if _item_interactions:
|
|
87
|
+
_items.append(_item_interactions.to_dict())
|
|
88
88
|
_dict['interactions'] = _items
|
|
89
89
|
# override the default output from pydantic by calling `to_dict()` of config
|
|
90
90
|
if self.config:
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
|
|
3
|
+
"""
|
|
4
|
+
Shaped API
|
|
5
|
+
|
|
6
|
+
Welcome to Shaped's API reference docs. These provide a detailed view of the endpoints and CLI commands that Shaped provides and brief explanations of how they should be used. Shaped's API is composed of 3 components: 1. **Dataset** - used to provision and manage 'Shaped Datasets', which are persisted data views of external data. Shaped Datasets can be created from any of our 'Shaped connectors' (e.g. S3, Segment, Snowflake, etc.) and support both batch ingestion (up to a 15min delay) and stream ingestion (up to a 30 second delay) depending on the specific connector used. Shaped datasets can also be created from local files, which is particularly useful for getting started with a snapshot of data. 2. **Model Management** - used to provision and manage 'Shaped Models', which represent a system of data pipelines, training and serving infrastructure for your ranking use-case. 3. **Model Inference** - a high performance API that's used to make user-understanding requests or ranking inferences to your 'Shaped Models'. For example, the 'rank' endpoint can be used to determine for a given user id query, what is the content that is most engaging to that user. The recommended workflow to interact with the Shaped API is as follows: 1. First create 'Shaped Datasets' to sync over data that your Shaped understanding models will need. The models at the minimum need interaction data to understand behavior of your users, so start with that and add your item and user catalog data later. 2. Then create 'Shaped Models' that use your created 'Shaped Datasets' as input. Your Shaped Model will will start streaming, processing and training from your connected data immediately. After a few hours your model will have tuned all parameters based on your data and will deploy an active model. 3. You can now use the 'Model Inference' endpoints to make real-time inferences to your model based on your use-case.
|
|
7
|
+
|
|
8
|
+
The version of the OpenAPI document: 1.0.1
|
|
9
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
10
|
+
|
|
11
|
+
Do not edit the class manually.
|
|
12
|
+
""" # noqa: E501
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
import pprint
|
|
17
|
+
import re # noqa: F401
|
|
18
|
+
import json
|
|
19
|
+
|
|
20
|
+
from pydantic import BaseModel, ConfigDict, StrictFloat, StrictInt, StrictStr
|
|
21
|
+
from typing import Any, ClassVar, Dict, List, Optional, Union
|
|
22
|
+
from typing import Optional, Set
|
|
23
|
+
from typing_extensions import Self
|
|
24
|
+
|
|
25
|
+
class RetrieveResponse(BaseModel):
|
|
26
|
+
"""
|
|
27
|
+
RetrieveResponse
|
|
28
|
+
""" # noqa: E501
|
|
29
|
+
ids: List[StrictStr]
|
|
30
|
+
scores: Optional[List[Union[StrictFloat, StrictInt]]] = None
|
|
31
|
+
metadata: Optional[List[Dict[str, Any]]] = None
|
|
32
|
+
__properties: ClassVar[List[str]] = ["ids", "scores", "metadata"]
|
|
33
|
+
|
|
34
|
+
model_config = ConfigDict(
|
|
35
|
+
populate_by_name=True,
|
|
36
|
+
validate_assignment=True,
|
|
37
|
+
protected_namespaces=(),
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def to_str(self) -> str:
|
|
42
|
+
"""Returns the string representation of the model using alias"""
|
|
43
|
+
return pprint.pformat(self.model_dump(by_alias=True))
|
|
44
|
+
|
|
45
|
+
def to_json(self) -> str:
|
|
46
|
+
"""Returns the JSON representation of the model using alias"""
|
|
47
|
+
# TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
|
|
48
|
+
return json.dumps(self.to_dict())
|
|
49
|
+
|
|
50
|
+
@classmethod
|
|
51
|
+
def from_json(cls, json_str: str) -> Optional[Self]:
|
|
52
|
+
"""Create an instance of RetrieveResponse from a JSON string"""
|
|
53
|
+
return cls.from_dict(json.loads(json_str))
|
|
54
|
+
|
|
55
|
+
def to_dict(self) -> Dict[str, Any]:
|
|
56
|
+
"""Return the dictionary representation of the model using alias.
|
|
57
|
+
|
|
58
|
+
This has the following differences from calling pydantic's
|
|
59
|
+
`self.model_dump(by_alias=True)`:
|
|
60
|
+
|
|
61
|
+
* `None` is only added to the output dict for nullable fields that
|
|
62
|
+
were set at model initialization. Other fields with value `None`
|
|
63
|
+
are ignored.
|
|
64
|
+
"""
|
|
65
|
+
excluded_fields: Set[str] = set([
|
|
66
|
+
])
|
|
67
|
+
|
|
68
|
+
_dict = self.model_dump(
|
|
69
|
+
by_alias=True,
|
|
70
|
+
exclude=excluded_fields,
|
|
71
|
+
exclude_none=True,
|
|
72
|
+
)
|
|
73
|
+
return _dict
|
|
74
|
+
|
|
75
|
+
@classmethod
|
|
76
|
+
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
|
|
77
|
+
"""Create an instance of RetrieveResponse from a dict"""
|
|
78
|
+
if obj is None:
|
|
79
|
+
return None
|
|
80
|
+
|
|
81
|
+
if not isinstance(obj, dict):
|
|
82
|
+
return cls.model_validate(obj)
|
|
83
|
+
|
|
84
|
+
_obj = cls.model_validate({
|
|
85
|
+
"ids": obj.get("ids"),
|
|
86
|
+
"scores": obj.get("scores"),
|
|
87
|
+
"metadata": obj.get("metadata")
|
|
88
|
+
})
|
|
89
|
+
return _obj
|
|
90
|
+
|
|
91
|
+
|
|
@@ -28,11 +28,11 @@ class RetrieverTopKOverride(BaseModel):
|
|
|
28
28
|
""" # noqa: E501
|
|
29
29
|
knn: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of items to retrieve from the knn retriever. This retriever makes a vector store lookup to find the most relevant items for the given query. If not set, 300 will be retrieved. Note, when a filter predicate or text query all other retrievers are disabled. ")
|
|
30
30
|
chronological: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of items to retrieve from the chronological retriever. If not set, 300 will be retrieved. ")
|
|
31
|
-
|
|
31
|
+
popular: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of items to retrieve from the Popular retriever. Popular refers to the most popular items historically. If not set, 300 will be retrieved. ")
|
|
32
32
|
trending: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of items to retrieve from the trending retriever. Trending refers to recently popular items. If not set, 300 will be retrieved ")
|
|
33
33
|
random: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of items to retrieve from the random retriever. If not set, 0 will be retrieved. ")
|
|
34
34
|
cold_start: Optional[Union[StrictFloat, StrictInt]] = Field(default=None, description="The number of items to retrieve from the cold-start retriever. This retriever pulls from the set of items with the lowest number of interactions. If not set, 50 will be retrieved. ")
|
|
35
|
-
__properties: ClassVar[List[str]] = ["knn", "chronological", "
|
|
35
|
+
__properties: ClassVar[List[str]] = ["knn", "chronological", "popular", "trending", "random", "cold_start"]
|
|
36
36
|
|
|
37
37
|
model_config = ConfigDict(
|
|
38
38
|
populate_by_name=True,
|
|
@@ -87,7 +87,7 @@ class RetrieverTopKOverride(BaseModel):
|
|
|
87
87
|
_obj = cls.model_validate({
|
|
88
88
|
"knn": obj.get("knn"),
|
|
89
89
|
"chronological": obj.get("chronological"),
|
|
90
|
-
"
|
|
90
|
+
"popular": obj.get("popular"),
|
|
91
91
|
"trending": obj.get("trending"),
|
|
92
92
|
"random": obj.get("random"),
|
|
93
93
|
"cold_start": obj.get("cold_start")
|
|
@@ -31,8 +31,9 @@ class SimilarItemRequest(BaseModel):
|
|
|
31
31
|
user_id: Optional[StrictStr] = Field(default=None, description="An optional user to personalize results for.")
|
|
32
32
|
return_metadata: Optional[StrictBool] = Field(default=False, description="If true, return the corresponding metadata for the ranked ids.")
|
|
33
33
|
flush_paginations: Optional[StrictBool] = Field(default=False, description="Clears the pagination store for the given input user. This is useful if you want to implement paginations on client side or if you want to start the rankings again, e.g. on a page refresh. ")
|
|
34
|
+
filter_predicate: Optional[StrictStr] = Field(default=None, description="A SQL where query that can be used to filter candidate items.")
|
|
34
35
|
config: Optional[InferenceConfig] = None
|
|
35
|
-
__properties: ClassVar[List[str]] = ["item_id", "user_id", "return_metadata", "flush_paginations", "config"]
|
|
36
|
+
__properties: ClassVar[List[str]] = ["item_id", "user_id", "return_metadata", "flush_paginations", "filter_predicate", "config"]
|
|
36
37
|
|
|
37
38
|
model_config = ConfigDict(
|
|
38
39
|
populate_by_name=True,
|
|
@@ -92,6 +93,7 @@ class SimilarItemRequest(BaseModel):
|
|
|
92
93
|
"user_id": obj.get("user_id"),
|
|
93
94
|
"return_metadata": obj.get("return_metadata") if obj.get("return_metadata") is not None else False,
|
|
94
95
|
"flush_paginations": obj.get("flush_paginations") if obj.get("flush_paginations") is not None else False,
|
|
96
|
+
"filter_predicate": obj.get("filter_predicate"),
|
|
95
97
|
"config": InferenceConfig.from_dict(obj["config"]) if obj.get("config") is not None else None
|
|
96
98
|
})
|
|
97
99
|
return _obj
|
|
@@ -30,8 +30,9 @@ class SimilarUsersRequest(BaseModel):
|
|
|
30
30
|
user_id: StrictStr = Field(description="The query user to find similar results for.")
|
|
31
31
|
return_metadata: Optional[StrictBool] = Field(default=False, description="If true, return the corresponding metadata for the ranked ids.")
|
|
32
32
|
flush_paginations: Optional[StrictBool] = Field(default=False, description="Clears the pagination store for the given input user. This is useful if you want to implement paginations on client side or if you want to start the rankings again, e.g. on a page refresh. ")
|
|
33
|
+
filter_predicate: Optional[StrictStr] = Field(default=None, description="A SQL where query that can be used to filter candidate users.")
|
|
33
34
|
config: Optional[InferenceConfig] = None
|
|
34
|
-
__properties: ClassVar[List[str]] = ["user_id", "return_metadata", "flush_paginations", "config"]
|
|
35
|
+
__properties: ClassVar[List[str]] = ["user_id", "return_metadata", "flush_paginations", "filter_predicate", "config"]
|
|
35
36
|
|
|
36
37
|
model_config = ConfigDict(
|
|
37
38
|
populate_by_name=True,
|
|
@@ -90,6 +91,7 @@ class SimilarUsersRequest(BaseModel):
|
|
|
90
91
|
"user_id": obj.get("user_id"),
|
|
91
92
|
"return_metadata": obj.get("return_metadata") if obj.get("return_metadata") is not None else False,
|
|
92
93
|
"flush_paginations": obj.get("flush_paginations") if obj.get("flush_paginations") is not None else False,
|
|
94
|
+
"filter_predicate": obj.get("filter_predicate"),
|
|
93
95
|
"config": InferenceConfig.from_dict(obj["config"]) if obj.get("config") is not None else None
|
|
94
96
|
})
|
|
95
97
|
return _obj
|
shaped/autogen/rest.py
CHANGED
|
@@ -225,7 +225,7 @@ class RESTClientObject:
|
|
|
225
225
|
headers=headers,
|
|
226
226
|
preload_content=False
|
|
227
227
|
)
|
|
228
|
-
elif headers['Content-Type']
|
|
228
|
+
elif headers['Content-Type'].startswith('text/') and isinstance(body, bool):
|
|
229
229
|
request_body = "true" if body else "false"
|
|
230
230
|
r = self.pool_manager.request(
|
|
231
231
|
method,
|
shaped/client.py
CHANGED
|
@@ -122,6 +122,7 @@ class Client:
|
|
|
122
122
|
user_id: Optional[StrictStr] = None,
|
|
123
123
|
return_metadata: Optional[StrictBool] = None,
|
|
124
124
|
flush_paginations: Optional[StrictBool] = None,
|
|
125
|
+
filter_predicate: Optional[StrictStr] = None,
|
|
125
126
|
config: Optional[InferenceConfig] = None,
|
|
126
127
|
):
|
|
127
128
|
"""
|
|
@@ -135,6 +136,7 @@ class Client:
|
|
|
135
136
|
user_id=user_id,
|
|
136
137
|
return_metadata=return_metadata,
|
|
137
138
|
flush_paginations=flush_paginations,
|
|
139
|
+
filter_predicate=filter_predicate,
|
|
138
140
|
config=config,
|
|
139
141
|
)
|
|
140
142
|
return (
|
|
@@ -152,6 +154,7 @@ class Client:
|
|
|
152
154
|
user_id: StrictStr = None,
|
|
153
155
|
return_metadata: Optional[StrictBool] = None,
|
|
154
156
|
flush_paginations: Optional[StrictBool] = None,
|
|
157
|
+
filter_predicate: Optional[StrictStr] = None,
|
|
155
158
|
config: Optional[InferenceConfig] = None,
|
|
156
159
|
):
|
|
157
160
|
"""
|
|
@@ -162,6 +165,7 @@ class Client:
|
|
|
162
165
|
user_id=user_id,
|
|
163
166
|
return_metadata=return_metadata,
|
|
164
167
|
flush_paginations=flush_paginations,
|
|
168
|
+
filter_predicate=filter_predicate,
|
|
165
169
|
config=config,
|
|
166
170
|
)
|
|
167
171
|
return (
|
|
@@ -180,6 +184,7 @@ class Client:
|
|
|
180
184
|
item_ids: List[StrictStr],
|
|
181
185
|
user_id: Optional[StrictStr] = None,
|
|
182
186
|
return_metadata: Optional[StrictBool] = None,
|
|
187
|
+
filter_predicate: Optional[StrictStr] = None,
|
|
183
188
|
config: Optional[InferenceConfig] = None,
|
|
184
189
|
):
|
|
185
190
|
"""
|
|
@@ -193,6 +198,7 @@ class Client:
|
|
|
193
198
|
item_ids=item_ids,
|
|
194
199
|
user_id=user_id,
|
|
195
200
|
return_metadata=return_metadata,
|
|
201
|
+
filter_predicate=filter_predicate,
|
|
196
202
|
config=config,
|
|
197
203
|
)
|
|
198
204
|
return (
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: shaped
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: CLI and SDK tools for interacting with the Shaped API.
|
|
5
5
|
Home-page: https://github.com/shaped-ai/shaped-cli
|
|
6
6
|
Author: Shaped Team
|
|
@@ -13,24 +13,34 @@ Classifier: Development Status :: 5 - Production/Stable
|
|
|
13
13
|
Classifier: Intended Audience :: Developers
|
|
14
14
|
Requires-Python: >=3.8, <3.12
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
|
-
Requires-Dist: typer
|
|
17
|
-
Requires-Dist: requests
|
|
18
|
-
Requires-Dist: pydantic
|
|
19
|
-
Requires-Dist: pyyaml
|
|
20
|
-
Requires-Dist: pyarrow
|
|
21
|
-
Requires-Dist: pandas
|
|
22
|
-
Requires-Dist: tqdm
|
|
23
|
-
Requires-Dist: s3fs
|
|
24
|
-
Requires-Dist: fsspec
|
|
25
|
-
Requires-Dist: numpy
|
|
26
|
-
Requires-Dist: urllib3
|
|
16
|
+
Requires-Dist: typer>=0.7.0
|
|
17
|
+
Requires-Dist: requests>=2.28.1
|
|
18
|
+
Requires-Dist: pydantic>=2.8.2
|
|
19
|
+
Requires-Dist: pyyaml>=6.0
|
|
20
|
+
Requires-Dist: pyarrow==11.0.0
|
|
21
|
+
Requires-Dist: pandas==1.5.3
|
|
22
|
+
Requires-Dist: tqdm==4.65.0
|
|
23
|
+
Requires-Dist: s3fs==0.4.2
|
|
24
|
+
Requires-Dist: fsspec==2023.5.0
|
|
25
|
+
Requires-Dist: numpy==1.26.4
|
|
26
|
+
Requires-Dist: urllib3<2.1.0,>=1.25.3
|
|
27
27
|
Requires-Dist: python-dateutil
|
|
28
|
-
Requires-Dist: typing-extensions
|
|
29
|
-
Requires-Dist: pytest
|
|
30
|
-
Requires-Dist: pytest-mock
|
|
28
|
+
Requires-Dist: typing-extensions>=4.7.1
|
|
29
|
+
Requires-Dist: pytest>=6.2.5
|
|
30
|
+
Requires-Dist: pytest-mock==3.14.0
|
|
31
31
|
|
|
32
32
|
# Python SDK
|
|
33
33
|
|
|
34
|
+
## Installation
|
|
35
|
+
|
|
36
|
+
### Local Development
|
|
37
|
+
|
|
38
|
+
```sh
|
|
39
|
+
pip install -e .
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Pip Installation
|
|
43
|
+
|
|
34
44
|
```sh
|
|
35
45
|
pip install shaped
|
|
36
46
|
```
|
|
@@ -112,16 +122,24 @@ print(api_response)
|
|
|
112
122
|
To recreate the autogenerated code:
|
|
113
123
|
|
|
114
124
|
1. `brew install openapi-generator`
|
|
115
|
-
2. Copy across `openapi.yaml` from the `shaped-docs` repository to
|
|
116
|
-
|
|
125
|
+
2. Copy across `openapi.yaml` from the `shaped-docs` repository to `~`
|
|
126
|
+
1. Change `-g python` to the language you want to generate
|
|
127
|
+
1. Change `-o python/` to the directory you want to output to
|
|
128
|
+
3. Navigate to `~` and run the command:
|
|
117
129
|
|
|
118
|
-
|
|
130
|
+
### Python
|
|
131
|
+
```bash
|
|
119
132
|
openapi-generator generate -g python -i openapi.yaml -o python/ -p packageName=shaped.autogen --global-property models,apis,apiDocs=false,modelDocs=false,modelTests=false,apiTests=false,supportingFiles=api_client.py:api_response.py:configuration.py:exceptions.py:rest.py:__init__.py
|
|
120
133
|
```
|
|
121
134
|
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
### Node.js
|
|
136
|
+
```bash
|
|
137
|
+
openapi-generator generate -i openapi.yaml -g javascript -o nodejs/src -c config.yaml --global-property models,apis,apiDocs=false,modelDocs=false,modelTests=false,apiTests=false,supportingFiles=ApiClient.js
|
|
138
|
+
```
|
|
124
139
|
|
|
140
|
+
## Testing
|
|
141
|
+
`pytest python/tests/test_rank.py --api-key 'api_key'`
|
|
142
|
+
`npm test`
|
|
125
143
|
---
|
|
126
144
|
|
|
127
145
|
# Shaped CLI
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
shaped/__init__.py,sha256=
|
|
2
|
-
shaped/client.py,sha256=
|
|
3
|
-
shaped/autogen/__init__.py,sha256=
|
|
4
|
-
shaped/autogen/api_client.py,sha256=
|
|
1
|
+
shaped/__init__.py,sha256=ikq1AG3uapaJAzN7dx3V4WLl6Hx95vQTr_d8fO8ebJ4,184
|
|
2
|
+
shaped/client.py,sha256=4poRVpvupQEm3RjdQJ2zuwIkFwTZziXY0sln-v9mQck,8372
|
|
3
|
+
shaped/autogen/__init__.py,sha256=wKYfoKohE39ud3mAORGhwGT9Ouq9A-VoN2N2lVvM1TA,6859
|
|
4
|
+
shaped/autogen/api_client.py,sha256=JC6ZcpvzPYK1krMeIdH-sXBkR2XsFM0HCO5YbmFylB4,29368
|
|
5
5
|
shaped/autogen/api_response.py,sha256=eMxw1mpmJcoGZ3gs9z6jM4oYoZ10Gjk333s9sKxGv7s,652
|
|
6
|
-
shaped/autogen/configuration.py,sha256=
|
|
6
|
+
shaped/autogen/configuration.py,sha256=rTPXrCmxc1gn375s6gxaeR5-DzKUZ31bJnplg77PmSE,19513
|
|
7
7
|
shaped/autogen/exceptions.py,sha256=5muki093ghdifnr96i9wLiRBACuzCRIcken82pKvbXM,7873
|
|
8
|
-
shaped/autogen/rest.py,sha256=
|
|
8
|
+
shaped/autogen/rest.py,sha256=ycxoXj-E1oIl1x4xuogvQJViYYrDaUgcxSNXZ6UlTik,11313
|
|
9
9
|
shaped/autogen/api/__init__.py,sha256=ljAq90mlHSU5qdMLEZpf4uLd5SyLR8DcllMgDsZLFo0,242
|
|
10
|
-
shaped/autogen/api/dataset_api.py,sha256=
|
|
11
|
-
shaped/autogen/api/model_inference_api.py,sha256=
|
|
12
|
-
shaped/autogen/api/model_management_api.py,sha256=
|
|
13
|
-
shaped/autogen/models/__init__.py,sha256=
|
|
10
|
+
shaped/autogen/api/dataset_api.py,sha256=RkOwlddbLtop1Zhdm4agP4Eic5nRVes-INylNRftQ3Q,49143
|
|
11
|
+
shaped/autogen/api/model_inference_api.py,sha256=JBIFALi-eR1_U4Bt_jjJf_4Mu3Mx6_CKYs3uYi1naRU,130921
|
|
12
|
+
shaped/autogen/api/model_management_api.py,sha256=1qRUUFCbcle1KtGH6OzhmsbK6Fk36zzAZ_CiTPHn0l4,60849
|
|
13
|
+
shaped/autogen/models/__init__.py,sha256=wEJt1anUDMx3Q3NnW_f-eCXee_nPrWWw8h8y1ab-IFw,6121
|
|
14
14
|
shaped/autogen/models/amplitude_dataset_config.py,sha256=wsH4E2dATObPZHPnbLK9QQT5pyqmAp0cjqDCHHKhios,4770
|
|
15
15
|
shaped/autogen/models/aws_pinpoint_dataset_config.py,sha256=bhCN4SezUSQ66ofuib_k7o51QNLwpTb-45HK7ubAm10,4852
|
|
16
16
|
shaped/autogen/models/big_query_dataset_config.py,sha256=xNfaQOvWjDQe-tlH7bBSNvsKlYiuo0589noZ-4dPGU8,5711
|
|
17
|
-
shaped/autogen/models/complement_items_request.py,sha256=
|
|
17
|
+
shaped/autogen/models/complement_items_request.py,sha256=KJLw_ztHn8smrgrgB7iinHAULG7KtjULPk6bvUVv9gY,5289
|
|
18
18
|
shaped/autogen/models/complement_items_response.py,sha256=eg3f9wtW94ErrPWt3L_yQkCQi4qDkZXWDl4IHnaHTuI,4530
|
|
19
19
|
shaped/autogen/models/connectors_inner.py,sha256=tsiFiE21KUz3mUqASR1OQyIwyGQC8G5KsxA6pBK9J6w,6750
|
|
20
20
|
shaped/autogen/models/create_dataset_arguments.py,sha256=-yKKVi_vUMJJcilbU4BxDFN5Z0pWnJDch87b6FEvyyQ,15473
|
|
21
21
|
shaped/autogen/models/create_embedding_response.py,sha256=2SiEooeVQq342thw-iap1dlW0wtUdi3OcxSGHDllvLk,4485
|
|
22
22
|
shaped/autogen/models/create_item_embedding_request.py,sha256=if10EuiWUoE0RORd6ni4ou3lnOV1XAlBgqx5Xxrmbic,4566
|
|
23
|
-
shaped/autogen/models/create_model_arguments.py,sha256=
|
|
23
|
+
shaped/autogen/models/create_model_arguments.py,sha256=9IvLu5K75w6DO9lizNoeJVZi44ajP2BVeo0lHx5QOY0,5626
|
|
24
24
|
shaped/autogen/models/create_model_response.py,sha256=vi8bUhKlbGGXvv-JxTZ9xMzxO26_acRw9lLkHDZNEEQ,4413
|
|
25
25
|
shaped/autogen/models/create_user_embedding_request.py,sha256=jmv43RlAgY_4V2mvWUF74PolAo5FmTslH-jKpjlBMQE,4566
|
|
26
26
|
shaped/autogen/models/custom_dataset_config.py,sha256=st8Fs4sio4lPV35ot_gW99mdarQdnJSjKSxy8t1J3kQ,6190
|
|
@@ -31,18 +31,18 @@ shaped/autogen/models/delete_model_response.py,sha256=X23iIe_LSq2kKkHuLcFgmBhizB
|
|
|
31
31
|
shaped/autogen/models/fetch_config.py,sha256=p5tLHOmxAgY7iQ0O3Uwsd-ABmJZ7fS60oz-gAGUBINw,6032
|
|
32
32
|
shaped/autogen/models/file_config.py,sha256=Xd3dVYLUjVxqnEugQsnrPEzhLO-ygbZBIVMr1idkjHg,5163
|
|
33
33
|
shaped/autogen/models/file_source_config.py,sha256=pbKudXQqyx8DG_GTFGHnCTOJ3EedZLCQq7gzhxIr9cQ,4559
|
|
34
|
-
shaped/autogen/models/http_validation_error.py,sha256=
|
|
34
|
+
shaped/autogen/models/http_validation_error.py,sha256=gQLYz56RE9XsXHl25Hus142IENnZn5kpDMp8DRXyxyA,4905
|
|
35
35
|
shaped/autogen/models/inference_config.py,sha256=TL0RUsyV112PCZYA71b-FjMFyS54xwce2LrhA0KwuYg,7148
|
|
36
36
|
shaped/autogen/models/insert_model_response.py,sha256=5_Y_ZeXmlwVPUvwVuZfbGhZqS24Aw63dvhT519i_nGI,4432
|
|
37
37
|
shaped/autogen/models/interaction.py,sha256=YuHXFfejjkAnYogyjJZHWZ0nrmg3yHsbN7EC43U4T6E,4373
|
|
38
|
-
shaped/autogen/models/list_datasets_response.py,sha256=
|
|
39
|
-
shaped/autogen/models/list_models_response.py,sha256=
|
|
38
|
+
shaped/autogen/models/list_datasets_response.py,sha256=ogXMA72jgaHLSBgQuuWTsbFcbGeS2v5GzhdqnclTBT4,4898
|
|
39
|
+
shaped/autogen/models/list_models_response.py,sha256=lLDGfP2T7Vh9sqeq6bNGc1kB--B1vNQ62sXSuqAVfBI,4866
|
|
40
40
|
shaped/autogen/models/model_config.py,sha256=2iDd3ZOEVoK5vcCnEwNJoruEDN-5ojBCtNWTuNLimz0,5915
|
|
41
41
|
shaped/autogen/models/model_response.py,sha256=J9iKVIUlYIalXPa7Hti76NRbMlTfecOJCchT1dxSKH0,5428
|
|
42
42
|
shaped/autogen/models/mongo_db_dataset_config.py,sha256=yNjuT5CBZAtc-Gc0RtCvcUtEcWihd9h-7qzrZiniWOg,6012
|
|
43
43
|
shaped/autogen/models/my_sql_dataset_config.py,sha256=63ODzapQguEyVmE6LPIGljpYfRnm9aOZMSxJmVdb8K8,8797
|
|
44
44
|
shaped/autogen/models/path.py,sha256=dyMZsvg5oekbRNWTLHWzCGo4pE2yNwaCH-zS05_tExk,6741
|
|
45
|
-
shaped/autogen/models/post_rank_request.py,sha256=
|
|
45
|
+
shaped/autogen/models/post_rank_request.py,sha256=oaJh8y-nZpNGbGkA7lvZtjBzwbnp04zqzxAlTS_fBQc,8014
|
|
46
46
|
shaped/autogen/models/postgres_dataset_config.py,sha256=loTx56lxMCuirIgIQF41EnGOB70Jw14CnfIeZTj7nw4,8815
|
|
47
47
|
shaped/autogen/models/rank_attribute_response.py,sha256=ZRhyj3bwo16Ul78LSGPtKuJ-2xPyw8JsauzbrkFpHzk,4561
|
|
48
48
|
shaped/autogen/models/rank_grid_attribute_request.py,sha256=84vVMGO8Td2j8qRfDz1l8gb3QM1a-1yY9UNmjA6pZ9A,4732
|
|
@@ -51,12 +51,13 @@ shaped/autogen/models/rank_grid_attribute_response.py,sha256=1GsgjCBZuBLn6H3P64H
|
|
|
51
51
|
shaped/autogen/models/rank_response.py,sha256=ttP-e5744WVpA30FYHosoyNF5ytqOUoYvi4coc9tsLk,4616
|
|
52
52
|
shaped/autogen/models/redshift_dataset_config.py,sha256=PB8w0ecT2vbfEvWGLOjX7lQexJGocf8d_4apPUa86Yo,6743
|
|
53
53
|
shaped/autogen/models/retrieve_request.py,sha256=Llrk-9gAZS6u1q8NRv8MiRiOsAJi9QhT46Rj8hzomqQ,6066
|
|
54
|
-
shaped/autogen/models/
|
|
54
|
+
shaped/autogen/models/retrieve_response.py,sha256=AsnkhIZp8rfPoH0u7imbOZ7FfK-yMGxBS368s8TJhM4,4649
|
|
55
|
+
shaped/autogen/models/retriever_top_k_override.py,sha256=PQ3dLXp2Pq_l3NooKWMqA3IPpduvyyp5W_YVom3FTm8,6190
|
|
55
56
|
shaped/autogen/models/rudder_stack_dataset_config.py,sha256=z3fUCHf7sPAh5yUCz8_GDNVN1LHazu3VsLvDt5EFHwM,4782
|
|
56
57
|
shaped/autogen/models/segment_dataset_config.py,sha256=1OPaweyV4Pd2KGpWByAAl_yaPR-PN8R_cg_teft1XLQ,4758
|
|
57
|
-
shaped/autogen/models/similar_item_request.py,sha256=
|
|
58
|
+
shaped/autogen/models/similar_item_request.py,sha256=pPnq9EqIpQ56KiKqdqOHCFvLwyDrtboH0r75KNbvfog,5963
|
|
58
59
|
shaped/autogen/models/similar_response.py,sha256=kk8tY1oJgnuehLD4orddtAnnb5zewtVXst9NPEoFjiQ,4498
|
|
59
|
-
shaped/autogen/models/similar_users_request.py,sha256=
|
|
60
|
+
shaped/autogen/models/similar_users_request.py,sha256=xbtRy90CcS2U8_rBOE8GMfOFDfUCgc5VDMIJmn5WXOg,5798
|
|
60
61
|
shaped/autogen/models/snowflake_dataset_config.py,sha256=Io0IKwcE69pzJrbONXPWdMYkfjw6J8dBT1h9iKN_NRk,6974
|
|
61
62
|
shaped/autogen/models/successful_response.py,sha256=sQ3oVhrvJUQ9ApgDd4jsr7eZfZvu-goghD8xZCeDFzk,4428
|
|
62
63
|
shaped/autogen/models/validation_error.py,sha256=kVstUJ1nwQ6Y9kssgDBpeoKGFScWegporYC6klUoMe0,4438
|
|
@@ -64,9 +65,9 @@ shaped/autogen/models/value_type.py,sha256=uxlGNPto3CK17jHKDRvAl3BqNCPkHlxfRBPdo
|
|
|
64
65
|
shaped/autogen/models/view_model_response.py,sha256=4xzesZSHMcPCZHsevo5Bt_3P9jBNiEbd_PFTWQ5Q9KU,5757
|
|
65
66
|
shaped/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
66
67
|
shaped/cli/shaped_cli.py,sha256=kOxCiPivUEjNPs4mNETGpi43_PzTXp61dN-dr9fp7C0,12822
|
|
67
|
-
shaped-0.
|
|
68
|
-
shaped-0.
|
|
69
|
-
shaped-0.
|
|
70
|
-
shaped-0.
|
|
71
|
-
shaped-0.
|
|
72
|
-
shaped-0.
|
|
68
|
+
shaped-1.0.1.dist-info/METADATA,sha256=idA0EhKKTsUJgbAS2UWQLRShSaI78cds6XoCHo1hBck,5433
|
|
69
|
+
shaped-1.0.1.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
|
|
70
|
+
shaped-1.0.1.dist-info/entry_points.txt,sha256=4xoVmnNTKtmzjGNX5ezp9MCWLgi7880TtfqFByN1u5U,53
|
|
71
|
+
shaped-1.0.1.dist-info/top_level.txt,sha256=w-lDaoadQVYpze9N9gZyK9qngb7fZCJ-KCdHLGvt0SU,7
|
|
72
|
+
shaped-1.0.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
73
|
+
shaped-1.0.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|