truefoundry 0.5.1rc7__tar.gz → 0.5.2rc1__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 (375) hide show
  1. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/PKG-INFO +1 -1
  2. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/pyproject.toml +2 -1
  3. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/constants.py +9 -0
  4. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +4 -2
  5. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +7 -5
  6. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +87 -28
  7. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/constants.py +8 -0
  8. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/utils.py +9 -4
  9. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/apply_command.py +9 -2
  10. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/clients/servicefoundry_client.py +2 -2
  11. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/dao/apply.py +21 -6
  12. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/__init__.py +8 -4
  13. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/cli/commands/model_init.py +1 -1
  14. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/mlfoundry_api.py +2 -1
  15. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/mlfoundry_run.py +2 -1
  16. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/model_framework.py +47 -10
  17. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/README.md +0 -0
  18. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/__init__.py +0 -0
  19. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/__init__.py +0 -0
  20. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/agents/__init__.py +0 -0
  21. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/agents/base.py +0 -0
  22. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/agents/developer.py +0 -0
  23. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
  24. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/agents/tester.py +0 -0
  25. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/cli.py +0 -0
  26. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/constants.py +0 -0
  27. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/exception.py +0 -0
  28. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/logger.py +0 -0
  29. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/__init__.py +0 -0
  30. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/ask.py +0 -0
  31. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/base.py +0 -0
  32. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/commit.py +0 -0
  33. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/docker_build.py +0 -0
  34. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/docker_run.py +0 -0
  35. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
  36. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/list_files.py +0 -0
  37. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/read_file.py +0 -0
  38. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/send_request.py +0 -0
  39. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/tools/write_file.py +0 -0
  40. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/utils/client.py +0 -0
  41. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/utils/diff.py +0 -0
  42. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
  43. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/cli/__init__.py +0 -0
  44. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/cli/__main__.py +0 -0
  45. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/__init__.py +0 -0
  46. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/auth_service_client.py +0 -0
  47. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/credential_file_manager.py +0 -0
  48. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/credential_provider.py +0 -0
  49. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/entities.py +0 -0
  50. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/exceptions.py +0 -0
  51. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/request_utils.py +0 -0
  52. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/servicefoundry_client.py +0 -0
  53. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/common/utils.py +0 -0
  54. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/__init__.py +0 -0
  55. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/auto_gen/models.py +0 -0
  56. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/__init__.py +0 -0
  57. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/builders/__init__.py +0 -0
  58. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
  59. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
  60. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/builder/docker_service.py +0 -0
  61. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/__init__.py +0 -0
  62. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/cli.py +0 -0
  63. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/__init__.py +0 -0
  64. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/build_command.py +0 -0
  65. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/build_logs_command.py +0 -0
  66. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/create_command.py +0 -0
  67. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
  68. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
  69. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
  70. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/get_command.py +0 -0
  71. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/list_command.py +0 -0
  72. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/login_command.py +0 -0
  73. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
  74. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
  75. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
  76. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
  77. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/redeploy_command.py +0 -0
  78. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
  79. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
  80. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/config.py +0 -0
  81. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/console.py +0 -0
  82. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/const.py +0 -0
  83. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/display_util.py +0 -0
  84. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/cli/util.py +0 -0
  85. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/core/__init__.py +0 -0
  86. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/core/login.py +0 -0
  87. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/core/logout.py +0 -0
  88. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/io/__init__.py +0 -0
  89. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/io/output_callback.py +0 -0
  90. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/io/rich_output_callback.py +0 -0
  91. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/json_util.py +0 -0
  92. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/__init__.py +0 -0
  93. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/auth/servicefoundry_session.py +0 -0
  94. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/clients/__init__.py +0 -0
  95. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/const.py +0 -0
  96. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/dao/__init__.py +0 -0
  97. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/dao/application.py +0 -0
  98. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/dao/version.py +0 -0
  99. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/dao/workspace.py +0 -0
  100. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/exceptions.py +0 -0
  101. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/logs_utils.py +0 -0
  102. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/messages.py +0 -0
  103. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/model/__init__.py +0 -0
  104. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/model/entity.py +0 -0
  105. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/session.py +0 -0
  106. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/util.py +0 -0
  107. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/lib/win32.py +0 -0
  108. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/python_deploy_codegen.py +0 -0
  109. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/__init__.py +0 -0
  110. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/__init__.py +0 -0
  111. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/deploy.py +0 -0
  112. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
  113. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
  114. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/models.py +0 -0
  115. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/patched_models.py +0 -0
  116. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/deploy/v2/lib/source.py +0 -0
  117. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/logger.py +0 -0
  118. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/artifact/__init__.py +0 -0
  119. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +0 -0
  120. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/__init__.py +0 -0
  121. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/__init__.py +0 -0
  122. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/__init__.py +0 -0
  123. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/auth_api.py +0 -0
  124. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/deprecated_api.py +0 -0
  125. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/experiments_api.py +0 -0
  126. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/generate_code_snippet_api.py +0 -0
  127. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/health_api.py +0 -0
  128. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/metrics_api.py +0 -0
  129. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +0 -0
  130. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/run_artifacts_api.py +0 -0
  131. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api/runs_api.py +0 -0
  132. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api_client.py +0 -0
  133. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/api_response.py +0 -0
  134. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/configuration.py +0 -0
  135. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/exceptions.py +0 -0
  136. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/__init__.py +0 -0
  137. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py +0 -0
  138. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py +0 -0
  139. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/agent.py +0 -0
  140. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/agent_app.py +0 -0
  141. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/agent_open_api_tool.py +0 -0
  142. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
  143. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/agent_with_fqn.py +0 -0
  144. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_dto.py +0 -0
  145. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_response_dto.py +0 -0
  146. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_type.py +0 -0
  147. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_version_dto.py +0 -0
  148. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_version_manifest.py +0 -0
  149. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_version_response_dto.py +0 -0
  150. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py +0 -0
  151. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/artifact_version_status.py +0 -0
  152. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/assistant_message.py +0 -0
  153. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
  154. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
  155. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/blob_storage_reference.py +0 -0
  156. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/body_get_search_runs_get.py +0 -0
  157. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/chat_prompt.py +0 -0
  158. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/chat_prompt_messages_inner.py +0 -0
  159. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/columns_dto.py +0 -0
  160. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/command.py +0 -0
  161. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/content.py +0 -0
  162. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/content1.py +0 -0
  163. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/content2.py +0 -0
  164. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/content2_any_of_inner.py +0 -0
  165. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_artifact_request_dto.py +0 -0
  166. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_artifact_response_dto.py +0 -0
  167. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_artifact_version_request_dto.py +0 -0
  168. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_artifact_version_response_dto.py +0 -0
  169. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_dataset_request_dto.py +0 -0
  170. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_experiment_request_dto.py +0 -0
  171. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_experiment_response_dto.py +0 -0
  172. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_model_version_request_dto.py +0 -0
  173. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
  174. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
  175. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
  176. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
  177. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
  178. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_run_request_dto.py +0 -0
  179. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_run_response_dto.py +0 -0
  180. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
  181. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/dataset_dto.py +0 -0
  182. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/dataset_response_dto.py +0 -0
  183. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
  184. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/delete_dataset_request_dto.py +0 -0
  185. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
  186. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/delete_model_version_request_dto.py +0 -0
  187. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/delete_run_request.py +0 -0
  188. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/delete_tag_request_dto.py +0 -0
  189. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/experiment_dto.py +0 -0
  190. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/experiment_id_request_dto.py +0 -0
  191. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/experiment_response_dto.py +0 -0
  192. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/experiment_tag_dto.py +0 -0
  193. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/export_deployment_files_request_dto.py +0 -0
  194. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/external_artifact_source.py +0 -0
  195. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/fast_ai_framework.py +0 -0
  196. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/file_info_dto.py +0 -0
  197. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
  198. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/framework.py +0 -0
  199. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_experiment_response_dto.py +0 -0
  200. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_latest_run_log_response_dto.py +0 -0
  201. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_metric_history_response.py +0 -0
  202. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
  203. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
  204. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
  205. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
  206. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
  207. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
  208. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
  209. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
  210. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/get_tenant_id_response_dto.py +0 -0
  211. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/gluon_framework.py +0 -0
  212. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/h2_o_framework.py +0 -0
  213. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/http_validation_error.py +0 -0
  214. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/image_content_part.py +0 -0
  215. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/image_url.py +0 -0
  216. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/infer_method_name.py +0 -0
  217. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/internal_metadata.py +0 -0
  218. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/keras_framework.py +0 -0
  219. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/latest_run_log_dto.py +0 -0
  220. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/library_name.py +0 -0
  221. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/light_gbm_framework.py +0 -0
  222. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_artifact_versions_request_dto.py +0 -0
  223. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_artifact_versions_response_dto.py +0 -0
  224. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_artifacts_request_dto.py +0 -0
  225. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_artifacts_response_dto.py +0 -0
  226. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_colums_response_dto.py +0 -0
  227. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_datasets_request_dto.py +0 -0
  228. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_datasets_response_dto.py +0 -0
  229. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_experiments_response_dto.py +0 -0
  230. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
  231. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
  232. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
  233. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
  234. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
  235. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_metric_history_request_dto.py +0 -0
  236. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_metric_history_response_dto.py +0 -0
  237. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_model_version_response_dto.py +0 -0
  238. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_model_versions_request_dto.py +0 -0
  239. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_models_request_dto.py +0 -0
  240. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_models_response_dto.py +0 -0
  241. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_run_artifacts_response_dto.py +0 -0
  242. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/list_run_logs_response_dto.py +0 -0
  243. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/log_batch_request_dto.py +0 -0
  244. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/log_metric_request_dto.py +0 -0
  245. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/log_param_request_dto.py +0 -0
  246. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/manifest.py +0 -0
  247. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/method.py +0 -0
  248. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/metric_collection_dto.py +0 -0
  249. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/metric_dto.py +0 -0
  250. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/mime_type.py +0 -0
  251. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_configuration.py +0 -0
  252. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_dto.py +0 -0
  253. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_response_dto.py +0 -0
  254. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_server.py +0 -0
  255. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_version_dto.py +0 -0
  256. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_version_environment.py +0 -0
  257. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_version_manifest.py +0 -0
  258. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/model_version_response_dto.py +0 -0
  259. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/multi_part_upload_dto.py +0 -0
  260. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py +0 -0
  261. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/multi_part_upload_storage_provider.py +0 -0
  262. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
  263. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/onnx_framework.py +0 -0
  264. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/openapi_spec.py +0 -0
  265. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/paddle_framework.py +0 -0
  266. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/param_dto.py +0 -0
  267. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/parameters.py +0 -0
  268. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/py_torch_framework.py +0 -0
  269. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/resolve_agent_app_response_dto.py +0 -0
  270. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/restore_run_request_dto.py +0 -0
  271. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_data_dto.py +0 -0
  272. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_dto.py +0 -0
  273. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_info_dto.py +0 -0
  274. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_log_dto.py +0 -0
  275. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_log_input_dto.py +0 -0
  276. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_response_dto.py +0 -0
  277. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/run_tag_dto.py +0 -0
  278. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/search_runs_request_dto.py +0 -0
  279. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/search_runs_response_dto.py +0 -0
  280. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/set_experiment_tag_request_dto.py +0 -0
  281. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/set_tag_request_dto.py +0 -0
  282. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/signed_url_dto.py +0 -0
  283. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/sklearn_framework.py +0 -0
  284. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/sklearn_model_schema.py +0 -0
  285. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/sklearn_serialization_format.py +0 -0
  286. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/source.py +0 -0
  287. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/source1.py +0 -0
  288. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/spa_cy_framework.py +0 -0
  289. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/stats_models_framework.py +0 -0
  290. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/stop.py +0 -0
  291. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/store_run_logs_request_dto.py +0 -0
  292. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/subject.py +0 -0
  293. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/subject_type.py +0 -0
  294. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/system_message.py +0 -0
  295. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/tensor_flow_framework.py +0 -0
  296. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/text.py +0 -0
  297. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/text_content_part.py +0 -0
  298. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/transformers_framework.py +0 -0
  299. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
  300. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
  301. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/true_foundry_artifact_source.py +0 -0
  302. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/update_artifact_version_request_dto.py +0 -0
  303. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/update_dataset_request_dto.py +0 -0
  304. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/update_experiment_request_dto.py +0 -0
  305. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/update_model_version_request_dto.py +0 -0
  306. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/update_run_request_dto.py +0 -0
  307. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/update_run_response_dto.py +0 -0
  308. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/url.py +0 -0
  309. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/user_message.py +0 -0
  310. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
  311. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
  312. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/validation_error.py +0 -0
  313. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/validation_error_loc_inner.py +0 -0
  314. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/xg_boost_framework.py +0 -0
  315. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/xg_boost_model_schema.py +0 -0
  316. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/models/xg_boost_serialization_format.py +0 -0
  317. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client/rest.py +0 -0
  318. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/client_README.md +0 -0
  319. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/entities/artifacts.py +0 -0
  320. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/models/__init__.py +0 -0
  321. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/models/exceptions.py +0 -0
  322. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/models/schema.py +0 -0
  323. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/models/signature.py +0 -0
  324. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/autogen/models/utils.py +0 -0
  325. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/cli/__init__.py +0 -0
  326. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/cli/cli.py +0 -0
  327. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/cli/commands/__init__.py +0 -0
  328. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/cli/commands/download.py +0 -0
  329. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/cli/utils.py +0 -0
  330. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/clients/__init__.py +0 -0
  331. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/clients/entities.py +0 -0
  332. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
  333. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/clients/utils.py +0 -0
  334. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/constants.py +0 -0
  335. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/entities.py +0 -0
  336. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/enums.py +0 -0
  337. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/exceptions.py +0 -0
  338. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/git_info.py +0 -0
  339. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/internal_namespace.py +0 -0
  340. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/__init__.py +0 -0
  341. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
  342. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
  343. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
  344. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
  345. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/artifacts/model.py +0 -0
  346. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
  347. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/image/__init__.py +0 -0
  348. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/image/constants.py +0 -0
  349. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/image/image.py +0 -0
  350. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
  351. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/image/types.py +0 -0
  352. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/plot.py +0 -0
  353. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/pydantic_base.py +0 -0
  354. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/log_types/utils.py +0 -0
  355. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/logger.py +0 -0
  356. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/run_utils.py +0 -0
  357. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/session.py +0 -0
  358. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/ml/validation_utils.py +0 -0
  359. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/pydantic_v1.py +0 -0
  360. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/version.py +0 -0
  361. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/__init__.py +0 -0
  362. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/container_task.py +0 -0
  363. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/example/deploy.sh +0 -0
  364. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/example/hello_world_package/workflow.py +0 -0
  365. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/example/package/test_workflow.py +0 -0
  366. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/example/truefoundry.yaml +0 -0
  367. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/example/workflow.yaml +0 -0
  368. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/map_task.py +0 -0
  369. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/python_task.py +0 -0
  370. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
  371. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
  372. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
  373. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
  374. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/task.py +0 -0
  375. {truefoundry-0.5.1rc7 → truefoundry-0.5.2rc1}/truefoundry/workflow/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: truefoundry
