beamlit 0.0.28rc24__py3-none-any.whl → 0.0.29rc26__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,186 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...models.get_trace_logs_response_200 import GetTraceLogsResponse200
9
+ from ...types import UNSET, Response, Unset
10
+
11
+
12
+ def _get_kwargs(
13
+ trace_id: str,
14
+ *,
15
+ span_id: Union[Unset, str] = UNSET,
16
+ limit: Union[Unset, str] = UNSET,
17
+ ) -> dict[str, Any]:
18
+ params: dict[str, Any] = {}
19
+
20
+ params["spanId"] = span_id
21
+
22
+ params["limit"] = limit
23
+
24
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
25
+
26
+ _kwargs: dict[str, Any] = {
27
+ "method": "get",
28
+ "url": f"/traces/{trace_id}/logs",
29
+ "params": params,
30
+ }
31
+
32
+ return _kwargs
33
+
34
+
35
+ def _parse_response(
36
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
37
+ ) -> Optional[GetTraceLogsResponse200]:
38
+ if response.status_code == 200:
39
+ response_200 = GetTraceLogsResponse200.from_dict(response.json())
40
+
41
+ return response_200
42
+ if client.raise_on_unexpected_status:
43
+ raise errors.UnexpectedStatus(response.status_code, response.content)
44
+ else:
45
+ return None
46
+
47
+
48
+ def _build_response(
49
+ *, client: Union[AuthenticatedClient, Client], response: httpx.Response
50
+ ) -> Response[GetTraceLogsResponse200]:
51
+ return Response(
52
+ status_code=HTTPStatus(response.status_code),
53
+ content=response.content,
54
+ headers=response.headers,
55
+ parsed=_parse_response(client=client, response=response),
56
+ )
57
+
58
+
59
+ def sync_detailed(
60
+ trace_id: str,
61
+ *,
62
+ client: AuthenticatedClient,
63
+ span_id: Union[Unset, str] = UNSET,
64
+ limit: Union[Unset, str] = UNSET,
65
+ ) -> Response[GetTraceLogsResponse200]:
66
+ """Get trace logs
67
+
68
+ Args:
69
+ trace_id (str):
70
+ span_id (Union[Unset, str]):
71
+ limit (Union[Unset, str]):
72
+
73
+ Raises:
74
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
75
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
76
+
77
+ Returns:
78
+ Response[GetTraceLogsResponse200]
79
+ """
80
+
81
+ kwargs = _get_kwargs(
82
+ trace_id=trace_id,
83
+ span_id=span_id,
84
+ limit=limit,
85
+ )
86
+
87
+ response = client.get_httpx_client().request(
88
+ **kwargs,
89
+ )
90
+
91
+ return _build_response(client=client, response=response)
92
+
93
+
94
+ def sync(
95
+ trace_id: str,
96
+ *,
97
+ client: AuthenticatedClient,
98
+ span_id: Union[Unset, str] = UNSET,
99
+ limit: Union[Unset, str] = UNSET,
100
+ ) -> Optional[GetTraceLogsResponse200]:
101
+ """Get trace logs
102
+
103
+ Args:
104
+ trace_id (str):
105
+ span_id (Union[Unset, str]):
106
+ limit (Union[Unset, str]):
107
+
108
+ Raises:
109
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
110
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
111
+
112
+ Returns:
113
+ GetTraceLogsResponse200
114
+ """
115
+
116
+ return sync_detailed(
117
+ trace_id=trace_id,
118
+ client=client,
119
+ span_id=span_id,
120
+ limit=limit,
121
+ ).parsed
122
+
123
+
124
+ async def asyncio_detailed(
125
+ trace_id: str,
126
+ *,
127
+ client: AuthenticatedClient,
128
+ span_id: Union[Unset, str] = UNSET,
129
+ limit: Union[Unset, str] = UNSET,
130
+ ) -> Response[GetTraceLogsResponse200]:
131
+ """Get trace logs
132
+
133
+ Args:
134
+ trace_id (str):
135
+ span_id (Union[Unset, str]):
136
+ limit (Union[Unset, str]):
137
+
138
+ Raises:
139
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
140
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
141
+
142
+ Returns:
143
+ Response[GetTraceLogsResponse200]
144
+ """
145
+
146
+ kwargs = _get_kwargs(
147
+ trace_id=trace_id,
148
+ span_id=span_id,
149
+ limit=limit,
150
+ )
151
+
152
+ response = await client.get_async_httpx_client().request(**kwargs)
153
+
154
+ return _build_response(client=client, response=response)
155
+
156
+
157
+ async def asyncio(
158
+ trace_id: str,
159
+ *,
160
+ client: AuthenticatedClient,
161
+ span_id: Union[Unset, str] = UNSET,
162
+ limit: Union[Unset, str] = UNSET,
163
+ ) -> Optional[GetTraceLogsResponse200]:
164
+ """Get trace logs
165
+
166
+ Args:
167
+ trace_id (str):
168
+ span_id (Union[Unset, str]):
169
+ limit (Union[Unset, str]):
170
+
171
+ Raises:
172
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
173
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
174
+
175
+ Returns:
176
+ GetTraceLogsResponse200
177
+ """
178
+
179
+ return (
180
+ await asyncio_detailed(
181
+ trace_id=trace_id,
182
+ client=client,
183
+ span_id=span_id,
184
+ limit=limit,
185
+ )
186
+ ).parsed
@@ -0,0 +1,106 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import UNSET, Response, Unset
9
+
10
+
11
+ def _get_kwargs(
12
+ function_name: str,
13
+ *,
14
+ environment: Union[Unset, str] = UNSET,
15
+ ) -> dict[str, Any]:
16
+ params: dict[str, Any] = {}
17
+
18
+ params["environment"] = environment
19
+
20
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
21
+
22
+ _kwargs: dict[str, Any] = {
23
+ "method": "get",
24
+ "url": f"/functions/{function_name}/traces",
25
+ "params": params,
26
+ }
27
+
28
+ return _kwargs
29
+
30
+
31
+ def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
32
+ if client.raise_on_unexpected_status:
33
+ raise errors.UnexpectedStatus(response.status_code, response.content)
34
+ else:
35
+ return None
36
+
37
+
38
+ def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
39
+ return Response(
40
+ status_code=HTTPStatus(response.status_code),
41
+ content=response.content,
42
+ headers=response.headers,
43
+ parsed=_parse_response(client=client, response=response),
44
+ )
45
+
46
+
47
+ def sync_detailed(
48
+ function_name: str,
49
+ *,
50
+ client: AuthenticatedClient,
51
+ environment: Union[Unset, str] = UNSET,
52
+ ) -> Response[Any]:
53
+ """Get function trace IDs
54
+
55
+ Args:
56
+ function_name (str):
57
+ environment (Union[Unset, str]):
58
+
59
+ Raises:
60
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
61
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
62
+
63
+ Returns:
64
+ Response[Any]
65
+ """
66
+
67
+ kwargs = _get_kwargs(
68
+ function_name=function_name,
69
+ environment=environment,
70
+ )
71
+
72
+ response = client.get_httpx_client().request(
73
+ **kwargs,
74
+ )
75
+
76
+ return _build_response(client=client, response=response)
77
+
78
+
79
+ async def asyncio_detailed(
80
+ function_name: str,
81
+ *,
82
+ client: AuthenticatedClient,
83
+ environment: Union[Unset, str] = UNSET,
84
+ ) -> Response[Any]:
85
+ """Get function trace IDs
86
+
87
+ Args:
88
+ function_name (str):
89
+ environment (Union[Unset, str]):
90
+
91
+ Raises:
92
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
93
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
94
+
95
+ Returns:
96
+ Response[Any]
97
+ """
98
+
99
+ kwargs = _get_kwargs(
100
+ function_name=function_name,
101
+ environment=environment,
102
+ )
103
+
104
+ response = await client.get_async_httpx_client().request(**kwargs)
105
+
106
+ return _build_response(client=client, response=response)
@@ -0,0 +1,106 @@
1
+ from http import HTTPStatus
2
+ from typing import Any, Optional, Union
3
+
4
+ import httpx
5
+
6
+ from ... import errors
7
+ from ...client import AuthenticatedClient, Client
8
+ from ...types import UNSET, Response, Unset
9
+
10
+
11
+ def _get_kwargs(
12
+ model_name: str,
13
+ *,
14
+ environment: Union[Unset, str] = UNSET,
15
+ ) -> dict[str, Any]:
16
+ params: dict[str, Any] = {}
17
+
18
+ params["environment"] = environment
19
+
20
+ params = {k: v for k, v in params.items() if v is not UNSET and v is not None}
21
+
22
+ _kwargs: dict[str, Any] = {
23
+ "method": "get",
24
+ "url": f"/models/{model_name}/traces",
25
+ "params": params,
26
+ }
27
+
28
+ return _kwargs
29
+
30
+
31
+ def _parse_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Optional[Any]:
32
+ if client.raise_on_unexpected_status:
33
+ raise errors.UnexpectedStatus(response.status_code, response.content)
34
+ else:
35
+ return None
36
+
37
+
38
+ def _build_response(*, client: Union[AuthenticatedClient, Client], response: httpx.Response) -> Response[Any]:
39
+ return Response(
40
+ status_code=HTTPStatus(response.status_code),
41
+ content=response.content,
42
+ headers=response.headers,
43
+ parsed=_parse_response(client=client, response=response),
44
+ )
45
+
46
+
47
+ def sync_detailed(
48
+ model_name: str,
49
+ *,
50
+ client: AuthenticatedClient,
51
+ environment: Union[Unset, str] = UNSET,
52
+ ) -> Response[Any]:
53
+ """Get model trace IDs
54
+
55
+ Args:
56
+ model_name (str):
57
+ environment (Union[Unset, str]):
58
+
59
+ Raises:
60
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
61
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
62
+
63
+ Returns:
64
+ Response[Any]
65
+ """
66
+
67
+ kwargs = _get_kwargs(
68
+ model_name=model_name,
69
+ environment=environment,
70
+ )
71
+
72
+ response = client.get_httpx_client().request(
73
+ **kwargs,
74
+ )
75
+
76
+ return _build_response(client=client, response=response)
77
+
78
+
79
+ async def asyncio_detailed(
80
+ model_name: str,
81
+ *,
82
+ client: AuthenticatedClient,
83
+ environment: Union[Unset, str] = UNSET,
84
+ ) -> Response[Any]:
85
+ """Get model trace IDs
86
+
87
+ Args:
88
+ model_name (str):
89
+ environment (Union[Unset, str]):
90
+
91
+ Raises:
92
+ errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True.
93
+ httpx.TimeoutException: If the request takes longer than Client.timeout.
94
+
95
+ Returns:
96
+ Response[Any]
97
+ """
98
+
99
+ kwargs = _get_kwargs(
100
+ model_name=model_name,
101
+ environment=environment,
102
+ )
103
+
104
+ response = await client.get_async_httpx_client().request(**kwargs)
105
+
106
+ return _build_response(client=client, response=response)
@@ -1,5 +1,6 @@
1
1
  from dataclasses import dataclass
