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,162 @@
1
+ import asyncio
2
+ from typing import Union
3
+
4
+ from flyteidl2.core import interface_pb2, literals_pb2
5
+ from flyteidl2.task import common_pb2, run_pb2, task_definition_pb2
6
+ from google.protobuf import timestamp_pb2, wrappers_pb2
7
+
8
+ import flyte.types
9
+ from flyte import Cron, FixedRate, Trigger, TriggerTime
10
+
11
+
12
+ def _to_schedule(m: Union[Cron, FixedRate], kickoff_arg_name: str | None = None) -> common_pb2.Schedule:
13
+ if isinstance(m, Cron):
14
+ return common_pb2.Schedule(
15
+ cron=common_pb2.Cron(
16
+ expression=m.expression,
17
+ timezone=m.timezone,
18
+ ),
19
+ kickoff_time_input_arg=kickoff_arg_name,
20
+ )
21
+ elif isinstance(m, FixedRate):
22
+ start_time = None
23
+ if m.start_time is not None:
24
+ start_time = timestamp_pb2.Timestamp()
25
+ start_time.FromDatetime(m.start_time)
26
+
27
+ return common_pb2.Schedule(
28
+ rate=common_pb2.FixedRate(
29
+ value=m.interval_minutes,
30
+ unit=common_pb2.FixedRateUnit.FIXED_RATE_UNIT_MINUTE,
31
+ start_time=start_time,
32
+ ),
33
+ kickoff_time_input_arg=kickoff_arg_name,
34
+ )
35
+
36
+
37
+ async def process_default_inputs(
38
+ default_inputs: dict,
39
+ task_name: str,
40
+ task_inputs: interface_pb2.VariableMap,
41
+ task_default_inputs: list[common_pb2.NamedParameter],
42
+ ) -> list[common_pb2.NamedLiteral]:
43
+ """
44
+ Process default inputs and convert them to NamedLiteral objects.
45
+
46
+ Args:
47
+ default_inputs: Dictionary of default input values
48
+ task_name: Name of the task for error messages
49
+ task_inputs: Task input variable map
50
+ task_default_inputs: List of default parameters from task
51
+
52
+ Returns:
53
+ List of NamedLiteral objects
54
+ """
55
+ keys = []
56
+ literal_coros = []
57
+ for k, v in default_inputs.items():
58
+ if k not in task_inputs.variables:
59
+ raise ValueError(
60
+ f"Trigger default input '{k}' must be an input to the task, but not found in task {task_name}. "
61
+ f"Available inputs: {list(task_inputs.variables.keys())}"
62
+ )
63
+ else:
64
+ literal_coros.append(flyte.types.TypeEngine.to_literal(v, type(v), task_inputs.variables[k].type))
65
+ keys.append(k)
66
+
67
+ final_literals: list[literals_pb2.Literal] = await asyncio.gather(*literal_coros, return_exceptions=True)
68
+
69
+ # Check for exceptions in the gathered results
70
+ for k, lit in zip(keys, final_literals):
71
+ if isinstance(lit, Exception):
72
+ raise RuntimeError(f"Failed to convert trigger default input '{k}'") from lit
73
+
74
+ for p in task_default_inputs or []:
75
+ if p.name not in keys:
76
+ keys.append(p.name)
77
+ final_literals.append(p.parameter.default)
78
+
79
+ literals: list[common_pb2.NamedLiteral] = []
80
+ for k, lit in zip(keys, final_literals):
81
+ literals.append(
82
+ common_pb2.NamedLiteral(
83
+ name=k,
84
+ value=lit,
85
+ )
86
+ )
87
+
88
+ return literals
89
+
90
+
91
+ async def to_task_trigger(
92
+ t: Trigger,
93
+ task_name: str,
94
+ task_inputs: interface_pb2.VariableMap,
95
+ task_default_inputs: list[common_pb2.NamedParameter],
96
+ ) -> task_definition_pb2.TaskTrigger:
97
+ """
98
+ Converts a Trigger object to a TaskTrigger protobuf object.
99
+ Args:
100
+ t:
101
+ task_name:
102
+ task_inputs:
103
+ task_default_inputs:
104
+ Returns:
105
+
106
+ """
107
+ env = None
108
+ if t.env_vars:
109
+ env = run_pb2.Envs()
110
+ for k, v in t.env_vars.items():
111
+ env.values.append(literals_pb2.KeyValuePair(key=k, value=v))
112
+
113
+ labels = run_pb2.Labels(values=t.labels) if t.labels else None
114
+
115
+ annotations = run_pb2.Annotations(values=t.annotations) if t.annotations else None
116
+
117
+ run_spec = run_pb2.RunSpec(
118
+ overwrite_cache=t.overwrite_cache,
119
+ envs=env,
120
+ interruptible=wrappers_pb2.BoolValue(value=t.interruptible) if t.interruptible is not None else None,
121
+ cluster=t.queue,
122
+ labels=labels,
123
+ annotations=annotations,
124
+ )
125
+
126
+ kickoff_arg_name = None
127
+ default_inputs = {}
128
+ if t.inputs:
129
+ for k, v in t.inputs.items():
130
+ if v is TriggerTime:
131
+ kickoff_arg_name = k
132
+ else:
133
+ default_inputs[k] = v
134
+
135
+ # assert that default_inputs and the kickoff_arg_name are infact in the task inputs
136
+ if kickoff_arg_name is not None and kickoff_arg_name not in task_inputs.variables:
137
+ raise ValueError(
138
+ f"For a scheduled trigger, the TriggerTime input '{kickoff_arg_name}' "
139
+ f"must be an input to the task, but not found in task {task_name}. "
140
+ f"Available inputs: {list(task_inputs.variables.keys())}"
141
+ )
142
+
143
+ literals = await process_default_inputs(default_inputs, task_name, task_inputs, task_default_inputs)
144
+
145
+ automation = _to_schedule(
146
+ t.automation,
147
+ kickoff_arg_name=kickoff_arg_name,
148
+ )
149
+
150
+ return task_definition_pb2.TaskTrigger(
151
+ name=t.name,
152
+ spec=task_definition_pb2.TaskTriggerSpec(
153
+ active=t.auto_activate,
154
+ run_spec=run_spec,
155
+ inputs=common_pb2.Inputs(literals=literals),
156
+ description=t.description,
157
+ ),
158
+ automation_spec=common_pb2.TriggerAutomationSpec(
159
+ type=common_pb2.TriggerAutomationSpecType.TYPE_SCHEDULE,
160
+ schedule=automation,
161
+ ),
162
+ )
@@ -1,8 +1,8 @@
1
1
  from typing import Dict, Optional, TypeVar