3
- Version: 0.5.1rc7
3
+ Version: 0.5.2rc1
4
4
  Summary: Truefoundry CLI
5
5
  Author: Abhishek Choudhary
6
6
  Author-email: abhishek@truefoundry.com
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "truefoundry"
3
- version = "0.5.1rc7"
3
+ version = "0.5.2rc1"
4
4
  description = "Truefoundry CLI"
5
5
  authors = ["Abhishek Choudhary <abhishek@truefoundry.com>"]
6
6
  readme = "README.md"
@@ -75,6 +75,7 @@ shap = [
75
75
  { version = ">=0.40.0", python = "<3.12" },
76
76
  { version = ">=0.45.0", python = ">=3.12" },
77
77
  ]
78
+ xgboost = "^2.1.3"
78
79
 
79
80
 
80
81
  [tool.poetry-dynamic-versioning]
@@ -1,3 +1,4 @@
1
+ import enum
1
2
  import os
2
3
  from pathlib import Path
3
4
  from typing import Optional
@@ -15,6 +16,11 @@ TFY_INTERNAL_SIGNED_URL_SERVER_HOST_ENV_KEY = "TFY_INTERNAL_SIGNED_URL_SERVER_HO
15
16
  TFY_INTERNAL_SIGNED_URL_SERVER_TOKEN_ENV_KEY = "TFY_INTERNAL_SIGNED_URL_SERVER_TOKEN"