2
2
  from typing import Dict, Generator
3
+ import os
3
4
 
4
5
  from httpx import Auth, Request, Response
5
6
 
@@ -26,8 +27,13 @@ class PublicProvider(Auth):
26
27
  class RunClientWithCredentials:
27
28
  credentials: Credentials
28
29
  workspace: str
29
- api_url: str = "https://api.beamlit.dev/v0"
30
- run_url: str = "https://run.beamlit.dev/v0"
30
+ api_url: str = "https://api.beamlit.com/v0"
31
+ run_url: str = "https://run.beamlit.com/v0"
32
+
33
+ def __post_init__(self):
34
+ if os.getenv('BL_ENV') == 'dev':
35
+ self.api_url = "https://api.beamlit.dev/v0"
36
+ self.run_url = "https://run.beamlit.dev/v0"
31
37
 
32
38
 
33
39
  def new_client_from_settings(settings: Settings):
@@ -41,15 +47,15 @@ def new_client_from_settings(settings: Settings):
41
47
 
42
48
 
43
49
  def new_client():
50
+ settings = get_settings()
44
51
  context = current_context()
45
- if context.workspace:
52
+ if context.workspace and not settings.authentication.client.credentials:
46
53
  credentials = load_credentials(context.workspace)
47
54
  client_config = RunClientWithCredentials(
48
55
  credentials=credentials,
49
56
  workspace=context.workspace,
50
57
  )
