|
3 | 3 | from __future__ import annotations |
4 | 4 |
|
5 | 5 | import os |
6 | | -from typing import Any, Mapping |
| 6 | +from typing import TYPE_CHECKING, Any, Mapping |
7 | 7 | from typing_extensions import Self, override |
8 | 8 |
|
9 | 9 | import httpx |
|
20 | 20 | not_given, |
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 models, preferences, model_router, custom_router, prompt_adaptation |
25 | 25 | from ._streaming import Stream as Stream, AsyncStream as AsyncStream |
26 | 26 | from ._exceptions import APIStatusError, NotDiamondError |
27 | 27 | from ._base_client import ( |
|
30 | 30 | AsyncAPIClient, |
31 | 31 | ) |
32 | 32 |
|
| 33 | +if TYPE_CHECKING: |
| 34 | + from .resources import models, preferences, model_router, custom_router, prompt_adaptation |
| 35 | + from .resources.models import ModelsResource, AsyncModelsResource |
| 36 | + from .resources.preferences import PreferencesResource, AsyncPreferencesResource |
| 37 | + from .resources.model_router import ModelRouterResource, AsyncModelRouterResource |
| 38 | + from .resources.custom_router import CustomRouterResource, AsyncCustomRouterResource |
| 39 | + from .resources.prompt_adaptation import PromptAdaptationResource, AsyncPromptAdaptationResource |
| 40 | + |
33 | 41 | __all__ = [ |
34 | 42 | "Timeout", |
35 | 43 | "Transport", |
|
43 | 51 |
|
44 | 52 |
|
45 | 53 | class NotDiamond(SyncAPIClient): |
46 | | - model_router: model_router.ModelRouterResource |
47 | | - preferences: preferences.PreferencesResource |
48 | | - prompt_adaptation: prompt_adaptation.PromptAdaptationResource |
49 | | - custom_router: custom_router.CustomRouterResource |
50 | | - models: models.ModelsResource |
51 | | - with_raw_response: NotDiamondWithRawResponse |
52 | | - with_streaming_response: NotDiamondWithStreamedResponse |
53 | | - |
54 | 54 | # client options |
55 | 55 | api_key: str |
56 | 56 |
|
@@ -105,13 +105,43 @@ def __init__( |
105 | 105 | _strict_response_validation=_strict_response_validation, |
106 | 106 | ) |
107 | 107 |
|
108 | | - self.model_router = model_router.ModelRouterResource(self) |
109 | | - self.preferences = preferences.PreferencesResource(self) |
110 | | - self.prompt_adaptation = prompt_adaptation.PromptAdaptationResource(self) |
111 | | - self.custom_router = custom_router.CustomRouterResource(self) |
112 | | - self.models = models.ModelsResource(self) |
113 | | - self.with_raw_response = NotDiamondWithRawResponse(self) |
114 | | - self.with_streaming_response = NotDiamondWithStreamedResponse(self) |
| 108 | + @cached_property |
| 109 | + def model_router(self) -> ModelRouterResource: |
| 110 | + from .resources.model_router import ModelRouterResource |
| 111 | + |
| 112 | + return ModelRouterResource(self) |
| 113 | + |
| 114 | + @cached_property |
| 115 | + def preferences(self) -> PreferencesResource: |
| 116 | + from .resources.preferences import PreferencesResource |
| 117 | + |
| 118 | + return PreferencesResource(self) |
| 119 | + |
| 120 | + @cached_property |
| 121 | + def prompt_adaptation(self) -> PromptAdaptationResource: |
| 122 | + from .resources.prompt_adaptation import PromptAdaptationResource |
| 123 | + |
| 124 | + return PromptAdaptationResource(self) |
| 125 | + |
| 126 | + @cached_property |
| 127 | + def custom_router(self) -> CustomRouterResource: |
| 128 | + from .resources.custom_router import CustomRouterResource |
| 129 | + |
| 130 | + return CustomRouterResource(self) |
| 131 | + |
| 132 | + @cached_property |
| 133 | + def models(self) -> ModelsResource: |
| 134 | + from .resources.models import ModelsResource |
| 135 | + |
| 136 | + return ModelsResource(self) |
| 137 | + |
| 138 | + @cached_property |
| 139 | + def with_raw_response(self) -> NotDiamondWithRawResponse: |
| 140 | + return NotDiamondWithRawResponse(self) |
| 141 | + |
| 142 | + @cached_property |
| 143 | + def with_streaming_response(self) -> NotDiamondWithStreamedResponse: |
| 144 | + return NotDiamondWithStreamedResponse(self) |
115 | 145 |
|
116 | 146 | @property |
117 | 147 | @override |
@@ -219,14 +249,6 @@ def _make_status_error( |
219 | 249 |
|
220 | 250 |
|
221 | 251 | class AsyncNotDiamond(AsyncAPIClient): |
222 | | - model_router: model_router.AsyncModelRouterResource |
223 | | - preferences: preferences.AsyncPreferencesResource |
224 | | - prompt_adaptation: prompt_adaptation.AsyncPromptAdaptationResource |
225 | | - custom_router: custom_router.AsyncCustomRouterResource |
226 | | - models: models.AsyncModelsResource |
227 | | - with_raw_response: AsyncNotDiamondWithRawResponse |
228 | | - with_streaming_response: AsyncNotDiamondWithStreamedResponse |
229 | | - |
230 | 252 | # client options |
231 | 253 | api_key: str |
232 | 254 |
|
@@ -281,13 +303,43 @@ def __init__( |
281 | 303 | _strict_response_validation=_strict_response_validation, |
282 | 304 | ) |
283 | 305 |
|
284 | | - self.model_router = model_router.AsyncModelRouterResource(self) |
285 | | - self.preferences = preferences.AsyncPreferencesResource(self) |
286 | | - self.prompt_adaptation = prompt_adaptation.AsyncPromptAdaptationResource(self) |
287 | | - self.custom_router = custom_router.AsyncCustomRouterResource(self) |
288 | | - self.models = models.AsyncModelsResource(self) |
289 | | - self.with_raw_response = AsyncNotDiamondWithRawResponse(self) |
290 | | - self.with_streaming_response = AsyncNotDiamondWithStreamedResponse(self) |
| 306 | + @cached_property |
| 307 | + def model_router(self) -> AsyncModelRouterResource: |
| 308 | + from .resources.model_router import AsyncModelRouterResource |
| 309 | + |
| 310 | + return AsyncModelRouterResource(self) |
| 311 | + |
| 312 | + @cached_property |
| 313 | + def preferences(self) -> AsyncPreferencesResource: |
| 314 | + from .resources.preferences import AsyncPreferencesResource |
| 315 | + |
| 316 | + return AsyncPreferencesResource(self) |
| 317 | + |
| 318 | + @cached_property |
| 319 | + def prompt_adaptation(self) -> AsyncPromptAdaptationResource: |
| 320 | + from .resources.prompt_adaptation import AsyncPromptAdaptationResource |
| 321 | + |
| 322 | + return AsyncPromptAdaptationResource(self) |
| 323 | + |
| 324 | + @cached_property |
| 325 | + def custom_router(self) -> AsyncCustomRouterResource: |
| 326 | + from .resources.custom_router import AsyncCustomRouterResource |
| 327 | + |
| 328 | + return AsyncCustomRouterResource(self) |
| 329 | + |
| 330 | + @cached_property |
| 331 | + def models(self) -> AsyncModelsResource: |
| 332 | + from .resources.models import AsyncModelsResource |
| 333 | + |
| 334 | + return AsyncModelsResource(self) |
| 335 | + |
| 336 | + @cached_property |
| 337 | + def with_raw_response(self) -> AsyncNotDiamondWithRawResponse: |
| 338 | + return AsyncNotDiamondWithRawResponse(self) |
| 339 | + |
| 340 | + @cached_property |
| 341 | + def with_streaming_response(self) -> AsyncNotDiamondWithStreamedResponse: |
| 342 | + return AsyncNotDiamondWithStreamedResponse(self) |
291 | 343 |
|
292 | 344 | @property |
293 | 345 | @override |
@@ -395,45 +447,151 @@ def _make_status_error( |
395 | 447 |
|
396 | 448 |
|
397 | 449 | class NotDiamondWithRawResponse: |
| 450 | + _client: NotDiamond |
| 451 | + |
398 | 452 | def __init__(self, client: NotDiamond) -> None: |
399 | | - self.model_router = model_router.ModelRouterResourceWithRawResponse(client.model_router) |
400 | | - self.preferences = preferences.PreferencesResourceWithRawResponse(client.preferences) |
401 | | - self.prompt_adaptation = prompt_adaptation.PromptAdaptationResourceWithRawResponse(client.prompt_adaptation) |
402 | | - self.custom_router = custom_router.CustomRouterResourceWithRawResponse(client.custom_router) |
403 | | - self.models = models.ModelsResourceWithRawResponse(client.models) |
| 453 | + self._client = client |
| 454 | + |
| 455 | + @cached_property |
| 456 | + def model_router(self) -> model_router.ModelRouterResourceWithRawResponse: |
| 457 | + from .resources.model_router import ModelRouterResourceWithRawResponse |
| 458 | + |
| 459 | + return ModelRouterResourceWithRawResponse(self._client.model_router) |
| 460 | + |
| 461 | + @cached_property |
| 462 | + def preferences(self) -> preferences.PreferencesResourceWithRawResponse: |
| 463 | + from .resources.preferences import PreferencesResourceWithRawResponse |
| 464 | + |
| 465 | + return PreferencesResourceWithRawResponse(self._client.preferences) |
| 466 | + |
| 467 | + @cached_property |
| 468 | + def prompt_adaptation(self) -> prompt_adaptation.PromptAdaptationResourceWithRawResponse: |
| 469 | + from .resources.prompt_adaptation import PromptAdaptationResourceWithRawResponse |
| 470 | + |
| 471 | + return PromptAdaptationResourceWithRawResponse(self._client.prompt_adaptation) |
| 472 | + |
| 473 | + @cached_property |
| 474 | + def custom_router(self) -> custom_router.CustomRouterResourceWithRawResponse: |
| 475 | + from .resources.custom_router import CustomRouterResourceWithRawResponse |
| 476 | + |
| 477 | + return CustomRouterResourceWithRawResponse(self._client.custom_router) |
| 478 | + |
| 479 | + @cached_property |
| 480 | + def models(self) -> models.ModelsResourceWithRawResponse: |
| 481 | + from .resources.models import ModelsResourceWithRawResponse |
| 482 | + |
| 483 | + return ModelsResourceWithRawResponse(self._client.models) |
404 | 484 |
|
405 | 485 |
|
406 | 486 | class AsyncNotDiamondWithRawResponse: |
| 487 | + _client: AsyncNotDiamond |
| 488 | + |
407 | 489 | def __init__(self, client: AsyncNotDiamond) -> None: |
408 | | - self.model_router = model_router.AsyncModelRouterResourceWithRawResponse(client.model_router) |
409 | | - self.preferences = preferences.AsyncPreferencesResourceWithRawResponse(client.preferences) |
410 | | - self.prompt_adaptation = prompt_adaptation.AsyncPromptAdaptationResourceWithRawResponse( |
411 | | - client.prompt_adaptation |
412 | | - ) |
413 | | - self.custom_router = custom_router.AsyncCustomRouterResourceWithRawResponse(client.custom_router) |
414 | | - self.models = models.AsyncModelsResourceWithRawResponse(client.models) |
| 490 | + self._client = client |
| 491 | + |
| 492 | + @cached_property |
| 493 | + def model_router(self) -> model_router.AsyncModelRouterResourceWithRawResponse: |
| 494 | + from .resources.model_router import AsyncModelRouterResourceWithRawResponse |
| 495 | + |
| 496 | + return AsyncModelRouterResourceWithRawResponse(self._client.model_router) |
| 497 | + |
| 498 | + @cached_property |
| 499 | + def preferences(self) -> preferences.AsyncPreferencesResourceWithRawResponse: |
| 500 | + from .resources.preferences import AsyncPreferencesResourceWithRawResponse |
| 501 | + |
| 502 | + return AsyncPreferencesResourceWithRawResponse(self._client.preferences) |
| 503 | + |
| 504 | + @cached_property |
| 505 | + def prompt_adaptation(self) -> prompt_adaptation.AsyncPromptAdaptationResourceWithRawResponse: |
| 506 | + from .resources.prompt_adaptation import AsyncPromptAdaptationResourceWithRawResponse |
| 507 | + |
| 508 | + return AsyncPromptAdaptationResourceWithRawResponse(self._client.prompt_adaptation) |
| 509 | + |
| 510 | + @cached_property |
| 511 | + def custom_router(self) -> custom_router.AsyncCustomRouterResourceWithRawResponse: |
| 512 | + from .resources.custom_router import AsyncCustomRouterResourceWithRawResponse |
| 513 | + |
| 514 | + return AsyncCustomRouterResourceWithRawResponse(self._client.custom_router) |
| 515 | + |
| 516 | + @cached_property |
| 517 | + def models(self) -> models.AsyncModelsResourceWithRawResponse: |
| 518 | + from .resources.models import AsyncModelsResourceWithRawResponse |
| 519 | + |
| 520 | + return AsyncModelsResourceWithRawResponse(self._client.models) |
415 | 521 |
|
416 | 522 |
|
417 | 523 | class NotDiamondWithStreamedResponse: |
| 524 | + _client: NotDiamond |
| 525 | + |
418 | 526 | def __init__(self, client: NotDiamond) -> None: |
419 | | - self.model_router = model_router.ModelRouterResourceWithStreamingResponse(client.model_router) |
420 | | - self.preferences = preferences.PreferencesResourceWithStreamingResponse(client.preferences) |
421 | | - self.prompt_adaptation = prompt_adaptation.PromptAdaptationResourceWithStreamingResponse( |
422 | | - client.prompt_adaptation |
423 | | - ) |
424 | | - self.custom_router = custom_router.CustomRouterResourceWithStreamingResponse(client.custom_router) |
425 | | - self.models = models.ModelsResourceWithStreamingResponse(client.models) |
| 527 | + self._client = client |
| 528 | + |
| 529 | + @cached_property |
| 530 | + def model_router(self) -> model_router.ModelRouterResourceWithStreamingResponse: |
| 531 | + from .resources.model_router import ModelRouterResourceWithStreamingResponse |
| 532 | + |
| 533 | + return ModelRouterResourceWithStreamingResponse(self._client.model_router) |
| 534 | + |
| 535 | + @cached_property |
| 536 | + def preferences(self) -> preferences.PreferencesResourceWithStreamingResponse: |
| 537 | + from .resources.preferences import PreferencesResourceWithStreamingResponse |
| 538 | + |
| 539 | + return PreferencesResourceWithStreamingResponse(self._client.preferences) |
| 540 | + |
| 541 | + @cached_property |
| 542 | + def prompt_adaptation(self) -> prompt_adaptation.PromptAdaptationResourceWithStreamingResponse: |
| 543 | + from .resources.prompt_adaptation import PromptAdaptationResourceWithStreamingResponse |
| 544 | + |
| 545 | + return PromptAdaptationResourceWithStreamingResponse(self._client.prompt_adaptation) |
| 546 | + |
| 547 | + @cached_property |
| 548 | + def custom_router(self) -> custom_router.CustomRouterResourceWithStreamingResponse: |
| 549 | + from .resources.custom_router import CustomRouterResourceWithStreamingResponse |
| 550 | + |
| 551 | + return CustomRouterResourceWithStreamingResponse(self._client.custom_router) |
| 552 | + |
| 553 | + @cached_property |
| 554 | + def models(self) -> models.ModelsResourceWithStreamingResponse: |
| 555 | + from .resources.models import ModelsResourceWithStreamingResponse |
| 556 | + |
| 557 | + return ModelsResourceWithStreamingResponse(self._client.models) |
426 | 558 |
|
427 | 559 |
|
428 | 560 | class AsyncNotDiamondWithStreamedResponse: |
| 561 | + _client: AsyncNotDiamond |
| 562 | + |
429 | 563 | def __init__(self, client: AsyncNotDiamond) -> None: |
430 | | - self.model_router = model_router.AsyncModelRouterResourceWithStreamingResponse(client.model_router) |
431 | | - self.preferences = preferences.AsyncPreferencesResourceWithStreamingResponse(client.preferences) |
432 | | - self.prompt_adaptation = prompt_adaptation.AsyncPromptAdaptationResourceWithStreamingResponse( |
433 | | - client.prompt_adaptation |
434 | | - ) |
435 | | - self.custom_router = custom_router.AsyncCustomRouterResourceWithStreamingResponse(client.custom_router) |
436 | | - self.models = models.AsyncModelsResourceWithStreamingResponse(client.models) |
| 564 | + self._client = client |
| 565 | + |
| 566 | + @cached_property |
| 567 | + def model_router(self) -> model_router.AsyncModelRouterResourceWithStreamingResponse: |
| 568 | + from .resources.model_router import AsyncModelRouterResourceWithStreamingResponse |
| 569 | + |
| 570 | + return AsyncModelRouterResourceWithStreamingResponse(self._client.model_router) |
| 571 | + |
| 572 | + @cached_property |
| 573 | + def preferences(self) -> preferences.AsyncPreferencesResourceWithStreamingResponse: |
| 574 | + from .resources.preferences import AsyncPreferencesResourceWithStreamingResponse |
| 575 | + |
| 576 | + return AsyncPreferencesResourceWithStreamingResponse(self._client.preferences) |
| 577 | + |
| 578 | + @cached_property |
| 579 | + def prompt_adaptation(self) -> prompt_adaptation.AsyncPromptAdaptationResourceWithStreamingResponse: |
| 580 | + from .resources.prompt_adaptation import AsyncPromptAdaptationResourceWithStreamingResponse |
| 581 | + |
| 582 | + return AsyncPromptAdaptationResourceWithStreamingResponse(self._client.prompt_adaptation) |
| 583 | + |
| 584 | + @cached_property |
| 585 | + def custom_router(self) -> custom_router.AsyncCustomRouterResourceWithStreamingResponse: |
| 586 | + from .resources.custom_router import AsyncCustomRouterResourceWithStreamingResponse |
| 587 | + |
| 588 | + return AsyncCustomRouterResourceWithStreamingResponse(self._client.custom_router) |
| 589 | + |
| 590 | + @cached_property |
| 591 | + def models(self) -> models.AsyncModelsResourceWithStreamingResponse: |
| 592 | + from .resources.models import AsyncModelsResourceWithStreamingResponse |
| 593 | + |
| 594 | + return AsyncModelsResourceWithStreamingResponse(self._client.models) |
437 | 595 |
|
438 | 596 |
|
439 | 597 | Client = NotDiamond |
|
0 commit comments