flyte 0.2.0b1__py3-none-any.whl → 2.0.0b46__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- flyte/__init__.py +83 -30
- flyte/_bin/connect.py +61 -0
- flyte/_bin/debug.py +38 -0
- flyte/_bin/runtime.py +87 -19
- flyte/_bin/serve.py +351 -0
- flyte/_build.py +3 -2
- flyte/_cache/cache.py +6 -5
- flyte/_cache/local_cache.py +216 -0
- flyte/_code_bundle/_ignore.py +31 -5
- flyte/_code_bundle/_packaging.py +42 -11
- flyte/_code_bundle/_utils.py +57 -34
- flyte/_code_bundle/bundle.py +130 -27
- flyte/_constants.py +1 -0
- flyte/_context.py +21 -5
- flyte/_custom_context.py +73 -0
- flyte/_debug/constants.py +37 -0
- flyte/_debug/utils.py +17 -0
- flyte/_debug/vscode.py +315 -0
- flyte/_deploy.py +396 -75
- flyte/_deployer.py +109 -0
- flyte/_environment.py +94 -11
- flyte/_excepthook.py +37 -0
- flyte/_group.py +2 -1
- flyte/_hash.py +1 -16
- flyte/_image.py +544 -231
- flyte/_initialize.py +456 -316
- flyte/_interface.py +40 -5
- flyte/_internal/controllers/__init__.py +22 -8
- flyte/_internal/controllers/_local_controller.py +159 -35
- flyte/_internal/controllers/_trace.py +18 -10
- flyte/_internal/controllers/remote/__init__.py +38 -9
- flyte/_internal/controllers/remote/_action.py +82 -12
- flyte/_internal/controllers/remote/_client.py +6 -2
- flyte/_internal/controllers/remote/_controller.py +290 -64
- flyte/_internal/controllers/remote/_core.py +155 -95
- flyte/_internal/controllers/remote/_informer.py +40 -20
- flyte/_internal/controllers/remote/_service_protocol.py +2 -2
- flyte/_internal/imagebuild/__init__.py +2 -10
- flyte/_internal/imagebuild/docker_builder.py +391 -84
- flyte/_internal/imagebuild/image_builder.py +111 -55
- flyte/_internal/imagebuild/remote_builder.py +409 -0
- flyte/_internal/imagebuild/utils.py +79 -0
- flyte/_internal/resolvers/_app_env_module.py +92 -0
- flyte/_internal/resolvers/_task_module.py +5 -38
- flyte/_internal/resolvers/app_env.py +26 -0
- flyte/_internal/resolvers/common.py +8 -1
- flyte/_internal/resolvers/default.py +2 -2
- flyte/_internal/runtime/convert.py +319 -36
- flyte/_internal/runtime/entrypoints.py +106 -18
- flyte/_internal/runtime/io.py +71 -23
- flyte/_internal/runtime/resources_serde.py +21 -7
- flyte/_internal/runtime/reuse.py +125 -0
- flyte/_internal/runtime/rusty.py +196 -0
- flyte/_internal/runtime/task_serde.py +239 -66
- flyte/_internal/runtime/taskrunner.py +48 -8
- flyte/_internal/runtime/trigger_serde.py +162 -0
- flyte/_internal/runtime/types_serde.py +7 -16
- flyte/_keyring/file.py +115 -0
- flyte/_link.py +30 -0
- flyte/_logging.py +241 -42
- flyte/_map.py +312 -0
- flyte/_metrics.py +59 -0
- flyte/_module.py +74 -0
- flyte/_pod.py +30 -0
- flyte/_resources.py +296 -33
- flyte/_retry.py +1 -7
- flyte/_reusable_environment.py +72 -7
- flyte/_run.py +462 -132
- flyte/_secret.py +47 -11
- flyte/_serve.py +333 -0
- flyte/_task.py +245 -56
- flyte/_task_environment.py +219 -97
- flyte/_task_plugins.py +47 -0
- flyte/_tools.py +8 -8
- flyte/_trace.py +15 -24
- flyte/_trigger.py +1027 -0
- flyte/_utils/__init__.py +12 -1
- flyte/_utils/asyn.py +3 -1
- flyte/_utils/async_cache.py +139 -0
- flyte/_utils/coro_management.py +5 -4
- flyte/_utils/description_parser.py +19 -0
- flyte/_utils/docker_credentials.py +173 -0
- flyte/_utils/helpers.py +45 -19
- flyte/_utils/module_loader.py +123 -0
- flyte/_utils/org_discovery.py +57 -0
- flyte/_utils/uv_script_parser.py +8 -1
- flyte/_version.py +16 -3
- flyte/app/__init__.py +27 -0
- flyte/app/_app_environment.py +362 -0
- flyte/app/_connector_environment.py +40 -0
- flyte/app/_deploy.py +130 -0
- flyte/app/_parameter.py +343 -0
- flyte/app/_runtime/__init__.py +3 -0
- flyte/app/_runtime/app_serde.py +383 -0
- flyte/app/_types.py +113 -0
- flyte/app/extras/__init__.py +9 -0
- flyte/app/extras/_auth_middleware.py +217 -0
- flyte/app/extras/_fastapi.py +93 -0
- flyte/app/extras/_model_loader/__init__.py +3 -0
- flyte/app/extras/_model_loader/config.py +7 -0
- flyte/app/extras/_model_loader/loader.py +288 -0
- flyte/cli/__init__.py +12 -0
- flyte/cli/_abort.py +28 -0
- flyte/cli/_build.py +114 -0
- flyte/cli/_common.py +493 -0
- flyte/cli/_create.py +371 -0
- flyte/cli/_delete.py +45 -0
- flyte/cli/_deploy.py +401 -0
- flyte/cli/_gen.py +316 -0
- flyte/cli/_get.py +446 -0
- flyte/cli/_option.py +33 -0
- flyte/{_cli → cli}/_params.py +57 -17
- flyte/cli/_plugins.py +209 -0
- flyte/cli/_prefetch.py +292 -0
- flyte/cli/_run.py +690 -0
- flyte/cli/_serve.py +338 -0
- flyte/cli/_update.py +86 -0
- flyte/cli/_user.py +20 -0
- flyte/cli/main.py +246 -0
- flyte/config/__init__.py +2 -167
- flyte/config/_config.py +215 -163
- flyte/config/_internal.py +10 -1
- flyte/config/_reader.py +225 -0
- flyte/connectors/__init__.py +11 -0
- flyte/connectors/_connector.py +330 -0
- flyte/connectors/_server.py +194 -0
- flyte/connectors/utils.py +159 -0
- flyte/errors.py +134 -2
- flyte/extend.py +24 -0
- flyte/extras/_container.py +69 -56
- flyte/git/__init__.py +3 -0
- flyte/git/_config.py +279 -0
- flyte/io/__init__.py +8 -1
- flyte/io/{structured_dataset → _dataframe}/__init__.py +32 -30
- flyte/io/{structured_dataset → _dataframe}/basic_dfs.py +75 -68
- flyte/io/{structured_dataset/structured_dataset.py → _dataframe/dataframe.py} +207 -242
- flyte/io/_dir.py +575 -113
- flyte/io/_file.py +587 -141
- flyte/io/_hashing_io.py +342 -0
- flyte/io/extend.py +7 -0
- flyte/models.py +635 -0
- flyte/prefetch/__init__.py +22 -0
- flyte/prefetch/_hf_model.py +563 -0
- flyte/remote/__init__.py +14 -3
- flyte/remote/_action.py +879 -0
- flyte/remote/_app.py +346 -0
- flyte/remote/_auth_metadata.py +42 -0
- flyte/remote/_client/_protocols.py +62 -4
- flyte/remote/_client/auth/_auth_utils.py +19 -0
- flyte/remote/_client/auth/_authenticators/base.py +8 -2
- flyte/remote/_client/auth/_authenticators/device_code.py +4 -5
- flyte/remote/_client/auth/_authenticators/factory.py +4 -0
- flyte/remote/_client/auth/_authenticators/passthrough.py +79 -0
- flyte/remote/_client/auth/_authenticators/pkce.py +17 -18
- flyte/remote/_client/auth/_channel.py +47 -18
- flyte/remote/_client/auth/_client_config.py +5 -3
- flyte/remote/_client/auth/_keyring.py +15 -2
- flyte/remote/_client/auth/_token_client.py +3 -3
- flyte/remote/_client/controlplane.py +206 -18
- flyte/remote/_common.py +66 -0
- flyte/remote/_data.py +107 -22
- flyte/remote/_logs.py +116 -33
- flyte/remote/_project.py +21 -19
- flyte/remote/_run.py +164 -631
- flyte/remote/_secret.py +72 -29
- flyte/remote/_task.py +387 -46
- flyte/remote/_trigger.py +368 -0
- flyte/remote/_user.py +43 -0
- flyte/report/_report.py +10 -6
- flyte/storage/__init__.py +13 -1
- flyte/storage/_config.py +237 -0
- flyte/storage/_parallel_reader.py +289 -0
- flyte/storage/_storage.py +268 -59
- flyte/syncify/__init__.py +56 -0
- flyte/syncify/_api.py +414 -0
- flyte/types/__init__.py +39 -0
- flyte/types/_interface.py +22 -7
- flyte/{io/pickle/transformer.py → types/_pickle.py} +37 -9
- flyte/types/_string_literals.py +8 -9
- flyte/types/_type_engine.py +226 -126
- flyte/types/_utils.py +1 -1
- flyte-2.0.0b46.data/scripts/debug.py +38 -0
- flyte-2.0.0b46.data/scripts/runtime.py +194 -0
- flyte-2.0.0b46.dist-info/METADATA +352 -0
- flyte-2.0.0b46.dist-info/RECORD +221 -0
- flyte-2.0.0b46.dist-info/entry_points.txt +8 -0
- flyte-2.0.0b46.dist-info/licenses/LICENSE +201 -0
- flyte/_api_commons.py +0 -3
- flyte/_cli/_common.py +0 -299
- flyte/_cli/_create.py +0 -42
- flyte/_cli/_delete.py +0 -23
- flyte/_cli/_deploy.py +0 -140
- flyte/_cli/_get.py +0 -235
- flyte/_cli/_run.py +0 -174
- flyte/_cli/main.py +0 -98
- flyte/_datastructures.py +0 -342
- flyte/_internal/controllers/pbhash.py +0 -39
- flyte/_protos/common/authorization_pb2.py +0 -66
- flyte/_protos/common/authorization_pb2.pyi +0 -108
- flyte/_protos/common/authorization_pb2_grpc.py +0 -4
- flyte/_protos/common/identifier_pb2.py +0 -71
- flyte/_protos/common/identifier_pb2.pyi +0 -82
- flyte/_protos/common/identifier_pb2_grpc.py +0 -4
- flyte/_protos/common/identity_pb2.py +0 -48
- flyte/_protos/common/identity_pb2.pyi +0 -72
- flyte/_protos/common/identity_pb2_grpc.py +0 -4
- flyte/_protos/common/list_pb2.py +0 -36
- flyte/_protos/common/list_pb2.pyi +0 -69
- flyte/_protos/common/list_pb2_grpc.py +0 -4
- flyte/_protos/common/policy_pb2.py +0 -37
- flyte/_protos/common/policy_pb2.pyi +0 -27
- flyte/_protos/common/policy_pb2_grpc.py +0 -4
- flyte/_protos/common/role_pb2.py +0 -37
- flyte/_protos/common/role_pb2.pyi +0 -53
- flyte/_protos/common/role_pb2_grpc.py +0 -4
- flyte/_protos/common/runtime_version_pb2.py +0 -28
- flyte/_protos/common/runtime_version_pb2.pyi +0 -24
- flyte/_protos/common/runtime_version_pb2_grpc.py +0 -4
- flyte/_protos/logs/dataplane/payload_pb2.py +0 -96
- flyte/_protos/logs/dataplane/payload_pb2.pyi +0 -168
- flyte/_protos/logs/dataplane/payload_pb2_grpc.py +0 -4
- flyte/_protos/secret/definition_pb2.py +0 -49
- flyte/_protos/secret/definition_pb2.pyi +0 -93
- flyte/_protos/secret/definition_pb2_grpc.py +0 -4
- flyte/_protos/secret/payload_pb2.py +0 -62
- flyte/_protos/secret/payload_pb2.pyi +0 -94
- flyte/_protos/secret/payload_pb2_grpc.py +0 -4
- flyte/_protos/secret/secret_pb2.py +0 -38
- flyte/_protos/secret/secret_pb2.pyi +0 -6
- flyte/_protos/secret/secret_pb2_grpc.py +0 -198
- flyte/_protos/secret/secret_pb2_grpc_grpc.py +0 -198
- flyte/_protos/validate/validate/validate_pb2.py +0 -76
- flyte/_protos/workflow/node_execution_service_pb2.py +0 -26
- flyte/_protos/workflow/node_execution_service_pb2.pyi +0 -4
- flyte/_protos/workflow/node_execution_service_pb2_grpc.py +0 -32
- flyte/_protos/workflow/queue_service_pb2.py +0 -106
- flyte/_protos/workflow/queue_service_pb2.pyi +0 -141
- flyte/_protos/workflow/queue_service_pb2_grpc.py +0 -172
- flyte/_protos/workflow/run_definition_pb2.py +0 -128
- flyte/_protos/workflow/run_definition_pb2.pyi +0 -310
- flyte/_protos/workflow/run_definition_pb2_grpc.py +0 -4
- flyte/_protos/workflow/run_logs_service_pb2.py +0 -41
- flyte/_protos/workflow/run_logs_service_pb2.pyi +0 -28
- flyte/_protos/workflow/run_logs_service_pb2_grpc.py +0 -69
- flyte/_protos/workflow/run_service_pb2.py +0 -133
- flyte/_protos/workflow/run_service_pb2.pyi +0 -175
- flyte/_protos/workflow/run_service_pb2_grpc.py +0 -412
- flyte/_protos/workflow/state_service_pb2.py +0 -58
- flyte/_protos/workflow/state_service_pb2.pyi +0 -71
- flyte/_protos/workflow/state_service_pb2_grpc.py +0 -138
- flyte/_protos/workflow/task_definition_pb2.py +0 -72
- flyte/_protos/workflow/task_definition_pb2.pyi +0 -65
- flyte/_protos/workflow/task_definition_pb2_grpc.py +0 -4
- flyte/_protos/workflow/task_service_pb2.py +0 -44
- flyte/_protos/workflow/task_service_pb2.pyi +0 -31
- flyte/_protos/workflow/task_service_pb2_grpc.py +0 -104
- flyte/io/_dataframe.py +0 -0
- flyte/io/pickle/__init__.py +0 -0
- flyte/remote/_console.py +0 -18
- flyte-0.2.0b1.dist-info/METADATA +0 -179
- flyte-0.2.0b1.dist-info/RECORD +0 -204
- flyte-0.2.0b1.dist-info/entry_points.txt +0 -3
- /flyte/{_cli → _debug}/__init__.py +0 -0
- /flyte/{_protos → _keyring}/__init__.py +0 -0
- {flyte-0.2.0b1.dist-info → flyte-2.0.0b46.dist-info}/WHEEL +0 -0
- {flyte-0.2.0b1.dist-info → flyte-2.0.0b46.dist-info}/top_level.txt +0 -0
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
+
from typing import Literal, Optional
|
|
4
5
|
|
|
5
|
-
from
|
|
6
|
+
from flyteidl2.common import identifier_pb2, phase_pb2
|
|
7
|
+
from flyteidl2.core import execution_pb2, interface_pb2
|
|
8
|
+
from flyteidl2.task import common_pb2, task_definition_pb2
|
|
9
|
+
from flyteidl2.workflow import (
|
|
10
|
+
run_definition_pb2,
|
|
11
|
+
state_service_pb2,
|
|
12
|
+
)
|
|
13
|
+
from google.protobuf import timestamp_pb2
|
|
6
14
|
|
|
7
|
-
from flyte.
|
|
8
|
-
|
|
15
|
+
from flyte.models import GroupData
|
|
16
|
+
|
|
17
|
+
ActionType = Literal["task", "trace"]
|
|
9
18
|
|
|
10
19
|
|
|
11
20
|
@dataclass
|
|
@@ -15,19 +24,23 @@ class Action:
|
|
|
15
24
|
Holds the inmemory state of a task. It is combined representation of local and remote states.
|
|
16
25
|
"""
|
|
17
26
|
|
|
18
|
-
action_id:
|
|
27
|
+
action_id: identifier_pb2.ActionIdentifier
|
|
19
28
|
parent_action_name: str
|
|
29
|
+
type: ActionType = "task" # type of action, task or trace
|
|
20
30
|
friendly_name: str | None = None
|
|
21
31
|
group: GroupData | None = None
|
|
22
32
|
task: task_definition_pb2.TaskSpec | None = None
|
|
33
|
+
trace: run_definition_pb2.TraceAction | None = None
|
|
23
34
|
inputs_uri: str | None = None
|
|
24
35
|
run_output_base: str | None = None
|
|
25
36
|
realized_outputs_uri: str | None = None
|
|
26
37
|
err: execution_pb2.ExecutionError | None = None
|
|
27
|
-
phase:
|
|
38
|
+
phase: phase_pb2.ActionPhase | None = None
|
|
28
39
|
started: bool = False
|
|
29
40
|
retries: int = 0
|
|
41
|
+
queue: Optional[str] = None # The queue to which this action was submitted.
|
|
30
42
|
client_err: Exception | None = None # This error is set when something goes wrong in the controller.
|
|
43
|
+
cache_key: str | None = None # None means no caching, otherwise it is the version of the cache.
|
|
31
44
|
|
|
32
45
|
@property
|
|
33
46
|
def name(self) -> str:
|
|
@@ -42,10 +55,10 @@ class Action:
|
|
|
42
55
|
if self.phase is None:
|
|
43
56
|
return False
|
|
44
57
|
return self.phase in [
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
58
|
+
phase_pb2.ACTION_PHASE_FAILED,
|
|
59
|
+
phase_pb2.ACTION_PHASE_SUCCEEDED,
|
|
60
|
+
phase_pb2.ACTION_PHASE_ABORTED,
|
|
61
|
+
phase_pb2.ACTION_PHASE_TIMED_OUT,
|
|
49
62
|
]
|
|
50
63
|
|
|
51
64
|
def increment_retries(self):
|
|
@@ -61,7 +74,7 @@ class Action:
|
|
|
61
74
|
|
|
62
75
|
def mark_cancelled(self):
|
|
63
76
|
self.mark_started()
|
|
64
|
-
self.phase =
|
|
77
|
+
self.phase = phase_pb2.ACTION_PHASE_ABORTED
|
|
65
78
|
|
|
66
79
|
def merge_state(self, obj: state_service_pb2.ActionUpdate):
|
|
67
80
|
"""
|
|
@@ -91,6 +104,8 @@ class Action:
|
|
|
91
104
|
if not self.started:
|
|
92
105
|
self.task = action.task
|
|
93
106
|
|
|
107
|
+
self.cache_key = action.cache_key
|
|
108
|
+
|
|
94
109
|
def set_client_error(self, exc: Exception):
|
|
95
110
|
self.client_err = exc
|
|
96
111
|
|
|
@@ -101,11 +116,13 @@ class Action:
|
|
|
101
116
|
def from_task(
|
|
102
117
|
cls,
|
|
103
118
|
parent_action_name: str,
|
|
104
|
-
sub_action_id:
|
|
119
|
+
sub_action_id: identifier_pb2.ActionIdentifier,
|
|
105
120
|
group_data: GroupData | None,
|
|
106
121
|
task_spec: task_definition_pb2.TaskSpec,
|
|
107
122
|
inputs_uri: str,
|
|
108
123
|
run_output_base: str,
|
|
124
|
+
cache_key: str | None = None,
|
|
125
|
+
queue: Optional[str] = None,
|
|
109
126
|
) -> Action:
|
|
110
127
|
return cls(
|
|
111
128
|
action_id=sub_action_id,
|
|
@@ -115,6 +132,8 @@ class Action:
|
|
|
115
132
|
task=task_spec,
|
|
116
133
|
inputs_uri=inputs_uri,
|
|
117
134
|
run_output_base=run_output_base,
|
|
135
|
+
cache_key=cache_key,
|
|
136
|
+
queue=queue,
|
|
118
137
|
)
|
|
119
138
|
|
|
120
139
|
@classmethod
|
|
@@ -130,7 +149,7 @@ class Action:
|
|
|
130
149
|
"""
|
|
131
150
|
from flyte._logging import logger
|
|
132
151
|
|
|
133
|
-
logger.
|
|
152
|
+
logger.debug(f"In Action from_state {obj.action_id} {obj.phase} {obj.output_uri}")
|
|
134
153
|
return cls(
|
|
135
154
|
action_id=obj.action_id,
|
|
136
155
|
parent_action_name=parent_action_name,
|
|
@@ -139,3 +158,54 @@ class Action:
|
|
|
139
158
|
err=obj.error if obj.HasField("error") else None,
|
|
140
159
|
realized_outputs_uri=obj.output_uri,
|
|
141
160
|
)
|
|
161
|
+
|
|
162
|
+
@classmethod
|
|
163
|
+
def from_trace(
|
|
164
|
+
cls,
|
|
165
|
+
parent_action_name: str,
|
|
166
|
+
action_id: identifier_pb2.ActionIdentifier,
|
|
167
|
+
friendly_name: str,
|
|
168
|
+
group_data: GroupData | None,
|
|
169
|
+
inputs_uri: str,
|
|
170
|
+
outputs_uri: str,
|
|
171
|
+
start_time: float, # Unix timestamp in seconds with fractional seconds
|
|
172
|
+
end_time: float, # Unix timestamp in seconds with fractional seconds
|
|
173
|
+
run_output_base: str,
|
|
174
|
+
report_uri: str | None = None,
|
|
175
|
+
typed_interface: interface_pb2.TypedInterface | None = None,
|
|
176
|
+
) -> Action:
|
|
177
|
+
"""
|
|
178
|
+
This creates a new action for tracing purposes. It is used to track the execution of a trace.
|
|
179
|
+
"""
|
|
180
|
+
st = timestamp_pb2.Timestamp()
|
|
181
|
+
st.FromSeconds(int(start_time))
|
|
182
|
+
st.nanos = int((start_time % 1) * 1e9)
|
|
183
|
+
|
|
184
|
+
et = timestamp_pb2.Timestamp()
|
|
185
|
+
et.FromSeconds(int(end_time))
|
|
186
|
+
et.nanos = int((end_time % 1) * 1e9)
|
|
187
|
+
|
|
188
|
+
spec = task_definition_pb2.TraceSpec(interface=typed_interface) if typed_interface else None
|
|
189
|
+
|
|
190
|
+
return cls(
|
|
191
|
+
action_id=action_id,
|
|
192
|
+
parent_action_name=parent_action_name,
|
|
193
|
+
type="trace",
|
|
194
|
+
friendly_name=friendly_name,
|
|
195
|
+
group=group_data,
|
|
196
|
+
inputs_uri=inputs_uri,
|
|
197
|
+
realized_outputs_uri=outputs_uri,
|
|
198
|
+
phase=phase_pb2.ACTION_PHASE_SUCCEEDED,
|
|
199
|
+
run_output_base=run_output_base,
|
|
200
|
+
trace=run_definition_pb2.TraceAction(
|
|
201
|
+
name=friendly_name,
|
|
202
|
+
phase=phase_pb2.ACTION_PHASE_SUCCEEDED,
|
|
203
|
+
start_time=st,
|
|
204
|
+
end_time=et,
|
|
205
|
+
outputs=common_pb2.OutputReferences(
|
|
206
|
+
output_uri=outputs_uri,
|
|
207
|
+
report_uri=report_uri,
|
|
208
|
+
),
|
|
209
|
+
spec=spec,
|
|
210
|
+
),
|
|
211
|
+
)
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import grpc.aio
|
|
4
|
+
from flyteidl2.workflow import queue_service_pb2_grpc, state_service_pb2_grpc
|
|
4
5
|
|
|
5
|
-
from flyte._protos.workflow import queue_service_pb2_grpc, state_service_pb2_grpc
|
|
6
6
|
from flyte.remote import create_channel
|
|
7
7
|
|
|
8
8
|
from ._service_protocol import QueueService, StateService
|
|
@@ -20,7 +20,11 @@ class ControllerClient:
|
|
|
20
20
|
|
|
21
21
|
@classmethod
|
|
22
22
|
async def for_endpoint(cls, endpoint: str, insecure: bool = False, **kwargs) -> ControllerClient:
|
|
23
|
-
return cls(await create_channel(endpoint, insecure=insecure, **kwargs))
|
|
23
|
+
return cls(await create_channel(endpoint, None, insecure=insecure, **kwargs))
|
|
24
|
+
|
|
25
|
+
@classmethod
|
|
26
|
+
async def for_api_key(cls, api_key: str, insecure: bool = False, **kwargs) -> ControllerClient:
|
|
27
|
+
return cls(await create_channel(None, api_key, insecure=insecure, **kwargs))
|
|
24
28
|
|
|
25
29
|
@property
|
|
26
30
|
def state_service(self) -> StateService:
|