exa-py 1.4.1b0__py3-none-any.whl → 1.5.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.

Potentially problematic release.


This version of exa-py might be problematic. Click here for more details.

exa_py/api.py CHANGED
@@ -147,8 +147,9 @@ CONTENTS_OPTIONS_TYPES = {
147
147
  }
148
148
 
149
149
  CONTENTS_ENDPOINT_OPTIONS_TYPES = {
150
- "subpages": [int], # Number of subpages to get contents for; these will appear as additional content results
151
- "subpage_target": [str, list] # Specific subpage(s) to get contents for
150
+ "subpages": [int],
151
+ "subpage_target": [str],
152
+ "extras": [dict],
152
153
  }
153
154
 
154
155
  # FOR BETA OPTIONS
@@ -219,6 +220,15 @@ class SummaryContentsOptions(TypedDict, total=False):
219
220
 
220
221
  query: str
221
222
 
223
+ class ExtrasOptions(TypedDict, total=False):
224
+ """A class representing the options that you can specify when requesting summary
225
+
226
+ Attributes:
227
+ query (str): The query string for the summary. Summary will bias towards answering the query.
228
+ """
229
+
230
+ links: int
231
+
222
232
  @dataclass
223
233
  class _Result:
224
234
  """A class representing the base fields of a search result.
@@ -230,6 +240,9 @@ class _Result:
230
240
  score (float, optional): A number from 0 to 1 representing similarity between the query/url and the result.
231
241
  published_date (str, optional): An estimate of the creation date, from parsing HTML content.
232
242
  author (str, optional): If available, the author of the content.
243
+ image (str, optional): If available, a URL to an image associated with the content.
244
+ subpages (List[_Result], optional): If available, a list of Exa contents results for a page's subpages (e.g. tesla.com --subpage--> shop.tesla.com)
245
+ extras (Dict, optional): Additional metadata associated with the result; currently supports returning links in the text content
233
246
  """
234
247
 
235
248
  url: str
@@ -239,6 +252,8 @@ class _Result:
239
252
  published_date: Optional[str] = None
240
253
  author: Optional[str] = None
241
254
  image: Optional[str] = None
255
+ subpages: Optional[List[_Result]] = None
256
+ extras: Optional[Dict] = None
242
257
 
243
258
  def __init__(self, **kwargs):
244
259
  self.url = kwargs['url']
@@ -248,6 +263,8 @@ class _Result:
248
263
  self.published_date = kwargs.get('published_date')
249
264
  self.author = kwargs.get('author')
250
265
  self.image = kwargs.get('image')
266
+ self.subpages = kwargs.get('subpages')
267
+ self.extras = kwargs.get("extras")
251
268
 
252
269
  def __str__(self):
253
270
  return (
@@ -258,6 +275,8 @@ class _Result:
258
275
  f"Published Date: {self.published_date}\n"
259
276
  f"Author: {self.author}\n"
260
277
  f"Image: {self.image}\n"
278
+ f"Extras {self.extras}\n"
279
+ f"Subpages: {self.subpages}\n"
261
280
  )
262
281
 
263
282
 
@@ -278,6 +297,13 @@ class Result(_Result):
278
297
  highlight_scores: Optional[List[float]] = None
279
298
  summary: Optional[str] = None
280
299
 
300
+ def __init__(self, **kwargs):
301
+ super().__init__(**kwargs)
302
+ self.text = kwargs.get('text')
303
+ self.highlights = kwargs.get('highlights')
304
+ self.highlight_scores = kwargs.get('highlight_scores')
305
+ self.summary = kwargs.get('summary')
306
+
281
307
  def __str__(self):
282
308
  base_str = super().__str__()