2
2
 
3
- from flyteidl.core import interface_pb2
3
+ from flyteidl2.core import interface_pb2
4
4
 
5
- from flyte._datastructures import NativeInterface
5
+ from flyte.models import NativeInterface
6
6
  from flyte.types._type_engine import TypeEngine
7
7
 
8
8
  T = TypeVar("T")
@@ -10,17 +10,15 @@ T = TypeVar("T")
10
10
 
11
11
  def transform_variable_map(
12
12
  variable_map: Dict[str, type],
13
- descriptions: Optional[Dict[str, str]] = None,
14
13
  ) -> Dict[str, interface_pb2.Variable]:
15
14
  """
16
15
  Given a map of str (names of inputs for instance) to their Python native types, return a map of the name to a
17
16
  Flyte Variable object with that type.
18
17
  """
19
18
  res = {}
20
- descriptions = descriptions or {}
21
19
  if variable_map:
22
20
  for k, v in variable_map.items():
23
- res[k] = transform_type(v, descriptions.get(k, k))
21
+ res[k] = transform_type(v)
24
22
  return res
25
23
 
26
24
 
@@ -32,23 +30,16 @@ def transform_native_to_typed_interface(
32
30
  """
33
31
  if interface is None:
34
32
  return None
35
- input_descriptions: Dict[str, str] = {}
36
- output_descriptions: Dict[str, str] = {}
37
- if interface.docstring:
38
- # Fill in descriptions from docstring in the future
39
- input_descriptions = {}
40
- output_descriptions = {}
41
-
42
- inputs_map = transform_variable_map(interface.get_input_types(), input_descriptions)
43
- outputs_map = transform_variable_map(interface.outputs, output_descriptions)
33
+
34
+ inputs_map = transform_variable_map(interface.get_input_types())
35
+ outputs_map = transform_variable_map(interface.outputs)
44
36
  return interface_pb2.TypedInterface(
45
37
  inputs=interface_pb2.VariableMap(variables=inputs_map), outputs=interface_pb2.VariableMap(variables=outputs_map)
46
38
  )
47
39
 
48
40
 
49
- def transform_type(x: type, description: Optional[str] = None) -> interface_pb2.Variable:
41
+ def transform_type(x: type) -> interface_pb2.Variable:
50
42
  # add artifact handling eventually
51
43
  return interface_pb2.Variable(
52
44
  type=TypeEngine.to_literal_type(x),
53
- description=description,
54
45
  )
flyte/_keyring/file.py ADDED
@@ -0,0 +1,115 @@
1
+ from base64 import decodebytes, encodebytes
2
+ from configparser import ConfigParser, NoOptionError, NoSectionError
3
+ from pathlib import Path
4
+ from typing import Optional
5
+
6
+ from keyring.backend import KeyringBackend
7
+ from keyring.errors import PasswordDeleteError
8
+
9
+ _FLYTE_KEYRING_PATH: Path = Path.home() / ".flyte" / "keyring.cfg"
10
+
11
+
12
+ class SimplePlainTextKeyring(KeyringBackend):
13
+ """
14
+ Simple plain text keyring for remote notebook environments.
15
+
16
+ This backend is only active when running in IPython/Jupyter notebooks.
17
+ For local development, the system keyring is used instead.
18
+ """
19
+
20
+ @property
21
+ def priority(self):
22
+ """
23
+ Return priority based on whether we're in a notebook environment.
24
+ Negative priority means this backend will be skipped by keyring.
25
+ """
26
+ from flyte._tools import ipython_check
27
+
28
+ if ipython_check():
29
+ # In IPython/Jupyter - use this backend
30
+ return 0.5
31
+ else:
32
+ # Not in IPython - skip this backend, let system keyring handle it
33
+ return -1
34
+
35
+ def get_password(self, service: str, username: str) -> Optional[str]:
36
+ """Get password."""
37
+ if not self.file_path.exists():
38
+ return None
39
+
40
+ config = ConfigParser(interpolation=None)
41
+ config.read(self.file_path, encoding="utf-8")
42
+
43
+ try:
44
+ password_base64 = config.get(service, username).encode("utf-8")
45
+ return decodebytes(password_base64).decode("utf-8")
46
+ except (NoOptionError, NoSectionError):
47
+ return None
48
+
49
+ def delete_password(self, service: str, username: str) -> None:
50
+ """Delete password."""
51
+ if not self.file_path.exists():
52
+ raise PasswordDeleteError("Config file does not exist")
53
+
54
+ config = ConfigParser(interpolation=None)
55
+ config.read(self.file_path, encoding="utf-8")
56
+
57
+ try:
58
+ if not config.remove_option(service, username):
59
+ raise PasswordDeleteError("Password not found")
60
+ except NoSectionError:
61
+ raise PasswordDeleteError("Password not found")
62
+
63
+ with self.file_path.open("w", encoding="utf-8") as config_file:
64
+ config.write(config_file)
65
+
66
+ def set_password(self, service: str, username: str, password: str) -> None:
67
+ """Set password."""
68
+ if not username:
69
+ raise ValueError("Username must be provided")
70
+
71
+ file_path = self._ensure_file_path()
72
+ value = encodebytes(password.encode("utf-8")).decode("utf-8")
73
+
74
+ config = ConfigParser(interpolation=None)
75
+ config.read(file_path, encoding="utf-8")
76
+
77
+ if not config.has_section(service):
78
+ config.add_section(service)
79
+
80
+ config.set(service, username, value)
81
+
82
+ with file_path.open("w", encoding="utf-8") as config_file:
83
+ config.write(config_file)
84
+
85
+ def _ensure_file_path(self):
86
+ self.file_path.parent.mkdir(exist_ok=True, parents=True)
87
+ if not self.file_path.is_file():
88
+ self.file_path.touch(0o600)
89
+ return self.file_path
90
+
91
+ @property
92
+ def file_path(self) -> Path:
93
+ from flyte._initialize import get_init_config, is_initialized
94
+ from flyte._logging import logger
95
+
96
+ # Only try to use source_config_path if flyte.init() has been called
97
+ if is_initialized():
98
+ try:
99
+ config = get_init_config()
100
+ config_path = config.source_config_path
101
+ if config_path and str(config_path.parent.name) == ".flyte":
102
+ # if the config is in a .flyte directory, use that as the path
103
+ return config_path.parent / "keyring.cfg"
104
+ except Exception as e:
105
+ # If anything fails, fall back to default path
106
+ logger.debug(f"Skipping config-based keyring path due to error: {e}")
107
+ else:
108
+ # flyte.init() hasn't been called, use default path
109
+ logger.debug("flyte.init() not called, using default keyring path")
110
+
111
+ # Default path
112
+ return _FLYTE_KEYRING_PATH
113
+
114
+ def __repr__(self):
115
+ return f"<{self.__class__.__name__}> at {self.file_path}>"
flyte/_link.py ADDED
@@ -0,0 +1,30 @@
1
+ from typing import Dict, Optional, Protocol
2
+
3
+
4
+ class Link(Protocol):
5
+ name: str
6
+ icon_uri: Optional[str] = ""
7
+
8
+ def get_link(
9
+ self,
10
+ run_name: str,
11
+ project: str,
12
+ domain: str,
13
+ context: Dict[str, str],
14
+ parent_action_name: str,
15
+ action_name: str,
16
+ pod_name: str,
17
+ ) -> str:
18
+ """
19
+ Returns a task log link given the action.
20
+ Link can have template variables that are replaced by the backend.
21
+ :param run_name: The name of the run.
22
+ :param project: The project name.
23
+ :param domain: The domain name.
24
+ :param context: Additional context for generating the link.
25
+ :param parent_action_name: The name of the parent action.
26
+ :param action_name: The name of the action.
27
+ :param pod_name: The name of the pod.
28
+ :return: The generated link.
29
+ """
30
+ raise NotImplementedError