truefoundry 0.9.4__tar.gz → 0.10.1rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of truefoundry might be problematic. Click here for more details.
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/PKG-INFO +1 -1
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/pyproject.toml +2 -2
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/constants.py +2 -1
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/__init__.py +3 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/_autogen/models.py +20 -37
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/__init__.py +2 -2
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/__init__.py +22 -19
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/dockerfile_template.py +17 -39
- truefoundry-0.10.1rc1/truefoundry/deploy/builder/builders/tfy_spark_buildpack/tfy_execute_notebook.py +56 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/patched_models.py +20 -0
- truefoundry-0.9.4/truefoundry/deploy/builder/builders/tfy_spark_buildpack/execute_notebook.py +0 -21
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/.gitignore +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/README.md +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/_ask/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/_ask/cli.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/_ask/client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/_ask/llm_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/agents/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/agents/base.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/agents/developer.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/agents/tester.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/cli.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/constants.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/exception.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/logger.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/ask.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/base.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/commit.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/docker_build.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/docker_run.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/list_files.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/read_file.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/send_request.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/write_file.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/utils/client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/utils/diff.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/__main__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/config.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/console.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/const.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/display_util.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/cli/util.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/auth_service_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/credential_file_manager.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/credential_provider.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/entities.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/exceptions.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/request_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/servicefoundry_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/session.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/storage_provider_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/types.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/common/warnings.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/constants.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/docker_service.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/builder/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/build_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/get_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/k8s_exec_credential_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/kubeconfig_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/login_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/cli/commands/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/core/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/core/login.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/core/logout.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/io/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/io/no_output_callback.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/io/output_callback.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/io/rich_output_callback.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/clients/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/clients/servicefoundry_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/const.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/dao/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/dao/application.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/dao/apply.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/dao/delete.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/dao/version.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/dao/workspace.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/diff_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/logs_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/messages.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/model/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/model/entity.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/session.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/util.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/lib/win32.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/python_deploy_codegen.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/deploy.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/models.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/deploy/v2/lib/source.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/logger.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/auth_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/deprecated_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/experiments_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/generate_code_snippet_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/health_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/metrics_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/mlfoundry_artifacts_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/run_artifacts_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api/runs_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/api_response.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/configuration.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/exceptions.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/agent_app.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/agent_manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/agent_with_fqn.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/apply_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/apply_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_path.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_type.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_version_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_version_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_version_serialization_format.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/artifact_version_status.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/assistant_message.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/blob_storage_reference.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/body_get_search_runs_get.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest_messages_inner.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/columns_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/command.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/content.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/content1.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/content2.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/content2_any_of_inner.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_artifact_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_artifact_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_artifact_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_artifact_version_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_dataset_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_experiment_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_experiment_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_model_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_run_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_run_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/data_directory_manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/dataset_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/dataset_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/delete_dataset_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/delete_model_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/delete_run_request.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/delete_tag_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/experiment_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/experiment_id_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/experiment_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/experiment_tag_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/export_deployment_files_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/external_blob_storage_source.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/fast_ai_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/file_info_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_artifact_version_aliases_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_experiment_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_latest_run_log_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_metric_history_response.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/get_tenant_id_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/gluon_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/h2_o_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/http_validation_error.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/image_content_part.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/image_url.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/infer_method_name.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/keras_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/latest_run_log_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/library_name.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/light_gbm_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_artifact_versions_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_artifact_versions_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_artifacts_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_artifacts_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_colums_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_datasets_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_datasets_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_experiments_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_metric_history_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_metric_history_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_model_version_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_model_versions_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_models_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_models_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_run_artifacts_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/list_run_logs_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/local_artifact_source.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/local_model_source.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/log_batch_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/log_metric_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/log_param_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/manifest1.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/manifest2.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/method.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/metric_collection_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/metric_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/mime_type.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_configuration.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_manifest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_server.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_version_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_version_environment.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/model_version_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/multi_part_upload_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/multi_part_upload_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/multi_part_upload_storage_provider.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/onnx_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/openapi_spec.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/paddle_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/param_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/parameters.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/py_torch_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/resolve_agent_app_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/restore_run_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_data_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_info_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_log_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_log_input_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/run_tag_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/search_runs_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/search_runs_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/set_experiment_tag_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/set_tag_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/signed_url_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/sklearn_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/sklearn_model_schema.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/sklearn_serialization_format.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/source.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/source1.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/source2.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/spa_cy_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/stats_models_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/stop.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/store_run_logs_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/subject.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/subject_type.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/system_message.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/tensor_flow_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/text.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/text_content_part.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/transformers_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/true_foundry_managed_source.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/update_artifact_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/update_dataset_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/update_experiment_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/update_model_version_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/update_run_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/update_run_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/url.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/user_message.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/validation_error.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/validation_error_loc_inner.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/xg_boost_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/xg_boost_model_schema.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/models/xg_boost_serialization_format.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client/rest.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/client_README.md +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/entities/artifacts.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/models/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/models/exceptions.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/models/schema.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/models/signature.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/_autogen/models/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/artifact/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/cli/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/cli/cli.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/cli/commands/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/cli/commands/download.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/cli/commands/model_init.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/cli/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/clients/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/constants.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/entities.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/enums.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/exceptions.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/git_info.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/internal_namespace.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/artifacts/model.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/image/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/image/constants.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/image/image.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/image/types.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/plot.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/pydantic_base.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/log_types/utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/logger.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/mlfoundry_api.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/mlfoundry_run.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/model_framework.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/prompt_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/run_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/session.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/ml/validation_utils.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/pydantic_v1.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/version.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/container_task.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/map_task.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/python_task.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/task.py +0 -0
- {truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/workflow/workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "truefoundry"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.10.1rc1" # This is a placeholder version, it will be replaced when releasing
|
|
4
4
|
requires-python = ">=3.8.1,<3.14"
|
|
5
5
|
description = "TrueFoundry CLI"
|
|
6
6
|
authors = [{ name = "TrueFoundry Team", email = "abhishek@truefoundry.com" }]
|
|
@@ -178,7 +178,7 @@ warn_required_dynamic_aliases = true
|
|
|
178
178
|
[tool.pytest.ini_options]
|
|
179
179
|
env = [
|
|
180
180
|
"TFY_PYTHONBUILD_PYTHON_IMAGE_REPO=docker.io/truefoundrycloud/test/python",
|
|
181
|
-
"TFY_SPARK_BUILD_SPARK_IMAGE_REPO=
|
|
181
|
+
"TFY_SPARK_BUILD_SPARK_IMAGE_REPO=public.ecr.aws/bitnami/spark",
|
|
182
182
|
]
|
|
183
183
|
|
|
184
184
|
[tool.uv]
|
|
@@ -65,7 +65,8 @@ class TrueFoundrySdkEnv(BaseSettings):
|
|
|
65
65
|
# Fo customizing the python image used for building via PythonBuild
|
|
66
66
|
TFY_PYTHONBUILD_PYTHON_IMAGE_REPO: str = "public.ecr.aws/docker/library/python"
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
# TODO(gw): Use another image with more linient rate limits
|
|
69
|
+
TFY_SPARK_BUILD_SPARK_IMAGE_REPO: str = "public.ecr.aws/bitnami/spark"
|
|
69
70
|
|
|
70
71
|
# For local development, this enables futher configuration via _TFYServersConfig
|
|
71
72
|
TFY_CLI_LOCAL_DEV_MODE: bool = False
|
|
@@ -113,6 +113,9 @@ from truefoundry.deploy.v2.lib.patched_models import (
|
|
|
113
113
|
ServiceAutoscaling,
|
|
114
114
|
SlackBot,
|
|
115
115
|
SlackWebhook,
|
|
116
|
+
SparkBuild,
|
|
117
|
+
SparkImage,
|
|
118
|
+
SparkImageBuild,
|
|
116
119
|
SparkJobJavaEntrypoint,
|
|
117
120
|
SparkJobPythonEntrypoint,
|
|
118
121
|
SparkJobScalaEntrypoint,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: application.json
|
|
3
|
-
# timestamp: 2025-06-
|
|
3
|
+
# timestamp: 2025-06-09T12:01:27+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -643,7 +643,7 @@ class PythonBuild(BaseModel):
|
|
|
643
643
|
)
|
|
644
644
|
cuda_version: Optional[
|
|
645
645
|
constr(
|
|
646
|
-
regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8)$"
|
|
646
|
+
regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9)$"
|
|
647
647
|
)
|
|
648
648
|
] = Field(
|
|
649
649
|
None,
|
|
@@ -840,7 +840,7 @@ class SlackWebhook(BaseModel):
|
|
|
840
840
|
)
|
|
841
841
|
|
|
842
842
|
|
|
843
|
-
class
|
|
843
|
+
class SparkBuild(BaseModel):
|
|
844
844
|
"""
|
|
845
845
|
Describes that we are using python to build a container image with a specific python version and pip packages installed.
|
|
846
846
|
"""
|
|
@@ -850,12 +850,6 @@ class SparkBuildSpec(BaseModel):
|
|
|
850
850
|
"3.5.2",
|
|
851
851
|
description="Spark version should match the spark version installed in the image.",
|
|
852
852
|
)
|
|
853
|
-
python_version: Optional[constr(regex=r"^\d+(\.\d+){1,2}([\-\.a-z0-9]+)?$")] = (
|
|
854
|
-
Field(
|
|
855
|
-
None,
|
|
856
|
-
description="Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)",
|
|
857
|
-
)
|
|
858
|
-
)
|
|
859
853
|
build_context_path: str = Field(
|
|
860
854
|
"./", description="Build path relative to project root path."
|
|
861
855
|
)
|
|
@@ -863,14 +857,6 @@ class SparkBuildSpec(BaseModel):
|
|
|
863
857
|
None,
|
|
864
858
|
description="Path to `requirements.txt` relative to\n`Path to build context`",
|
|
865
859
|
)
|
|
866
|
-
pip_packages: Optional[List[str]] = Field(
|
|
867
|
-
None,
|
|
868
|
-
description='Define pip package requirements.\nIn Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]',
|
|
869
|
-
)
|
|
870
|
-
apt_packages: Optional[List[str]] = Field(
|
|
871
|
-
None,
|
|
872
|
-
description='Debian packages to install via `apt get`.\nIn Python/YAML E.g. ["git", "ffmpeg", "htop"]',
|
|
873
|
-
)
|
|
874
860
|
|
|
875
861
|
|
|
876
862
|
class SparkDriverConfig(BaseModel):
|
|
@@ -897,7 +883,7 @@ class SparkImage(BaseModel):
|
|
|
897
883
|
Describes that we are using a pre-built image stored in a Docker Image registry
|
|
898
884
|
"""
|
|
899
885
|
|
|
900
|
-
type: Literal["image"] = Field(..., description="")
|
|
886
|
+
type: Literal["spark-image"] = Field(..., description="")
|
|
901
887
|
spark_version: str = Field(
|
|
902
888
|
"3.5.2",
|
|
903
889
|
description="Spark version should match the spark version installed in the image.",
|
|
@@ -912,6 +898,20 @@ class SparkImage(BaseModel):
|
|
|
912
898
|
)
|
|
913
899
|
|
|
914
900
|
|
|
901
|
+
class SparkImageBuild(BaseModel):
|
|
902
|
+
"""
|
|
903
|
+
Describes that we are building a new image based on the spec
|
|
904
|
+
"""
|
|
905
|
+
|
|
906
|
+
type: Literal["spark-image-build"] = Field(..., description="")
|
|
907
|
+
docker_registry: Optional[constr(regex=r"^\S+$")] = Field(
|
|
908
|
+
None,
|
|
909
|
+
description="FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page",
|
|
910
|
+
)
|
|
911
|
+
build_source: GitSource
|
|
912
|
+
build_spec: SparkBuild
|
|
913
|
+
|
|
914
|
+
|
|
915
915
|
class SparkJobJavaEntrypoint(BaseModel):
|
|
916
916
|
type: Literal["java"] = Field(..., description="")
|
|
917
917
|
main_application_file: str = Field(
|
|
@@ -1011,7 +1011,7 @@ class TaskPythonBuild(BaseModel):
|
|
|
1011
1011
|
)
|
|
1012
1012
|
cuda_version: Optional[
|
|
1013
1013
|
constr(
|
|
1014
|
-
regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8)$"
|
|
1014
|
+
regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9)$"
|
|
1015
1015
|
)
|
|
1016
1016
|
] = Field(
|
|
1017
1017
|
None,
|
|
@@ -1432,23 +1432,6 @@ class SSHServer(BaseWorkbenchInput):
|
|
|
1432
1432
|
)
|
|
1433
1433
|
|
|
1434
1434
|
|
|
1435
|
-
class SparkBuild(BaseModel):
|
|
1436
|
-
"""
|
|
1437
|
-
Describes that we are building a new image based on the spec
|
|
1438
|
-
"""
|
|
1439
|
-
|
|
1440
|
-
type: Literal["build"] = Field(..., description="")
|
|
1441
|
-
docker_registry: Optional[constr(regex=r"^\S+$")] = Field(
|
|
1442
|
-
None,
|
|
1443
|
-
description="FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page",
|
|
1444
|
-
)
|
|
1445
|
-
build_source: Union[GitSource, LocalSource] = Field(..., description="")
|
|
1446
|
-
build_spec: Union[SparkBuildSpec, PythonBuild] = Field(
|
|
1447
|
-
...,
|
|
1448
|
-
description="Instructions to build a container image out of the build source",
|
|
1449
|
-
)
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
1435
|
class SparkExecutorConfig(BaseModel):
|
|
1453
1436
|
instances: Union[SparkExecutorFixedInstances, SparkExecutorDynamicScaling] = Field(
|
|
1454
1437
|
{"type": "fixed", "count": 1}, description=""
|
|
@@ -1461,7 +1444,7 @@ class SparkJob(BaseModel):
|
|
|
1461
1444
|
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1462
1445
|
..., description="Name of the job"
|
|
1463
1446
|
)
|
|
1464
|
-
image: Union[SparkImage,
|
|
1447
|
+
image: Union[SparkImage, SparkImageBuild] = Field(
|
|
1465
1448
|
...,
|
|
1466
1449
|
description="The image to use for driver and executors. Must have spark installed. Spark version must match the version in the image.",
|
|
1467
1450
|
)
|
|
@@ -2,8 +2,8 @@ from typing import Any, Dict, List, Optional, Union
|
|
|
2
2
|
|
|
3
3
|
from truefoundry.deploy._autogen.models import (
|
|
4
4
|
DockerFileBuild,
|
|
5
|
-
SparkBuildSpec,
|
|
6
5
|
PythonBuild,
|
|
6
|
+
SparkBuild,
|
|
7
7
|
TaskDockerFileBuild,
|
|
8
8
|
TaskPythonBuild,
|
|
9
9
|
)
|
|
@@ -21,7 +21,7 @@ class _BuildConfig(BaseModel):
|
|
|
21
21
|
NotebookImageBuild,
|
|
22
22
|
TaskPythonBuild,
|
|
23
23
|
TaskDockerFileBuild,
|
|
24
|
-
|
|
24
|
+
SparkBuild,
|
|
25
25
|
] = Field(discriminator="type")
|
|
26
26
|
|
|
27
27
|
|
|
@@ -3,7 +3,8 @@ import shutil
|
|
|
3
3
|
from tempfile import TemporaryDirectory
|
|
4
4
|
from typing import List, Optional
|
|
5
5
|
|
|
6
|
-
from truefoundry.
|
|
6
|
+
from truefoundry.common.constants import PythonPackageManager
|
|
7
|
+
from truefoundry.deploy._autogen.models import DockerFileBuild, SparkBuild
|
|
7
8
|
from truefoundry.deploy.builder.builders import dockerfile
|
|
8
9
|
from truefoundry.deploy.builder.builders.tfy_spark_buildpack.dockerfile_template import (
|
|
9
10
|
generate_dockerfile_content,
|
|
@@ -14,13 +15,14 @@ __all__ = ["generate_dockerfile_content", "build"]
|
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
def _convert_to_dockerfile_build_config(
|
|
17
|
-
build_configuration:
|
|
18
|
+
build_configuration: SparkBuild,
|
|
18
19
|
dockerfile_path: str,
|
|
19
20
|
mount_python_package_manager_conf_secret: bool = False,
|
|
20
21
|
) -> DockerFileBuild:
|
|
21
22
|
dockerfile_content = generate_dockerfile_content(
|
|
22
23
|
build_configuration=build_configuration,
|
|
23
24
|
mount_python_package_manager_conf_secret=mount_python_package_manager_conf_secret,
|
|
25
|
+
package_manager=PythonPackageManager.PIP.value,
|
|
24
26
|
)
|
|
25
27
|
with open(dockerfile_path, "w", encoding="utf8") as fp:
|
|
26
28
|
fp.write(dockerfile_content)
|
|
@@ -34,27 +36,28 @@ def _convert_to_dockerfile_build_config(
|
|
|
34
36
|
|
|
35
37
|
def build(
|
|
36
38
|
tag: str,
|
|
37
|
-
build_configuration:
|
|
39
|
+
build_configuration: SparkBuild,
|
|
38
40
|
extra_opts: Optional[List[str]] = None,
|
|
39
41
|
):
|
|
40
|
-
if not build_configuration.spark_version:
|
|
41
|
-
raise ValueError(
|
|
42
|
-
"`spark_version` is required for `tfy-spark-buildpack` builder"
|
|
43
|
-
)
|
|
44
42
|
mount_python_package_manager_conf_secret = (
|
|
45
43
|
has_python_package_manager_conf_secret(extra_opts) if extra_opts else False
|
|
46
44
|
)
|
|
47
|
-
|
|
48
|
-
# Copy
|
|
49
|
-
execute_notebook_src = os.path.join(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
45
|
+
|
|
46
|
+
# Copy tfy_execute_notebook.py to the build context
|
|
47
|
+
execute_notebook_src = os.path.join(
|
|
48
|
+
os.path.dirname(__file__), "tfy_execute_notebook.py"
|
|
49
|
+
)
|
|
50
|
+
execute_notebook_dst = os.path.join(
|
|
51
|
+
build_configuration.build_context_path, "tfy_execute_notebook.py"
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
# Verify the source file exists before copying
|
|
55
|
+
if not os.path.isfile(execute_notebook_src):
|
|
56
|
+
raise FileNotFoundError(f"Required file not found: {execute_notebook_src}")
|
|
57
|
+
|
|
58
|
+
# Always copy the file, overwrite if exists
|
|
59
|
+
shutil.copy2(execute_notebook_src, execute_notebook_dst)
|
|
60
|
+
|
|
58
61
|
try:
|
|
59
62
|
with TemporaryDirectory() as local_dir:
|
|
60
63
|
docker_build_configuration = _convert_to_dockerfile_build_config(
|
|
@@ -69,7 +72,7 @@ def build(
|
|
|
69
72
|
)
|
|
70
73
|
finally:
|
|
71
74
|
# Clean up the copied file if we copied it
|
|
72
|
-
if
|
|
75
|
+
if os.path.exists(execute_notebook_dst):
|
|
73
76
|
try:
|
|
74
77
|
os.remove(execute_notebook_dst)
|
|
75
78
|
except OSError:
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import shlex
|
|
2
|
-
from typing import
|
|
2
|
+
from typing import List, Optional
|
|
3
3
|
|
|
4
4
|
from mako.template import Template
|
|
5
5
|
|
|
6
6
|
from truefoundry.common.constants import ENV_VARS, PythonPackageManager
|
|
7
|
-
from truefoundry.deploy._autogen.models import
|
|
7
|
+
from truefoundry.deploy._autogen.models import SparkBuild
|
|
8
8
|
from truefoundry.deploy.builder.constants import (
|
|
9
9
|
PIP_CONF_BUILDKIT_SECRET_MOUNT,
|
|
10
10
|
PIP_CONF_SECRET_MOUNT_AS_ENV,
|
|
@@ -17,21 +17,19 @@ from truefoundry.deploy.v2.lib.patched_models import (
|
|
|
17
17
|
|
|
18
18
|
# TODO (chiragjn): Switch to a non-root user inside the container
|
|
19
19
|
|
|
20
|
-
DEFAULT_PYTHON_IMAGE_REPO = "apache/spark"
|
|
21
|
-
|
|
22
20
|
_POST_PYTHON_INSTALL_TEMPLATE = """
|
|
23
|
-
% if apt_install_command is not None:
|
|
24
|
-
RUN ${apt_install_command}
|
|
25
|
-
% endif
|
|
26
21
|
% if requirements_path is not None:
|
|
27
22
|
COPY ${requirements_path} ${requirements_destination_path}
|
|
28
23
|
% endif
|
|
29
24
|
% if python_packages_install_command is not None:
|
|
30
25
|
RUN ${package_manager_config_secret_mount} ${python_packages_install_command}
|
|
31
26
|
% endif
|
|
32
|
-
COPY . /app
|
|
33
|
-
WORKDIR /app
|
|
34
27
|
USER spark
|
|
28
|
+
COPY . /app
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
_POST_USER_TEMPLATE = """
|
|
32
|
+
COPY tfy_execute_notebook.py /app/tfy_execute_notebook.py
|
|
35
33
|
"""
|
|
36
34
|
|
|
37
35
|
DOCKERFILE_TEMPLATE = Template(
|
|
@@ -41,25 +39,12 @@ USER root
|
|
|
41
39
|
RUN apt update && \
|
|
42
40
|
DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends git && \
|
|
43
41
|
rm -rf /var/lib/apt/lists/*
|
|
44
|
-
COPY execute_notebook.py /app/execute_notebook.py
|
|
45
42
|
"""
|
|
46
|
-
|
|
43
|
+
+ _POST_PYTHON_INSTALL_TEMPLATE
|
|
44
|
+
+ _POST_USER_TEMPLATE
|
|
47
45
|
)
|
|
48
46
|
|
|
49
|
-
ADDITIONAL_PIP_PACKAGES = [
|
|
50
|
-
|
|
51
|
-
def generate_apt_install_command(apt_packages: Optional[List[str]]) -> Optional[str]:
|
|
52
|
-
packages_list = None
|
|
53
|
-
if apt_packages:
|
|
54
|
-
packages_list = " ".join(p.strip() for p in apt_packages if p.strip())
|
|
55
|
-
if not packages_list:
|
|
56
|
-
return None
|
|
57
|
-
apt_update_command = "apt update"
|
|
58
|
-
apt_install_command = f"DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends {packages_list}"
|
|
59
|
-
clear_apt_lists_command = "rm -rf /var/lib/apt/lists/*"
|
|
60
|
-
return " && ".join(
|
|
61
|
-
[apt_update_command, apt_install_command, clear_apt_lists_command]
|
|
62
|
-
)
|
|
47
|
+
ADDITIONAL_PIP_PACKAGES = ["papermill>=2.6.0,<2.7.0", "ipykernel>=6.0.0,<7.0.0"]
|
|
63
48
|
|
|
64
49
|
|
|
65
50
|
def generate_pip_install_command(
|
|
@@ -67,12 +52,12 @@ def generate_pip_install_command(
|
|
|
67
52
|
pip_packages: Optional[List[str]],
|
|
68
53
|
mount_pip_conf_secret: bool = False,
|
|
69
54
|
) -> Optional[str]:
|
|
70
|
-
upgrade_pip_command = "
|
|
55
|
+
upgrade_pip_command = "python3 -m pip install -U pip setuptools wheel"
|
|
71
56
|
envs = []
|
|
72
57
|
if mount_pip_conf_secret:
|
|
73
58
|
envs.append(PIP_CONF_SECRET_MOUNT_AS_ENV)
|
|
74
59
|
|
|
75
|
-
command = ["
|
|
60
|
+
command = ["python3", "-m", "pip", "install", "--use-pep517", "--no-cache-dir"]
|
|
76
61
|
args = []
|
|
77
62
|
if requirements_path:
|
|
78
63
|
args.append("-r")
|
|
@@ -96,7 +81,7 @@ def generate_uv_pip_install_command(
|
|
|
96
81
|
pip_packages: Optional[List[str]],
|
|
97
82
|
mount_uv_conf_secret: bool = False,
|
|
98
83
|
) -> Optional[str]:
|
|
99
|
-
upgrade_pip_command = "
|
|
84
|
+
upgrade_pip_command = "python3 -m pip install -U pip setuptools wheel"
|
|
100
85
|
uv_mount = f"--mount=from={ENV_VARS.TFY_PYTHON_BUILD_UV_IMAGE_URI},source=/uv,target=/usr/local/bin/uv"
|
|
101
86
|
envs = [
|
|
102
87
|
"UV_LINK_MODE=copy",
|
|
@@ -128,7 +113,7 @@ def generate_uv_pip_install_command(
|
|
|
128
113
|
|
|
129
114
|
|
|
130
115
|
def generate_dockerfile_content(
|
|
131
|
-
build_configuration:
|
|
116
|
+
build_configuration: SparkBuild,
|
|
132
117
|
package_manager: str = ENV_VARS.TFY_PYTHON_BUILD_PACKAGE_MANAGER,
|
|
133
118
|
mount_python_package_manager_conf_secret: bool = False,
|
|
134
119
|
) -> str:
|
|
@@ -144,32 +129,25 @@ def generate_dockerfile_content(
|
|
|
144
129
|
raise ValueError(
|
|
145
130
|
"`spark_version` is required for `tfy-spark-buildpack` builder"
|
|
146
131
|
)
|
|
147
|
-
|
|
148
|
-
# Handle pip packages - SparkBuildSpec pip_packages is Optional[List[str]], so we need to handle None
|
|
149
|
-
pip_packages = build_configuration.pip_packages or []
|
|
150
|
-
|
|
132
|
+
|
|
151
133
|
if package_manager == PythonPackageManager.PIP.value:
|
|
152
134
|
python_packages_install_command = generate_pip_install_command(
|
|
153
135
|
requirements_path=requirements_destination_path,
|
|
154
|
-
pip_packages=
|
|
136
|
+
pip_packages=ADDITIONAL_PIP_PACKAGES,
|
|
155
137
|
mount_pip_conf_secret=mount_python_package_manager_conf_secret,
|
|
156
138
|
)
|
|
157
139
|
elif package_manager == PythonPackageManager.UV.value:
|
|
158
140
|
python_packages_install_command = generate_uv_pip_install_command(
|
|
159
141
|
requirements_path=requirements_destination_path,
|
|
160
|
-
pip_packages=
|
|
142
|
+
pip_packages=ADDITIONAL_PIP_PACKAGES,
|
|
161
143
|
mount_uv_conf_secret=mount_python_package_manager_conf_secret,
|
|
162
144
|
)
|
|
163
145
|
else:
|
|
164
146
|
raise ValueError(f"Unsupported package manager: {package_manager}")
|
|
165
147
|
|
|
166
|
-
apt_install_command = generate_apt_install_command(
|
|
167
|
-
apt_packages=build_configuration.apt_packages
|
|
168
|
-
)
|
|
169
148
|
template_args = {
|
|
170
149
|
"spark_image_repo": ENV_VARS.TFY_SPARK_BUILD_SPARK_IMAGE_REPO,
|
|
171
150
|
"spark_version": build_configuration.spark_version,
|
|
172
|
-
"apt_install_command": apt_install_command,
|
|
173
151
|
"requirements_path": requirements_path,
|
|
174
152
|
"requirements_destination_path": requirements_destination_path,
|
|
175
153
|
"python_packages_install_command": python_packages_install_command,
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# This script is used as the main application file for spark applications
|
|
2
|
+
# when the application to be run is a notebook, the actual notebook to be
|
|
3
|
+
# executed is passed as an argument to this script.
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import sys
|
|
8
|
+
|
|
9
|
+
import papermill as pm
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def execute_notebook(notebook_path, output_path="/tmp/output.ipynb", parameters=None):
|
|
13
|
+
"""
|
|
14
|
+
Execute a Jupyter notebook using papermill.
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
notebook_path: Path to the input notebook
|
|
18
|
+
output_path: Path for the output notebook
|
|
19
|
+
parameters: Dictionary of parameters to pass to the notebook
|
|
20
|
+
|
|
21
|
+
Raises:
|
|
22
|
+
Exception: If notebook execution fails
|
|
23
|
+
"""
|
|
24
|
+
if parameters is None:
|
|
25
|
+
parameters = {}
|
|
26
|
+
|
|
27
|
+
print(f"Starting execution of notebook: {notebook_path}")
|
|
28
|
+
pm.execute_notebook(
|
|
29
|
+
notebook_path,
|
|
30
|
+
output_path,
|
|
31
|
+
parameters=parameters,
|
|
32
|
+
# TODO(gw): Replace with kernel name for venv
|
|
33
|
+
kernel_name="python3",
|
|
34
|
+
)
|
|
35
|
+
print(f"Successfully executed notebook: {notebook_path}")
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
if __name__ == "__main__":
|
|
39
|
+
parser = argparse.ArgumentParser(
|
|
40
|
+
description="Execute a Jupyter notebook using papermill for Spark applications"
|
|
41
|
+
)
|
|
42
|
+
parser.add_argument("notebook_path", help="Path to the notebook file to execute")
|
|
43
|
+
|
|
44
|
+
args = parser.parse_args()
|
|
45
|
+
|
|
46
|
+
# TODO(gw): Add support for passing parameters to the notebook
|
|
47
|
+
try:
|
|
48
|
+
execute_notebook(args.notebook_path)
|
|
49
|
+
except Exception as e:
|
|
50
|
+
print(f"Error executing notebook {args.notebook_path}: {e}")
|
|
51
|
+
print(
|
|
52
|
+
"Exiting with status code 1 to signal failure to parent process/orchestrator"
|
|
53
|
+
)
|
|
54
|
+
sys.exit(1)
|
|
55
|
+
|
|
56
|
+
# TODO(gw): Publish the output notebook to blob storage from where it could be rendered
|
|
@@ -159,6 +159,26 @@ class PythonBuild(models.PythonBuild, PatchedModelBase):
|
|
|
159
159
|
return values
|
|
160
160
|
|
|
161
161
|
|
|
162
|
+
class SparkBuild(models.SparkBuild, PatchedModelBase):
|
|
163
|
+
type: Literal["tfy-spark-buildpack"] = "tfy-spark-buildpack"
|
|
164
|
+
|
|
165
|
+
@root_validator
|
|
166
|
+
def validate_values(cls, values):
|
|
167
|
+
_resolve_requirements_path(
|
|
168
|
+
build_context_path=values.get("build_context_path") or "./",
|
|
169
|
+
requirements_path=values.get("requirements_path"),
|
|
170
|
+
)
|
|
171
|
+
return values
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
class SparkImageBuild(models.SparkImageBuild, PatchedModelBase):
|
|
175
|
+
type: Literal["spark-image-build"] = "spark-image-build"
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class SparkImage(models.SparkImage, PatchedModelBase):
|
|
179
|
+
type: Literal["spark-image"] = "spark-image"
|
|
180
|
+
|
|
181
|
+
|
|
162
182
|
class RemoteSource(models.RemoteSource, PatchedModelBase):
|
|
163
183
|
type: Literal["remote"] = "remote"
|
|
164
184
|
|
truefoundry-0.9.4/truefoundry/deploy/builder/builders/tfy_spark_buildpack/execute_notebook.py
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# This script is used as the main application file for spark applications
|
|
2
|
-
# when the application to be run is a notebook, the actual notebook to be
|
|
3
|
-
# executed is passed as an argument to this script.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
import papermill as pm
|
|
7
|
-
import sys
|
|
8
|
-
|
|
9
|
-
if __name__ == "__main__":
|
|
10
|
-
|
|
11
|
-
if len(sys.argv) != 2:
|
|
12
|
-
print("Usage: python execute_notebook.py <notebook_path>")
|
|
13
|
-
sys.exit(1)
|
|
14
|
-
|
|
15
|
-
notebook_path = sys.argv[1]
|
|
16
|
-
|
|
17
|
-
pm.execute_notebook(
|
|
18
|
-
notebook_path,
|
|
19
|
-
"output.ipynb",
|
|
20
|
-
parameters=dict(),
|
|
21
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/agents/project_identifier.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{truefoundry-0.9.4 → truefoundry-0.10.1rc1}/truefoundry/autodeploy/tools/file_type_counts.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|