283
309
  return base_str + (
@@ -299,6 +325,10 @@ class ResultWithText(_Result):
299
325
 
300
326
  text: str = dataclasses.field(default_factory=str)
301
327
 
328
+ def __init__(self, **kwargs):
329
+ super().__init__(**kwargs)
330
+ self.text = kwargs['text']
331
+
302
332
  def __str__(self):
303
333
  base_str = super().__str__()
304
334
  return base_str + f"Text: {self.text}\n"
@@ -317,6 +347,12 @@ class ResultWithHighlights(_Result):
317
347
  highlights: List[str] = dataclasses.field(default_factory=list)
318
348
  highlight_scores: List[float] = dataclasses.field(default_factory=list)
319
349
 
350
+ def __init__(self, **kwargs):
351
+ super().__init__(**kwargs)
352
+ self.highlights = kwargs['highlights']
353
+ self.highlight_scores = kwargs['highlight_scores']
354
+
355
+
320
356
  def __str__(self):
321
357
  base_str = super().__str__()
322
358
  return base_str + (
@@ -340,6 +376,12 @@ class ResultWithTextAndHighlights(_Result):
340
376
  highlights: List[str] = dataclasses.field(default_factory=list)
341
377
  highlight_scores: List[float] = dataclasses.field(default_factory=list)
342
378
 
379
+ def __init__(self, **kwargs):
380
+ super.__init__(**kwargs)
381
+ self.text = kwargs['text']
382
+ self.highlights = kwargs['highlights']
383
+ self.highlight_scores = kwargs['highlight_scores']
384
+
343
385
  def __str__(self):
344
386
  base_str = super().__str__()
345
387
  return base_str + (
@@ -359,6 +401,10 @@ class ResultWithSummary(_Result):
359
401
 
360
402
  summary: str = dataclasses.field(default_factory=str)
361
403
 
404
+ def __init__(self, **kwargs):
405
+ super().__init__(**kwargs)
406
+ self.summary = kwargs['summary']
407
+
362
408
  def __str__(self):
363
409
  base_str = super().__str__()
364
410
  return base_str + f"Summary: {self.summary}\n"
@@ -376,6 +422,11 @@ class ResultWithTextAndSummary(_Result):
376
422
  text: str = dataclasses.field(default_factory=str)
377
423
  summary: str = dataclasses.field(default_factory=str)
378
424
 
425
+ def __init__(self, **kwargs):
426
+ super().__init__(**kwargs)
427
+ self.text = kwargs['text']
428
+ self.summary = kwargs['summary']
429
+
379
430
  def __str__(self):
380
431
  base_str = super().__str__()
381
432
  return base_str + f"Text: {self.text}\n" + f"Summary: {self.summary}\n"
@@ -395,6 +446,12 @@ class ResultWithHighlightsAndSummary(_Result):
395
446
  highlight_scores: List[float] = dataclasses.field(default_factory=list)
396
447
  summary: str = dataclasses.field(default_factory=str)
397
448
 
449
+ def __init__(self, **kwargs):
450
+ super().__init__(**kwargs)
451
+ self.highlights = kwargs['highlights']
452
+ self.highlight_scores = kwargs['highlight_scores']
453
+ self.summary = kwargs['summary']
454
+
398
455
  def __str__(self):
399
456
  base_str = super().__str__()
400
457
  return base_str + (
@@ -420,6 +477,13 @@ class ResultWithTextAndHighlightsAndSummary(_Result):
420
477
  highlight_scores: List[float] = dataclasses.field(default_factory=list)
421
478
  summary: str = dataclasses.field(default_factory=str)
422
479
 
480
+ def __init__(self, **kwargs):
481
+ super().__init__(**kwargs)
482
+ self.text = kwargs['text']
483
+ self.highlights = kwargs['highlights']
484
+ self.highlight_scores = kwargs['highlight_scores']
485
+ self.summary = kwargs['summary']
486
+
423
487
  def __str__(self):
424
488
  base_str = super().__str__()
425
489
  return base_str + (
@@ -482,7 +546,7 @@ class Exa:
482
546
  self,
483
547
  api_key: Optional[str],
484
548
  base_url: str = "https://api.exa.ai",
485
- user_agent: str = "exa-py 1.4.1-beta",
549
+ user_agent: str = "exa-py 1.5.1",
486
550
  ):
487
551
  """Initialize the Exa client with the provided API key and optional base URL and user agent.
488
552
 
@@ -576,6 +640,8 @@ class Exa:
576
640
  livecrawl_timeout: Optional[int] = None,
577
641
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
578
642
  filter_empty_results: Optional[bool] = None,
643
+ subpages: Optional[int] = None,
644
+ extras: Optional[ExtrasOptions] = None,
579
645
  ) -> SearchResponse[ResultWithText]:
580
646
  ...
581
647
 
@@ -597,9 +663,11 @@ class Exa:
597
663
  use_autoprompt: Optional[bool] = None,
598
664
  type: Optional[str] = None,
599
665
  category: Optional[str] = None,
666
+ subpages: Optional[int] = None,
600
667
  livecrawl_timeout: Optional[int] = None,
601
668
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
602
669
  filter_empty_results: Optional[bool] = None,
670
+ extras: Optional[ExtrasOptions] = None,
603
671
  ) -> SearchResponse[ResultWithText]:
604
672
  ...
605
673
 
@@ -622,8 +690,11 @@ class Exa:
622
690
  type: Optional[str] = None,
623
691
  category: Optional[str] = None,
624
692
  livecrawl_timeout: Optional[int] = None,
693
+ subpages: Optional[int] = None,
694
+ subpage_target: Optional[Union[str, List[str]]] = None,
625
695
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
626
696
  filter_empty_results: Optional[bool] = None,
697
+ extras: Optional[ExtrasOptions] = None,
627
698
  ) -> SearchResponse[ResultWithHighlights]:
628
699
  ...
629
700
 
@@ -647,8 +718,11 @@ class Exa:
647
718
  type: Optional[str] = None,
648
719
  category: Optional[str] = None,
649
720
  livecrawl_timeout: Optional[int] = None,
721
+ subpages: Optional[int] = None,
722
+ subpage_target: Optional[Union[str, List[str]]] = None,
650
723
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
651
724
  filter_empty_results: Optional[bool] = None,
725
+ extras: Optional[ExtrasOptions] = None,
652
726
  ) -> SearchResponse[ResultWithTextAndHighlights]:
653
727
  ...
654
728
 
@@ -671,8 +745,11 @@ class Exa:
671
745
  type: Optional[str] = None,
672
746
  category: Optional[str] = None,
673
747
  livecrawl_timeout: Optional[int] = None,
748
+ subpages: Optional[int] = None,
749
+ subpage_target: Optional[Union[str, List[str]]] = None,
674
750
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
675
751
  filter_empty_results: Optional[bool] = None,
752
+ extras: Optional[ExtrasOptions] = None,
676
753
  ) -> SearchResponse[ResultWithSummary]:
677
754
  ...
678
755
 
@@ -695,9 +772,12 @@ class Exa:
695
772
  use_autoprompt: Optional[bool] = None,
696
773
  type: Optional[str] = None,
697
774
  category: Optional[str] = None,
775
+ subpages: Optional[int] = None,
776
+ subpage_target: Optional[Union[str, List[str]]] = None,
698
777
  livecrawl_timeout: Optional[int] = None,
699
778
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
700
779
  filter_empty_results: Optional[bool] = None,
780
+ extras: Optional[ExtrasOptions] = None,
701
781
  ) -> SearchResponse[ResultWithTextAndSummary]:
702
782
  ...
703
783
 
@@ -721,8 +801,11 @@ class Exa:
721
801
  type: Optional[str] = None,
722
802
  category: Optional[str] = None,
723
803
  livecrawl_timeout: Optional[int] = None,
804
+ subpages: Optional[int] = None,
805
+ subpage_target: Optional[Union[str, List[str]]] = None,
724
806
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
725
807
  filter_empty_results: Optional[bool] = None,
808
+ extras: Optional[ExtrasOptions] = None,
726
809
  ) -> SearchResponse[ResultWithHighlightsAndSummary]:
727
810
  ...
728
811
 
@@ -748,7 +831,10 @@ class Exa:
748
831
  category: Optional[str] = None,
749
832
  livecrawl_timeout: Optional[int] = None,
750
833
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
834
+ subpages: Optional[int] = None,
835
+ subpage_target: Optional[Union[str, List[str]]] = None,
751
836
  filter_empty_results: Optional[bool] = None,
837
+ extras: Optional[ExtrasOptions] = None,
752
838
  ) -> SearchResponse[ResultWithTextAndHighlightsAndSummary]:
753
839
  ...
754
840
 
@@ -758,12 +844,12 @@ class Exa:
758
844
  for k, v in {"query": query, **kwargs}.items()
759
845
  if k != "self" and v is not None
760
846
  }
761
- if "text" not in options and "highlights" not in options and "summary" not in options:
847
+ if "text" not in options and "highlights" not in options and "summary" not in options and "extras" not in options:
762
848
  options["text"] = True
763
849
  validate_search_options(
764
- options, {**SEARCH_OPTIONS_TYPES, **CONTENTS_OPTIONS_TYPES}
850
+ options, {**SEARCH_OPTIONS_TYPES, **CONTENTS_OPTIONS_TYPES, **CONTENTS_ENDPOINT_OPTIONS_TYPES}
765
851
  )
766
- options = nest_fields(options, ["text", "highlights", "summary"], "contents")
852
+ options = nest_fields(options, ["text", "highlights", "summary", "subpages", "subpage_target", "livecrawl", "livecrawl_timeout", "extras"], "contents")
767
853
  options = to_camel_case(options)
768
854
  data = self.request("/search", options)
769
855
  return SearchResponse(
@@ -781,7 +867,8 @@ class Exa:
781
867
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
782
868
  filter_empty_results: Optional[bool] = None,
783
869
  subpages: Optional[int] = None,
784
- subpage_target: Optional[Union[str, List[str]]] = None
870
+ subpage_target: Optional[Union[str, List[str]]] = None,
871
+ extras: Optional[ExtrasOptions] = None,
785
872
  ) -> SearchResponse[ResultWithText]:
786
873
  ...
787
874
 
@@ -795,7 +882,8 @@ class Exa:
795
882
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
796
883
  filter_empty_results: Optional[bool] = None,
797
884
  subpages: Optional[int] = None,
798
- subpage_target: Optional[Union[str, List[str]]] = None
885
+ subpage_target: Optional[Union[str, List[str]]] = None,
886
+ extras: Optional[ExtrasOptions] = None,
799
887
  ) -> SearchResponse[ResultWithText]:
800
888
  ...
801
889
 
@@ -809,7 +897,8 @@ class Exa:
809
897
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
810
898
  filter_empty_results: Optional[bool] = None,
811
899
  subpages: Optional[int] = None,
812
- subpage_target: Optional[Union[str, List[str]]] = None
900
+ subpage_target: Optional[Union[str, List[str]]] = None,
901
+ extras: Optional[ExtrasOptions] = None,
813
902
  ) -> SearchResponse[ResultWithHighlights]:
814
903
  ...
815
904
 
@@ -824,7 +913,8 @@ class Exa:
824
913
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
825
914
  filter_empty_results: Optional[bool] = None,
826
915
  subpages: Optional[int] = None,
827
- subpage_target: Optional[Union[str, List[str]]] = None
916
+ subpage_target: Optional[Union[str, List[str]]] = None,
917
+ extras: Optional[ExtrasOptions] = None,
828
918
  ) -> SearchResponse[ResultWithTextAndHighlights]:
829
919
  ...
830
920
 
@@ -838,7 +928,8 @@ class Exa:
838
928
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
839
929
  filter_empty_results: Optional[bool] = None,
840
930
  subpages: Optional[int] = None,
841
- subpage_target: Optional[Union[str, List[str]]] = None
931
+ subpage_target: Optional[Union[str, List[str]]] = None,
932
+ extras: Optional[ExtrasOptions] = None,
842
933
  ) -> SearchResponse[ResultWithSummary]:
843
934
  ...
844
935
 
@@ -853,7 +944,8 @@ class Exa:
853
944
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
854
945
  filter_empty_results: Optional[bool] = None,
855
946
  subpages: Optional[int] = None,
856
- subpage_target: Optional[Union[str, List[str]]] = None
947
+ subpage_target: Optional[Union[str, List[str]]] = None,
948
+ extras: Optional[ExtrasOptions] = None,
857
949
  ) -> SearchResponse[ResultWithTextAndSummary]:
858
950
  ...
859
951
 
@@ -868,7 +960,8 @@ class Exa:
868
960
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
869
961
  filter_empty_results: Optional[bool] = None,
870
962
  subpages: Optional[int] = None,
871
- subpage_target: Optional[Union[str, List[str]]] = None
963
+ subpage_target: Optional[Union[str, List[str]]] = None,
964
+ extras: Optional[ExtrasOptions] = None,
872
965
  ) -> SearchResponse[ResultWithHighlightsAndSummary]:
873
966
  ...
874
967
 
@@ -884,7 +977,8 @@ class Exa:
884
977
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
885
978
  filter_empty_results: Optional[bool] = None,
886
979
  subpages: Optional[int] = None,
887
- subpage_target: Optional[Union[str, List[str]]] = None
980
+ subpage_target: Optional[Union[str, List[str]]] = None,
981
+ extras: Optional[ExtrasOptions] = None,
888
982
  ) -> SearchResponse[ResultWithTextAndHighlightsAndSummary]:
889
983
  ...
890
984
 
@@ -894,7 +988,7 @@ class Exa:
894
988
  for k, v in {"ids": ids, **kwargs}.items()
895
989
  if k != "self" and v is not None
896
990
  }
897
- if "text" not in options and "highlights" not in options and "summary" not in options:
991
+ if "text" not in options and "highlights" not in options and "summary" not in options and "extras" not in options:
898
992
  options["text"] = True
899
993
  validate_search_options(options, {**CONTENTS_OPTIONS_TYPES, **CONTENTS_ENDPOINT_OPTIONS_TYPES})
900
994
  options = to_camel_case(options)
@@ -950,8 +1044,11 @@ class Exa:
950
1044
  exclude_source_domain: Optional[bool] = None,
951
1045
  category: Optional[str] = None,
952
1046
  livecrawl_timeout: Optional[int] = None,
1047
+ subpages: Optional[int] = None,
1048
+ subpage_target: Optional[Union[str, List[str]]] = None,
953
1049
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
954
1050
  filter_empty_results: Optional[bool] = None,
1051
+ extras: Optional[ExtrasOptions] = None,
955
1052
  ) -> SearchResponse[ResultWithText]:
956
1053
  ...
957
1054
 
@@ -973,8 +1070,11 @@ class Exa:
973
1070
  exclude_source_domain: Optional[bool] = None,
974
1071
  category: Optional[str] = None,
975
1072
  livecrawl_timeout: Optional[int] = None,
1073
+ subpages: Optional[int] = None,
1074
+ subpage_target: Optional[Union[str, List[str]]] = None,
976
1075
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
977
1076
  filter_empty_results: Optional[bool] = None,
1077
+ extras: Optional[ExtrasOptions] = None,
978
1078
  ) -> SearchResponse[ResultWithText]:
979
1079
  ...
980
1080
 
@@ -995,9 +1095,12 @@ class Exa:
995
1095
  exclude_text: Optional[List[str]] = None,
996
1096
  exclude_source_domain: Optional[bool] = None,
997
1097
  category: Optional[str] = None,
1098
+ subpages: Optional[int] = None,
1099
+ subpage_target: Optional[Union[str, List[str]]] = None,
998
1100
  livecrawl_timeout: Optional[int] = None,
999
1101
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
1000
1102
  filter_empty_results: Optional[bool] = None,
1103
+ extras: Optional[ExtrasOptions] = None,
1001
1104
  ) -> SearchResponse[ResultWithHighlights]:
1002
1105
  ...
1003
1106
 
@@ -1020,8 +1123,11 @@ class Exa:
1020
1123
  exclude_source_domain: Optional[bool] = None,
1021
1124
  category: Optional[str] = None,
1022
1125
  livecrawl_timeout: Optional[int] = None,
1126
+ subpages: Optional[int] = None,
1127
+ subpage_target: Optional[Union[str, List[str]]] = None,
1023
1128
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
1024
1129
  filter_empty_results: Optional[bool] = None,
1130
+ extras: Optional[ExtrasOptions] = None,
1025
1131
  ) -> SearchResponse[ResultWithTextAndHighlights]:
1026
1132
  ...
1027
1133
 
@@ -1044,7 +1150,10 @@ class Exa:
1044
1150
  category: Optional[str] = None,
1045
1151
  livecrawl_timeout: Optional[int] = None,
1046
1152
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
1153
+ subpages: Optional[int] = None,
1154
+ subpage_target: Optional[Union[str, List[str]]] = None,
1047
1155
  filter_empty_results: Optional[bool] = None,
1156
+ extras: Optional[ExtrasOptions] = None,
1048
1157
  ) -> SearchResponse[ResultWithSummary]:
1049
1158
  ...
1050
1159
 
@@ -1068,7 +1177,10 @@ class Exa:
1068
1177
  category: Optional[str] = None,
1069
1178
  livecrawl_timeout: Optional[int] = None,
1070
1179
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
1180
+ subpages: Optional[int] = None,
1181
+ subpage_target: Optional[Union[str, List[str]]] = None,
1071
1182
  filter_empty_results: Optional[bool] = None,
1183
+ extras: Optional[ExtrasOptions] = None,
1072
1184
  ) -> SearchResponse[ResultWithTextAndSummary]:
1073
1185
  ...
1074
1186
 
@@ -1092,7 +1204,10 @@ class Exa:
1092
1204
  category: Optional[str] = None,
1093
1205
  livecrawl_timeout: Optional[int] = None,
1094
1206
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
1207
+ subpages: Optional[int] = None,
1208
+ subpage_target: Optional[Union[str, List[str]]] = None,
1095
1209
  filter_empty_results: Optional[bool] = None,
1210
+ extras: Optional[ExtrasOptions] = None,
1096
1211
  ) -> SearchResponse[ResultWithHighlightsAndSummary]:
1097
1212
  ...
1098
1213
 
@@ -1117,7 +1232,10 @@ class Exa:
1117
1232
  category: Optional[str] = None,
1118
1233
  livecrawl_timeout: Optional[int] = None,
1119
1234
  livecrawl: Optional[LIVECRAWL_OPTIONS] = None,
1235
+ subpages: Optional[int] = None,
1236
+ subpage_target: Optional[Union[str, List[str]]] = None,
1120
1237
  filter_empty_results: Optional[bool] = None,
1238
+ extras: Optional[ExtrasOptions] = None,
1121
1239
  ) -> SearchResponse[ResultWithTextAndHighlightsAndSummary]:
1122
1240
  ...
1123
1241
 
@@ -1127,13 +1245,13 @@ class Exa:
1127
1245
  for k, v in {"url": url, **kwargs}.items()
1128
1246
  if k != "self" and v is not None
1129
1247
  }
1130
- if "text" not in options and "highlights" not in options:
1248
+ if "text" not in options and "highlights" not in options and "summary" not in options:
1131
1249
  options["text"] = True
1132
1250
  validate_search_options(
1133
- options, {**FIND_SIMILAR_OPTIONS_TYPES, **CONTENTS_OPTIONS_TYPES}
1251
+ options, {**FIND_SIMILAR_OPTIONS_TYPES, **CONTENTS_OPTIONS_TYPES, **CONTENTS_ENDPOINT_OPTIONS_TYPES}
1134
1252
  )
1135
1253
  options = to_camel_case(options)
1136
- options = nest_fields(options, ["text", "highlights", "summary"], "contents")
1254
+ options = nest_fields(options, ["text", "highlights", "summary", "subpages", "subpage_target", "livecrawl", "livecrawl_timeout", "extras"], "contents")
1137
1255
  data = self.request("/findSimilar", options)
1138
1256
  return SearchResponse(
1139
1257
  [Result(**to_snake_case(result)) for result in data["results"]],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: exa_py
3
- Version: 1.4.1b0
3
+ Version: 1.5.1
4
4
  Summary: Python SDK for Exa API.
5
5
  Home-page: https://github.com/exa-labs/exa-py
6
6
  Author: Exa
@@ -0,0 +1,8 @@
1
+ exa_py/__init__.py,sha256=1selemczpRm1y8V9cWNm90LARnU1jbtyp-Qpx3c7cTw,28
2
+ exa_py/api.py,sha256=NwmYIAG87j-9P8u26r5NJvRyT5vFkq677MKf8tPJw6s,53119
3
+ exa_py/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ exa_py/utils.py,sha256=Rc1FJjoR9LQ7L_OJM91Sd1GNkbHjcLyEvJENhRix6gc,2405
5
+ exa_py-1.5.1.dist-info/METADATA,sha256=RsZIJl0qJ1c83QnjEfCzXrgQKUTXcXqRlpZYnS0IIgo,3030
6
+ exa_py-1.5.1.dist-info/WHEEL,sha256=pL8R0wFFS65tNSRnaOVrsw9EOkOqxLrlUPenUYnJKNo,91
7
+ exa_py-1.5.1.dist-info/top_level.txt,sha256=Mfkmscdw9HWR1PtVhU1gAiVo6DHu_tyiVdb89gfZBVI,7
8
+ exa_py-1.5.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (74.0.0)
2
+ Generator: setuptools (74.1.3)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,8 +0,0 @@
1
- exa_py/__init__.py,sha256=1selemczpRm1y8V9cWNm90LARnU1jbtyp-Qpx3c7cTw,28
2
- exa_py/api.py,sha256=cJxITJE_IuUtxqYl9K-ue1JelOD7onSBsCmO9IWVdBw,47848
3
- exa_py/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- exa_py/utils.py,sha256=Rc1FJjoR9LQ7L_OJM91Sd1GNkbHjcLyEvJENhRix6gc,2405
5
- exa_py-1.4.1b0.dist-info/METADATA,sha256=wGktyfKNH3Fuspz82tRSxItEbaQmtx0F9RR_f86d3L0,3032
6
- exa_py-1.4.1b0.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
7
- exa_py-1.4.1b0.dist-info/top_level.txt,sha256=Mfkmscdw9HWR1PtVhU1gAiVo6DHu_tyiVdb89gfZBVI,7
8
- exa_py-1.4.1b0.dist-info/RECORD,,