truefoundry 0.11.11rc1__tar.gz → 0.12.0__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 (394) hide show
  1. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/PKG-INFO +1 -1
  2. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/pyproject.toml +1 -1
  3. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/storage_provider_utils.py +35 -10
  4. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/utils.py +4 -0
  5. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/_autogen/models.py +7 -7
  6. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/dockerfile.py +4 -6
  7. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +8 -4
  8. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/dockerfile_template.py +1 -7
  9. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_task_pyspark_buildpack/dockerfile_template.py +1 -11
  10. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/utils.py +13 -0
  11. truefoundry-0.12.0/truefoundry/deploy/lib/util.py +151 -0
  12. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/deploy.py +4 -0
  13. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/patched_models.py +6 -30
  14. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/source.py +6 -35
  15. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +25 -11
  16. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/artifact.py +3 -2
  17. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/model.py +1 -0
  18. truefoundry-0.11.11rc1/truefoundry/deploy/lib/util.py +0 -66
  19. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/.gitignore +0 -0
  20. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/README.md +0 -0
  21. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/__init__.py +0 -0
  22. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/_ask/__init__.py +0 -0
  23. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/_ask/cli.py +0 -0
  24. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/_ask/client.py +0 -0
  25. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/_ask/llm_utils.py +0 -0
  26. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/_client.py +0 -0
  27. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/__init__.py +0 -0
  28. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/agents/__init__.py +0 -0
  29. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/agents/base.py +0 -0
  30. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/agents/developer.py +0 -0
  31. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
  32. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/agents/tester.py +0 -0
  33. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/cli.py +0 -0
  34. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/constants.py +0 -0
  35. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/exception.py +0 -0
  36. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/logger.py +0 -0
  37. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/__init__.py +0 -0
  38. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/ask.py +0 -0
  39. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/base.py +0 -0
  40. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/commit.py +0 -0
  41. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/docker_build.py +0 -0
  42. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/docker_run.py +0 -0
  43. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
  44. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/list_files.py +0 -0
  45. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/read_file.py +0 -0
  46. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/send_request.py +0 -0
  47. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/tools/write_file.py +0 -0
  48. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/utils/client.py +0 -0
  49. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/utils/diff.py +0 -0
  50. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
  51. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/__init__.py +0 -0
  52. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/__main__.py +0 -0
  53. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/config.py +0 -0
  54. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/console.py +0 -0
  55. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/const.py +0 -0
  56. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/display_util.py +0 -0
  57. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/cli/util.py +0 -0
  58. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/__init__.py +0 -0
  59. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/auth_service_client.py +0 -0
  60. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/constants.py +0 -0
  61. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/credential_file_manager.py +0 -0
  62. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/credential_provider.py +0 -0
  63. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/entities.py +0 -0
  64. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/exceptions.py +0 -0
  65. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/request_utils.py +0 -0
  66. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/servicefoundry_client.py +0 -0
  67. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/session.py +0 -0
  68. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/types.py +0 -0
  69. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/common/warnings.py +0 -0
  70. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/__init__.py +0 -0
  71. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/__init__.py +0 -0
  72. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/__init__.py +0 -0
  73. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +0 -0
  74. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
  75. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +0 -0
  76. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/__init__.py +0 -0
  77. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/tfy_execute_notebook.py +0 -0
  78. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/builders/tfy_task_pyspark_buildpack/__init__.py +0 -0
  79. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/constants.py +0 -0
  80. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/builder/docker_service.py +0 -0
  81. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/__init__.py +0 -0
  82. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/__init__.py +0 -0
  83. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
  84. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/build_command.py +0 -0
  85. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
  86. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
  87. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
  88. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/get_command.py +0 -0
  89. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/k8s_exec_credential_command.py +0 -0
  90. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/kubeconfig_command.py +0 -0
  91. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/login_command.py +0 -0
  92. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
  93. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
  94. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
  95. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
  96. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
  97. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
  98. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/cli/commands/utils.py +0 -0
  99. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/core/__init__.py +0 -0
  100. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/core/login.py +0 -0
  101. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/core/logout.py +0 -0
  102. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/io/__init__.py +0 -0
  103. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/io/no_output_callback.py +0 -0
  104. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/io/output_callback.py +0 -0
  105. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/io/rich_output_callback.py +0 -0
  106. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/__init__.py +0 -0
  107. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/clients/__init__.py +0 -0
  108. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/clients/servicefoundry_client.py +0 -0
  109. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/const.py +0 -0
  110. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/dao/__init__.py +0 -0
  111. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/dao/application.py +0 -0
  112. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/dao/apply.py +0 -0
  113. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/dao/delete.py +0 -0
  114. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/dao/version.py +0 -0
  115. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/dao/workspace.py +0 -0
  116. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/diff_utils.py +0 -0
  117. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/logs_utils.py +0 -0
  118. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/messages.py +0 -0
  119. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/model/__init__.py +0 -0
  120. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/model/entity.py +0 -0
  121. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/session.py +0 -0
  122. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/lib/win32.py +0 -0
  123. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/python_deploy_codegen.py +0 -0
  124. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/__init__.py +0 -0
  125. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/__init__.py +0 -0
  126. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
  127. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
  128. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/deploy/v2/lib/models.py +0 -0
  129. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/logger.py +0 -0
  130. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/__init__.py +0 -0
  131. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/__init__.py +0 -0
  132. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/__init__.py +0 -0
  133. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/__init__.py +0 -0
  134. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/auth_api.py +0 -0
  135. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/deprecated_api.py +0 -0
  136. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/experiments_api.py +0 -0
  137. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/generate_code_snippet_api.py +0 -0
  138. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/health_api.py +0 -0
  139. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/metrics_api.py +0 -0
  140. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/mlfoundry_artifacts_api.py +0 -0
  141. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/run_artifacts_api.py +0 -0
  142. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api/runs_api.py +0 -0
  143. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api_client.py +0 -0
  144. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/api_response.py +0 -0
  145. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/configuration.py +0 -0
  146. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/exceptions.py +0 -0
  147. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/__init__.py +0 -0
  148. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/agent_app.py +0 -0
  149. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/agent_manifest.py +0 -0
  150. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_manifest.py +0 -0
  151. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
  152. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/agent_with_fqn.py +0 -0
  153. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/apply_request_dto.py +0 -0
  154. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/apply_response_dto.py +0 -0
  155. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_dto.py +0 -0
  156. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_manifest.py +0 -0
  157. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_path.py +0 -0
  158. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_response_dto.py +0 -0
  159. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_type.py +0 -0
  160. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_version_dto.py +0 -0
  161. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_version_response_dto.py +0 -0
  162. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_version_serialization_format.py +0 -0
  163. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/artifact_version_status.py +0 -0
  164. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/assistant_message.py +0 -0
  165. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
  166. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
  167. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/blob_storage_reference.py +0 -0
  168. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/body_get_search_runs_get.py +0 -0
  169. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest.py +0 -0
  170. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest_messages_inner.py +0 -0
  171. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/columns_dto.py +0 -0
  172. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/command.py +0 -0
  173. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/content.py +0 -0
  174. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/content1.py +0 -0
  175. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/content2.py +0 -0
  176. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/content2_any_of_inner.py +0 -0
  177. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_artifact_request_dto.py +0 -0
  178. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_artifact_response_dto.py +0 -0
  179. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_artifact_version_request_dto.py +0 -0
  180. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_artifact_version_response_dto.py +0 -0
  181. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_dataset_request_dto.py +0 -0
  182. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_experiment_request_dto.py +0 -0
  183. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_experiment_response_dto.py +0 -0
  184. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_model_version_request_dto.py +0 -0
  185. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
  186. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
  187. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
  188. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
  189. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
  190. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_run_request_dto.py +0 -0
  191. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_run_response_dto.py +0 -0
  192. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
  193. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/data_directory_manifest.py +0 -0
  194. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/dataset_dto.py +0 -0
  195. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/dataset_response_dto.py +0 -0
  196. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
  197. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/delete_dataset_request_dto.py +0 -0
  198. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
  199. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/delete_model_version_request_dto.py +0 -0
  200. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/delete_run_request.py +0 -0
  201. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/delete_tag_request_dto.py +0 -0
  202. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/experiment_dto.py +0 -0
  203. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/experiment_id_request_dto.py +0 -0
  204. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/experiment_response_dto.py +0 -0
  205. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/experiment_tag_dto.py +0 -0
  206. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/export_deployment_files_request_dto.py +0 -0
  207. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/external_blob_storage_source.py +0 -0
  208. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/fast_ai_framework.py +0 -0
  209. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/file_info_dto.py +0 -0
  210. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
  211. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/framework.py +0 -0
  212. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_artifact_version_aliases_response_dto.py +0 -0
  213. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_experiment_response_dto.py +0 -0
  214. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_latest_run_log_response_dto.py +0 -0
  215. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_metric_history_response.py +0 -0
  216. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
  217. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
  218. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
  219. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
  220. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
  221. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
  222. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
  223. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
  224. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/get_tenant_id_response_dto.py +0 -0
  225. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/gluon_framework.py +0 -0
  226. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/h2_o_framework.py +0 -0
  227. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/http_validation_error.py +0 -0
  228. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/image_content_part.py +0 -0
  229. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/image_url.py +0 -0
  230. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/infer_method_name.py +0 -0
  231. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/keras_framework.py +0 -0
  232. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/latest_run_log_dto.py +0 -0
  233. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/library_name.py +0 -0
  234. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/light_gbm_framework.py +0 -0
  235. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_artifact_versions_request_dto.py +0 -0
  236. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_artifact_versions_response_dto.py +0 -0
  237. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_artifacts_request_dto.py +0 -0
  238. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_artifacts_response_dto.py +0 -0
  239. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_colums_response_dto.py +0 -0
  240. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_datasets_request_dto.py +0 -0
  241. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_datasets_response_dto.py +0 -0
  242. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_experiments_response_dto.py +0 -0
  243. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
  244. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
  245. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
  246. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
  247. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
  248. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_metric_history_request_dto.py +0 -0
  249. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_metric_history_response_dto.py +0 -0
  250. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_model_version_response_dto.py +0 -0
  251. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_model_versions_request_dto.py +0 -0
  252. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_models_request_dto.py +0 -0
  253. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_models_response_dto.py +0 -0
  254. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_run_artifacts_response_dto.py +0 -0
  255. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/list_run_logs_response_dto.py +0 -0
  256. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/local_artifact_source.py +0 -0
  257. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/local_model_source.py +0 -0
  258. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/log_batch_request_dto.py +0 -0
  259. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/log_metric_request_dto.py +0 -0
  260. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/log_param_request_dto.py +0 -0
  261. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/manifest.py +0 -0
  262. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/manifest1.py +0 -0
  263. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/manifest2.py +0 -0
  264. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/method.py +0 -0
  265. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/metric_collection_dto.py +0 -0
  266. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/metric_dto.py +0 -0
  267. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/mime_type.py +0 -0
  268. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_configuration.py +0 -0
  269. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_dto.py +0 -0
  270. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_manifest.py +0 -0
  271. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_response_dto.py +0 -0
  272. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_server.py +0 -0
  273. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_version_dto.py +0 -0
  274. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_version_environment.py +0 -0
  275. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/model_version_response_dto.py +0 -0
  276. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/multi_part_upload_dto.py +0 -0
  277. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/multi_part_upload_response_dto.py +0 -0
  278. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/multi_part_upload_storage_provider.py +0 -0
  279. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
  280. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/onnx_framework.py +0 -0
  281. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/openapi_spec.py +0 -0
  282. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/paddle_framework.py +0 -0
  283. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/param_dto.py +0 -0
  284. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/parameters.py +0 -0
  285. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/py_torch_framework.py +0 -0
  286. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/resolve_agent_app_response_dto.py +0 -0
  287. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/restore_run_request_dto.py +0 -0
  288. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_data_dto.py +0 -0
  289. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_dto.py +0 -0
  290. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_info_dto.py +0 -0
  291. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_log_dto.py +0 -0
  292. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_log_input_dto.py +0 -0
  293. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_response_dto.py +0 -0
  294. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/run_tag_dto.py +0 -0
  295. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/search_runs_request_dto.py +0 -0
  296. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/search_runs_response_dto.py +0 -0
  297. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/set_experiment_tag_request_dto.py +0 -0
  298. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/set_tag_request_dto.py +0 -0
  299. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/signed_url_dto.py +0 -0
  300. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/sklearn_framework.py +0 -0
  301. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/sklearn_model_schema.py +0 -0
  302. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/sklearn_serialization_format.py +0 -0
  303. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/source.py +0 -0
  304. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/source1.py +0 -0
  305. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/source2.py +0 -0
  306. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/spa_cy_framework.py +0 -0
  307. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/stats_models_framework.py +0 -0
  308. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/stop.py +0 -0
  309. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/store_run_logs_request_dto.py +0 -0
  310. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/subject.py +0 -0
  311. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/subject_type.py +0 -0
  312. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/system_message.py +0 -0
  313. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/tensor_flow_framework.py +0 -0
  314. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/text.py +0 -0
  315. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/text_content_part.py +0 -0
  316. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/transformers_framework.py +0 -0
  317. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
  318. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
  319. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/true_foundry_managed_source.py +0 -0
  320. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/update_artifact_version_request_dto.py +0 -0
  321. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/update_dataset_request_dto.py +0 -0
  322. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/update_experiment_request_dto.py +0 -0
  323. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/update_model_version_request_dto.py +0 -0
  324. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/update_run_request_dto.py +0 -0
  325. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/update_run_response_dto.py +0 -0
  326. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/url.py +0 -0
  327. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/user_message.py +0 -0
  328. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
  329. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
  330. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/validation_error.py +0 -0
  331. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/validation_error_loc_inner.py +0 -0
  332. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/xg_boost_framework.py +0 -0
  333. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/xg_boost_model_schema.py +0 -0
  334. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/models/xg_boost_serialization_format.py +0 -0
  335. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client/rest.py +0 -0
  336. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/client_README.md +0 -0
  337. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/entities/artifacts.py +0 -0
  338. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/models/__init__.py +0 -0
  339. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/models/exceptions.py +0 -0
  340. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/models/schema.py +0 -0
  341. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/models/signature.py +0 -0
  342. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/_autogen/models/utils.py +0 -0
  343. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/artifact/__init__.py +0 -0
  344. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/cli/__init__.py +0 -0
  345. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/cli/cli.py +0 -0
  346. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/cli/commands/__init__.py +0 -0
  347. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/cli/commands/download.py +0 -0
  348. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/cli/commands/model_init.py +0 -0
  349. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/cli/utils.py +0 -0
  350. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/clients/__init__.py +0 -0
  351. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/constants.py +0 -0
  352. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/entities.py +0 -0
  353. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/enums.py +0 -0
  354. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/exceptions.py +0 -0
  355. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/git_info.py +0 -0
  356. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/integrations/__init__.py +0 -0
  357. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/integrations/huggingface/__init__.py +0 -0
  358. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/integrations/huggingface/trainer_callback.py +0 -0
  359. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/internal_namespace.py +0 -0
  360. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/__init__.py +0 -0
  361. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/__init__.py +0 -0
  362. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
  363. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
  364. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
  365. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
  366. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/image/__init__.py +0 -0
  367. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/image/constants.py +0 -0
  368. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/image/image.py +0 -0
  369. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
  370. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/image/types.py +0 -0
  371. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/plot.py +0 -0
  372. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/pydantic_base.py +0 -0
  373. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/log_types/utils.py +0 -0
  374. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/logger.py +0 -0
  375. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/mlfoundry_api.py +0 -0
  376. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/mlfoundry_run.py +0 -0
  377. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/model_framework.py +0 -0
  378. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/prompt_utils.py +0 -0
  379. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/run_utils.py +0 -0
  380. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/session.py +0 -0
  381. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/ml/validation_utils.py +0 -0
  382. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/pydantic_v1.py +0 -0
  383. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/version.py +0 -0
  384. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/__init__.py +0 -0
  385. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/container_task.py +0 -0
  386. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/map_task.py +0 -0
  387. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/python_task.py +0 -0
  388. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
  389. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
  390. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
  391. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
  392. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/spark_task.py +0 -0
  393. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/task.py +0 -0
  394. {truefoundry-0.11.11rc1 → truefoundry-0.12.0}/truefoundry/workflow/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truefoundry
