flyte 0.1.0__py3-none-any.whl → 0.2.0a0__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.

Potentially problematic release.


This version of flyte might be problematic. Click here for more details.

Files changed (219) hide show
  1. flyte/__init__.py +78 -2
  2. flyte/_bin/__init__.py +0 -0
  3. flyte/_bin/runtime.py +152 -0
  4. flyte/_build.py +26 -0
  5. flyte/_cache/__init__.py +12 -0
  6. flyte/_cache/cache.py +145 -0
  7. flyte/_cache/defaults.py +9 -0
  8. flyte/_cache/policy_function_body.py +42 -0
  9. flyte/_code_bundle/__init__.py +8 -0
  10. flyte/_code_bundle/_ignore.py +113 -0
  11. flyte/_code_bundle/_packaging.py +187 -0
  12. flyte/_code_bundle/_utils.py +323 -0
  13. flyte/_code_bundle/bundle.py +209 -0
  14. flyte/_context.py +152 -0
  15. flyte/_deploy.py +243 -0
  16. flyte/_doc.py +29 -0
  17. flyte/_docstring.py +32 -0
  18. flyte/_environment.py +84 -0
  19. flyte/_excepthook.py +37 -0
  20. flyte/_group.py +32 -0
  21. flyte/_hash.py +23 -0
  22. flyte/_image.py +762 -0
  23. flyte/_initialize.py +492 -0
  24. flyte/_interface.py +84 -0
  25. flyte/_internal/__init__.py +3 -0
  26. flyte/_internal/controllers/__init__.py +128 -0
  27. flyte/_internal/controllers/_local_controller.py +193 -0
  28. flyte/_internal/controllers/_trace.py +41 -0
  29. flyte/_internal/controllers/remote/__init__.py +60 -0
  30. flyte/_internal/controllers/remote/_action.py +146 -0
  31. flyte/_internal/controllers/remote/_client.py +47 -0
  32. flyte/_internal/controllers/remote/_controller.py +494 -0
  33. flyte/_internal/controllers/remote/_core.py +410 -0
  34. flyte/_internal/controllers/remote/_informer.py +361 -0
  35. flyte/_internal/controllers/remote/_service_protocol.py +50 -0
  36. flyte/_internal/imagebuild/__init__.py +11 -0
  37. flyte/_internal/imagebuild/docker_builder.py +427 -0
  38. flyte/_internal/imagebuild/image_builder.py +246 -0
  39. flyte/_internal/imagebuild/remote_builder.py +0 -0
  40. flyte/_internal/resolvers/__init__.py +0 -0
  41. flyte/_internal/resolvers/_task_module.py +54 -0
  42. flyte/_internal/resolvers/common.py +31 -0
  43. flyte/_internal/resolvers/default.py +28 -0
  44. flyte/_internal/runtime/__init__.py +0 -0
  45. flyte/_internal/runtime/convert.py +342 -0
  46. flyte/_internal/runtime/entrypoints.py +135 -0
  47. flyte/_internal/runtime/io.py +136 -0
  48. flyte/_internal/runtime/resources_serde.py +138 -0
  49. flyte/_internal/runtime/task_serde.py +330 -0
  50. flyte/_internal/runtime/taskrunner.py +191 -0
  51. flyte/_internal/runtime/types_serde.py +54 -0
  52. flyte/_logging.py +135 -0
  53. flyte/_map.py +215 -0
  54. flyte/_pod.py +19 -0
  55. flyte/_protos/__init__.py +0 -0
  56. flyte/_protos/common/authorization_pb2.py +66 -0
  57. flyte/_protos/common/authorization_pb2.pyi +108 -0
  58. flyte/_protos/common/authorization_pb2_grpc.py +4 -0
  59. flyte/_protos/common/identifier_pb2.py +71 -0
  60. flyte/_protos/common/identifier_pb2.pyi +82 -0
  61. flyte/_protos/common/identifier_pb2_grpc.py +4 -0
  62. flyte/_protos/common/identity_pb2.py +48 -0
  63. flyte/_protos/common/identity_pb2.pyi +72 -0
  64. flyte/_protos/common/identity_pb2_grpc.py +4 -0
  65. flyte/_protos/common/list_pb2.py +36 -0
  66. flyte/_protos/common/list_pb2.pyi +71 -0
  67. flyte/_protos/common/list_pb2_grpc.py +4 -0
  68. flyte/_protos/common/policy_pb2.py +37 -0
  69. flyte/_protos/common/policy_pb2.pyi +27 -0
  70. flyte/_protos/common/policy_pb2_grpc.py +4 -0
  71. flyte/_protos/common/role_pb2.py +37 -0
  72. flyte/_protos/common/role_pb2.pyi +53 -0
  73. flyte/_protos/common/role_pb2_grpc.py +4 -0
  74. flyte/_protos/common/runtime_version_pb2.py +28 -0
  75. flyte/_protos/common/runtime_version_pb2.pyi +24 -0
  76. flyte/_protos/common/runtime_version_pb2_grpc.py +4 -0
  77. flyte/_protos/logs/dataplane/payload_pb2.py +100 -0
  78. flyte/_protos/logs/dataplane/payload_pb2.pyi +177 -0
  79. flyte/_protos/logs/dataplane/payload_pb2_grpc.py +4 -0
  80. flyte/_protos/secret/definition_pb2.py +49 -0
  81. flyte/_protos/secret/definition_pb2.pyi +93 -0
  82. flyte/_protos/secret/definition_pb2_grpc.py +4 -0
  83. flyte/_protos/secret/payload_pb2.py +62 -0
  84. flyte/_protos/secret/payload_pb2.pyi +94 -0
  85. flyte/_protos/secret/payload_pb2_grpc.py +4 -0
  86. flyte/_protos/secret/secret_pb2.py +38 -0
  87. flyte/_protos/secret/secret_pb2.pyi +6 -0
  88. flyte/_protos/secret/secret_pb2_grpc.py +198 -0
  89. flyte/_protos/secret/secret_pb2_grpc_grpc.py +198 -0
  90. flyte/_protos/validate/validate/validate_pb2.py +76 -0
  91. flyte/_protos/workflow/common_pb2.py +27 -0
  92. flyte/_protos/workflow/common_pb2.pyi +14 -0
  93. flyte/_protos/workflow/common_pb2_grpc.py +4 -0
  94. flyte/_protos/workflow/environment_pb2.py +29 -0
  95. flyte/_protos/workflow/environment_pb2.pyi +12 -0
  96. flyte/_protos/workflow/environment_pb2_grpc.py +4 -0
  97. flyte/_protos/workflow/node_execution_service_pb2.py +26 -0
  98. flyte/_protos/workflow/node_execution_service_pb2.pyi +4 -0
  99. flyte/_protos/workflow/node_execution_service_pb2_grpc.py +32 -0
  100. flyte/_protos/workflow/queue_service_pb2.py +105 -0
  101. flyte/_protos/workflow/queue_service_pb2.pyi +146 -0
  102. flyte/_protos/workflow/queue_service_pb2_grpc.py +172 -0
  103. flyte/_protos/workflow/run_definition_pb2.py +128 -0
  104. flyte/_protos/workflow/run_definition_pb2.pyi +314 -0
  105. flyte/_protos/workflow/run_definition_pb2_grpc.py +4 -0
  106. flyte/_protos/workflow/run_logs_service_pb2.py +41 -0
  107. flyte/_protos/workflow/run_logs_service_pb2.pyi +28 -0
  108. flyte/_protos/workflow/run_logs_service_pb2_grpc.py +69 -0
  109. flyte/_protos/workflow/run_service_pb2.py +129 -0
  110. flyte/_protos/workflow/run_service_pb2.pyi +171 -0
  111. flyte/_protos/workflow/run_service_pb2_grpc.py +412 -0
  112. flyte/_protos/workflow/state_service_pb2.py +66 -0
  113. flyte/_protos/workflow/state_service_pb2.pyi +75 -0
  114. flyte/_protos/workflow/state_service_pb2_grpc.py +138 -0
  115. flyte/_protos/workflow/task_definition_pb2.py +79 -0
  116. flyte/_protos/workflow/task_definition_pb2.pyi +81 -0
  117. flyte/_protos/workflow/task_definition_pb2_grpc.py +4 -0
  118. flyte/_protos/workflow/task_service_pb2.py +60 -0
  119. flyte/_protos/workflow/task_service_pb2.pyi +59 -0
  120. flyte/_protos/workflow/task_service_pb2_grpc.py +138 -0
  121. flyte/_resources.py +226 -0
  122. flyte/_retry.py +32 -0
  123. flyte/_reusable_environment.py +25 -0
  124. flyte/_run.py +482 -0
  125. flyte/_secret.py +61 -0
  126. flyte/_task.py +449 -0
  127. flyte/_task_environment.py +183 -0
  128. flyte/_timeout.py +47 -0
  129. flyte/_tools.py +27 -0
  130. flyte/_trace.py +120 -0
  131. flyte/_utils/__init__.py +26 -0
  132. flyte/_utils/asyn.py +119 -0
  133. flyte/_utils/async_cache.py +139 -0
  134. flyte/_utils/coro_management.py +23 -0
  135. flyte/_utils/file_handling.py +72 -0
  136. flyte/_utils/helpers.py +134 -0
  137. flyte/_utils/lazy_module.py +54 -0
  138. flyte/_utils/org_discovery.py +57 -0
  139. flyte/_utils/uv_script_parser.py +49 -0
  140. flyte/_version.py +21 -0
  141. flyte/cli/__init__.py +3 -0
  142. flyte/cli/_abort.py +28 -0
  143. flyte/cli/_common.py +337 -0
  144. flyte/cli/_create.py +145 -0
  145. flyte/cli/_delete.py +23 -0
  146. flyte/cli/_deploy.py +152 -0
  147. flyte/cli/_gen.py +163 -0
  148. flyte/cli/_get.py +310 -0
  149. flyte/cli/_params.py +538 -0
  150. flyte/cli/_run.py +231 -0
  151. flyte/cli/main.py +166 -0
  152. flyte/config/__init__.py +3 -0
  153. flyte/config/_config.py +216 -0
  154. flyte/config/_internal.py +64 -0
  155. flyte/config/_reader.py +207 -0
  156. flyte/connectors/__init__.py +0 -0
  157. flyte/errors.py +172 -0
  158. flyte/extras/__init__.py +5 -0
  159. flyte/extras/_container.py +263 -0
  160. flyte/io/__init__.py +27 -0
  161. flyte/io/_dir.py +448 -0
  162. flyte/io/_file.py +467 -0
  163. flyte/io/_structured_dataset/__init__.py +129 -0
  164. flyte/io/_structured_dataset/basic_dfs.py +219 -0
  165. flyte/io/_structured_dataset/structured_dataset.py +1061 -0
  166. flyte/models.py +391 -0
  167. flyte/remote/__init__.py +26 -0
  168. flyte/remote/_client/__init__.py +0 -0
  169. flyte/remote/_client/_protocols.py +133 -0
  170. flyte/remote/_client/auth/__init__.py +12 -0
  171. flyte/remote/_client/auth/_auth_utils.py +14 -0
  172. flyte/remote/_client/auth/_authenticators/__init__.py +0 -0
  173. flyte/remote/_client/auth/_authenticators/base.py +397 -0
  174. flyte/remote/_client/auth/_authenticators/client_credentials.py +73 -0
  175. flyte/remote/_client/auth/_authenticators/device_code.py +118 -0
  176. flyte/remote/_client/auth/_authenticators/external_command.py +79 -0
  177. flyte/remote/_client/auth/_authenticators/factory.py +200 -0
  178. flyte/remote/_client/auth/_authenticators/pkce.py +516 -0
  179. flyte/remote/_client/auth/_channel.py +215 -0
  180. flyte/remote/_client/auth/_client_config.py +83 -0
  181. flyte/remote/_client/auth/_default_html.py +32 -0
  182. flyte/remote/_client/auth/_grpc_utils/__init__.py +0 -0
  183. flyte/remote/_client/auth/_grpc_utils/auth_interceptor.py +288 -0
  184. flyte/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py +151 -0
  185. flyte/remote/_client/auth/_keyring.py +143 -0
  186. flyte/remote/_client/auth/_token_client.py +260 -0
  187. flyte/remote/_client/auth/errors.py +16 -0
  188. flyte/remote/_client/controlplane.py +95 -0
  189. flyte/remote/_console.py +18 -0
  190. flyte/remote/_data.py +159 -0
  191. flyte/remote/_logs.py +176 -0
  192. flyte/remote/_project.py +85 -0
  193. flyte/remote/_run.py +970 -0
  194. flyte/remote/_secret.py +132 -0
  195. flyte/remote/_task.py +391 -0
  196. flyte/report/__init__.py +3 -0
  197. flyte/report/_report.py +178 -0
  198. flyte/report/_template.html +124 -0
  199. flyte/storage/__init__.py +29 -0
  200. flyte/storage/_config.py +233 -0
  201. flyte/storage/_remote_fs.py +34 -0
  202. flyte/storage/_storage.py +271 -0
  203. flyte/storage/_utils.py +5 -0
  204. flyte/syncify/__init__.py +56 -0
  205. flyte/syncify/_api.py +371 -0
  206. flyte/types/__init__.py +36 -0
  207. flyte/types/_interface.py +40 -0
  208. flyte/types/_pickle.py +118 -0
  209. flyte/types/_renderer.py +162 -0
  210. flyte/types/_string_literals.py +120 -0
  211. flyte/types/_type_engine.py +2287 -0
  212. flyte/types/_utils.py +80 -0
  213. flyte-0.2.0a0.dist-info/METADATA +249 -0
  214. flyte-0.2.0a0.dist-info/RECORD +218 -0
  215. {flyte-0.1.0.dist-info → flyte-0.2.0a0.dist-info}/WHEEL +2 -1
  216. flyte-0.2.0a0.dist-info/entry_points.txt +3 -0
  217. flyte-0.2.0a0.dist-info/top_level.txt +1 -0
  218. flyte-0.1.0.dist-info/METADATA +0 -6
  219. flyte-0.1.0.dist-info/RECORD +0 -5
