Skip to content

Commit 3b3f4e6

Browse files
chore: speedup initial import
1 parent 5547d1b commit 3b3f4e6

File tree

1 file changed

+68
-20
lines changed

1 file changed

+68
-20
lines changed

src/brainbase/_client.py

Lines changed: 68 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from __future__ import annotations
44

55
import os
6-
from typing import Any, Mapping
6+
from typing import TYPE_CHECKING, Any, Mapping
77
from typing_extensions import Self, override
88

99
import httpx
@@ -20,6 +20,7 @@
2020
not_given,
2121
)
2222
from ._utils import is_given, get_async_library
23+
from ._compat import cached_property
2324
from ._version import __version__
2425
from ._streaming import Stream as Stream, AsyncStream as AsyncStream
2526
from ._exceptions import APIStatusError, BrainbaseError
@@ -28,7 +29,10 @@
2829
SyncAPIClient,
2930
AsyncAPIClient,
3031
)
31-
from .resources.workers import workers
32+
33+
if TYPE_CHECKING:
34+
from .resources import workers
35+
from .resources.workers.workers import WorkersResource, AsyncWorkersResource
3236

3337
__all__ = [
3438
"Timeout",
@@ -43,10 +47,6 @@
4347

4448

4549
class Brainbase(SyncAPIClient):
46-
workers: workers.WorkersResource
47-
with_raw_response: BrainbaseWithRawResponse
48-
with_streaming_response: BrainbaseWithStreamedResponse
49-
5050
# client options
5151
api_key: str
5252

@@ -101,9 +101,19 @@ def __init__(
101101
_strict_response_validation=_strict_response_validation,
102102
)
103103

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)
107117

108118
@property
109119
@override
@@ -211,10 +221,6 @@ def _make_status_error(
211221

212222

213223
class AsyncBrainbase(AsyncAPIClient):
214-
workers: workers.AsyncWorkersResource
215-
with_raw_response: AsyncBrainbaseWithRawResponse
216-
with_streaming_response: AsyncBrainbaseWithStreamedResponse
217-
218224
# client options
219225
api_key: str
220226

@@ -269,9 +275,19 @@ def __init__(
269275
_strict_response_validation=_strict_response_validation,
270276
)
271277

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)
275291

276292
@property
277293
@override
@@ -379,23 +395,55 @@ def _make_status_error(
379395

380396

381397
class BrainbaseWithRawResponse:
398+
_client: Brainbase
399+
382400
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)
384408

385409

386410
class AsyncBrainbaseWithRawResponse:
411+
_client: AsyncBrainbase
412+
387413
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)
389421

390422

391423
class BrainbaseWithStreamedResponse:
424+
_client: Brainbase
425+
392426
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)
394434

395435

396436
class AsyncBrainbaseWithStreamedResponse:
437+
_client: AsyncBrainbase
438+
397439
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)
399447

400448

401449
Client = Brainbase

0 commit comments

Comments
 (0)