chunkr-ai 0.1.0a7__py3-none-any.whl → 0.1.0a9__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.
- chunkr_ai/__init__.py +3 -1
- chunkr_ai/_base_client.py +12 -12
- chunkr_ai/_client.py +8 -8
- chunkr_ai/_compat.py +48 -48
- chunkr_ai/_models.py +50 -44
- chunkr_ai/_qs.py +7 -7
- chunkr_ai/_types.py +18 -11
- chunkr_ai/_utils/__init__.py +8 -2
- chunkr_ai/_utils/_compat.py +45 -0
- chunkr_ai/_utils/_datetime_parse.py +136 -0
- chunkr_ai/_utils/_transform.py +13 -3
- chunkr_ai/_utils/_typing.py +1 -1
- chunkr_ai/_utils/_utils.py +4 -5
- chunkr_ai/_version.py +1 -1
- chunkr_ai/resources/files.py +29 -29
- chunkr_ai/resources/health.py +3 -3
- chunkr_ai/resources/tasks/extract.py +21 -37
- chunkr_ai/resources/tasks/parse.py +29 -54
- chunkr_ai/resources/tasks/tasks.py +35 -51
- chunkr_ai/resources/webhooks.py +3 -3
- chunkr_ai/types/__init__.py +0 -2
- chunkr_ai/types/extract_output_response.py +45 -2
- chunkr_ai/types/file_info.py +3 -0
- chunkr_ai/types/ocr_result.py +6 -6
- chunkr_ai/types/parse_configuration.py +0 -4
- chunkr_ai/types/parse_configuration_param.py +0 -4
- chunkr_ai/types/segment.py +8 -5
- chunkr_ai/types/segment_processing.py +92 -2
- chunkr_ai/types/segment_processing_param.py +92 -2
- chunkr_ai/types/task_get_params.py +0 -3
- chunkr_ai/types/tasks/extract_create_response.py +0 -147
- chunkr_ai/types/tasks/extract_get_params.py +0 -3
- chunkr_ai/types/tasks/extract_get_response.py +0 -147
- chunkr_ai/types/tasks/parse_create_params.py +0 -4
- chunkr_ai/types/tasks/parse_get_params.py +0 -3
- chunkr_ai/types/version_info.py +1 -1
- {chunkr_ai-0.1.0a7.dist-info → chunkr_ai-0.1.0a9.dist-info}/METADATA +1 -1
- {chunkr_ai-0.1.0a7.dist-info → chunkr_ai-0.1.0a9.dist-info}/RECORD +40 -40
- chunkr_ai/types/llm_processing.py +0 -36
- chunkr_ai/types/llm_processing_param.py +0 -36
- {chunkr_ai-0.1.0a7.dist-info → chunkr_ai-0.1.0a9.dist-info}/WHEEL +0 -0
- {chunkr_ai-0.1.0a7.dist-info → chunkr_ai-0.1.0a9.dist-info}/licenses/LICENSE +0 -0
chunkr_ai/_types.py
CHANGED
@@ -117,18 +117,21 @@ class RequestOptions(TypedDict, total=False):
|
|
117
117
|
# Sentinel class used until PEP 0661 is accepted
|
118
118
|
class NotGiven:
|
119
119
|
"""
|
120
|
-
|
121
|
-
|
120
|
+
For parameters with a meaningful None value, we need to distinguish between
|
121
|
+
the user explicitly passing None, and the user not passing the parameter at
|
122
|
+
all.
|
123
|
+
|
124
|
+
User code shouldn't need to use not_given directly.
|
122
125
|
|
123
126
|
For example:
|
124
127
|
|
125
128
|
```py
|
126
|
-
def
|
129
|
+
def create(timeout: Timeout | None | NotGiven = not_given): ...
|
127
130
|
|
128
131
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
+
create(timeout=1) # 1s timeout
|
133
|
+
create(timeout=None) # No timeout
|
134
|
+
create() # Default timeout behavior
|
132
135
|
```
|
133
136
|
"""
|
134
137
|
|
@@ -140,13 +143,14 @@ class NotGiven:
|
|
140
143
|
return "NOT_GIVEN"
|
141
144
|
|
142
145
|
|
143
|
-
|
146
|
+
not_given = NotGiven()
|
147
|
+
# for backwards compatibility:
|
144
148
|
NOT_GIVEN = NotGiven()
|
145
149
|
|
146
150
|
|
147
151
|
class Omit:
|
148
|
-
"""
|
149
|
-
|
152
|
+
"""
|
153
|
+
To explicitly omit something from being sent in a request, use `omit`.
|
150
154
|
|
151
155
|
```py
|
152
156
|
# as the default `Content-Type` header is `application/json` that will be sent
|
@@ -156,8 +160,8 @@ class Omit:
|
|
156
160
|
# to look something like: 'multipart/form-data; boundary=0d8382fcf5f8c3be01ca2e11002d2983'
|
157
161
|
client.post(..., headers={"Content-Type": "multipart/form-data"})
|
158
162
|
|
159
|
-
# instead you can remove the default `application/json` header by passing
|
160
|
-
client.post(..., headers={"Content-Type":
|
163
|
+
# instead you can remove the default `application/json` header by passing omit
|
164
|
+
client.post(..., headers={"Content-Type": omit})
|
161
165
|
```
|
162
166
|
"""
|
163
167
|
|
@@ -165,6 +169,9 @@ class Omit:
|
|
165
169
|
return False
|
166
170
|
|
167
171
|
|
172
|
+
omit = Omit()
|
173
|
+
|
174
|
+
|
168
175
|
@runtime_checkable
|
169
176
|
class ModelBuilderProtocol(Protocol):
|
170
177
|
@classmethod
|
chunkr_ai/_utils/__init__.py
CHANGED
@@ -10,7 +10,6 @@ from ._utils import (
|
|
10
10
|
lru_cache as lru_cache,
|
11
11
|
is_mapping as is_mapping,
|
12
12
|
is_tuple_t as is_tuple_t,
|
13
|
-
parse_date as parse_date,
|
14
13
|
is_iterable as is_iterable,
|
15
14
|
is_sequence as is_sequence,
|
16
15
|
coerce_float as coerce_float,
|
@@ -23,7 +22,6 @@ from ._utils import (
|
|
23
22
|
coerce_boolean as coerce_boolean,
|
24
23
|
coerce_integer as coerce_integer,
|
25
24
|
file_from_path as file_from_path,
|
26
|
-
parse_datetime as parse_datetime,
|
27
25
|
strip_not_given as strip_not_given,
|
28
26
|
deepcopy_minimal as deepcopy_minimal,
|
29
27
|
get_async_library as get_async_library,
|
@@ -32,6 +30,13 @@ from ._utils import (
|
|
32
30
|
maybe_coerce_boolean as maybe_coerce_boolean,
|
33
31
|
maybe_coerce_integer as maybe_coerce_integer,
|
34
32
|
)
|
33
|
+
from ._compat import (
|
34
|
+
get_args as get_args,
|
35
|
+
is_union as is_union,
|
36
|
+
get_origin as get_origin,
|
37
|
+
is_typeddict as is_typeddict,
|
38
|
+
is_literal_type as is_literal_type,
|
39
|
+
)
|
35
40
|
from ._typing import (
|
36
41
|
is_list_type as is_list_type,
|
37
42
|
is_union_type as is_union_type,
|
@@ -56,3 +61,4 @@ from ._reflection import (
|
|
56
61
|
function_has_argument as function_has_argument,
|
57
62
|
assert_signatures_in_sync as assert_signatures_in_sync,
|
58
63
|
)
|
64
|
+
from ._datetime_parse import parse_date as parse_date, parse_datetime as parse_datetime
|
@@ -0,0 +1,45 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import sys
|
4
|
+
import typing_extensions
|
5
|
+
from typing import Any, Type, Union, Literal, Optional
|
6
|
+
from datetime import date, datetime
|
7
|
+
from typing_extensions import get_args as _get_args, get_origin as _get_origin
|
8
|
+
|
9
|
+
from .._types import StrBytesIntFloat
|
10
|
+
from ._datetime_parse import parse_date as _parse_date, parse_datetime as _parse_datetime
|
11
|
+
|
12
|
+
_LITERAL_TYPES = {Literal, typing_extensions.Literal}
|
13
|
+
|
14
|
+
|
15
|
+
def get_args(tp: type[Any]) -> tuple[Any, ...]:
|
16
|
+
return _get_args(tp)
|
17
|
+
|
18
|
+
|
19
|
+
def get_origin(tp: type[Any]) -> type[Any] | None:
|
20
|
+
return _get_origin(tp)
|
21
|
+
|
22
|
+
|
23
|
+
def is_union(tp: Optional[Type[Any]]) -> bool:
|
24
|
+
if sys.version_info < (3, 10):
|
25
|
+
return tp is Union # type: ignore[comparison-overlap]
|
26
|
+
else:
|
27
|
+
import types
|
28
|
+
|
29
|
+
return tp is Union or tp is types.UnionType
|
30
|
+
|
31
|
+
|
32
|
+
def is_typeddict(tp: Type[Any]) -> bool:
|
33
|
+
return typing_extensions.is_typeddict(tp)
|
34
|
+
|
35
|
+
|
36
|
+
def is_literal_type(tp: Type[Any]) -> bool:
|
37
|
+
return get_origin(tp) in _LITERAL_TYPES
|
38
|
+
|
39
|
+
|
40
|
+
def parse_date(value: Union[date, StrBytesIntFloat]) -> date:
|
41
|
+
return _parse_date(value)
|
42
|
+
|
43
|
+
|
44
|
+
def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:
|
45
|
+
return _parse_datetime(value)
|
@@ -0,0 +1,136 @@
|
|
1
|
+
"""
|
2
|
+
This file contains code from https://github.com/pydantic/pydantic/blob/main/pydantic/v1/datetime_parse.py
|
3
|
+
without the Pydantic v1 specific errors.
|
4
|
+
"""
|
5
|
+
|
6
|
+
from __future__ import annotations
|
7
|
+
|
8
|
+
import re
|
9
|
+
from typing import Dict, Union, Optional
|
10
|
+
from datetime import date, datetime, timezone, timedelta
|
11
|
+
|
12
|
+
from .._types import StrBytesIntFloat
|
13
|
+
|
14
|
+
date_expr = r"(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})"
|
15
|
+
time_expr = (
|
16
|
+
r"(?P<hour>\d{1,2}):(?P<minute>\d{1,2})"
|
17
|
+
r"(?::(?P<second>\d{1,2})(?:\.(?P<microsecond>\d{1,6})\d{0,6})?)?"
|
18
|
+
r"(?P<tzinfo>Z|[+-]\d{2}(?::?\d{2})?)?$"
|
19
|
+
)
|
20
|
+
|
21
|
+
date_re = re.compile(f"{date_expr}$")
|
22
|
+
datetime_re = re.compile(f"{date_expr}[T ]{time_expr}")
|
23
|
+
|
24
|
+
|
25
|
+
EPOCH = datetime(1970, 1, 1)
|
26
|
+
# if greater than this, the number is in ms, if less than or equal it's in seconds
|
27
|
+
# (in seconds this is 11th October 2603, in ms it's 20th August 1970)
|
28
|
+
MS_WATERSHED = int(2e10)
|
29
|
+
# slightly more than datetime.max in ns - (datetime.max - EPOCH).total_seconds() * 1e9
|
30
|
+
MAX_NUMBER = int(3e20)
|
31
|
+
|
32
|
+
|
33
|
+
def _get_numeric(value: StrBytesIntFloat, native_expected_type: str) -> Union[None, int, float]:
|
34
|
+
if isinstance(value, (int, float)):
|
35
|
+
return value
|
36
|
+
try:
|
37
|
+
return float(value)
|
38
|
+
except ValueError:
|
39
|
+
return None
|
40
|
+
except TypeError:
|
41
|
+
raise TypeError(f"invalid type; expected {native_expected_type}, string, bytes, int or float") from None
|
42
|
+
|
43
|
+
|
44
|
+
def _from_unix_seconds(seconds: Union[int, float]) -> datetime:
|
45
|
+
if seconds > MAX_NUMBER:
|
46
|
+
return datetime.max
|
47
|
+
elif seconds < -MAX_NUMBER:
|
48
|
+
return datetime.min
|
49
|
+
|
50
|
+
while abs(seconds) > MS_WATERSHED:
|
51
|
+
seconds /= 1000
|
52
|
+
dt = EPOCH + timedelta(seconds=seconds)
|
53
|
+
return dt.replace(tzinfo=timezone.utc)
|
54
|
+
|
55
|
+
|
56
|
+
def _parse_timezone(value: Optional[str]) -> Union[None, int, timezone]:
|
57
|
+
if value == "Z":
|
58
|
+
return timezone.utc
|
59
|
+
elif value is not None:
|
60
|
+
offset_mins = int(value[-2:]) if len(value) > 3 else 0
|
61
|
+
offset = 60 * int(value[1:3]) + offset_mins
|
62
|
+
if value[0] == "-":
|
63
|
+
offset = -offset
|
64
|
+
return timezone(timedelta(minutes=offset))
|
65
|
+
else:
|
66
|
+
return None
|
67
|
+
|
68
|
+
|
69
|
+
def parse_datetime(value: Union[datetime, StrBytesIntFloat]) -> datetime:
|
70
|
+
"""
|
71
|
+
Parse a datetime/int/float/string and return a datetime.datetime.
|
72
|
+
|
73
|
+
This function supports time zone offsets. When the input contains one,
|
74
|
+
the output uses a timezone with a fixed offset from UTC.
|
75
|
+
|
76
|
+
Raise ValueError if the input is well formatted but not a valid datetime.
|
77
|
+
Raise ValueError if the input isn't well formatted.
|
78
|
+
"""
|
79
|
+
if isinstance(value, datetime):
|
80
|
+
return value
|
81
|
+
|
82
|
+
number = _get_numeric(value, "datetime")
|
83
|
+
if number is not None:
|
84
|
+
return _from_unix_seconds(number)
|
85
|
+
|
86
|
+
if isinstance(value, bytes):
|
87
|
+
value = value.decode()
|
88
|
+
|
89
|
+
assert not isinstance(value, (float, int))
|
90
|
+
|
91
|
+
match = datetime_re.match(value)
|
92
|
+
if match is None:
|
93
|
+
raise ValueError("invalid datetime format")
|
94
|
+
|
95
|
+
kw = match.groupdict()
|
96
|
+
if kw["microsecond"]:
|
97
|
+
kw["microsecond"] = kw["microsecond"].ljust(6, "0")
|
98
|
+
|
99
|
+
tzinfo = _parse_timezone(kw.pop("tzinfo"))
|
100
|
+
kw_: Dict[str, Union[None, int, timezone]] = {k: int(v) for k, v in kw.items() if v is not None}
|
101
|
+
kw_["tzinfo"] = tzinfo
|
102
|
+
|
103
|
+
return datetime(**kw_) # type: ignore
|
104
|
+
|
105
|
+
|
106
|
+
def parse_date(value: Union[date, StrBytesIntFloat]) -> date:
|
107
|
+
"""
|
108
|
+
Parse a date/int/float/string and return a datetime.date.
|
109
|
+
|
110
|
+
Raise ValueError if the input is well formatted but not a valid date.
|
111
|
+
Raise ValueError if the input isn't well formatted.
|
112
|
+
"""
|
113
|
+
if isinstance(value, date):
|
114
|
+
if isinstance(value, datetime):
|
115
|
+
return value.date()
|
116
|
+
else:
|
117
|
+
return value
|
118
|
+
|
119
|
+
number = _get_numeric(value, "date")
|
120
|
+
if number is not None:
|
121
|
+
return _from_unix_seconds(number).date()
|
122
|
+
|
123
|
+
if isinstance(value, bytes):
|
124
|
+
value = value.decode()
|
125
|
+
|
126
|
+
assert not isinstance(value, (float, int))
|
127
|
+
match = date_re.match(value)
|
128
|
+
if match is None:
|
129
|
+
raise ValueError("invalid date format")
|
130
|
+
|
131
|
+
kw = {k: int(v) for k, v in match.groupdict().items()}
|
132
|
+
|
133
|
+
try:
|
134
|
+
return date(**kw)
|
135
|
+
except ValueError:
|
136
|
+
raise ValueError("invalid date format") from None
|
chunkr_ai/_utils/_transform.py
CHANGED
@@ -16,18 +16,20 @@ from ._utils import (
|
|
16
16
|
lru_cache,
|
17
17
|
is_mapping,
|
18
18
|
is_iterable,
|
19
|
+
is_sequence,
|
19
20
|
)
|
20
21
|
from .._files import is_base64_file_input
|
22
|
+
from ._compat import get_origin, is_typeddict
|
21
23
|
from ._typing import (
|
22
24
|
is_list_type,
|
23
25
|
is_union_type,
|
24
26
|
extract_type_arg,
|
25
27
|
is_iterable_type,
|
26
28
|
is_required_type,
|
29
|
+
is_sequence_type,
|
27
30
|
is_annotated_type,
|
28
31
|
strip_annotated_type,
|
29
32
|
)
|
30
|
-
from .._compat import get_origin, model_dump, is_typeddict
|
31
33
|
|
32
34
|
_T = TypeVar("_T")
|
33
35
|
|
@@ -167,6 +169,8 @@ def _transform_recursive(
|
|
167
169
|
|
168
170
|
Defaults to the same value as the `annotation` argument.
|
169
171
|
"""
|
172
|
+
from .._compat import model_dump
|
173
|
+
|
170
174
|
if inner_type is None:
|
171
175
|
inner_type = annotation
|
172
176
|
|
@@ -184,6 +188,8 @@ def _transform_recursive(
|
|
184
188
|
(is_list_type(stripped_type) and is_list(data))
|
185
189
|
# Iterable[T]
|
186
190
|
or (is_iterable_type(stripped_type) and is_iterable(data) and not isinstance(data, str))
|
191
|
+
# Sequence[T]
|
192
|
+
or (is_sequence_type(stripped_type) and is_sequence(data) and not isinstance(data, str))
|
187
193
|
):
|
188
194
|
# dicts are technically iterable, but it is an iterable on the keys of the dict and is not usually
|
189
195
|
# intended as an iterable, so we don't transform it.
|
@@ -262,7 +268,7 @@ def _transform_typeddict(
|
|
262
268
|
annotations = get_type_hints(expected_type, include_extras=True)
|
263
269
|
for key, value in data.items():
|
264
270
|
if not is_given(value):
|
265
|
-
# we don't need to include
|
271
|
+
# we don't need to include omitted values here as they'll
|
266
272
|
# be stripped out before the request is sent anyway
|
267
273
|
continue
|
268
274
|
|
@@ -329,6 +335,8 @@ async def _async_transform_recursive(
|
|
329
335
|
|
330
336
|
Defaults to the same value as the `annotation` argument.
|
331
337
|
"""
|
338
|
+
from .._compat import model_dump
|
339
|
+
|
332
340
|
if inner_type is None:
|
333
341
|
inner_type = annotation
|
334
342
|
|
@@ -346,6 +354,8 @@ async def _async_transform_recursive(
|
|
346
354
|
(is_list_type(stripped_type) and is_list(data))
|
347
355
|
# Iterable[T]
|
348
356
|
or (is_iterable_type(stripped_type) and is_iterable(data) and not isinstance(data, str))
|
357
|
+
# Sequence[T]
|
358
|
+
or (is_sequence_type(stripped_type) and is_sequence(data) and not isinstance(data, str))
|
349
359
|
):
|
350
360
|
# dicts are technically iterable, but it is an iterable on the keys of the dict and is not usually
|
351
361
|
# intended as an iterable, so we don't transform it.
|
@@ -424,7 +434,7 @@ async def _async_transform_typeddict(
|
|
424
434
|
annotations = get_type_hints(expected_type, include_extras=True)
|
425
435
|
for key, value in data.items():
|
426
436
|
if not is_given(value):
|
427
|
-
# we don't need to include
|
437
|
+
# we don't need to include omitted values here as they'll
|
428
438
|
# be stripped out before the request is sent anyway
|
429
439
|
continue
|
430
440
|
|
chunkr_ai/_utils/_typing.py
CHANGED
chunkr_ai/_utils/_utils.py
CHANGED
@@ -21,8 +21,7 @@ from typing_extensions import TypeGuard
|
|
21
21
|
|
22
22
|
import sniffio
|
23
23
|
|
24
|
-
from .._types import NotGiven, FileTypes,
|
25
|
-
from .._compat import parse_date as parse_date, parse_datetime as parse_datetime
|
24
|
+
from .._types import Omit, NotGiven, FileTypes, HeadersLike
|
26
25
|
|
27
26
|
_T = TypeVar("_T")
|
28
27
|
_TupleT = TypeVar("_TupleT", bound=Tuple[object, ...])
|
@@ -64,7 +63,7 @@ def _extract_items(
|
|
64
63
|
try:
|
65
64
|
key = path[index]
|
66
65
|
except IndexError:
|
67
|
-
if
|
66
|
+
if not is_given(obj):
|
68
67
|
# no value was provided - we can safely ignore
|
69
68
|
return []
|
70
69
|
|
@@ -127,8 +126,8 @@ def _extract_items(
|
|
127
126
|
return []
|
128
127
|
|
129
128
|
|
130
|
-
def is_given(obj:
|
131
|
-
return not isinstance(obj, NotGiven)
|
129
|
+
def is_given(obj: _T | NotGiven | Omit) -> TypeGuard[_T]:
|
130
|
+
return not isinstance(obj, NotGiven) and not isinstance(obj, Omit)
|
132
131
|
|
133
132
|
|
134
133
|
# Type safe methods for narrowing types with TypeVars.
|
chunkr_ai/_version.py
CHANGED
chunkr_ai/resources/files.py
CHANGED
@@ -9,7 +9,7 @@ from typing_extensions import Literal
|
|
9
9
|
import httpx
|
10
10
|
|
11
11
|
from ..types import file_url_params, file_list_params, file_create_params
|
12
|
-
from .._types import
|
12
|
+
from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, FileTypes, omit, not_given
|
13
13
|
from .._utils import extract_files, maybe_transform, deepcopy_minimal, async_maybe_transform
|
14
14
|
from .._compat import cached_property
|
15
15
|
from .._resource import SyncAPIResource, AsyncAPIResource
|
@@ -52,13 +52,13 @@ class FilesResource(SyncAPIResource):
|
|
52
52
|
self,
|
53
53
|
*,
|
54
54
|
file: FileTypes,
|
55
|
-
file_metadata: Optional[str] |
|
55
|
+
file_metadata: Optional[str] | Omit = omit,
|
56
56
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
57
57
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
58
58
|
extra_headers: Headers | None = None,
|
59
59
|
extra_query: Query | None = None,
|
60
60
|
extra_body: Body | None = None,
|
61
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
61
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
62
62
|
idempotency_key: str | None = None,
|
63
63
|
) -> File:
|
64
64
|
"""
|
@@ -110,17 +110,17 @@ class FilesResource(SyncAPIResource):
|
|
110
110
|
def list(
|
111
111
|
self,
|
112
112
|
*,
|
113
|
-
cursor: Union[str, datetime] |
|
114
|
-
end: Union[str, datetime] |
|
115
|
-
limit: int |
|
116
|
-
sort: Literal["asc", "desc"] |
|
117
|
-
start: Union[str, datetime] |
|
113
|
+
cursor: Union[str, datetime] | Omit = omit,
|
114
|
+
end: Union[str, datetime] | Omit = omit,
|
115
|
+
limit: int | Omit = omit,
|
116
|
+
sort: Literal["asc", "desc"] | Omit = omit,
|
117
|
+
start: Union[str, datetime] | Omit = omit,
|
118
118
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
119
119
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
120
120
|
extra_headers: Headers | None = None,
|
121
121
|
extra_query: Query | None = None,
|
122
122
|
extra_body: Body | None = None,
|
123
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
123
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
124
124
|
) -> SyncFilesPage[File]:
|
125
125
|
"""
|
126
126
|
Lists files for the authenticated user with cursor-based pagination and optional
|
@@ -176,7 +176,7 @@ class FilesResource(SyncAPIResource):
|
|
176
176
|
extra_headers: Headers | None = None,
|
177
177
|
extra_query: Query | None = None,
|
178
178
|
extra_body: Body | None = None,
|
179
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
179
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
180
180
|
idempotency_key: str | None = None,
|
181
181
|
) -> Delete:
|
182
182
|
"""Delete file contents and scrub sensitive metadata.
|
@@ -218,7 +218,7 @@ class FilesResource(SyncAPIResource):
|
|
218
218
|
extra_headers: Headers | None = None,
|
219
219
|
extra_query: Query | None = None,
|
220
220
|
extra_body: Body | None = None,
|
221
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
221
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
222
222
|
) -> None:
|
223
223
|
"""Streams the file bytes directly if authorized.
|
224
224
|
|
@@ -254,7 +254,7 @@ class FilesResource(SyncAPIResource):
|
|
254
254
|
extra_headers: Headers | None = None,
|
255
255
|
extra_query: Query | None = None,
|
256
256
|
extra_body: Body | None = None,
|
257
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
257
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
258
258
|
) -> File:
|
259
259
|
"""Returns metadata for a file owned by the authenticated user.
|
260
260
|
|
@@ -288,14 +288,14 @@ class FilesResource(SyncAPIResource):
|
|
288
288
|
self,
|
289
289
|
file_id: str,
|
290
290
|
*,
|
291
|
-
base64_urls: bool |
|
292
|
-
expires_in: int |
|
291
|
+
base64_urls: bool | Omit = omit,
|
292
|
+
expires_in: int | Omit = omit,
|
293
293
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
294
294
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
295
295
|
extra_headers: Headers | None = None,
|
296
296
|
extra_query: Query | None = None,
|
297
297
|
extra_body: Body | None = None,
|
298
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
298
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
299
299
|
) -> FileURL:
|
300
300
|
"""Returns a presigned download URL by default.
|
301
301
|
|
@@ -360,13 +360,13 @@ class AsyncFilesResource(AsyncAPIResource):
|
|
360
360
|
self,
|
361
361
|
*,
|
362
362
|
file: FileTypes,
|
363
|
-
file_metadata: Optional[str] |
|
363
|
+
file_metadata: Optional[str] | Omit = omit,
|
364
364
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
365
365
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
366
366
|
extra_headers: Headers | None = None,
|
367
367
|
extra_query: Query | None = None,
|
368
368
|
extra_body: Body | None = None,
|
369
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
369
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
370
370
|
idempotency_key: str | None = None,
|
371
371
|
) -> File:
|
372
372
|
"""
|
@@ -418,17 +418,17 @@ class AsyncFilesResource(AsyncAPIResource):
|
|
418
418
|
def list(
|
419
419
|
self,
|
420
420
|
*,
|
421
|
-
cursor: Union[str, datetime] |
|
422
|
-
end: Union[str, datetime] |
|
423
|
-
limit: int |
|
424
|
-
sort: Literal["asc", "desc"] |
|
425
|
-
start: Union[str, datetime] |
|
421
|
+
cursor: Union[str, datetime] | Omit = omit,
|
422
|
+
end: Union[str, datetime] | Omit = omit,
|
423
|
+
limit: int | Omit = omit,
|
424
|
+
sort: Literal["asc", "desc"] | Omit = omit,
|
425
|
+
start: Union[str, datetime] | Omit = omit,
|
426
426
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
427
427
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
428
428
|
extra_headers: Headers | None = None,
|
429
429
|
extra_query: Query | None = None,
|
430
430
|
extra_body: Body | None = None,
|
431
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
431
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
432
432
|
) -> AsyncPaginator[File, AsyncFilesPage[File]]:
|
433
433
|
"""
|
434
434
|
Lists files for the authenticated user with cursor-based pagination and optional
|
@@ -484,7 +484,7 @@ class AsyncFilesResource(AsyncAPIResource):
|
|
484
484
|
extra_headers: Headers | None = None,
|
485
485
|
extra_query: Query | None = None,
|
486
486
|
extra_body: Body | None = None,
|
487
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
487
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
488
488
|
idempotency_key: str | None = None,
|
489
489
|
) -> Delete:
|
490
490
|
"""Delete file contents and scrub sensitive metadata.
|
@@ -526,7 +526,7 @@ class AsyncFilesResource(AsyncAPIResource):
|
|
526
526
|
extra_headers: Headers | None = None,
|
527
527
|
extra_query: Query | None = None,
|
528
528
|
extra_body: Body | None = None,
|
529
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
529
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
530
530
|
) -> None:
|
531
531
|
"""Streams the file bytes directly if authorized.
|
532
532
|
|
@@ -562,7 +562,7 @@ class AsyncFilesResource(AsyncAPIResource):
|
|
562
562
|
extra_headers: Headers | None = None,
|
563
563
|
extra_query: Query | None = None,
|
564
564
|
extra_body: Body | None = None,
|
565
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
565
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
566
566
|
) -> File:
|
567
567
|
"""Returns metadata for a file owned by the authenticated user.
|
568
568
|
|
@@ -596,14 +596,14 @@ class AsyncFilesResource(AsyncAPIResource):
|
|
596
596
|
self,
|
597
597
|
file_id: str,
|
598
598
|
*,
|
599
|
-
base64_urls: bool |
|
600
|
-
expires_in: int |
|
599
|
+
base64_urls: bool | Omit = omit,
|
600
|
+
expires_in: int | Omit = omit,
|
601
601
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
602
602
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
603
603
|
extra_headers: Headers | None = None,
|
604
604
|
extra_query: Query | None = None,
|
605
605
|
extra_body: Body | None = None,
|
606
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
606
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
607
607
|
) -> FileURL:
|
608
608
|
"""Returns a presigned download URL by default.
|
609
609
|
|
chunkr_ai/resources/health.py
CHANGED
@@ -4,7 +4,7 @@ from __future__ import annotations
|
|
4
4
|
|
5
5
|
import httpx
|
6
6
|
|
7
|
-
from .._types import
|
7
|
+
from .._types import Body, Query, Headers, NotGiven, not_given
|
8
8
|
from .._compat import cached_property
|
9
9
|
from .._resource import SyncAPIResource, AsyncAPIResource
|
10
10
|
from .._response import (
|
@@ -46,7 +46,7 @@ class HealthResource(SyncAPIResource):
|
|
46
46
|
extra_headers: Headers | None = None,
|
47
47
|
extra_query: Query | None = None,
|
48
48
|
extra_body: Body | None = None,
|
49
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
49
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
50
50
|
) -> str:
|
51
51
|
"""Confirmation that the service can respond to requests"""
|
52
52
|
extra_headers = {"Accept": "text/plain", **(extra_headers or {})}
|
@@ -87,7 +87,7 @@ class AsyncHealthResource(AsyncAPIResource):
|
|
87
87
|
extra_headers: Headers | None = None,
|
88
88
|
extra_query: Query | None = None,
|
89
89
|
extra_body: Body | None = None,
|
90
|
-
timeout: float | httpx.Timeout | None | NotGiven =
|
90
|
+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
|
91
91
|
) -> str:
|
92
92
|
"""Confirmation that the service can respond to requests"""
|
93
93
|
extra_headers = {"Accept": "text/plain", **(extra_headers or {})}
|