51
58
  else:
52
- settings = get_settings()
53
59
  credentials = load_credentials_from_settings(settings)
54
60
  client_config = RunClientWithCredentials(
55
61
  credentials=credentials,
@@ -37,7 +37,7 @@ class ClientCredentials(Auth):
37
37
  def refresh_if_needed(self) -> Optional[Exception]:
38
38
  settings = get_settings()
39
39
  if self.credentials.client_credentials and not self.credentials.refresh_token:
40
- headers = {"Authorization": f"Basic {self.credentials.client_credentials}"}
40
+ headers = {"Authorization": f"Basic {self.credentials.client_credentials}", "Content-Type": "application/json"}
41
41
  body = {"grant_type": "client_credentials"}
42
42
  response = requests.post(f"{settings.base_url}/oauth/token", headers=headers, json=body)
43
43
  response.raise_for_status()
beamlit/client.py CHANGED
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import ssl
2
3
  from typing import Any, Optional, Union
3
4
 
@@ -37,8 +38,13 @@ class Client:
37
38
 
38
39
  """
39
40
 
41
+ # Determine the base URL based on the environment
42
+ default_base_url = "https://api.beamlit.com/v0"
43
+ if os.getenv("BL_ENV") == "dev":
44
+ default_base_url = "https://api.beamlit.dev/v0"
45
+
40
46
  raise_on_unexpected_status: bool = field(default=True, kw_only=True)
41
- _base_url: str = field(alias="base_url", default="https://api.beamlit.dev/v0")
47
+ _base_url: str = field(alias="base_url", default=default_base_url)
42
48
  _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
43
49
  _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
44
50
  _provider: httpx.Auth = field(default=None, alias="provider")
@@ -169,8 +175,13 @@ class AuthenticatedClient:
169
175
  provider: AuthProvider to use for authentication
170
176
  """
171
177
 
178
+ # Determine the base URL based on the environment
179
+ default_base_url = "https://api.beamlit.com/v0"
180
+ if os.getenv("BL_ENV") == "dev":
181
+ default_base_url = "https://api.beamlit.dev/v0"
182
+
172
183
  raise_on_unexpected_status: bool = field(default=True, kw_only=True)
173
- _base_url: str = field(alias="base_url", default="https://api.beamlit.dev/v0")
184
+ _base_url: str = field(alias="base_url", default=default_base_url)
174
185
  _cookies: dict[str, str] = field(factory=dict, kw_only=True, alias="cookies")
175
186
  _headers: dict[str, str] = field(factory=dict, kw_only=True, alias="headers")
176
187
  _provider: httpx.Auth = field(default=None, alias="provider")
@@ -18,11 +18,6 @@ from pydantic_settings import (BaseSettings, PydanticBaseSettingsSource,
18
18
  global SETTINGS
19
19
  SETTINGS = None
20
20
 
21
-
22
- def get_settings():
23
- return SETTINGS
24
-
25
-
26
21
  class SettingsAgent(BaseSettings):
27
22
  agent: Union[None, CompiledGraph, BaseChatModel] = None
28
23
  chain: Union[Unset, list[Agent]] = UNSET
@@ -62,15 +57,23 @@ class Settings(BaseSettings):
62
57
  remote: bool = Field(default=False)
63
58
  type: str = Field(default="agent")
64
59
  name: str = Field(default="beamlit-agent")
65
- base_url: str = Field(default="https://api.beamlit.dev/v0")
66
- run_url: str = Field(default="https://run.beamlit.dev")
67
- mcp_hub_url: str = Field(default="https://mcp-hub-server.beamlit.workers.dev")
68
- registry_url: str = Field(default="https://serverless-registry-production.beamlit.workers.dev")
60
+ base_url: str = Field(default="https://api.beamlit.com/v0")
61
+ run_url: str = Field(default="https://run.beamlit.com")
62
+ mcp_hub_url: str = Field(default="https://mcp-hub-server.beamlit.workers.com")
63
+ registry_url: str = Field(default="https://serverless-registry-production.beamlit.workers.com")
69
64
  log_level: str = Field(default="INFO")
70
65
  agent: SettingsAgent = SettingsAgent()
71
66
  server: SettingsServer = SettingsServer()
72
67
  authentication: SettingsAuthentication = SettingsAuthentication()
73
68
 
69
+ def __init__(self, **data):
70
+ super().__init__(**data)
71
+ if os.getenv('BL_ENV') == 'dev':
72
+ self.base_url = "https://api.beamlit.dev/v0"
73
+ self.run_url = "https://run.beamlit.dev"
74
+ self.mcp_hub_url = "https://mcp-hub-server.beamlit.workers.dev"
75
+ self.registry_url = "https://serverless-registry-production.beamlit.workers.dev"
76
+
74
77
  @classmethod
75
78
  def settings_customise_sources(
76
79
  cls,
@@ -88,6 +91,9 @@ class Settings(BaseSettings):
88
91
  init_settings,
89
92
  )
90
93
 
94
+ def get_settings() -> Settings:
95
+ return SETTINGS
96
+
91
97
 
92
98
  def init_agent(
93
99
  client: AuthenticatedClient,
@@ -1,20 +1,21 @@
1
1
  import asyncio
2
- import urllib.parse
3
2
  import warnings
4
3
  from typing import Any, Callable
5
4
 
6
5
  import pydantic
7
- import pydantic_core
8
6
  import typing_extensions as t
7
+ from dataclasses import dataclass
9
8
  from beamlit.api.functions import get_function
10
9
  from beamlit.authentication.authentication import AuthenticatedClient
11
- from beamlit.models.function import Function
12
- from langchain_core.tools.base import BaseTool, BaseToolkit, ToolException
10
+ from beamlit.run import RunClient
11
+ from beamlit.common.settings import get_settings
12
+ from beamlit.models import Function, StoreFunctionParameter
13
+ from langchain_core.tools.base import BaseTool, ToolException
13
14
  from pydantic.json_schema import JsonSchemaValue
14
15
  from pydantic_core import core_schema as cs
15
16
 
16
17
 
17
- def create_schema_model(schema: dict[str, t.Any]) -> type[pydantic.BaseModel]:
18
+ def create_schema_model(parameters: list[StoreFunctionParameter]) -> type[pydantic.BaseModel]:
18
19
  # Create a new model class that returns our JSON schema.
19
20
  # LangChain requires a BaseModel class.
20
21
  class Schema(pydantic.BaseModel):
@@ -25,6 +26,18 @@ def create_schema_model(schema: dict[str, t.Any]) -> type[pydantic.BaseModel]:
25
26
  def __get_pydantic_json_schema__(
26
27
  cls, core_schema: cs.CoreSchema, handler: pydantic.GetJsonSchemaHandler
27
28
  ) -> JsonSchemaValue:
29
+ schema = {
30
+ "type": "object",
31
+ "properties": {},
32
+ "required": [],
33
+ }
34
+ for parameter in parameters:
35
+ schema["properties"][parameter.name] = {
36
+ "type": parameter.type_,
37
+ "description": parameter.description,
38
+ }
39
+ if parameter.required:
40
+ schema["required"].append(parameter.name)
28
41
  return schema
29
42
 
30
43
  return Schema
@@ -35,7 +48,7 @@ class RemoteTool(BaseTool):
35
48
  Remote tool
36
49
  """
37
50
 
38
- client: AuthenticatedClient
51
+ client: RunClient
39
52
  handle_tool_error: bool | str | Callable[[ToolException], str] | None = True
40
53
 
41
54
  @t.override
@@ -48,12 +61,15 @@ class RemoteTool(BaseTool):
48
61
 
49
62
  @t.override
50
63
  async def _arun(self, *args: t.Any, **kwargs: t.Any) -> t.Any:
51
- result = self.client.call_tool(self.name, arguments=kwargs)
52
- response = result.json()
53
- content = pydantic_core.to_json(response["content"]).decode()
54
- if response["isError"]:
55
- raise ToolException(content)
56
- return content
64
+ settings = get_settings()
65
+ result = self.client.run(
66
+ "function",
67
+ self.name,
68
+ settings.environment,
69
+ "POST",
70
+ kwargs,
71
+ )
72
+ return result.text
57
73
 
58
74
  @t.override
59
75
  @property
@@ -61,7 +77,8 @@ class RemoteTool(BaseTool):
61
77
  assert self.args_schema is not None # noqa: S101
62
78
  return self.args_schema
63
79
 
64
- class RemoteToolkit(BaseToolkit):
80
+ @dataclass
81
+ class RemoteToolkit:
65
82
  """
66
83
  Remote toolkit
67
84
  """
@@ -75,27 +92,27 @@ class RemoteToolkit(BaseToolkit):
75
92
  def initialize(self) -> None:
76
93
  """Initialize the session and retrieve tools list"""
77
94
  if self._function is None:
78
- self._function = get_function(self.function, client=self.client)
95
+ self._function = get_function.sync_detailed(self.function, client=self.client).parsed
79
96
 
80
97
  @t.override
81
98
  def get_tools(self) -> list[BaseTool]:
82
- if self._tools is None:
99
+ if self._function is None:
83
100
  raise RuntimeError("Must initialize the toolkit first")
84
101
 
85
102
  if self._function.spec.kit:
86
103
  return [
87
104
  RemoteTool(
88
- client=self.client,
89
- name=func.name,
90
- description=func.description or "",
91
- args_schema=create_schema_model(func.parameters),
105
+ client=RunClient(self.client),
106
+ name=func.name,
107
+ description=func.description or "",
108
+ args_schema=create_schema_model(func.parameters),
92
109
  )
93
110
  for func in self._function.spec.kit
94
111
  ]
95
112
 
96
113
  return [
97
114
  RemoteTool(
98
- client=self.client,
115
+ client=RunClient(self.client),
99
116
  name=self._function.metadata.name,
100
117
  description=self._function.spec.description or "",
101
118
  args_schema=create_schema_model(self._function.spec.parameters),
@@ -29,6 +29,9 @@ from .function_kit import FunctionKit
29
29
  from .function_metadata import FunctionMetadata
30
30
  from .function_release import FunctionRelease
31
31
  from .function_spec import FunctionSpec
32
+ from .get_trace_ids_response_200 import GetTraceIdsResponse200
33
+ from .get_trace_logs_response_200 import GetTraceLogsResponse200
34
+ from .get_trace_response_200 import GetTraceResponse200
32
35
  from .get_workspace_service_accounts_response_200_item import GetWorkspaceServiceAccountsResponse200Item
33
36
  from .increase_and_rate_metric import IncreaseAndRateMetric
34
37
  from .integration_config import IntegrationConfig
@@ -128,6 +131,9 @@ __all__ = (
128
131
  "FunctionMetadata",
129
132
  "FunctionRelease",
130
133
  "FunctionSpec",
134
+ "GetTraceIdsResponse200",
135
+ "GetTraceLogsResponse200",
136
+ "GetTraceResponse200",
131
137
  "GetWorkspaceServiceAccountsResponse200Item",
132
138
  "IncreaseAndRateMetric",
133
139
  "IntegrationConfig",