exa-py 1.14.13__tar.gz → 1.14.14__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.

Potentially problematic release.


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

Files changed (32) hide show
  1. {exa_py-1.14.13 → exa_py-1.14.14}/PKG-INFO +1 -1
  2. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/core/base.py +3 -3
  3. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/types.py +123 -126
  4. {exa_py-1.14.13 → exa_py-1.14.14}/pyproject.toml +1 -1
  5. {exa_py-1.14.13 → exa_py-1.14.14}/README.md +0 -0
  6. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/__init__.py +0 -0
  7. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/api.py +0 -0
  8. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/py.typed +0 -0
  9. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/research/__init__.py +0 -0
  10. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/research/client.py +0 -0
  11. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/research/models.py +0 -0
  12. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/utils.py +0 -0
  13. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/__init__.py +0 -0
  14. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/_generator/pydantic/BaseModel.jinja2 +0 -0
  15. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/client.py +0 -0
  16. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/core/__init__.py +0 -0
  17. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/enrichments/__init__.py +0 -0
  18. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/enrichments/client.py +0 -0
  19. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/events/__init__.py +0 -0
  20. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/events/client.py +0 -0
  21. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/imports/__init__.py +0 -0
  22. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/imports/client.py +0 -0
  23. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/items/__init__.py +0 -0
  24. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/items/client.py +0 -0
  25. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/monitors/__init__.py +0 -0
  26. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/monitors/client.py +0 -0
  27. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/monitors/runs/__init__.py +0 -0
  28. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/monitors/runs/client.py +0 -0
  29. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/searches/__init__.py +0 -0
  30. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/searches/client.py +0 -0
  31. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/webhooks/__init__.py +0 -0
  32. {exa_py-1.14.13 → exa_py-1.14.14}/exa_py/websets/webhooks/client.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: exa-py
3
- Version: 1.14.13
3
+ Version: 1.14.14
4
4
  Summary: Python SDK for Exa API.
5
5
  License: MIT
6
6
  Author: Exa AI
@@ -62,10 +62,10 @@ class WebsetsBaseClient:
62
62
  elif isinstance(data, dict) and model_class:
63
63
  # Convert dict to model instance
64
64
  model_instance = model_class.model_validate(data)
65
- return model_instance.model_dump(by_alias=True, exclude_none=True)
65
+ return model_instance.model_dump(mode='json', by_alias=True, exclude_none=True)
66
66
  elif isinstance(data, ExaBaseModel):
67
67
  # Use model's dump method
68
- return data.model_dump(by_alias=True, exclude_none=True)
68
+ return data.model_dump(mode='json', by_alias=True, exclude_none=True)
69
69
  elif isinstance(data, dict):
70
70
  # Use dict directly
71
71
  return data
@@ -90,7 +90,7 @@ class WebsetsBaseClient:
90
90
  pass
91
91
  elif data is not None and isinstance(data, ExaBaseModel):
92
92
  # If data is a model instance, convert it to a dict
93
- data = data.model_dump(by_alias=True, exclude_none=True)
93
+ data = data.model_dump(mode='json', by_alias=True, exclude_none=True)
94
94
 
95
95
  # Ensure proper URL construction by removing leading slash from endpoint if present
96
96
  if endpoint.startswith("/"):
@@ -8,12 +8,24 @@ from datetime import datetime
8
8
  from enum import Enum
9
9
  from typing import Any, Dict, List, Literal, Optional, Union, Annotated
10
10
 
11
- from pydantic import AnyUrl, Field, PositiveInt, confloat, constr
11
+ from pydantic import AnyUrl, Field, PositiveInt
12
12
  from .core.base import ExaBaseModel
13
13
 
14
+
15
+ class WebsetSearchBehavior(Enum):
16
+ """
17
+ The behavior of the Search when it is added to a Webset.
18
+
19
+ - `override`: the search will replace the existing Items found in the Webset and evaluate them against the new criteria. Any Items that don't match the new criteria will be discarded.
20
+ - `append`: the search will add the new Items found to the existing Webset. Any Items that don't match the new criteria will be discarded.
21
+ """
22
+ override = 'override'
23
+ append = 'append'
24
+
25
+
14
26
  class MonitorBehaviorSearchConfig(ExaBaseModel):
15
- query: constr(min_length=2, max_length=10000)
16
- criteria: List[SearchCriterion] = Field(..., max_items=5)
27
+ query: str
28
+ criteria: List[SearchCriterion]
17
29
  entity: Union[
18
30
  WebsetCompanyEntity,
19
31
  WebsetPersonEntity,
@@ -21,25 +33,25 @@ class MonitorBehaviorSearchConfig(ExaBaseModel):
21
33
  WebsetResearchPaperEntity,
22
34
  WebsetCustomEntity,
23
35
  ] = Field(..., title='WebsetEntity')
24
- count: PositiveInt
36
+ count: int
25
37
  """
26
38
  The maximum number of results to find
27
39
  """