3
- Version: 0.11.11rc1
3
+ Version: 0.12.0
4
4
  Summary: TrueFoundry CLI
5
5
  Author-email: TrueFoundry Team <abhishek@truefoundry.com>
6
6
  Requires-Python: <3.14,>=3.8.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "truefoundry"
3
- version = "0.11.11rc1" # This is a placeholder version, it will be replaced when releasing
3
+ version = "0.12.0" # 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" }]
@@ -22,6 +22,23 @@ from truefoundry.pydantic_v1 import BaseModel
22
22
  logger = logging.getLogger("truefoundry")
23
23
 
24
24
 
25
+ def truncate_path_for_progress(
26
+ path: str, max_length: int, relpath: bool = False
27
+ ) -> str:
28
+ if relpath:
29
+ path = os.path.relpath(path)
30
+ if len(path) <= max_length:
31
+ return path
32
+ parts = path.split(os.sep)
33
+ result = parts[-1] # start with filename
34
+ i = len(parts) - 2
35
+ # keep prepending directories until adding more would exceed max_len - 3
36
+ while i >= 0 and len(result) + len(parts[i]) + 1 <= max_length - 3:
37
+ result = parts[i] + os.sep + result
38
+ i -= 1
39
+ return "..." + os.sep + result
40
+
41
+
25
42
  class MultiPartUploadStorageProvider(str, Enum):
