|
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 | 25 | from ._streaming import Stream as Stream, AsyncStream as AsyncStream |
25 | 26 | from ._exceptions import APIStatusError, BrainbaseError |
|
28 | 29 | SyncAPIClient, |
29 | 30 | AsyncAPIClient, |
30 | 31 | ) |
31 | | -from .resources.workers import workers |
| 32 | + |
| 33 | +if TYPE_CHECKING: |
| 34 | + from .resources import workers |
| 35 | + from .resources.workers.workers import WorkersResource, AsyncWorkersResource |
32 | 36 |
|
33 | 37 | __all__ = [ |
34 | 38 | "Timeout", |
|
43 | 47 |
|
44 | 48 |
|
45 | 49 | class Brainbase(SyncAPIClient): |
46 | | - workers: workers.WorkersResource |
47 | | - with_raw_response: BrainbaseWithRawResponse |
48 | | - with_streaming_response: BrainbaseWithStreamedResponse |
49 | | - |
50 | 50 | # client options |
51 | 51 | api_key: str |
52 | 52 |
|
@@ -101,9 +101,19 @@ def __init__( |
101 | 101 | _strict_response_validation=_strict_response_validation, |
102 | 102 | ) |
103 | 103 |
|
104 | | - self.workers = workers.WorkersResource(self) |
105 | | - self.with_raw_response = BrainbaseWithRawResponse(self) |
106 | | - self.with_streaming_response = BrainbaseWithStreamedResponse(self) |
| 104 | + @cached_property |
| 105 | + def workers(self) -> WorkersResource: |
| 106 | + from .resources.workers import WorkersResource |
| 107 | + |
| 108 | + return WorkersResource(self) |
| 109 | + |
| 110 | + @cached_property |
| 111 | + def with_raw_response(self) -> BrainbaseWithRawResponse: |
| 112 | + return BrainbaseWithRawResponse(self) |
| 113 | + |
| 114 | + @cached_property |
| 115 | + def with_streaming_response(self) -> BrainbaseWithStreamedResponse: |
| 116 | + return BrainbaseWithStreamedResponse(self) |
107 | 117 |
|
108 | 118 | @property |
109 | 119 | @override |
@@ -211,10 +221,6 @@ def _make_status_error( |
211 | 221 |
|
212 | 222 |
|
213 | 223 | class AsyncBrainbase(AsyncAPIClient): |
214 | | - workers: workers.AsyncWorkersResource |
215 | | - with_raw_response: AsyncBrainbaseWithRawResponse |
216 | | - with_streaming_response: AsyncBrainbaseWithStreamedResponse |
217 | | - |
218 | 224 | # client options |
219 | 225 | api_key: str |
220 | 226 |
|
@@ -269,9 +275,19 @@ def __init__( |
269 | 275 | _strict_response_validation=_strict_response_validation, |
270 | 276 | ) |
271 | 277 |
|
272 | | - self.workers = workers.AsyncWorkersResource(self) |
273 | | - self.with_raw_response = AsyncBrainbaseWithRawResponse(self) |
274 | | - self.with_streaming_response = AsyncBrainbaseWithStreamedResponse(self) |
| 278 | + @cached_property |
| 279 | + def workers(self) -> AsyncWorkersResource: |
| 280 | + from .resources.workers import AsyncWorkersResource |
| 281 | + |
| 282 | + return AsyncWorkersResource(self) |
| 283 | + |
| 284 | + @cached_property |
| 285 | + def with_raw_response(self) -> AsyncBrainbaseWithRawResponse: |
| 286 | + return AsyncBrainbaseWithRawResponse(self) |
| 287 | + |
| 288 | + @cached_property |
| 289 | + def with_streaming_response(self) -> AsyncBrainbaseWithStreamedResponse: |
| 290 | + return AsyncBrainbaseWithStreamedResponse(self) |
275 | 291 |
|
276 | 292 | @property |
277 | 293 | @override |
@@ -379,23 +395,55 @@ def _make_status_error( |
379 | 395 |
|
380 | 396 |
|
381 | 397 | class BrainbaseWithRawResponse: |
| 398 | + _client: Brainbase |
| 399 | + |
382 | 400 | def __init__(self, client: Brainbase) -> None: |
383 | | - self.workers = workers.WorkersResourceWithRawResponse(client.workers) |
| 401 | + self._client = client |
| 402 | + |
| 403 | + @cached_property |
| 404 | + def workers(self) -> workers.WorkersResourceWithRawResponse: |
| 405 | + from .resources.workers import WorkersResourceWithRawResponse |
| 406 | + |
| 407 | + return WorkersResourceWithRawResponse(self._client.workers) |
384 | 408 |
|
385 | 409 |
|
386 | 410 | class AsyncBrainbaseWithRawResponse: |
| 411 | + _client: AsyncBrainbase |
| 412 | + |
387 | 413 | def __init__(self, client: AsyncBrainbase) -> None: |
388 | | - self.workers = workers.AsyncWorkersResourceWithRawResponse(client.workers) |
| 414 | + self._client = client |
| 415 | + |
| 416 | + @cached_property |
| 417 | + def workers(self) -> workers.AsyncWorkersResourceWithRawResponse: |
| 418 | + from .resources.workers import AsyncWorkersResourceWithRawResponse |
| 419 | + |
| 420 | + return AsyncWorkersResourceWithRawResponse(self._client.workers) |
389 | 421 |
|
390 | 422 |
|
391 | 423 | class BrainbaseWithStreamedResponse: |
| 424 | + _client: Brainbase |
| 425 | + |
392 | 426 | def __init__(self, client: Brainbase) -> None: |
393 | | - self.workers = workers.WorkersResourceWithStreamingResponse(client.workers) |
| 427 | + self._client = client |
| 428 | + |
| 429 | + @cached_property |
| 430 | + def workers(self) -> workers.WorkersResourceWithStreamingResponse: |
| 431 | + from .resources.workers import WorkersResourceWithStreamingResponse |
| 432 | + |
| 433 | + return WorkersResourceWithStreamingResponse(self._client.workers) |
394 | 434 |
|
395 | 435 |
|
396 | 436 | class AsyncBrainbaseWithStreamedResponse: |
| 437 | + _client: AsyncBrainbase |
| 438 | + |
397 | 439 | def __init__(self, client: AsyncBrainbase) -> None: |
398 | | - self.workers = workers.AsyncWorkersResourceWithStreamingResponse(client.workers) |
| 440 | + self._client = client |
| 441 | + |
| 442 | + @cached_property |
| 443 | + def workers(self) -> workers.AsyncWorkersResourceWithStreamingResponse: |
| 444 | + from .resources.workers import AsyncWorkersResourceWithStreamingResponse |
| 445 | + |
| 446 | + return AsyncWorkersResourceWithStreamingResponse(self._client.workers) |
399 | 447 |
|
400 | 448 |
|
401 | 449 | Client = Brainbase |
|
0 commit comments