28
- behavior: Optional[WebsetSearchBehavior] = 'append'
40
+ behavior: Optional[WebsetSearchBehavior] = WebsetSearchBehavior.append
29
41
  """
30
42
  The behaviour of the Search when it is added to a Webset.
31
43
  """
32
44
 
33
45
 
34
46
  class CreateCriterionParameters(ExaBaseModel):
35
- description: constr(min_length=1)
47
+ description: str
36
48
  """
37
49
  The description of the criterion
38
50
  """
39
51
 
40
52
 
41
53
  class CreateEnrichmentParameters(ExaBaseModel):
42
- description: constr(min_length=1)
54
+ description: str
43
55
  """
44
56
  Provide a description of the enrichment task you want to perform to each Webset Item.
45
57
  """
@@ -49,7 +61,7 @@ class CreateEnrichmentParameters(ExaBaseModel):
49
61
 
50
62
  We automatically select the best format based on the description. If you want to explicitly specify the format, you can do so here.
51
63
  """
52
- options: Optional[List[Option]] = Field(None, max_items=20, min_items=1)
64
+ options: Optional[List[Option]] = None
53
65
  """
54
66
  When the format is options, the different options for the enrichment agent to choose from.
55
67
  """
@@ -60,7 +72,7 @@ class CreateEnrichmentParameters(ExaBaseModel):
60
72
 
61
73
 
62
74
  class CreateMonitorParameters(ExaBaseModel):
63
- webset_id: str = Field(..., alias='websetId')
75
+ webset_id: Annotated[str, Field(alias='websetId')]
64
76
  """
65
77
  The id of the Webset
66
78
  """
@@ -78,7 +90,7 @@ class CreateMonitorParameters(ExaBaseModel):
78
90
 
79
91
 
80
92
  class CreateWebhookParameters(ExaBaseModel):
81
- events: List[EventType] = Field(..., max_items=12, min_items=1)
93
+ events: List[EventType]
82
94
  """
83
95
  The events to trigger the webhook
84
96
  """
@@ -97,7 +109,7 @@ class CreateWebsetParameters(ExaBaseModel):
97
109
  """
98
110
  Create initial search for the Webset.
99
111
  """
100
- imports: Optional[List[ImportItem]] = Field(None, alias='import')
112
+ imports: Annotated[Optional[List[ImportItem]], Field(alias='import')] = None
101
113
  """
102
114
  Import data from existing Websets and Imports into this Webset.
103
115
  """
@@ -105,7 +117,7 @@ class CreateWebsetParameters(ExaBaseModel):
105
117
  """
106
118
  Add Enrichments for the Webset.
107
119
  """
108
- external_id: Optional[str] = Field(None, alias='externalId')
120
+ external_id: Annotated[Optional[str], Field(alias='externalId')] = None
109
121
  """
110
122
  The external identifier for the webset.
111
123
 
@@ -118,13 +130,13 @@ class CreateWebsetParameters(ExaBaseModel):
118
130
 
119
131
 
120
132
  class CreateWebsetSearchParameters(ExaBaseModel):
121
- count: PositiveInt
133
+ count: int
122
134
  """
123
135
  Number of Items the Search will attempt to find.
124
136
 
125
137
  The actual number of Items found may be less than this number depending on the query complexity.
126
138
  """