26
43
  S3_COMPATIBLE = "S3_COMPATIBLE"
27
44
  AZURE_BLOB = "AZURE_BLOB"
@@ -182,7 +199,7 @@ def _file_part_upload(
182
199
  return response
183
200
 
184
201
 
185
- def s3_compatible_multipart_upload(
202
+ def s3_compatible_multipart_upload( # noqa: C901
186
203
  multipart_upload: MultiPartUpload,
187
204
  local_file: str,
188
205
  multipart_info: _FileMultiPartInfo,
@@ -190,13 +207,15 @@ def s3_compatible_multipart_upload(
190
207
  progress_bar: Optional[Progress] = None,
191
208
  abort_event: Optional[Event] = None,
192
209
  exception_class=HttpRequestException,
193
- ):
210
+ ) -> None:
194
211
  abort_event = abort_event or Event()
195
212
  parts = []
196
213
 
197
- if progress_bar:
214
+ if progress_bar is not None:
198
215
  multi_part_upload_progress = progress_bar.add_task(
199
- f"[green]Uploading {local_file}:", start=True
216
+ f"[green] {truncate_path_for_progress(local_file, 64, relpath=True)}",
217
+ start=True,
218
+ visible=True,
200
219
  )
201
220
 
202
221
  def upload(part_number: int, seek: int) -> None:
@@ -221,7 +240,7 @@ def s3_compatible_multipart_upload(
221
240
  multipart_info.num_parts,
222
241
  local_file,
223
242
  )
224
- if progress_bar:
243
+ if progress_bar is not None:
225
244
  progress_bar.update(
226
245
  multi_part_upload_progress,
227
246
  advance=multipart_info.part_size,
@@ -254,10 +273,12 @@ def s3_compatible_multipart_upload(
254
273
  timeout=2 * 60,
255
274
  )
256
275
  response.raise_for_status()
276
+ if progress_bar is not None:
277
+ progress_bar.refresh()
257
278
  logger.debug("Multipart upload of %s completed", local_file)
258
279
 
259
280
 
260
- def azure_multi_part_upload(
281
+ def azure_multi_part_upload( # noqa: C901
261
282
  multipart_upload: MultiPartUpload,
262
283
  local_file: str,
263
284
  multipart_info: _FileMultiPartInfo,
@@ -265,12 +286,14 @@ def azure_multi_part_upload(
265
286
  progress_bar: Optional[Progress] = None,
266
287
  abort_event: Optional[Event] = None,
267
288
  exception_class=HttpRequestException,
268
- ):
289
+ ) -> None:
269
290
  abort_event = abort_event or Event()
270
291
 
271
- if progress_bar:
292
+ if progress_bar is not None:
272
293
  multi_part_upload_progress = progress_bar.add_task(
273
- f"[green]Uploading {local_file}:", start=True
294
+ f"[green] {truncate_path_for_progress(local_file, 64, relpath=True)}",
295
+ start=True,
296
+ visible=True,
274
297
  )
275
298
 
276
299
  def upload(part_number: int, seek: int):
@@ -289,7 +312,7 @@ def azure_multi_part_upload(
289
312
  abort_event=abort_event,
290
313
  exception_class=exception_class,
291
314
  )
292
- if progress_bar:
315
+ if progress_bar is not None:
293
316
  progress_bar.update(
294
317
  multi_part_upload_progress,
295
318
  advance=multipart_info.part_size,
@@ -328,4 +351,6 @@ def azure_multi_part_upload(
328
351
  timeout=2 * 60,
329
352
  )
330
353
  response.raise_for_status()
354
+ if progress_bar is not None:
355
+ progress_bar.refresh()
331
356
  logger.debug("Multipart upload of %s completed", local_file)
@@ -210,3 +210,7 @@ def get_user_agent() -> str:
210
210
  return f"truefoundry/{__version__} Python/{platform.python_version()} OS/{platform.system()}-{platform.release()} ({platform.architecture()[0]})"
211
211
  except Exception:
212
212
  return f"truefoundry/{__version__}"
213
+
214
+
215
+ def get_expanded_and_absolute_path(path: str):
216
+ return os.path.abspath(os.path.expanduser(path))
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: application.json
3
- # timestamp: 2025-09-09T14:09:56+00:00
3
+ # timestamp: 2025-09-10T19:32:14+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -621,8 +621,8 @@ class Pip(BaseModel):
621
621
 
622
622
  class Poetry(BaseModel):
623
623
  """
624
- Use `poetry` to setup environment and sync `poetry.lock` file
625
- Your build context root must contain a `poetry.lock` file
624
+ Use `poetry` to setup env
625
+ Your build context root must contain `pyproject.toml` and `poetry.lock
626
626
  """
627
627
 
628
628
  type: Literal["poetry"] = Field(..., description="")
@@ -1060,7 +1060,7 @@ class TaskPythonBuild(BaseModel):
1060
1060
  )
1061
1061
  cuda_version: Optional[
1062
1062
  constr(
1063
- regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9)$"
1063
+ regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9|12\.8-cudnn9|12\.9-cudnn9)$"
1064
1064
  )
1065
1065
  ] = Field(
1066
1066
  None,
@@ -1094,8 +1094,8 @@ class TrueFoundryInteractiveLogin(BaseModel):
1094
1094
 
1095
1095
  class UV(BaseModel):
1096
1096
  """
1097
- Use `uv` to setup environment and sync `uv.lock` file
1098
- Your build context root must contain a `uv.lock` file
1097
+ Use `uv` to setup env.
1098
+ Your build context root must contain `pyproject.toml` and `uv.lock
1099
1099
  """
1100
1100
 
1101
1101
  type: Literal["uv"] = Field(..., description="")
@@ -1448,7 +1448,7 @@ class PythonBuild(BaseModel):
1448
1448
  )
1449
1449
  cuda_version: Optional[
1450
1450
  constr(
1451
- regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9)$"
1451
+ regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9|12\.8-cudnn9|12\.9-cudnn9)$"
1452
1452
  )
1453
1453
  ] = Field(
1454
1454
  None,
@@ -14,22 +14,20 @@ def _get_expanded_and_absolute_path(path: str):
14
14
 
15
15
  def _build_docker_image(
16
16
  tag: str,
17
+ dockerfile: str,
17
18
  path: str = ".",
18
- file: Optional[str] = None,
19
19
  build_args: Optional[Dict[str, str]] = None,
20
20
  extra_opts: Optional[List[str]] = None,
21
21
  ):
22
+ dockerfile = _get_expanded_and_absolute_path(dockerfile)
22
23
  path = _get_expanded_and_absolute_path(path)
23
24
 
24
- if file:
25
- file = _get_expanded_and_absolute_path(file)
26
-
27
25
  build_docker_image(
28
26
  path=path,
29
27
  tag=tag,
30
28
  # TODO: can we pick target platform(s) picked from cluster
31
29
  platform="linux/amd64",
32
- dockerfile=file,
30
+ dockerfile=dockerfile,
33
31
  build_args=build_args,
34
32
  extra_opts=extra_opts,
35
33
  )
@@ -50,8 +48,8 @@ def build(
50
48
 
51
49
  _build_docker_image(
52
50
  tag=tag,
51
+ dockerfile=build_configuration.dockerfile_path,
53
52
  path=build_configuration.build_context_path,
54
- file=build_configuration.dockerfile_path,
55
53
  build_args=build_configuration.build_args,
56
54
  extra_opts=extra_opts,
57
55
  )
@@ -6,6 +6,7 @@ from jinja2 import Template
6
6
  from truefoundry.common.constants import ENV_VARS, PythonPackageManager
7
7
  from truefoundry.deploy._autogen.models import UV, Pip, Poetry
8
8
  from truefoundry.deploy.builder.utils import (
9
+ check_whether_poetry_toml_exists,
9
10
  generate_apt_install_command,
10
11
  generate_command_to_install_from_uv_lock,
11
12
  generate_pip_install_command,
@@ -18,7 +19,6 @@ from truefoundry.deploy.v2.lib.patched_models import (
18
19
  CUDAVersion,
19
20
  PythonBuild,
20
21
  _resolve_requirements_path,
21
- check_whether_poetry_toml_exists,
22
22
  )
23
23
  from truefoundry.pydantic_v1 import BaseModel
24
24
 
@@ -224,6 +224,10 @@ def _build_template_context(
224
224
  package_manager: str,
225
225
  available_secrets: Set[str],
226
226
  ) -> TemplateContext:
227
+ if not build_configuration.python_version:
228
+ raise ValueError(
229
+ "`python_version` is required for `tfy-python-buildpack` builder"
230
+ )
227
231
  # Set up package manager config secret mount
228
232
  python_dependencies_type = python_dependencies.type
229
233
  package_manager_config_secret_mount = ""
@@ -235,7 +239,7 @@ def _build_template_context(
235
239
  )
236
240
 
237
241
  # Configure dependencies based on type
238
- if python_dependencies_type == "uv":
242
+ if isinstance(python_dependencies, UV):
239
243
  uv_context = _build_uv_context(
240
244
  python_dependencies,
241
245
  available_secrets,
@@ -252,7 +256,7 @@ def _build_template_context(
252
256
  ],
253
257
  final_uv_sync_command=uv_context["final_uv_sync_command"],
254
258
  )
255
- elif python_dependencies_type == "poetry":
259
+ elif isinstance(python_dependencies, Poetry):
256
260
  poetry_toml_exists = check_whether_poetry_toml_exists(
257
261
  build_context_path=build_configuration.build_context_path,
258
262
  )
@@ -271,7 +275,7 @@ def _build_template_context(
271
275
  poetry_version_expression=poetry_context["poetry_version_expression"],
272
276
  poetry_toml_exists=poetry_toml_exists,
273
277
  )
274
- elif python_dependencies_type == "pip":
278
+ elif isinstance(python_dependencies, Pip):
275
279
  pip_context = _build_pip_context(
276
280
  build_configuration,
277
281
  python_dependencies,
@@ -10,9 +10,6 @@ from truefoundry.deploy.builder.utils import (
10
10
  generate_uv_pip_install_command,
11
11
  get_available_secrets,
12
12
  )
13
- from truefoundry.deploy.v2.lib.patched_models import (
14
- _resolve_requirements_path,
15
- )
16
13
 
17
14
  # TODO (chiragjn): Switch to a non-root user inside the container
18
15
 
@@ -79,10 +76,7 @@ def generate_dockerfile_content(
79
76
  available_secrets = get_available_secrets(docker_build_extra_args)
80
77
 
81
78
  # TODO (chiragjn): Handle recursive references to other requirements files e.g. `-r requirements-gpu.txt`
82
- requirements_path = _resolve_requirements_path(
83
- build_context_path=build_configuration.build_context_path,
84
- requirements_path=build_configuration.requirements_path,
85
- )
79
+ requirements_path = build_configuration.requirements_path
86
80
  requirements_destination_path = (
87
81
  "/tmp/requirements.txt" if requirements_path else None
88
82
  )
@@ -11,9 +11,6 @@ from truefoundry.deploy.builder.utils import (
11
11
  generate_uv_pip_install_command,
12
12
  get_available_secrets,
13
13
  )
14
- from truefoundry.deploy.v2.lib.patched_models import (
15
- _resolve_requirements_path,
16
- )
17
14
 
18
15
  # TODO[GW]: Switch to a non-root user inside the container
19
16
  _POST_PYTHON_INSTALL_TEMPLATE = """
@@ -65,17 +62,10 @@ def generate_dockerfile_content(
65
62
  available_secrets = get_available_secrets(docker_build_extra_args)
66
63
 
67
64
  # TODO (chiragjn): Handle recursive references to other requirements files e.g. `-r requirements-gpu.txt`
68
- requirements_path = _resolve_requirements_path(
69
- build_context_path="",
70
- requirements_path=build_configuration.requirements_path,
71
- )
65
+ requirements_path = build_configuration.requirements_path
72
66
  requirements_destination_path = (
73
67
  "/tmp/requirements.txt" if requirements_path else None
74
68
  )
75
- # if not build_configuration.python_version:
76
- # raise ValueError(
77
- # "`python_version` is required for `tfy-python-buildpack` builder"
78
- # )
79
69
  pip_packages = get_additional_pip_packages(build_configuration) + (
80
70
  build_configuration.pip_packages or []
81
71
  )
@@ -1,3 +1,4 @@
1
+ import os
1
2
  import shlex
2
3
  from typing import List, Optional, Set
3
4
 
@@ -307,3 +308,15 @@ def generate_poetry_install_command(
307
308
  )
308
309
 
309
310
  return poetry_install_cmd
311
+
312
+
313
+ def check_whether_poetry_toml_exists(
314
+ build_context_path: str,
315
+ ) -> bool:
316
+ required_filename = "poetry.toml"
317
+ possible_path = os.path.join(build_context_path, required_filename)
318
+
319
+ if os.path.isfile(possible_path):
320
+ return True
321
+
322
+ return False
@@ -0,0 +1,151 @@
1
+ import os
2
+ import re
3
+ from typing import Union
4
+
5
+ from truefoundry.common.utils import get_expanded_and_absolute_path
6
+ from truefoundry.deploy._autogen.models import (
7
+ UV,
8
+ Build,
9
+ DockerFileBuild,
10
+ Pip,
11
+ Poetry,
12
+ PythonBuild,
13
+ )
14
+
15
+
16
+ def get_application_fqn_from_deployment_fqn(deployment_fqn: str) -> str:
17
+ if not re.search(r":\d+$", deployment_fqn):
18
+ raise ValueError(
19
+ "Invalid `deployment_fqn` format. A deployment fqn is supposed to end with a version number"
20
+ )
21
+ application_fqn, _ = deployment_fqn.rsplit(":", 1)
22
+ return application_fqn
23
+
24
+
25
+ def get_deployment_fqn_from_application_fqn(
26
+ application_fqn: str, version: Union[str, int]
27
+ ) -> str:
28
+ return f"{application_fqn}:{version}"
29
+
30
+
31
+ def find_list_paths(data, parent_key="", sep="."):
32
+ list_paths = []
33
+ if isinstance(data, dict):
34
+ for key, value in data.items():
35
+ new_key = f"{parent_key}{sep}{key}" if parent_key else key
36
+ list_paths.extend(find_list_paths(value, new_key, sep))
37
+ elif isinstance(data, list):
38
+ list_paths.append(parent_key)
39
+ for i, value in enumerate(data):
40
+ new_key = f"{parent_key}[{i}]"
41
+ list_paths.extend(find_list_paths(value, new_key, sep))
42
+ return list_paths
43
+
44
+
45
+ def _validate_file_path(
46
+ parent_path: str, relative_file_path: str, parent_dir_type: str
47
+ ):
48
+ parent_abs = get_expanded_and_absolute_path(parent_path)
49
+ file_path_abs = get_expanded_and_absolute_path(
50
+ os.path.join(parent_abs, relative_file_path)
51
+ )
52
+ # Ensure the file path is actually inside the build context
53
+ outside_context = False
54
+ try:
55
+ # Use os.path.commonpath to check if file_path is inside build_context_abs
56
+ common_path = os.path.commonpath([parent_abs, file_path_abs])
57
+ outside_context = common_path != parent_abs
58
+ except ValueError:
59
+ # os.path.commonpath raises ValueError if paths are on different drives (Windows)
60
+ outside_context = True
61
+
62
+ if outside_context:
63
+ raise ValueError(
64
+ f"Referenced file `{relative_file_path}` is outside the {parent_dir_type} `{parent_abs}`. "
65
+ f"It must exist in {parent_dir_type} `{parent_abs}`."
66
+ )
67
+
68
+ if not os.path.exists(file_path_abs):
69
+ raise ValueError(
70
+ f"Referenced file `{relative_file_path}` not found. It must exist in {parent_dir_type} `{parent_abs}`."
71
+ )
72
+
73
+
74
+ def validate_dockerfile_build_paths(
75
+ dockerfile_build: DockerFileBuild, project_root_path: str
76
+ ):
77
+ _validate_file_path(
78
+ parent_path=project_root_path,
79
+ relative_file_path=dockerfile_build.dockerfile_path,
80
+ parent_dir_type="project root",
81
+ )
82
+
83
+
84
+ def validate_python_build_paths(python_build: PythonBuild, build_context_path: str):
85
+ if not python_build.python_dependencies:
86
+ # Old style flat requirements file
87
+ if python_build.requirements_path:
88
+ _validate_file_path(
89
+ parent_path=build_context_path,
90
+ relative_file_path=python_build.requirements_path,
91
+ parent_dir_type="build context",
92
+ )
93
+ return
94
+
95
+ if (
96
+ isinstance(python_build.python_dependencies, Pip)
97
+ and python_build.python_dependencies.requirements_path
98
+ ):
99
+ _validate_file_path(
100
+ parent_path=build_context_path,
101
+ relative_file_path=python_build.python_dependencies.requirements_path,
102
+ parent_dir_type="build context",
103
+ )
104
+ elif isinstance(python_build.python_dependencies, UV):
105
+ _validate_file_path(
106
+ parent_path=build_context_path,
107
+ relative_file_path="pyproject.toml",
108
+ parent_dir_type="build context",
109
+ )
110
+ _validate_file_path(
111
+ parent_path=build_context_path,
112
+ relative_file_path="uv.lock",
113
+ parent_dir_type="build context",
114
+ )
115
+ elif isinstance(python_build.python_dependencies, Poetry):
116
+ _validate_file_path(
117
+ parent_path=build_context_path,
118
+ relative_file_path="pyproject.toml",
119
+ parent_dir_type="build context",
120
+ )
121
+ _validate_file_path(
122
+ parent_path=build_context_path,
123
+ relative_file_path="poetry.lock",
124
+ parent_dir_type="build context",
125
+ )
126
+
127
+
128
+ def validate_local_source_paths(component_name: str, build: Build):
129
+ source_dir = get_expanded_and_absolute_path(build.build_source.project_root_path)
130
+ if not os.path.exists(source_dir):
131
+ raise ValueError(
132
+ f"Project root path {source_dir!r} of component {component_name!r} does not exist"
133
+ )
134
+
135
+ build_context_path = get_expanded_and_absolute_path(
136
+ os.path.join(source_dir, build.build_spec.build_context_path)
137
+ )
138
+ if not os.path.exists(build_context_path):
139
+ raise ValueError(
140
+ f"Build context path {build_context_path!r} "
141
+ f"of component {component_name!r} does not exist"
142
+ )
143
+
144
+ if isinstance(build.build_spec, DockerFileBuild):
145
+ validate_dockerfile_build_paths(
146
+ dockerfile_build=build.build_spec, project_root_path=source_dir
147
+ )
148
+ elif isinstance(build.build_spec, PythonBuild):
149
+ validate_python_build_paths(
150
+ python_build=build.build_spec, build_context_path=build_context_path
151
+ )
@@ -15,6 +15,7 @@ from truefoundry.deploy.lib.dao.workspace import get_workspace_by_fqn
15
15
  from truefoundry.deploy.lib.model.entity import Deployment, DeploymentTransitionStatus
16
16
  from truefoundry.deploy.lib.util import (
17
17
  get_application_fqn_from_deployment_fqn,
18
+ validate_local_source_paths,
18
19
  )
19
20
  from truefoundry.deploy.v2.lib.models import BuildResponse
20
21
  from truefoundry.deploy.v2.lib.source import (
@@ -47,6 +48,9 @@ def _handle_if_local_source(component: Component, workspace_fqn: str) -> Compone
47
48
  and isinstance(component.image.build_source, autogen_models.LocalSource)
48
49
  ):
49
50
  new_component = component.copy(deep=True)
51
+ validate_local_source_paths(
52
+ component_name=new_component.name, build=new_component.image
53
+ )
50
54
 
51
55
  if new_component.image.build_source.local_build:
52
56
  if not env_has_docker():
@@ -47,8 +47,9 @@ or set it to None if you don't want to use any requirements file.
47
47
  """
48
48
 
49
49
  SPECS_UPGRADE_WARNING_MESSAGE_TEMPLATE = """\
50
- The `requirements_path` and `pip_packages` fields are deprecated and will be removed in a future release.
51
- Please use the `python_dependencies` field instead. Please use the following format:
50
+ The `requirements_path` and `pip_packages` fields are deprecated.
51
+ It is recommended to use the `python_dependencies` field instead which supports pip, uv and poetry.
52
+ Please use the following format:
52
53
 
53
54
  ```python
54
55
  build=Build(
@@ -106,18 +107,6 @@ def _resolve_requirements_path(
106
107
  return None
107
108
 
108
109
 
109
- def check_whether_poetry_toml_exists(
110
- build_context_path: str,
111
- ) -> bool:
112
- required_filename = "poetry.toml"
113
- possible_path = os.path.join(build_context_path, required_filename)
114
-
115
- if os.path.isfile(possible_path):
116
- return True
117
-
118
- return False
119
-
120
-
121
110
  class CUDAVersion(str, enum.Enum):
122
111
  CUDA_11_0_CUDNN8 = "11.0-cudnn8"
123
112
  CUDA_11_1_CUDNN8 = "11.1-cudnn8"
@@ -210,7 +199,9 @@ class PythonBuild(models.PythonBuild, PatchedModelBase):
210
199
  requirements_path=values.get("requirements_path"),
211
200
  )
212
201
 
213
- if not values.get("python_dependencies"):
202
+ if (
203
+ values.get("requirements_path") or values.get("pip_packages")
204
+ ) and not values.get("python_dependencies"):
214
205
  warnings.warn(
215
206
  SPECS_UPGRADE_WARNING_MESSAGE_TEMPLATE.format(
216
207
  requirements_txt_path=values.get("requirements_path"),
@@ -219,27 +210,12 @@ class PythonBuild(models.PythonBuild, PatchedModelBase):
219
210
  category=TrueFoundryDeprecationWarning,
220
211
  stacklevel=2,
221
212
  )
222
- values["python_dependencies"] = Pip(
223
- type="pip",
224
- requirements_path=values.get("requirements_path"),
225
- pip_packages=values.get("pip_packages"),
226
- )
227
- values.pop("pip_packages", None)
228
- values.pop("requirements_path", None)
229
213
  return values
230
214
 
231
215
 
232
216
  class SparkBuild(models.SparkBuild, PatchedModelBase):
233
217
  type: Literal["tfy-spark-buildpack"] = "tfy-spark-buildpack"
234
218
 
235
- @root_validator
236
- def validate_values(cls, values):
237
- _resolve_requirements_path(
238
- build_context_path=values.get("build_context_path") or "./",
239
- requirements_path=values.get("requirements_path"),
240
- )
241
- return values
242
-
243
219
 
244
220
  class SparkImageBuild(models.SparkImageBuild, PatchedModelBase):
245
221
  type: Literal["spark-image-build"] = "spark-image-build"
@@ -9,6 +9,7 @@ import gitignorefile
9
9
  from tqdm import tqdm
10
10
 
11
11
  from truefoundry.common.types import UploadCodePackageCallable
12
+ from truefoundry.common.utils import get_expanded_and_absolute_path
12
13
  from truefoundry.common.warnings import TrueFoundryDeprecationWarning
13
14
  from truefoundry.deploy import builder
14
15
  from truefoundry.deploy._autogen import models
@@ -21,7 +22,6 @@ from truefoundry.deploy.lib.clients.servicefoundry_client import (
21
22
  ServiceFoundryServiceClient,
22
23
  )
23
24
  from truefoundry.deploy.lib.dao import workspace as workspace_lib
24
- from truefoundry.deploy.lib.util import validate_paths
25
25
  from truefoundry.deploy.v2.lib.patched_models import Image, RemoteSource
26
26
  from truefoundry.logger import logger
27
27
 
@@ -142,15 +142,8 @@ def local_source_to_remote_source(
142
142
  ) -> RemoteSource:
143
143
  with tempfile.TemporaryDirectory() as local_dir:
144
144
  package_local_path = os.path.join(local_dir, "build.tar.gz")
145
- source_dir = os.path.abspath(local_source.project_root_path)
146
-
147
- if not os.path.exists(source_dir):
148
- raise ValueError(
149
- f"project root path {source_dir!r} of component {component_name!r} does not exist"
150
- )
151
-
145
+ source_dir = get_expanded_and_absolute_path(local_source.project_root_path)
152
146
  logger.info("Archiving contents of dir: %r", source_dir)
153
-
154
147
  is_path_ignored = _get_callback_handler_to_ignore_file_path(source_dir)
155
148
  _make_tarfile(
156
149
  output_filename=package_local_path,
@@ -183,36 +176,14 @@ def local_source_to_image(
183
176
  component_name: str,
184
177
  ) -> Image:
185
178
  build = build.copy(deep=True)
186
- source_dir = os.path.abspath(
187
- os.path.expanduser(build.build_source.project_root_path)
188
- )
189
- if not os.path.exists(source_dir):
190
- raise ValueError(
191
- f"project root path {source_dir!r} of component {component_name!r} does not exist"
192
- )
193
-
194
- build.build_spec.build_context_path = os.path.join(
195
- source_dir, build.build_spec.build_context_path
196
- )
197
- if not os.path.exists(build.build_spec.build_context_path):
198
- raise ValueError(
199
- f"Build context path {build.build_spec.build_context_path!r} "
200
- f"of component {component_name!r} does not exist"
201
- )
202
-
179
+ source_dir = get_expanded_and_absolute_path(build.build_source.project_root_path)
203
180
  if isinstance(build.build_spec, models.DockerFileBuild):
204
181
  build.build_spec.dockerfile_path = os.path.join(
205
182
  source_dir, build.build_spec.dockerfile_path
206
183
  )
207
- if not os.path.exists(build.build_spec.dockerfile_path):
208
- raise ValueError(
209
- f"Dockerfile path {build.build_spec.dockerfile_path!r} "
210
- f"of component {component_name!r} does not exist"
211
- )
212
-
213
- if isinstance(build.build_spec, models.PythonBuild):
214
- validate_paths(build.build_spec, source_dir)
215
-
184
+ build.build_spec.build_context_path = os.path.join(
185
+ source_dir, build.build_spec.build_context_path
186
+ )
216
187
  client = ServiceFoundryServiceClient()
217
188
 
218
189
  workspace = workspace_lib.get_workspace_by_fqn(workspace_fqn=workspace_fqn)