scale-gp-beta 0.1.0a2__py3-none-any.whl → 0.1.0a3__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.
- {scale_gp → scale_gp_beta}/__init__.py +2 -2
- {scale_gp → scale_gp_beta}/_base_client.py +9 -3
- {scale_gp → scale_gp_beta}/_client.py +1 -1
- {scale_gp → scale_gp_beta}/_files.py +1 -1
- {scale_gp → scale_gp_beta}/_response.py +6 -4
- {scale_gp → scale_gp_beta}/_types.py +1 -1
- {scale_gp → scale_gp_beta}/_utils/_logs.py +2 -2
- {scale_gp → scale_gp_beta}/_version.py +2 -2
- {scale_gp → scale_gp_beta}/resources/models.py +24 -2
- {scale_gp → scale_gp_beta}/types/inference_model.py +3 -3
- {scale_gp → scale_gp_beta}/types/model_list_params.py +14 -1
- {scale_gp_beta-0.1.0a2.dist-info → scale_gp_beta-0.1.0a3.dist-info}/METADATA +121 -27
- scale_gp_beta-0.1.0a3.dist-info/RECORD +78 -0
- {scale_gp_beta-0.1.0a2.dist-info → scale_gp_beta-0.1.0a3.dist-info}/licenses/LICENSE +1 -1
- scale_gp_beta-0.1.0a2.dist-info/RECORD +0 -78
- {scale_gp → scale_gp_beta}/_compat.py +0 -0
- {scale_gp → scale_gp_beta}/_constants.py +0 -0
- {scale_gp → scale_gp_beta}/_exceptions.py +0 -0
- {scale_gp → scale_gp_beta}/_models.py +0 -0
- {scale_gp → scale_gp_beta}/_qs.py +0 -0
- {scale_gp → scale_gp_beta}/_resource.py +0 -0
- {scale_gp → scale_gp_beta}/_streaming.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_proxy.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_reflection.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_streams.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_sync.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_transform.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_typing.py +0 -0
- {scale_gp → scale_gp_beta}/_utils/_utils.py +0 -0
- {scale_gp → scale_gp_beta}/lib/.keep +0 -0
- {scale_gp → scale_gp_beta}/pagination.py +0 -0
- {scale_gp → scale_gp_beta}/py.typed +0 -0
- {scale_gp → scale_gp_beta}/resources/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/resources/chat/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/resources/chat/chat.py +0 -0
- {scale_gp → scale_gp_beta}/resources/chat/completions.py +0 -0
- {scale_gp → scale_gp_beta}/resources/completions.py +0 -0
- {scale_gp → scale_gp_beta}/resources/files/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/resources/files/content.py +0 -0
- {scale_gp → scale_gp_beta}/resources/files/files.py +0 -0
- {scale_gp → scale_gp_beta}/resources/inference.py +0 -0
- {scale_gp → scale_gp_beta}/resources/question_sets.py +0 -0
- {scale_gp → scale_gp_beta}/resources/questions.py +0 -0
- {scale_gp → scale_gp_beta}/types/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/types/chat/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/types/chat/chat_completion.py +0 -0
- {scale_gp → scale_gp_beta}/types/chat/chat_completion_chunk.py +0 -0
- {scale_gp → scale_gp_beta}/types/chat/completion_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/chat/completion_create_response.py +0 -0
- {scale_gp → scale_gp_beta}/types/completion.py +0 -0
- {scale_gp → scale_gp_beta}/types/completion_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/file.py +0 -0
- {scale_gp → scale_gp_beta}/types/file_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/file_delete_response.py +0 -0
- {scale_gp → scale_gp_beta}/types/file_list.py +0 -0
- {scale_gp → scale_gp_beta}/types/file_list_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/file_update_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/files/__init__.py +0 -0
- {scale_gp → scale_gp_beta}/types/inference_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/inference_create_response.py +0 -0
- {scale_gp → scale_gp_beta}/types/inference_model_list.py +0 -0
- {scale_gp → scale_gp_beta}/types/inference_response.py +0 -0
- {scale_gp → scale_gp_beta}/types/inference_response_chunk.py +0 -0
- {scale_gp → scale_gp_beta}/types/model_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/model_delete_response.py +0 -0
- {scale_gp → scale_gp_beta}/types/model_update_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/question.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_list.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_list_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set_create_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set_delete_response.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set_list.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set_list_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set_retrieve_params.py +0 -0
- {scale_gp → scale_gp_beta}/types/question_set_update_params.py +0 -0
- {scale_gp_beta-0.1.0a2.dist-info → scale_gp_beta-0.1.0a3.dist-info}/WHEEL +0 -0
|
@@ -85,12 +85,12 @@ _setup_logging()
|
|
|
85
85
|
# Update the __module__ attribute for exported symbols so that
|
|
86
86
|
# error messages point to this module instead of the module
|
|
87
87
|
# it was originally defined in, e.g.
|
|
88
|
-
#
|
|
88
|
+
# scale_gp_beta._exceptions.NotFoundError -> scale_gp_beta.NotFoundError
|
|
89
89
|
__locals = locals()
|
|
90
90
|
for __name in __all__:
|
|
91
91
|
if not __name.startswith("__"):
|
|
92
92
|
try:
|
|
93
|
-
__locals[__name].__module__ = "
|
|
93
|
+
__locals[__name].__module__ = "scale_gp_beta"
|
|
94
94
|
except (TypeError, AttributeError):
|
|
95
95
|
# Some of our exported symbols are builtins which we can't set attributes for.
|
|
96
96
|
pass
|
|
@@ -63,7 +63,7 @@ from ._types import (
|
|
|
63
63
|
ModelBuilderProtocol,
|
|
64
64
|
)
|
|
65
65
|
from ._utils import is_dict, is_list, asyncify, is_given, lru_cache, is_mapping
|
|
66
|
-
from ._compat import model_copy, model_dump
|
|
66
|
+
from ._compat import PYDANTIC_V2, model_copy, model_dump
|
|
67
67
|
from ._models import GenericModel, FinalRequestOptions, validate_type, construct_type
|
|
68
68
|
from ._response import (
|
|
69
69
|
APIResponse,
|
|
@@ -207,6 +207,9 @@ class BaseSyncPage(BasePage[_T], Generic[_T]):
|
|
|
207
207
|
model: Type[_T],
|
|
208
208
|
options: FinalRequestOptions,
|
|
209
209
|
) -> None:
|
|
210
|
+
if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
|
|
211
|
+
self.__pydantic_private__ = {}
|
|
212
|
+
|
|
210
213
|
self._model = model
|
|
211
214
|
self._client = client
|
|
212
215
|
self._options = options
|
|
@@ -292,6 +295,9 @@ class BaseAsyncPage(BasePage[_T], Generic[_T]):
|
|
|
292
295
|
client: AsyncAPIClient,
|
|
293
296
|
options: FinalRequestOptions,
|
|
294
297
|
) -> None:
|
|
298
|
+
if PYDANTIC_V2 and getattr(self, "__pydantic_private__", None) is None:
|
|
299
|
+
self.__pydantic_private__ = {}
|
|
300
|
+
|
|
295
301
|
self._model = model
|
|
296
302
|
self._client = client
|
|
297
303
|
self._options = options
|
|
@@ -367,7 +373,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
367
373
|
|
|
368
374
|
if max_retries is None: # pyright: ignore[reportUnnecessaryComparison]
|
|
369
375
|
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 `
|
|
376
|
+
"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 `scale_gp_beta.DEFAULT_MAX_RETRIES`"
|
|
371
377
|
)
|
|
372
378
|
|
|
373
379
|
def _enforce_trailing_slash(self, url: URL) -> URL:
|
|
@@ -518,7 +524,7 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
|
|
|
518
524
|
# so that passing a `TypedDict` doesn't cause an error.
|
|
519
525
|
# https://github.com/microsoft/pyright/issues/3526#event-6715453066
|
|
520
526
|
params=self.qs.stringify(cast(Mapping[str, Any], params)) if params else None,
|
|
521
|
-
json=json_data,
|
|
527
|
+
json=json_data if is_given(json_data) else None,
|
|
522
528
|
files=files,
|
|
523
529
|
**kwargs,
|
|
524
530
|
)
|
|
@@ -316,7 +316,7 @@ class AsyncSGPClient(AsyncAPIClient):
|
|
|
316
316
|
# part of our public interface in the future.
|
|
317
317
|
_strict_response_validation: bool = False,
|
|
318
318
|
) -> None:
|
|
319
|
-
"""Construct a new async
|
|
319
|
+
"""Construct a new async AsyncSGPClient client instance.
|
|
320
320
|
|
|
321
321
|
This automatically infers the following arguments from their corresponding environment variables if they are not provided:
|
|
322
322
|
- `api_key` from `SGP_API_KEY`
|
|
@@ -34,7 +34,7 @@ def assert_is_file_content(obj: object, *, key: str | None = None) -> None:
|
|
|
34
34
|
if not is_file_content(obj):
|
|
35
35
|
prefix = f"Expected entry at `{key}`" if key is not None else f"Expected file input `{obj!r}`"
|
|
36
36
|
raise RuntimeError(
|
|
37
|
-
f"{prefix} to be bytes, an io.IOBase instance, PathLike or a tuple but received {type(obj)} instead."
|
|
37
|
+
f"{prefix} to be bytes, an io.IOBase instance, PathLike or a tuple but received {type(obj)} instead. See https://github.com/scaleapi/sgp-python-beta/tree/main#file-uploads"
|
|
38
38
|
) from None
|
|
39
39
|
|
|
40
40
|
|
|
@@ -217,7 +217,9 @@ class BaseAPIResponse(Generic[R]):
|
|
|
217
217
|
and not issubclass(origin, BaseModel)
|
|
218
218
|
and issubclass(origin, pydantic.BaseModel)
|
|
219
219
|
):
|
|
220
|
-
raise TypeError(
|
|
220
|
+
raise TypeError(
|
|
221
|
+
"Pydantic models must subclass our base model type, e.g. `from scale_gp_beta import BaseModel`"
|
|
222
|
+
)
|
|
221
223
|
|
|
222
224
|
if (
|
|
223
225
|
cast_to is not object
|
|
@@ -283,7 +285,7 @@ class APIResponse(BaseAPIResponse[R]):
|
|
|
283
285
|
the `to` argument, e.g.
|
|
284
286
|
|
|
285
287
|
```py
|
|
286
|
-
from
|
|
288
|
+
from scale_gp_beta import BaseModel
|
|
287
289
|
|
|
288
290
|
|
|
289
291
|
class MyModel(BaseModel):
|
|
@@ -385,7 +387,7 @@ class AsyncAPIResponse(BaseAPIResponse[R]):
|
|
|
385
387
|
the `to` argument, e.g.
|
|
386
388
|
|
|
387
389
|
```py
|
|
388
|
-
from
|
|
390
|
+
from scale_gp_beta import BaseModel
|
|
389
391
|
|
|
390
392
|
|
|
391
393
|
class MyModel(BaseModel):
|
|
@@ -556,7 +558,7 @@ class AsyncStreamedBinaryAPIResponse(AsyncAPIResponse[bytes]):
|
|
|
556
558
|
class MissingStreamClassError(TypeError):
|
|
557
559
|
def __init__(self) -> None:
|
|
558
560
|
super().__init__(
|
|
559
|
-
"The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `
|
|
561
|
+
"The `stream` argument was set to `True` but the `stream_cls` argument was not given. See `scale_gp_beta._streaming` for reference",
|
|
560
562
|
)
|
|
561
563
|
|
|
562
564
|
|
|
@@ -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 scale_gp_beta 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("scale_gp_beta")
|
|
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 - scale_gp_beta._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",
|
|
@@ -310,7 +310,18 @@ class ModelsResource(SyncAPIResource):
|
|
|
310
310
|
ending_before: Optional[str] | NotGiven = NOT_GIVEN,
|
|
311
311
|
limit: int | NotGiven = NOT_GIVEN,
|
|
312
312
|
model_vendor: Optional[
|
|
313
|
-
Literal[
|
|
313
|
+
Literal[
|
|
314
|
+
"openai",
|
|
315
|
+
"cohere",
|
|
316
|
+
"vertex_ai",
|
|
317
|
+
"anthropic",
|
|
318
|
+
"azure",
|
|
319
|
+
"gemini",
|
|
320
|
+
"launch",
|
|
321
|
+
"llmengine",
|
|
322
|
+
"model_zoo",
|
|
323
|
+
"bedrock",
|
|
324
|
+
]
|
|
314
325
|
]
|
|
315
326
|
| NotGiven = NOT_GIVEN,
|
|
316
327
|
name: Optional[str] | NotGiven = NOT_GIVEN,
|
|
@@ -670,7 +681,18 @@ class AsyncModelsResource(AsyncAPIResource):
|
|
|
670
681
|
ending_before: Optional[str] | NotGiven = NOT_GIVEN,
|
|
671
682
|
limit: int | NotGiven = NOT_GIVEN,
|
|
672
683
|
model_vendor: Optional[
|
|
673
|
-
Literal[
|
|
684
|
+
Literal[
|
|
685
|
+
"openai",
|
|
686
|
+
"cohere",
|
|
687
|
+
"vertex_ai",
|
|
688
|
+
"anthropic",
|
|
689
|
+
"azure",
|
|
690
|
+
"gemini",
|
|
691
|
+
"launch",
|
|
692
|
+
"llmengine",
|
|
693
|
+
"model_zoo",
|
|
694
|
+
"bedrock",
|
|
695
|
+
]
|
|
674
696
|
]
|
|
675
697
|
| NotGiven = NOT_GIVEN,
|
|
676
698
|
name: Optional[str] | NotGiven = NOT_GIVEN,
|
|
@@ -152,9 +152,9 @@ class InferenceModel(BaseModel):
|
|
|
152
152
|
|
|
153
153
|
api_model_type: Literal["generic", "completion", "chat_completion"] = FieldInfo(alias="model_type")
|
|
154
154
|
|
|
155
|
-
api_model_vendor: Literal[
|
|
156
|
-
|
|
157
|
-
)
|
|
155
|
+
api_model_vendor: Literal[
|
|
156
|
+
"openai", "cohere", "vertex_ai", "anthropic", "azure", "gemini", "launch", "llmengine", "model_zoo", "bedrock"
|
|
157
|
+
] = FieldInfo(alias="model_vendor")
|
|
158
158
|
|
|
159
159
|
name: str
|
|
160
160
|
|
|
@@ -13,7 +13,20 @@ class ModelListParams(TypedDict, total=False):
|
|
|
13
13
|
|
|
14
14
|
limit: int
|
|
15
15
|
|
|
16
|
-
model_vendor: Optional[
|
|
16
|
+
model_vendor: Optional[
|
|
17
|
+
Literal[
|
|
18
|
+
"openai",
|
|
19
|
+
"cohere",
|
|
20
|
+
"vertex_ai",
|
|
21
|
+
"anthropic",
|
|
22
|
+
"azure",
|
|
23
|
+
"gemini",
|
|
24
|
+
"launch",
|
|
25
|
+
"llmengine",
|
|
26
|
+
"model_zoo",
|
|
27
|
+
"bedrock",
|
|
28
|
+
]
|
|
29
|
+
]
|
|
17
30
|
|
|
18
31
|
name: Optional[str]
|
|
19
32
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scale-gp-beta
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary: The official Python library for the
|
|
3
|
+
Version: 0.1.0a3
|
|
4
|
+
Summary: The official Python library for the Scale GP API
|
|
5
5
|
Project-URL: Homepage, https://github.com/scaleapi/sgp-python-beta
|
|
6
6
|
Project-URL: Repository, https://github.com/scaleapi/sgp-python-beta
|
|
7
|
-
Author-email:
|
|
7
|
+
Author-email: Scale GP <anish.agrawal@scale.com>
|
|
8
8
|
License-Expression: Apache-2.0
|
|
9
9
|
License-File: LICENSE
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
@@ -30,15 +30,15 @@ Requires-Dist: sniffio
|
|
|
30
30
|
Requires-Dist: typing-extensions<5,>=4.10
|
|
31
31
|
Description-Content-Type: text/markdown
|
|
32
32
|
|
|
33
|
-
#
|
|
33
|
+
# Scale GP Python API library
|
|
34
34
|
|
|
35
35
|
[](https://pypi.org/project/scale-gp-beta/)
|
|
36
36
|
|
|
37
|
-
The
|
|
37
|
+
The Scale GP Python library provides convenient access to the Scale GP REST API from any Python 3.8+
|
|
38
38
|
application. The library includes type definitions for all request params and response fields,
|
|
39
39
|
and offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
40
40
|
|
|
41
|
-
It is generated with [Stainless](https://www.
|
|
41
|
+
It is generated with [Stainless](https://www.stainless.com/).
|
|
42
42
|
|
|
43
43
|
## Documentation
|
|
44
44
|
|
|
@@ -57,7 +57,7 @@ The full API of this library can be found in [api.md](https://github.com/scaleap
|
|
|
57
57
|
|
|
58
58
|
```python
|
|
59
59
|
import os
|
|
60
|
-
from
|
|
60
|
+
from scale_gp_beta import SGPClient
|
|
61
61
|
|
|
62
62
|
client = SGPClient(
|
|
63
63
|
api_key=os.environ.get("SGP_API_KEY"), # This is the default and can be omitted
|
|
@@ -85,7 +85,7 @@ Simply import `AsyncSGPClient` instead of `SGPClient` and use `await` with each
|
|
|
85
85
|
```python
|
|
86
86
|
import os
|
|
87
87
|
import asyncio
|
|
88
|
-
from
|
|
88
|
+
from scale_gp_beta import AsyncSGPClient
|
|
89
89
|
|
|
90
90
|
client = AsyncSGPClient(
|
|
91
91
|
api_key=os.environ.get("SGP_API_KEY"), # This is the default and can be omitted
|
|
@@ -113,7 +113,7 @@ Functionality between the synchronous and asynchronous clients is otherwise iden
|
|
|
113
113
|
We provide support for streaming responses using Server Side Events (SSE).
|
|
114
114
|
|
|
115
115
|
```python
|
|
116
|
-
from
|
|
116
|
+
from scale_gp_beta import SGPClient
|
|
117
117
|
|
|
118
118
|
client = SGPClient(
|
|
119
119
|
account_id="My Account ID",
|
|
@@ -131,7 +131,7 @@ for completion in stream:
|
|
|
131
131
|
The async client uses the exact same interface.
|
|
132
132
|
|
|
133
133
|
```python
|
|
134
|
-
from
|
|
134
|
+
from scale_gp_beta import AsyncSGPClient
|
|
135
135
|
|
|
136
136
|
client = AsyncSGPClient(
|
|
137
137
|
account_id="My Account ID",
|
|
@@ -155,18 +155,112 @@ Nested request parameters are [TypedDicts](https://docs.python.org/3/library/typ
|
|
|
155
155
|
|
|
156
156
|
Typed requests and responses provide autocomplete and documentation within your editor. If you would like to see type errors in VS Code to help catch bugs earlier, set `python.analysis.typeCheckingMode` to `basic`.
|
|
157
157
|
|
|
158
|
+
## Pagination
|
|
159
|
+
|
|
160
|
+
List methods in the Scale GP API are paginated.
|
|
161
|
+
|
|
162
|
+
This library provides auto-paginating iterators with each list response, so you do not have to request successive pages manually:
|
|
163
|
+
|
|
164
|
+
```python
|
|
165
|
+
from scale_gp_beta import SGPClient
|
|
166
|
+
|
|
167
|
+
client = SGPClient(
|
|
168
|
+
account_id="My Account ID",
|
|
169
|
+
)
|
|
170
|
+
|
|
171
|
+
all_models = []
|
|
172
|
+
# Automatically fetches more pages as needed.
|
|
173
|
+
for model in client.models.list(
|
|
174
|
+
limit=10,
|
|
175
|
+
):
|
|
176
|
+
# Do something with model here
|
|
177
|
+
all_models.append(model)
|
|
178
|
+
print(all_models)
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Or, asynchronously:
|
|
182
|
+
|
|
183
|
+
```python
|
|
184
|
+
import asyncio
|
|
185
|
+
from scale_gp_beta import AsyncSGPClient
|
|
186
|
+
|
|
187
|
+
client = AsyncSGPClient(
|
|
188
|
+
account_id="My Account ID",
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
async def main() -> None:
|
|
193
|
+
all_models = []
|
|
194
|
+
# Iterate through items across all pages, issuing requests as needed.
|
|
195
|
+
async for model in client.models.list(
|
|
196
|
+
limit=10,
|
|
197
|
+
):
|
|
198
|
+
all_models.append(model)
|
|
199
|
+
print(all_models)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
asyncio.run(main())
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
Alternatively, you can use the `.has_next_page()`, `.next_page_info()`, or `.get_next_page()` methods for more granular control working with pages:
|
|
206
|
+
|
|
207
|
+
```python
|
|
208
|
+
first_page = await client.models.list(
|
|
209
|
+
limit=10,
|
|
210
|
+
)
|
|
211
|
+
if first_page.has_next_page():
|
|
212
|
+
print(f"will fetch next page using these details: {first_page.next_page_info()}")
|
|
213
|
+
next_page = await first_page.get_next_page()
|
|
214
|
+
print(f"number of items we just fetched: {len(next_page.items)}")
|
|
215
|
+
|
|
216
|
+
# Remove `await` for non-async usage.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Or just work directly with the returned data:
|
|
220
|
+
|
|
221
|
+
```python
|
|
222
|
+
first_page = await client.models.list(
|
|
223
|
+
limit=10,
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
print(f"next page cursor: {first_page.starting_after}") # => "next page cursor: ..."
|
|
227
|
+
for model in first_page.items:
|
|
228
|
+
print(model.id)
|
|
229
|
+
|
|
230
|
+
# Remove `await` for non-async usage.
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## File uploads
|
|
234
|
+
|
|
235
|
+
Request parameters that correspond to file uploads can be passed as `bytes`, a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance or a tuple of `(filename, contents, media type)`.
|
|
236
|
+
|
|
237
|
+
```python
|
|
238
|
+
from pathlib import Path
|
|
239
|
+
from scale_gp_beta import SGPClient
|
|
240
|
+
|
|
241
|
+
client = SGPClient(
|
|
242
|
+
account_id="My Account ID",
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
client.files.create(
|
|
246
|
+
file=Path("/path/to/file"),
|
|
247
|
+
)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The async client uses the exact same interface. If you pass a [`PathLike`](https://docs.python.org/3/library/os.html#os.PathLike) instance, the file contents will be read asynchronously automatically.
|
|
251
|
+
|
|
158
252
|
## Handling errors
|
|
159
253
|
|
|
160
|
-
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `
|
|
254
|
+
When the library is unable to connect to the API (for example, due to network connection problems or a timeout), a subclass of `scale_gp_beta.APIConnectionError` is raised.
|
|
161
255
|
|
|
162
256
|
When the API returns a non-success status code (that is, 4xx or 5xx
|
|
163
|
-
response), a subclass of `
|
|
257
|
+
response), a subclass of `scale_gp_beta.APIStatusError` is raised, containing `status_code` and `response` properties.
|
|
164
258
|
|
|
165
|
-
All errors inherit from `
|
|
259
|
+
All errors inherit from `scale_gp_beta.APIError`.
|
|
166
260
|
|
|
167
261
|
```python
|
|
168
|
-
import
|
|
169
|
-
from
|
|
262
|
+
import scale_gp_beta
|
|
263
|
+
from scale_gp_beta import SGPClient
|
|
170
264
|
|
|
171
265
|
client = SGPClient(
|
|
172
266
|
account_id="My Account ID",
|
|
@@ -177,12 +271,12 @@ try:
|
|
|
177
271
|
messages=[{"foo": "bar"}],
|
|
178
272
|
model="model",
|
|
179
273
|
)
|
|
180
|
-
except
|
|
274
|
+
except scale_gp_beta.APIConnectionError as e:
|
|
181
275
|
print("The server could not be reached")
|
|
182
276
|
print(e.__cause__) # an underlying Exception, likely raised within httpx.
|
|
183
|
-
except
|
|
277
|
+
except scale_gp_beta.RateLimitError as e:
|
|
184
278
|
print("A 429 status code was received; we should back off a bit.")
|
|
185
|
-
except
|
|
279
|
+
except scale_gp_beta.APIStatusError as e:
|
|
186
280
|
print("Another non-200-range status code was received")
|
|
187
281
|
print(e.status_code)
|
|
188
282
|
print(e.response)
|
|
@@ -210,7 +304,7 @@ Connection errors (for example, due to a network connectivity problem), 408 Requ
|
|
|
210
304
|
You can use the `max_retries` option to configure or disable retry settings:
|
|
211
305
|
|
|
212
306
|
```python
|
|
213
|
-
from
|
|
307
|
+
from scale_gp_beta import SGPClient
|
|
214
308
|
|
|
215
309
|
# Configure the default for all requests:
|
|
216
310
|
client = SGPClient(
|
|
@@ -232,7 +326,7 @@ By default requests time out after 1 minute. You can configure this with a `time
|
|
|
232
326
|
which accepts a float or an [`httpx.Timeout`](https://www.python-httpx.org/advanced/#fine-tuning-the-configuration) object:
|
|
233
327
|
|
|
234
328
|
```python
|
|
235
|
-
from
|
|
329
|
+
from scale_gp_beta import SGPClient
|
|
236
330
|
|
|
237
331
|
# Configure the default for all requests:
|
|
238
332
|
client = SGPClient(
|
|
@@ -289,7 +383,7 @@ if response.my_field is None:
|
|
|
289
383
|
The "raw" Response object can be accessed by prefixing `.with_raw_response.` to any HTTP method call, e.g.,
|
|
290
384
|
|
|
291
385
|
```py
|
|
292
|
-
from
|
|
386
|
+
from scale_gp_beta import SGPClient
|
|
293
387
|
|
|
294
388
|
client = SGPClient(
|
|
295
389
|
account_id="My Account ID",
|
|
@@ -306,9 +400,9 @@ completion = response.parse() # get the object that `chat.completions.create()`
|
|
|
306
400
|
print(completion)
|
|
307
401
|
```
|
|
308
402
|
|
|
309
|
-
These methods return an [`APIResponse`](https://github.com/scaleapi/sgp-python-beta/tree/main/src/
|
|
403
|
+
These methods return an [`APIResponse`](https://github.com/scaleapi/sgp-python-beta/tree/main/src/scale_gp_beta/_response.py) object.
|
|
310
404
|
|
|
311
|
-
The async client returns an [`AsyncAPIResponse`](https://github.com/scaleapi/sgp-python-beta/tree/main/src/
|
|
405
|
+
The async client returns an [`AsyncAPIResponse`](https://github.com/scaleapi/sgp-python-beta/tree/main/src/scale_gp_beta/_response.py) with the same structure, the only difference being `await`able methods for reading the response content.
|
|
312
406
|
|
|
313
407
|
#### `.with_streaming_response`
|
|
314
408
|
|
|
@@ -373,7 +467,7 @@ You can directly override the [httpx client](https://www.python-httpx.org/api/#c
|
|
|
373
467
|
|
|
374
468
|
```python
|
|
375
469
|
import httpx
|
|
376
|
-
from
|
|
470
|
+
from scale_gp_beta import SGPClient, DefaultHttpxClient
|
|
377
471
|
|
|
378
472
|
client = SGPClient(
|
|
379
473
|
# Or use the `SGP_CLIENT_BASE_URL` env var
|
|
@@ -397,7 +491,7 @@ client.with_options(http_client=DefaultHttpxClient(...))
|
|
|
397
491
|
By default the library closes underlying HTTP connections whenever the client is [garbage collected](https://docs.python.org/3/reference/datamodel.html#object.__del__). You can manually close the client using the `.close()` method if desired, or with a context manager that closes when exiting.
|
|
398
492
|
|
|
399
493
|
```py
|
|
400
|
-
from
|
|
494
|
+
from scale_gp_beta import SGPClient
|
|
401
495
|
|
|
402
496
|
with SGPClient(
|
|
403
497
|
account_id="My Account ID",
|
|
@@ -427,8 +521,8 @@ If you've upgraded to the latest version but aren't seeing any new features you
|
|
|
427
521
|
You can determine the version that is being used at runtime with:
|
|
428
522
|
|
|
429
523
|
```py
|
|
430
|
-
import
|
|
431
|
-
print(
|
|
524
|
+
import scale_gp_beta
|
|
525
|
+
print(scale_gp_beta.__version__)
|
|
432
526
|
```
|
|
433
527
|
|
|
434
528
|
## Requirements
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
scale_gp_beta/__init__.py,sha256=XmzYbUteZA7f7EPIFNKcPSnSgFpK6ovSlHY57Xk-WGo,2535
|
|
2
|
+
scale_gp_beta/_base_client.py,sha256=XywO2zsh9naBp27ciYQ9dnVlKNnbT78e0NTahJjHuQM,68828
|
|
3
|
+
scale_gp_beta/_client.py,sha256=rinNhn5BrX9jC9AGxAs24SzyiwABd6sxoeRZGjONB6E,22601
|
|
4
|
+
scale_gp_beta/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
|
|
5
|
+
scale_gp_beta/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
|
|
6
|
+
scale_gp_beta/_exceptions.py,sha256=95GM5CLFtP-QMjjmzsr5ajjZOyEZvyaETfGmqNPR8YM,3226
|
|
7
|
+
scale_gp_beta/_files.py,sha256=VHiUi-XDLm5MK8EbVoB2TdgX3jbYshIfxYLeKv5jaYI,3620
|
|
8
|
+
scale_gp_beta/_models.py,sha256=PDLSNsn3Umxm3UMZPgyBiyN308rRzzPX6F9NO9FU2vs,28943
|
|
9
|
+
scale_gp_beta/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
|
|
10
|
+
scale_gp_beta/_resource.py,sha256=siZly_U6D0AOVLAzaOsqUdEFFzVMbWRj-ml30nvRp7E,1118
|
|
11
|
+
scale_gp_beta/_response.py,sha256=ATtij8CjXVjmhdOWozU9Y0SP4Q_uxCYGFUHroxFnSc4,28853
|
|
12
|
+
scale_gp_beta/_streaming.py,sha256=fcCSGXslmi2SmmkM05g2SACXHk2Mj7k1X5uMBu6U5s8,10112
|
|
13
|
+
scale_gp_beta/_types.py,sha256=ScQhVBaKbtJrER3NkXbjokWE9DqSqREMIw9LE0NrFfA,6150
|
|
14
|
+
scale_gp_beta/_version.py,sha256=SAWEqx7GO7myKZFHvn03A7-rs3HAk6yDJFaqWHkShh8,173
|
|
15
|
+
scale_gp_beta/pagination.py,sha256=6AAa8_V0wARlMd1MIXijugYbG1mILGc2tHVKbUQbZyQ,2595
|
|
16
|
+
scale_gp_beta/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
scale_gp_beta/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
|
18
|
+
scale_gp_beta/_utils/_logs.py,sha256=e6Q2f2qmGe638ty50AXbwcPVlwCdTtXDzybw3eSWwGU,792
|
|
19
|
+
scale_gp_beta/_utils/_proxy.py,sha256=z3zsateHtb0EARTWKk8QZNHfPkqJbqwd1lM993LBwGE,1902
|
|
20
|
+
scale_gp_beta/_utils/_reflection.py,sha256=ZmGkIgT_PuwedyNBrrKGbxoWtkpytJNU1uU4QHnmEMU,1364
|
|
21
|
+
scale_gp_beta/_utils/_streams.py,sha256=SMC90diFFecpEg_zgDRVbdR3hSEIgVVij4taD-noMLM,289
|
|
22
|
+
scale_gp_beta/_utils/_sync.py,sha256=TpGLrrhRNWTJtODNE6Fup3_k7zrWm1j2RlirzBwre-0,2862
|
|
23
|
+
scale_gp_beta/_utils/_transform.py,sha256=tsSFOIZ7iczaUsMSGBD_iSFOOdUyT2xtkcq1xyF0L9o,13986
|
|
24
|
+
scale_gp_beta/_utils/_typing.py,sha256=nTJz0jcrQbEgxwy4TtAkNxuU0QHHlmc6mQtA6vIR8tg,4501
|
|
25
|
+
scale_gp_beta/_utils/_utils.py,sha256=8UmbPOy_AAr2uUjjFui-VZSrVBHRj6bfNEKRp5YZP2A,12004
|
|
26
|
+
scale_gp_beta/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
|
27
|
+
scale_gp_beta/resources/__init__.py,sha256=CLsKitqMWj9CtyeCVAgOBuguN9NpztGeICZbOYO1qlg,3435
|
|
28
|
+
scale_gp_beta/resources/completions.py,sha256=dk7Uvl8dnnieRWTJr2fhzJMZwOzGIjsYSw2GjaMWlCs,31653
|
|
29
|
+
scale_gp_beta/resources/inference.py,sha256=_20eN0x0PZBPNLx2VrozQrJgRVjtlXPjeTpTcnuP0bU,7576
|
|
30
|
+
scale_gp_beta/resources/models.py,sha256=VgRZ6WP1PEGUVgkZdM09G_QTC7gGRfYFVwJp63jbSPg,32612
|
|
31
|
+
scale_gp_beta/resources/question_sets.py,sha256=X9eGII0Nh2jP7PTU86wLB6Blj0QIvYMJWUJm0D76QIU,25923
|
|
32
|
+
scale_gp_beta/resources/questions.py,sha256=XP-PJoGyGTIlNkCMhmBAUbHp2m4yT81ofBnVds4o0Jg,14835
|
|
33
|
+
scale_gp_beta/resources/chat/__init__.py,sha256=BVAfz9TM3DT5W9f_mt0P9YRxL_MsUxKCWAH6u1iogmA,1041
|
|
34
|
+
scale_gp_beta/resources/chat/chat.py,sha256=4OG_TrwVqYvV-7Ha8Nbc6iuXQuys9wKXgkxYmE6p6jk,3672
|
|
35
|
+
scale_gp_beta/resources/chat/completions.py,sha256=NlowDMqoS2OAme1LzcYecxiIz9-DTRtscTU-iNycpWg,47067
|
|
36
|
+
scale_gp_beta/resources/files/__init__.py,sha256=VgAtqUimN5Kf_-lmEaNBnu_ApGegKsJQ1zNf-42MXFA,1002
|
|
37
|
+
scale_gp_beta/resources/files/content.py,sha256=oJxb-28ZOUBgzE_MiAaJOcKFmtlB-N5APdhfZBNJna8,5762
|
|
38
|
+
scale_gp_beta/resources/files/files.py,sha256=M8OdZoIi3fFjJL7oIn8w9TD6TVcASCMy1Ze1YZRbPMo,20530
|
|
39
|
+
scale_gp_beta/types/__init__.py,sha256=0AA_yRFLEjX9VKsjiY3lEGjDweKuydLZnJxNoE2NXjQ,2202
|
|
40
|
+
scale_gp_beta/types/completion.py,sha256=5eewo25sdqL4vutqvE8wmugE0Cw6YLzZ0_AD6yjP9NM,3259
|
|
41
|
+
scale_gp_beta/types/completion_create_params.py,sha256=LE9vna29Kbh7E8qUq7EhQbcu7YuCF_h663maKtzOnhk,3063
|
|
42
|
+
scale_gp_beta/types/file.py,sha256=Xkha0eSr1q6hkwjE9e2XNgk8kuHNoTEe1LXNhz6o-1k,528
|
|
43
|
+
scale_gp_beta/types/file_create_params.py,sha256=KpXv6JCbd8BlgceTmBTewxOky2JTJaTW3mcGiVVU7wE,317
|
|
44
|
+
scale_gp_beta/types/file_delete_response.py,sha256=lOsiaw8qrUOnH7smxb27-n7M4D1chfXlAUaMTRmdldY,336
|
|
45
|
+
scale_gp_beta/types/file_list.py,sha256=Ckj6RZNvIcrSeNg3NWbwyj92uezu4v5_6J4I4M0mjdA,637
|
|
46
|
+
scale_gp_beta/types/file_list_params.py,sha256=NkyOFeSJOTcPKd-JQnYa52KOEhEOJF-aU2ycsp3Zmds,353
|
|
47
|
+
scale_gp_beta/types/file_update_params.py,sha256=cZAz43aIXmc0jOz-uKWDsZIJx24NN4t9kQ2XDORvQ-Q,297
|
|
48
|
+
scale_gp_beta/types/inference_create_params.py,sha256=lpdMjG-ufUDpH8bGPbt2klG0I9Q3o374WrqHBjEpPwE,665
|
|
49
|
+
scale_gp_beta/types/inference_create_response.py,sha256=JgoDjN5B8zRUpOXXasD97vFKVN7A6QHKz_PN64pKB6s,390
|
|
50
|
+
scale_gp_beta/types/inference_model.py,sha256=_OjoxKxpWWQ9iAMBvSe4S9aKil7vde-UQUzaZESczwA,4296
|
|
51
|
+
scale_gp_beta/types/inference_model_list.py,sha256=I5qlOvpe-kX2HUp-C0h47Na0w6tRfZiC5wGCJ_KMxUk,688
|
|
52
|
+
scale_gp_beta/types/inference_response.py,sha256=PIX9ihGJ6IP6D6i8gk3o_mbSLy9fvRwZdGyICQKh-q8,337
|
|
53
|
+
scale_gp_beta/types/inference_response_chunk.py,sha256=UIw0gVwnqtQKPTH3QAW9UYVlD0lBz7av-EzcMqF7xgg,353
|
|
54
|
+
scale_gp_beta/types/model_create_params.py,sha256=K04FNqloYYTwffMHnNLRnrPNOKPgG70R6xKXZzR3Uu0,3484
|
|
55
|
+
scale_gp_beta/types/model_delete_response.py,sha256=fSpTChRLHPOoc9SJbkS4wcLxVOc3kKBOya8wkGow5pY,339
|
|
56
|
+
scale_gp_beta/types/model_list_params.py,sha256=sfC8-n2uVPZVSfpkp3NUdpfS5raFbHQy2sAgbF0Bb3E,683
|
|
57
|
+
scale_gp_beta/types/model_update_params.py,sha256=RFXvs-EIDHmNO-fnPB8H6B9DlK6bYVsiwFDMPPFHGII,3701
|
|
58
|
+
scale_gp_beta/types/question.py,sha256=aETwjezMGu6hxG9wCa9uBM2H0d9xKRIWu1t2S01bfdw,1597
|
|
59
|
+
scale_gp_beta/types/question_create_params.py,sha256=EqXkbj9zx5M8GPpGVv0XChE-jaxSUHR_UwiyCwsOVZ8,1517
|
|
60
|
+
scale_gp_beta/types/question_list.py,sha256=lk4GWhnnThcqnwmbxUNq07vqyXS8ToUYRp4nf7YctGs,657
|
|
61
|
+
scale_gp_beta/types/question_list_params.py,sha256=vf0ADgkIyuYiye4ySEvJSwj4wkwfPJUPHh0lIE77s_k,361
|
|
62
|
+
scale_gp_beta/types/question_set.py,sha256=QMhZ9mIzkzkzITTHFgWlWgHPP4CWTt0v3M9TZc2_VFY,2525
|
|
63
|
+
scale_gp_beta/types/question_set_create_params.py,sha256=fb_DmwtOj4q61cbP-0v5Ckq76tT-cbQEyRKj8TkHf7c,3785
|
|
64
|
+
scale_gp_beta/types/question_set_delete_response.py,sha256=WfKpVppIGoBG96_CxFmD01QLsj7iAOuG1DJug3l4eF4,358
|
|
65
|
+
scale_gp_beta/types/question_set_list.py,sha256=GDZWcjbLARtLSHZiCGbwdcXQe4inaSfddxu8mgSnAzQ,673
|
|
66
|
+
scale_gp_beta/types/question_set_list_params.py,sha256=omaQ4bD-Zh_CvMvul9O0-tPU18C888QTC6Q9v5tlJkU,449
|
|
67
|
+
scale_gp_beta/types/question_set_retrieve_params.py,sha256=NUXBXehGZDxkaqYHke-aJRXp_YITeN6Hr3cjv95ssDM,334
|
|
68
|
+
scale_gp_beta/types/question_set_update_params.py,sha256=znfOyD45Fhsu6oCw1IrjSSvcYrRLXI6WbWVxnulSSlc,691
|
|
69
|
+
scale_gp_beta/types/chat/__init__.py,sha256=DA0PFPt0oaPb25RI7Cs3RQEJfDLg5-qBiU8l0S_3nnw,443
|
|
70
|
+
scale_gp_beta/types/chat/chat_completion.py,sha256=MswoiGtEb_ik1OHkk6k4jrpcH4lqmOdnIXLnGZJy7wM,7314
|
|
71
|
+
scale_gp_beta/types/chat/chat_completion_chunk.py,sha256=6anUxR5cLdhEhhSgjh3tFbH_7crpD9dktsAnrBLxykQ,7047
|
|
72
|
+
scale_gp_beta/types/chat/completion_create_params.py,sha256=Y7vJNvNM4Sov77l55aS5YtyRnrf7isediu3nKr6YE-A,4505
|
|
73
|
+
scale_gp_beta/types/chat/completion_create_response.py,sha256=0OhfoJW8azVRrZdXRRMuiJ7kEEeMDnKScxrr3sayzDo,374
|
|
74
|
+
scale_gp_beta/types/files/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
|
75
|
+
scale_gp_beta-0.1.0a3.dist-info/METADATA,sha256=N6iu4Z-PoDVpti5VpgKIqrKJi7VRaMMVIlyriU4b7K8,16579
|
|
76
|
+
scale_gp_beta-0.1.0a3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
77
|
+
scale_gp_beta-0.1.0a3.dist-info/licenses/LICENSE,sha256=x49Bj8r_ZpqfzThbmfHyZ_bE88XvHdIMI_ANyLHFFRE,11338
|
|
78
|
+
scale_gp_beta-0.1.0a3.dist-info/RECORD,,
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright 2025
|
|
189
|
+
Copyright 2025 Scale GP
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
scale_gp/__init__.py,sha256=evlLk5Y6LX7WN655LpwQOsnHT6_bwC37ggovhe1QpF4,2520
|
|
2
|
-
scale_gp/_base_client.py,sha256=8GoQtY-nOyi0APfOuv5KF-aN8psZDTLm0to44MHS-VY,68529
|
|
3
|
-
scale_gp/_client.py,sha256=IRFigmkY05I9pFLNVFIX7W2-JzDn6BbT71RPeDArqac,22596
|
|
4
|
-
scale_gp/_compat.py,sha256=VWemUKbj6DDkQ-O4baSpHVLJafotzeXmCQGJugfVTIw,6580
|
|
5
|
-
scale_gp/_constants.py,sha256=S14PFzyN9-I31wiV7SmIlL5Ga0MLHxdvegInGdXH7tM,462
|
|
6
|
-
scale_gp/_exceptions.py,sha256=95GM5CLFtP-QMjjmzsr5ajjZOyEZvyaETfGmqNPR8YM,3226
|
|
7
|
-
scale_gp/_files.py,sha256=mf4dOgL4b0ryyZlbqLhggD3GVgDf6XxdGFAgce01ugE,3549
|
|
8
|
-
scale_gp/_models.py,sha256=PDLSNsn3Umxm3UMZPgyBiyN308rRzzPX6F9NO9FU2vs,28943
|
|
9
|
-
scale_gp/_qs.py,sha256=AOkSz4rHtK4YI3ZU_kzea-zpwBUgEY8WniGmTPyEimc,4846
|
|
10
|
-
scale_gp/_resource.py,sha256=siZly_U6D0AOVLAzaOsqUdEFFzVMbWRj-ml30nvRp7E,1118
|
|
11
|
-
scale_gp/_response.py,sha256=Ng_D4r6-4gDwfgH6jd7TALIwaq6uQqj_p7L6tMlW5MQ,28803
|
|
12
|
-
scale_gp/_streaming.py,sha256=fcCSGXslmi2SmmkM05g2SACXHk2Mj7k1X5uMBu6U5s8,10112
|
|
13
|
-
scale_gp/_types.py,sha256=1s1QnchuKP0zB9frcXdFL0e9Sr5wwyeT_MG_Gfp126M,6145
|
|
14
|
-
scale_gp/_version.py,sha256=SzlRaCehM282kqHi3aRGa0XFsiBkpImH_43ddVkJ3Ak,168
|
|
15
|
-
scale_gp/pagination.py,sha256=6AAa8_V0wARlMd1MIXijugYbG1mILGc2tHVKbUQbZyQ,2595
|
|
16
|
-
scale_gp/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
scale_gp/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
|
18
|
-
scale_gp/_utils/_logs.py,sha256=_3RvchyDgW5RRckTFpBeADUSa8W8D5PurLhxeMfigJE,782
|
|
19
|
-
scale_gp/_utils/_proxy.py,sha256=z3zsateHtb0EARTWKk8QZNHfPkqJbqwd1lM993LBwGE,1902
|
|
20
|
-
scale_gp/_utils/_reflection.py,sha256=ZmGkIgT_PuwedyNBrrKGbxoWtkpytJNU1uU4QHnmEMU,1364
|
|
21
|
-
scale_gp/_utils/_streams.py,sha256=SMC90diFFecpEg_zgDRVbdR3hSEIgVVij4taD-noMLM,289
|
|
22
|
-
scale_gp/_utils/_sync.py,sha256=TpGLrrhRNWTJtODNE6Fup3_k7zrWm1j2RlirzBwre-0,2862
|
|
23
|
-
scale_gp/_utils/_transform.py,sha256=tsSFOIZ7iczaUsMSGBD_iSFOOdUyT2xtkcq1xyF0L9o,13986
|
|
24
|
-
scale_gp/_utils/_typing.py,sha256=nTJz0jcrQbEgxwy4TtAkNxuU0QHHlmc6mQtA6vIR8tg,4501
|
|
25
|
-
scale_gp/_utils/_utils.py,sha256=8UmbPOy_AAr2uUjjFui-VZSrVBHRj6bfNEKRp5YZP2A,12004
|
|
26
|
-
scale_gp/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
|
27
|
-
scale_gp/resources/__init__.py,sha256=CLsKitqMWj9CtyeCVAgOBuguN9NpztGeICZbOYO1qlg,3435
|
|
28
|
-
scale_gp/resources/completions.py,sha256=dk7Uvl8dnnieRWTJr2fhzJMZwOzGIjsYSw2GjaMWlCs,31653
|
|
29
|
-
scale_gp/resources/inference.py,sha256=_20eN0x0PZBPNLx2VrozQrJgRVjtlXPjeTpTcnuP0bU,7576
|
|
30
|
-
scale_gp/resources/models.py,sha256=lUAbtJE_FPbm-vYXz34Kl1-ir0Kcy5lT_x5VC31NT5o,32202
|
|
31
|
-
scale_gp/resources/question_sets.py,sha256=X9eGII0Nh2jP7PTU86wLB6Blj0QIvYMJWUJm0D76QIU,25923
|
|
32
|
-
scale_gp/resources/questions.py,sha256=XP-PJoGyGTIlNkCMhmBAUbHp2m4yT81ofBnVds4o0Jg,14835
|
|
33
|
-
scale_gp/resources/chat/__init__.py,sha256=BVAfz9TM3DT5W9f_mt0P9YRxL_MsUxKCWAH6u1iogmA,1041
|
|
34
|
-
scale_gp/resources/chat/chat.py,sha256=4OG_TrwVqYvV-7Ha8Nbc6iuXQuys9wKXgkxYmE6p6jk,3672
|
|
35
|
-
scale_gp/resources/chat/completions.py,sha256=NlowDMqoS2OAme1LzcYecxiIz9-DTRtscTU-iNycpWg,47067
|
|
36
|
-
scale_gp/resources/files/__init__.py,sha256=VgAtqUimN5Kf_-lmEaNBnu_ApGegKsJQ1zNf-42MXFA,1002
|
|
37
|
-
scale_gp/resources/files/content.py,sha256=oJxb-28ZOUBgzE_MiAaJOcKFmtlB-N5APdhfZBNJna8,5762
|
|
38
|
-
scale_gp/resources/files/files.py,sha256=M8OdZoIi3fFjJL7oIn8w9TD6TVcASCMy1Ze1YZRbPMo,20530
|
|
39
|
-
scale_gp/types/__init__.py,sha256=0AA_yRFLEjX9VKsjiY3lEGjDweKuydLZnJxNoE2NXjQ,2202
|
|
40
|
-
scale_gp/types/completion.py,sha256=5eewo25sdqL4vutqvE8wmugE0Cw6YLzZ0_AD6yjP9NM,3259
|
|
41
|
-
scale_gp/types/completion_create_params.py,sha256=LE9vna29Kbh7E8qUq7EhQbcu7YuCF_h663maKtzOnhk,3063
|
|
42
|
-
scale_gp/types/file.py,sha256=Xkha0eSr1q6hkwjE9e2XNgk8kuHNoTEe1LXNhz6o-1k,528
|
|
43
|
-
scale_gp/types/file_create_params.py,sha256=KpXv6JCbd8BlgceTmBTewxOky2JTJaTW3mcGiVVU7wE,317
|
|
44
|
-
scale_gp/types/file_delete_response.py,sha256=lOsiaw8qrUOnH7smxb27-n7M4D1chfXlAUaMTRmdldY,336
|
|
45
|
-
scale_gp/types/file_list.py,sha256=Ckj6RZNvIcrSeNg3NWbwyj92uezu4v5_6J4I4M0mjdA,637
|
|
46
|
-
scale_gp/types/file_list_params.py,sha256=NkyOFeSJOTcPKd-JQnYa52KOEhEOJF-aU2ycsp3Zmds,353
|
|
47
|
-
scale_gp/types/file_update_params.py,sha256=cZAz43aIXmc0jOz-uKWDsZIJx24NN4t9kQ2XDORvQ-Q,297
|
|
48
|
-
scale_gp/types/inference_create_params.py,sha256=lpdMjG-ufUDpH8bGPbt2klG0I9Q3o374WrqHBjEpPwE,665
|
|
49
|
-
scale_gp/types/inference_create_response.py,sha256=JgoDjN5B8zRUpOXXasD97vFKVN7A6QHKz_PN64pKB6s,390
|
|
50
|
-
scale_gp/types/inference_model.py,sha256=6VL2E93OLOIIFix894Hu5jlwpuKUGPydBLO8puztlJI,4268
|
|
51
|
-
scale_gp/types/inference_model_list.py,sha256=I5qlOvpe-kX2HUp-C0h47Na0w6tRfZiC5wGCJ_KMxUk,688
|
|
52
|
-
scale_gp/types/inference_response.py,sha256=PIX9ihGJ6IP6D6i8gk3o_mbSLy9fvRwZdGyICQKh-q8,337
|
|
53
|
-
scale_gp/types/inference_response_chunk.py,sha256=UIw0gVwnqtQKPTH3QAW9UYVlD0lBz7av-EzcMqF7xgg,353
|
|
54
|
-
scale_gp/types/model_create_params.py,sha256=K04FNqloYYTwffMHnNLRnrPNOKPgG70R6xKXZzR3Uu0,3484
|
|
55
|
-
scale_gp/types/model_delete_response.py,sha256=fSpTChRLHPOoc9SJbkS4wcLxVOc3kKBOya8wkGow5pY,339
|
|
56
|
-
scale_gp/types/model_list_params.py,sha256=VeKvA7yHJqPE2lO_TEBDEy3lnN4j8FQYrTbVaECfqfQ,508
|
|
57
|
-
scale_gp/types/model_update_params.py,sha256=RFXvs-EIDHmNO-fnPB8H6B9DlK6bYVsiwFDMPPFHGII,3701
|
|
58
|
-
scale_gp/types/question.py,sha256=aETwjezMGu6hxG9wCa9uBM2H0d9xKRIWu1t2S01bfdw,1597
|
|
59
|
-
scale_gp/types/question_create_params.py,sha256=EqXkbj9zx5M8GPpGVv0XChE-jaxSUHR_UwiyCwsOVZ8,1517
|
|
60
|
-
scale_gp/types/question_list.py,sha256=lk4GWhnnThcqnwmbxUNq07vqyXS8ToUYRp4nf7YctGs,657
|
|
61
|
-
scale_gp/types/question_list_params.py,sha256=vf0ADgkIyuYiye4ySEvJSwj4wkwfPJUPHh0lIE77s_k,361
|
|
62
|
-
scale_gp/types/question_set.py,sha256=QMhZ9mIzkzkzITTHFgWlWgHPP4CWTt0v3M9TZc2_VFY,2525
|
|
63
|
-
scale_gp/types/question_set_create_params.py,sha256=fb_DmwtOj4q61cbP-0v5Ckq76tT-cbQEyRKj8TkHf7c,3785
|
|
64
|
-
scale_gp/types/question_set_delete_response.py,sha256=WfKpVppIGoBG96_CxFmD01QLsj7iAOuG1DJug3l4eF4,358
|
|
65
|
-
scale_gp/types/question_set_list.py,sha256=GDZWcjbLARtLSHZiCGbwdcXQe4inaSfddxu8mgSnAzQ,673
|
|
66
|
-
scale_gp/types/question_set_list_params.py,sha256=omaQ4bD-Zh_CvMvul9O0-tPU18C888QTC6Q9v5tlJkU,449
|
|
67
|
-
scale_gp/types/question_set_retrieve_params.py,sha256=NUXBXehGZDxkaqYHke-aJRXp_YITeN6Hr3cjv95ssDM,334
|
|
68
|
-
scale_gp/types/question_set_update_params.py,sha256=znfOyD45Fhsu6oCw1IrjSSvcYrRLXI6WbWVxnulSSlc,691
|
|
69
|
-
scale_gp/types/chat/__init__.py,sha256=DA0PFPt0oaPb25RI7Cs3RQEJfDLg5-qBiU8l0S_3nnw,443
|
|
70
|
-
scale_gp/types/chat/chat_completion.py,sha256=MswoiGtEb_ik1OHkk6k4jrpcH4lqmOdnIXLnGZJy7wM,7314
|
|
71
|
-
scale_gp/types/chat/chat_completion_chunk.py,sha256=6anUxR5cLdhEhhSgjh3tFbH_7crpD9dktsAnrBLxykQ,7047
|
|
72
|
-
scale_gp/types/chat/completion_create_params.py,sha256=Y7vJNvNM4Sov77l55aS5YtyRnrf7isediu3nKr6YE-A,4505
|
|
73
|
-
scale_gp/types/chat/completion_create_response.py,sha256=0OhfoJW8azVRrZdXRRMuiJ7kEEeMDnKScxrr3sayzDo,374
|
|
74
|
-
scale_gp/types/files/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
|
75
|
-
scale_gp_beta-0.1.0a2.dist-info/METADATA,sha256=fKbS0YgTPDY0yEBL4FRowkF-u2V-jADZ42BA_QZnaCM,14170
|
|
76
|
-
scale_gp_beta-0.1.0a2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
77
|
-
scale_gp_beta-0.1.0a2.dist-info/licenses/LICENSE,sha256=bjx34Ru3J05hEqirGarDDOMD2C3139VyMKWaOCBU-tY,11340
|
|
78
|
-
scale_gp_beta-0.1.0a2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|