127
- query: constr(min_length=1) = Field(
139
+ query: str = Field(
128
140
  ...,
129
141
  examples=[
130
142
  'Marketing agencies based in the US, that focus on consumer products. Get brands worked with and city'
@@ -149,9 +161,7 @@ class CreateWebsetSearchParameters(ExaBaseModel):
149
161
 
150
162
  It is not required to provide it, we automatically detect the entity from all the information provided in the query.
151
163
  """
152
- criteria: Optional[List[CreateCriterionParameters]] = Field(
153
- None, max_items=5, min_items=1
154
- )
164
+ criteria: Optional[List[CreateCriterionParameters]] = None
155
165
  """
156
166
  Criteria every item is evaluated against.
157
167
 
@@ -161,7 +171,7 @@ class CreateWebsetSearchParameters(ExaBaseModel):
161
171
  """
162
172
  Sources (existing imports or websets) to exclude from search results. Any results found within these sources will be omitted to prevent finding them during search.
163
173
  """
164
- behavior: Optional[WebsetSearchBehavior] = 'override'
174
+ behavior: Optional[WebsetSearchBehavior] = WebsetSearchBehavior.override
165
175
  """
166
176
  The behavior of the Search when it is added to a Webset.
167
177
 
@@ -175,18 +185,18 @@ class CreateWebsetSearchParameters(ExaBaseModel):
175
185
 
176
186
 
177
187
  class WebsetSearchCriterion(ExaBaseModel):
178
- description: constr(min_length=1)
188
+ description: str
179
189
  """
180
190
  The description of the criterion
181
191
  """
182
- success_rate: confloat(ge=0.0, le=100.0) = Field(..., alias='successRate')
192
+ success_rate: Annotated[float, Field(ge=0.0, le=100.0, alias='successRate')]
183
193
  """
184
194
  Value between 0 and 100 representing the percentage of results that meet the criterion.
185
195
  """
186
196
 
187
197
 
188
198
  class SearchCriterion(ExaBaseModel):
189
- description: constr(min_length=2)
199
+ description: str
190
200
 
191
201
 
192
202
  class EnrichmentResult(ExaBaseModel):
@@ -204,7 +214,7 @@ class EnrichmentResult(ExaBaseModel):
204
214
  """
205
215
  The references used to generate the result.
206
216
  """
207
- enrichment_id: str = Field(..., alias='enrichmentId')
217
+ enrichment_id: Annotated[str, Field(alias='enrichmentId')]
208
218
  """
209
219
  The unique identifier for the enrichment
210
220
  """
@@ -305,11 +315,11 @@ class ListEventsResponse(ExaBaseModel):
305
315
  """
306
316
  The list of events
307
317
  """
308
- has_more: bool = Field(..., alias='hasMore')
318
+ has_more: Annotated[bool, Field(alias='hasMore')]
309
319
  """
310
320
  Whether there are more results to paginate through
311
321
  """
312
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
322
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
313
323
  """
314
324
  The cursor to use for the next page of results
315
325
  """
@@ -320,11 +330,11 @@ class ListMonitorRunsResponse(ExaBaseModel):
320
330
  """
321
331
  The list of monitor runs
322
332
  """
323
- has_more: bool = Field(..., alias='hasMore')
333
+ has_more: Annotated[bool, Field(alias='hasMore')]
324
334
  """
325
335
  Whether there are more results to paginate through
326
336
  """
327
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
337
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
328
338
  """
329
339
  The cursor to use for the next page of results
330
340
  """
@@ -335,11 +345,11 @@ class ListMonitorsResponse(ExaBaseModel):
335
345
  """
336
346
  The list of monitors
337
347
  """
338
- has_more: bool = Field(..., alias='hasMore')
348
+ has_more: Annotated[bool, Field(alias='hasMore')]
339
349
  """
340
350
  Whether there are more results to paginate through
341
351
  """
342
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
352
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
343
353
  """
344
354
  The cursor to use for the next page of results
345
355
  """
@@ -350,11 +360,11 @@ class ListWebhookAttemptsResponse(ExaBaseModel):
350
360
  """
351
361
  The list of webhook attempts
352
362
  """
353
- has_more: bool = Field(..., alias='hasMore')
363
+ has_more: Annotated[bool, Field(alias='hasMore')]
354
364
  """
355
365
  Whether there are more results to paginate through
356
366
  """
357
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
367
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
358
368
  """
359
369
  The cursor to use for the next page of results
360
370
  """
@@ -365,11 +375,11 @@ class ListWebhooksResponse(ExaBaseModel):
365
375
  """
366
376
  The list of webhooks
367
377
  """
368
- has_more: bool = Field(..., alias='hasMore')
378
+ has_more: Annotated[bool, Field(alias='hasMore')]
369
379
  """
370
380
  Whether there are more results to paginate through
371
381
  """
372
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
382
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
373
383
  """
374
384
  The cursor to use for the next page of results
375
385
  """
@@ -380,11 +390,11 @@ class ListWebsetItemResponse(ExaBaseModel):
380
390
  """
381
391
  The list of webset items
382
392
  """
383
- has_more: bool = Field(..., alias='hasMore')
393
+ has_more: Annotated[bool, Field(alias='hasMore')]
384
394
  """
385
395
  Whether there are more Items to paginate through
386
396
  """
387
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
397
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
388
398
  """
389
399
  The cursor to use for the next page of results
390
400
  """
@@ -395,11 +405,11 @@ class ListWebsetsResponse(ExaBaseModel):
395
405
  """
396
406
  The list of websets
397
407
  """
398
- has_more: bool = Field(..., alias='hasMore')
408
+ has_more: Annotated[bool, Field(alias='hasMore')]
399
409
  """
400
410
  Whether there are more results to paginate through
401
411
  """
402
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
412
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
403
413
  """
404
414
  The cursor to use for the next page of results
405
415
  """
@@ -413,7 +423,7 @@ class ImportItem(ExaBaseModel):
413
423
  """
414
424
  The type of source (import or webset)
415
425
  """
416
- id: constr(min_length=1)
426
+ id: str
417
427
  """
418
428
  The ID of the source to import from
419
429
  """
@@ -427,7 +437,7 @@ class ExcludeItem(ExaBaseModel):
427
437
  """
428
438
  The type of source (import or webset)
429
439
  """
430
- id: constr(min_length=1)
440
+ id: str
431
441
  """
432
442
  The ID of the source to exclude
433
443
  """
@@ -437,7 +447,7 @@ class CsvImportConfig(ExaBaseModel):
437
447
  """
438
448
  Configuration for CSV imports.
439
449
  """
440
- identifier: Optional[PositiveInt] = None
450
+ identifier: Optional[int] = None
441
451
  """
442
452
  Column index containing the key identifier for the entity (e.g., URL). If not provided, will be inferred.
443
453
  """
@@ -447,7 +457,7 @@ class CreateImportParameters(ExaBaseModel):
447
457
  """
448
458
  Parameters for creating an import.
449
459
  """
450
- size: Optional[confloat(le=50000000.0)] = None
460
+ size: Optional[Annotated[float, Field(le=50000000.0)]] = None
451
461
  """
452
462
  The size of the file in bytes. Maximum size is 50 MB.
453
463
  Auto-calculated when csv_data is provided and size is not specified.
@@ -527,31 +537,31 @@ class CreateImportResponse(ExaBaseModel):
527
537
  """
528
538
  Set of key-value pairs associated with this object
529
539
  """
530
- failed_reason: Optional[ImportFailedReason] = Field(None, alias='failedReason')
540
+ failed_reason: Annotated[Optional[ImportFailedReason], Field(alias='failedReason')] = None
531
541
  """
532
542
  The reason the import failed, if applicable
533
543
  """
534
- failed_at: Optional[datetime] = Field(None, alias='failedAt')
544
+ failed_at: Annotated[Optional[datetime], Field(alias='failedAt')] = None
535
545
  """
536
546
  When the import failed, if applicable
537
547
  """
538
- failed_message: Optional[str] = Field(None, alias='failedMessage')
548
+ failed_message: Annotated[Optional[str], Field(alias='failedMessage')] = None
539
549
  """
540
550
  A human readable message describing the import failure
541
551
  """
542
- created_at: datetime = Field(..., alias='createdAt')
552
+ created_at: Annotated[datetime, Field(alias='createdAt')]
543
553
  """
544
554
  When the import was created
545
555
  """
546
- updated_at: datetime = Field(..., alias='updatedAt')
556
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
547
557
  """
548
558
  When the import was last updated
549
559
  """
550
- upload_url: str = Field(..., alias='uploadUrl')
560
+ upload_url: Annotated[str, Field(alias='uploadUrl')]
551
561
  """
552
562
  The URL to upload the file to
553
563
  """
554
- upload_valid_until: str = Field(..., alias='uploadValidUntil')
564
+ upload_valid_until: Annotated[str, Field(alias='uploadValidUntil')]
555
565
  """
556
566
  The date and time until the upload URL is valid
557
567
  """
@@ -599,23 +609,23 @@ class Import(ExaBaseModel):
599
609
  """
600
610
  Set of key-value pairs associated with this object
601
611
  """
602
- failed_reason: Optional[ImportFailedReason] = Field(None, alias='failedReason')
612
+ failed_reason: Annotated[Optional[ImportFailedReason], Field(alias='failedReason')] = None
603
613
  """
604
614
  The reason the import failed, if applicable
605
615
  """
606
- failed_at: Optional[datetime] = Field(None, alias='failedAt')
616
+ failed_at: Annotated[Optional[datetime], Field(alias='failedAt')] = None
607
617
  """
608
618
  When the import failed, if applicable
609
619
  """
610
- failed_message: Optional[str] = Field(None, alias='failedMessage')
620
+ failed_message: Annotated[Optional[str], Field(alias='failedMessage')] = None
611
621
  """
612
622
  A human readable message describing the import failure
613
623
  """
614
- created_at: datetime = Field(..., alias='createdAt')
624
+ created_at: Annotated[datetime, Field(alias='createdAt')]
615
625
  """
616
626
  When the import was created
617
627
  """
618
- updated_at: datetime = Field(..., alias='updatedAt')
628
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
619
629
  """
620
630
  When the import was last updated
621
631
  """
@@ -629,11 +639,11 @@ class ListImportsResponse(ExaBaseModel):
629
639
  """
630
640
  The list of imports
631
641
  """
632
- has_more: bool = Field(..., alias='hasMore')
642
+ has_more: Annotated[bool, Field(alias='hasMore')]
633
643
  """
634
644
  Whether there are more results to paginate through
635
645
  """
636
- next_cursor: Optional[str] = Field(None, alias='nextCursor')
646
+ next_cursor: Annotated[Optional[str], Field(alias='nextCursor')] = None
637
647
  """
638
648
  The cursor to use for the next page of results
639
649
  """
@@ -669,7 +679,7 @@ class Progress(ExaBaseModel):
669
679
  """
670
680
  The number of results found so far
671
681
  """
672
- completion: confloat(ge=0.0, le=100.0)
682
+ completion: Annotated[float, Field(ge=0.0, le=100.0)]
673
683
  """
674
684
  The completion percentage of the search
675
685
  """
@@ -705,7 +715,7 @@ class CreateWebsetParametersSearch(ExaBaseModel):
705
715
  Create initial search for the Webset.
706
716
  """
707
717
 
708
- query: constr(min_length=1) = Field(
718
+ query: str = Field(
709
719
  ...,
710
720
  examples=[
711
721
  'Marketing agencies based in the US, that focus on consumer products.'
@@ -718,7 +728,7 @@ class CreateWebsetParametersSearch(ExaBaseModel):
718
728
 
719
729
  Any URL provided will be crawled and used as context for the search.
720
730
  """
721
- count: Optional[PositiveInt] = 10
731
+ count: Optional[int] = 10
722
732
  """
723
733
  Number of Items the Webset will attempt to find.
724
734
 
@@ -738,9 +748,7 @@ class CreateWebsetParametersSearch(ExaBaseModel):
738
748
 
739
749
  It is not required to provide it, we automatically detect the entity from all the information provided in the query. Only use this when you need more fine control.
740
750
  """
741
- criteria: Optional[List[CreateCriterionParameters]] = Field(
742
- None, max_items=5, min_items=1
743
- )
751
+ criteria: Optional[List[CreateCriterionParameters]] = None
744
752
  """
745
753
  Criteria every item is evaluated against.
746
754
 
@@ -794,7 +802,7 @@ class Monitor(ExaBaseModel):
794
802
  """
795
803
  The status of the Monitor
796
804
  """
797
- webset_id: str = Field(..., alias='websetId')
805
+ webset_id: Annotated[str, Field(alias='websetId')]
798
806
  """
799
807
  The id of the Webset the Monitor belongs to
800
808
  """
@@ -808,23 +816,23 @@ class Monitor(ExaBaseModel):
808
816
  """
809
817
  Behavior to perform when monitor runs
810
818
  """
811
- last_run: Optional[MonitorRun] = Field(None, alias='lastRun', title='MonitorRun')
819
+ last_run: Annotated[Optional[MonitorRun], Field(alias='lastRun', title='MonitorRun')] = None
812
820
  """
813
821
  The last run of the monitor
814
822
  """
815
- next_run_at: Optional[datetime] = Field(None, alias='nextRunAt')
823
+ next_run_at: Annotated[Optional[datetime], Field(alias='nextRunAt')] = None
816
824
  """
817
825
  When the next run will occur
818
826
  """
819
- metadata: Dict[str, constr(max_length=1000)]
827
+ metadata: Dict[str, str]
820
828
  """
821
829
  Set of key-value pairs you want to associate with this object.
822
830
  """
823
- created_at: datetime = Field(..., alias='createdAt')
831
+ created_at: Annotated[datetime, Field(alias='createdAt')]
824
832
  """
825
833
  When the monitor was created
826
834
  """
827
- updated_at: datetime = Field(..., alias='updatedAt')
835
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
828
836
  """
829
837
  When the monitor was last updated
830
838
  """
@@ -875,7 +883,7 @@ class MonitorRun(ExaBaseModel):
875
883
  """
876
884
  The status of the Monitor Run
877
885
  """
878
- monitor_id: str = Field(..., alias='monitorId')
886
+ monitor_id: Annotated[str, Field(alias='monitorId')]
879
887
  """
880
888
  The monitor that the run is associated with
881
889
  """
@@ -883,23 +891,23 @@ class MonitorRun(ExaBaseModel):
883
891
  """
884
892
  The type of the Monitor Run
885
893
  """
886
- completed_at: Optional[datetime] = Field(None, alias='completedAt')
894
+ completed_at: Annotated[Optional[datetime], Field(alias='completedAt')] = None
887
895
  """
888
896
  When the run completed
889
897
  """
890
- failed_at: Optional[datetime] = Field(None, alias='failedAt')
898
+ failed_at: Annotated[Optional[datetime], Field(alias='failedAt')] = None
891
899
  """
892
900
  When the run failed
893
901
  """
894
- canceled_at: Optional[datetime] = Field(None, alias='canceledAt')
902
+ canceled_at: Annotated[Optional[datetime], Field(alias='canceledAt')] = None
895
903
  """
896
904
  When the run was canceled
897
905
  """
898
- created_at: datetime = Field(..., alias='createdAt')
906
+ created_at: Annotated[datetime, Field(alias='createdAt')]
899
907
  """
900
908
  When the run was created
901
909
  """
902
- updated_at: datetime = Field(..., alias='updatedAt')
910
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
903
911
  """
904
912
  When the run was last updated
905
913
  """
@@ -926,7 +934,7 @@ class UpdateMonitor(ExaBaseModel):
926
934
 
927
935
 
928
936
  class UpdateWebhookParameters(ExaBaseModel):
929
- events: Optional[List[EventType]] = Field(None, max_items=12, min_items=1)
937
+ events: Optional[List[EventType]] = None
930
938
  """
931
939
  The events to trigger the webhook
932
940
  """
@@ -957,7 +965,7 @@ class Webhook(ExaBaseModel):
957
965
  """
958
966
  The status of the webhook
959
967
  """
960
- events: List[EventType] = Field(..., min_items=1)
968
+ events: List[EventType]
961
969
  """
962
970
  The events to trigger the webhook
963
971
  """
@@ -973,11 +981,11 @@ class Webhook(ExaBaseModel):
973
981
  """
974
982
  The metadata of the webhook
975
983
  """
976
- created_at: datetime = Field(..., alias='createdAt')
984
+ created_at: Annotated[datetime, Field(alias='createdAt')]
977
985
  """
978
986
  The date and time the webhook was created
979
987
  """
980
- updated_at: datetime = Field(..., alias='updatedAt')
988
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
981
989
  """
982
990
  The date and time the webhook was last updated
983
991
  """
@@ -989,15 +997,15 @@ class WebhookAttempt(ExaBaseModel):
989
997
  The unique identifier for the webhook attempt
990
998
  """
991
999
  object: Literal['webhook_attempt']
992
- event_id: str = Field(..., alias='eventId')
1000
+ event_id: Annotated[str, Field(alias='eventId')]
993
1001
  """
994
1002
  The unique identifier for the event
995
1003
  """
996
- event_type: EventType = Field(..., alias='eventType')
1004
+ event_type: Annotated[EventType, Field(alias='eventType')]
997
1005
  """
998
1006
  The type of event
999
1007
  """
1000
- webhook_id: str = Field(..., alias='webhookId')
1008
+ webhook_id: Annotated[str, Field(alias='webhookId')]
1001
1009
  """
1002
1010
  The unique identifier for the webhook
1003
1011
  """
@@ -1009,15 +1017,15 @@ class WebhookAttempt(ExaBaseModel):
1009
1017
  """
1010
1018
  Whether the attempt was successful
1011
1019
  """
1012
- response_headers: Dict[str, Any] = Field(..., alias='responseHeaders')
1020
+ response_headers: Annotated[Dict[str, Any], Field(alias='responseHeaders')]
1013
1021
  """
1014
1022
  The headers of the response
1015
1023
  """
1016
- response_body: Optional[str] = Field(None, alias='responseBody')
1024
+ response_body: Annotated[Optional[str], Field(alias='responseBody')] = None
1017
1025
  """
1018
1026
  The body of the response
1019
1027
  """
1020
- response_status_code: float = Field(..., alias='responseStatusCode')
1028
+ response_status_code: Annotated[float, Field(alias='responseStatusCode')]
1021
1029
  """
1022
1030
  The status code of the response
1023
1031
  """
@@ -1025,7 +1033,7 @@ class WebhookAttempt(ExaBaseModel):
1025
1033
  """
1026
1034
  The attempt number of the webhook
1027
1035
  """
1028
- attempted_at: datetime = Field(..., alias='attemptedAt')
1036
+ attempted_at: Annotated[datetime, Field(alias='attemptedAt')]
1029
1037
  """
1030
1038
  The date and time the attempt was made
1031
1039
  """
@@ -1050,7 +1058,7 @@ class Webset(ExaBaseModel):
1050
1058
  """
1051
1059
  The status of the webset
1052
1060
  """
1053
- external_id: Optional[str] = Field(None, alias='externalId')
1061
+ external_id: Annotated[Optional[str], Field(alias='externalId')] = None
1054
1062
  """
1055
1063
  The external identifier for the webset
1056
1064
  """
@@ -1070,11 +1078,11 @@ class Webset(ExaBaseModel):
1070
1078
  """
1071
1079
  Set of key-value pairs you want to associate with this object.
1072
1080
  """
1073
- created_at: datetime = Field(..., alias='createdAt')
1081
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1074
1082
  """
1075
1083
  The date and time the webset was created
1076
1084
  """
1077
- updated_at: datetime = Field(..., alias='updatedAt')
1085
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
1078
1086
  """
1079
1087
  The date and time the webset was last updated
1080
1088
  """
@@ -1096,7 +1104,7 @@ class WebsetCreatedEvent(ExaBaseModel):
1096
1104
  object: Literal['event']
1097
1105
  type: Literal['webset.created']
1098
1106
  data: Webset
1099
- created_at: datetime = Field(..., alias='createdAt')
1107
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1100
1108
  """
1101
1109
  The date and time the event was created
1102
1110
  """
@@ -1104,7 +1112,7 @@ class WebsetCreatedEvent(ExaBaseModel):
1104
1112
 
1105
1113
  class WebsetCustomEntity(ExaBaseModel):
1106
1114
  type: Literal['custom']
1107
- description: constr(min_length=2)
1115
+ description: str
1108
1116
  """
1109
1117
  The description of the custom entity
1110
1118
  """
@@ -1118,7 +1126,7 @@ class WebsetDeletedEvent(ExaBaseModel):
1118
1126
  object: Literal['event']
1119
1127
  type: Literal['webset.deleted']
1120
1128
  data: Webset
1121
- created_at: datetime = Field(..., alias='createdAt')
1129
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1122
1130
  """
1123
1131
  The date and time the event was created
1124
1132
  """
@@ -1134,7 +1142,7 @@ class WebsetEnrichment(ExaBaseModel):
1134
1142
  """
1135
1143
  The status of the enrichment
1136
1144
  """
1137
- webset_id: str = Field(..., alias='websetId')
1145
+ webset_id: Annotated[str, Field(alias='websetId')]
1138
1146
  """
1139
1147
  The unique identifier for the Webset this enrichment belongs to.
1140
1148
  """
@@ -1168,11 +1176,11 @@ class WebsetEnrichment(ExaBaseModel):
1168
1176
  """
1169
1177
  The metadata of the enrichment
1170
1178
  """
1171
- created_at: datetime = Field(..., alias='createdAt')
1179
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1172
1180
  """
1173
1181
  The date and time the enrichment was created
1174
1182
  """
1175
- updated_at: datetime = Field(..., alias='updatedAt')
1183
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
1176
1184
  """
1177
1185
  The date and time the enrichment was last updated
1178
1186
  """
@@ -1209,7 +1217,7 @@ class WebsetIdleEvent(ExaBaseModel):
1209
1217
  object: Literal['event']
1210
1218
  type: Literal['webset.idle']
1211
1219
  data: Webset
1212
- created_at: datetime = Field(..., alias='createdAt')
1220
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1213
1221
  """
1214
1222
  The date and time the event was created
1215
1223
  """
@@ -1225,11 +1233,11 @@ class WebsetItem(ExaBaseModel):
1225
1233
  """
1226
1234
  The source of the Item
1227
1235
  """
1228
- source_id: str = Field(..., alias='sourceId')
1236
+ source_id: Annotated[str, Field(alias='sourceId')]
1229
1237
  """
1230
1238
  The unique identifier for the source
1231
1239
  """
1232
- webset_id: str = Field(..., alias='websetId')
1240
+ webset_id: Annotated[str, Field(alias='websetId')]
1233
1241
  """
1234
1242
  The unique identifier for the Webset this Item belongs to.
1235
1243
  """
@@ -1251,11 +1259,11 @@ class WebsetItem(ExaBaseModel):
1251
1259
  """
1252
1260
  The enrichments results of the Webset item
1253
1261
  """
1254
- created_at: datetime = Field(..., alias='createdAt')
1262
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1255
1263
  """
1256
1264
  The date and time the item was created
1257
1265
  """
1258
- updated_at: datetime = Field(..., alias='updatedAt')
1266
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
1259
1267
  """
1260
1268
  The date and time the item was last updated
1261
1269
  """
@@ -1288,7 +1296,7 @@ class WebsetItemArticlePropertiesFields(ExaBaseModel):
1288
1296
  """
1289
1297
  The author(s) of the article
1290
1298
  """
1291
- published_at: Optional[str] = Field(None, alias='publishedAt')
1299
+ published_at: Annotated[Optional[str], Field(alias='publishedAt')] = None
1292
1300
  """
1293
1301
  The date the article was published
1294
1302
  """
@@ -1337,7 +1345,7 @@ class WebsetItemCompanyPropertiesFields(ExaBaseModel):
1337
1345
  """
1338
1346
  A short description of the company
1339
1347
  """
1340
- logo_url: Optional[AnyUrl] = Field(None, alias='logoUrl')
1348
+ logo_url: Annotated[Optional[AnyUrl], Field(alias='logoUrl')] = None
1341
1349
  """
1342
1350
  The URL of the company logo
1343
1351
  """
@@ -1351,7 +1359,7 @@ class WebsetItemCreatedEvent(ExaBaseModel):
1351
1359
  object: Literal['event']
1352
1360
  type: Literal['webset.item.created']
1353
1361
  data: WebsetItem
1354
- created_at: datetime = Field(..., alias='createdAt')
1362
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1355
1363
  """
1356
1364
  The date and time the event was created
1357
1365
  """
@@ -1384,7 +1392,7 @@ class WebsetItemCustomPropertiesFields(ExaBaseModel):
1384
1392
  """
1385
1393
  The author(s) of the website
1386
1394
  """
1387
- published_at: Optional[str] = Field(None, alias='publishedAt')
1395
+ published_at: Annotated[Optional[str], Field(alias='publishedAt')] = None
1388
1396
  """
1389
1397
  The date the content was published
1390
1398
  """
@@ -1398,7 +1406,7 @@ class WebsetItemEnrichedEvent(ExaBaseModel):
1398
1406
  object: Literal['event']
1399
1407
  type: Literal['webset.item.enriched']
1400
1408
  data: WebsetItem
1401
- created_at: datetime = Field(..., alias='createdAt')
1409
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1402
1410
  """
1403
1411
  The date and time the event was created
1404
1412
  """
@@ -1469,7 +1477,7 @@ class WebsetItemPersonPropertiesFields(ExaBaseModel):
1469
1477
  """
1470
1478
  The company the person is working at
1471
1479
  """
1472
- picture_url: Optional[AnyUrl] = Field(None, alias='pictureUrl')
1480
+ picture_url: Annotated[Optional[AnyUrl], Field(alias='pictureUrl')] = None
1473
1481
  """
1474
1482
  The URL of the person's picture
1475
1483
  """
@@ -1502,7 +1510,7 @@ class WebsetItemResearchPaperPropertiesFields(ExaBaseModel):
1502
1510
  """
1503
1511
  The author(s) of the research paper
1504
1512
  """
1505
- published_at: Optional[str] = Field(None, alias='publishedAt')
1513
+ published_at: Annotated[Optional[str], Field(alias='publishedAt')] = None
1506
1514
  """
1507
1515
  The date the research paper was published
1508
1516
  """
@@ -1516,7 +1524,7 @@ class WebsetPausedEvent(ExaBaseModel):
1516
1524
  object: Literal['event']
1517
1525
  type: Literal['webset.paused']
1518
1526
  data: Webset
1519
- created_at: datetime = Field(..., alias='createdAt')
1527
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1520
1528
  """
1521
1529
  The date and time the event was created
1522
1530
  """
@@ -1540,7 +1548,7 @@ class WebsetSearch(ExaBaseModel):
1540
1548
  """
1541
1549
  The status of the search
1542
1550
  """
1543
- query: constr(min_length=1)
1551
+ query: str
1544
1552
  """
1545
1553
  The query used to create the search.
1546
1554
  """
@@ -1564,7 +1572,7 @@ class WebsetSearch(ExaBaseModel):
1564
1572
  """
1565
1573
  The number of results the search will attempt to find. The actual number of results may be less than this number depending on the search complexity.
1566
1574
  """
1567
- behavior: Optional[WebsetSearchBehavior] = 'override'
1575
+ behavior: Optional[WebsetSearchBehavior] = WebsetSearchBehavior.override
1568
1576
  """
1569
1577
  The behavior of the search when it is added to a Webset.
1570
1578
 
@@ -1579,35 +1587,24 @@ class WebsetSearch(ExaBaseModel):
1579
1587
  """
1580
1588
  Set of key-value pairs you want to associate with this object.
1581
1589
  """
1582
- canceled_at: Optional[datetime] = Field(None, alias='canceledAt')
1590
+ canceled_at: Annotated[Optional[datetime], Field(alias='canceledAt')] = None
1583
1591
  """
1584
1592
  The date and time the search was canceled
1585
1593
  """
1586
- canceled_reason: Optional[WebsetSearchCanceledReason] = Field(None, alias='canceledReason')
1594
+ canceled_reason: Annotated[Optional[WebsetSearchCanceledReason], Field(alias='canceledReason')] = None
1587
1595
  """
1588
1596
  The reason the search was canceled
1589
1597
  """
1590
- created_at: datetime = Field(..., alias='createdAt')
1598
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1591
1599
  """
1592
1600
  The date and time the search was created
1593
1601
  """
1594
- updated_at: datetime = Field(..., alias='updatedAt')
1602
+ updated_at: Annotated[datetime, Field(alias='updatedAt')]
1595
1603
  """
1596
1604
  The date and time the search was last updated
1597
1605
  """
1598
1606
 
1599
1607
 
1600
- class WebsetSearchBehavior(Enum):
1601
- """
1602
- The behavior of the Search when it is added to a Webset.
1603
-
1604
- - `override`: the search will replace the existing Items found in the Webset and evaluate them against the new criteria. Any Items that don't match the new criteria will be discarded.
1605
- - `append`: the search will add the new Items found to the existing Webset. Any Items that don't match the new criteria will be discarded.
1606
- """
1607
- override = 'override'
1608
- append = 'append'
1609
-
1610
-
1611
1608
  class WebsetSearchCanceledEvent(ExaBaseModel):
1612
1609
  id: str
1613
1610
  """
@@ -1616,7 +1613,7 @@ class WebsetSearchCanceledEvent(ExaBaseModel):
1616
1613
  object: Literal['event']
1617
1614
  type: Literal['webset.search.canceled']
1618
1615
  data: WebsetSearch
1619
- created_at: datetime = Field(..., alias='createdAt')
1616
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1620
1617
  """
1621
1618
  The date and time the event was created
1622
1619
  """
@@ -1635,7 +1632,7 @@ class WebsetSearchCompletedEvent(ExaBaseModel):
1635
1632
  object: Literal['event']
1636
1633
  type: Literal['webset.search.completed']
1637
1634
  data: WebsetSearch
1638
- created_at: datetime = Field(..., alias='createdAt')
1635
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1639
1636
  """
1640
1637
  The date and time the event was created
1641
1638
  """
@@ -1649,7 +1646,7 @@ class WebsetSearchCreatedEvent(ExaBaseModel):
1649
1646
  object: Literal['event']
1650
1647
  type: Literal['webset.search.created']
1651
1648
  data: WebsetSearch
1652
- created_at: datetime = Field(..., alias='createdAt')
1649
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1653
1650
  """
1654
1651
  The date and time the event was created
1655
1652
  """
@@ -1674,7 +1671,7 @@ class WebsetSearchUpdatedEvent(ExaBaseModel):
1674
1671
  object: Literal['event']
1675
1672
  type: Literal['webset.search.updated']
1676
1673
  data: WebsetSearch
1677
- created_at: datetime = Field(..., alias='createdAt')
1674
+ created_at: Annotated[datetime, Field(alias='createdAt')]
1678
1675
  """
1679
1676
  The date and time the event was created
1680
1677
  """
@@ -25,7 +25,7 @@ in-project = true
25
25
 
26
26
  [project]
27
27
  name = "exa-py"
28
- version = "1.14.13"
28
+ version = "1.14.14"
29
29
  description = "Python SDK for Exa API."
30
30
  readme = "README.md"
31
31
  requires-python = ">=3.9"
File without changes
File without changes
File without changes
File without changes
File without changes