casedev 0.2.0__py3-none-any.whl → 0.3.0__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.
casedev/_base_client.py CHANGED
@@ -86,6 +86,7 @@ from ._exceptions import (
86
86
  APIConnectionError,
87
87
  APIResponseValidationError,
88
88
  )
89
+ from ._utils._json import openapi_dumps
89
90
 
90
91
  log: logging.Logger = logging.getLogger(__name__)
91
92
 
@@ -554,8 +555,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
554
555
  kwargs["content"] = options.content
555
556
  elif isinstance(json_data, bytes):
556
557
  kwargs["content"] = json_data
557
- else:
558
- kwargs["json"] = json_data if is_given(json_data) else None
558
+ elif not files:
559
+ # Don't set content when JSON is sent as multipart/form-data,
560
+ # since httpx's content param overrides other body arguments
561
+ kwargs["content"] = openapi_dumps(json_data) if is_given(json_data) and json_data is not None else None
559
562
  kwargs["files"] = files
560
563
  else:
561
564
  headers.pop("Content-Type", None)
casedev/_compat.py CHANGED
@@ -139,6 +139,7 @@ def model_dump(
139
139
  exclude_defaults: bool = False,
140
140
  warnings: bool = True,
141
141
  mode: Literal["json", "python"] = "python",
142
+ by_alias: bool | None = None,
142
143
  ) -> dict[str, Any]:
143
144
  if (not PYDANTIC_V1) or hasattr(model, "model_dump"):
144
145
  return model.model_dump(
@@ -148,13 +149,12 @@ def model_dump(
148
149
  exclude_defaults=exclude_defaults,
149
150
  # warnings are not supported in Pydantic v1
150
151
  warnings=True if PYDANTIC_V1 else warnings,
152
+ by_alias=by_alias,
151
153
  )
152
154
  return cast(
153
155
  "dict[str, Any]",
154
156
  model.dict( # pyright: ignore[reportDeprecated, reportUnnecessaryCast]
155
- exclude=exclude,
156
- exclude_unset=exclude_unset,
157
- exclude_defaults=exclude_defaults,
157
+ exclude=exclude, exclude_unset=exclude_unset, exclude_defaults=exclude_defaults, by_alias=bool(by_alias)
158
158
  ),
159
159
  )
160
160
 
@@ -0,0 +1,35 @@
1
+ import json
2
+ from typing import Any
3
+ from datetime import datetime
4
+ from typing_extensions import override
5
+
6
+ import pydantic
7
+
8
+ from .._compat import model_dump
9
+
10
+
11
+ def openapi_dumps(obj: Any) -> bytes:
12
+ """
13
+ Serialize an object to UTF-8 encoded JSON bytes.
14
+
15
+ Extends the standard json.dumps with support for additional types
16
+ commonly used in the SDK, such as `datetime`, `pydantic.BaseModel`, etc.
17
+ """
18
+ return json.dumps(
19
+ obj,
20
+ cls=_CustomEncoder,
21
+ # Uses the same defaults as httpx's JSON serialization
22
+ ensure_ascii=False,
23
+ separators=(",", ":"),
24
+ allow_nan=False,
25
+ ).encode()
26
+
27
+
28
+ class _CustomEncoder(json.JSONEncoder):
29
+ @override
30
+ def default(self, o: Any) -> Any:
31
+ if isinstance(o, datetime):
32
+ return o.isoformat()
33
+ if isinstance(o, pydantic.BaseModel):
34
+ return model_dump(o, exclude_unset=True, mode="json", by_alias=True)
35
+ return super().default(o)
casedev/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "casedev"
4
- __version__ = "0.2.0" # x-release-please-version
4
+ __version__ = "0.3.0" # x-release-please-version
@@ -149,7 +149,7 @@ class V1Resource(SyncAPIResource):
149
149
 
150
150
  engine: OCR engine to use
151
151
 
152
- features: OCR features to extract
152
+ features: Additional processing options
153
153
 
154
154
  result_bucket: S3 bucket to store results
155
155
 
@@ -309,7 +309,7 @@ class AsyncV1Resource(AsyncAPIResource):
309
309
 
310
310
  engine: OCR engine to use
311
311
 
312
- features: OCR features to extract
312
+ features: Additional processing options
313
313
 
314
314
  result_bucket: S3 bucket to store results
315
315
 
@@ -126,6 +126,7 @@ class ObjectsResource(SyncAPIResource):
126
126
  content_type: str | Omit = omit,
127
127
  expires_in: int | Omit = omit,
128
128
  operation: Literal["GET", "PUT", "DELETE", "HEAD"] | Omit = omit,
129
+ size_bytes: int | Omit = omit,
129
130
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
130
131
  # The extra values given here take precedence over values defined on the client or passed to this method.
131
132
  extra_headers: Headers | None = None,
@@ -146,6 +147,9 @@ class ObjectsResource(SyncAPIResource):
146
147
 
147
148
  operation: The S3 operation to generate URL for
148
149
 
150
+ size_bytes: File size in bytes (optional, max 500MB). When provided for PUT operations,
151
+ enforces exact file size at S3 level.
152
+
149
153
  extra_headers: Send extra headers
150
154
 
151
155
  extra_query: Add additional query parameters to the request
@@ -165,6 +169,7 @@ class ObjectsResource(SyncAPIResource):
165
169
  "content_type": content_type,
166
170
  "expires_in": expires_in,
167
171
  "operation": operation,
172
+ "size_bytes": size_bytes,
168
173
  },
