flyte 0.0.1b0__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.
Files changed (455) hide show
  1. flyte/__init__.py +83 -30
  2. flyte/_bin/connect.py +61 -0
  3. flyte/_bin/debug.py +38 -0
  4. flyte/_bin/runtime.py +87 -19
  5. flyte/_bin/serve.py +351 -0
  6. flyte/_build.py +3 -2
  7. flyte/_cache/cache.py +6 -5
  8. flyte/_cache/local_cache.py +216 -0
  9. flyte/_code_bundle/_ignore.py +31 -5
  10. flyte/_code_bundle/_packaging.py +42 -11
  11. flyte/_code_bundle/_utils.py +57 -34
  12. flyte/_code_bundle/bundle.py +130 -27
  13. flyte/_constants.py +1 -0
  14. flyte/_context.py +21 -5
  15. flyte/_custom_context.py +73 -0
  16. flyte/_debug/constants.py +37 -0
  17. flyte/_debug/utils.py +17 -0
  18. flyte/_debug/vscode.py +315 -0
  19. flyte/_deploy.py +396 -75
  20. flyte/_deployer.py +109 -0
  21. flyte/_environment.py +94 -11
  22. flyte/_excepthook.py +37 -0
  23. flyte/_group.py +2 -1
  24. flyte/_hash.py +1 -16
  25. flyte/_image.py +544 -234
  26. flyte/_initialize.py +443 -294
  27. flyte/_interface.py +40 -5
  28. flyte/_internal/controllers/__init__.py +22 -8
  29. flyte/_internal/controllers/_local_controller.py +159 -35
  30. flyte/_internal/controllers/_trace.py +18 -10
  31. flyte/_internal/controllers/remote/__init__.py +38 -9
  32. flyte/_internal/controllers/remote/_action.py +82 -12
  33. flyte/_internal/controllers/remote/_client.py +6 -2
  34. flyte/_internal/controllers/remote/_controller.py +290 -64
  35. flyte/_internal/controllers/remote/_core.py +155 -95
  36. flyte/_internal/controllers/remote/_informer.py +40 -20
  37. flyte/_internal/controllers/remote/_service_protocol.py +2 -2
  38. flyte/_internal/imagebuild/__init__.py +2 -10
  39. flyte/_internal/imagebuild/docker_builder.py +391 -84
  40. flyte/_internal/imagebuild/image_builder.py +111 -55
  41. flyte/_internal/imagebuild/remote_builder.py +409 -0
  42. flyte/_internal/imagebuild/utils.py +79 -0
  43. flyte/_internal/resolvers/_app_env_module.py +92 -0
  44. flyte/_internal/resolvers/_task_module.py +5 -38
  45. flyte/_internal/resolvers/app_env.py +26 -0
  46. flyte/_internal/resolvers/common.py +8 -1
  47. flyte/_internal/resolvers/default.py +2 -2
  48. flyte/_internal/runtime/convert.py +322 -33
  49. flyte/_internal/runtime/entrypoints.py +106 -18
  50. flyte/_internal/runtime/io.py +71 -23
  51. flyte/_internal/runtime/resources_serde.py +21 -7
  52. flyte/_internal/runtime/reuse.py +125 -0
  53. flyte/_internal/runtime/rusty.py +196 -0
  54. flyte/_internal/runtime/task_serde.py +239 -66
  55. flyte/_internal/runtime/taskrunner.py +48 -8
  56. flyte/_internal/runtime/trigger_serde.py +162 -0
  57. flyte/_internal/runtime/types_serde.py +7 -16
  58. flyte/_keyring/file.py +115 -0
  59. flyte/_link.py +30 -0
  60. flyte/_logging.py +241 -42
  61. flyte/_map.py +312 -0
  62. flyte/_metrics.py +59 -0
  63. flyte/_module.py +74 -0
  64. flyte/_pod.py +30 -0
  65. flyte/_resources.py +296 -33
  66. flyte/_retry.py +1 -7
  67. flyte/_reusable_environment.py +72 -7
  68. flyte/_run.py +461 -132
  69. flyte/_secret.py +47 -11
  70. flyte/_serve.py +333 -0
  71. flyte/_task.py +245 -56
  72. flyte/_task_environment.py +219 -97
  73. flyte/_task_plugins.py +47 -0
  74. flyte/_tools.py +8 -8
  75. flyte/_trace.py +15 -24
  76. flyte/_trigger.py +1027 -0
  77. flyte/_utils/__init__.py +12 -1
  78. flyte/_utils/asyn.py +3 -1
  79. flyte/_utils/async_cache.py +139 -0
  80. flyte/_utils/coro_management.py +5 -4
  81. flyte/_utils/description_parser.py +19 -0
  82. flyte/_utils/docker_credentials.py +173 -0
  83. flyte/_utils/helpers.py +45 -19
  84. flyte/_utils/module_loader.py +123 -0
  85. flyte/_utils/org_discovery.py +57 -0
  86. flyte/_utils/uv_script_parser.py +8 -1
  87. flyte/_version.py +16 -3
  88. flyte/app/__init__.py +27 -0
  89. flyte/app/_app_environment.py +362 -0
  90. flyte/app/_connector_environment.py +40 -0
  91. flyte/app/_deploy.py +130 -0
  92. flyte/app/_parameter.py +343 -0
  93. flyte/app/_runtime/__init__.py +3 -0
  94. flyte/app/_runtime/app_serde.py +383 -0
  95. flyte/app/_types.py +113 -0
  96. flyte/app/extras/__init__.py +9 -0
  97. flyte/app/extras/_auth_middleware.py +217 -0
  98. flyte/app/extras/_fastapi.py +93 -0
  99. flyte/app/extras/_model_loader/__init__.py +3 -0
  100. flyte/app/extras/_model_loader/config.py +7 -0
  101. flyte/app/extras/_model_loader/loader.py +288 -0
  102. flyte/cli/__init__.py +12 -0
  103. flyte/cli/_abort.py +28 -0
  104. flyte/cli/_build.py +114 -0
  105. flyte/cli/_common.py +493 -0
  106. flyte/cli/_create.py +371 -0
  107. flyte/cli/_delete.py +45 -0
  108. flyte/cli/_deploy.py +401 -0
  109. flyte/cli/_gen.py +316 -0
  110. flyte/cli/_get.py +446 -0
  111. flyte/cli/_option.py +33 -0
  112. {union/_cli → flyte/cli}/_params.py +152 -153
  113. flyte/cli/_plugins.py +209 -0
  114. flyte/cli/_prefetch.py +292 -0
  115. flyte/cli/_run.py +690 -0
  116. flyte/cli/_serve.py +338 -0
  117. flyte/cli/_update.py +86 -0
  118. flyte/cli/_user.py +20 -0
  119. flyte/cli/main.py +246 -0
  120. flyte/config/__init__.py +3 -0
  121. flyte/config/_config.py +248 -0
  122. flyte/config/_internal.py +73 -0
  123. flyte/config/_reader.py +225 -0
  124. flyte/connectors/__init__.py +11 -0
  125. flyte/connectors/_connector.py +330 -0
  126. flyte/connectors/_server.py +194 -0
  127. flyte/connectors/utils.py +159 -0
  128. flyte/errors.py +134 -2
  129. flyte/extend.py +24 -0
  130. flyte/extras/_container.py +69 -56
  131. flyte/git/__init__.py +3 -0
  132. flyte/git/_config.py +279 -0
  133. flyte/io/__init__.py +8 -1
  134. flyte/io/{structured_dataset → _dataframe}/__init__.py +32 -30
  135. flyte/io/{structured_dataset → _dataframe}/basic_dfs.py +75 -68
  136. flyte/io/{structured_dataset/structured_dataset.py → _dataframe/dataframe.py} +207 -242
  137. flyte/io/_dir.py +575 -113
  138. flyte/io/_file.py +587 -141
  139. flyte/io/_hashing_io.py +342 -0
  140. flyte/io/extend.py +7 -0
  141. flyte/models.py +635 -0
  142. flyte/prefetch/__init__.py +22 -0
  143. flyte/prefetch/_hf_model.py +563 -0
  144. flyte/remote/__init__.py +14 -3
  145. flyte/remote/_action.py +879 -0
  146. flyte/remote/_app.py +346 -0
  147. flyte/remote/_auth_metadata.py +42 -0
  148. flyte/remote/_client/_protocols.py +62 -4
  149. flyte/remote/_client/auth/_auth_utils.py +19 -0
  150. flyte/remote/_client/auth/_authenticators/base.py +8 -2
  151. flyte/remote/_client/auth/_authenticators/device_code.py +4 -5
  152. flyte/remote/_client/auth/_authenticators/factory.py +4 -0
  153. flyte/remote/_client/auth/_authenticators/passthrough.py +79 -0
  154. flyte/remote/_client/auth/_authenticators/pkce.py +17 -18
  155. flyte/remote/_client/auth/_channel.py +47 -18
  156. flyte/remote/_client/auth/_client_config.py +5 -3
  157. flyte/remote/_client/auth/_keyring.py +15 -2
  158. flyte/remote/_client/auth/_token_client.py +3 -3
  159. flyte/remote/_client/controlplane.py +206 -18
  160. flyte/remote/_common.py +66 -0
  161. flyte/remote/_data.py +107 -22
  162. flyte/remote/_logs.py +116 -33
  163. flyte/remote/_project.py +21 -19
  164. flyte/remote/_run.py +164 -631
  165. flyte/remote/_secret.py +72 -29
  166. flyte/remote/_task.py +387 -46
  167. flyte/remote/_trigger.py +368 -0
  168. flyte/remote/_user.py +43 -0
  169. flyte/report/_report.py +10 -6
  170. flyte/storage/__init__.py +13 -1
  171. flyte/storage/_config.py +237 -0
  172. flyte/storage/_parallel_reader.py +289 -0
  173. flyte/storage/_storage.py +268 -59
  174. flyte/syncify/__init__.py +56 -0
  175. flyte/syncify/_api.py +414 -0
  176. flyte/types/__init__.py +39 -0
  177. flyte/types/_interface.py +22 -7
  178. flyte/{io/pickle/transformer.py → types/_pickle.py} +37 -9
  179. flyte/types/_string_literals.py +8 -9
  180. flyte/types/_type_engine.py +230 -129
  181. flyte/types/_utils.py +1 -1
  182. flyte-2.0.0b46.data/scripts/debug.py +38 -0
  183. flyte-2.0.0b46.data/scripts/runtime.py +194 -0
  184. flyte-2.0.0b46.dist-info/METADATA +352 -0
  185. flyte-2.0.0b46.dist-info/RECORD +221 -0
  186. flyte-2.0.0b46.dist-info/entry_points.txt +8 -0
  187. flyte-2.0.0b46.dist-info/licenses/LICENSE +201 -0
  188. flyte/_api_commons.py +0 -3
  189. flyte/_cli/_common.py +0 -287
  190. flyte/_cli/_create.py +0 -42
  191. flyte/_cli/_delete.py +0 -23
  192. flyte/_cli/_deploy.py +0 -140
  193. flyte/_cli/_get.py +0 -235
  194. flyte/_cli/_run.py +0 -152
  195. flyte/_cli/main.py +0 -72
  196. flyte/_datastructures.py +0 -342
  197. flyte/_internal/controllers/pbhash.py +0 -39
  198. flyte/_protos/common/authorization_pb2.py +0 -66
  199. flyte/_protos/common/authorization_pb2.pyi +0 -108
  200. flyte/_protos/common/authorization_pb2_grpc.py +0 -4
  201. flyte/_protos/common/identifier_pb2.py +0 -71
  202. flyte/_protos/common/identifier_pb2.pyi +0 -82
  203. flyte/_protos/common/identifier_pb2_grpc.py +0 -4
  204. flyte/_protos/common/identity_pb2.py +0 -48
  205. flyte/_protos/common/identity_pb2.pyi +0 -72
  206. flyte/_protos/common/identity_pb2_grpc.py +0 -4
  207. flyte/_protos/common/list_pb2.py +0 -36
  208. flyte/_protos/common/list_pb2.pyi +0 -69
  209. flyte/_protos/common/list_pb2_grpc.py +0 -4
  210. flyte/_protos/common/policy_pb2.py +0 -37
  211. flyte/_protos/common/policy_pb2.pyi +0 -27
  212. flyte/_protos/common/policy_pb2_grpc.py +0 -4
  213. flyte/_protos/common/role_pb2.py +0 -37
  214. flyte/_protos/common/role_pb2.pyi +0 -53
  215. flyte/_protos/common/role_pb2_grpc.py +0 -4
  216. flyte/_protos/common/runtime_version_pb2.py +0 -28
  217. flyte/_protos/common/runtime_version_pb2.pyi +0 -24
  218. flyte/_protos/common/runtime_version_pb2_grpc.py +0 -4
  219. flyte/_protos/logs/dataplane/payload_pb2.py +0 -96
  220. flyte/_protos/logs/dataplane/payload_pb2.pyi +0 -168
  221. flyte/_protos/logs/dataplane/payload_pb2_grpc.py +0 -4
  222. flyte/_protos/secret/definition_pb2.py +0 -49
  223. flyte/_protos/secret/definition_pb2.pyi +0 -93
  224. flyte/_protos/secret/definition_pb2_grpc.py +0 -4
  225. flyte/_protos/secret/payload_pb2.py +0 -62
  226. flyte/_protos/secret/payload_pb2.pyi +0 -94
  227. flyte/_protos/secret/payload_pb2_grpc.py +0 -4
  228. flyte/_protos/secret/secret_pb2.py +0 -38
  229. flyte/_protos/secret/secret_pb2.pyi +0 -6
  230. flyte/_protos/secret/secret_pb2_grpc.py +0 -198
  231. flyte/_protos/secret/secret_pb2_grpc_grpc.py +0 -198
  232. flyte/_protos/validate/validate/validate_pb2.py +0 -76
  233. flyte/_protos/workflow/node_execution_service_pb2.py +0 -26
  234. flyte/_protos/workflow/node_execution_service_pb2.pyi +0 -4
  235. flyte/_protos/workflow/node_execution_service_pb2_grpc.py +0 -32
  236. flyte/_protos/workflow/queue_service_pb2.py +0 -106
  237. flyte/_protos/workflow/queue_service_pb2.pyi +0 -141
  238. flyte/_protos/workflow/queue_service_pb2_grpc.py +0 -172
  239. flyte/_protos/workflow/run_definition_pb2.py +0 -128
  240. flyte/_protos/workflow/run_definition_pb2.pyi +0 -310
  241. flyte/_protos/workflow/run_definition_pb2_grpc.py +0 -4
  242. flyte/_protos/workflow/run_logs_service_pb2.py +0 -41
  243. flyte/_protos/workflow/run_logs_service_pb2.pyi +0 -28
  244. flyte/_protos/workflow/run_logs_service_pb2_grpc.py +0 -69
  245. flyte/_protos/workflow/run_service_pb2.py +0 -133
  246. flyte/_protos/workflow/run_service_pb2.pyi +0 -175
  247. flyte/_protos/workflow/run_service_pb2_grpc.py +0 -412
  248. flyte/_protos/workflow/state_service_pb2.py +0 -58
  249. flyte/_protos/workflow/state_service_pb2.pyi +0 -71
  250. flyte/_protos/workflow/state_service_pb2_grpc.py +0 -138
  251. flyte/_protos/workflow/task_definition_pb2.py +0 -72
  252. flyte/_protos/workflow/task_definition_pb2.pyi +0 -65
  253. flyte/_protos/workflow/task_definition_pb2_grpc.py +0 -4
  254. flyte/_protos/workflow/task_service_pb2.py +0 -44
  255. flyte/_protos/workflow/task_service_pb2.pyi +0 -31
  256. flyte/_protos/workflow/task_service_pb2_grpc.py +0 -104
  257. flyte/io/_dataframe.py +0 -0
  258. flyte/io/pickle/__init__.py +0 -0
  259. flyte/remote/_console.py +0 -18
  260. flyte-0.0.1b0.dist-info/METADATA +0 -179
  261. flyte-0.0.1b0.dist-info/RECORD +0 -390
  262. flyte-0.0.1b0.dist-info/entry_points.txt +0 -3
  263. union/__init__.py +0 -54
  264. union/_api_commons.py +0 -3
  265. union/_bin/__init__.py +0 -0
  266. union/_bin/runtime.py +0 -113
  267. union/_build.py +0 -25
  268. union/_cache/__init__.py +0 -12
  269. union/_cache/cache.py +0 -141
  270. union/_cache/defaults.py +0 -9
  271. union/_cache/policy_function_body.py +0 -42
  272. union/_cli/__init__.py +0 -0
  273. union/_cli/_common.py +0 -263
  274. union/_cli/_create.py +0 -40
  275. union/_cli/_delete.py +0 -23
  276. union/_cli/_deploy.py +0 -120
  277. union/_cli/_get.py +0 -162
  278. union/_cli/_run.py +0 -150
  279. union/_cli/main.py +0 -72
  280. union/_code_bundle/__init__.py +0 -8
  281. union/_code_bundle/_ignore.py +0 -113
  282. union/_code_bundle/_packaging.py +0 -187
  283. union/_code_bundle/_utils.py +0 -342
  284. union/_code_bundle/bundle.py +0 -176
  285. union/_context.py +0 -146
  286. union/_datastructures.py +0 -295
  287. union/_deploy.py +0 -185
  288. union/_doc.py +0 -29
  289. union/_docstring.py +0 -26
  290. union/_environment.py +0 -43
  291. union/_group.py +0 -31
  292. union/_hash.py +0 -23
  293. union/_image.py +0 -760
  294. union/_initialize.py +0 -585
  295. union/_interface.py +0 -84
  296. union/_internal/__init__.py +0 -3
  297. union/_internal/controllers/__init__.py +0 -77
  298. union/_internal/controllers/_local_controller.py +0 -77
  299. union/_internal/controllers/pbhash.py +0 -39
  300. union/_internal/controllers/remote/__init__.py +0 -40
  301. union/_internal/controllers/remote/_action.py +0 -131
  302. union/_internal/controllers/remote/_client.py +0 -43
  303. union/_internal/controllers/remote/_controller.py +0 -169
  304. union/_internal/controllers/remote/_core.py +0 -341
  305. union/_internal/controllers/remote/_informer.py +0 -260
  306. union/_internal/controllers/remote/_service_protocol.py +0 -44
  307. union/_internal/imagebuild/__init__.py +0 -11
  308. union/_internal/imagebuild/docker_builder.py +0 -416
  309. union/_internal/imagebuild/image_builder.py +0 -243
  310. union/_internal/imagebuild/remote_builder.py +0 -0
  311. union/_internal/resolvers/__init__.py +0 -0
  312. union/_internal/resolvers/_task_module.py +0 -31
  313. union/_internal/resolvers/common.py +0 -24
  314. union/_internal/resolvers/default.py +0 -27
  315. union/_internal/runtime/__init__.py +0 -0
  316. union/_internal/runtime/convert.py +0 -163
  317. union/_internal/runtime/entrypoints.py +0 -121
  318. union/_internal/runtime/io.py +0 -136
  319. union/_internal/runtime/resources_serde.py +0 -134
  320. union/_internal/runtime/task_serde.py +0 -202
  321. union/_internal/runtime/taskrunner.py +0 -179
  322. union/_internal/runtime/types_serde.py +0 -53
  323. union/_logging.py +0 -124
  324. union/_protos/__init__.py +0 -0
  325. union/_protos/common/authorization_pb2.py +0 -66
  326. union/_protos/common/authorization_pb2.pyi +0 -106
  327. union/_protos/common/authorization_pb2_grpc.py +0 -4
  328. union/_protos/common/identifier_pb2.py +0 -71
  329. union/_protos/common/identifier_pb2.pyi +0 -82
  330. union/_protos/common/identifier_pb2_grpc.py +0 -4
  331. union/_protos/common/identity_pb2.py +0 -48
  332. union/_protos/common/identity_pb2.pyi +0 -72
  333. union/_protos/common/identity_pb2_grpc.py +0 -4
  334. union/_protos/common/list_pb2.py +0 -36
  335. union/_protos/common/list_pb2.pyi +0 -69
  336. union/_protos/common/list_pb2_grpc.py +0 -4
  337. union/_protos/common/policy_pb2.py +0 -37
  338. union/_protos/common/policy_pb2.pyi +0 -27
  339. union/_protos/common/policy_pb2_grpc.py +0 -4
  340. union/_protos/common/role_pb2.py +0 -37
  341. union/_protos/common/role_pb2.pyi +0 -51
  342. union/_protos/common/role_pb2_grpc.py +0 -4
  343. union/_protos/common/runtime_version_pb2.py +0 -28
  344. union/_protos/common/runtime_version_pb2.pyi +0 -24
  345. union/_protos/common/runtime_version_pb2_grpc.py +0 -4
  346. union/_protos/logs/dataplane/payload_pb2.py +0 -96
  347. union/_protos/logs/dataplane/payload_pb2.pyi +0 -168
  348. union/_protos/logs/dataplane/payload_pb2_grpc.py +0 -4
  349. union/_protos/secret/definition_pb2.py +0 -49
  350. union/_protos/secret/definition_pb2.pyi +0 -93
  351. union/_protos/secret/definition_pb2_grpc.py +0 -4
  352. union/_protos/secret/payload_pb2.py +0 -62
  353. union/_protos/secret/payload_pb2.pyi +0 -94
  354. union/_protos/secret/payload_pb2_grpc.py +0 -4
  355. union/_protos/secret/secret_pb2.py +0 -38
  356. union/_protos/secret/secret_pb2.pyi +0 -6
  357. union/_protos/secret/secret_pb2_grpc.py +0 -198
  358. union/_protos/validate/validate/validate_pb2.py +0 -76
  359. union/_protos/workflow/node_execution_service_pb2.py +0 -26
  360. union/_protos/workflow/node_execution_service_pb2.pyi +0 -4
  361. union/_protos/workflow/node_execution_service_pb2_grpc.py +0 -32
  362. union/_protos/workflow/queue_service_pb2.py +0 -75
  363. union/_protos/workflow/queue_service_pb2.pyi +0 -103
  364. union/_protos/workflow/queue_service_pb2_grpc.py +0 -172
  365. union/_protos/workflow/run_definition_pb2.py +0 -100
  366. union/_protos/workflow/run_definition_pb2.pyi +0 -256
  367. union/_protos/workflow/run_definition_pb2_grpc.py +0 -4
  368. union/_protos/workflow/run_logs_service_pb2.py +0 -41
  369. union/_protos/workflow/run_logs_service_pb2.pyi +0 -28
  370. union/_protos/workflow/run_logs_service_pb2_grpc.py +0 -69
  371. union/_protos/workflow/run_service_pb2.py +0 -133
  372. union/_protos/workflow/run_service_pb2.pyi +0 -173
  373. union/_protos/workflow/run_service_pb2_grpc.py +0 -412
  374. union/_protos/workflow/state_service_pb2.py +0 -58
  375. union/_protos/workflow/state_service_pb2.pyi +0 -69
  376. union/_protos/workflow/state_service_pb2_grpc.py +0 -138
  377. union/_protos/workflow/task_definition_pb2.py +0 -72
  378. union/_protos/workflow/task_definition_pb2.pyi +0 -65
  379. union/_protos/workflow/task_definition_pb2_grpc.py +0 -4
  380. union/_protos/workflow/task_service_pb2.py +0 -44
  381. union/_protos/workflow/task_service_pb2.pyi +0 -31
  382. union/_protos/workflow/task_service_pb2_grpc.py +0 -104
  383. union/_resources.py +0 -226
  384. union/_retry.py +0 -32
  385. union/_reusable_environment.py +0 -25
  386. union/_run.py +0 -374
  387. union/_secret.py +0 -61
  388. union/_task.py +0 -354
  389. union/_task_environment.py +0 -186
  390. union/_timeout.py +0 -47
  391. union/_tools.py +0 -27
  392. union/_utils/__init__.py +0 -11
  393. union/_utils/asyn.py +0 -119
  394. union/_utils/file_handling.py +0 -71
  395. union/_utils/helpers.py +0 -46
  396. union/_utils/lazy_module.py +0 -54
  397. union/_utils/uv_script_parser.py +0 -49
  398. union/_version.py +0 -21
  399. union/connectors/__init__.py +0 -0
  400. union/errors.py +0 -128
  401. union/extras/__init__.py +0 -5
  402. union/extras/_container.py +0 -263
  403. union/io/__init__.py +0 -11
  404. union/io/_dataframe.py +0 -0
  405. union/io/_dir.py +0 -425
  406. union/io/_file.py +0 -418
  407. union/io/pickle/__init__.py +0 -0
  408. union/io/pickle/transformer.py +0 -117
  409. union/io/structured_dataset/__init__.py +0 -122
  410. union/io/structured_dataset/basic_dfs.py +0 -219
  411. union/io/structured_dataset/structured_dataset.py +0 -1057
  412. union/py.typed +0 -0
  413. union/remote/__init__.py +0 -23
  414. union/remote/_client/__init__.py +0 -0
  415. union/remote/_client/_protocols.py +0 -129
  416. union/remote/_client/auth/__init__.py +0 -12
  417. union/remote/_client/auth/_authenticators/__init__.py +0 -0
  418. union/remote/_client/auth/_authenticators/base.py +0 -391
  419. union/remote/_client/auth/_authenticators/client_credentials.py +0 -73
  420. union/remote/_client/auth/_authenticators/device_code.py +0 -120
  421. union/remote/_client/auth/_authenticators/external_command.py +0 -77
  422. union/remote/_client/auth/_authenticators/factory.py +0 -200
  423. union/remote/_client/auth/_authenticators/pkce.py +0 -515
  424. union/remote/_client/auth/_channel.py +0 -184
  425. union/remote/_client/auth/_client_config.py +0 -83
  426. union/remote/_client/auth/_default_html.py +0 -32
  427. union/remote/_client/auth/_grpc_utils/__init__.py +0 -0
  428. union/remote/_client/auth/_grpc_utils/auth_interceptor.py +0 -204
  429. union/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py +0 -144
  430. union/remote/_client/auth/_keyring.py +0 -154
  431. union/remote/_client/auth/_token_client.py +0 -258
  432. union/remote/_client/auth/errors.py +0 -16
  433. union/remote/_client/controlplane.py +0 -86
  434. union/remote/_data.py +0 -149
  435. union/remote/_logs.py +0 -74
  436. union/remote/_project.py +0 -86
  437. union/remote/_run.py +0 -820
  438. union/remote/_secret.py +0 -132
  439. union/remote/_task.py +0 -193
  440. union/report/__init__.py +0 -3
  441. union/report/_report.py +0 -178
  442. union/report/_template.html +0 -124
  443. union/storage/__init__.py +0 -24
  444. union/storage/_remote_fs.py +0 -34
  445. union/storage/_storage.py +0 -247
  446. union/storage/_utils.py +0 -5
  447. union/types/__init__.py +0 -11
  448. union/types/_renderer.py +0 -162
  449. union/types/_string_literals.py +0 -120
  450. union/types/_type_engine.py +0 -2131
  451. union/types/_utils.py +0 -80
  452. /flyte/{_cli → _debug}/__init__.py +0 -0
  453. /flyte/{_protos → _keyring}/__init__.py +0 -0
  454. {flyte-0.0.1b0.dist-info → flyte-2.0.0b46.dist-info}/WHEEL +0 -0
  455. {flyte-0.0.1b0.dist-info → flyte-2.0.0b46.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,368 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+ from functools import cached_property
5
+ from typing import AsyncIterator
6
+
7
+ import grpc.aio
8
+ from flyteidl2.common import identifier_pb2, list_pb2
9
+ from flyteidl2.task import common_pb2, task_definition_pb2
10
+ from flyteidl2.trigger import trigger_definition_pb2, trigger_service_pb2
11
+
12
+ import flyte
13
+ from flyte._initialize import ensure_client, get_client, get_init_config
14
+ from flyte._internal.runtime import trigger_serde
15
+ from flyte.syncify import syncify
16
+
17
+ from ._common import ToJSONMixin
18
+ from ._task import Task, TaskDetails
19
+
20
+
21
+ @dataclass
22
+ class TriggerDetails(ToJSONMixin):
23
+ pb2: trigger_definition_pb2.TriggerDetails
24
+
25
+ @syncify
26
+ @classmethod
27
+ async def get(cls, *, name: str, task_name: str) -> TriggerDetails:
28
+ """
29
+ Retrieve detailed information about a specific trigger by its name.
30
+ """
31
+ ensure_client()
32
+ cfg = get_init_config()
33
+ resp = await get_client().trigger_service.GetTriggerDetails(
34
+ request=trigger_service_pb2.GetTriggerDetailsRequest(
35
+ name=identifier_pb2.TriggerName(
36
+ task_name=task_name,
37
+ name=name,
38
+ org=cfg.org,
39
+ project=cfg.project,
40
+ domain=cfg.domain,
41
+ ),
42
+ )
43
+ )
44
+ return cls(pb2=resp.trigger)
45
+
46
+ @property
47
+ def name(self) -> str:
48
+ """
49
+ Name of the trigger.
50
+ """
51
+ return self.id.name.name
52
+
53
+ @property
54
+ def id(self) -> identifier_pb2.TriggerIdentifier:
55
+ """
56
+ Identifier for the trigger.
57
+ """
58
+ return self.pb2.id
59
+
60
+ @property
61
+ def task_name(self) -> str:
62
+ """
63
+ Name of the associated task
64
+ """
65
+ return self.pb2.id.name.task_name
66
+
67
+ @property
68
+ def automation_spec(self) -> common_pb2.TriggerAutomationSpec:
69
+ """
70
+ Get the automation specification for the trigger (e.g., schedule, event).
71
+ """
72
+ return self.pb2.automation_spec
73
+
74
+ @property
75
+ def metadata(self) -> trigger_definition_pb2.TriggerMetadata:
76
+ """
77
+ Get the metadata for the trigger.
78
+ """
79
+ return self.pb2.metadata
80
+
81
+ @property
82
+ def status(self) -> trigger_definition_pb2.TriggerStatus:
83
+ """
84
+ Get the current status of the trigger.
85
+ """
86
+ return self.pb2.status
87
+
88
+ @property
89
+ def is_active(self) -> bool:
90
+ """
91
+ Check if the trigger is currently active.
92
+ """
93
+ return self.pb2.spec.active
94
+
95
+ @cached_property
96
+ def trigger(self) -> trigger_definition_pb2.Trigger:
97
+ """
98
+ Get the trigger protobuf object constructed from the details.
99
+ """
100
+ return trigger_definition_pb2.Trigger(
101
+ id=self.pb2.id,
102
+ automation_spec=self.automation_spec,
103
+ metadata=self.metadata,
104
+ status=self.status,
105
+ active=self.is_active,
106
+ )
107
+
108
+
109
+ @dataclass
110
+ class Trigger(ToJSONMixin):
111
+ """
112
+ Represents a trigger in the Flyte platform.
113
+ """
114
+
115
+ pb2: trigger_definition_pb2.Trigger
116
+ details: TriggerDetails | None = None
117
+
118
+ @syncify
119
+ @classmethod
120
+ async def create(
121
+ cls,
122
+ trigger: flyte.Trigger,
123
+ task_name: str,
124
+ task_version: str | None = None,
125
+ ) -> Trigger:
126
+ """
127
+ Create a new trigger in the Flyte platform.
128
+
129
+ :param trigger: The flyte.Trigger object containing the trigger definition.
130
+ :param task_name: Optional name of the task to associate with the trigger.
131
+ """
132
+ ensure_client()
133
+ cfg = get_init_config()
134
+
135
+ # Fetch the task to ensure it exists and to get its input definitions
136
+ try:
137
+ lazy = (
138
+ Task.get(name=task_name, version=task_version)
139
+ if task_version
140
+ else Task.get(name=task_name, auto_version="latest")
141
+ )
142
+ task: TaskDetails = await lazy.fetch.aio()
143
+
144
+ task_trigger = await trigger_serde.to_task_trigger(
145
+ t=trigger,
146
+ task_name=task_name,
147
+ task_inputs=task.pb2.spec.task_template.interface.inputs,
148
+ task_default_inputs=list(task.pb2.spec.default_inputs),
149
+ )
150
+
151
+ resp = await get_client().trigger_service.DeployTrigger(
152
+ request=trigger_service_pb2.DeployTriggerRequest(
153
+ name=identifier_pb2.TriggerName(
154
+ name=trigger.name,
155
+ task_name=task_name,
156
+ org=cfg.org,
157
+ project=cfg.project,
158
+ domain=cfg.domain,
159
+ ),
160
+ spec=trigger_definition_pb2.TriggerSpec(
161
+ active=task_trigger.spec.active,
162
+ inputs=task_trigger.spec.inputs,
163
+ run_spec=task_trigger.spec.run_spec,
164
+ task_version=task.version,
165
+ ),
166
+ automation_spec=task_trigger.automation_spec,
167
+ )
168
+ )
169
+
170
+ details = TriggerDetails(pb2=resp.trigger)
171
+
172
+ return cls(pb2=details.trigger, details=details)
173
+ except grpc.aio.AioRpcError as e:
174
+ if e.code() == grpc.StatusCode.NOT_FOUND:
175
+ raise ValueError(f"Task {task_name}:{task_version or 'latest'} not found") from e
176
+ raise
177
+
178
+ @syncify
179
+ @classmethod
180
+ async def get(cls, *, name: str, task_name: str) -> TriggerDetails:
181
+ """
182
+ Retrieve a trigger by its name and associated task name.
183
+ """
184
+ return await TriggerDetails.get.aio(name=name, task_name=task_name)
185
+
186
+ @syncify
187
+ @classmethod
188
+ async def listall(
189
+ cls, task_name: str | None = None, task_version: str | None = None, limit: int = 100
190
+ ) -> AsyncIterator[Trigger]:
191
+ """
192
+ List all triggers associated with a specific task or all tasks if no task name is provided.
193
+ """
194
+ ensure_client()
195
+ cfg = get_init_config()
196
+ token = None
197
+ task_name_id = None
198
+ project_id = None
199
+ task_id = None
200
+ if task_name and task_version:
201
+ task_id = task_definition_pb2.TaskIdentifier(
202
+ name=task_name,
203
+ project=cfg.project,
204
+ domain=cfg.domain,
205
+ org=cfg.org,
206
+ version=task_version,
207
+ )
208
+ elif task_name:
209
+ task_name_id = task_definition_pb2.TaskName(
210
+ name=task_name,
211
+ project=cfg.project,
212
+ domain=cfg.domain,
213
+ org=cfg.org,
214
+ )
215
+ else:
216
+ project_id = identifier_pb2.ProjectIdentifier(
217
+ organization=cfg.org,
218
+ domain=cfg.domain,
219
+ name=cfg.project,
220
+ )
221
+
222
+ while True:
223
+ resp = await get_client().trigger_service.ListTriggers(
224
+ request=trigger_service_pb2.ListTriggersRequest(
225
+ project_id=project_id,
226
+ task_id=task_id,
227
+ task_name=task_name_id,
228
+ request=list_pb2.ListRequest(
229
+ limit=limit,
230
+ token=token,
231
+ ),
232
+ )
233
+ )
234
+ token = resp.token
235
+ for r in resp.triggers:
236
+ yield cls(r)
237
+ if not token:
238
+ break
239
+
240
+ @syncify
241
+ @classmethod
242
+ async def update(cls, name: str, task_name: str, active: bool):
243
+ """
244
+ Pause a trigger by its name and associated task name.
245
+ """
246
+ ensure_client()
247
+ cfg = get_init_config()
248
+ await get_client().trigger_service.UpdateTriggers(
249
+ request=trigger_service_pb2.UpdateTriggersRequest(
250
+ names=[
251
+ identifier_pb2.TriggerName(
252
+ org=cfg.org,
253
+ project=cfg.project,
254
+ domain=cfg.domain,
255
+ name=name,
256
+ task_name=task_name,
257
+ )
258
+ ],
259
+ active=active,
260
+ )
261
+ )
262
+
263
+ @syncify
264
+ @classmethod
265
+ async def delete(cls, name: str, task_name: str):
266
+ """
267
+ Delete a trigger by its name.
268
+ """
269
+ ensure_client()
270
+ cfg = get_init_config()
271
+ await get_client().trigger_service.DeleteTriggers(
272
+ request=trigger_service_pb2.DeleteTriggersRequest(
273
+ names=[
274
+ identifier_pb2.TriggerName(
275
+ org=cfg.org,
276
+ project=cfg.project,
277
+ domain=cfg.domain,
278
+ name=name,
279
+ task_name=task_name,
280
+ )
281
+ ],
282
+ )
283
+ )
284
+
285
+ @property
286
+ def id(self) -> identifier_pb2.TriggerIdentifier:
287
+ """
288
+ Get the unique identifier for the trigger.
289
+ """
290
+ return self.pb2.id
291
+
292
+ @property
293
+ def name(self) -> str:
294
+ """
295
+ Get the name of the trigger.
296
+ """
297
+ return self.id.name.name
298
+
299
+ @property
300
+ def task_name(self) -> str:
301
+ """
302
+ Get the name of the task associated with this trigger.
303
+ """
304
+ return self.id.name.task_name
305
+
306
+ @property
307
+ def automation_spec(self) -> common_pb2.TriggerAutomationSpec:
308
+ """
309
+ Get the automation specification for the trigger.
310
+ """
311
+ return self.pb2.automation_spec
312
+
313
+ @property
314
+ def url(self) -> str:
315
+ """
316
+ Get the console URL for viewing the trigger.
317
+ """
318
+ client = get_client()
319
+ return client.console.trigger_url(
320
+ project=self.pb2.id.name.project,
321
+ domain=self.pb2.id.name.domain,
322
+ task_name=self.pb2.id.name.task_name,
323
+ trigger_name=self.name,
324
+ )
325
+
326
+ async def get_details(self) -> TriggerDetails:
327
+ """
328
+ Get detailed information about this trigger.
329
+ """
330
+ if not self.details:
331
+ details = await TriggerDetails.get.aio(name=self.pb2.id.name.name)
332
+ self.details = details
333
+ return self.details
334
+
335
+ @property
336
+ def is_active(self) -> bool:
337
+ """
338
+ Check if the trigger is currently active.
339
+ """
340
+ return self.pb2.active
341
+
342
+ def _rich_automation(self, automation: common_pb2.TriggerAutomationSpec):
343
+ """
344
+ Generate rich representation fields for the automation specification.
345
+ """
346
+ if automation.type == common_pb2.TriggerAutomationSpec.type.TYPE_NONE:
347
+ yield "none", None
348
+ elif automation.type == common_pb2.TriggerAutomationSpec.type.TYPE_SCHEDULE:
349
+ if automation.schedule.cron is not None:
350
+ yield "cron", automation.schedule.cron
351
+ elif automation.schedule.rate is not None:
352
+ r = automation.schedule.rate
353
+ yield (
354
+ "fixed_rate",
355
+ (
356
+ f"Every [{r.value}] {r.unit} starting at "
357
+ f"{r.start_time.ToDatetime() if automation.HasField('start_time') else 'now'}"
358
+ ),
359
+ )
360
+
361
+ def __rich_repr__(self):
362
+ """
363
+ Rich representation of the Trigger object for pretty printing.
364
+ """
365
+ yield "task_name", self.task_name
366
+ yield "name", self.name
367
+ yield from self._rich_automation(self.pb2.automation_spec)
368
+ yield "auto_activate", self.is_active
flyte/remote/_user.py ADDED
@@ -0,0 +1,43 @@
1
+ from __future__ import annotations
2
+
3
+ from dataclasses import dataclass
4
+
5
+ from flyteidl.service import identity_pb2
6
+ from flyteidl.service.identity_pb2 import UserInfoResponse
7
+
8
+ from .._initialize import ensure_client, get_client
9
+ from ..syncify import syncify
10
+ from ._common import ToJSONMixin
11
+
12
+
13
+ @dataclass
14
+ class User(ToJSONMixin):
15
+ """
16
+ Represents a user in the Flyte platform.
17
+ """
18
+
19
+ pb2: UserInfoResponse
20
+
21
+ @syncify
22
+ @classmethod
23
+ async def get(cls) -> User:
24
+ """
25
+ Fetches information about the currently logged in user.
26
+ Returns: A User object containing details about the user.
27
+ """
28
+ ensure_client()
29
+
30
+ resp = await get_client().identity_service.UserInfo(identity_pb2.UserInfoRequest())
31
+ return cls(resp)
32
+
33
+ def subject(self) -> str:
34
+ """
35
+ Get the subject identifier of the user.
36
+ """
37
+ return self.pb2.subject
38
+
39
+ def name(self) -> str:
40
+ """
41
+ Get the name of the user.
42
+ """
43
+ return self.pb2.name
flyte/report/_report.py CHANGED
@@ -4,10 +4,9 @@ import string
4
4
  from dataclasses import dataclass, field
5
5
  from typing import TYPE_CHECKING, Dict, List, Union
6
6
 
7
- from flyte._api_commons import syncer
8
- from flyte._internal.runtime import io
9
7
  from flyte._logging import logger
10
8
  from flyte._tools import ipython_check
9
+ from flyte.syncify import syncify
11
10
 
12
11
  if TYPE_CHECKING:
13
12
  from IPython.core.display import HTML
@@ -112,7 +111,7 @@ def get_tab(name: str, /, create_if_missing: bool = True) -> Tab:
112
111
  return report.get_tab(name, create_if_missing=create_if_missing)
113
112
 
114
113
 
115
- @syncer.wrap
114
+ @syncify
116
115
  async def log(content: str, do_flush: bool = False):
117
116
  """
118
117
  Log content to the main tab. The content should be a valid HTML string, but not a complete HTML document,
@@ -126,13 +125,14 @@ async def log(content: str, do_flush: bool = False):
126
125
  await flush.aio()
127
126
 
128
127
 
129
- @syncer.wrap
128
+ @syncify
130
129
  async def flush():
131
130
  """
132
131
  Flush the report.
133
132
  """
134
133
  import flyte.storage as storage
135
134
  from flyte._context import internal_ctx
135
+ from flyte._internal.runtime import io
136
136
 
137
137
  if not internal_ctx().is_task_context():
138
138
  return
@@ -145,11 +145,15 @@ async def flush():
145
145
  assert report_html is not None
146
146
  assert isinstance(report_html, str)
147
147
  report_path = io.report_path(internal_ctx().data.task_context.output_path)
148
- final_path = await storage.put_stream(report_html.encode("utf-8"), to_path=report_path)
148
+ content_types = {
149
+ "Content-Type": "text/html", # For s3
150
+ "content_type": "text/html", # For gcs
151
+ }
152
+ final_path = await storage.put_stream(report_html.encode("utf-8"), to_path=report_path, attributes=content_types)
149
153
  logger.debug(f"Report flushed to {final_path}")
150
154
 
151
155
 
152
- @syncer.wrap
156
+ @syncify
153
157
  async def replace(content: str, do_flush: bool = False):
154
158
  """
155
159
  Get the report. Replaces the content of the main tab.
flyte/storage/__init__.py CHANGED
@@ -1,24 +1,36 @@
1
1
  __all__ = [
2
+ "ABFS",
3
+ "GCS",
4
+ "S3",
5
+ "Storage",
6
+ "exists",
7
+ "exists_sync",
2
8
  "get",
9
+ "get_configured_fsspec_kwargs",
3
10
  "get_random_local_directory",
4
11
  "get_random_local_path",
5
12
  "get_stream",
6
13
  "get_underlying_filesystem",
7
14
  "is_remote",
8
15
  "join",
16
+ "open",
9
17
  "put",
10
18
  "put_stream",
11
- "put_stream",
12
19
  ]
13
20
 
21
+ from ._config import ABFS, GCS, S3, Storage
14
22
  from ._storage import (
23
+ exists,
24
+ exists_sync,
15
25
  get,
26
+ get_configured_fsspec_kwargs,
16
27
  get_random_local_directory,
17
28
  get_random_local_path,
18
29
  get_stream,
19
30
  get_underlying_filesystem,
20
31
  is_remote,
21
32
  join,
33
+ open,
22
34
  put,
23
35
  put_stream,
24
36
  )