16
17
 
17
18
 
19
+ class PythonPackageManager(str, enum.Enum):
20
+ PIP = "pip"
21
+ UV = "uv"
22
+
23
+
18
24
  class TrueFoundrySdkEnv(BaseSettings):
19
25
  # Note: Every field in this class should have a default value
20
26
  # Never expect the user to set these values
@@ -46,6 +52,9 @@ class TrueFoundrySdkEnv(BaseSettings):
46
52
  # For local development, this enables futher configuration via _TFYServersConfig
47
53
  TFY_CLI_LOCAL_DEV_MODE: bool = False
48
54
 
55
+ TFY_PYTHON_BUILD_PACKAGE_MANAGER: PythonPackageManager = PythonPackageManager.PIP
56
+ TFY_PYTHON_BUILD_UV_IMAGE_URI: str = "ghcr.io/astral-sh/uv:latest"
57
+
49
58
 
50
59
  ENV_VARS = TrueFoundrySdkEnv()
51
60
  API_SERVER_RELATIVE_PATH = "api/svc"
@@ -8,7 +8,7 @@ from truefoundry.deploy.builder.builders.tfy_notebook_buildpack.dockerfile_templ
8
8
  NotebookImageBuild,
9
9
  generate_dockerfile_content,
10
10
  )
