truefoundry 0.6.3rc2__tar.gz → 0.6.4__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.6.3rc2 → truefoundry-0.6.4}/PKG-INFO +2 -2
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/pyproject.toml +2 -2
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/__init__.py +2 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/utils.py +4 -1
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/__init__.py +6 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/_autogen/models.py +148 -83
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/clients/servicefoundry_client.py +13 -4
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/deploy.py +19 -7
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/deploy_workflow.py +28 -5
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/patched_models.py +20 -0
- truefoundry-0.6.4/truefoundry/ml/prompt_utils.py +65 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/workflow.py +10 -3
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/.gitignore +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/README.md +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/_client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/base.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/developer.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/tester.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/cli.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/constants.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/exception.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/logger.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/ask.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/base.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/commit.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/docker_build.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/docker_run.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/list_files.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/read_file.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/send_request.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/write_file.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/utils/client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/utils/diff.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/__main__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/config.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/console.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/const.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/display_util.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/util.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/auth_service_client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/constants.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/credential_file_manager.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/credential_provider.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/entities.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/exceptions.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/request_utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/servicefoundry_client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/session.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/storage_provider_utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/types.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/warnings.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/constants.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/docker_service.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/build_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/create_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/get_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/list_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/login_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/redeploy_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/core/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/core/login.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/core/logout.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/io/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/io/output_callback.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/io/rich_output_callback.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/clients/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/const.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/application.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/apply.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/delete.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/version.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/workspace.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/logs_utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/messages.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/model/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/model/entity.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/session.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/util.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/win32.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/python_deploy_codegen.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/models.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/source.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/logger.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/auth_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/deprecated_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/experiments_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/generate_code_snippet_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/health_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/metrics_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/mlfoundry_artifacts_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/run_artifacts_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/runs_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api_client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api_response.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/configuration.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/exceptions.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_app.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_with_fqn.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/apply_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/apply_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_path.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_type.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_serialization_format.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_status.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/assistant_message.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/blob_storage_reference.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/body_get_search_runs_get.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest_messages_inner.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/columns_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/command.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content1.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content2.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content2_any_of_inner.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_version_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_dataset_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_experiment_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_experiment_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_model_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_run_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_run_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/data_directory_manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/dataset_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/dataset_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_dataset_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_model_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_run_request.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_tag_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_id_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_tag_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/export_deployment_files_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/external_blob_storage_source.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/fast_ai_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/file_info_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_artifact_version_aliases_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_experiment_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_latest_run_log_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_metric_history_response.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_tenant_id_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/gluon_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/h2_o_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/http_validation_error.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/image_content_part.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/image_url.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/infer_method_name.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/keras_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/latest_run_log_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/library_name.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/light_gbm_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifact_versions_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifact_versions_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifacts_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifacts_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_colums_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_datasets_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_datasets_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_experiments_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_metric_history_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_metric_history_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_model_version_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_model_versions_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_models_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_models_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_run_artifacts_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_run_logs_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/local_artifact_source.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/local_model_source.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/log_batch_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/log_metric_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/log_param_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/manifest1.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/manifest2.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/method.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/metric_collection_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/metric_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/mime_type.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_configuration.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_manifest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_server.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_version_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_version_environment.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_version_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/multi_part_upload_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/multi_part_upload_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/multi_part_upload_storage_provider.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/onnx_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/openapi_spec.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/paddle_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/param_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/parameters.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/py_torch_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/resolve_agent_app_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/restore_run_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_data_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_info_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_log_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_log_input_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_tag_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/search_runs_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/search_runs_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/set_experiment_tag_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/set_tag_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/signed_url_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/sklearn_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/sklearn_model_schema.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/sklearn_serialization_format.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/source.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/source1.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/source2.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/spa_cy_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/stats_models_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/stop.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/store_run_logs_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/subject.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/subject_type.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/system_message.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/tensor_flow_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/text.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/text_content_part.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/transformers_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/true_foundry_managed_source.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_artifact_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_dataset_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_experiment_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_model_version_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_run_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_run_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/url.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/user_message.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validation_error.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validation_error_loc_inner.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/xg_boost_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/xg_boost_model_schema.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/xg_boost_serialization_format.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/rest.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client_README.md +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/entities/artifacts.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/exceptions.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/schema.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/signature.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/artifact/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/cli.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/commands/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/commands/download.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/commands/model_init.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/clients/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/constants.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/entities.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/enums.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/exceptions.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/git_info.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/internal_namespace.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/model.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/constants.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/image.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/types.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/plot.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/pydantic_base.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/logger.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/mlfoundry_api.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/mlfoundry_run.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/model_framework.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/run_utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/session.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/validation_utils.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/pydantic_v1.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/version.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/container_task.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/map_task.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/python_task.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
- {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/task.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: truefoundry
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.4
|
|
4
4
|
Summary: TrueFoundry CLI
|
|
5
5
|
Author-email: TrueFoundry Team <abhishek@truefoundry.com>
|
|
6
6
|
Requires-Python: <3.14,>=3.8.1
|
|
@@ -30,7 +30,7 @@ Requires-Dist: requirements-parser<0.12.0,>=0.11.0
|
|
|
30
30
|
Requires-Dist: rich-click<2.0.0,>=1.2.1
|
|
31
31
|
Requires-Dist: rich<14.0.0,>=13.7.1
|
|
32
32
|
Requires-Dist: tqdm<5.0.0,>=4.0.0
|
|
33
|
-
Requires-Dist: truefoundry-sdk==0.0.
|
|
33
|
+
Requires-Dist: truefoundry-sdk==0.0.10
|
|
34
34
|
Requires-Dist: typing-extensions>=4.0
|
|
35
35
|
Requires-Dist: urllib3<3,>=1.26.18
|
|
36
36
|
Requires-Dist: yq<4.0.0,>=3.1.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "truefoundry"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.4" # 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" }]
|
|
@@ -31,7 +31,7 @@ dependencies = [
|
|
|
31
31
|
"rich>=13.7.1,<14.0.0",
|
|
32
32
|
"rich-click>=1.2.1,<2.0.0",
|
|
33
33
|
"tqdm>=4.0.0,<5.0.0",
|
|
34
|
-
"truefoundry-sdk==0.0.
|
|
34
|
+
"truefoundry-sdk==0.0.10",
|
|
35
35
|
"typing-extensions>=4.0",
|
|
36
36
|
"urllib3>=1.26.18,<3",
|
|
37
37
|
"yq>=3.1.0,<4.0.0",
|
|
@@ -14,6 +14,7 @@ from truefoundry.common.warnings import (
|
|
|
14
14
|
surface_truefoundry_deprecation_warnings,
|
|
15
15
|
)
|
|
16
16
|
from truefoundry.deploy.core import login, logout
|
|
17
|
+
from truefoundry.ml.prompt_utils import render_prompt
|
|
17
18
|
|
|
18
19
|
surface_truefoundry_deprecation_warnings()
|
|
19
20
|
__all__ = [
|
|
@@ -25,6 +26,7 @@ __all__ = [
|
|
|
25
26
|
"ModelConfiguration",
|
|
26
27
|
"Parameters",
|
|
27
28
|
"PromptVersion",
|
|
29
|
+
"render_prompt",
|
|
28
30
|
"suppress_truefoundry_deprecation_warnings",
|
|
29
31
|
"SystemMessage",
|
|
30
32
|
"UserMessage",
|
|
@@ -93,7 +93,10 @@ def timed_lru_cache(
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
def poll_for_function(
|
|
96
|
-
func: Callable[..., T],
|
|
96
|
+
func: Callable[..., T],
|
|
97
|
+
poll_after_secs: int = 5,
|
|
98
|
+
*args,
|
|
99
|
+
**kwargs,
|
|
97
100
|
) -> Generator[T, None, None]:
|
|
98
101
|
while True:
|
|
99
102
|
yield func(*args, **kwargs)
|
|
@@ -14,6 +14,7 @@ from truefoundry.deploy._autogen.models import (
|
|
|
14
14
|
SparkExecutorDynamicScaling,
|
|
15
15
|
SparkExecutorFixedInstances,
|
|
16
16
|
WorkbenchImage,
|
|
17
|
+
WorkflowAlert,
|
|
17
18
|
)
|
|
18
19
|
from truefoundry.deploy.lib.dao.application import (
|
|
19
20
|
delete_application,
|
|
@@ -72,6 +73,7 @@ from truefoundry.deploy.v2.lib.patched_models import (
|
|
|
72
73
|
CUDAVersion,
|
|
73
74
|
DockerFileBuild,
|
|
74
75
|
DynamicVolumeConfig,
|
|
76
|
+
Email,
|
|
75
77
|
Endpoint,
|
|
76
78
|
GcpTPU,
|
|
77
79
|
GitHelmRepo,
|
|
@@ -109,6 +111,10 @@ from truefoundry.deploy.v2.lib.patched_models import (
|
|
|
109
111
|
Schedule,
|
|
110
112
|
SecretMount,
|
|
111
113
|
ServiceAutoscaling,
|
|
114
|
+
SlackWebhook,
|
|
115
|
+
SparkJobJavaEntrypoint,
|
|
116
|
+
SparkJobPythonEntrypoint,
|
|
117
|
+
SparkJobScalaEntrypoint,
|
|
112
118
|
SQSInputConfig,
|
|
113
119
|
SQSOutputConfig,
|
|
114
120
|
SQSQueueMetricConfig,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: application.json
|
|
3
|
-
# timestamp: 2025-
|
|
3
|
+
# timestamp: 2025-04-07T11:22:45+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -212,6 +212,17 @@ class DynamicVolumeConfig(BaseModel):
|
|
|
212
212
|
size: conint(ge=1, le=64000) = Field(..., description="Size of volume in Gi")
|
|
213
213
|
|
|
214
214
|
|
|
215
|
+
class Email(BaseModel):
|
|
216
|
+
type: Literal["email"] = Field(..., description="")
|
|
217
|
+
notification_channel: constr(min_length=1) = Field(
|
|
218
|
+
..., description="Specify the notification channel to send alerts to"
|
|
219
|
+
)
|
|
220
|
+
to_emails: List[constr(min_length=1)] = Field(
|
|
221
|
+
...,
|
|
222
|
+
description="List of recipients' email addresses if the notification channel is Email.",
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
|
|
215
226
|
class Endpoint(BaseModel):
|
|
216
227
|
host: constr(
|
|
217
228
|
regex=r"^((([a-zA-Z0-9\-]{1,63}\.)([a-zA-Z0-9\-]{1,63}\.)*([A-Za-z]{1,63}))|(((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)))$"
|
|
@@ -271,9 +282,9 @@ class GitSource(BaseModel):
|
|
|
271
282
|
"""
|
|
272
283
|
|
|
273
284
|
type: Literal["git"] = Field(..., description="")
|
|
274
|
-
repo_url: constr(
|
|
275
|
-
|
|
276
|
-
)
|
|
285
|
+
repo_url: constr(regex=r"^(https?://)\S+$") = Field(
|
|
286
|
+
..., description="The repository URL."
|
|
287
|
+
)
|
|
277
288
|
ref: str = Field(..., description="The commit SHA.")
|
|
278
289
|
branch_name: Optional[str] = Field(
|
|
279
290
|
None,
|
|
@@ -349,25 +360,6 @@ class Image(BaseModel):
|
|
|
349
360
|
)
|
|
350
361
|
|
|
351
362
|
|
|
352
|
-
class JobAlert(BaseModel):
|
|
353
|
-
"""
|
|
354
|
-
Describes the configuration for the job alerts
|
|
355
|
-
"""
|
|
356
|
-
|
|
357
|
-
notification_channel: constr(min_length=1) = Field(
|
|
358
|
-
..., description="Specify the notification channel to send alerts to"
|
|
359
|
-
)
|
|
360
|
-
to_emails: Optional[List[constr(min_length=1)]] = Field(
|
|
361
|
-
None,
|
|
362
|
-
description="List of recipients' email addresses if the notification channel is Email.",
|
|
363
|
-
)
|
|
364
|
-
on_start: bool = Field(False, description="Send an alert when the job starts")
|
|
365
|
-
on_completion: bool = Field(
|
|
366
|
-
False, description="Send an alert when the job completes"
|
|
367
|
-
)
|
|
368
|
-
on_failure: bool = Field(True, description="Send an alert when the job fails")
|
|
369
|
-
|
|
370
|
-
|
|
371
363
|
class Claim(BaseModel):
|
|
372
364
|
key: str
|
|
373
365
|
values: List[str]
|
|
@@ -837,6 +829,13 @@ class ServiceAutoscaling(BaseAutoscaling):
|
|
|
837
829
|
)
|
|
838
830
|
|
|
839
831
|
|
|
832
|
+
class SlackWebhook(BaseModel):
|
|
833
|
+
type: Literal["slack-webhook"] = Field(..., description="")
|
|
834
|
+
notification_channel: constr(min_length=1) = Field(
|
|
835
|
+
..., description="Specify the notification channel to send alerts to"
|
|
836
|
+
)
|
|
837
|
+
|
|
838
|
+
|
|
840
839
|
class SparkDriverConfig(BaseModel):
|
|
841
840
|
ui_endpoint: Endpoint
|
|
842
841
|
resources: Optional[Resources] = None
|
|
@@ -857,6 +856,42 @@ class SparkExecutorFixedInstances(BaseModel):
|
|
|
857
856
|
count: conint(ge=0, le=500) = Field(1, description="Number of instances to start")
|
|
858
857
|
|
|
859
858
|
|
|
859
|
+
class SparkJobJavaEntrypoint(BaseModel):
|
|
860
|
+
type: Literal["java"] = Field(..., description="")
|
|
861
|
+
main_application_file: str = Field(
|
|
862
|
+
..., description="The main application file to be executed by the spark job."
|
|
863
|
+
)
|
|
864
|
+
main_class: str = Field(
|
|
865
|
+
..., description="The main class to be executed by the spark job."
|
|
866
|
+
)
|
|
867
|
+
arguments: Optional[str] = Field(
|
|
868
|
+
None, description="Arguments to be passed to the main application file."
|
|
869
|
+
)
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
class SparkJobPythonEntrypoint(BaseModel):
|
|
873
|
+
type: Literal["python"] = Field(..., description="")
|
|
874
|
+
main_application_file: str = Field(
|
|
875
|
+
..., description="The main application file to be executed by the spark job."
|
|
876
|
+
)
|
|
877
|
+
arguments: Optional[str] = Field(
|
|
878
|
+
None, description="Arguments to be passed to the main application file."
|
|
879
|
+
)
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
class SparkJobScalaEntrypoint(BaseModel):
|
|
883
|
+
type: Literal["scala"] = Field(..., description="")
|
|
884
|
+
main_application_file: str = Field(
|
|
885
|
+
..., description="The main application file to be executed by the spark job."
|
|
886
|
+
)
|
|
887
|
+
main_class: str = Field(
|
|
888
|
+
..., description="The main class to be executed by the spark job."
|
|
889
|
+
)
|
|
890
|
+
arguments: Optional[str] = Field(
|
|
891
|
+
None, description="Arguments to be passed to the main application file."
|
|
892
|
+
)
|
|
893
|
+
|
|
894
|
+
|
|
860
895
|
class StaticVolumeConfig(BaseModel):
|
|
861
896
|
type: Literal["static"] = Field(..., description="Volume Type for the volume.")
|
|
862
897
|
persistent_volume_name: str = Field(
|
|
@@ -1174,59 +1209,6 @@ class Helm(BaseModel):
|
|
|
1174
1209
|
)
|
|
1175
1210
|
|
|
1176
1211
|
|
|
1177
|
-
class Job(BaseModel):
|
|
1178
|
-
"""
|
|
1179
|
-
Describes the configuration for the job
|
|
1180
|
-
"""
|
|
1181
|
-
|
|
1182
|
-
type: Literal["job"] = Field(..., description="")
|
|
1183
|
-
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1184
|
-
..., description="Name of the job"
|
|
1185
|
-
)
|
|
1186
|
-
image: Union[Build, Image] = Field(
|
|
1187
|
-
...,
|
|
1188
|
-
description="Specify whether you want to deploy a Docker image or build and deploy from source code",
|
|
1189
|
-
)
|
|
1190
|
-
trigger: Union[Manual, Schedule] = Field(
|
|
1191
|
-
{"type": "manual"}, description="Specify the trigger"
|
|
1192
|
-
)
|
|
1193
|
-
trigger_on_deploy: bool = Field(
|
|
1194
|
-
False, description="Trigger the job after deploy immediately"
|
|
1195
|
-
)
|
|
1196
|
-
params: Optional[List[Param]] = Field(
|
|
1197
|
-
None, description="Configure params and pass it to create different job runs"
|
|
1198
|
-
)
|
|
1199
|
-
env: Optional[Dict[str, str]] = Field(
|
|
1200
|
-
None,
|
|
1201
|
-
description="Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)",
|
|
1202
|
-
)
|
|
1203
|
-
resources: Optional[Resources] = None
|
|
1204
|
-
alerts: Optional[List[JobAlert]] = Field(
|
|
1205
|
-
None,
|
|
1206
|
-
description="Configure alerts to be sent when the job starts/fails/completes",
|
|
1207
|
-
)
|
|
1208
|
-
retries: conint(ge=0, le=10) = Field(
|
|
1209
|
-
0,
|
|
1210
|
-
description="Specify the maximum number of attempts to retry a job before it is marked as failed.",
|
|
1211
|
-
)
|
|
1212
|
-
timeout: Optional[conint(le=432000, gt=0)] = Field(
|
|
1213
|
-
None, description="Job timeout in seconds."
|
|
1214
|
-
)
|
|
1215
|
-
concurrency_limit: Optional[PositiveInt] = Field(
|
|
1216
|
-
None, description="Number of runs that can run concurrently"
|
|
1217
|
-
)
|
|
1218
|
-
service_account: Optional[str] = Field(None, description="")
|
|
1219
|
-
mounts: Optional[List[Union[SecretMount, StringDataMount, VolumeMount]]] = Field(
|
|
1220
|
-
None,
|
|
1221
|
-
description="Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)",
|
|
1222
|
-
)
|
|
1223
|
-
labels: Optional[Dict[str, str]] = Field(None, description="")
|
|
1224
|
-
kustomize: Optional[Kustomize] = None
|
|
1225
|
-
workspace_fqn: Optional[str] = Field(
|
|
1226
|
-
None, description="Fully qualified name of the workspace"
|
|
1227
|
-
)
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
1212
|
class KafkaInputConfig(BaseModel):
|
|
1231
1213
|
"""
|
|
1232
1214
|
Describes the configuration for the input Kafka worker
|
|
@@ -1403,24 +1385,21 @@ class SparkJob(BaseModel):
|
|
|
1403
1385
|
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1404
1386
|
..., description="Name of the job"
|
|
1405
1387
|
)
|
|
1388
|
+
entrypoint: Union[
|
|
1389
|
+
SparkJobPythonEntrypoint, SparkJobScalaEntrypoint, SparkJobJavaEntrypoint
|
|
1390
|
+
] = Field(..., description="")
|
|
1406
1391
|
image: Image
|
|
1407
1392
|
spark_version: str = Field(
|
|
1408
1393
|
"3.5.2",
|
|
1409
1394
|
description="Spark version should match the spark version installed in the image.",
|
|
1410
1395
|
)
|
|
1411
|
-
main_application_file: str = Field(
|
|
1412
|
-
..., description="The main application file to be executed by the spark job."
|
|
1413
|
-
)
|
|
1414
|
-
arguments: Optional[str] = Field(
|
|
1415
|
-
None, description="Arguments to be passed to the main application file."
|
|
1416
|
-
)
|
|
1417
1396
|
driver_config: SparkDriverConfig
|
|
1418
1397
|
executor_config: SparkExecutorConfig
|
|
1419
1398
|
env: Optional[Dict[str, Any]] = Field(
|
|
1420
1399
|
None,
|
|
1421
1400
|
description="Configure environment variables to be injected in the service either as plain text. [Docs](https://docs.truefoundry.com/docs/env-variables)",
|
|
1422
1401
|
)
|
|
1423
|
-
|
|
1402
|
+
spark_conf: Optional[Dict[str, Any]] = Field(
|
|
1424
1403
|
None,
|
|
1425
1404
|
description="Extra configuration properties to be passed to the spark job. [Docs](https://spark.apache.org/docs/latest/configuration.html)",
|
|
1426
1405
|
)
|
|
@@ -1468,6 +1447,18 @@ class WorkerConfig(BaseModel):
|
|
|
1468
1447
|
)
|
|
1469
1448
|
|
|
1470
1449
|
|
|
1450
|
+
class WorkflowAlert(BaseModel):
|
|
1451
|
+
"""
|
|
1452
|
+
Describes the configuration for the workflow alerts
|
|
1453
|
+
"""
|
|
1454
|
+
|
|
1455
|
+
notification_target: Optional[Union[Email, SlackWebhook]] = None
|
|
1456
|
+
on_completion: bool = Field(
|
|
1457
|
+
False, description="Send an alert when the job completes"
|
|
1458
|
+
)
|
|
1459
|
+
on_failure: bool = Field(True, description="Send an alert when the job fails")
|
|
1460
|
+
|
|
1461
|
+
|
|
1471
1462
|
class BaseService(BaseModel):
|
|
1472
1463
|
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1473
1464
|
...,
|
|
@@ -1516,6 +1507,26 @@ class FlyteTaskTemplate(BaseModel):
|
|
|
1516
1507
|
custom: FlyteTaskCustom
|
|
1517
1508
|
|
|
1518
1509
|
|
|
1510
|
+
class JobAlert(BaseModel):
|
|
1511
|
+
"""
|
|
1512
|
+
Describes the configuration for the job alerts
|
|
1513
|
+
"""
|
|
1514
|
+
|
|
1515
|
+
notification_channel: Optional[constr(min_length=1)] = Field(
|
|
1516
|
+
None, description="Specify the notification channel to send alerts to"
|
|
1517
|
+
)
|
|
1518
|
+
to_emails: Optional[List[constr(min_length=1)]] = Field(
|
|
1519
|
+
None,
|
|
1520
|
+
description="List of recipients' email addresses if the notification channel is Email.",
|
|
1521
|
+
)
|
|
1522
|
+
notification_target: Optional[Union[Email, SlackWebhook]] = None
|
|
1523
|
+
on_start: bool = Field(False, description="Send an alert when the job starts")
|
|
1524
|
+
on_completion: bool = Field(
|
|
1525
|
+
False, description="Send an alert when the job completes"
|
|
1526
|
+
)
|
|
1527
|
+
on_failure: bool = Field(True, description="Send an alert when the job fails")
|
|
1528
|
+
|
|
1529
|
+
|
|
1519
1530
|
class Service(BaseService):
|
|
1520
1531
|
"""
|
|
1521
1532
|
Describes the configuration for the service
|
|
@@ -1557,6 +1568,59 @@ class FlyteTask(BaseModel):
|
|
|
1557
1568
|
description: Optional[Any] = None
|
|
1558
1569
|
|
|
1559
1570
|
|
|
1571
|
+
class Job(BaseModel):
|
|
1572
|
+
"""
|
|
1573
|
+
Describes the configuration for the job
|
|
1574
|
+
"""
|
|
1575
|
+
|
|
1576
|
+
type: Literal["job"] = Field(..., description="")
|
|
1577
|
+
name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
|
|
1578
|
+
..., description="Name of the job"
|
|
1579
|
+
)
|
|
1580
|
+
image: Union[Build, Image] = Field(
|
|
1581
|
+
...,
|
|
1582
|
+
description="Specify whether you want to deploy a Docker image or build and deploy from source code",
|
|
1583
|
+
)
|
|
1584
|
+
trigger: Union[Manual, Schedule] = Field(
|
|
1585
|
+
{"type": "manual"}, description="Specify the trigger"
|
|
1586
|
+
)
|
|
1587
|
+
trigger_on_deploy: bool = Field(
|
|
1588
|
+
False, description="Trigger the job after deploy immediately"
|
|
1589
|
+
)
|
|
1590
|
+
params: Optional[List[Param]] = Field(
|
|
1591
|
+
None, description="Configure params and pass it to create different job runs"
|
|
1592
|
+
)
|
|
1593
|
+
env: Optional[Dict[str, str]] = Field(
|
|
1594
|
+
None,
|
|
1595
|
+
description="Configure environment variables to be injected in the service either as plain text or secrets. [Docs](https://docs.truefoundry.com/docs/env-variables)",
|
|
1596
|
+
)
|
|
1597
|
+
resources: Optional[Resources] = None
|
|
1598
|
+
alerts: Optional[List[JobAlert]] = Field(
|
|
1599
|
+
None,
|
|
1600
|
+
description="Configure alerts to be sent when the job starts/fails/completes",
|
|
1601
|
+
)
|
|
1602
|
+
retries: conint(ge=0, le=10) = Field(
|
|
1603
|
+
0,
|
|
1604
|
+
description="Specify the maximum number of attempts to retry a job before it is marked as failed.",
|
|
1605
|
+
)
|
|
1606
|
+
timeout: Optional[conint(le=432000, gt=0)] = Field(
|
|
1607
|
+
None, description="Job timeout in seconds."
|
|
1608
|
+
)
|
|
1609
|
+
concurrency_limit: Optional[PositiveInt] = Field(
|
|
1610
|
+
None, description="Number of runs that can run concurrently"
|
|
1611
|
+
)
|
|
1612
|
+
service_account: Optional[str] = Field(None, description="")
|
|
1613
|
+
mounts: Optional[List[Union[SecretMount, StringDataMount, VolumeMount]]] = Field(
|
|
1614
|
+
None,
|
|
1615
|
+
description="Configure data to be mounted to job pod(s) as a string, secret or volume. [Docs](https://docs.truefoundry.com/docs/mounting-volumes-job)",
|
|
1616
|
+
)
|
|
1617
|
+
labels: Optional[Dict[str, str]] = Field(None, description="")
|
|
1618
|
+
kustomize: Optional[Kustomize] = None
|
|
1619
|
+
workspace_fqn: Optional[str] = Field(
|
|
1620
|
+
None, description="Fully qualified name of the workspace"
|
|
1621
|
+
)
|
|
1622
|
+
|
|
1623
|
+
|
|
1560
1624
|
class Workflow(BaseModel):
|
|
1561
1625
|
"""
|
|
1562
1626
|
Describes the configuration for the worflow
|
|
@@ -1575,6 +1639,7 @@ class Workflow(BaseModel):
|
|
|
1575
1639
|
flyte_entities: Optional[List[Union[FlyteTask, FlyteWorkflow, FlyteLaunchPlan]]] = (
|
|
1576
1640
|
Field(None, description="")
|
|
1577
1641
|
)
|
|
1642
|
+
alerts: Optional[List[WorkflowAlert]] = Field(None, description="")
|
|
1578
1643
|
|
|
1579
1644
|
|
|
1580
1645
|
class ApplicationSet(BaseModel):
|
{truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/clients/servicefoundry_client.py
RENAMED
|
@@ -14,7 +14,10 @@ from rich.status import Status
|
|
|
14
14
|
from tqdm import tqdm
|
|
15
15
|
from tqdm.utils import CallbackIOWrapper
|
|
16
16
|
|
|
17
|
-
from truefoundry.common.constants import
|
|
17
|
+
from truefoundry.common.constants import (
|
|
18
|
+
SERVICEFOUNDRY_CLIENT_MAX_RETRIES,
|
|
19
|
+
VERSION_PREFIX,
|
|
20
|
+
)
|
|
18
21
|
from truefoundry.common.request_utils import request_handling
|
|
19
22
|
from truefoundry.common.servicefoundry_client import (
|
|
20
23
|
ServiceFoundryServiceClient as BaseServiceFoundryServiceClient,
|
|
@@ -247,7 +250,7 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
247
250
|
callback: Optional[OutputCallBack] = None,
|
|
248
251
|
) -> socketio.Client:
|
|
249
252
|
callback = callback or OutputCallBack()
|
|
250
|
-
sio = socketio.Client(request_timeout=60)
|
|
253
|
+
sio = socketio.Client(request_timeout=60, reconnection_attempts=10)
|
|
251
254
|
callback.print_line("Waiting for the task to start...")
|
|
252
255
|
next_log_start_timestamp = query_dict.get("startTs")
|
|
253
256
|
|
|
@@ -286,6 +289,7 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
286
289
|
transports="websocket",
|
|
287
290
|
headers=self._get_headers(),
|
|
288
291
|
socketio_path=socketio_path,
|
|
292
|
+
retry=True,
|
|
289
293
|
)
|
|
290
294
|
return sio
|
|
291
295
|
|
|
@@ -298,10 +302,15 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
|
|
|
298
302
|
|
|
299
303
|
@check_min_cli_version
|
|
300
304
|
def get_deployment_statuses(
|
|
301
|
-
self,
|
|
305
|
+
self,
|
|
306
|
+
application_id: str,
|
|
307
|
+
deployment_id: str,
|
|
308
|
+
retry_count: int = SERVICEFOUNDRY_CLIENT_MAX_RETRIES,
|
|
302
309
|
) -> List[AppDeploymentStatusResponse]:
|
|
303
310
|
url = f"{self._api_server_url}/{VERSION_PREFIX}/app/{application_id}/deployments/{deployment_id}/statuses"
|
|
304
|
-
response = session_with_retries().get(
|
|
311
|
+
response = session_with_retries(retries=retry_count).get(
|
|
312
|
+
url, headers=self._get_headers()
|
|
313
|
+
)
|
|
305
314
|
response_data = request_handling(response)
|
|
306
315
|
return parse_obj_as(List[AppDeploymentStatusResponse], response_data)
|
|
307
316
|
|
|
@@ -107,12 +107,20 @@ def _tail_build_logs(build_response: BuildResponse) -> socketio.Client:
|
|
|
107
107
|
|
|
108
108
|
def _deploy_wait_handler( # noqa: C901
|
|
109
109
|
deployment: Deployment,
|
|
110
|
+
tail_logs: bool = True,
|
|
110
111
|
) -> Optional[DeploymentTransitionStatus]:
|
|
112
|
+
tail_logs_or_polling_status_message = (
|
|
113
|
+
"You can press Ctrl + C to exit the tailing of build logs "
|
|
114
|
+
)
|
|
115
|
+
if not tail_logs:
|
|
116
|
+
tail_logs_or_polling_status_message = (
|
|
117
|
+
"you can press Ctrl + C to exit the polling of deployment status "
|
|
118
|
+
)
|
|
111
119
|
_log_application_dashboard_url(
|
|
112
120
|
deployment=deployment,
|
|
113
121
|
log_message=(
|
|
114
122
|
"You can track the progress below or on the dashboard:- '%s'\n"
|
|
115
|
-
"
|
|
123
|
+
f"{tail_logs_or_polling_status_message}"
|
|
116
124
|
"and deployment will continue on the server"
|
|
117
125
|
),
|
|
118
126
|
)
|
|
@@ -130,6 +138,7 @@ def _deploy_wait_handler( # noqa: C901
|
|
|
130
138
|
poll_after_secs=poll_interval_seconds,
|
|
131
139
|
application_id=deployment.applicationId,
|
|
132
140
|
deployment_id=deployment.id,
|
|
141
|
+
retry_count=10,
|
|
133
142
|
):
|
|
134
143
|
if len(deployment_statuses) == 0:
|
|
135
144
|
logger.warning("Did not receive any deployment status")
|
|
@@ -157,12 +166,15 @@ def _deploy_wait_handler( # noqa: C901
|
|
|
157
166
|
latest_deployment_status.transition
|
|
158
167
|
== DeploymentTransitionStatus.BUILDING
|
|
159
168
|
):
|
|
160
|
-
if not socket:
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
169
|
+
if tail_logs and not socket:
|
|
170
|
+
try:
|
|
171
|
+
build_responses = client.get_deployment_build_response(
|
|
172
|
+
application_id=deployment.applicationId,
|
|
173
|
+
deployment_id=deployment.id,
|
|
174
|
+
)
|
|
175
|
+
socket = _tail_build_logs(build_responses[0])
|
|
176
|
+
except Exception as e:
|
|
177
|
+
logger.error("Error tailing build logs: %s", e)
|
|
166
178
|
|
|
167
179
|
time_elapsed = time.monotonic() - start_time
|
|
168
180
|
if time_elapsed > total_timeout_time:
|
|
@@ -25,15 +25,17 @@ from truefoundry.deploy.lib.clients.servicefoundry_client import (
|
|
|
25
25
|
ServiceFoundryServiceClient,
|
|
26
26
|
)
|
|
27
27
|
from truefoundry.deploy.lib.dao.workspace import get_workspace_by_fqn
|
|
28
|
-
from truefoundry.deploy.lib.model.entity import Deployment
|
|
28
|
+
from truefoundry.deploy.lib.model.entity import Deployment, DeploymentTransitionStatus
|
|
29
|
+
from truefoundry.deploy.v2.lib.deploy import _deploy_wait_handler
|
|
29
30
|
from truefoundry.deploy.v2.lib.source import (
|
|
30
31
|
local_source_to_remote_source,
|
|
31
32
|
)
|
|
32
33
|
from truefoundry.logger import logger
|
|
33
34
|
from truefoundry.pydantic_v1 import ValidationError
|
|
34
35
|
from truefoundry.workflow.workflow import (
|
|
36
|
+
TRUEFOUNDRY_ALERTS_CONFIG,
|
|
35
37
|
TRUEFOUNDRY_LAUNCH_PLAN_NAME,
|
|
36
|
-
|
|
38
|
+
truefoundry_config_store,
|
|
37
39
|
)
|
|
38
40
|
|
|
39
41
|
|
|
@@ -173,7 +175,7 @@ def _validate_workflow_entities( # noqa: C901
|
|
|
173
175
|
# validate that all inputs have default values for cron workflows
|
|
174
176
|
for launch_plan in launch_plans:
|
|
175
177
|
if (
|
|
176
|
-
|
|
178
|
+
truefoundry_config_store.get(launch_plan.spec.workflow_id.name)
|
|
177
179
|
and launch_plan.id.name == TRUEFOUNDRY_LAUNCH_PLAN_NAME
|
|
178
180
|
):
|
|
179
181
|
workflow_inputs = launch_plan.spec.default_inputs.parameters
|
|
@@ -236,7 +238,7 @@ def _generate_manifest_for_workflow(
|
|
|
236
238
|
|
|
237
239
|
# this is the case when someone has a cron schedule. and this line is for handling default launch plan in this case.
|
|
238
240
|
if (
|
|
239
|
-
|
|
241
|
+
truefoundry_config_store.get(workflow_name)
|
|
240
242
|
and workflow_name == entity.id.name
|
|
241
243
|
):
|
|
242
244
|
continue
|
|
@@ -262,6 +264,14 @@ def _generate_manifest_for_workflow(
|
|
|
262
264
|
|
|
263
265
|
workflow.flyte_entities.append(message_dict)
|
|
264
266
|
|
|
267
|
+
alerts_config = truefoundry_config_store.get(TRUEFOUNDRY_ALERTS_CONFIG)
|
|
268
|
+
if alerts_config:
|
|
269
|
+
if not workflow.alerts:
|
|
270
|
+
workflow.alerts = alerts_config
|
|
271
|
+
else:
|
|
272
|
+
logger.warning(
|
|
273
|
+
"Alerts are configured in both workflow decorator as well as in deployment config. Alerts configured in workflow decorator will be ignored."
|
|
274
|
+
)
|
|
265
275
|
# this step is just to verify if pydantic model is still valid after adding flyte_entities
|
|
266
276
|
autogen_models.Workflow.validate({**workflow.dict()})
|
|
267
277
|
|
|
@@ -288,7 +298,7 @@ def deploy_workflow(
|
|
|
288
298
|
|
|
289
299
|
# we need to rest the execution config store as it is a global variable and we don't want to keep the cron execution config for next workflow
|
|
290
300
|
# this is only needed for notebook environment
|
|
291
|
-
|
|
301
|
+
truefoundry_config_store.reset()
|
|
292
302
|
|
|
293
303
|
workspace_id = get_workspace_by_fqn(workspace_fqn).id
|
|
294
304
|
|
|
@@ -314,4 +324,17 @@ def deploy_workflow(
|
|
|
314
324
|
deployment.fqn,
|
|
315
325
|
)
|
|
316
326
|
deployment_url = f"{client.tfy_host.strip('/')}/applications/{deployment.applicationId}?tab=deployments"
|
|
327
|
+
if wait:
|
|
328
|
+
try:
|
|
329
|
+
last_status_printed = _deploy_wait_handler(
|
|
330
|
+
deployment=deployment, tail_logs=False
|
|
331
|
+
)
|
|
332
|
+
if not last_status_printed or DeploymentTransitionStatus.is_failure_state(
|
|
333
|
+
last_status_printed
|
|
334
|
+
):
|
|
335
|
+
deployment_tab_url = f"{client.tfy_host.strip('/')}/applications/{deployment.applicationId}?tab=deployments"
|
|
336
|
+
message = f"Deployment Failed. Please refer to the logs for additional details - {deployment_tab_url}"
|
|
337
|
+
sys.exit(message)
|
|
338
|
+
except KeyboardInterrupt:
|
|
339
|
+
logger.info("Ctrl-c executed. The deployment will still continue.")
|
|
317
340
|
logger.info("You can find the application on the dashboard:- '%s'", deployment_url)
|
|
@@ -563,3 +563,23 @@ class TaskPythonBuild(models.TaskPythonBuild, PatchedModelBase):
|
|
|
563
563
|
|
|
564
564
|
# Deprecated aliases, kept for backward compatibility
|
|
565
565
|
TruefoundryArtifactSource = TrueFoundryArtifactSource
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
class Email(models.Email, PatchedModelBase):
|
|
569
|
+
type: Literal["email"] = "email"
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
class SlackWebhook(models.SlackWebhook, PatchedModelBase):
|
|
573
|
+
type: Literal["slack-webhook"] = "slack-webhook"
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
class SparkJobScalaEntrypoint(models.SparkJobScalaEntrypoint, PatchedModelBase):
|
|
577
|
+
type: Literal["scala"] = "scala"
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
class SparkJobPythonEntrypoint(models.SparkJobPythonEntrypoint, PatchedModelBase):
|
|
581
|
+
type: Literal["python"] = "python"
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
class SparkJobJavaEntrypoint(models.SparkJobJavaEntrypoint, PatchedModelBase):
|
|
585
|
+
type: Literal["java"] = "java"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import re
|
|
2
|
+
from typing import Any, Dict, Optional
|
|
3
|
+
|
|
4
|
+
from truefoundry_sdk import ChatPromptManifest
|
|
5
|
+
|
|
6
|
+
_VAR_PATTERN = re.compile(r"\{\{(\w+)\}\}")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def render_text(template: str, variables: Dict[str, str]) -> str:
|
|
10
|
+
return _VAR_PATTERN.sub(
|
|
11
|
+
lambda m: (variables.get(m.group(1), f"{{{{{m.group(1)}}}}}")), template
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def render_prompt(
|
|
16
|
+
prompt_template: ChatPromptManifest, variables: Optional[Dict[str, str]] = None
|
|
17
|
+
) -> Dict[str, Any]:
|
|
18
|
+
"""
|
|
19
|
+
Renders a prompt template with the provided variables.
|
|
20
|
+
Args:
|
|
21
|
+
prompt_template (ChatPromptManifest): The prompt template to render.
|
|
22
|
+
variables (Optional[Dict[str, str]]): A dictionary of variables to replace in the template.
|
|
23
|
+
If None, the default variables from the prompt template will be used.
|
|
24
|
+
|
|
25
|
+
Returns:
|
|
26
|
+
Dict[str, Any]: A dictionary containing the rendered messages and model configuration.
|
|
27
|
+
|
|
28
|
+
"""
|
|
29
|
+
# Render the messages in the prompt template with the provided variables and default variables
|
|
30
|
+
rendered_messages = []
|
|
31
|
+
variables = {**(prompt_template.variables or {}), **(variables or {})}
|
|
32
|
+
messages = [message.copy(deep=True) for message in prompt_template.messages]
|
|
33
|
+
|
|
34
|
+
# Render the messages with the provided variables, if any
|
|
35
|
+
if variables:
|
|
36
|
+
for msg in messages:
|
|
37
|
+
if isinstance(msg.content, str):
|
|
38
|
+
msg.content = render_text(template=msg.content, variables=variables)
|
|
39
|
+
elif isinstance(msg.content, list):
|
|
40
|
+
for part in msg.content:
|
|
41
|
+
if part.type == "image_url" and isinstance(part.image_url.url, str):
|
|
42
|
+
part.image_url.url = render_text(
|
|
43
|
+
part.image_url.url, variables=variables
|
|
44
|
+
)
|
|
45
|
+
elif part.type == "text" and isinstance(part.text, str):
|
|
46
|
+
part.text = render_text(part.text, variables=variables)
|
|
47
|
+
|
|
48
|
+
rendered_messages = [message.dict() for message in messages]
|
|
49
|
+
|
|
50
|
+
# Merge parameters from model_configuration and extra_parameters
|
|
51
|
+
model_configuration = prompt_template.model_configuration
|
|
52
|
+
parameters = {
|
|
53
|
+
**(
|
|
54
|
+
model_configuration.parameters.dict()
|
|
55
|
+
if model_configuration.parameters
|
|
56
|
+
else {}
|
|
57
|
+
),
|
|
58
|
+
**(model_configuration.extra_parameters or {}),
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
"messages": rendered_messages,
|
|
63
|
+
"model": model_configuration.model,
|
|
64
|
+
"parameters": parameters,
|
|
65
|
+
}
|