169
174
  object_create_presigned_url_params.ObjectCreatePresignedURLParams,
170
175
  ),
@@ -354,6 +359,7 @@ class AsyncObjectsResource(AsyncAPIResource):
354
359
  content_type: str | Omit = omit,
355
360
  expires_in: int | Omit = omit,
356
361
  operation: Literal["GET", "PUT", "DELETE", "HEAD"] | Omit = omit,
362
+ size_bytes: int | Omit = omit,
357
363
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
358
364
  # The extra values given here take precedence over values defined on the client or passed to this method.
359
365
  extra_headers: Headers | None = None,
@@ -374,6 +380,9 @@ class AsyncObjectsResource(AsyncAPIResource):
374
380
 
375
381
  operation: The S3 operation to generate URL for
376
382
 
383
+ size_bytes: File size in bytes (optional, max 500MB). When provided for PUT operations,
384
+ enforces exact file size at S3 level.
385
+
377
386
  extra_headers: Send extra headers
378
387
 
379
388
  extra_query: Add additional query parameters to the request
@@ -393,6 +402,7 @@ class AsyncObjectsResource(AsyncAPIResource):
393
402
  "content_type": content_type,
394
403
  "expires_in": expires_in,
395
404
  "operation": operation,
405
+ "size_bytes": size_bytes,
396
406
  },
397
407
  object_create_presigned_url_params.ObjectCreatePresignedURLParams,
398
408
  ),
@@ -299,7 +299,7 @@ class VaultResource(SyncAPIResource):
299
299
  auto_index: bool | Omit = omit,
300
300
  metadata: object | Omit = omit,
301
301
  path: str | Omit = omit,
302
- size_bytes: float | Omit = omit,
302
+ size_bytes: int | Omit = omit,
303
303
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
304
304
  # The extra values given here take precedence over values defined on the client or passed to this method.
305
305
  extra_headers: Headers | None = None,
@@ -326,7 +326,8 @@ class VaultResource(SyncAPIResource):
326
326
  source folder structure from systems like NetDocs, Clio, or Smokeball. Example:
327
327
  '/Discovery/Depositions/2024'
328
328
 
329
- size_bytes: Estimated file size in bytes for cost calculation
329
+ size_bytes: File size in bytes (optional, max 500MB). When provided, enforces exact file
330
+ size at S3 level.
330
331
 
331
332
  extra_headers: Send extra headers
332
333
 
@@ -613,7 +614,7 @@ class AsyncVaultResource(AsyncAPIResource):
613
614
  auto_index: bool | Omit = omit,
614
615
  metadata: object | Omit = omit,
615
616
  path: str | Omit = omit,
616
- size_bytes: float | Omit = omit,
617
+ size_bytes: int | Omit = omit,
617
618
  # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
618
619
  # The extra values given here take precedence over values defined on the client or passed to this method.
619
620
  extra_headers: Headers | None = None,
@@ -640,7 +641,8 @@ class AsyncVaultResource(AsyncAPIResource):
640
641
  source folder structure from systems like NetDocs, Clio, or Smokeball. Example:
641
642
  '/Discovery/Depositions/2024'
642
643
 
643
- size_bytes: Estimated file size in bytes for cost calculation
644
+ size_bytes: File size in bytes (optional, max 500MB). When provided, enforces exact file
645
+ size at S3 level.
644
646
 
645
647
  extra_headers: Send extra headers
646
648
 
@@ -60,7 +60,7 @@ class StreamingResource(SyncAPIResource):
60
60
  - Encoding: PCM 16-bit little-endian
61
61
  - Channels: Mono (1 channel)
62
62
 
63
- **Pricing:** $0.30 per minute ($18.00 per hour)
63
+ **Pricing:** $0.01 per minute ($0.60 per hour)
64
64
  """
65
65
  return self._get(
66
66
  "/voice/streaming/url",
@@ -112,7 +112,7 @@ class AsyncStreamingResource(AsyncAPIResource):
112
112
  - Encoding: PCM 16-bit little-endian
113
113
  - Channels: Mono (1 channel)
114
114
 
115
- **Pricing:** $0.30 per minute ($18.00 per hour)
115
+ **Pricing:** $0.01 per minute ($0.60 per hour)
116
116
  """