11
- from truefoundry.deploy.builder.utils import has_pip_conf_secret
11
+ from truefoundry.deploy.builder.utils import has_python_package_manager_conf_secret
12
12
 
13
13
  __all__ = ["generate_dockerfile_content", "build"]
14
14
 
@@ -38,7 +38,9 @@ def build(
38
38
  build_configuration: NotebookImageBuild,
39
39
  extra_opts: Optional[List[str]] = None,
40
40
  ):
41
- mount_pip_conf_secret = has_pip_conf_secret(extra_opts) if extra_opts else False
41
+ mount_pip_conf_secret = (
42
+ has_python_package_manager_conf_secret(extra_opts) if extra_opts else False
43
+ )
42
44
  with TemporaryDirectory() as local_dir:
43
45
  docker_build_configuration = _convert_to_dockerfile_build_config(
44
46
  build_configuration,
@@ -7,7 +7,7 @@ from truefoundry.deploy.builder.builders import dockerfile
7
7
  from truefoundry.deploy.builder.builders.tfy_python_buildpack.dockerfile_template import (
8
8
  generate_dockerfile_content,
9
9
  )
10
- from truefoundry.deploy.builder.utils import has_pip_conf_secret
10
+ from truefoundry.deploy.builder.utils import has_python_package_manager_conf_secret
11
11
 
12
12
  __all__ = ["generate_dockerfile_content", "build"]
13
13
 
@@ -15,11 +15,11 @@ __all__ = ["generate_dockerfile_content", "build"]
15
15
  def _convert_to_dockerfile_build_config(
16
16
  build_configuration: PythonBuild,
17
17
  dockerfile_path: str,
18
- mount_pip_conf_secret: bool = False,
18
+ mount_python_package_manager_conf_secret: bool = False,
19
19
  ) -> DockerFileBuild:
20
20
  dockerfile_content = generate_dockerfile_content(
21
21
  build_configuration=build_configuration,
22
- mount_pip_conf_secret=mount_pip_conf_secret,
22
+ mount_python_package_manager_conf_secret=mount_python_package_manager_conf_secret,
23
23
  )
24
24
  with open(dockerfile_path, "w", encoding="utf8") as fp:
25
25
  fp.write(dockerfile_content)
@@ -36,12 +36,14 @@ def build(
36
36
  build_configuration: PythonBuild,
37
37
  extra_opts: Optional[List[str]] = None,
38
38
  ):
39
- mount_pip_conf_secret = has_pip_conf_secret(extra_opts) if extra_opts else False
39
+ mount_python_package_manager_conf_secret = (
40
+ has_python_package_manager_conf_secret(extra_opts) if extra_opts else False
41
+ )
40
42
  with TemporaryDirectory() as local_dir:
41
43
  docker_build_configuration = _convert_to_dockerfile_build_config(
42
44
  build_configuration,
43
45
  dockerfile_path=os.path.join(local_dir, "Dockerfile"),
44
- mount_pip_conf_secret=mount_pip_conf_secret,
46
+ mount_python_package_manager_conf_secret=mount_python_package_manager_conf_secret,
45
47
  )
46
48
  dockerfile.build(
47
49
  tag=tag,
@@ -1,13 +1,16 @@
1
1
  import os
2
+ import shlex
2
3
  from typing import Dict, List, Optional
3
4
 
4
5
  from mako.template import Template
5
6
 
6
- from truefoundry.common.constants import ENV_VARS
7
+ from truefoundry.common.constants import ENV_VARS, PythonPackageManager
7
8
  from truefoundry.deploy.auto_gen.models import PythonBuild
8
9
  from truefoundry.deploy.builder.constants import (
9
10
  PIP_CONF_BUILDKIT_SECRET_MOUNT,
10
11
  PIP_CONF_SECRET_MOUNT_AS_ENV,
12
+ UV_CONF_BUILDKIT_SECRET_MOUNT,
13
+ UV_CONF_SECRET_MOUNT_AS_ENV,
11
14
  )
12
15
  from truefoundry.deploy.v2.lib.patched_models import CUDAVersion
13
16
 
@@ -22,8 +25,8 @@ RUN ${apt_install_command}
22
25
  % if requirements_path is not None:
23
26
  COPY ${requirements_path} ${requirements_destination_path}
24
27
  % endif
25
- % if pip_install_command is not None:
26
- RUN ${pip_config_secret_mount} ${pip_install_command}
28
+ % if python_packages_install_command is not None:
29
+ RUN ${package_manager_config_secret_mount} ${python_packages_install_command}
27
30
  % endif
28
31
  COPY . /app
29
32
  WORKDIR /app
@@ -114,44 +117,91 @@ def generate_pip_install_command(
114
117
  mount_pip_conf_secret: bool = False,
115
118
  ) -> Optional[str]:
116
119
  upgrade_pip_command = "python -m pip install -U pip setuptools wheel"
117
- final_pip_install_command = None
118
- pip_install_base_command = "python -m pip install --use-pep517 --no-cache-dir"
120
+ envs = []
121
+ if mount_pip_conf_secret:
122
+ envs.append(PIP_CONF_SECRET_MOUNT_AS_ENV)
123
+
124
+ command = ["python", "-m", "pip", "install", "--use-pep517", "--no-cache-dir"]
125
+ args = []
119
126
  if requirements_path:
120
- final_pip_install_command = f"{pip_install_base_command} -r {requirements_path}"
127
+ args.append("-r")
128
+ args.append(requirements_path)
121
129
 
122
130
  if pip_packages:
123
- final_pip_install_command = (
124
- final_pip_install_command or pip_install_base_command
125
- )
126
- final_pip_install_command += " " + " ".join(
127
- f"'{package}'" for package in pip_packages
128
- )
131
+ args.extend(pip_packages)
129
132
 
130
- if not final_pip_install_command:
133
+ if not args:
131
134
  return None
132
135
 
133
- if mount_pip_conf_secret:
134
- final_pip_install_command = (
135
- f"{PIP_CONF_SECRET_MOUNT_AS_ENV} {final_pip_install_command}"
136
- )
136
+ final_pip_install_command = shlex.join(envs + command + args)
137
+ final_docker_run_command = " && ".join(
138
+ [upgrade_pip_command, final_pip_install_command]
139
+ )
140
+ return final_docker_run_command
137
141
 
138
- return " && ".join([upgrade_pip_command, final_pip_install_command])
142
+
143
+ def generate_uv_pip_install_command(
144
+ requirements_path: Optional[str],
145
+ pip_packages: Optional[List[str]],
146
+ mount_uv_conf_secret: bool = False,
147
+ ) -> Optional[str]:
148
+ upgrade_pip_command = "python -m pip install -U pip setuptools wheel"
149
+ uv_mount = f"--mount=from={ENV_VARS.TFY_PYTHON_BUILD_UV_IMAGE_URI},source=/uv,target=/usr/local/bin/uv"
150
+ envs = [
151
+ "UV_SYSTEM_PYTHON=true",
152
+ "UV_LINK_MODE=copy",
153
+ "UV_PYTHON_DOWNLOADS=never",
154
+ "UV_INDEX_STRATEGY=unsafe-best-match",
155
+ ]
156
+ if mount_uv_conf_secret:
157
+ envs.append(UV_CONF_SECRET_MOUNT_AS_ENV)
158
+
159
+ command = ["uv", "pip", "install", "--no-cache-dir"]
160
+
161
+ args = []
162
+
163
+ if requirements_path:
164
+ args.append("-r")
165
+ args.append(requirements_path)
166
+
167
+ if pip_packages:
168
+ args.extend(pip_packages)
169
+
170
+ if not args:
171
+ return None
172
+
173
+ uv_pip_install_command = shlex.join(envs + command + args)
174
+ shell_commands = " && ".join([upgrade_pip_command, uv_pip_install_command])
175
+ final_docker_run_command = " ".join([uv_mount, shell_commands])
176
+
177
+ return final_docker_run_command
139
178
 
140
179
 
141
180
  def generate_dockerfile_content(
142
181
  build_configuration: PythonBuild,
143
- mount_pip_conf_secret: bool = False,
182
+ package_manager: str = ENV_VARS.TFY_PYTHON_BUILD_PACKAGE_MANAGER,
183
+ mount_python_package_manager_conf_secret: bool = False,
144
184
  ) -> str:
145
185
  # TODO (chiragjn): Handle recursive references to other requirements files e.g. `-r requirements-gpu.txt`
146
186
  requirements_path = resolve_requirements_txt_path(build_configuration)
147
187
  requirements_destination_path = (
148
188
  "/tmp/requirements.txt" if requirements_path else None
149
189
  )
150
- pip_install_command = generate_pip_install_command(
151
- requirements_path=requirements_destination_path,
152
- pip_packages=build_configuration.pip_packages,
153
- mount_pip_conf_secret=mount_pip_conf_secret,
154
- )
190
+ if package_manager == PythonPackageManager.PIP.value:
191
+ python_packages_install_command = generate_pip_install_command(
192
+ requirements_path=requirements_destination_path,
193
+ pip_packages=build_configuration.pip_packages,
194
+ mount_pip_conf_secret=mount_python_package_manager_conf_secret,
195
+ )
196
+ elif package_manager == PythonPackageManager.UV.value:
197
+ python_packages_install_command = generate_uv_pip_install_command(
198
+ requirements_path=requirements_destination_path,
199
+ pip_packages=build_configuration.pip_packages,
200
+ mount_uv_conf_secret=mount_python_package_manager_conf_secret,
201
+ )
202
+ else:
203
+ raise ValueError(f"Unsupported package manager: {package_manager}")
204
+
155
205
  apt_install_command = generate_apt_install_command(
156
206
  apt_packages=build_configuration.apt_packages
157
207
  )
@@ -161,13 +211,22 @@ def generate_dockerfile_content(
161
211
  "apt_install_command": apt_install_command,
162
212
  "requirements_path": requirements_path,
163
213
  "requirements_destination_path": requirements_destination_path,
164
- "pip_install_command": pip_install_command,
214
+ "python_packages_install_command": python_packages_install_command,
165
215
  }
166
216
 
167
- if mount_pip_conf_secret:
168
- template_args["pip_config_secret_mount"] = PIP_CONF_BUILDKIT_SECRET_MOUNT
217
+ if mount_python_package_manager_conf_secret:
218
+ if package_manager == PythonPackageManager.PIP.value:
219
+ template_args["package_manager_config_secret_mount"] = (
220
+ PIP_CONF_BUILDKIT_SECRET_MOUNT
221
+ )
222
+ elif package_manager == PythonPackageManager.UV.value:
223
+ template_args["package_manager_config_secret_mount"] = (
224
+ UV_CONF_BUILDKIT_SECRET_MOUNT
225
+ )
226
+ else:
227
+ raise ValueError(f"Unsupported package manager: {package_manager}")
169
228
  else:
170
- template_args["pip_config_secret_mount"] = ""
229
+ template_args["package_manager_config_secret_mount"] = ""
171
230
 
172
231
  if build_configuration.cuda_version:
173
232
  template = CUDA_DOCKERFILE_TEMPLATE
@@ -5,3 +5,11 @@ PIP_CONF_BUILDKIT_SECRET_MOUNT = (
5
5
  PIP_CONF_SECRET_MOUNT_AS_ENV = (
6
6
  f"PIP_CONFIG_FILE=/run/secrets/{BUILDKIT_SECRET_MOUNT_PIP_CONF_ID}"
7
7
  )
8
+
9
+ BUILDKIT_SECRET_MOUNT_UV_CONF_ID = "uv.toml"
10
+ UV_CONF_BUILDKIT_SECRET_MOUNT = (
11
+ f"--mount=type=secret,id={BUILDKIT_SECRET_MOUNT_UV_CONF_ID}"
12
+ )
13
+ UV_CONF_SECRET_MOUNT_AS_ENV = (
14
+ f"UV_CONFIG_FILE=/run/secrets/{BUILDKIT_SECRET_MOUNT_UV_CONF_ID}"
15
+ )
@@ -1,6 +1,9 @@
1
1
  from typing import List, Optional
2
2
 
3
- from truefoundry.deploy.builder.constants import BUILDKIT_SECRET_MOUNT_PIP_CONF_ID
3
+ from truefoundry.deploy.builder.constants import (
4
+ BUILDKIT_SECRET_MOUNT_PIP_CONF_ID,
5
+ BUILDKIT_SECRET_MOUNT_UV_CONF_ID,
6
+ )
4
7
 
5
8
 
6
9
  def _get_id_from_buildkit_secret_value(value: str) -> Optional[str]:
@@ -19,14 +22,16 @@ def _get_id_from_buildkit_secret_value(value: str) -> Optional[str]:
19
22
  return None
20
23
 
21
24
 
22
- def has_pip_conf_secret(docker_build_extra_args: List[str]) -> bool:
25
+ def has_python_package_manager_conf_secret(docker_build_extra_args: List[str]) -> bool:
23
26
  args = [arg.strip() for arg in docker_build_extra_args]
24
27
  for i, arg in enumerate(docker_build_extra_args):
25
28
  if (
26
29
  arg == "--secret"
27
30
  and i + 1 < len(args)
28
- and _get_id_from_buildkit_secret_value(args[i + 1])
29
- == BUILDKIT_SECRET_MOUNT_PIP_CONF_ID
31
+ and (
32
+ _get_id_from_buildkit_secret_value(args[i + 1])
33
+ in (BUILDKIT_SECRET_MOUNT_PIP_CONF_ID, BUILDKIT_SECRET_MOUNT_UV_CONF_ID)
34
+ )
30
35
  ):
31
36
  return True
32
37
  return False
@@ -30,13 +30,20 @@ from truefoundry.deploy.lib.model.entity import ApplyResult
30
30
  required=True,
31
31
  multiple=True,
32
32
  )
33
+ @click.option(
34
+ "--dry-run",
35
+ "--dry_run",
36
+ is_flag=True,
37
+ show_default=True,
38
+ help="Simulate the process without actually applying the manifest",
39
+ )
33
40
  @handle_exception_wrapper
34
- def apply_command(files: Tuple[str, ...]):
41
+ def apply_command(files: Tuple[str, ...], dry_run: bool = False):
35
42
  apply_results: List[ApplyResult] = []
36
43
  client = ServiceFoundryServiceClient()
37
44
  for file in files:
38
45
  with console.status(PROMPT_APPLYING_MANIFEST.format(file), spinner="dots"):
39
- for apply_result in apply_lib.apply_manifest_file(file, client):
46
+ for apply_result in apply_lib.apply_manifest_file(file, client, dry_run):
40
47
  if apply_result.success:
41
48
  console.print(f"[green]\u2714 {apply_result.message}[/]")
42
49
  else:
@@ -680,9 +680,9 @@ class ServiceFoundryServiceClient(BaseServiceFoundryServiceClient):
680
680
  return parse_obj_as(List[Deployment], response)
681
681
 
682
682
  @check_min_cli_version
683
- def apply(self, manifest: Dict[str, Any]):
683
+ def apply(self, manifest: Dict[str, Any], dry_run: bool = False):
684
684
  url = f"{self._api_server_url}/{VERSION_PREFIX}/apply"
685
- body = {"manifest": manifest}
685
+ body = {"manifest": manifest, "dryRun": dry_run}
686
686
  response = session_with_retries().put(
687
687
  url, headers=self._get_header(), json=body
688
688
  )
@@ -15,6 +15,7 @@ def _apply_manifest(
15
15
  client: Optional[ServiceFoundryServiceClient] = None,
16
16
  filename: Optional[str] = None,
17
17
  index: Optional[int] = None,
18
+ dry_run: bool = False,
18
19
  ) -> ApplyResult:
19
20
  client = client or ServiceFoundryServiceClient()
20
21
 
@@ -32,29 +33,38 @@ def _apply_manifest(
32
33
  message=f"Failed to apply manifest{file_metadata}. Error: {ex}",
33
34
  )
34
35
 
36
+ prefix = "[Dry Run] " if dry_run else ""
37
+ suffix = " (No changes were applied)" if dry_run else ""
35
38
  try:
36
- client.apply(manifest.dict())
39
+ client.apply(manifest.dict(), dry_run)
40
+
37
41
  return ApplyResult(
38
42
  success=True,
39
- message=f"Successfully configured manifest {manifest.name} of type {manifest.type}",
43
+ message=(
44
+ f"{prefix}Successfully configured manifest {manifest.name} of type {manifest.type}.{suffix}"
45
+ ),
40
46
  )
41
47
  except Exception as ex:
42
48
  return ApplyResult(
43
49
  success=False,
44
- message=f"Failed to apply manifest {manifest.name} of type {manifest.type}. Error: {ex}",
50
+ message=(
51
+ f"{prefix}Failed to apply manifest {manifest.name} of type {manifest.type}. Error: {ex}.{suffix}"
52
+ ),
45
53
  )
46
54
 
47
55
 
48
56
  def apply_manifest(
49
57
  manifest: Dict[str, Any],
50
58
  client: Optional[ServiceFoundryServiceClient] = None,
59
+ dry_run: bool = False,
51
60
  ) -> ApplyResult:
52
- return _apply_manifest(manifest=manifest, client=client)
61
+ return _apply_manifest(manifest=manifest, client=client, dry_run=dry_run)
53
62
 
54
63
 
55
64
  def apply_manifest_file(
56
65
  filepath: str,
57
66
  client: Optional[ServiceFoundryServiceClient] = None,
67
+ dry_run: bool = False,
58
68
  ) -> Iterator[ApplyResult]:
59
69
  client = client or ServiceFoundryServiceClient()
60
70
  filename = Path(filepath).name
@@ -67,14 +77,19 @@ def apply_manifest_file(
67
77
  message=f"Failed to read file {filepath} as a valid YAML file. Error: {ex}",
68
78
  )
69
79
  else:
80
+ prefix = "[Dry Run] " if dry_run else ""
70
81
  for index, manifest in enumerate(manifests_it):
71
82
  if not isinstance(manifest, dict):
72
83
  yield ApplyResult(
73
84
  success=False,
74
- message=f"Failed to apply manifest at index {index} from file {filename}. Error: A manifest must be a dict, got type {type(manifest)}",
85
+ message=f"{prefix}Failed to apply manifest at index {index} from file {filename}. Error: A manifest must be a dict, got type {type(manifest)}",
75
86
  )
76
87
  continue
77
88
 
78
89
  yield _apply_manifest(
79
- manifest=manifest, client=client, filename=filename, index=index
90
+ manifest=manifest,
91
+ client=client,
92
+ filename=filename,
93
+ index=index,
94
+ dry_run=dry_run,
80
95
  )
@@ -1,9 +1,10 @@
1
- from truefoundry.ml.autogen.client.models import (
2
- LibraryName,
1
+ from truefoundry.ml.autogen.client.models import ( # type: ignore[attr-defined]
2
+ InferMethodName,
3
3
  ModelVersionEnvironment,
4
4
  SklearnModelSchema,
5
5
  XGBoostModelSchema,
6
6
  )
7
+ from truefoundry.ml.autogen.entities.artifacts import LibraryName
7
8
  from truefoundry.ml.enums import (
8
9
  DataSlice,
9
10
  FileFormat,
@@ -40,6 +41,7 @@ from truefoundry.ml.model_framework import (
40
41
  TransformersFramework,
41
42
  XGBoostFramework,
42
43
  sklearn_infer_schema,
44
+ xgboost_infer_schema,
43
45
  )
44
46
 
45
47
  __all__ = [
@@ -51,9 +53,11 @@ __all__ = [
51
53
  "DataSlice",
52
54
  "FastAIFramework",
53
55
  "FileFormat",
56
+ "get_client",
54
57
  "GluonFramework",
55
58
  "H2OFramework",
56
59
  "Image",
60
+ "InferMethodName",
57
61
  "KerasFramework",
58
62
  "LibraryName",
59
63
  "LightGBMFramework",
@@ -68,6 +72,7 @@ __all__ = [
68
72
  "PaddleFramework",
69
73
  "Plot",
70
74
  "PyTorchFramework",
75
+ "sklearn_infer_schema",
71
76
  "SklearnFramework",
72
77
  "SklearnModelSchema",
73
78
  "SpaCyFramework",
@@ -75,10 +80,9 @@ __all__ = [
75
80
  "TensorFlowFramework",
76
81
  "TransformersFramework",
77
82
  "ViewType",
83
+ "xgboost_infer_schema",
78
84
  "XGBoostFramework",
79
85
  "XGBoostModelSchema",
80
- "get_client",
81
- "sklearn_infer_schema",
82
86
  ]
83
87
 
84
88
  init_logger()
@@ -6,7 +6,7 @@ import rich_click as click
6
6
  from truefoundry.deploy.cli.console import console
7
7
  from truefoundry.deploy.cli.const import COMMAND_CLS
8
8
  from truefoundry.deploy.cli.util import handle_exception_wrapper
9
- from truefoundry.ml.autogen.client.models import ModelServer
9
+ from truefoundry.ml.autogen.client import ModelServer # type: ignore[attr-defined]
10
10
  from truefoundry.ml.cli.utils import (
11
11
  AppName,
12
12
  NonEmptyString,
@@ -18,7 +18,7 @@ from typing import (
18
18
  import coolname
19
19
 
20
20
  from truefoundry.common.utils import ContextualDirectoryManager, relogin_error_message
21
- from truefoundry.ml import ModelVersionEnvironment, constants
21
+ from truefoundry.ml import constants
22
22
  from truefoundry.ml.autogen.client import ( # type: ignore[attr-defined]
23
23
  ArtifactDto,
24
24
  ArtifactType,
@@ -35,6 +35,7 @@ from truefoundry.ml.autogen.client import ( # type: ignore[attr-defined]
35
35
  MlfoundryArtifactsApi,
36
36
  ModelDto,
37
37
  ModelServer,
38
+ ModelVersionEnvironment,
38
39
  RunsApi,
39
40
  RunTagDto,
40
41
  SearchRunsRequestDto,
@@ -18,7 +18,7 @@ from urllib.parse import urljoin, urlsplit
18
18
 
19
19
  from truefoundry import version
20
20
  from truefoundry.common.utils import relogin_error_message
21
- from truefoundry.ml import ModelVersionEnvironment, constants
21
+ from truefoundry.ml import constants
22
22
  from truefoundry.ml.autogen.client import ( # type: ignore[attr-defined]
23
23
  ArtifactType,
24
24
  DeleteRunRequest,
@@ -29,6 +29,7 @@ from truefoundry.ml.autogen.client import ( # type: ignore[attr-defined]
29
29
  MetricDto,
30
30
  MetricsApi,
31
31
  MlfoundryArtifactsApi,
32
+ ModelVersionEnvironment,
32
33
  ParamDto,
33
34
  RunDataDto,
34
35
  RunDto,
@@ -35,6 +35,7 @@ from truefoundry.pydantic_v1 import BaseModel, Field
35
35
 
36
36
  if TYPE_CHECKING:
37
37
  from sklearn.base import BaseEstimator
38
+ from xgboost import Booster, XGBModel
38
39
 
39
40
  # Map serialization format to corresponding pip packages
40
41
  SERIALIZATION_FORMAT_TO_PACKAGES_NAME_MAP = {
@@ -467,6 +468,24 @@ def auto_update_model_framework_details(
467
468
  )
468
469
 
469
470
 
471
+ def _infer_schema(
472
+ model_input: Any,
473
+ model: Union["BaseEstimator", "Booster", "XGBModel"],
474
+ infer_method_name: str = "predict",
475
+ ) -> Dict[str, Any]:
476
+ if not hasattr(model, infer_method_name):
477
+ raise ValueError(
478
+ f"Model does not have the method '{infer_method_name}' to infer the schema."
479
+ )
480
+ model_infer_method = getattr(model, infer_method_name)
481
+ model_output = model_infer_method(model_input)
482
+
483
+ model_signature = infer_signature(
484
+ model_input=model_input, model_output=model_output
485
+ )
486
+ return model_signature.to_dict()
487
+
488
+
470
489
  def sklearn_infer_schema(
471
490
  model_input: Any,
472
491
  model: "BaseEstimator",
@@ -483,19 +502,37 @@ def sklearn_infer_schema(
483
502
  Returns:
484
503
  SklearnModelSchema: The inferred schema of the Sklearn model.
485
504
  """
486
- if not hasattr(model, infer_method_name):
487
- raise ValueError(
488
- f"Model does not have the method '{infer_method_name}' to infer the schema."
489
- )
490
- model_infer_method = getattr(model, infer_method_name)
491
- model_output = model_infer_method(model_input)
492
-
493
- model_signature = infer_signature(
494
- model_input=model_input, model_output=model_output
505
+ model_signature_json = _infer_schema(
506
+ model_input=model_input, model=model, infer_method_name=infer_method_name
495
507
  )
496
- model_signature_json = model_signature.to_dict()
497
508
  return autogen_artifacts.SklearnModelSchema(
498
509
  infer_method_name=infer_method_name,
499
510
  inputs=json.loads(model_signature_json["inputs"]),
500
511
  outputs=json.loads(model_signature_json["outputs"]),
501
512
  )
513
+
514
+
515
+ def xgboost_infer_schema(
516
+ model_input: Any,
517
+ model: Union["Booster", "XGBModel"],
518
+ infer_method_name: str = "predict",
519
+ ) -> autogen_artifacts.XGBoostModelSchema:
520
+ """
521
+ Infer the schema of an XGBoost model.
522
+
523
+ Args:
524
+ model_input (Any): The input data to be used for schema inference.
525
+ model (Any): The XGBoost model instance.
526
+ infer_method_name (str): The name of the method to be used for schema inference.
527
+ Eg: predict (default), predict_proba
528
+ Returns:
529
+ XGBoostModelSchema: The inferred schema of the XGBoost model.
530
+ """
531
+ model_signature_json = _infer_schema(
532
+ model_input=model_input, model=model, infer_method_name=infer_method_name
533
+ )
534
+ return autogen_artifacts.XGBoostModelSchema(
535
+ infer_method_name=infer_method_name,
536
+ inputs=json.loads(model_signature_json["inputs"]),
537
+ outputs=json.loads(model_signature_json["outputs"]),
538
+ )
File without changes