mixpeek 0.9.0__tar.gz → 0.10.0__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.
- mixpeek-0.10.0/.release-please-manifest.json +3 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/CHANGELOG.md +8 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/CONTRIBUTING.md +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/PKG-INFO +19 -19
- {mixpeek-0.9.0 → mixpeek-0.10.0}/README.md +18 -18
- mixpeek-0.10.0/api.md +175 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/mypy.ini +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/pyproject.toml +5 -5
- {mixpeek-0.9.0 → mixpeek-0.10.0}/release-please-config.json +1 -1
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/__init__.py +2 -2
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_base_client.py +1 -1
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_response.py +4 -6
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_types.py +1 -1
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_logs.py +2 -2
- mixpeek-0.10.0/src/mixpeek/_version.py +4 -0
- mixpeek-0.10.0/src/mixpeek_sdk/lib/.keep +4 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/accounts/test_private.py +3 -3
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/agent/test_task.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/collections/test_files.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_agent.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_collections.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_describe.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_embed.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_indexes.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_read.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_recognize.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_search.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_tasks.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/test_transcribe.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/conftest.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_client.py +22 -22
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_deepcopy.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_extract_files.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_files.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_models.py +3 -3
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_qs.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_required_args.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_response.py +7 -7
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_streaming.py +2 -2
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_transform.py +4 -4
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_utils/test_proxy.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/test_utils/test_typing.py +1 -1
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/utils.py +4 -4
- mixpeek-0.9.0/.release-please-manifest.json +0 -3
- mixpeek-0.9.0/api.md +0 -179
- mixpeek-0.9.0/src/mixpeek_sdk/_version.py +0 -4
- {mixpeek-0.9.0 → mixpeek-0.10.0}/.gitignore +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/LICENSE +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/SECURITY.md +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/bin/check-release-environment +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/bin/publish-pypi +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/examples/.keep +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/examples/example.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/noxfile.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/requirements-dev.lock +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/requirements.lock +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_client.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_compat.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_constants.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_exceptions.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_files.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_models.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_qs.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_resource.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_streaming.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_proxy.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_reflection.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_streams.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_sync.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_transform.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_typing.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/_utils/_utils.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/lib/.keep +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/py.typed +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/accounts/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/accounts/accounts.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/accounts/private.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/agent/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/agent/agent.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/agent/task.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/collections/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/collections/collections.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/collections/files.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/describe.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/embed.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/indexes.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/read.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/recognize.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/search.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/tasks.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/resources/transcribe.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/accounts/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/accounts/private_update_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/accounts/user.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/agent/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/agent_create_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/agentresponse.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collection_search_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collections/__init__.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collections/file_create_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collections/file_full_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collections/file_update_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collections/fileresponse.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/collections/groupedfiledata.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/describe_upload_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/describe_url_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/embed_create_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/embeddingresponse.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/index_face_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/index_upload_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/index_url_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/search_text_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/search_upload_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/search_url_params.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/taskresponse.py +0 -0
- {mixpeek-0.9.0/src/mixpeek_sdk → mixpeek-0.10.0/src/mixpeek}/types/transcribe_url_params.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/__init__.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/__init__.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/accounts/__init__.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/agent/__init__.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/api_resources/collections/__init__.py +0 -0
- {mixpeek-0.9.0 → mixpeek-0.10.0}/tests/sample_file.txt +0 -0
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.10.0 (2024-10-08)
|
4
|
+
|
5
|
+
Full Changelog: [v0.9.0...v0.10.0](https://github.com/mixpeek/python-client/compare/v0.9.0...v0.10.0)
|
6
|
+
|
7
|
+
### Features
|
8
|
+
|
9
|
+
* **api:** update via SDK Studio ([#13](https://github.com/mixpeek/python-client/issues/13)) ([c9b8748](https://github.com/mixpeek/python-client/commit/c9b87481c88b33e2667591a03aa73948720abd56))
|
10
|
+
|
3
11
|
## 0.9.0 (2024-10-07)
|
4
12
|
|
5
13
|
Full Changelog: [v0.8.3...v0.9.0](https://github.com/mixpeek/python-client/compare/v0.8.3...v0.9.0)
|
@@ -37,7 +37,7 @@ $ pip install -r requirements-dev.lock
|
|
37
37
|
|
38
38
|
Most of the SDK is generated code. Modifications to code will be persisted between generations, but may
|
39
39
|
result in merge conflicts between manual patches and changes from the generator. The generator will never
|
40
|
-
modify the contents of the `src/
|
40
|
+
modify the contents of the `src/mixpeek/lib/` and `examples/` directories.
|
41
41
|
|
42
42
|
## Adding and running examples
|
43
43
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: mixpeek
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.10.0
|
4
4
|
Summary: The official Python library for the mixpeek-sdk API
|
5
5
|
Project-URL: Homepage, https://github.com/mixpeek/python-client
|
6
6
|
Project-URL: Repository, https://github.com/mixpeek/python-client
|
@@ -58,7 +58,7 @@ pip install mixpeek
|
|
58
58
|
The full API of this library can be found in [api.md](https://github.com/mixpeek/python-client/tree/main/api.md).
|
59
59
|
|
60
60
|
```python
|
61
|
-
from
|
61
|
+
from mixpeek import MixpeekSDK
|
62
62
|
|
63
63
|
client = MixpeekSDK()
|
64
64
|
|
@@ -74,7 +74,7 @@ Simply import `AsyncMixpeekSDK` instead of `MixpeekSDK` and use `await` with eac
|
|
74
74
|
|
75
75
|
```python
|
76
76
|
import asyncio
|
77
|
-
from
|
77
|
+
from mixpeek import AsyncMixpeekSDK
|
78
78
|
|
79
79
|
client = AsyncMixpeekSDK()
|
80
80
|
|
@@ -102,16 +102,16 @@ Typed requests and responses provide autocomplete and documentation within your
|
|
102
102
|
|
103
103
|
## Handling errors
|
104
104
|
|
105
|
-
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `
|
105
|
+
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `mixpeek.APIConnectionError` is raised.
|
106
106
|
|
107
107
|
When the API returns a non-success status code (that is, 4xx or 5xx
|
108
|
-
response), a subclass of `
|
108
|
+
response), a subclass of `mixpeek.APIStatusError` is raised, containing `status_code` and `response` properties.
|
109
109
|
|
110
|
-
All errors inherit from `
|
110
|
+
All errors inherit from `mixpeek.APIError`.
|
111
111
|
|
112
112
|
```python
|
113
|
-
import
|
114
|
-
from
|
113
|
+
import mixpeek
|
114
|
+
from mixpeek import MixpeekSDK
|
115
115
|
|
116
116
|
client = MixpeekSDK()
|
117
117
|
|
@@ -119,12 +119,12 @@ try:
|
|
119
119
|
client.agent.create(
|
120
120
|
prompt="prompt",
|
121
121
|
)
|
122
|
-
except
|
122
|
+
except mixpeek.APIConnectionError as e:
|
123
123
|
print("The server could not be reached")
|
124
124
|
print(e.__cause__) # an underlying Exception, likely raised within httpx.
|
125
|
-
except
|
125
|
+
except mixpeek.RateLimitError as e:
|
126
126
|
print("A 429 status code was received; we should back off a bit.")
|
127
|
-
except
|
127
|
+
except mixpeek.APIStatusError as e:
|
128
128
|
print("Another non-200-range status code was received")
|
129
129
|
print(e.status_code)
|
130
130
|
print(e.response)
|
@@ -152,7 +152,7 @@ Connection errors (for example, due to a network connectivity problem), 408 Requ
|
|
152
152
|
You can use the `max_retries` option to configure or disable retry settings:
|
153
153
|
|
154
154
|
```python
|
155
|
-
from
|
155
|
+
from mixpeek import MixpeekSDK
|
156
156
|
|
157
157
|
# Configure the default for all requests:
|
158
158
|
client = MixpeekSDK(
|
@@ -172,7 +172,7 @@ By default requests time out after 1 minute. You can configure this with a `time
|
|
172
172
|
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
|
173
173
|
|
174
174
|
```python
|
175
|
-
from
|
175
|
+
from mixpeek import MixpeekSDK
|
176
176
|
|
177
177
|
# Configure the default for all requests:
|
178
178
|
client = MixpeekSDK(
|
@@ -224,7 +224,7 @@ if response.my_field is None:
|
|
224
224
|
The "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,
|
225
225
|
|
226
226
|
```py
|
227
|
-
from
|
227
|
+
from mixpeek import MixpeekSDK
|
228
228
|
|
229
229
|
client = MixpeekSDK()
|
230
230
|
response = client.agent.with_raw_response.create(
|
@@ -236,9 +236,9 @@ agent = response.parse() # get the object that `agent.create()` would have retu
|
|
236
236
|
print(agent.task_id)
|
237
237
|
```
|
238
238
|
|
239
|
-
These methods return an [`APIResponse`](https://github.com/mixpeek/python-client/tree/main/src/
|
239
|
+
These methods return an [`APIResponse`](https://github.com/mixpeek/python-client/tree/main/src/mixpeek/_response.py) object.
|
240
240
|
|
241
|
-
The async client returns an [`AsyncAPIResponse`](https://github.com/mixpeek/python-client/tree/main/src/
|
241
|
+
The async client returns an [`AsyncAPIResponse`](https://github.com/mixpeek/python-client/tree/main/src/mixpeek/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
|
242
242
|
|
243
243
|
#### `.with_streaming_response`
|
244
244
|
|
@@ -302,7 +302,7 @@ You can directly override the [httpx client](https://www.python-httpx.org/api/#c
|
|
302
302
|
- Additional [advanced](https://www.python-httpx.org/advanced/clients/) functionality
|
303
303
|
|
304
304
|
```python
|
305
|
-
from
|
305
|
+
from mixpeek import MixpeekSDK, DefaultHttpxClient
|
306
306
|
|
307
307
|
client = MixpeekSDK(
|
308
308
|
# Or use the `MIXPEEK_SDK_BASE_URL` env var
|
@@ -343,8 +343,8 @@ If you've upgraded to the latest version but aren't seeing any new features you
|
|
343
343
|
You can determine the version that is being used at runtime with:
|
344
344
|
|
345
345
|
```py
|
346
|
-
import
|
347
|
-
print(
|
346
|
+
import mixpeek
|
347
|
+
print(mixpeek.__version__)
|
348
348
|
```
|
349
349
|
|
350
350
|
## Requirements
|
@@ -24,7 +24,7 @@ pip install mixpeek
|
|
24
24
|
The full API of this library can be found in [api.md](api.md).
|
25
25
|
|
26
26
|
```python
|
27
|
-
from
|
27
|
+
from mixpeek import MixpeekSDK
|
28
28
|
|
29
29
|
client = MixpeekSDK()
|
30
30
|
|
@@ -40,7 +40,7 @@ Simply import `AsyncMixpeekSDK` instead of `MixpeekSDK` and use `await` with eac
|
|
40
40
|
|
41
41
|
```python
|
42
42
|
import asyncio
|
43
|
-
from
|
43
|
+
from mixpeek import AsyncMixpeekSDK
|
44
44
|
|
45
45
|
client = AsyncMixpeekSDK()
|
46
46
|
|
@@ -68,16 +68,16 @@ Typed requests and responses provide autocomplete and documentation within your
|
|
68
68
|
|
69
69
|
## Handling errors
|
70
70
|
|
71
|
-
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `
|
71
|
+
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `mixpeek.APIConnectionError` is raised.
|
72
72
|
|
73
73
|
When the API returns a non-success status code (that is, 4xx or 5xx
|
74
|
-
response), a subclass of `
|
74
|
+
response), a subclass of `mixpeek.APIStatusError` is raised, containing `status_code` and `response` properties.
|
75
75
|
|
76
|
-
All errors inherit from `
|
76
|
+
All errors inherit from `mixpeek.APIError`.
|
77
77
|
|
78
78
|
```python
|
79
|
-
import
|
80
|
-
from
|
79
|
+
import mixpeek
|
80
|
+
from mixpeek import MixpeekSDK
|
81
81
|
|
82
82
|
client = MixpeekSDK()
|
83
83
|
|
@@ -85,12 +85,12 @@ try:
|
|
85
85
|
client.agent.create(
|
86
86
|
prompt="prompt",
|
87
87
|
)
|
88
|
-
except
|
88
|
+
except mixpeek.APIConnectionError as e:
|
89
89
|
print("The server could not be reached")
|
90
90
|
print(e.__cause__) # an underlying Exception, likely raised within httpx.
|
91
|
-
except
|
91
|
+
except mixpeek.RateLimitError as e:
|
92
92
|
print("A 429 status code was received; we should back off a bit.")
|
93
|
-
except
|
93
|
+
except mixpeek.APIStatusError as e:
|
94
94
|
print("Another non-200-range status code was received")
|
95
95
|
print(e.status_code)
|
96
96
|
print(e.response)
|
@@ -118,7 +118,7 @@ Connection errors (for example, due to a network connectivity problem), 408 Requ
|
|
118
118
|
You can use the `max_retries` option to configure or disable retry settings:
|
119
119
|
|
120
120
|
```python
|
121
|
-
from
|
121
|
+
from mixpeek import MixpeekSDK
|
122
122
|
|
123
123
|
# Configure the default for all requests:
|
124
124
|
client = MixpeekSDK(
|
@@ -138,7 +138,7 @@ By default requests time out after 1 minute. You can configure this with a `time
|
|
138
138
|
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
|
139
139
|
|
140
140
|
```python
|
141
|
-
from
|
141
|
+
from mixpeek import MixpeekSDK
|
142
142
|
|
143
143
|
# Configure the default for all requests:
|
144
144
|
client = MixpeekSDK(
|
@@ -190,7 +190,7 @@ if response.my_field is None:
|
|
190
190
|
The "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,
|
191
191
|
|
192
192
|
```py
|
193
|
-
from
|
193
|
+
from mixpeek import MixpeekSDK
|
194
194
|
|
195
195
|
client = MixpeekSDK()
|
196
196
|
response = client.agent.with_raw_response.create(
|
@@ -202,9 +202,9 @@ agent = response.parse() # get the object that `agent.create()` would have retu
|
|
202
202
|
print(agent.task_id)
|
203
203
|
```
|
204
204
|
|
205
|
-
These methods return an [`APIResponse`](https://github.com/mixpeek/python-client/tree/main/src/
|
205
|
+
These methods return an [`APIResponse`](https://github.com/mixpeek/python-client/tree/main/src/mixpeek/_response.py) object.
|
206
206
|
|
207
|
-
The async client returns an [`AsyncAPIResponse`](https://github.com/mixpeek/python-client/tree/main/src/
|
207
|
+
The async client returns an [`AsyncAPIResponse`](https://github.com/mixpeek/python-client/tree/main/src/mixpeek/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
|
208
208
|
|
209
209
|
#### `.with_streaming_response`
|
210
210
|
|
@@ -268,7 +268,7 @@ You can directly override the [httpx client](https://www.python-httpx.org/api/#c
|
|
268
268
|
- Additional [advanced](https://www.python-httpx.org/advanced/clients/) functionality
|
269
269
|
|
270
270
|
```python
|
271
|
-
from
|
271
|
+
from mixpeek import MixpeekSDK, DefaultHttpxClient
|
272
272
|
|
273
273
|
client = MixpeekSDK(
|
274
274
|
# Or use the `MIXPEEK_SDK_BASE_URL` env var
|
@@ -309,8 +309,8 @@ If you've upgraded to the latest version but aren't seeing any new features you
|
|
309
309
|
You can determine the version that is being used at runtime with:
|
310
310
|
|
311
311
|
```py
|
312
|
-
import
|
313
|
-
print(
|
312
|
+
import mixpeek
|
313
|
+
print(mixpeek.__version__)
|
314
314
|
```
|
315
315
|
|
316
316
|
## Requirements
|
mixpeek-0.10.0/api.md
ADDED
@@ -0,0 +1,175 @@
|
|
1
|
+
# Accounts
|
2
|
+
|
3
|
+
## Private
|
4
|
+
|
5
|
+
Types:
|
6
|
+
|
7
|
+
```python
|
8
|
+
from mixpeek.types.accounts import User
|
9
|
+
```
|
10
|
+
|
11
|
+
Methods:
|
12
|
+
|
13
|
+
- <code title="put /accounts/private/">client.accounts.private.<a href="./src/mixpeek/resources/accounts/private.py">update</a>(\*\*<a href="src/mixpeek/types/accounts/private_update_params.py">params</a>) -> <a href="./src/mixpeek/types/accounts/user.py">User</a></code>
|
14
|
+
- <code title="get /accounts/private/">client.accounts.private.<a href="./src/mixpeek/resources/accounts/private.py">list</a>() -> <a href="./src/mixpeek/types/accounts/user.py">User</a></code>
|
15
|
+
|
16
|
+
# Describe
|
17
|
+
|
18
|
+
Types:
|
19
|
+
|
20
|
+
```python
|
21
|
+
from mixpeek.types import DescribeUploadResponse, DescribeURLResponse
|
22
|
+
```
|
23
|
+
|
24
|
+
Methods:
|
25
|
+
|
26
|
+
- <code title="post /describe/upload">client.describe.<a href="./src/mixpeek/resources/describe.py">upload</a>(\*\*<a href="src/mixpeek/types/describe_upload_params.py">params</a>) -> <a href="./src/mixpeek/types/describe_upload_response.py">object</a></code>
|
27
|
+
- <code title="post /describe/url">client.describe.<a href="./src/mixpeek/resources/describe.py">url</a>(\*\*<a href="src/mixpeek/types/describe_url_params.py">params</a>) -> <a href="./src/mixpeek/types/describe_url_response.py">object</a></code>
|
28
|
+
|
29
|
+
# Embed
|
30
|
+
|
31
|
+
Types:
|
32
|
+
|
33
|
+
```python
|
34
|
+
from mixpeek.types import Embeddingresponse
|
35
|
+
```
|
36
|
+
|
37
|
+
Methods:
|
38
|
+
|
39
|
+
- <code title="post /embed/">client.embed.<a href="./src/mixpeek/resources/embed.py">create</a>(\*\*<a href="src/mixpeek/types/embed_create_params.py">params</a>) -> <a href="./src/mixpeek/types/embeddingresponse.py">Embeddingresponse</a></code>
|
40
|
+
|
41
|
+
# Transcribe
|
42
|
+
|
43
|
+
Types:
|
44
|
+
|
45
|
+
```python
|
46
|
+
from mixpeek.types import TranscribeURLResponse
|
47
|
+
```
|
48
|
+
|
49
|
+
Methods:
|
50
|
+
|
51
|
+
- <code title="post /transcribe/url">client.transcribe.<a href="./src/mixpeek/resources/transcribe.py">url</a>(\*\*<a href="src/mixpeek/types/transcribe_url_params.py">params</a>) -> <a href="./src/mixpeek/types/transcribe_url_response.py">object</a></code>
|
52
|
+
|
53
|
+
# Read
|
54
|
+
|
55
|
+
Types:
|
56
|
+
|
57
|
+
```python
|
58
|
+
from mixpeek.types import ReadCreateResponse
|
59
|
+
```
|
60
|
+
|
61
|
+
Methods:
|
62
|
+
|
63
|
+
- <code title="post /read/">client.read.<a href="./src/mixpeek/resources/read.py">create</a>() -> <a href="./src/mixpeek/types/read_create_response.py">object</a></code>
|
64
|
+
|
65
|
+
# Recognize
|
66
|
+
|
67
|
+
Types:
|
68
|
+
|
69
|
+
```python
|
70
|
+
from mixpeek.types import RecognizeCreateResponse
|
71
|
+
```
|
72
|
+
|
73
|
+
Methods:
|
74
|
+
|
75
|
+
- <code title="post /recognize/">client.recognize.<a href="./src/mixpeek/resources/recognize.py">create</a>() -> <a href="./src/mixpeek/types/recognize_create_response.py">object</a></code>
|
76
|
+
|
77
|
+
# Agent
|
78
|
+
|
79
|
+
Types:
|
80
|
+
|
81
|
+
```python
|
82
|
+
from mixpeek.types import Agentresponse
|
83
|
+
```
|
84
|
+
|
85
|
+
Methods:
|
86
|
+
|
87
|
+
- <code title="post /agent/">client.agent.<a href="./src/mixpeek/resources/agent/agent.py">create</a>(\*\*<a href="src/mixpeek/types/agent_create_params.py">params</a>) -> <a href="./src/mixpeek/types/agentresponse.py">Agentresponse</a></code>
|
88
|
+
|
89
|
+
## Task
|
90
|
+
|
91
|
+
Types:
|
92
|
+
|
93
|
+
```python
|
94
|
+
from mixpeek.types.agent import TaskRetrieveResponse
|
95
|
+
```
|
96
|
+
|
97
|
+
Methods:
|
98
|
+
|
99
|
+
- <code title="get /agent/{task_id}">client.agent.task.<a href="./src/mixpeek/resources/agent/task.py">retrieve</a>(task_id) -> <a href="./src/mixpeek/types/agent/task_retrieve_response.py">object</a></code>
|
100
|
+
|
101
|
+
# Indexes
|
102
|
+
|
103
|
+
Types:
|
104
|
+
|
105
|
+
```python
|
106
|
+
from mixpeek.types import IndexFaceResponse, IndexUploadResponse, IndexURLResponse
|
107
|
+
```
|
108
|
+
|
109
|
+
Methods:
|
110
|
+
|
111
|
+
- <code title="post /index/face">client.indexes.<a href="./src/mixpeek/resources/indexes.py">face</a>(\*\*<a href="src/mixpeek/types/index_face_params.py">params</a>) -> <a href="./src/mixpeek/types/index_face_response.py">object</a></code>
|
112
|
+
- <code title="post /index/upload">client.indexes.<a href="./src/mixpeek/resources/indexes.py">upload</a>(\*\*<a href="src/mixpeek/types/index_upload_params.py">params</a>) -> <a href="./src/mixpeek/types/index_upload_response.py">object</a></code>
|
113
|
+
- <code title="post /index/url">client.indexes.<a href="./src/mixpeek/resources/indexes.py">url</a>(\*\*<a href="src/mixpeek/types/index_url_params.py">params</a>) -> <a href="./src/mixpeek/types/index_url_response.py">object</a></code>
|
114
|
+
|
115
|
+
# Search
|
116
|
+
|
117
|
+
Types:
|
118
|
+
|
119
|
+
```python
|
120
|
+
from mixpeek.types import SearchTextResponse, SearchUploadResponse, SearchURLResponse
|
121
|
+
```
|
122
|
+
|
123
|
+
Methods:
|
124
|
+
|
125
|
+
- <code title="post /search/text">client.search.<a href="./src/mixpeek/resources/search.py">text</a>(\*\*<a href="src/mixpeek/types/search_text_params.py">params</a>) -> <a href="./src/mixpeek/types/search_text_response.py">object</a></code>
|
126
|
+
- <code title="post /search/upload">client.search.<a href="./src/mixpeek/resources/search.py">upload</a>(\*\*<a href="src/mixpeek/types/search_upload_params.py">params</a>) -> <a href="./src/mixpeek/types/search_upload_response.py">object</a></code>
|
127
|
+
- <code title="post /search/url">client.search.<a href="./src/mixpeek/resources/search.py">url</a>(\*\*<a href="src/mixpeek/types/search_url_params.py">params</a>) -> <a href="./src/mixpeek/types/search_url_response.py">object</a></code>
|
128
|
+
|
129
|
+
# Collections
|
130
|
+
|
131
|
+
Types:
|
132
|
+
|
133
|
+
```python
|
134
|
+
from mixpeek.types import CollectionListResponse, CollectionDeleteResponse, CollectionSearchResponse
|
135
|
+
```
|
136
|
+
|
137
|
+
Methods:
|
138
|
+
|
139
|
+
- <code title="get /collections/">client.collections.<a href="./src/mixpeek/resources/collections/collections.py">list</a>() -> <a href="./src/mixpeek/types/collection_list_response.py">object</a></code>
|
140
|
+
- <code title="delete /collections/{collection_id}">client.collections.<a href="./src/mixpeek/resources/collections/collections.py">delete</a>(collection_id) -> <a href="./src/mixpeek/types/collection_delete_response.py">object</a></code>
|
141
|
+
- <code title="post /collections/search">client.collections.<a href="./src/mixpeek/resources/collections/collections.py">search</a>(\*\*<a href="src/mixpeek/types/collection_search_params.py">params</a>) -> <a href="./src/mixpeek/types/collection_search_response.py">object</a></code>
|
142
|
+
|
143
|
+
## Files
|
144
|
+
|
145
|
+
Types:
|
146
|
+
|
147
|
+
```python
|
148
|
+
from mixpeek.types.collections import (
|
149
|
+
Fileresponse,
|
150
|
+
Groupedfiledata,
|
151
|
+
FileCreateResponse,
|
152
|
+
FileDeleteResponse,
|
153
|
+
)
|
154
|
+
```
|
155
|
+
|
156
|
+
Methods:
|
157
|
+
|
158
|
+
- <code title="post /collections/files">client.collections.files.<a href="./src/mixpeek/resources/collections/files.py">create</a>(\*\*<a href="src/mixpeek/types/collections/file_create_params.py">params</a>) -> <a href="./src/mixpeek/types/collections/file_create_response.py">object</a></code>
|
159
|
+
- <code title="get /collections/file/{file_id}">client.collections.files.<a href="./src/mixpeek/resources/collections/files.py">retrieve</a>(file_id) -> <a href="./src/mixpeek/types/collections/fileresponse.py">Fileresponse</a></code>
|
160
|
+
- <code title="put /collections/file/{file_id}">client.collections.files.<a href="./src/mixpeek/resources/collections/files.py">update</a>(file_id, \*\*<a href="src/mixpeek/types/collections/file_update_params.py">params</a>) -> <a href="./src/mixpeek/types/collections/fileresponse.py">Fileresponse</a></code>
|
161
|
+
- <code title="delete /collections/file/{file_id}">client.collections.files.<a href="./src/mixpeek/resources/collections/files.py">delete</a>(file_id) -> <a href="./src/mixpeek/types/collections/file_delete_response.py">object</a></code>
|
162
|
+
- <code title="get /collections/file/{file_id}/full">client.collections.files.<a href="./src/mixpeek/resources/collections/files.py">full</a>(file_id, \*\*<a href="src/mixpeek/types/collections/file_full_params.py">params</a>) -> <a href="./src/mixpeek/types/collections/groupedfiledata.py">Groupedfiledata</a></code>
|
163
|
+
|
164
|
+
# Tasks
|
165
|
+
|
166
|
+
Types:
|
167
|
+
|
168
|
+
```python
|
169
|
+
from mixpeek.types import Taskresponse, TaskDeleteResponse
|
170
|
+
```
|
171
|
+
|
172
|
+
Methods:
|
173
|
+
|
174
|
+
- <code title="get /tasks/{task_id}">client.tasks.<a href="./src/mixpeek/resources/tasks.py">retrieve</a>(task_id) -> <a href="./src/mixpeek/types/taskresponse.py">Taskresponse</a></code>
|
175
|
+
- <code title="delete /tasks/{task_id}">client.tasks.<a href="./src/mixpeek/resources/tasks.py">delete</a>(task_id) -> <a href="./src/mixpeek/types/task_delete_response.py">object</a></code>
|
@@ -5,7 +5,7 @@ show_error_codes = True
|
|
5
5
|
# Exclude _files.py because mypy isn't smart enough to apply
|
6
6
|
# the correct type narrowing and as this is an internal module
|
7
7
|
# it's fine to just use Pyright.
|
8
|
-
exclude = ^(src/
|
8
|
+
exclude = ^(src/mixpeek/_files\.py|_dev/.*\.py)$
|
9
9
|
|
10
10
|
strict_equality = True
|
11
11
|
implicit_reexport = True
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[project]
|
2
2
|
name = "mixpeek"
|
3
|
-
version = "0.
|
3
|
+
version = "0.10.0"
|
4
4
|
description = "The official Python library for the mixpeek-sdk API"
|
5
5
|
dynamic = ["readme"]
|
6
6
|
license = "Apache-2.0"
|
@@ -77,14 +77,14 @@ format = { chain = [
|
|
77
77
|
"check:ruff" = "ruff check ."
|
78
78
|
"fix:ruff" = "ruff check --fix ."
|
79
79
|
|
80
|
-
"check:importable" = "python -c 'import
|
80
|
+
"check:importable" = "python -c 'import mixpeek'"
|
81
81
|
|
82
82
|
typecheck = { chain = [
|
83
83
|
"typecheck:pyright",
|
84
84
|
"typecheck:mypy"
|
85
85
|
]}
|
86
86
|
"typecheck:pyright" = "pyright"
|
87
|
-
"typecheck:verify-types" = "pyright --verifytypes
|
87
|
+
"typecheck:verify-types" = "pyright --verifytypes mixpeek --ignoreexternal"
|
88
88
|
"typecheck:mypy" = "mypy ."
|
89
89
|
|
90
90
|
[build-system]
|
@@ -97,7 +97,7 @@ include = [
|
|
97
97
|
]
|
98
98
|
|
99
99
|
[tool.hatch.build.targets.wheel]
|
100
|
-
packages = ["src/
|
100
|
+
packages = ["src/mixpeek"]
|
101
101
|
|
102
102
|
[tool.hatch.build.targets.sdist]
|
103
103
|
# Basically everything except hidden files/directories (such as .github, .devcontainers, .python-version, etc)
|
@@ -203,7 +203,7 @@ length-sort = true
|
|
203
203
|
length-sort-straight = true
|
204
204
|
combine-as-imports = true
|
205
205
|
extra-standard-library = ["typing_extensions"]
|
206
|
-
known-first-party = ["
|
206
|
+
known-first-party = ["mixpeek", "tests"]
|
207
207
|
|
208
208
|
[tool.ruff.lint.per-file-ignores]
|
209
209
|
"bin/**.py" = ["T201", "T203"]
|
@@ -82,12 +82,12 @@ _setup_logging()
|
|
82
82
|
# Update the __module__ attribute for exported symbols so that
|
83
83
|
# error messages point to this module instead of the module
|
84
84
|
# it was originally defined in, e.g.
|
85
|
-
#
|
85
|
+
# mixpeek._exceptions.NotFoundError -> mixpeek.NotFoundError
|
86
86
|
__locals = locals()
|
87
87
|
for __name in __all__:
|
88
88
|
if not __name.startswith("__"):
|
89
89
|
try:
|
90
|
-
__locals[__name].__module__ = "
|
90
|
+
__locals[__name].__module__ = "mixpeek"
|
91
91
|
except (TypeError, AttributeError):
|
92
92
|
# Some of our exported symbols are builtins which we can't set attributes for.
|
93
93
|
pass
|
@@ -367,7 +367,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
367
367
|
|
368
368
|
if max_retries is None: # pyright: ignore[reportUnnecessaryComparison]
|
369
369
|
raise TypeError(
|
370
|
-
"max_retries cannot be None. If you want to disable retries, pass `0`; if you want unlimited retries, pass `math.inf` or a very high number; if you want the default behavior, pass `
|
370
|
+
"max_retries cannot be None. If you want to disable retries, pass `0`; if you want unlimited retries, pass `math.inf` or a very high number; if you want the default behavior, pass `mixpeek.DEFAULT_MAX_RETRIES`"
|
371
371
|
)
|
372
372
|
|
373
373
|
def _enforce_trailing_slash(self, url: URL) -> URL:
|
@@ -211,9 +211,7 @@ class BaseAPIResponse(Generic[R]):
|
|
211
211
|
return cast(R, response)
|
212
212
|
|
213
213
|
if inspect.isclass(origin) and not issubclass(origin, BaseModel) and issubclass(origin, pydantic.BaseModel):
|
214
|
-
raise TypeError(
|
215
|
-
"Pydantic models must subclass our base model type, e.g. `from mixpeek_sdk import BaseModel`"
|
216
|
-
)
|
214
|
+
raise TypeError("Pydantic models must subclass our base model type, e.g. `from mixpeek import BaseModel`")
|
217
215
|
|
218
216
|
if (
|
219
217
|
cast_to is not object
|
@@ -279,7 +277,7 @@ class APIResponse(BaseAPIResponse[R]):
|
|
279
277
|
the `to` argument, e.g.
|
280
278
|
|
281
279
|
```py
|
282
|
-
from
|
280
|
+
from mixpeek import BaseModel
|
283
281
|
|
284
282
|
|
285
283
|
class MyModel(BaseModel):
|
@@ -381,7 +379,7 @@ class AsyncAPIResponse(BaseAPIResponse[R]):
|
|
381
379
|
the `to` argument, e.g.
|
382
380
|
|
383
381
|
```py
|
384
|
-
from
|
382
|
+
from mixpeek import BaseModel
|
385
383
|
|
386
384
|
|
387
385
|
class MyModel(BaseModel):
|
@@ -552,7 +550,7 @@ class AsyncStreamedBinaryAPIResponse(AsyncAPIResponse[bytes]):
|
|
552
550
|
class MissingStreamClassError(TypeError):
|
553
551
|
def __init__(self) -> None:
|
554
552
|
super().__init__(
|
555
|
-
"The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `
|
553
|
+
"The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `mixpeek._streaming` for reference",
|
556
554
|
)
|
557
555
|
|
558
556
|
|
@@ -81,7 +81,7 @@ HttpxRequestFiles = Union[Mapping[str, HttpxFileTypes], Sequence[Tuple[str, Http
|
|
81
81
|
# This unfortunately means that you will either have
|
82
82
|
# to import this type and pass it explicitly:
|
83
83
|
#
|
84
|
-
# from
|
84
|
+
# from mixpeek import NoneType
|
85
85
|
# client.get('/foo', cast_to=NoneType)
|
86
86
|
#
|
87
87
|
# or build it yourself:
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import os
|
2
2
|
import logging
|
3
3
|
|
4
|
-
logger: logging.Logger = logging.getLogger("
|
4
|
+
logger: logging.Logger = logging.getLogger("mixpeek")
|
5
5
|
httpx_logger: logging.Logger = logging.getLogger("httpx")
|
6
6
|
|
7
7
|
|
8
8
|
def _basic_config() -> None:
|
9
|
-
# e.g. [2023-10-05 14:12:26 -
|
9
|
+
# e.g. [2023-10-05 14:12:26 - mixpeek._base_client:818 - DEBUG] HTTP Request: POST http://127.0.0.1:4010/foo/bar "200 OK"
|
10
10
|
logging.basicConfig(
|
11
11
|
format="[%(asctime)s - %(name)s:%(lineno)d - %(levelname)s] %(message)s",
|
12
12
|
datefmt="%Y-%m-%d %H:%M:%S",
|
@@ -7,10 +7,10 @@ from typing import Any, cast
|
|
7
7
|
|
8
8
|
import pytest
|
9
9
|
|
10
|
-
from
|
10
|
+
from mixpeek import MixpeekSDK, AsyncMixpeekSDK
|
11
11
|
from tests.utils import assert_matches_type
|
12
|
-
from
|
13
|
-
from
|
12
|
+
from mixpeek._utils import parse_datetime
|
13
|
+
from mixpeek.types.accounts import User
|
14
14
|
|
15
15
|
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
16
16
|
|
@@ -7,7 +7,7 @@ from typing import Any, cast
|
|
7
7
|
|
8
8
|
import pytest
|
9
9
|
|
10
|
-
from
|
10
|
+
from mixpeek import MixpeekSDK, AsyncMixpeekSDK
|
11
11
|
from tests.utils import assert_matches_type
|
12
12
|
|
13
13
|
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
@@ -7,9 +7,9 @@ from typing import Any, cast
|
|
7
7
|
|
8
8
|
import pytest
|
9
9
|
|
10
|
-
from
|
10
|
+
from mixpeek import MixpeekSDK, AsyncMixpeekSDK
|
11
11
|
from tests.utils import assert_matches_type
|
12
|
-
from
|
12
|
+
from mixpeek.types.collections import (
|
13
13
|
Fileresponse,
|
14
14
|
Groupedfiledata,
|
15
15
|
)
|
@@ -7,9 +7,9 @@ from typing import Any, cast
|
|
7
7
|
|
8
8
|
import pytest
|
9
9
|
|
10
|
-
from
|
10
|
+
from mixpeek import MixpeekSDK, AsyncMixpeekSDK
|
11
11
|
from tests.utils import assert_matches_type
|
12
|
-
from
|
12
|
+
from mixpeek.types import Agentresponse
|
13
13
|
|
14
14
|
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
|
15
15
|
|