|
3 | 3 | from __future__ import annotations |
4 | 4 |
|
5 | 5 | import os |
6 | | -from typing import Any, Union, Mapping |
| 6 | +from typing import TYPE_CHECKING, Any, Union, Mapping |
7 | 7 | from typing_extensions import Self, override |
8 | 8 |
|
9 | 9 | import httpx |
|
20 | 20 | RequestOptions, |
21 | 21 | ) |
22 | 22 | from ._utils import is_given, get_async_library |
| 23 | +from ._compat import cached_property |
23 | 24 | from ._version import __version__ |
24 | | -from .resources import chat, models, embeddings |
25 | 25 | from ._streaming import Stream as Stream, AsyncStream as AsyncStream |
26 | 26 | from ._exceptions import APIStatusError, DigitaloceanGenaiSDKError |
27 | 27 | from ._base_client import ( |
28 | 28 | DEFAULT_MAX_RETRIES, |
29 | 29 | SyncAPIClient, |
30 | 30 | AsyncAPIClient, |
31 | 31 | ) |
32 | | -from .resources.genai import genai |
| 32 | + |
| 33 | +if TYPE_CHECKING: |
| 34 | + from .resources import chat, genai, models, embeddings |
| 35 | + from .resources.chat import ChatResource, AsyncChatResource |
| 36 | + from .resources.models import ModelsResource, AsyncModelsResource |
| 37 | + from .resources.embeddings import EmbeddingsResource, AsyncEmbeddingsResource |
| 38 | + from .resources.genai.genai import GenaiResource, AsyncGenaiResource |
33 | 39 |
|
34 | 40 | __all__ = [ |
35 | 41 | "Timeout", |
|
44 | 50 |
|
45 | 51 |
|
46 | 52 | class DigitaloceanGenaiSDK(SyncAPIClient): |
47 | | - genai: genai.GenaiResource |
48 | | - chat: chat.ChatResource |
49 | | - embeddings: embeddings.EmbeddingsResource |
50 | | - models: models.ModelsResource |
51 | | - with_raw_response: DigitaloceanGenaiSDKWithRawResponse |
52 | | - with_streaming_response: DigitaloceanGenaiSDKWithStreamedResponse |
53 | | - |
54 | 53 | # client options |
55 | 54 | api_key: str |
56 | 55 |
|
@@ -105,12 +104,37 @@ def __init__( |
105 | 104 | _strict_response_validation=_strict_response_validation, |
106 | 105 | ) |
107 | 106 |
|
108 | | - self.genai = genai.GenaiResource(self) |
109 | | - self.chat = chat.ChatResource(self) |
110 | | - self.embeddings = embeddings.EmbeddingsResource(self) |
111 | | - self.models = models.ModelsResource(self) |
112 | | - self.with_raw_response = DigitaloceanGenaiSDKWithRawResponse(self) |
113 | | - self.with_streaming_response = DigitaloceanGenaiSDKWithStreamedResponse(self) |
| 107 | + @cached_property |
| 108 | + def genai(self) -> GenaiResource: |
| 109 | + from .resources.genai import GenaiResource |
| 110 | + |
| 111 | + return GenaiResource(self) |
| 112 | + |
| 113 | + @cached_property |
| 114 | + def chat(self) -> ChatResource: |
| 115 | + from .resources.chat import ChatResource |
| 116 | + |
| 117 | + return ChatResource(self) |
| 118 | + |
| 119 | + @cached_property |
| 120 | + def embeddings(self) -> EmbeddingsResource: |
| 121 | + from .resources.embeddings import EmbeddingsResource |
| 122 | + |
| 123 | + return EmbeddingsResource(self) |
| 124 | + |
| 125 | + @cached_property |
| 126 | + def models(self) -> ModelsResource: |
| 127 | + from .resources.models import ModelsResource |
| 128 | + |
| 129 | + return ModelsResource(self) |
| 130 | + |
| 131 | + @cached_property |
| 132 | + def with_raw_response(self) -> DigitaloceanGenaiSDKWithRawResponse: |
| 133 | + return DigitaloceanGenaiSDKWithRawResponse(self) |
| 134 | + |
| 135 | + @cached_property |
| 136 | + def with_streaming_response(self) -> DigitaloceanGenaiSDKWithStreamedResponse: |
| 137 | + return DigitaloceanGenaiSDKWithStreamedResponse(self) |
114 | 138 |
|
115 | 139 | @property |
116 | 140 | @override |
@@ -218,13 +242,6 @@ def _make_status_error( |
218 | 242 |
|
219 | 243 |
|
220 | 244 | class AsyncDigitaloceanGenaiSDK(AsyncAPIClient): |
221 | | - genai: genai.AsyncGenaiResource |
222 | | - chat: chat.AsyncChatResource |
223 | | - embeddings: embeddings.AsyncEmbeddingsResource |
224 | | - models: models.AsyncModelsResource |
225 | | - with_raw_response: AsyncDigitaloceanGenaiSDKWithRawResponse |
226 | | - with_streaming_response: AsyncDigitaloceanGenaiSDKWithStreamedResponse |
227 | | - |
228 | 245 | # client options |
229 | 246 | api_key: str |
230 | 247 |
|
@@ -279,12 +296,37 @@ def __init__( |
279 | 296 | _strict_response_validation=_strict_response_validation, |
280 | 297 | ) |
281 | 298 |
|
282 | | - self.genai = genai.AsyncGenaiResource(self) |
283 | | - self.chat = chat.AsyncChatResource(self) |
284 | | - self.embeddings = embeddings.AsyncEmbeddingsResource(self) |
285 | | - self.models = models.AsyncModelsResource(self) |
286 | | - self.with_raw_response = AsyncDigitaloceanGenaiSDKWithRawResponse(self) |
287 | | - self.with_streaming_response = AsyncDigitaloceanGenaiSDKWithStreamedResponse(self) |
| 299 | + @cached_property |
| 300 | + def genai(self) -> AsyncGenaiResource: |
| 301 | + from .resources.genai import AsyncGenaiResource |
| 302 | + |
| 303 | + return AsyncGenaiResource(self) |
| 304 | + |
| 305 | + @cached_property |
| 306 | + def chat(self) -> AsyncChatResource: |
| 307 | + from .resources.chat import AsyncChatResource |
| 308 | + |
| 309 | + return AsyncChatResource(self) |
| 310 | + |
| 311 | + @cached_property |
| 312 | + def embeddings(self) -> AsyncEmbeddingsResource: |
| 313 | + from .resources.embeddings import AsyncEmbeddingsResource |
| 314 | + |
| 315 | + return AsyncEmbeddingsResource(self) |
| 316 | + |
| 317 | + @cached_property |
| 318 | + def models(self) -> AsyncModelsResource: |
| 319 | + from .resources.models import AsyncModelsResource |
| 320 | + |
| 321 | + return AsyncModelsResource(self) |
| 322 | + |
| 323 | + @cached_property |
| 324 | + def with_raw_response(self) -> AsyncDigitaloceanGenaiSDKWithRawResponse: |
| 325 | + return AsyncDigitaloceanGenaiSDKWithRawResponse(self) |
| 326 | + |
| 327 | + @cached_property |
| 328 | + def with_streaming_response(self) -> AsyncDigitaloceanGenaiSDKWithStreamedResponse: |
| 329 | + return AsyncDigitaloceanGenaiSDKWithStreamedResponse(self) |
288 | 330 |
|
289 | 331 | @property |
290 | 332 | @override |
@@ -392,35 +434,127 @@ def _make_status_error( |
392 | 434 |
|
393 | 435 |
|
394 | 436 | class DigitaloceanGenaiSDKWithRawResponse: |
| 437 | + _client: DigitaloceanGenaiSDK |
| 438 | + |
395 | 439 | def __init__(self, client: DigitaloceanGenaiSDK) -> None: |
396 | | - self.genai = genai.GenaiResourceWithRawResponse(client.genai) |
397 | | - self.chat = chat.ChatResourceWithRawResponse(client.chat) |
398 | | - self.embeddings = embeddings.EmbeddingsResourceWithRawResponse(client.embeddings) |
399 | | - self.models = models.ModelsResourceWithRawResponse(client.models) |
| 440 | + self._client = client |
| 441 | + |
| 442 | + @cached_property |
| 443 | + def genai(self) -> genai.GenaiResourceWithRawResponse: |
| 444 | + from .resources.genai import GenaiResourceWithRawResponse |
| 445 | + |
| 446 | + return GenaiResourceWithRawResponse(self._client.genai) |
| 447 | + |
| 448 | + @cached_property |
| 449 | + def chat(self) -> chat.ChatResourceWithRawResponse: |
| 450 | + from .resources.chat import ChatResourceWithRawResponse |
| 451 | + |
| 452 | + return ChatResourceWithRawResponse(self._client.chat) |
| 453 | + |
| 454 | + @cached_property |
| 455 | + def embeddings(self) -> embeddings.EmbeddingsResourceWithRawResponse: |
| 456 | + from .resources.embeddings import EmbeddingsResourceWithRawResponse |
| 457 | + |
| 458 | + return EmbeddingsResourceWithRawResponse(self._client.embeddings) |
| 459 | + |
| 460 | + @cached_property |
| 461 | + def models(self) -> models.ModelsResourceWithRawResponse: |
| 462 | + from .resources.models import ModelsResourceWithRawResponse |
| 463 | + |
| 464 | + return ModelsResourceWithRawResponse(self._client.models) |
400 | 465 |
|
401 | 466 |
|
402 | 467 | class AsyncDigitaloceanGenaiSDKWithRawResponse: |
| 468 | + _client: AsyncDigitaloceanGenaiSDK |
| 469 | + |
403 | 470 | def __init__(self, client: AsyncDigitaloceanGenaiSDK) -> None: |
404 | | - self.genai = genai.AsyncGenaiResourceWithRawResponse(client.genai) |
405 | | - self.chat = chat.AsyncChatResourceWithRawResponse(client.chat) |
406 | | - self.embeddings = embeddings.AsyncEmbeddingsResourceWithRawResponse(client.embeddings) |
407 | | - self.models = models.AsyncModelsResourceWithRawResponse(client.models) |
| 471 | + self._client = client |
| 472 | + |
| 473 | + @cached_property |
| 474 | + def genai(self) -> genai.AsyncGenaiResourceWithRawResponse: |
| 475 | + from .resources.genai import AsyncGenaiResourceWithRawResponse |
| 476 | + |
| 477 | + return AsyncGenaiResourceWithRawResponse(self._client.genai) |
| 478 | + |
| 479 | + @cached_property |
| 480 | + def chat(self) -> chat.AsyncChatResourceWithRawResponse: |
| 481 | + from .resources.chat import AsyncChatResourceWithRawResponse |
| 482 | + |
| 483 | + return AsyncChatResourceWithRawResponse(self._client.chat) |
| 484 | + |
| 485 | + @cached_property |
| 486 | + def embeddings(self) -> embeddings.AsyncEmbeddingsResourceWithRawResponse: |
| 487 | + from .resources.embeddings import AsyncEmbeddingsResourceWithRawResponse |
| 488 | + |
| 489 | + return AsyncEmbeddingsResourceWithRawResponse(self._client.embeddings) |
| 490 | + |
| 491 | + @cached_property |
| 492 | + def models(self) -> models.AsyncModelsResourceWithRawResponse: |
| 493 | + from .resources.models import AsyncModelsResourceWithRawResponse |
| 494 | + |
| 495 | + return AsyncModelsResourceWithRawResponse(self._client.models) |
408 | 496 |
|
409 | 497 |
|
410 | 498 | class DigitaloceanGenaiSDKWithStreamedResponse: |
| 499 | + _client: DigitaloceanGenaiSDK |
| 500 | + |
411 | 501 | def __init__(self, client: DigitaloceanGenaiSDK) -> None: |
412 | | - self.genai = genai.GenaiResourceWithStreamingResponse(client.genai) |
413 | | - self.chat = chat.ChatResourceWithStreamingResponse(client.chat) |
414 | | - self.embeddings = embeddings.EmbeddingsResourceWithStreamingResponse(client.embeddings) |
415 | | - self.models = models.ModelsResourceWithStreamingResponse(client.models) |
| 502 | + self._client = client |
| 503 | + |
| 504 | + @cached_property |
| 505 | + def genai(self) -> genai.GenaiResourceWithStreamingResponse: |
| 506 | + from .resources.genai import GenaiResourceWithStreamingResponse |
| 507 | + |
| 508 | + return GenaiResourceWithStreamingResponse(self._client.genai) |
| 509 | + |
| 510 | + @cached_property |
| 511 | + def chat(self) -> chat.ChatResourceWithStreamingResponse: |
| 512 | + from .resources.chat import ChatResourceWithStreamingResponse |
| 513 | + |
| 514 | + return ChatResourceWithStreamingResponse(self._client.chat) |
| 515 | + |
| 516 | + @cached_property |
| 517 | + def embeddings(self) -> embeddings.EmbeddingsResourceWithStreamingResponse: |
| 518 | + from .resources.embeddings import EmbeddingsResourceWithStreamingResponse |
| 519 | + |
| 520 | + return EmbeddingsResourceWithStreamingResponse(self._client.embeddings) |
| 521 | + |
| 522 | + @cached_property |
| 523 | + def models(self) -> models.ModelsResourceWithStreamingResponse: |
| 524 | + from .resources.models import ModelsResourceWithStreamingResponse |
| 525 | + |
| 526 | + return ModelsResourceWithStreamingResponse(self._client.models) |
416 | 527 |
|
417 | 528 |
|
418 | 529 | class AsyncDigitaloceanGenaiSDKWithStreamedResponse: |
| 530 | + _client: AsyncDigitaloceanGenaiSDK |
| 531 | + |
419 | 532 | def __init__(self, client: AsyncDigitaloceanGenaiSDK) -> None: |
420 | | - self.genai = genai.AsyncGenaiResourceWithStreamingResponse(client.genai) |
421 | | - self.chat = chat.AsyncChatResourceWithStreamingResponse(client.chat) |
422 | | - self.embeddings = embeddings.AsyncEmbeddingsResourceWithStreamingResponse(client.embeddings) |
423 | | - self.models = models.AsyncModelsResourceWithStreamingResponse(client.models) |
| 533 | + self._client = client |
| 534 | + |
| 535 | + @cached_property |
| 536 | + def genai(self) -> genai.AsyncGenaiResourceWithStreamingResponse: |
| 537 | + from .resources.genai import AsyncGenaiResourceWithStreamingResponse |
| 538 | + |
| 539 | + return AsyncGenaiResourceWithStreamingResponse(self._client.genai) |
| 540 | + |
| 541 | + @cached_property |
| 542 | + def chat(self) -> chat.AsyncChatResourceWithStreamingResponse: |
| 543 | + from .resources.chat import AsyncChatResourceWithStreamingResponse |
| 544 | + |
| 545 | + return AsyncChatResourceWithStreamingResponse(self._client.chat) |
| 546 | + |
| 547 | + @cached_property |
| 548 | + def embeddings(self) -> embeddings.AsyncEmbeddingsResourceWithStreamingResponse: |
| 549 | + from .resources.embeddings import AsyncEmbeddingsResourceWithStreamingResponse |
| 550 | + |
| 551 | + return AsyncEmbeddingsResourceWithStreamingResponse(self._client.embeddings) |
| 552 | + |
| 553 | + @cached_property |
| 554 | + def models(self) -> models.AsyncModelsResourceWithStreamingResponse: |
| 555 | + from .resources.models import AsyncModelsResourceWithStreamingResponse |
| 556 | + |
| 557 | + return AsyncModelsResourceWithStreamingResponse(self._client.models) |
424 | 558 |
|
425 | 559 |
|
426 | 560 | Client = DigitaloceanGenaiSDK |
|
0 commit comments