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.
- flyte/__init__.py +83 -30
- flyte/_bin/connect.py +61 -0
- flyte/_bin/debug.py +38 -0
- flyte/_bin/runtime.py +87 -19
- flyte/_bin/serve.py +351 -0
- flyte/_build.py +3 -2
- flyte/_cache/cache.py +6 -5
- flyte/_cache/local_cache.py +216 -0
- flyte/_code_bundle/_ignore.py +31 -5
- flyte/_code_bundle/_packaging.py +42 -11
- flyte/_code_bundle/_utils.py +57 -34
- flyte/_code_bundle/bundle.py +130 -27
- flyte/_constants.py +1 -0
- flyte/_context.py +21 -5
- flyte/_custom_context.py +73 -0
- flyte/_debug/constants.py +37 -0
- flyte/_debug/utils.py +17 -0
- flyte/_debug/vscode.py +315 -0
- flyte/_deploy.py +396 -75
- flyte/_deployer.py +109 -0
- flyte/_environment.py +94 -11
- flyte/_excepthook.py +37 -0
- flyte/_group.py +2 -1
- flyte/_hash.py +1 -16
- flyte/_image.py +544 -234
- flyte/_initialize.py +443 -294
- flyte/_interface.py +40 -5
- flyte/_internal/controllers/__init__.py +22 -8
- flyte/_internal/controllers/_local_controller.py +159 -35
- flyte/_internal/controllers/_trace.py +18 -10
- flyte/_internal/controllers/remote/__init__.py +38 -9
- flyte/_internal/controllers/remote/_action.py +82 -12
- flyte/_internal/controllers/remote/_client.py +6 -2
- flyte/_internal/controllers/remote/_controller.py +290 -64
- flyte/_internal/controllers/remote/_core.py +155 -95
- flyte/_internal/controllers/remote/_informer.py +40 -20
- flyte/_internal/controllers/remote/_service_protocol.py +2 -2
- flyte/_internal/imagebuild/__init__.py +2 -10
- flyte/_internal/imagebuild/docker_builder.py +391 -84
- flyte/_internal/imagebuild/image_builder.py +111 -55
- flyte/_internal/imagebuild/remote_builder.py +409 -0
- flyte/_internal/imagebuild/utils.py +79 -0
- flyte/_internal/resolvers/_app_env_module.py +92 -0
- flyte/_internal/resolvers/_task_module.py +5 -38
- flyte/_internal/resolvers/app_env.py +26 -0
- flyte/_internal/resolvers/common.py +8 -1
- flyte/_internal/resolvers/default.py +2 -2
- flyte/_internal/runtime/convert.py +322 -33
- flyte/_internal/runtime/entrypoints.py +106 -18
- flyte/_internal/runtime/io.py +71 -23
- flyte/_internal/runtime/resources_serde.py +21 -7
- flyte/_internal/runtime/reuse.py +125 -0
- flyte/_internal/runtime/rusty.py +196 -0
- flyte/_internal/runtime/task_serde.py +239 -66
- flyte/_internal/runtime/taskrunner.py +48 -8
- flyte/_internal/runtime/trigger_serde.py +162 -0
- flyte/_internal/runtime/types_serde.py +7 -16
- flyte/_keyring/file.py +115 -0
- flyte/_link.py +30 -0
- flyte/_logging.py +241 -42
- flyte/_map.py +312 -0
- flyte/_metrics.py +59 -0
- flyte/_module.py +74 -0
- flyte/_pod.py +30 -0
- flyte/_resources.py +296 -33
- flyte/_retry.py +1 -7
- flyte/_reusable_environment.py +72 -7
- flyte/_run.py +461 -132
- flyte/_secret.py +47 -11
- flyte/_serve.py +333 -0
- flyte/_task.py +245 -56
- flyte/_task_environment.py +219 -97
- flyte/_task_plugins.py +47 -0
- flyte/_tools.py +8 -8
- flyte/_trace.py +15 -24
- flyte/_trigger.py +1027 -0
- flyte/_utils/__init__.py +12 -1
- flyte/_utils/asyn.py +3 -1
- flyte/_utils/async_cache.py +139 -0
- flyte/_utils/coro_management.py +5 -4
- flyte/_utils/description_parser.py +19 -0
- flyte/_utils/docker_credentials.py +173 -0
- flyte/_utils/helpers.py +45 -19
- flyte/_utils/module_loader.py +123 -0
- flyte/_utils/org_discovery.py +57 -0
- flyte/_utils/uv_script_parser.py +8 -1
- flyte/_version.py +16 -3
- flyte/app/__init__.py +27 -0
- flyte/app/_app_environment.py +362 -0
- flyte/app/_connector_environment.py +40 -0
- flyte/app/_deploy.py +130 -0
- flyte/app/_parameter.py +343 -0
- flyte/app/_runtime/__init__.py +3 -0
- flyte/app/_runtime/app_serde.py +383 -0
- flyte/app/_types.py +113 -0
- flyte/app/extras/__init__.py +9 -0
- flyte/app/extras/_auth_middleware.py +217 -0
- flyte/app/extras/_fastapi.py +93 -0
- flyte/app/extras/_model_loader/__init__.py +3 -0
- flyte/app/extras/_model_loader/config.py +7 -0
- flyte/app/extras/_model_loader/loader.py +288 -0
- flyte/cli/__init__.py +12 -0
- flyte/cli/_abort.py +28 -0
- flyte/cli/_build.py +114 -0
- flyte/cli/_common.py +493 -0
- flyte/cli/_create.py +371 -0
- flyte/cli/_delete.py +45 -0
- flyte/cli/_deploy.py +401 -0
- flyte/cli/_gen.py +316 -0
- flyte/cli/_get.py +446 -0
- flyte/cli/_option.py +33 -0
- {union/_cli → flyte/cli}/_params.py +152 -153
- flyte/cli/_plugins.py +209 -0
- flyte/cli/_prefetch.py +292 -0
- flyte/cli/_run.py +690 -0
- flyte/cli/_serve.py +338 -0
- flyte/cli/_update.py +86 -0
- flyte/cli/_user.py +20 -0
- flyte/cli/main.py +246 -0
- flyte/config/__init__.py +3 -0
- flyte/config/_config.py +248 -0
- flyte/config/_internal.py +73 -0
- flyte/config/_reader.py +225 -0
- flyte/connectors/__init__.py +11 -0
- flyte/connectors/_connector.py +330 -0
- flyte/connectors/_server.py +194 -0
- flyte/connectors/utils.py +159 -0
- flyte/errors.py +134 -2
- flyte/extend.py +24 -0
- flyte/extras/_container.py +69 -56
- flyte/git/__init__.py +3 -0
- flyte/git/_config.py +279 -0
- flyte/io/__init__.py +8 -1
- flyte/io/{structured_dataset → _dataframe}/__init__.py +32 -30
- flyte/io/{structured_dataset → _dataframe}/basic_dfs.py +75 -68
- flyte/io/{structured_dataset/structured_dataset.py → _dataframe/dataframe.py} +207 -242
- flyte/io/_dir.py +575 -113
- flyte/io/_file.py +587 -141
- flyte/io/_hashing_io.py +342 -0
- flyte/io/extend.py +7 -0
- flyte/models.py +635 -0
- flyte/prefetch/__init__.py +22 -0
- flyte/prefetch/_hf_model.py +563 -0
- flyte/remote/__init__.py +14 -3
- flyte/remote/_action.py +879 -0
- flyte/remote/_app.py +346 -0
- flyte/remote/_auth_metadata.py +42 -0
- flyte/remote/_client/_protocols.py +62 -4
- flyte/remote/_client/auth/_auth_utils.py +19 -0
- flyte/remote/_client/auth/_authenticators/base.py +8 -2
- flyte/remote/_client/auth/_authenticators/device_code.py +4 -5
- flyte/remote/_client/auth/_authenticators/factory.py +4 -0
- flyte/remote/_client/auth/_authenticators/passthrough.py +79 -0
- flyte/remote/_client/auth/_authenticators/pkce.py +17 -18
- flyte/remote/_client/auth/_channel.py +47 -18
- flyte/remote/_client/auth/_client_config.py +5 -3
- flyte/remote/_client/auth/_keyring.py +15 -2
- flyte/remote/_client/auth/_token_client.py +3 -3
- flyte/remote/_client/controlplane.py +206 -18
- flyte/remote/_common.py +66 -0
- flyte/remote/_data.py +107 -22
- flyte/remote/_logs.py +116 -33
- flyte/remote/_project.py +21 -19
- flyte/remote/_run.py +164 -631
- flyte/remote/_secret.py +72 -29
- flyte/remote/_task.py +387 -46
- flyte/remote/_trigger.py +368 -0
- flyte/remote/_user.py +43 -0
- flyte/report/_report.py +10 -6
- flyte/storage/__init__.py +13 -1
- flyte/storage/_config.py +237 -0
- flyte/storage/_parallel_reader.py +289 -0
- flyte/storage/_storage.py +268 -59
- flyte/syncify/__init__.py +56 -0
- flyte/syncify/_api.py +414 -0
- flyte/types/__init__.py +39 -0
- flyte/types/_interface.py +22 -7
- flyte/{io/pickle/transformer.py → types/_pickle.py} +37 -9
- flyte/types/_string_literals.py +8 -9
- flyte/types/_type_engine.py +230 -129
- flyte/types/_utils.py +1 -1
- flyte-2.0.0b46.data/scripts/debug.py +38 -0
- flyte-2.0.0b46.data/scripts/runtime.py +194 -0
- flyte-2.0.0b46.dist-info/METADATA +352 -0
- flyte-2.0.0b46.dist-info/RECORD +221 -0
- flyte-2.0.0b46.dist-info/entry_points.txt +8 -0
- flyte-2.0.0b46.dist-info/licenses/LICENSE +201 -0
- flyte/_api_commons.py +0 -3
- flyte/_cli/_common.py +0 -287
- flyte/_cli/_create.py +0 -42
- flyte/_cli/_delete.py +0 -23
- flyte/_cli/_deploy.py +0 -140
- flyte/_cli/_get.py +0 -235
- flyte/_cli/_run.py +0 -152
- flyte/_cli/main.py +0 -72
- flyte/_datastructures.py +0 -342
- flyte/_internal/controllers/pbhash.py +0 -39
- flyte/_protos/common/authorization_pb2.py +0 -66
- flyte/_protos/common/authorization_pb2.pyi +0 -108
- flyte/_protos/common/authorization_pb2_grpc.py +0 -4
- flyte/_protos/common/identifier_pb2.py +0 -71
- flyte/_protos/common/identifier_pb2.pyi +0 -82
- flyte/_protos/common/identifier_pb2_grpc.py +0 -4
- flyte/_protos/common/identity_pb2.py +0 -48
- flyte/_protos/common/identity_pb2.pyi +0 -72
- flyte/_protos/common/identity_pb2_grpc.py +0 -4
- flyte/_protos/common/list_pb2.py +0 -36
- flyte/_protos/common/list_pb2.pyi +0 -69
- flyte/_protos/common/list_pb2_grpc.py +0 -4
- flyte/_protos/common/policy_pb2.py +0 -37
- flyte/_protos/common/policy_pb2.pyi +0 -27
- flyte/_protos/common/policy_pb2_grpc.py +0 -4
- flyte/_protos/common/role_pb2.py +0 -37
- flyte/_protos/common/role_pb2.pyi +0 -53
- flyte/_protos/common/role_pb2_grpc.py +0 -4
- flyte/_protos/common/runtime_version_pb2.py +0 -28
- flyte/_protos/common/runtime_version_pb2.pyi +0 -24
- flyte/_protos/common/runtime_version_pb2_grpc.py +0 -4
- flyte/_protos/logs/dataplane/payload_pb2.py +0 -96
- flyte/_protos/logs/dataplane/payload_pb2.pyi +0 -168
- flyte/_protos/logs/dataplane/payload_pb2_grpc.py +0 -4
- flyte/_protos/secret/definition_pb2.py +0 -49
- flyte/_protos/secret/definition_pb2.pyi +0 -93
- flyte/_protos/secret/definition_pb2_grpc.py +0 -4
- flyte/_protos/secret/payload_pb2.py +0 -62
- flyte/_protos/secret/payload_pb2.pyi +0 -94
- flyte/_protos/secret/payload_pb2_grpc.py +0 -4
- flyte/_protos/secret/secret_pb2.py +0 -38
- flyte/_protos/secret/secret_pb2.pyi +0 -6
- flyte/_protos/secret/secret_pb2_grpc.py +0 -198
- flyte/_protos/secret/secret_pb2_grpc_grpc.py +0 -198
- flyte/_protos/validate/validate/validate_pb2.py +0 -76
- flyte/_protos/workflow/node_execution_service_pb2.py +0 -26
- flyte/_protos/workflow/node_execution_service_pb2.pyi +0 -4
- flyte/_protos/workflow/node_execution_service_pb2_grpc.py +0 -32
- flyte/_protos/workflow/queue_service_pb2.py +0 -106
- flyte/_protos/workflow/queue_service_pb2.pyi +0 -141
- flyte/_protos/workflow/queue_service_pb2_grpc.py +0 -172
- flyte/_protos/workflow/run_definition_pb2.py +0 -128
- flyte/_protos/workflow/run_definition_pb2.pyi +0 -310
- flyte/_protos/workflow/run_definition_pb2_grpc.py +0 -4
- flyte/_protos/workflow/run_logs_service_pb2.py +0 -41
- flyte/_protos/workflow/run_logs_service_pb2.pyi +0 -28
- flyte/_protos/workflow/run_logs_service_pb2_grpc.py +0 -69
- flyte/_protos/workflow/run_service_pb2.py +0 -133
- flyte/_protos/workflow/run_service_pb2.pyi +0 -175
- flyte/_protos/workflow/run_service_pb2_grpc.py +0 -412
- flyte/_protos/workflow/state_service_pb2.py +0 -58
- flyte/_protos/workflow/state_service_pb2.pyi +0 -71
- flyte/_protos/workflow/state_service_pb2_grpc.py +0 -138
- flyte/_protos/workflow/task_definition_pb2.py +0 -72
- flyte/_protos/workflow/task_definition_pb2.pyi +0 -65
- flyte/_protos/workflow/task_definition_pb2_grpc.py +0 -4
- flyte/_protos/workflow/task_service_pb2.py +0 -44
- flyte/_protos/workflow/task_service_pb2.pyi +0 -31
- flyte/_protos/workflow/task_service_pb2_grpc.py +0 -104
- flyte/io/_dataframe.py +0 -0
- flyte/io/pickle/__init__.py +0 -0
- flyte/remote/_console.py +0 -18
- flyte-0.0.1b0.dist-info/METADATA +0 -179
- flyte-0.0.1b0.dist-info/RECORD +0 -390
- flyte-0.0.1b0.dist-info/entry_points.txt +0 -3
- union/__init__.py +0 -54
- union/_api_commons.py +0 -3
- union/_bin/__init__.py +0 -0
- union/_bin/runtime.py +0 -113
- union/_build.py +0 -25
- union/_cache/__init__.py +0 -12
- union/_cache/cache.py +0 -141
- union/_cache/defaults.py +0 -9
- union/_cache/policy_function_body.py +0 -42
- union/_cli/__init__.py +0 -0
- union/_cli/_common.py +0 -263
- union/_cli/_create.py +0 -40
- union/_cli/_delete.py +0 -23
- union/_cli/_deploy.py +0 -120
- union/_cli/_get.py +0 -162
- union/_cli/_run.py +0 -150
- union/_cli/main.py +0 -72
- union/_code_bundle/__init__.py +0 -8
- union/_code_bundle/_ignore.py +0 -113
- union/_code_bundle/_packaging.py +0 -187
- union/_code_bundle/_utils.py +0 -342
- union/_code_bundle/bundle.py +0 -176
- union/_context.py +0 -146
- union/_datastructures.py +0 -295
- union/_deploy.py +0 -185
- union/_doc.py +0 -29
- union/_docstring.py +0 -26
- union/_environment.py +0 -43
- union/_group.py +0 -31
- union/_hash.py +0 -23
- union/_image.py +0 -760
- union/_initialize.py +0 -585
- union/_interface.py +0 -84
- union/_internal/__init__.py +0 -3
- union/_internal/controllers/__init__.py +0 -77
- union/_internal/controllers/_local_controller.py +0 -77
- union/_internal/controllers/pbhash.py +0 -39
- union/_internal/controllers/remote/__init__.py +0 -40
- union/_internal/controllers/remote/_action.py +0 -131
- union/_internal/controllers/remote/_client.py +0 -43
- union/_internal/controllers/remote/_controller.py +0 -169
- union/_internal/controllers/remote/_core.py +0 -341
- union/_internal/controllers/remote/_informer.py +0 -260
- union/_internal/controllers/remote/_service_protocol.py +0 -44
- union/_internal/imagebuild/__init__.py +0 -11
- union/_internal/imagebuild/docker_builder.py +0 -416
- union/_internal/imagebuild/image_builder.py +0 -243
- union/_internal/imagebuild/remote_builder.py +0 -0
- union/_internal/resolvers/__init__.py +0 -0
- union/_internal/resolvers/_task_module.py +0 -31
- union/_internal/resolvers/common.py +0 -24
- union/_internal/resolvers/default.py +0 -27
- union/_internal/runtime/__init__.py +0 -0
- union/_internal/runtime/convert.py +0 -163
- union/_internal/runtime/entrypoints.py +0 -121
- union/_internal/runtime/io.py +0 -136
- union/_internal/runtime/resources_serde.py +0 -134
- union/_internal/runtime/task_serde.py +0 -202
- union/_internal/runtime/taskrunner.py +0 -179
- union/_internal/runtime/types_serde.py +0 -53
- union/_logging.py +0 -124
- union/_protos/__init__.py +0 -0
- union/_protos/common/authorization_pb2.py +0 -66
- union/_protos/common/authorization_pb2.pyi +0 -106
- union/_protos/common/authorization_pb2_grpc.py +0 -4
- union/_protos/common/identifier_pb2.py +0 -71
- union/_protos/common/identifier_pb2.pyi +0 -82
- union/_protos/common/identifier_pb2_grpc.py +0 -4
- union/_protos/common/identity_pb2.py +0 -48
- union/_protos/common/identity_pb2.pyi +0 -72
- union/_protos/common/identity_pb2_grpc.py +0 -4
- union/_protos/common/list_pb2.py +0 -36
- union/_protos/common/list_pb2.pyi +0 -69
- union/_protos/common/list_pb2_grpc.py +0 -4
- union/_protos/common/policy_pb2.py +0 -37
- union/_protos/common/policy_pb2.pyi +0 -27
- union/_protos/common/policy_pb2_grpc.py +0 -4
- union/_protos/common/role_pb2.py +0 -37
- union/_protos/common/role_pb2.pyi +0 -51
- union/_protos/common/role_pb2_grpc.py +0 -4
- union/_protos/common/runtime_version_pb2.py +0 -28
- union/_protos/common/runtime_version_pb2.pyi +0 -24
- union/_protos/common/runtime_version_pb2_grpc.py +0 -4
- union/_protos/logs/dataplane/payload_pb2.py +0 -96
- union/_protos/logs/dataplane/payload_pb2.pyi +0 -168
- union/_protos/logs/dataplane/payload_pb2_grpc.py +0 -4
- union/_protos/secret/definition_pb2.py +0 -49
- union/_protos/secret/definition_pb2.pyi +0 -93
- union/_protos/secret/definition_pb2_grpc.py +0 -4
- union/_protos/secret/payload_pb2.py +0 -62
- union/_protos/secret/payload_pb2.pyi +0 -94
- union/_protos/secret/payload_pb2_grpc.py +0 -4
- union/_protos/secret/secret_pb2.py +0 -38
- union/_protos/secret/secret_pb2.pyi +0 -6
- union/_protos/secret/secret_pb2_grpc.py +0 -198
- union/_protos/validate/validate/validate_pb2.py +0 -76
- union/_protos/workflow/node_execution_service_pb2.py +0 -26
- union/_protos/workflow/node_execution_service_pb2.pyi +0 -4
- union/_protos/workflow/node_execution_service_pb2_grpc.py +0 -32
- union/_protos/workflow/queue_service_pb2.py +0 -75
- union/_protos/workflow/queue_service_pb2.pyi +0 -103
- union/_protos/workflow/queue_service_pb2_grpc.py +0 -172
- union/_protos/workflow/run_definition_pb2.py +0 -100
- union/_protos/workflow/run_definition_pb2.pyi +0 -256
- union/_protos/workflow/run_definition_pb2_grpc.py +0 -4
- union/_protos/workflow/run_logs_service_pb2.py +0 -41
- union/_protos/workflow/run_logs_service_pb2.pyi +0 -28
- union/_protos/workflow/run_logs_service_pb2_grpc.py +0 -69
- union/_protos/workflow/run_service_pb2.py +0 -133
- union/_protos/workflow/run_service_pb2.pyi +0 -173
- union/_protos/workflow/run_service_pb2_grpc.py +0 -412
- union/_protos/workflow/state_service_pb2.py +0 -58
- union/_protos/workflow/state_service_pb2.pyi +0 -69
- union/_protos/workflow/state_service_pb2_grpc.py +0 -138
- union/_protos/workflow/task_definition_pb2.py +0 -72
- union/_protos/workflow/task_definition_pb2.pyi +0 -65
- union/_protos/workflow/task_definition_pb2_grpc.py +0 -4
- union/_protos/workflow/task_service_pb2.py +0 -44
- union/_protos/workflow/task_service_pb2.pyi +0 -31
- union/_protos/workflow/task_service_pb2_grpc.py +0 -104
- union/_resources.py +0 -226
- union/_retry.py +0 -32
- union/_reusable_environment.py +0 -25
- union/_run.py +0 -374
- union/_secret.py +0 -61
- union/_task.py +0 -354
- union/_task_environment.py +0 -186
- union/_timeout.py +0 -47
- union/_tools.py +0 -27
- union/_utils/__init__.py +0 -11
- union/_utils/asyn.py +0 -119
- union/_utils/file_handling.py +0 -71
- union/_utils/helpers.py +0 -46
- union/_utils/lazy_module.py +0 -54
- union/_utils/uv_script_parser.py +0 -49
- union/_version.py +0 -21
- union/connectors/__init__.py +0 -0
- union/errors.py +0 -128
- union/extras/__init__.py +0 -5
- union/extras/_container.py +0 -263
- union/io/__init__.py +0 -11
- union/io/_dataframe.py +0 -0
- union/io/_dir.py +0 -425
- union/io/_file.py +0 -418
- union/io/pickle/__init__.py +0 -0
- union/io/pickle/transformer.py +0 -117
- union/io/structured_dataset/__init__.py +0 -122
- union/io/structured_dataset/basic_dfs.py +0 -219
- union/io/structured_dataset/structured_dataset.py +0 -1057
- union/py.typed +0 -0
- union/remote/__init__.py +0 -23
- union/remote/_client/__init__.py +0 -0
- union/remote/_client/_protocols.py +0 -129
- union/remote/_client/auth/__init__.py +0 -12
- union/remote/_client/auth/_authenticators/__init__.py +0 -0
- union/remote/_client/auth/_authenticators/base.py +0 -391
- union/remote/_client/auth/_authenticators/client_credentials.py +0 -73
- union/remote/_client/auth/_authenticators/device_code.py +0 -120
- union/remote/_client/auth/_authenticators/external_command.py +0 -77
- union/remote/_client/auth/_authenticators/factory.py +0 -200
- union/remote/_client/auth/_authenticators/pkce.py +0 -515
- union/remote/_client/auth/_channel.py +0 -184
- union/remote/_client/auth/_client_config.py +0 -83
- union/remote/_client/auth/_default_html.py +0 -32
- union/remote/_client/auth/_grpc_utils/__init__.py +0 -0
- union/remote/_client/auth/_grpc_utils/auth_interceptor.py +0 -204
- union/remote/_client/auth/_grpc_utils/default_metadata_interceptor.py +0 -144
- union/remote/_client/auth/_keyring.py +0 -154
- union/remote/_client/auth/_token_client.py +0 -258
- union/remote/_client/auth/errors.py +0 -16
- union/remote/_client/controlplane.py +0 -86
- union/remote/_data.py +0 -149
- union/remote/_logs.py +0 -74
- union/remote/_project.py +0 -86
- union/remote/_run.py +0 -820
- union/remote/_secret.py +0 -132
- union/remote/_task.py +0 -193
- union/report/__init__.py +0 -3
- union/report/_report.py +0 -178
- union/report/_template.html +0 -124
- union/storage/__init__.py +0 -24
- union/storage/_remote_fs.py +0 -34
- union/storage/_storage.py +0 -247
- union/storage/_utils.py +0 -5
- union/types/__init__.py +0 -11
- union/types/_renderer.py +0 -162
- union/types/_string_literals.py +0 -120
- union/types/_type_engine.py +0 -2131
- union/types/_utils.py +0 -80
- /flyte/{_cli → _debug}/__init__.py +0 -0
- /flyte/{_protos → _keyring}/__init__.py +0 -0
- {flyte-0.0.1b0.dist-info → flyte-2.0.0b46.dist-info}/WHEEL +0 -0
- {flyte-0.0.1b0.dist-info → flyte-2.0.0b46.dist-info}/top_level.txt +0 -0
|
@@ -3,18 +3,18 @@ import typing
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import TypeVar
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from flyteidl2.core import literals_pb2, types_pb2
|
|
7
7
|
from fsspec.core import split_protocol, strip_protocol
|
|
8
8
|
|
|
9
9
|
import flyte.storage as storage
|
|
10
10
|
from flyte._logging import logger
|
|
11
11
|
from flyte._utils import lazy_module
|
|
12
|
-
from flyte.io.
|
|
12
|
+
from flyte.io._dataframe.dataframe import (
|
|
13
13
|
CSV,
|
|
14
14
|
PARQUET,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
DataFrame,
|
|
16
|
+
DataFrameDecoder,
|
|
17
|
+
DataFrameEncoder,
|
|
18
18
|
)
|
|
19
19
|
|
|
20
20
|
if typing.TYPE_CHECKING:
|
|
@@ -27,58 +27,51 @@ else:
|
|
|
27
27
|
T = TypeVar("T")
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
def get_pandas_storage_options(uri: str, data_config=None, anonymous: bool = False) -> typing.Optional[typing.Dict]:
|
|
30
|
+
def get_pandas_storage_options(uri: str, anonymous: bool = False) -> typing.Optional[typing.Dict]:
|
|
32
31
|
from pandas.io.common import is_fsspec_url # type: ignore
|
|
33
32
|
|
|
34
33
|
if is_fsspec_url(uri):
|
|
35
34
|
if uri.startswith("s3"):
|
|
36
|
-
|
|
37
|
-
return {
|
|
38
|
-
"cache_regions": True,
|
|
39
|
-
"client_kwargs": {"endpoint_url": "http://localhost:30002"},
|
|
40
|
-
"key": "minio",
|
|
41
|
-
"secret": "miniostorage",
|
|
42
|
-
}
|
|
35
|
+
return storage.get_configured_fsspec_kwargs("s3", anonymous=anonymous)
|
|
43
36
|
return {}
|
|
44
37
|
|
|
45
38
|
# Pandas does not allow storage_options for non-fsspec paths e.g. local.
|
|
46
39
|
return None
|
|
47
40
|
|
|
48
41
|
|
|
49
|
-
class PandasToCSVEncodingHandler(
|
|
42
|
+
class PandasToCSVEncodingHandler(DataFrameEncoder):
|
|
50
43
|
def __init__(self):
|
|
51
44
|
super().__init__(pd.DataFrame, None, CSV)
|
|
52
45
|
|
|
53
46
|
async def encode(
|
|
54
47
|
self,
|
|
55
|
-
|
|
48
|
+
dataframe: DataFrame,
|
|
56
49
|
structured_dataset_type: types_pb2.StructuredDatasetType,
|
|
57
50
|
) -> literals_pb2.StructuredDataset:
|
|
58
|
-
if not
|
|
51
|
+
if not dataframe.uri:
|
|
59
52
|
from flyte._context import internal_ctx
|
|
60
53
|
|
|
61
54
|
ctx = internal_ctx()
|
|
62
55
|
uri = ctx.raw_data.get_random_remote_path()
|
|
63
56
|
else:
|
|
64
|
-
uri = typing.cast(str,
|
|
57
|
+
uri = typing.cast(str, dataframe.uri)
|
|
65
58
|
|
|
66
59
|
if not storage.is_remote(uri):
|
|
67
60
|
Path(uri).mkdir(parents=True, exist_ok=True)
|
|
68
|
-
|
|
69
|
-
df = typing.cast(pd.DataFrame,
|
|
61
|
+
csv_file = storage.join(uri, "data.csv")
|
|
62
|
+
df = typing.cast(pd.DataFrame, dataframe.val)
|
|
70
63
|
df.to_csv(
|
|
71
|
-
|
|
64
|
+
csv_file,
|
|
72
65
|
index=False,
|
|
73
|
-
storage_options=get_pandas_storage_options(uri=
|
|
66
|
+
storage_options=get_pandas_storage_options(uri=csv_file),
|
|
74
67
|
)
|
|
75
68
|
structured_dataset_type.format = CSV
|
|
76
69
|
return literals_pb2.StructuredDataset(
|
|
77
|
-
uri=uri, metadata=literals_pb2.StructuredDatasetMetadata(structured_dataset_type)
|
|
70
|
+
uri=uri, metadata=literals_pb2.StructuredDatasetMetadata(structured_dataset_type=structured_dataset_type)
|
|
78
71
|
)
|
|
79
72
|
|
|
80
73
|
|
|
81
|
-
class CSVToPandasDecodingHandler(
|
|
74
|
+
class CSVToPandasDecodingHandler(DataFrameDecoder):
|
|
82
75
|
def __init__(self):
|
|
83
76
|
super().__init__(pd.DataFrame, None, CSV)
|
|
84
77
|
|
|
@@ -87,48 +80,58 @@ class CSVToPandasDecodingHandler(StructuredDatasetDecoder):
|
|
|
87
80
|
proto_value: literals_pb2.StructuredDataset,
|
|
88
81
|
current_task_metadata: literals_pb2.StructuredDatasetMetadata,
|
|
89
82
|
) -> "pd.DataFrame":
|
|
90
|
-
from botocore.exceptions import NoCredentialsError
|
|
91
|
-
|
|
92
83
|
uri = proto_value.uri
|
|
93
84
|
columns = None
|
|
94
|
-
kwargs = get_pandas_storage_options(uri=uri
|
|
95
|
-
|
|
85
|
+
kwargs = get_pandas_storage_options(uri=uri)
|
|
86
|
+
csv_file = storage.join(uri, "data.csv")
|
|
96
87
|
if current_task_metadata.structured_dataset_type and current_task_metadata.structured_dataset_type.columns:
|
|
97
88
|
columns = [c.name for c in current_task_metadata.structured_dataset_type.columns]
|
|
98
89
|
try:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
90
|
+
import io
|
|
91
|
+
|
|
92
|
+
# The pattern used here is a bit wonky because of obstore issues with csv, getting early eof error.
|
|
93
|
+
buf = io.BytesIO()
|
|
94
|
+
async for chunk in storage.get_stream(csv_file):
|
|
95
|
+
buf.write(chunk)
|
|
96
|
+
buf.seek(0)
|
|
97
|
+
df = pd.read_csv(buf)
|
|
98
|
+
return df
|
|
99
|
+
|
|
100
|
+
except Exception as exc:
|
|
101
|
+
if exc.__class__.__name__ == "NoCredentialsError":
|
|
102
|
+
logger.debug("S3 source detected, attempting anonymous S3 access")
|
|
103
|
+
kwargs = get_pandas_storage_options(uri=uri, anonymous=True)
|
|
104
|
+
return pd.read_csv(csv_file, usecols=columns, storage_options=kwargs)
|
|
105
|
+
else:
|
|
106
|
+
raise
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
class PandasToParquetEncodingHandler(DataFrameEncoder):
|
|
107
110
|
def __init__(self):
|
|
108
111
|
super().__init__(pd.DataFrame, None, PARQUET)
|
|
109
112
|
|
|
110
113
|
async def encode(
|
|
111
114
|
self,
|
|
112
|
-
|
|
115
|
+
dataframe: DataFrame,
|
|
113
116
|
structured_dataset_type: types_pb2.StructuredDatasetType,
|
|
114
117
|
) -> literals_pb2.StructuredDataset:
|
|
115
|
-
if not
|
|
118
|
+
if not dataframe.uri:
|
|
116
119
|
from flyte._context import internal_ctx
|
|
117
120
|
|
|
118
121
|
ctx = internal_ctx()
|
|
119
122
|
uri = str(ctx.raw_data.get_random_remote_path())
|
|
120
123
|
else:
|
|
121
|
-
uri = typing.cast(str,
|
|
124
|
+
uri = typing.cast(str, dataframe.uri)
|
|
122
125
|
|
|
123
126
|
if not storage.is_remote(uri):
|
|
124
127
|
Path(uri).mkdir(parents=True, exist_ok=True)
|
|
125
128
|
path = os.path.join(uri, f"{0:05}")
|
|
126
|
-
df = typing.cast(pd.DataFrame,
|
|
129
|
+
df = typing.cast(pd.DataFrame, dataframe.val)
|
|
127
130
|
df.to_parquet(
|
|
128
131
|
path,
|
|
129
132
|
coerce_timestamps="us",
|
|
130
133
|
allow_truncated_timestamps=False,
|
|
131
|
-
storage_options=get_pandas_storage_options(uri=path
|
|
134
|
+
storage_options=get_pandas_storage_options(uri=path),
|
|
132
135
|
)
|
|
133
136
|
structured_dataset_type.format = PARQUET
|
|
134
137
|
return literals_pb2.StructuredDataset(
|
|
@@ -136,7 +139,7 @@ class PandasToParquetEncodingHandler(StructuredDatasetEncoder):
|
|
|
136
139
|
)
|
|
137
140
|
|
|
138
141
|
|
|
139
|
-
class ParquetToPandasDecodingHandler(
|
|
142
|
+
class ParquetToPandasDecodingHandler(DataFrameDecoder):
|
|
140
143
|
def __init__(self):
|
|
141
144
|
super().__init__(pd.DataFrame, None, PARQUET)
|
|
142
145
|
|
|
@@ -145,51 +148,53 @@ class ParquetToPandasDecodingHandler(StructuredDatasetDecoder):
|
|
|
145
148
|
flyte_value: literals_pb2.StructuredDataset,
|
|
146
149
|
current_task_metadata: literals_pb2.StructuredDatasetMetadata,
|
|
147
150
|
) -> "pd.DataFrame":
|
|
148
|
-
from botocore.exceptions import NoCredentialsError
|
|
149
|
-
|
|
150
151
|
uri = flyte_value.uri
|
|
151
152
|
columns = None
|
|
152
|
-
kwargs = get_pandas_storage_options(uri=uri
|
|
153
|
+
kwargs = get_pandas_storage_options(uri=uri)
|
|
153
154
|
if current_task_metadata.structured_dataset_type and current_task_metadata.structured_dataset_type.columns:
|
|
154
155
|
columns = [c.name for c in current_task_metadata.structured_dataset_type.columns]
|
|
155
156
|
try:
|
|
156
157
|
return pd.read_parquet(uri, columns=columns, storage_options=kwargs)
|
|
157
|
-
except
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
except Exception as exc:
|
|
159
|
+
if exc.__class__.__name__ == "NoCredentialsError":
|
|
160
|
+
logger.debug("S3 source detected, attempting anonymous S3 access")
|
|
161
|
+
kwargs = get_pandas_storage_options(uri=uri, anonymous=True)
|
|
162
|
+
return pd.read_parquet(uri, columns=columns, storage_options=kwargs)
|
|
163
|
+
else:
|
|
164
|
+
raise
|
|
161
165
|
|
|
162
166
|
|
|
163
|
-
class ArrowToParquetEncodingHandler(
|
|
167
|
+
class ArrowToParquetEncodingHandler(DataFrameEncoder):
|
|
164
168
|
def __init__(self):
|
|
165
169
|
super().__init__(pa.Table, None, PARQUET)
|
|
166
170
|
|
|
167
171
|
async def encode(
|
|
168
172
|
self,
|
|
169
|
-
|
|
170
|
-
|
|
173
|
+
dataframe: DataFrame,
|
|
174
|
+
dataframe_type: types_pb2.StructuredDatasetType,
|
|
171
175
|
) -> literals_pb2.StructuredDataset:
|
|
172
176
|
import pyarrow.parquet as pq
|
|
173
177
|
|
|
174
|
-
if not
|
|
178
|
+
if not dataframe.uri:
|
|
175
179
|
from flyte._context import internal_ctx
|
|
176
180
|
|
|
177
181
|
ctx = internal_ctx()
|
|
178
182
|
uri = ctx.raw_data.get_random_remote_path()
|
|
179
183
|
else:
|
|
180
|
-
uri = typing.cast(str,
|
|
184
|
+
uri = typing.cast(str, dataframe.uri)
|
|
181
185
|
|
|
182
186
|
if not storage.is_remote(uri):
|
|
183
187
|
Path(uri).mkdir(parents=True, exist_ok=True)
|
|
184
188
|
path = os.path.join(uri, f"{0:05}")
|
|
185
189
|
filesystem = storage.get_underlying_filesystem(path=path)
|
|
186
|
-
pq.write_table(
|
|
190
|
+
pq.write_table(dataframe.val, strip_protocol(path), filesystem=filesystem)
|
|
187
191
|
return literals_pb2.StructuredDataset(
|
|
188
|
-
uri=uri,
|
|
192
|
+
uri=uri,
|
|
193
|
+
metadata=literals_pb2.StructuredDatasetMetadata(structured_dataset_type=dataframe_type),
|
|
189
194
|
)
|
|
190
195
|
|
|
191
196
|
|
|
192
|
-
class ParquetToArrowDecodingHandler(
|
|
197
|
+
class ParquetToArrowDecodingHandler(DataFrameDecoder):
|
|
193
198
|
def __init__(self):
|
|
194
199
|
super().__init__(pa.Table, None, PARQUET)
|
|
195
200
|
|
|
@@ -199,21 +204,23 @@ class ParquetToArrowDecodingHandler(StructuredDatasetDecoder):
|
|
|
199
204
|
current_task_metadata: literals_pb2.StructuredDatasetMetadata,
|
|
200
205
|
) -> "pa.Table":
|
|
201
206
|
import pyarrow.parquet as pq
|
|
202
|
-
from botocore.exceptions import NoCredentialsError
|
|
203
207
|
|
|
204
|
-
|
|
205
|
-
if not storage.is_remote(
|
|
206
|
-
Path(
|
|
207
|
-
|
|
208
|
+
path = proto_value.uri
|
|
209
|
+
if not storage.is_remote(path):
|
|
210
|
+
Path(path).parent.mkdir(parents=True, exist_ok=True)
|
|
211
|
+
_, path = split_protocol(path)
|
|
208
212
|
|
|
209
213
|
columns = None
|
|
210
214
|
if current_task_metadata.structured_dataset_type and current_task_metadata.structured_dataset_type.columns:
|
|
211
215
|
columns = [c.name for c in current_task_metadata.structured_dataset_type.columns]
|
|
212
216
|
try:
|
|
213
217
|
return pq.read_table(path, columns=columns)
|
|
214
|
-
except
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
218
|
+
except Exception as exc:
|
|
219
|
+
if exc.__class__.__name__ == "NoCredentialsError":
|
|
220
|
+
logger.debug("S3 source detected, attempting anonymous S3 access")
|
|
221
|
+
fs = storage.get_underlying_filesystem(path=path, anonymous=True)
|
|
222
|
+
if fs is not None:
|
|
223
|
+
return pq.read_table(path, filesystem=fs, columns=columns)
|
|
224
|
+
return None
|
|
225
|
+
else:
|
|
226
|
+
raise
|