@@ -0,0 +1,200 @@
1
+ import typing
2
+
3
+ import grpc.aio
4
+
5
+ from flyte.remote._client.auth._authenticators.base import Authenticator
6
+ from flyte.remote._client.auth._authenticators.external_command import (
7
+ AsyncCommandAuthenticator,
8
+ )
9
+ from flyte.remote._client.auth._client_config import AuthType, ClientConfigStore, RemoteClientConfigStore
10
+
11
+
12
+ def create_auth_interceptors(
13
+ endpoint: str, in_channel: grpc.aio.Channel, **kwargs
14
+ ) -> typing.List[grpc.aio.ClientInterceptor]:
15
+ """
16
+ Async version of upgrade_channel_to_authenticated.
17
+ Given a grpc.Channel, preferably a secure channel, it returns a list of interceptors to
18
+ perform an Oauth2.0 Auth flow for all RPC call types.
19
+
20
+ :param endpoint: The endpoint URL for authentication
21
+ :param in_channel: grpc.Channel Precreated channel
22
+ :param kwargs: Additional arguments passed to the authenticator, including:
23
+ - insecure: Whether to use an insecure channel
24
+ - insecure_skip_verify: Whether to skip SSL certificate verification
25
+ - ca_cert_file_path: Path to CA certificate file for SSL verification
26
+ - auth_type: The authentication type to use ("Pkce", "ClientSecret", "ExternalCommand", "DeviceFlow")
27
+ - command: Command to execute for ExternalCommand authentication
28
+ - client_id: Client ID for ClientSecret authentication
29
+ - client_secret: Client secret for ClientSecret authentication
30
+ - scopes: List of scopes to request during authentication
31
+ - audience: Audience for the token
32
+ - http_proxy_url: HTTP proxy URL
33
+ - http_session: httpx.AsyncClient session
34
+ - verify: Whether to verify SSL certificates
35
+ - ca_cert_path: Optional path to CA certificate file
36
+ - header_key: Header key to use for authentication
37
+ - proxy_env: Environment variables for proxy command
38
+ - proxy_timeout: Timeout for proxy command execution
39
+ - redirect_uri: OAuth2 redirect URI for PKCE authentication
40
+ - add_request_auth_code_params_to_request_access_token_params: Whether to add auth code params to token request
41
+ - request_auth_code_params: Parameters to add to login URI opened in browser
42
+ - request_access_token_params: Parameters to add when exchanging auth code for access token
43
+ - refresh_access_token_params: Parameters to add when refreshing access token
44
+ :return: List of gRPC interceptors for different call types
45
+ """
46
+ from flyte.remote._client.auth._grpc_utils.auth_interceptor import (
47
+ AuthStreamStreamInterceptor,
48
+ AuthStreamUnaryInterceptor,
49
+ AuthUnaryStreamInterceptor,
50
+ AuthUnaryUnaryInterceptor,
51
+ )
52
+
53
+ def authenticator_factory() -> Authenticator:
54
+ return get_async_authenticator(endpoint=endpoint, cfg_store=RemoteClientConfigStore(in_channel), **kwargs)
55
+
56
+ return [
57
+ AuthUnaryUnaryInterceptor(authenticator_factory),
58
+ AuthUnaryStreamInterceptor(authenticator_factory),
59
+ AuthStreamUnaryInterceptor(authenticator_factory),
60
+ AuthStreamStreamInterceptor(authenticator_factory),
61
+ ]
62
+
63
+
64
+ def create_proxy_auth_interceptors(
65
+ endpoint: str, proxy_command: typing.Optional[typing.List[str]] = None, **kwargs
66
+ ) -> typing.List[grpc.aio.ClientInterceptor]:
67
+ """
68
+ Async version of upgrade_channel_to_proxy_authenticated.
69
+ If activated in the platform config, given a grpc.Channel, preferably a secure channel, it returns a list of
70
+ interceptors to perform authentication with a proxy in front of Flyte for all RPC call types.
71
+
72
+ :param endpoint: The endpoint URL for authentication
73
+ :param proxy_command: Command to execute to get proxy authentication token
74
+ :param kwargs: Additional arguments passed to the authenticator, including:
75
+ - proxy_env: Environment variables for the proxy command
76
+ - proxy_timeout: Timeout for the proxy command
77
+ - header_key: Header key to use for authentication (defaults to "proxy-authorization")
78
+ - http_session: httpx.AsyncClient session to use for requests
79
+ - verify: Whether to verify SSL certificates
80
+ - ca_cert_path: Optional path to CA certificate file
81
+ :return: List of gRPC interceptors for different call types
82
+ """
83
+ if proxy_command:
84
+ from flyte.remote._client.auth._grpc_utils.auth_interceptor import (
85
+ AuthStreamStreamInterceptor,
86
+ AuthStreamUnaryInterceptor,
87
+ AuthUnaryStreamInterceptor,
88
+ AuthUnaryUnaryInterceptor,
89
+ )
90
+
91
+ def authenticator_factory() -> Authenticator:
92
+ return get_async_proxy_authenticator(endpoint=endpoint, proxy_command=proxy_command, **kwargs)
93
+
94
+ return [
95
+ AuthUnaryUnaryInterceptor(authenticator_factory),
96
+ AuthUnaryStreamInterceptor(authenticator_factory),
97
+ AuthStreamUnaryInterceptor(authenticator_factory),
98
+ AuthStreamStreamInterceptor(authenticator_factory),
99
+ ]
100
+ else:
101
+ return []
102
+
103
+
104
+ def get_async_authenticator(
105
+ endpoint: str,
106
+ cfg_store: ClientConfigStore,
107
+ *,
108
+ command: typing.Optional[typing.List[str]] = None,
109
+ insecure_skip_verify: bool = False,
110
+ auth_type: AuthType = "Pkce",
111
+ ca_cert_file_path: typing.Optional[str] = None,
112
+ **kwargs,
113
+ ) -> Authenticator:
114
+ """
115
+ Returns a new authenticator based on the platform config.
116
+ This is an async-compatible version of get_authenticator.
117
+ Must be async because it calls get_async_session which may perform IO operations.
118
+
119
+ :param endpoint: The endpoint URL for authentication
120
+ :param cfg_store: The client configuration store
121
+ :param command: Command to execute for ExternalCommand authentication
122
+ :param insecure_skip_verify: Whether to skip SSL certificate verification
123
+ :param auth_type: The authentication type to use
124
+ :param ca_cert_file_path: Path to CA certificate file for SSL verification
125
+ :param kwargs: Additional arguments passed to the authenticator, which may include:
126
+ - http_session: httpx.AsyncClient session to use for requests
127
+ - client_config: Optional client configuration containing authentication settings
128
+ - credentials: Optional credentials to use for authentication
129
+ - http_proxy_url: HTTP proxy URL
130
+ - verify: Whether to verify SSL certificates (bool or path to cert)
131
+ - ca_cert_path: Optional path to CA certificate file
132
+ - client_id: Client ID for ClientSecret authentication
133
+ - client_secret: Client secret for ClientSecret authentication (for ClientSecret auth)
134
+ - client_credentials_secret: Client secret for ClientSecret authentication (alias)
135
+ - scopes: List of scopes to request during authentication
136
+ - audience: Audience for the token
137
+ - header_key: Header key to use for authentication
138
+ - proxy_env: Environment variables for proxy command
139
+ - proxy_timeout: Timeout for proxy command execution
140
+ - redirect_uri: OAuth2 redirect URI for PKCE authentication
141
+ - add_request_auth_code_params_to_request_access_token_params: Whether to add auth code params to token request
142
+ - request_auth_code_params: Parameters to add to login URI opened in browser
143
+ - request_access_token_params: Parameters to add when exchanging auth code for access token
144
+ - refresh_access_token_params: Parameters to add when refreshing access token
145
+ :return: An authenticator instance
146
+ """
147
+ verify = None
148
+ if insecure_skip_verify:
149
+ verify = False
150
+ elif ca_cert_file_path:
151
+ verify = True if ca_cert_file_path is not None else False
152
+
153
+ # Note: The authenticator classes already have async refresh_credentials methods
154
+ # so we can reuse them with our async session
155
+ match auth_type:
156
+ case "Pkce":
157
+ from flyte.remote._client.auth._authenticators.pkce import PKCEAuthenticator
158
+
159
+ return PKCEAuthenticator(endpoint=endpoint, cfg_store=cfg_store, verify=verify, **kwargs)
160
+ case "ClientSecret":
161
+ from flyte.remote._client.auth._authenticators.client_credentials import ClientCredentialsAuthenticator
162
+
163
+ return ClientCredentialsAuthenticator(endpoint=endpoint, cfg_store=cfg_store, verify=verify, **kwargs)
164
+ case "ExternalCommand":
165
+ from flyte.remote._client.auth._authenticators.external_command import AsyncCommandAuthenticator
166
+
167
+ return AsyncCommandAuthenticator(endpoint=endpoint, command=command, verify=verify, **kwargs)
168
+ case "DeviceFlow":
169
+ from flyte.remote._client.auth._authenticators.device_code import DeviceCodeAuthenticator
170
+
171
+ return DeviceCodeAuthenticator(endpoint=endpoint, cfg_store=cfg_store, verify=verify, **kwargs)
172
+ case _:
173
+ raise ValueError(
174
+ f"Invalid auth mode [{auth_type}] specified. Please update the creds config to use a valid value"
175
+ )
176
+
177
+
178
+ def get_async_proxy_authenticator(endpoint: str, *, proxy_command: typing.List[str], **kwargs) -> Authenticator:
179
+ """
180
+ Returns an async authenticator for proxy authentication.
181
+ This function needs to be async because it calls get_async_command_authenticator which performs IO operations.
182
+
183
+ :param endpoint: The endpoint URL for authentication
184
+ :param proxy_command: Command to execute to get proxy authentication token
185
+ :param kwargs: Additional arguments passed to the authenticator, including:
186
+ - header_key: Header key to use for authentication (defaults to "proxy-authorization")
187
+ - proxy_env: Environment variables for the proxy command
188
+ - proxy_timeout: Timeout for the proxy command
189
+ - http_session: httpx.AsyncClient session to use for requests
190
+ - cfg_store: Optional client configuration store for retrieving remote configuration
191
+ - client_config: Optional client configuration containing authentication settings
192
+ - credentials: Optional credentials to use for authentication
193
+ - http_proxy_url: Optional HTTP proxy URL
194
+ - verify: Whether to verify SSL certificates (default: True)
195
+ - ca_cert_path: Optional path to CA certificate file
196
+ :return: An authenticator instance for proxy authentication
197
+ """
198
+ return AsyncCommandAuthenticator(
199
+ endpoint=endpoint, command=proxy_command, header_key="proxy-authorization", **kwargs
200
+ )