|
3 | 3 | from __future__ import annotations |
4 | 4 |
|
5 | 5 | import os |
6 | | -from typing import Any, Mapping, Iterable |
| 6 | +from typing import TYPE_CHECKING, Any, Mapping, Iterable |
7 | 7 | from typing_extensions import Self, Literal, override |
8 | 8 |
|
9 | 9 | import httpx |
|
31 | 31 | get_async_library, |
32 | 32 | async_maybe_transform, |
33 | 33 | ) |
| 34 | +from ._compat import cached_property |
34 | 35 | from ._version import __version__ |
35 | 36 | from ._response import ( |
36 | 37 | to_raw_response_wrapper, |
37 | 38 | to_streamed_response_wrapper, |
38 | 39 | async_to_raw_response_wrapper, |
39 | 40 | async_to_streamed_response_wrapper, |
40 | 41 | ) |
41 | | -from .resources import agent, messages |
42 | 42 | from ._streaming import Stream as Stream, AsyncStream as AsyncStream |
43 | 43 | from ._exceptions import AgentbaseError, APIStatusError |
44 | 44 | from ._base_client import ( |
|
49 | 49 | ) |
50 | 50 | from .types.run_agent_response import RunAgentResponse |
51 | 51 |
|
| 52 | +if TYPE_CHECKING: |
| 53 | + from .resources import agent, messages |
| 54 | + from .resources.agent import AgentResource, AsyncAgentResource |
| 55 | + from .resources.messages import MessagesResource, AsyncMessagesResource |
| 56 | + |
52 | 57 | __all__ = [ |
53 | 58 | "Timeout", |
54 | 59 | "Transport", |
|
62 | 67 |
|
63 | 68 |
|
64 | 69 | class Agentbase(SyncAPIClient): |
65 | | - agent: agent.AgentResource |
66 | | - messages: messages.MessagesResource |
67 | | - with_raw_response: AgentbaseWithRawResponse |
68 | | - with_streaming_response: AgentbaseWithStreamedResponse |
69 | | - |
70 | 70 | # client options |
71 | 71 | api_key: str |
72 | 72 |
|
@@ -121,10 +121,25 @@ def __init__( |
121 | 121 | _strict_response_validation=_strict_response_validation, |
122 | 122 | ) |
123 | 123 |
|
124 | | - self.agent = agent.AgentResource(self) |
125 | | - self.messages = messages.MessagesResource(self) |
126 | | - self.with_raw_response = AgentbaseWithRawResponse(self) |
127 | | - self.with_streaming_response = AgentbaseWithStreamedResponse(self) |
| 124 | + @cached_property |
| 125 | + def agent(self) -> AgentResource: |
| 126 | + from .resources.agent import AgentResource |
| 127 | + |
| 128 | + return AgentResource(self) |
| 129 | + |
| 130 | + @cached_property |
| 131 | + def messages(self) -> MessagesResource: |
| 132 | + from .resources.messages import MessagesResource |
| 133 | + |
| 134 | + return MessagesResource(self) |
| 135 | + |
| 136 | + @cached_property |
| 137 | + def with_raw_response(self) -> AgentbaseWithRawResponse: |
| 138 | + return AgentbaseWithRawResponse(self) |
| 139 | + |
| 140 | + @cached_property |
| 141 | + def with_streaming_response(self) -> AgentbaseWithStreamedResponse: |
| 142 | + return AgentbaseWithStreamedResponse(self) |
128 | 143 |
|
129 | 144 | @property |
130 | 145 | @override |
@@ -349,11 +364,6 @@ def _make_status_error( |
349 | 364 |
|
350 | 365 |
|
351 | 366 | class AsyncAgentbase(AsyncAPIClient): |
352 | | - agent: agent.AsyncAgentResource |
353 | | - messages: messages.AsyncMessagesResource |
354 | | - with_raw_response: AsyncAgentbaseWithRawResponse |
355 | | - with_streaming_response: AsyncAgentbaseWithStreamedResponse |
356 | | - |
357 | 367 | # client options |
358 | 368 | api_key: str |
359 | 369 |
|
@@ -408,10 +418,25 @@ def __init__( |
408 | 418 | _strict_response_validation=_strict_response_validation, |
409 | 419 | ) |
410 | 420 |
|
411 | | - self.agent = agent.AsyncAgentResource(self) |
412 | | - self.messages = messages.AsyncMessagesResource(self) |
413 | | - self.with_raw_response = AsyncAgentbaseWithRawResponse(self) |
414 | | - self.with_streaming_response = AsyncAgentbaseWithStreamedResponse(self) |
| 421 | + @cached_property |
| 422 | + def agent(self) -> AsyncAgentResource: |
| 423 | + from .resources.agent import AsyncAgentResource |
| 424 | + |
| 425 | + return AsyncAgentResource(self) |
| 426 | + |
| 427 | + @cached_property |
| 428 | + def messages(self) -> AsyncMessagesResource: |
| 429 | + from .resources.messages import AsyncMessagesResource |
| 430 | + |
| 431 | + return AsyncMessagesResource(self) |
| 432 | + |
| 433 | + @cached_property |
| 434 | + def with_raw_response(self) -> AsyncAgentbaseWithRawResponse: |
| 435 | + return AsyncAgentbaseWithRawResponse(self) |
| 436 | + |
| 437 | + @cached_property |
| 438 | + def with_streaming_response(self) -> AsyncAgentbaseWithStreamedResponse: |
| 439 | + return AsyncAgentbaseWithStreamedResponse(self) |
415 | 440 |
|
416 | 441 | @property |
417 | 442 | @override |
@@ -636,44 +661,96 @@ def _make_status_error( |
636 | 661 |
|
637 | 662 |
|
638 | 663 | class AgentbaseWithRawResponse: |
| 664 | + _client: Agentbase |
| 665 | + |
639 | 666 | def __init__(self, client: Agentbase) -> None: |
640 | | - self.agent = agent.AgentResourceWithRawResponse(client.agent) |
641 | | - self.messages = messages.MessagesResourceWithRawResponse(client.messages) |
| 667 | + self._client = client |
642 | 668 |
|
643 | 669 | self.run_agent = to_raw_response_wrapper( |
644 | 670 | client.run_agent, |
645 | 671 | ) |
646 | 672 |
|
| 673 | + @cached_property |
| 674 | + def agent(self) -> agent.AgentResourceWithRawResponse: |
| 675 | + from .resources.agent import AgentResourceWithRawResponse |
| 676 | + |
| 677 | + return AgentResourceWithRawResponse(self._client.agent) |
| 678 | + |
| 679 | + @cached_property |
| 680 | + def messages(self) -> messages.MessagesResourceWithRawResponse: |
| 681 | + from .resources.messages import MessagesResourceWithRawResponse |
| 682 | + |
| 683 | + return MessagesResourceWithRawResponse(self._client.messages) |
| 684 | + |
647 | 685 |
|
648 | 686 | class AsyncAgentbaseWithRawResponse: |
| 687 | + _client: AsyncAgentbase |
| 688 | + |
649 | 689 | def __init__(self, client: AsyncAgentbase) -> None: |
650 | | - self.agent = agent.AsyncAgentResourceWithRawResponse(client.agent) |
651 | | - self.messages = messages.AsyncMessagesResourceWithRawResponse(client.messages) |
| 690 | + self._client = client |
652 | 691 |
|
653 | 692 | self.run_agent = async_to_raw_response_wrapper( |
654 | 693 | client.run_agent, |
655 | 694 | ) |
656 | 695 |
|
| 696 | + @cached_property |
| 697 | + def agent(self) -> agent.AsyncAgentResourceWithRawResponse: |
| 698 | + from .resources.agent import AsyncAgentResourceWithRawResponse |
| 699 | + |
| 700 | + return AsyncAgentResourceWithRawResponse(self._client.agent) |
| 701 | + |
| 702 | + @cached_property |
| 703 | + def messages(self) -> messages.AsyncMessagesResourceWithRawResponse: |
| 704 | + from .resources.messages import AsyncMessagesResourceWithRawResponse |
| 705 | + |
| 706 | + return AsyncMessagesResourceWithRawResponse(self._client.messages) |
| 707 | + |
657 | 708 |
|
658 | 709 | class AgentbaseWithStreamedResponse: |
| 710 | + _client: Agentbase |
| 711 | + |
659 | 712 | def __init__(self, client: Agentbase) -> None: |
660 | | - self.agent = agent.AgentResourceWithStreamingResponse(client.agent) |
661 | | - self.messages = messages.MessagesResourceWithStreamingResponse(client.messages) |
| 713 | + self._client = client |
662 | 714 |
|
663 | 715 | self.run_agent = to_streamed_response_wrapper( |
664 | 716 | client.run_agent, |
665 | 717 | ) |
666 | 718 |
|
| 719 | + @cached_property |
| 720 | + def agent(self) -> agent.AgentResourceWithStreamingResponse: |
| 721 | + from .resources.agent import AgentResourceWithStreamingResponse |
| 722 | + |
| 723 | + return AgentResourceWithStreamingResponse(self._client.agent) |
| 724 | + |
| 725 | + @cached_property |
| 726 | + def messages(self) -> messages.MessagesResourceWithStreamingResponse: |
| 727 | + from .resources.messages import MessagesResourceWithStreamingResponse |
| 728 | + |
| 729 | + return MessagesResourceWithStreamingResponse(self._client.messages) |
| 730 | + |
667 | 731 |
|
668 | 732 | class AsyncAgentbaseWithStreamedResponse: |
| 733 | + _client: AsyncAgentbase |
| 734 | + |
669 | 735 | def __init__(self, client: AsyncAgentbase) -> None: |
670 | | - self.agent = agent.AsyncAgentResourceWithStreamingResponse(client.agent) |
671 | | - self.messages = messages.AsyncMessagesResourceWithStreamingResponse(client.messages) |
| 736 | + self._client = client |
672 | 737 |
|
673 | 738 | self.run_agent = async_to_streamed_response_wrapper( |
674 | 739 | client.run_agent, |
675 | 740 | ) |
676 | 741 |
|
| 742 | + @cached_property |
| 743 | + def agent(self) -> agent.AsyncAgentResourceWithStreamingResponse: |
| 744 | + from .resources.agent import AsyncAgentResourceWithStreamingResponse |
| 745 | + |
| 746 | + return AsyncAgentResourceWithStreamingResponse(self._client.agent) |
| 747 | + |
| 748 | + @cached_property |
| 749 | + def messages(self) -> messages.AsyncMessagesResourceWithStreamingResponse: |
| 750 | + from .resources.messages import AsyncMessagesResourceWithStreamingResponse |
| 751 | + |
| 752 | + return AsyncMessagesResourceWithStreamingResponse(self._client.messages) |
| 753 | + |
677 | 754 |
|
678 | 755 | Client = Agentbase |
679 | 756 |
|
|
0 commit comments