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,343 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+ import re
5
+ import typing
6
+ from dataclasses import dataclass, field
7
+ from functools import cache, cached_property
8
+ from typing import TYPE_CHECKING, List, Literal, Optional
9
+
10
+ from pydantic import BaseModel, model_validator
11
+
12
+ import flyte.io
13
+ from flyte._initialize import requires_initialization
14
+ from flyte._logging import logger
15
+
16
+ if TYPE_CHECKING:
17
+ from flyte.remote._task import AutoVersioning
18
+ else:
19
+ AutoVersioning = Literal["latest", "current"]
20
+
21
+ ParameterTypes = str | flyte.io.File | flyte.io.Dir
22
+ _SerializedParameterType = Literal["string", "file", "directory"]
23
+
24
+ PARAMETER_TYPE_MAP = {
25
+ str: "string",
26
+ flyte.io.File: "file",
27
+ flyte.io.Dir: "directory",
28
+ }
29
+
30
+ RUNTIME_PARAMETERS_FILE = "flyte-parameters.json"
31
+
32
+
33
+ class _DelayedValue(BaseModel):
34
+ """
35
+ Delayed value for app parameters.
36
+ """
37
+
38
+ type: _SerializedParameterType
39
+
40
+ @model_validator(mode="before")
41
+ @classmethod
42
+ def check_type(cls, data: typing.Any) -> typing.Any:
43
+ if "type" in data:
44
+ data["type"] = PARAMETER_TYPE_MAP.get(data["type"], data["type"])
45
+ return data
46
+
47
+ async def get(self) -> str | flyte.io.File | flyte.io.Dir:
48
+ value = await self.materialize()
49
+ assert isinstance(value, (str, flyte.io.File, flyte.io.Dir)), (
50
+ f"Materialized value must be a string, file or directory, found {type(value)}"
51
+ )
52
+ if isinstance(value, (flyte.io.File, flyte.io.Dir)):
53
+ return value
54
+ return value
55
+
56
+ async def materialize(self) -> ParameterTypes:
57
+ raise NotImplementedError("Subclasses must implement this method")
58
+
59
+
60
+ class RunOutput(_DelayedValue):
61
+ """
62
+ Use a run's output for app parameters.
63
+
64
+ This enables the declaration of an app parameter dependency on the output of
65
+ a run, given by a specific run name, or a task name and version. If
66
+ `task_auto_version == 'latest'`, the latest version of the task will be used.
67
+ If `task_auto_version == 'current'`, the version will be derived from the callee
68
+ app or task context. To get the latest task run for ephemeral task runs, set
69
+ `task_version` and `task_auto_version` should both be set to `None` (which is the default).
70
+
71
+ Examples:
72
+
73
+ Get the output of a specific run:
74
+
75
+ ```python
76
+ run_output = RunOutput(type="directory", run_name="my-run-123")
77
+ ```
78
+
79
+ Get the latest output of an ephemeral task run:
80
+
81
+ ```python
82
+ run_output = RunOutput(type="file", task_name="env.my_task")
83
+ ```
84
+
85
+ Get the latest output of a deployed task run:
86
+
87
+ ```python
88
+ run_output = RunOutput(type="file", task_name="env.my_task", task_auto_version="latest")
89
+ ```
90
+
91
+ Get the output of a specific task run:
92
+
93
+ ```python
94
+ run_output = RunOutput(type="file", task_name="env.my_task", task_version="xyz")
95
+ ```
96
+ """
97
+
98
+ run_name: str | None = None
99
+ task_name: str | None = None
100
+ task_version: str | None = None
101
+ task_auto_version: AutoVersioning | None = None
102
+ getter: tuple[typing.Any, ...] = (0,)
103
+
104
+ def __post_init__(self):
105
+ if self.run_name is None and self.task_name is None:
106
+ raise ValueError("Either run_name or task_name must be provided")
107
+ if self.run_name is not None and self.task_name is not None:
108
+ raise ValueError("Only one of run_name or task_name must be provided")
109
+
110
+ @requires_initialization
111
+ async def materialize(self) -> ParameterTypes:
112
+ if self.run_name is not None:
113
+ return await self._materialize_with_run_name()
114
+ elif self.task_name is not None:
115
+ return await self._materialize_with_task_name()
116
+ else:
117
+ raise ValueError("Either run_name or task_name must be provided")
118
+
119
+ async def _materialize_with_task_name(self) -> ParameterTypes:
120
+ import flyte.errors
121
+ from flyte.remote import Run, RunDetails, Task, TaskDetails
122
+
123
+ assert self.task_name is not None, "task_name must be provided"
124
+ if self.task_auto_version is not None:
125
+ task_details: TaskDetails = await Task.get(
126
+ self.task_name, version=self.task_version, auto_version=self.task_auto_version
127
+ ).fetch.aio()
128
+ task_version = task_details.version
129
+ elif self.task_version is not None:
130
+ task_version = self.task_version
131
+ else:
132
+ task_version = None
133
+
134
+ runs = Run.listall.aio(
135
+ in_phase=("succeeded",),
136
+ task_name=self.task_name,
137
+ task_version=task_version,
138
+ limit=1,
139
+ sort_by=("created_at", "desc"),
140
+ )
141
+ try:
142
+ run = await anext(runs)
143
+ run_details: RunDetails = await run.details.aio()
144
+ output = await run_details.outputs()
145
+ for getter in self.getter:
146
+ output = output[getter]
147
+ logger.debug("Materialized output: %s", output)
148
+ return typing.cast(ParameterTypes, output)
149
+ except StopAsyncIteration:
150
+ raise flyte.errors.ParameterMaterializationError(f"No runs found for task {self.task_name}")
151
+ except Exception as e:
152
+ raise flyte.errors.ParameterMaterializationError(
153
+ f"Failed to materialize output for task {self.task_name}"
154
+ ) from e
155
+
156
+ async def _materialize_with_run_name(self) -> ParameterTypes:
157
+ from flyte.remote import Run, RunDetails
158
+
159
+ run: Run = await Run.get.aio(self.run_name)
160
+ run_details: RunDetails = await run.details.aio()
161
+ output = await run_details.outputs()
162
+ for getter in self.getter:
163
+ output = output[getter]
164
+ return typing.cast(ParameterTypes, output)
165
+
166
+
167
+ class AppEndpoint(_DelayedValue):
168
+ """
169
+ Embed an upstream app's endpoint as an app parameter.
170
+
171
+ This enables the declaration of an app parameter dependency on a the endpoint of
172
+ an upstream app, given by a specific app name. This gives the app access to
173
+ the upstream app's endpoint as a public or private url.
174
+ """
175
+
176
+ app_name: str
177
+ public: bool = False
178
+ type: Literal["string"] = "string"
179
+
180
+ @requires_initialization
181
+ async def materialize(self) -> str:
182
+ from flyte.app._app_environment import INTERNAL_APP_ENDPOINT_PATTERN_ENV_VAR
183
+
184
+ if self.public:
185
+ from flyte.remote import App
186
+
187
+ app = App.get(self.app_name)
188
+ return app.endpoint
189
+
190
+ endpoint_pattern = os.getenv(INTERNAL_APP_ENDPOINT_PATTERN_ENV_VAR)
191
+ if endpoint_pattern is not None:
192
+ return endpoint_pattern.format(app_fqdn=self.app_name)
193
+
194
+ raise ValueError(
195
+ f"Environment variable {INTERNAL_APP_ENDPOINT_PATTERN_ENV_VAR} is not set to create a private url."
196
+ )
197
+
198
+
199
+ @dataclass
200
+ class Parameter:
201
+ """
202
+ Parameter for application.
203
+
204
+ :param name: Name of parameter.
205
+ :param value: Value for parameter.
206
+ :param env_var: Environment name to set the value in the serving environment.
207
+ :param download: When True, the parameter will be automatically downloaded. This
208
+ only works if the value refers to an item in a object store. i.e. `s3://...`
209
+ :param mount: If `value` is a directory, then the directory will be available
210
+ at `mount`. If `value` is a file, then the file will be downloaded into the
211
+ `mount` directory.
212
+ :param ignore_patterns: If `value` is a directory, then this is a list of glob
213
+ patterns to ignore.
214
+ """
215
+
216
+ name: str
217
+ value: ParameterTypes | _DelayedValue
218
+ env_var: Optional[str] = None
219
+ download: bool = False
220
+ mount: Optional[str] = None
221
+ ignore_patterns: list[str] = field(default_factory=list)
222
+
223
+ def __post_init__(self):
224
+ import flyte.io
225
+
226
+ env_name_re = re.compile("^[_a-zA-Z][_a-zA-Z0-9]*$")
227
+
228
+ if self.env_var is not None and env_name_re.match(self.env_var) is None:
229
+ raise ValueError(f"env_var ({self.env_var}) is not a valid environment name for shells")
230
+
231
+ if self.value and not isinstance(self.value, (str, flyte.io.File, flyte.io.Dir, RunOutput, AppEndpoint)):
232
+ raise TypeError(
233
+ f"Expected value to be of type str, file, dir, RunOutput or AppEndpoint, got {type(self.value)}"
234
+ )
235
+
236
+ if self.name is None:
237
+ self.name = "i0"
238
+
239
+
240
+ class SerializableParameter(BaseModel):
241
+ """
242
+ Serializable version of Parameter.
243
+ """
244
+
245
+ name: str
246
+ value: str
247
+ download: bool
248
+ type: _SerializedParameterType = "string"
249
+ env_var: Optional[str] = None
250
+ dest: Optional[str] = None
251
+ ignore_patterns: List[str] = field(default_factory=list)
252
+
253
+ @classmethod
254
+ def from_parameter(cls, param: Parameter) -> "SerializableParameter":
255
+ import flyte.io
256
+
257
+ # param.name is guaranteed to be set by Parameter.__post_init__
258
+ assert param.name is not None, "Parameter name should be set by __post_init__"
259
+
260
+ tpe: _SerializedParameterType = "string"
261
+ if isinstance(param.value, flyte.io.File):
262
+ value = param.value.path
263
+ tpe = "file"
264
+ download = True if param.mount is not None else param.download
265
+ elif isinstance(param.value, flyte.io.Dir):
266
+ value = param.value.path
267
+ tpe = "directory"
268
+ download = True if param.mount is not None else param.download
269
+ elif isinstance(param.value, (RunOutput, AppEndpoint)):
270
+ value = param.value.model_dump_json()
271
+ tpe = param.value.type
272
+ download = True if param.mount is not None else param.download
273
+ else:
274
+ value = typing.cast(str, param.value)
275
+ download = False
276
+
277
+ return cls(
278
+ name=param.name,
279
+ value=value,
280
+ type=tpe,
281
+ download=download,
282
+ env_var=param.env_var,
283
+ dest=param.mount,
284
+ ignore_patterns=param.ignore_patterns,
285
+ )
286
+
287
+
288
+ class SerializableParameterCollection(BaseModel):
289
+ """
290
+ Collection of parameters for application.
291
+
292
+ :param parameters: List of parameters.
293
+ """
294
+
295
+ parameters: List[SerializableParameter] = field(default_factory=list)
296
+
297
+ @cached_property
298
+ def to_transport(self) -> str:
299
+ import base64
300
+ import gzip
301
+ from io import BytesIO
302
+
303
+ json_str = self.model_dump_json()
304
+ buf = BytesIO()
305
+ with gzip.GzipFile(mode="wb", fileobj=buf, mtime=0) as f:
306
+ f.write(json_str.encode("utf-8"))
307
+ return base64.b64encode(buf.getvalue()).decode("utf-8")
308
+
309
+ @classmethod
310
+ def from_transport(cls, s: str) -> SerializableParameterCollection:
311
+ import base64
312
+ import gzip
313
+
314
+ compressed_val = base64.b64decode(s.encode("utf-8"))
315
+ json_str = gzip.decompress(compressed_val).decode("utf-8")
316
+ return cls.model_validate_json(json_str)
317
+
318
+ @classmethod
319
+ def from_parameters(cls, parameters: List[Parameter]) -> SerializableParameterCollection:
320
+ return cls(parameters=[SerializableParameter.from_parameter(param) for param in parameters])
321
+
322
+
323
+ @cache
324
+ def _load_parameters() -> dict[str, str]:
325
+ """Load parameters for application or endpoint."""
326
+ import json
327
+ import os
328
+
329
+ config_file = os.getenv(RUNTIME_PARAMETERS_FILE)
330
+
331
+ if config_file is None:
332
+ raise ValueError("Parameters are not mounted")
333
+
334
+ with open(config_file, "r") as f:
335
+ parameters = json.load(f)
336
+
337
+ return parameters
338
+
339
+
340
+ def get_parameter(name: str) -> str:
341
+ """Get parameters for application or endpoint."""
342
+ parameters = _load_parameters()
343
+ return parameters[name]
@@ -0,0 +1,3 @@
1
+ from .app_serde import translate_app_env_to_idl
2
+
3
+ __all__ = ["translate_app_env_to_idl"]