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.

Files changed (378) hide show
  1. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/PKG-INFO +2 -2
  2. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/pyproject.toml +2 -2
  3. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/__init__.py +2 -0
  4. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/utils.py +4 -1
  5. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/__init__.py +6 -0
  6. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/_autogen/models.py +148 -83
  7. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/clients/servicefoundry_client.py +13 -4
  8. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/deploy.py +19 -7
  9. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/deploy_workflow.py +28 -5
  10. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/patched_models.py +20 -0
  11. truefoundry-0.6.4/truefoundry/ml/prompt_utils.py +65 -0
  12. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/workflow.py +10 -3
  13. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/.gitignore +0 -0
  14. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/README.md +0 -0
  15. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/_client.py +0 -0
  16. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/__init__.py +0 -0
  17. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/__init__.py +0 -0
  18. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/base.py +0 -0
  19. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/developer.py +0 -0
  20. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
  21. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/agents/tester.py +0 -0
  22. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/cli.py +0 -0
  23. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/constants.py +0 -0
  24. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/exception.py +0 -0
  25. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/logger.py +0 -0
  26. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/__init__.py +0 -0
  27. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/ask.py +0 -0
  28. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/base.py +0 -0
  29. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/commit.py +0 -0
  30. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/docker_build.py +0 -0
  31. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/docker_run.py +0 -0
  32. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
  33. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/list_files.py +0 -0
  34. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/read_file.py +0 -0
  35. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/send_request.py +0 -0
  36. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/tools/write_file.py +0 -0
  37. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/utils/client.py +0 -0
  38. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/utils/diff.py +0 -0
  39. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
  40. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/__init__.py +0 -0
  41. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/__main__.py +0 -0
  42. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/config.py +0 -0
  43. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/console.py +0 -0
  44. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/const.py +0 -0
  45. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/display_util.py +0 -0
  46. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/cli/util.py +0 -0
  47. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/__init__.py +0 -0
  48. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/auth_service_client.py +0 -0
  49. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/constants.py +0 -0
  50. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/credential_file_manager.py +0 -0
  51. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/credential_provider.py +0 -0
  52. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/entities.py +0 -0
  53. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/exceptions.py +0 -0
  54. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/request_utils.py +0 -0
  55. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/servicefoundry_client.py +0 -0
  56. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/session.py +0 -0
  57. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/storage_provider_utils.py +0 -0
  58. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/types.py +0 -0
  59. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/common/warnings.py +0 -0
  60. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/__init__.py +0 -0
  61. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/__init__.py +0 -0
  62. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
  63. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +0 -0
  64. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
  65. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +0 -0
  66. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +0 -0
  67. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/constants.py +0 -0
  68. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/docker_service.py +0 -0
  69. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/builder/utils.py +0 -0
  70. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/__init__.py +0 -0
  71. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/__init__.py +0 -0
  72. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
  73. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/build_command.py +0 -0
  74. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/create_command.py +0 -0
  75. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
  76. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
  77. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
  78. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/get_command.py +0 -0
  79. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/list_command.py +0 -0
  80. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/login_command.py +0 -0
  81. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
  82. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
  83. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
  84. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
  85. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/redeploy_command.py +0 -0
  86. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
  87. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
  88. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/core/__init__.py +0 -0
  89. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/core/login.py +0 -0
  90. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/core/logout.py +0 -0
  91. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/io/__init__.py +0 -0
  92. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/io/output_callback.py +0 -0
  93. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/io/rich_output_callback.py +0 -0
  94. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/__init__.py +0 -0
  95. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/clients/__init__.py +0 -0
  96. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/const.py +0 -0
  97. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/__init__.py +0 -0
  98. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/application.py +0 -0
  99. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/apply.py +0 -0
  100. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/delete.py +0 -0
  101. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/version.py +0 -0
  102. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/dao/workspace.py +0 -0
  103. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/logs_utils.py +0 -0
  104. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/messages.py +0 -0
  105. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/model/__init__.py +0 -0
  106. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/model/entity.py +0 -0
  107. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/session.py +0 -0
  108. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/util.py +0 -0
  109. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/lib/win32.py +0 -0
  110. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/python_deploy_codegen.py +0 -0
  111. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/__init__.py +0 -0
  112. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/__init__.py +0 -0
  113. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
  114. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/models.py +0 -0
  115. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/deploy/v2/lib/source.py +0 -0
  116. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/logger.py +0 -0
  117. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/__init__.py +0 -0
  118. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/__init__.py +0 -0
  119. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/__init__.py +0 -0
  120. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/__init__.py +0 -0
  121. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/auth_api.py +0 -0
  122. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/deprecated_api.py +0 -0
  123. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/experiments_api.py +0 -0
  124. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/generate_code_snippet_api.py +0 -0
  125. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/health_api.py +0 -0
  126. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/metrics_api.py +0 -0
  127. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/mlfoundry_artifacts_api.py +0 -0
  128. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/run_artifacts_api.py +0 -0
  129. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api/runs_api.py +0 -0
  130. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api_client.py +0 -0
  131. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/api_response.py +0 -0
  132. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/configuration.py +0 -0
  133. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/exceptions.py +0 -0
  134. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/__init__.py +0 -0
  135. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_app.py +0 -0
  136. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_manifest.py +0 -0
  137. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_manifest.py +0 -0
  138. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
  139. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/agent_with_fqn.py +0 -0
  140. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/apply_request_dto.py +0 -0
  141. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/apply_response_dto.py +0 -0
  142. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_dto.py +0 -0
  143. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_manifest.py +0 -0
  144. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_path.py +0 -0
  145. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_response_dto.py +0 -0
  146. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_type.py +0 -0
  147. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_dto.py +0 -0
  148. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_response_dto.py +0 -0
  149. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_serialization_format.py +0 -0
  150. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/artifact_version_status.py +0 -0
  151. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/assistant_message.py +0 -0
  152. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
  153. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
  154. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/blob_storage_reference.py +0 -0
  155. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/body_get_search_runs_get.py +0 -0
  156. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest.py +0 -0
  157. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest_messages_inner.py +0 -0
  158. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/columns_dto.py +0 -0
  159. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/command.py +0 -0
  160. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content.py +0 -0
  161. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content1.py +0 -0
  162. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content2.py +0 -0
  163. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/content2_any_of_inner.py +0 -0
  164. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_request_dto.py +0 -0
  165. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_response_dto.py +0 -0
  166. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_version_request_dto.py +0 -0
  167. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_artifact_version_response_dto.py +0 -0
  168. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_dataset_request_dto.py +0 -0
  169. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_experiment_request_dto.py +0 -0
  170. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_experiment_response_dto.py +0 -0
  171. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_model_version_request_dto.py +0 -0
  172. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
  173. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
  174. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
  175. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
  176. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
  177. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_run_request_dto.py +0 -0
  178. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_run_response_dto.py +0 -0
  179. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
  180. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/data_directory_manifest.py +0 -0
  181. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/dataset_dto.py +0 -0
  182. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/dataset_response_dto.py +0 -0
  183. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
  184. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_dataset_request_dto.py +0 -0
  185. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
  186. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_model_version_request_dto.py +0 -0
  187. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_run_request.py +0 -0
  188. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/delete_tag_request_dto.py +0 -0
  189. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_dto.py +0 -0
  190. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_id_request_dto.py +0 -0
  191. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_response_dto.py +0 -0
  192. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/experiment_tag_dto.py +0 -0
  193. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/export_deployment_files_request_dto.py +0 -0
  194. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/external_blob_storage_source.py +0 -0
  195. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/fast_ai_framework.py +0 -0
  196. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/file_info_dto.py +0 -0
  197. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
  198. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/framework.py +0 -0
  199. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_artifact_version_aliases_response_dto.py +0 -0
  200. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_experiment_response_dto.py +0 -0
  201. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_latest_run_log_response_dto.py +0 -0
  202. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_metric_history_response.py +0 -0
  203. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
  204. {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
  205. {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
  206. {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
  207. {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
  208. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
  209. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
  210. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
  211. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/get_tenant_id_response_dto.py +0 -0
  212. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/gluon_framework.py +0 -0
  213. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/h2_o_framework.py +0 -0
  214. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/http_validation_error.py +0 -0
  215. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/image_content_part.py +0 -0
  216. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/image_url.py +0 -0
  217. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/infer_method_name.py +0 -0
  218. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/keras_framework.py +0 -0
  219. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/latest_run_log_dto.py +0 -0
  220. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/library_name.py +0 -0
  221. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/light_gbm_framework.py +0 -0
  222. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifact_versions_request_dto.py +0 -0
  223. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifact_versions_response_dto.py +0 -0
  224. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifacts_request_dto.py +0 -0
  225. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_artifacts_response_dto.py +0 -0
  226. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_colums_response_dto.py +0 -0
  227. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_datasets_request_dto.py +0 -0
  228. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_datasets_response_dto.py +0 -0
  229. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_experiments_response_dto.py +0 -0
  230. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
  231. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
  232. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
  233. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
  234. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
  235. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_metric_history_request_dto.py +0 -0
  236. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_metric_history_response_dto.py +0 -0
  237. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_model_version_response_dto.py +0 -0
  238. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_model_versions_request_dto.py +0 -0
  239. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_models_request_dto.py +0 -0
  240. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_models_response_dto.py +0 -0
  241. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_run_artifacts_response_dto.py +0 -0
  242. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/list_run_logs_response_dto.py +0 -0
  243. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/local_artifact_source.py +0 -0
  244. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/local_model_source.py +0 -0
  245. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/log_batch_request_dto.py +0 -0
  246. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/log_metric_request_dto.py +0 -0
  247. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/log_param_request_dto.py +0 -0
  248. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/manifest.py +0 -0
  249. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/manifest1.py +0 -0
  250. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/manifest2.py +0 -0
  251. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/method.py +0 -0
  252. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/metric_collection_dto.py +0 -0
  253. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/metric_dto.py +0 -0
  254. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/mime_type.py +0 -0
  255. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_configuration.py +0 -0
  256. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_dto.py +0 -0
  257. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_manifest.py +0 -0
  258. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_response_dto.py +0 -0
  259. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_server.py +0 -0
  260. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_version_dto.py +0 -0
  261. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_version_environment.py +0 -0
  262. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/model_version_response_dto.py +0 -0
  263. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/multi_part_upload_dto.py +0 -0
  264. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/multi_part_upload_response_dto.py +0 -0
  265. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/multi_part_upload_storage_provider.py +0 -0
  266. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
  267. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/onnx_framework.py +0 -0
  268. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/openapi_spec.py +0 -0
  269. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/paddle_framework.py +0 -0
  270. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/param_dto.py +0 -0
  271. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/parameters.py +0 -0
  272. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/py_torch_framework.py +0 -0
  273. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/resolve_agent_app_response_dto.py +0 -0
  274. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/restore_run_request_dto.py +0 -0
  275. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_data_dto.py +0 -0
  276. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_dto.py +0 -0
  277. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_info_dto.py +0 -0
  278. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_log_dto.py +0 -0
  279. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_log_input_dto.py +0 -0
  280. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_response_dto.py +0 -0
  281. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/run_tag_dto.py +0 -0
  282. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/search_runs_request_dto.py +0 -0
  283. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/search_runs_response_dto.py +0 -0
  284. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/set_experiment_tag_request_dto.py +0 -0
  285. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/set_tag_request_dto.py +0 -0
  286. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/signed_url_dto.py +0 -0
  287. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/sklearn_framework.py +0 -0
  288. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/sklearn_model_schema.py +0 -0
  289. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/sklearn_serialization_format.py +0 -0
  290. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/source.py +0 -0
  291. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/source1.py +0 -0
  292. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/source2.py +0 -0
  293. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/spa_cy_framework.py +0 -0
  294. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/stats_models_framework.py +0 -0
  295. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/stop.py +0 -0
  296. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/store_run_logs_request_dto.py +0 -0
  297. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/subject.py +0 -0
  298. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/subject_type.py +0 -0
  299. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/system_message.py +0 -0
  300. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/tensor_flow_framework.py +0 -0
  301. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/text.py +0 -0
  302. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/text_content_part.py +0 -0
  303. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/transformers_framework.py +0 -0
  304. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
  305. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
  306. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/true_foundry_managed_source.py +0 -0
  307. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_artifact_version_request_dto.py +0 -0
  308. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_dataset_request_dto.py +0 -0
  309. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_experiment_request_dto.py +0 -0
  310. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_model_version_request_dto.py +0 -0
  311. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_run_request_dto.py +0 -0
  312. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/update_run_response_dto.py +0 -0
  313. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/url.py +0 -0
  314. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/user_message.py +0 -0
  315. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
  316. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
  317. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validation_error.py +0 -0
  318. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/validation_error_loc_inner.py +0 -0
  319. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/xg_boost_framework.py +0 -0
  320. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/xg_boost_model_schema.py +0 -0
  321. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/models/xg_boost_serialization_format.py +0 -0
  322. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client/rest.py +0 -0
  323. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/client_README.md +0 -0
  324. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/entities/artifacts.py +0 -0
  325. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/__init__.py +0 -0
  326. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/exceptions.py +0 -0
  327. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/schema.py +0 -0
  328. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/signature.py +0 -0
  329. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/_autogen/models/utils.py +0 -0
  330. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/artifact/__init__.py +0 -0
  331. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +0 -0
  332. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/__init__.py +0 -0
  333. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/cli.py +0 -0
  334. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/commands/__init__.py +0 -0
  335. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/commands/download.py +0 -0
  336. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/commands/model_init.py +0 -0
  337. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/cli/utils.py +0 -0
  338. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/clients/__init__.py +0 -0
  339. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
  340. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/constants.py +0 -0
  341. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/entities.py +0 -0
  342. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/enums.py +0 -0
  343. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/exceptions.py +0 -0
  344. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/git_info.py +0 -0
  345. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/internal_namespace.py +0 -0
  346. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/__init__.py +0 -0
  347. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
  348. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
  349. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
  350. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
  351. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/model.py +0 -0
  352. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
  353. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/__init__.py +0 -0
  354. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/constants.py +0 -0
  355. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/image.py +0 -0
  356. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
  357. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/image/types.py +0 -0
  358. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/plot.py +0 -0
  359. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/pydantic_base.py +0 -0
  360. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/log_types/utils.py +0 -0
  361. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/logger.py +0 -0
  362. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/mlfoundry_api.py +0 -0
  363. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/mlfoundry_run.py +0 -0
  364. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/model_framework.py +0 -0
  365. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/run_utils.py +0 -0
  366. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/session.py +0 -0
  367. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/ml/validation_utils.py +0 -0
  368. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/pydantic_v1.py +0 -0
  369. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/version.py +0 -0
  370. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/__init__.py +0 -0
  371. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/container_task.py +0 -0
  372. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/map_task.py +0 -0
  373. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/python_task.py +0 -0
  374. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
  375. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
  376. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
  377. {truefoundry-0.6.3rc2 → truefoundry-0.6.4}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
  378. {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.3rc2
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.8
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.3rc2" # This is a placeholder version, it will be replaced when releasing
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.8",
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], poll_after_secs: int = 5, *args, **kwargs
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-03-20T05:09:43+00:00
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
- regex=r"^(http(s?)://)(github\.com|(.+@)*bitbucket\.org|gitlab\.com|(.*)@dev.azure.com).*$"
276
- ) = Field(..., description="The repository URL.")
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
- conf: Optional[Dict[str, Any]] = Field(
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):
@@ -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 VERSION_PREFIX
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, application_id: str, deployment_id: str
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(url, headers=self._get_headers())
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
- "You can press Ctrl + C to exit the tailing of build logs "
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
- build_responses = client.get_deployment_build_response(
162
- application_id=deployment.applicationId,
163
- deployment_id=deployment.id,
164
- )
165
- socket = _tail_build_logs(build_responses[0])
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
- execution_config_store,
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
- execution_config_store.get(launch_plan.spec.workflow_id.name)
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
- execution_config_store.get(workflow_name)
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
- execution_config_store.reset()
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
+ }