117
117
  return await self._get(
118
118
  "/voice/streaming/url",
@@ -2,9 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing_extensions import Literal, Required, TypedDict
5
+ from typing import Dict, Union
6
+ from typing_extensions import Literal, Required, TypeAlias, TypedDict
6
7
 
7
- __all__ = ["V1ProcessParams", "Features"]
8
+ __all__ = ["V1ProcessParams", "Features", "FeaturesTables"]
8
9
 
9
10
 
10
11
  class V1ProcessParams(TypedDict, total=False):
@@ -21,7 +22,7 @@ class V1ProcessParams(TypedDict, total=False):
21
22
  """OCR engine to use"""
22
23
 
23
24
  features: Features
24
- """OCR features to extract"""
25
+ """Additional processing options"""
25
26
 
26
27
  result_bucket: str
27
28
  """S3 bucket to store results"""
@@ -30,17 +31,24 @@ class V1ProcessParams(TypedDict, total=False):
30
31
  """S3 key prefix for results"""
31
32
 
32
33
 
33
- class Features(TypedDict, total=False):
34
- """OCR features to extract"""
34
+ class FeaturesTablesTyped(TypedDict, total=False):
35
+ """Extract tables as structured data"""
36
+
37
+ format: Literal["csv", "json"]
38
+ """Output format for extracted tables"""
39
+
35
40
 
36
- forms: bool
37
- """Detect form fields"""
41
+ FeaturesTables: TypeAlias = Union[FeaturesTablesTyped, Dict[str, object]]
42
+
43
+
44
+ class Features(TypedDict, total=False):
45
+ """Additional processing options"""
38
46
 
39
- layout: bool
40
- """Preserve document layout"""
47
+ embed: Dict[str, object]
48
+ """Generate searchable PDF with text layer"""
41
49
 
42
- tables: bool
43
- """Detect and extract tables"""
50
+ forms: Dict[str, object]
51
+ """Detect and extract form fields"""
44
52
 
45
- text: bool
46
- """Extract text content"""
53
+ tables: FeaturesTables
54
+ """Extract tables as structured data"""
@@ -10,23 +10,23 @@ __all__ = ["V1RetrieveResponse"]
10
10
 
11
11
 
12
12
  class V1RetrieveResponse(BaseModel):
13
- id: Optional[str] = None
13
+ id: str
14
14
  """OCR job ID"""
15
15
 
16
+ created_at: datetime
17
+ """Job creation timestamp"""
18
+
19
+ status: Literal["pending", "processing", "completed", "failed"]
20
+ """Current job status"""
21
+
16
22
  completed_at: Optional[datetime] = None
17
23
  """Job completion timestamp"""
18
24
 
19
- created_at: Optional[datetime] = None
20
- """Job creation timestamp"""
21
-
22
25
  metadata: Optional[object] = None
23
26
  """Additional processing metadata"""
24
27
 
25
28
  page_count: Optional[int] = None
26
29
  """Number of pages processed"""
27
30
 
28
- status: Optional[Literal["pending", "processing", "completed", "failed"]] = None
29
- """Current job status"""
30
-
31
31
  text: Optional[str] = None
32
32
  """Extracted text content (when completed)"""
@@ -20,3 +20,9 @@ class ObjectCreatePresignedURLParams(TypedDict, total=False):
20
20
 
21
21
  operation: Literal["GET", "PUT", "DELETE", "HEAD"]
22
22
  """The S3 operation to generate URL for"""
23
+
24
+ size_bytes: Annotated[int, PropertyInfo(alias="sizeBytes")]
25
+ """File size in bytes (optional, max 500MB).
26
+
27
+ When provided for PUT operations, enforces exact file size at S3 level.
28
+ """
@@ -9,27 +9,27 @@ __all__ = ["ObjectGetTextResponse", "Metadata"]
9
9
 
10
10
 
11
11
  class Metadata(BaseModel):
12
- chunk_count: Optional[int] = None
12
+ chunk_count: int
13
13
  """Number of text chunks the document was split into"""
14
14
 
15
- filename: Optional[str] = None
15
+ filename: str
16
16
  """Original filename of the document"""
17
17
 
18
- ingestion_completed_at: Optional[datetime] = None
19
- """When the document processing completed"""
20
-
21
- length: Optional[int] = None
18
+ length: int
22
19
  """Total character count of the extracted text"""
23
20
 
24
- object_id: Optional[str] = None
21
+ object_id: str
25
22
  """The object ID"""
26
23
 
27
- vault_id: Optional[str] = None
24
+ vault_id: str
28
25
  """The vault ID"""
29
26
 
27
+ ingestion_completed_at: Optional[datetime] = None
28
+ """When the document processing completed"""
29
+
30
30
 
31
31
  class ObjectGetTextResponse(BaseModel):
32
- metadata: Optional[Metadata] = None
32
+ metadata: Metadata
33
33
 
34
- text: Optional[str] = None
34
+ text: str
35
35
  """Full concatenated text content from all chunks"""
@@ -11,27 +11,27 @@ __all__ = ["ObjectListResponse", "Object"]
11
11
 
12
12
 
13
13
  class Object(BaseModel):
14
- id: Optional[str] = None
14
+ id: str
15
15
  """Unique object identifier"""
16
16
 
17
- chunk_count: Optional[float] = FieldInfo(alias="chunkCount", default=None)
18
- """Number of text chunks created for vectorization"""
19
-
20
- content_type: Optional[str] = FieldInfo(alias="contentType", default=None)
17
+ content_type: str = FieldInfo(alias="contentType")
21
18
  """MIME type of the document"""
22
19
 
23
- created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
20
+ created_at: datetime = FieldInfo(alias="createdAt")
24
21
  """Document upload timestamp"""
25
22
 
26
- filename: Optional[str] = None
23
+ filename: str
27
24
  """Original filename of the uploaded document"""
28
25
 
26
+ ingestion_status: str = FieldInfo(alias="ingestionStatus")
27
+ """Processing status of the document"""
28
+
29
+ chunk_count: Optional[float] = FieldInfo(alias="chunkCount", default=None)
30
+ """Number of text chunks created for vectorization"""
31
+
29
32
  ingestion_completed_at: Optional[datetime] = FieldInfo(alias="ingestionCompletedAt", default=None)
30
33
  """Processing completion timestamp"""
31
34
 
32
- ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
33
- """Processing status of the document"""
34
-
35
35
  metadata: Optional[object] = None
36
36
  """Custom metadata associated with the document"""
37
37
 
@@ -55,10 +55,10 @@ class Object(BaseModel):
55
55
 
56
56
 
57
57
  class ObjectListResponse(BaseModel):
58
- count: Optional[float] = None
58
+ count: float
59
59
  """Total number of objects in the vault"""
60
60
 
61
- objects: Optional[List[Object]] = None
61
+ objects: List[Object]
62
62
 
63
- vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
63
+ vault_id: str = FieldInfo(alias="vaultId")
64
64
  """The ID of the vault"""
@@ -11,30 +11,33 @@ __all__ = ["ObjectRetrieveResponse"]
11
11
 
12
12
 
13
13
  class ObjectRetrieveResponse(BaseModel):
14
- id: Optional[str] = None
14
+ id: str
15
15
  """Object ID"""
16
16
 
17
- chunk_count: Optional[int] = FieldInfo(alias="chunkCount", default=None)
18
- """Number of text chunks created"""
19
-
20
- content_type: Optional[str] = FieldInfo(alias="contentType", default=None)
17
+ content_type: str = FieldInfo(alias="contentType")
21
18
  """MIME type"""
22
19
 
23
- created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
20
+ created_at: datetime = FieldInfo(alias="createdAt")
24
21
  """Upload timestamp"""
25
22
 
26
- download_url: Optional[str] = FieldInfo(alias="downloadUrl", default=None)
23
+ download_url: str = FieldInfo(alias="downloadUrl")
27
24
  """Presigned S3 download URL"""
28
25
 
29
- expires_in: Optional[int] = FieldInfo(alias="expiresIn", default=None)
26
+ expires_in: int = FieldInfo(alias="expiresIn")
30
27
  """URL expiration time in seconds"""
31
28
 
32
- filename: Optional[str] = None
29
+ filename: str
33
30
  """Original filename"""
34
31
 
35
- ingestion_status: Optional[str] = FieldInfo(alias="ingestionStatus", default=None)
32
+ ingestion_status: str = FieldInfo(alias="ingestionStatus")
36
33
  """Processing status (pending, processing, completed, failed)"""
37
34
 
35
+ vault_id: str = FieldInfo(alias="vaultId")
36
+ """Vault ID"""
37
+
38
+ chunk_count: Optional[int] = FieldInfo(alias="chunkCount", default=None)
39
+ """Number of text chunks created"""
40
+
38
41
  metadata: Optional[object] = None
39
42
  """Additional metadata"""
40
43
 
@@ -50,8 +53,5 @@ class ObjectRetrieveResponse(BaseModel):
50
53
  text_length: Optional[int] = FieldInfo(alias="textLength", default=None)
51
54
  """Length of extracted text"""
52
55
 
53
- vault_id: Optional[str] = FieldInfo(alias="vaultId", default=None)
54
- """Vault ID"""
55
-
56
56
  vector_count: Optional[int] = FieldInfo(alias="vectorCount", default=None)
57
57
  """Number of embedding vectors generated"""
@@ -27,24 +27,30 @@ class ChunkStrategy(BaseModel):
27
27
 
28
28
 
29
29
  class VaultRetrieveResponse(BaseModel):
30
- id: Optional[str] = None
30
+ id: str
31
31
  """Vault identifier"""
32
32
 
33
+ created_at: datetime = FieldInfo(alias="createdAt")
34
+ """Vault creation timestamp"""
35
+
36
+ files_bucket: str = FieldInfo(alias="filesBucket")
37
+ """S3 bucket for document storage"""
38
+
39
+ name: str
40
+ """Vault name"""
41
+
42
+ region: str
43
+ """AWS region"""
44
+
33
45
  chunk_strategy: Optional[ChunkStrategy] = FieldInfo(alias="chunkStrategy", default=None)
34
46
  """Document chunking strategy configuration"""
35
47
 
36
- created_at: Optional[datetime] = FieldInfo(alias="createdAt", default=None)
37
- """Vault creation timestamp"""
38
-
39
48
  description: Optional[str] = None
40
49
  """Vault description"""
41
50
 
42
51
  enable_graph: Optional[bool] = FieldInfo(alias="enableGraph", default=None)
43
52
  """Whether GraphRAG is enabled"""
44
53
 
45
- files_bucket: Optional[str] = FieldInfo(alias="filesBucket", default=None)
46
- """S3 bucket for document storage"""
47
-
48
54
  index_name: Optional[str] = FieldInfo(alias="indexName", default=None)
49
55
  """Search index name"""
50
56
 
@@ -54,12 +60,6 @@ class VaultRetrieveResponse(BaseModel):
54
60
  metadata: Optional[object] = None
55
61
  """Additional vault metadata"""
56
62
 
57
- name: Optional[str] = None
58
- """Vault name"""
59
-
60
- region: Optional[str] = None
61
- """AWS region"""
62
-
63
63
  total_bytes: Optional[int] = FieldInfo(alias="totalBytes", default=None)
64
64
  """Total storage size in bytes"""
65
65
 
@@ -41,6 +41,20 @@ class Chunk(BaseModel):
41
41
  text: Optional[str] = None
42
42
  """Preview of the chunk text (up to 500 characters)"""
43
43
 
44
+ word_end_index: Optional[int] = None
45
+ """Ending word index (0-based) in the OCR word list.
46
+
47
+ Use with GET /vault/:id/objects/:objectId/ocr-words to retrieve bounding boxes
48
+ for highlighting.
49
+ """
50
+
51
+ word_start_index: Optional[int] = None
52
+ """Starting word index (0-based) in the OCR word list.
53
+
54
+ Use with GET /vault/:id/objects/:objectId/ocr-words to retrieve bounding boxes
55
+ for highlighting.
56
+ """
57
+
44
58
 
45
59
  class Source(BaseModel):
46
60
  id: Optional[str] = None
@@ -29,5 +29,8 @@ class VaultUploadParams(TypedDict, total=False):
29
29
  NetDocs, Clio, or Smokeball. Example: '/Discovery/Depositions/2024'
30
30
  """
31
31
 
32
- size_bytes: Annotated[float, PropertyInfo(alias="sizeBytes")]
33
- """Estimated file size in bytes for cost calculation"""
32
+ size_bytes: Annotated[int, PropertyInfo(alias="sizeBytes")]
33
+ """File size in bytes (optional, max 500MB).
34
+
35
+ When provided, enforces exact file size at S3 level.
36
+ """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: casedev
3
- Version: 0.2.0
3
+ Version: 0.3.0
4
4
  Summary: The official Python library for the casedev API
5
5
  Project-URL: Homepage, https://github.com/CaseMark/casedev-python
6
6
  Project-URL: Repository, https://github.com/CaseMark/casedev-python
@@ -1,7 +1,7 @@
1
1
  casedev/__init__.py,sha256=UkP1XDtNpnhOcNXZjOB8ukFbVQiEL3HWo8Lj3MHGnGA,2712
2
- casedev/_base_client.py,sha256=-kMYh3MrH_hOP8Iq0vqCgEJKzqszn84hnryaB3t8rfU,73410
2
+ casedev/_base_client.py,sha256=c4CJtInJmOpQVqzv6ByfNuyRhcuxT9bqu6_l1zrRxEU,73659
3
3
  casedev/_client.py,sha256=WA2_XrWgJ49ZCj9_vGkpVjROLBvDMjHhKTf_wMwHSqs,26647
4
- casedev/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
4
+ casedev/_compat.py,sha256=teO44AYozpv2wFRrUi7brcZfGPpFSERQZ4fcdX6zVvs,6627
5
5
  casedev/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
6
6
  casedev/_exceptions.py,sha256=ogzS49IDpbF8ey4N4yHA_w9PokWYmb9myVoUBhkPXLU,3222
7
7
  casedev/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
@@ -11,11 +11,12 @@ casedev/_resource.py,sha256=sZ5sor2iGh4eKPHmeZYWJk_y65agoPfjhBe8Z9An2ho,1106
11
11
  casedev/_response.py,sha256=_rPM1FDpM6zxzSnKVNT_nskmX8VlfYmxhAGTrafX_HQ,28794
12
12
  casedev/_streaming.py,sha256=MQuBwJtKGgIm6qxaFtjOMbscXR6sHYGq6mapqmmrTvk,10225
13
13
  casedev/_types.py,sha256=hj6NhkS3QrFP768PjSj6SpOgBxmRij1T48P6VvXj-xs,7595
14
- casedev/_version.py,sha256=8aB6MhxdfvqUWLBdg_G9Gd4Cs8Tpe0oQi0_WUnjAtcI,159
14
+ casedev/_version.py,sha256=0pWmjseQolzQcqspeE7lUpB54PbIk8qtiZ-luJXZYLA,159
15
15
  casedev/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  casedev/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
17
  casedev/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
18
18
  casedev/_utils/_datetime_parse.py,sha256=bABTs0Bc6rabdFvnIwXjEhWL15TcRgWZ_6XGTqN8xUk,4204
19
+ casedev/_utils/_json.py,sha256=bl95uuIWwgSfXX-gP1trK_lDAPwJujYfJ05Cxo2SEC4,962
19
20
  casedev/_utils/_logs.py,sha256=Mjmeyz_LyK3GIXGPwZfxPpacp3DiQYiqVf8NHNNzRSY,777
20
21
  casedev/_utils/_proxy.py,sha256=aglnj2yBTDyGX9Akk2crZHrl10oqRmceUy2Zp008XEs,1975
21
22
  casedev/_utils/_reflection.py,sha256=ZmGkIgT_PuwedyNBrrKGbxoWtkpytJNU1uU4QHnmEMU,1364
@@ -45,16 +46,16 @@ casedev/resources/llm/v1/chat.py,sha256=SbP9LW7MLvKf7RV5I9plFZHGZXczlx9_O-w_HN3u
45
46
  casedev/resources/llm/v1/v1.py,sha256=2LbQjyFg2QJwG3XQ2DgE099vRR7aoi1raZWGniFjyOc,11727
46
47
  casedev/resources/ocr/__init__.py,sha256=-ZXhhOiPrQw0zdk3ke4FUiEZXXlfZPatZsiIdrUItao,911
47
48
  casedev/resources/ocr/ocr.py,sha256=t3uVFO28CLlR_4W5vw4WM91N0hdF91FOFPV02Fj3Yok,3371
48
- casedev/resources/ocr/v1.py,sha256=WuD849M9o2SuxcooxtUU22yN7jVthWxPopDLou4gvFo,14987
49
+ casedev/resources/ocr/v1.py,sha256=Tda1PVRXzGXl6Ziio9cLfBe0RPx8KAS36iVoM3Y4Kwk,14999
49
50
  casedev/resources/search/__init__.py,sha256=fUOwfF9gS0zPB9kEE_GpBvurrvdq8c669gxeQW6lvNo,950
50
51
  casedev/resources/search/search.py,sha256=1S1WK79CHZo0smp--_gOU1y7TWxVuIeqXqDDbPa71LI,3479
51
52
  casedev/resources/search/v1.py,sha256=V4kX91gAk8grdWTS2-QuysKFdIhsihJdsUjYKy3nHHE,40202
52
53
  casedev/resources/vault/__init__.py,sha256=UiqbZFscIS5enij-ZSflab26rzLKuhRCdOao3NsnB-4,1478
53
54
  casedev/resources/vault/graphrag.py,sha256=vAzXLtdAxWHma8C06zN-3fNoKFNjaaxSnz8XeZcAGiQ,9909
54
- casedev/resources/vault/objects.py,sha256=ISxksDJfnXVoWjpO65eX4Qx1Kp0UXnXHfTrZv2EaLNk,22835
55
- casedev/resources/vault/vault.py,sha256=uCdhMzz_3ejQ28Tet0J7B4nep-8HZV0240bEx9vE3yc,31484
55
+ casedev/resources/vault/objects.py,sha256=SoUHaRKyI17kKcmox3Jus1w5WZgtEXHNjBR_C_Cc-EU,23307
56
+ casedev/resources/vault/vault.py,sha256=xzupcW2jdfrMXvJYPRLm5yoi9EufOan8CXzYqCe5DkA,31598
56
57
  casedev/resources/voice/__init__.py,sha256=Ei4wMChsotUo1dJYbfuU09cdXDP2x0z0GLFOYbwlo20,1967
57
- casedev/resources/voice/streaming.py,sha256=zSEv2qc5oJaCMFc_3A8FdLLpnWqV9HUlQ8l3Ke-UR4E,5920
58
+ casedev/resources/voice/streaming.py,sha256=7-OMmYDAhICSqP9AxPJtn6-yl4cghYTW17JiuyDLIW0,5918
58
59
  casedev/resources/voice/transcription.py,sha256=zTuRpft6Iz8kg5efLOYCrrdiMPd0_6kjMyeBrp_4Scs,15425
59
60
  casedev/resources/voice/voice.py,sha256=BM4npEEHaJAqYeGcRGp-03Yw7tF95ojj1wi2dj2Ats8,5866
60
61
  casedev/resources/voice/v1/__init__.py,sha256=nr5t3Yp7f-gmiVvkmNMVCVZb5ZuvWlw1jgClkdULwR0,937
@@ -66,10 +67,10 @@ casedev/types/vault_create_params.py,sha256=Po0H_yFpRuNHl34y_GLZmhtqrY_8HgSbOGVv
66
67
  casedev/types/vault_create_response.py,sha256=LVWu46YSo6lZacDnQL5a85HOEPtmFB_k6h9JQI2A0L8,1243
67
68
  casedev/types/vault_ingest_response.py,sha256=ssu0IBZilMiBgtt_iTFee7X-fhdIr3TIrKNj_0I4sK0,985
68
69
  casedev/types/vault_list_response.py,sha256=IiSuHTgAaS9gb7ZmB1keKzfnEJnc7L_a-SiLgVz7GaA,1084
69
- casedev/types/vault_retrieve_response.py,sha256=ecqklvg43ies3Uy1iu2gfJKSRefJ5FRacDRyl5c-ujE,2433
70
+ casedev/types/vault_retrieve_response.py,sha256=1ELD9r-VDFY3WfY0bXsPtma90KkyBUMN_S2iO1BYdtw,2334
70
71
  casedev/types/vault_search_params.py,sha256=vkEuh9LbAGVbTi-_u0AlALvZzAGtBUmxyuRi1ZMtBd4,1262
71
- casedev/types/vault_search_response.py,sha256=VZ7Q-g3O8aNHDZG9hG4V4nQ9BxjSCkTsYyIPSxhqHgs,2260
72
- casedev/types/vault_upload_params.py,sha256=2mw_NQ3fPEYnUwJvBLIowvlY1xqeENGO4IgQ9A3at_A,1046
72
+ casedev/types/vault_search_response.py,sha256=gbL_dV9Cx5o5Rk-8FpPi9BZNNlPmKeAwMfRgrMRaOrs,2690
73
+ casedev/types/vault_upload_params.py,sha256=c8zn12du7ub2UyftgrX0zIN_CbZDuZO0POyG8NOnsYA,1099
73
74
  casedev/types/vault_upload_response.py,sha256=e7LABDnsx1WEJAYEuOKT7UKmSWcRbo4tXRyBTt3yLCQ,1366
74
75
  casedev/types/compute/__init__.py,sha256=mDPtXWE5ag6i6X_TUUkJCDxqkLYpA_4k8sRzgOXQnKs,269
75
76
  casedev/types/compute/v1_get_usage_params.py,sha256=vmFHZkhKxziFF0AkGpJDU8ph14nWoe7_j4WnkFL9ZVA,409
@@ -108,9 +109,9 @@ casedev/types/llm/v1/chat_create_completion_params.py,sha256=UlbE_pmBVQvIUpewiuQ
108
109
  casedev/types/llm/v1/chat_create_completion_response.py,sha256=hQSpIs5ONfW3dlCBXpbsL6WGyZzOKiCu29eCA2gEKQ4,1078
109
110
  casedev/types/ocr/__init__.py,sha256=NVGg6oXd239o-4oUDUFVRnM9GndtpfUp1zZ4h_6udOo,411
110
111
  casedev/types/ocr/v1_download_response.py,sha256=nl57ujnG3J3H8mDUHzN8JNGDJJJRaf8ZaSWJG0UwWZ0,201
111
- casedev/types/ocr/v1_process_params.py,sha256=isdvBUETWUAxTTSD7ZJYeUkU1tx7-Poa4sa4tKXk9VY,1019
112
+ casedev/types/ocr/v1_process_params.py,sha256=cuA71DhEUzlxVk57PYJOh9HbngIBJpiNKLgQ-jxm7Ec,1368
112
113
  casedev/types/ocr/v1_process_response.py,sha256=5AI-Y2x4FLJt3H4SH2ZOH8WbHhVsuQLix8ekY3iVw6A,830
113
- casedev/types/ocr/v1_retrieve_response.py,sha256=y88harLFCQAebU-oKCHYRl5F5j-VJU6H2MZBQqIP7eQ,847
114
+ casedev/types/ocr/v1_retrieve_response.py,sha256=V9auTV4JnR0LwOoXlFM15nVF0yK1cBOmhl02310e--U,796
114
115
  casedev/types/search/__init__.py,sha256=a-5bdgl3DwALQWgjDZl-MiUHqa-90pSVZEsx_fULtxE,1007
115
116
  casedev/types/search/v1_answer_params.py,sha256=YWBOC_-uhAJzMobOkdAgs6E7scQVuiaK6iDrfwkKQMY,1497
116
117
  casedev/types/search/v1_answer_response.py,sha256=fuKihwjnFRsNiUWRen-YPuAyLr5Y2kHyPXcCoIMa95M,877
@@ -127,12 +128,12 @@ casedev/types/search/v1_similar_response.py,sha256=3KGXtSzGWf_cjvD8tHc_b6ag1egzT
127
128
  casedev/types/vault/__init__.py,sha256=HgWLHKTPVN5n0X88AxMdgSVg8-P59PIwUYKdtj0p7zI,864
128
129
  casedev/types/vault/graphrag_get_stats_response.py,sha256=qmZxx2-WSrtKWtIL8fRp6sOMw1GjkNwxB_4nUy2F-nE,949
129
130
  casedev/types/vault/graphrag_init_response.py,sha256=ZY30FDJwr1Nr4Nd5F1Oesy8I0exO6nNaDXE4Ah1MwRs,366
130
- casedev/types/vault/object_create_presigned_url_params.py,sha256=9up0KwAUqcHYJdc22c567cxOSI2BEu8iAhMmtYQHtYo,748
131
+ casedev/types/vault/object_create_presigned_url_params.py,sha256=o4Sliod52FvSDlrDPk9beMAt98oAd9N3UaKhgUTxPrM,947
131
132
  casedev/types/vault/object_create_presigned_url_response.py,sha256=PKPeDMRMagIPouH6Ea0wSBUvEwZl9cx9WD4Gto1BOFk,1505
132
133
  casedev/types/vault/object_download_response.py,sha256=NYPLXDTfAyE-9MGIzqCbsBKymLH6_Ssmml1l6dPspx4,209
133
- casedev/types/vault/object_get_text_response.py,sha256=UL0j0bOnbxw_zH2NIL-mCK2RTlMPCev37R5zukoCXmM,918
134
- casedev/types/vault/object_list_response.py,sha256=hlwjH-ThgW4GCV9G1Kuh4qjRP4HJNoVhoeez6HYlf0w,2155
135
- casedev/types/vault/object_retrieve_response.py,sha256=6T0ArmApyuX9JxYfkpdo7unXaDwGs20PZv3X3KXOlyU,1844
134
+ casedev/types/vault/object_get_text_response.py,sha256=ZKoo0hwB5hIKEPY0ZWnc4U1L8x4lxvPUWljFUoYgEAY,799
135
+ casedev/types/vault/object_list_response.py,sha256=KH3U54XRXEU6b6NBfLPge1Bq1EPUhvbWBpkqLQK_F8U,1991
136
+ casedev/types/vault/object_retrieve_response.py,sha256=mWXw0kW5D6TMBEcgFqEkEzQXXkCx9hYF-gC49jXH2W4,1666
136
137
  casedev/types/voice/__init__.py,sha256=C1YkrqQ-brtL34Jx6cJZqJrkjvlEDgyhUYYEaIGQ1XQ,678
137
138
  casedev/types/voice/streaming_get_url_response.py,sha256=ta_c5AtD5OJYkIcr_2eLzUNcyDPymd7R8MUWa2Ugdws,1113
138
139
  casedev/types/voice/transcription_create_params.py,sha256=vbSbFvHQ1NcT3Qbym2Bs4nuWN3KqPc4m5rmAEVq9aTU,1578
@@ -143,7 +144,7 @@ casedev/types/voice/v1_list_voices_response.py,sha256=YkGcjnW3CX04_0hlfzS8FFxRG3
143
144
  casedev/types/voice/v1/__init__.py,sha256=P4gN9dZPnnPP_-Dr_f__1xB0TjLYhq8fAoLsCAazRyM,195
144
145
  casedev/types/voice/v1/speak_create_params.py,sha256=oaJNNzP6dsND7qoR7LcLLOeqm85B4UXdqlp9Ovqjawk,1589
145
146
  casedev/types/webhooks/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
146
- casedev-0.2.0.dist-info/METADATA,sha256=0Ckno1Wyaw68bt5ievK-5cTIz5dgRC0700JLJiA_osU,14422
147
- casedev-0.2.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
148
- casedev-0.2.0.dist-info/licenses/LICENSE,sha256=0eLaL1HjsexG41XGGtL59hixZSQ_NKv57S15pyyVUiM,11337
149
- casedev-0.2.0.dist-info/RECORD,,
147
+ casedev-0.3.0.dist-info/METADATA,sha256=P4iYA9nTSjb6beo-nZC5hdkJCgj6p2LSpwATtlWugMo,14422
148
+ casedev-0.3.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
149
+ casedev-0.3.0.dist-info/licenses/LICENSE,sha256=0eLaL1HjsexG41XGGtL59hixZSQ_NKv57S15pyyVUiM,11337
150
+ casedev-0.3.0.dist-info/RECORD,,