truefoundry 0.5.0rc6__tar.gz → 0.5.1__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.5.0rc6 → truefoundry-0.5.1}/PKG-INFO +2 -6
  2. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/pyproject.toml +8 -9
  3. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/auth_service_client.py +2 -2
  4. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/constants.py +9 -0
  5. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/utils.py +81 -1
  6. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/__init__.py +5 -0
  7. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +4 -2
  8. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +7 -5
  9. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +87 -28
  10. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/constants.py +8 -0
  11. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/utils.py +9 -4
  12. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/cli.py +2 -0
  13. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/__init__.py +1 -0
  14. truefoundry-0.5.1/truefoundry/deploy/cli/commands/deploy_init_command.py +22 -0
  15. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/application.py +2 -1
  16. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/patched_models.py +8 -0
  17. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/__init__.py +25 -15
  18. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +8 -3
  19. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/__init__.py +24 -0
  20. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +325 -0
  21. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/__init__.py +24 -0
  22. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_manifest.py +2 -2
  23. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/export_deployment_files_request_dto.py +82 -0
  24. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/infer_method_name.py +34 -0
  25. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/model_server.py +34 -0
  26. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/model_version_environment.py +97 -0
  27. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_version_manifest.py +13 -8
  28. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/sklearn_framework.py +25 -2
  29. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/sklearn_model_schema.py +82 -0
  30. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/sklearn_serialization_format.py +35 -0
  31. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/transformers_framework.py +2 -2
  32. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/validate_external_storage_root_request_dto.py +71 -0
  33. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/validate_external_storage_root_response_dto.py +69 -0
  34. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/xg_boost_framework.py +28 -3
  35. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/xg_boost_model_schema.py +88 -0
  36. truefoundry-0.5.1/truefoundry/ml/autogen/client/models/xg_boost_serialization_format.py +36 -0
  37. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client_README.md +12 -0
  38. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/entities/artifacts.py +119 -26
  39. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/signature.py +6 -3
  40. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/utils.py +12 -7
  41. truefoundry-0.5.1/truefoundry/ml/cli/commands/model_init.py +97 -0
  42. truefoundry-0.5.1/truefoundry/ml/cli/utils.py +34 -0
  43. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/model.py +53 -38
  44. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/utils.py +38 -2
  45. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/mlfoundry_api.py +77 -81
  46. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/mlfoundry_run.py +3 -33
  47. truefoundry-0.5.1/truefoundry/ml/model_framework.py +538 -0
  48. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/validation_utils.py +2 -0
  49. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/__init__.py +0 -3
  50. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/__main__.py +0 -27
  51. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/app.py +0 -92
  52. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/build.py +0 -45
  53. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/__init__.py +0 -6
  54. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/context.py +0 -3
  55. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/method.py +0 -67
  56. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/remote.py +0 -144
  57. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/route.py +0 -137
  58. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/service.py +0 -113
  59. truefoundry-0.5.0rc6/truefoundry/deploy/function_service/utils.py +0 -53
  60. truefoundry-0.5.0rc6/truefoundry/langchain/__init__.py +0 -12
  61. truefoundry-0.5.0rc6/truefoundry/langchain/deprecated.py +0 -302
  62. truefoundry-0.5.0rc6/truefoundry/langchain/truefoundry_chat.py +0 -130
  63. truefoundry-0.5.0rc6/truefoundry/langchain/truefoundry_embeddings.py +0 -171
  64. truefoundry-0.5.0rc6/truefoundry/langchain/truefoundry_llm.py +0 -106
  65. truefoundry-0.5.0rc6/truefoundry/langchain/utils.py +0 -44
  66. truefoundry-0.5.0rc6/truefoundry/ml/log_types/artifacts/model_extras.py +0 -48
  67. truefoundry-0.5.0rc6/truefoundry/ml/model_framework.py +0 -169
  68. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/README.md +0 -0
  69. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/__init__.py +0 -0
  70. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/__init__.py +0 -0
  71. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/__init__.py +0 -0
  72. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/base.py +0 -0
  73. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/developer.py +0 -0
  74. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
  75. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/tester.py +0 -0
  76. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/cli.py +0 -0
  77. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/constants.py +0 -0
  78. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/exception.py +0 -0
  79. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/logger.py +0 -0
  80. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/__init__.py +0 -0
  81. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/ask.py +0 -0
  82. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/base.py +0 -0
  83. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/commit.py +0 -0
  84. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/docker_build.py +0 -0
  85. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/docker_run.py +0 -0
  86. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
  87. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/list_files.py +0 -0
  88. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/read_file.py +0 -0
  89. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/send_request.py +0 -0
  90. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/write_file.py +0 -0
  91. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/utils/client.py +0 -0
  92. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/utils/diff.py +0 -0
  93. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
  94. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/cli/__init__.py +0 -0
  95. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/cli/__main__.py +0 -0
  96. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/__init__.py +0 -0
  97. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/credential_file_manager.py +0 -0
  98. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/credential_provider.py +0 -0
  99. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/entities.py +0 -0
  100. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/exceptions.py +0 -0
  101. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/request_utils.py +0 -0
  102. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/servicefoundry_client.py +0 -0
  103. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/auto_gen/models.py +0 -0
  104. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/__init__.py +0 -0
  105. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/__init__.py +0 -0
  106. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
  107. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
  108. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/docker_service.py +0 -0
  109. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/__init__.py +0 -0
  110. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
  111. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/build_command.py +0 -0
  112. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/build_logs_command.py +0 -0
  113. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/create_command.py +0 -0
  114. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
  115. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
  116. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/get_command.py +0 -0
  117. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/list_command.py +0 -0
  118. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/login_command.py +0 -0
  119. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
  120. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
  121. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
  122. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
  123. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/redeploy_command.py +0 -0
  124. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
  125. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
  126. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/config.py +0 -0
  127. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/console.py +0 -0
  128. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/const.py +0 -0
  129. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/display_util.py +0 -0
  130. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/util.py +0 -0
  131. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/core/__init__.py +0 -0
  132. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/core/login.py +0 -0
  133. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/core/logout.py +0 -0
  134. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/io/__init__.py +0 -0
  135. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/io/output_callback.py +0 -0
  136. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/io/rich_output_callback.py +0 -0
  137. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/json_util.py +0 -0
  138. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/__init__.py +0 -0
  139. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/auth/servicefoundry_session.py +0 -0
  140. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/clients/__init__.py +0 -0
  141. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/clients/servicefoundry_client.py +0 -0
  142. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/const.py +0 -0
  143. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/__init__.py +0 -0
  144. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/apply.py +0 -0
  145. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/version.py +0 -0
  146. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/workspace.py +0 -0
  147. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/exceptions.py +0 -0
  148. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/logs_utils.py +0 -0
  149. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/messages.py +0 -0
  150. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/model/__init__.py +0 -0
  151. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/model/entity.py +0 -0
  152. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/session.py +0 -0
  153. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/util.py +0 -0
  154. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/win32.py +0 -0
  155. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/python_deploy_codegen.py +0 -0
  156. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/__init__.py +0 -0
  157. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/__init__.py +0 -0
  158. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/deploy.py +0 -0
  159. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
  160. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
  161. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/models.py +0 -0
  162. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/source.py +0 -0
  163. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/logger.py +0 -0
  164. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/artifact/__init__.py +0 -0
  165. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/__init__.py +0 -0
  166. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/__init__.py +0 -0
  167. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/auth_api.py +0 -0
  168. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/deprecated_api.py +0 -0
  169. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/experiments_api.py +0 -0
  170. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/generate_code_snippet_api.py +0 -0
  171. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/health_api.py +0 -0
  172. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/metrics_api.py +0 -0
  173. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/run_artifacts_api.py +0 -0
  174. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/runs_api.py +0 -0
  175. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api_client.py +0 -0
  176. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api_response.py +0 -0
  177. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/configuration.py +0 -0
  178. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/exceptions.py +0 -0
  179. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py +0 -0
  180. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py +0 -0
  181. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent.py +0 -0
  182. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_app.py +0 -0
  183. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_open_api_tool.py +0 -0
  184. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
  185. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_with_fqn.py +0 -0
  186. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_dto.py +0 -0
  187. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_response_dto.py +0 -0
  188. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_type.py +0 -0
  189. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_dto.py +0 -0
  190. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_response_dto.py +0 -0
  191. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py +0 -0
  192. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_status.py +0 -0
  193. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/assistant_message.py +0 -0
  194. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
  195. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
  196. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/blob_storage_reference.py +0 -0
  197. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/body_get_search_runs_get.py +0 -0
  198. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/chat_prompt.py +0 -0
  199. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/chat_prompt_messages_inner.py +0 -0
  200. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/columns_dto.py +0 -0
  201. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/command.py +0 -0
  202. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content.py +0 -0
  203. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content1.py +0 -0
  204. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content2.py +0 -0
  205. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content2_any_of_inner.py +0 -0
  206. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_request_dto.py +0 -0
  207. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_response_dto.py +0 -0
  208. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_version_request_dto.py +0 -0
  209. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_version_response_dto.py +0 -0
  210. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_dataset_request_dto.py +0 -0
  211. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_experiment_request_dto.py +0 -0
  212. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_experiment_response_dto.py +0 -0
  213. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_model_version_request_dto.py +0 -0
  214. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
  215. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
  216. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
  217. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
  218. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
  219. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_run_request_dto.py +0 -0
  220. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_run_response_dto.py +0 -0
  221. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
  222. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/dataset_dto.py +0 -0
  223. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/dataset_response_dto.py +0 -0
  224. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
  225. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_dataset_request_dto.py +0 -0
  226. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
  227. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_model_version_request_dto.py +0 -0
  228. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_run_request.py +0 -0
  229. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_tag_request_dto.py +0 -0
  230. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_dto.py +0 -0
  231. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_id_request_dto.py +0 -0
  232. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_response_dto.py +0 -0
  233. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_tag_dto.py +0 -0
  234. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/external_artifact_source.py +0 -0
  235. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/fast_ai_framework.py +0 -0
  236. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/file_info_dto.py +0 -0
  237. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
  238. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/framework.py +0 -0
  239. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_experiment_response_dto.py +0 -0
  240. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_latest_run_log_response_dto.py +0 -0
  241. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_metric_history_response.py +0 -0
  242. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
  243. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
  244. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
  245. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
  246. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
  247. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
  248. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
  249. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
  250. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_tenant_id_response_dto.py +0 -0
  251. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/gluon_framework.py +0 -0
  252. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/h2_o_framework.py +0 -0
  253. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/http_validation_error.py +0 -0
  254. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/image_content_part.py +0 -0
  255. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/image_url.py +0 -0
  256. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/internal_metadata.py +0 -0
  257. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/keras_framework.py +0 -0
  258. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/latest_run_log_dto.py +0 -0
  259. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/library_name.py +0 -0
  260. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/light_gbm_framework.py +0 -0
  261. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifact_versions_request_dto.py +0 -0
  262. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifact_versions_response_dto.py +0 -0
  263. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifacts_request_dto.py +0 -0
  264. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifacts_response_dto.py +0 -0
  265. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_colums_response_dto.py +0 -0
  266. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_datasets_request_dto.py +0 -0
  267. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_datasets_response_dto.py +0 -0
  268. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_experiments_response_dto.py +0 -0
  269. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
  270. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
  271. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
  272. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
  273. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
  274. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_metric_history_request_dto.py +0 -0
  275. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_metric_history_response_dto.py +0 -0
  276. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_model_version_response_dto.py +0 -0
  277. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_model_versions_request_dto.py +0 -0
  278. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_models_request_dto.py +0 -0
  279. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_models_response_dto.py +0 -0
  280. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_run_artifacts_response_dto.py +0 -0
  281. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_run_logs_response_dto.py +0 -0
  282. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/log_batch_request_dto.py +0 -0
  283. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/log_metric_request_dto.py +0 -0
  284. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/log_param_request_dto.py +0 -0
  285. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/manifest.py +0 -0
  286. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/method.py +0 -0
  287. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/metric_collection_dto.py +0 -0
  288. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/metric_dto.py +0 -0
  289. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/mime_type.py +0 -0
  290. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_configuration.py +0 -0
  291. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_dto.py +0 -0
  292. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_response_dto.py +0 -0
  293. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_version_dto.py +0 -0
  294. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_version_response_dto.py +0 -0
  295. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/multi_part_upload_dto.py +0 -0
  296. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py +0 -0
  297. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/multi_part_upload_storage_provider.py +0 -0
  298. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
  299. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/onnx_framework.py +0 -0
  300. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/openapi_spec.py +0 -0
  301. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/paddle_framework.py +0 -0
  302. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/param_dto.py +0 -0
  303. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/parameters.py +0 -0
  304. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/py_torch_framework.py +0 -0
  305. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/resolve_agent_app_response_dto.py +0 -0
  306. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/restore_run_request_dto.py +0 -0
  307. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_data_dto.py +0 -0
  308. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_dto.py +0 -0
  309. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_info_dto.py +0 -0
  310. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_log_dto.py +0 -0
  311. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_log_input_dto.py +0 -0
  312. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_response_dto.py +0 -0
  313. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_tag_dto.py +0 -0
  314. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/search_runs_request_dto.py +0 -0
  315. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/search_runs_response_dto.py +0 -0
  316. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/set_experiment_tag_request_dto.py +0 -0
  317. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/set_tag_request_dto.py +0 -0
  318. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/signed_url_dto.py +0 -0
  319. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/source.py +0 -0
  320. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/source1.py +0 -0
  321. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/spa_cy_framework.py +0 -0
  322. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/stats_models_framework.py +0 -0
  323. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/stop.py +0 -0
  324. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/store_run_logs_request_dto.py +0 -0
  325. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/subject.py +0 -0
  326. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/subject_type.py +0 -0
  327. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/system_message.py +0 -0
  328. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/tensor_flow_framework.py +0 -0
  329. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/text.py +0 -0
  330. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/text_content_part.py +0 -0
  331. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
  332. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
  333. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/true_foundry_artifact_source.py +0 -0
  334. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_artifact_version_request_dto.py +0 -0
  335. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_dataset_request_dto.py +0 -0
  336. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_experiment_request_dto.py +0 -0
  337. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_model_version_request_dto.py +0 -0
  338. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_run_request_dto.py +0 -0
  339. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_run_response_dto.py +0 -0
  340. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/url.py +0 -0
  341. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/user_message.py +0 -0
  342. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/validation_error.py +0 -0
  343. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/validation_error_loc_inner.py +0 -0
  344. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/rest.py +0 -0
  345. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/__init__.py +0 -0
  346. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/exceptions.py +0 -0
  347. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/schema.py +0 -0
  348. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/__init__.py +0 -0
  349. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/cli.py +0 -0
  350. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/commands/__init__.py +0 -0
  351. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/commands/download.py +0 -0
  352. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/__init__.py +0 -0
  353. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/entities.py +0 -0
  354. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
  355. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/utils.py +0 -0
  356. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/constants.py +0 -0
  357. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/entities.py +0 -0
  358. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/enums.py +0 -0
  359. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/exceptions.py +0 -0
  360. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/git_info.py +0 -0
  361. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/internal_namespace.py +0 -0
  362. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/__init__.py +0 -0
  363. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
  364. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
  365. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
  366. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
  367. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/__init__.py +0 -0
  368. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/constants.py +0 -0
  369. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/image.py +0 -0
  370. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
  371. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/types.py +0 -0
  372. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/plot.py +0 -0
  373. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/pydantic_base.py +0 -0
  374. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/utils.py +0 -0
  375. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/logger.py +0 -0
  376. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/run_utils.py +0 -0
  377. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/session.py +0 -0
  378. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/pydantic_v1.py +0 -0
  379. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/version.py +0 -0
  380. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/__init__.py +0 -0
  381. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/container_task.py +0 -0
  382. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/deploy.sh +0 -0
  383. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/hello_world_package/workflow.py +0 -0
  384. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/package/test_workflow.py +0 -0
  385. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/truefoundry.yaml +0 -0
  386. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/workflow.yaml +0 -0
  387. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/map_task.py +0 -0
  388. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/python_task.py +0 -0
  389. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
  390. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
  391. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
  392. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
  393. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/task.py +0 -0
  394. {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: truefoundry
3
- Version: 0.5.0rc6
3
+ Version: 0.5.1
4
4
  Summary: Truefoundry CLI
5
5
  Author: Abhishek Choudhary
6
6
  Author-email: abhishek@truefoundry.com
@@ -19,7 +19,6 @@ Requires-Dist: aenum (>=3.0.0,<4.0.0)
19
19
  Requires-Dist: click (>=7.0.0,<9.0.0)
20
20
  Requires-Dist: coolname (>=1.1.0,<2.0.0)
21
21
  Requires-Dist: docker (>=6.1.2,<8.0.0)
22
- Requires-Dist: fastapi (>=0.56.0,<0.200.0)
23
22
  Requires-Dist: filelock (>=3.8.0,<4.0.0)
24
23
  Requires-Dist: flytekit (==1.13.13) ; extra == "workflow"
25
24
  Requires-Dist: gitignorefile (>=1.1.2,<2.0.0)
@@ -29,15 +28,13 @@ Requires-Dist: numpy (>=1.23.0,<2.0.0) ; python_version < "3.12"
29
28
  Requires-Dist: numpy (>=1.26.0,<2.0.0) ; python_version >= "3.12"
30
29
  Requires-Dist: openai (>=1.16.2,<2.0.0)
31
30
  Requires-Dist: packaging (>=20.0,<25.0)
32
- Requires-Dist: pandas (>=1.0.0,<3.0.0) ; python_version < "3.10"
33
- Requires-Dist: pandas (>=1.4.0,<3.0.0) ; python_version >= "3.10"
34
31
  Requires-Dist: pydantic (>=1.8.2,<3.0.0)
35
32
  Requires-Dist: pygments (>=2.12.0,<3.0.0)
36
33
  Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
37
34
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
38
35
  Requires-Dist: python-socketio[client] (>=5.5.2,<6.0.0)
39
36
  Requires-Dist: questionary (>=1.10.0,<2.0.0)
40
- Requires-Dist: requests (>=2.31.0,<3.0.0)
37
+ Requires-Dist: requests (>=2.18.0,<3.0.0)
41
38
  Requires-Dist: requirements-parser (>=0.11.0,<0.12.0)
42
39
  Requires-Dist: rich (>=13.7.1,<14.0.0)
43
40
  Requires-Dist: rich-click (>=1.2.1,<2.0.0)
@@ -46,7 +43,6 @@ Requires-Dist: scipy (>=1.5.0,<2.0.0) ; python_version < "3.12"
46
43
  Requires-Dist: tqdm (>=4.0.0,<5.0.0)
47
44
  Requires-Dist: typing-extensions (>=4.0)
48
45
  Requires-Dist: urllib3 (>=1.26.18,<3)
49
- Requires-Dist: uvicorn (>=0.13.0,<1.0.0)
50
46
  Requires-Dist: yq (>=3.1.0,<4.0.0)
51
47
  Description-Content-Type: text/markdown
52
48
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "truefoundry"
3
- version = "0.5.0rc6"
3
+ version = "0.5.1"
4
4
  description = "Truefoundry CLI"
5
5
  authors = ["Abhishek Choudhary <abhishek@truefoundry.com>"]
6
6
  readme = "README.md"
@@ -11,7 +11,6 @@ aenum = ">=3.0.0,<4.0.0"
11
11
  click = ">=7.0.0,<9.0.0"
12
12
  coolname = ">=1.1.0,<2.0.0"
13
13
  docker = ">=6.1.2,<8.0.0"
14
- fastapi = ">=0.56.0,<0.200.0"
15
14
  filelock = ">=3.8.0,<4.0.0"
16
15
  flytekit = { version = "1.13.13", optional = true }
17
16
  gitignorefile = ">=1.1.2,<2.0.0"
@@ -29,14 +28,13 @@ python-dotenv = ">=1.0.1,<2.0.0"
29
28
  python-socketio = { version = ">=5.5.2,<6.0.0", extras = ["client"] }
30
29
  PyYAML = ">=6.0.0,<7.0.0"
31
30
  questionary = ">=1.10.0,<2.0.0"
32
- requests = ">=2.31.0,<3.0.0"
31
+ requests = ">=2.18.0,<3.0.0"
33
32
  requirements-parser = ">=0.11.0,<0.12.0"
34
33
  rich = ">=13.7.1,<14.0.0"
35
34
  rich-click = ">=1.2.1,<2.0.0"
36
35
  tqdm = ">=4.0.0,<5.0.0"
37
36
  typing-extensions = ">=4.0"
38
37
  urllib3 = ">=1.26.18,<3"
39
- uvicorn = ">=0.13.0,<1.0.0"
40
38
  yq = ">=3.1.0,<4.0.0"
41
39
  # Check and try to eliminate libs below this comment
42
40
  scipy = [
@@ -49,11 +47,6 @@ numpy = [
49
47
  { version = ">=1.23.0,<2.0.0", python = "<3.12" },
50
48
  { version = ">=1.26.0,<2.0.0", python = ">=3.12" },
51
49
  ]
52
- pandas = [
53
- # This is split into two because poetry will select a version which has no wheel on python >= 3.10 :/
54
- { version = ">=1.0.0,<3.0.0", python = "<3.10" },
55
- { version = ">=1.4.0,<3.0.0", python = ">=3.10" },
56
- ]
57
50
 
58
51
 
59
52
  [tool.poetry.extras]
@@ -67,6 +60,11 @@ langchain = ">=0.2.0,<0.3.0"
67
60
  matplotlib = ">=3.0.0,<4.0.0"
68
61
  mypy = "*"
69
62
  plotly = ">=5.8.2,<6.0.0"
63
+ pandas = [
64
+ # This is split into two because poetry will select a version which has no wheel on python >= 3.10 :/
65
+ { version = ">=1.0.0,<3.0.0", python = "<3.10" },
66
+ { version = ">=1.4.0,<3.0.0", python = ">=3.10" },
67
+ ]
70
68
  pre-commit = ">=3.5.0,<4.0.0"
71
69
  pytest = ">=8.2.2,<9.0.0"
72
70
  pytest-env = ">=1.1.5,<2.0.0"
@@ -77,6 +75,7 @@ shap = [
77
75
  { version = ">=0.40.0", python = "<3.12" },
78
76
  { version = ">=0.45.0", python = ">=3.12" },
79
77
  ]
78
+ xgboost = "^2.1.3"
80
79
 
81
80
 
82
81
  [tool.poetry-dynamic-versioning]
@@ -51,7 +51,7 @@ class ServiceFoundryServerAuthServiceClient(AuthServiceClient):
51
51
  self._api_server_url = url
52
52
 
53
53
  def refresh_token(self, token: Token, host: Optional[str] = None) -> Token:
54
- host_arg_str = f"--host {host}" if host else "--host HOST"
54
+ host_arg_str = host if host else "HOST"
55
55
  if not token.refresh_token:
56
56
  # TODO: Add a way to propagate error messages without traceback to the output interface side
57
57
  raise Exception(
@@ -128,7 +128,7 @@ class AuthServerServiceClient(AuthServiceClient):
128
128
  self._auth_server_url = url
129
129
 
130
130
  def refresh_token(self, token: Token, host: Optional[str] = None) -> Token:
131
- host_arg_str = f"--host {host}" if host else "--host HOST"
131
+ host_arg_str = host if host else "HOST"
132
132
  if not token.refresh_token:
133
133
  # TODO: Add a way to propagate error messages without traceback to the output interface side
134
134
  raise Exception(
@@ -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"
@@ -1,7 +1,14 @@
1
+ import json
2
+ import logging
3
+ import os
4
+ import sys
1
5
  import time
6
+ from collections import namedtuple
2
7
  from functools import lru_cache, wraps
8
+ from shutil import rmtree
9
+ from subprocess import check_output
3
10
  from time import monotonic_ns
4
- from typing import Callable, Generator, Optional, TypeVar
11
+ from typing import Callable, Generator, List, Optional, TypeVar
5
12
  from urllib.parse import urljoin, urlparse
6
13
 
7
14
  from truefoundry.common.constants import (
@@ -12,7 +19,10 @@ from truefoundry.common.constants import (
12
19
  )
13
20
  from truefoundry.pydantic_v1 import BaseSettings
14
21
 
22
+ logger = logging.getLogger(__name__)
23
+
15
24
  T = TypeVar("T")
25
+ InstalledPipPackage = namedtuple("InstalledPipPackage", ["name", "version"])
16
26
 
17
27
 
18
28
  class _TFYServersConfig(BaseSettings):
@@ -102,3 +112,73 @@ def resolve_tfy_host(tfy_host: Optional[str] = None) -> str:
102
112
  tfy_host = tfy_host.strip("/")
103
113
  validate_tfy_host(tfy_host)
104
114
  return tfy_host
115
+
116
+
117
+ class ContextualDirectoryManager:
118
+ def __init__(self, dir_path: str, cleanup_on_error: bool = True):
119
+ self.dir_path = dir_path
120
+ self.cleanup_on_error = cleanup_on_error
121
+
122
+ def __enter__(self):
123
+ if os.path.exists(self.dir_path):
124
+ raise FileExistsError(
125
+ f"The directory {self.dir_path!r} already exists. "
126
+ "Please provide a path with a different name that does not already exist."
127
+ )
128
+
129
+ os.makedirs(self.dir_path, exist_ok=False)
130
+ return self.dir_path
131
+
132
+ def __exit__(self, exc_type, exc_value, traceback):
133
+ if self.cleanup_on_error and exc_type is not None:
134
+ # Only delete the directory if an exception occurred
135
+ if os.path.exists(self.dir_path):
136
+ rmtree(self.dir_path)
137
+
138
+
139
+ def get_python_version_major_minor() -> str:
140
+ """
141
+ Returns the major.minor version of the Python interpreter
142
+ """
143
+ version_info = sys.version_info
144
+ return f"{version_info.major}.{version_info.minor}"
145
+
146
+
147
+ def list_pip_packages_installed(
148
+ filter_package_names: Optional[List[str]] = None,
149
+ ) -> List[InstalledPipPackage]:
150
+ """
151
+ List the installed package_names, along with their versions.
152
+ Args:
153
+ filter_package_names (List[str]): A list of specific libraries to filter for.
154
+
155
+ Returns:
156
+ List[InstalledPipPackage]: A list of InstalledPipPackage namedtuples for each match.
157
+ """
158
+ relevant_package_names: List[InstalledPipPackage] = []
159
+
160
+ # Get the installed packages in JSON format from pip
161
+ try:
162
+ output = check_output(
163
+ [
164
+ sys.executable,
165
+ "-m",
166
+ "pip",
167
+ "--disable-pip-version-check",
168
+ "list",
169
+ "--pre",
170
+ "--format=json",
171
+ ]
172
+ )
173
+ installed_package_names = json.loads(output.decode("utf-8"))
174
+ except Exception:
175
+ logger.exception("Failed to list installed packages using pip.")
176
+ return relevant_package_names
177
+
178
+ package_names_to_check = set(filter_package_names or [])
179
+ for package in installed_package_names:
180
+ if package["name"] in package_names_to_check:
181
+ relevant_package_names.append(
182
+ InstalledPipPackage(package["name"], package["version"])
183
+ )
184
+ return relevant_package_names
@@ -1,8 +1,11 @@
1
1
  from truefoundry.deploy.auto_gen.models import (
2
2
  AppProtocol,
3
+ Autoshutdown,
3
4
  CanaryStep,
4
5
  CapacityType,
6
+ Claim,
5
7
  ConcurrencyPolicy,
8
+ JobAlert,
6
9
  Kustomize,
7
10
  ParamType,
8
11
  Protocol,
@@ -66,6 +69,7 @@ from truefoundry.deploy.v2.lib.patched_models import (
66
69
  DynamicVolumeConfig,
67
70
  Endpoint,
68
71
  GcpTPU,
72
+ GitHelmRepo,
69
73
  GitSource,
70
74
  GPUType,
71
75
  HealthProbe,
@@ -73,6 +77,7 @@ from truefoundry.deploy.v2.lib.patched_models import (
73
77
  HttpProbe,
74
78
  HuggingfaceArtifactSource,
75
79
  Image,
80
+ JwtAuthCreds,
76
81
  KafkaInputConfig,
77
82
  KafkaMetricConfig,
78
83
  KafkaOutputConfig,
@@ -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
@@ -9,6 +9,7 @@ from truefoundry.deploy.cli.commands import (
9
9
  get_build_command,
10
10
  get_delete_command,
11
11
  get_deploy_command,
12
+ get_deploy_init_command,
12
13
  get_login_command,
13
14
  get_logout_command,
14
15
  get_patch_application_command,
@@ -36,6 +37,7 @@ def create_truefoundry_cli() -> click.MultiCommand:
36
37
  cli.add_command(get_logout_command())
37
38
  cli.add_command(get_apply_command())
38
39
  cli.add_command(get_deploy_command())
40
+ cli.add_command(get_deploy_init_command())
39
41
  cli.add_command(get_patch_application_command())
40
42
  cli.add_command(get_delete_command())
41
43
  cli.add_command(get_trigger_command())
@@ -4,6 +4,7 @@ from truefoundry.deploy.cli.commands.build_logs_command import get_build_logs_co
4
4
  from truefoundry.deploy.cli.commands.create_command import get_create_command
5
5
  from truefoundry.deploy.cli.commands.delete_command import get_delete_command
6
6
  from truefoundry.deploy.cli.commands.deploy_command import get_deploy_command
7
+ from truefoundry.deploy.cli.commands.deploy_init_command import get_deploy_init_command
7
8
  from truefoundry.deploy.cli.commands.get_command import get_get_command
8
9
  from truefoundry.deploy.cli.commands.list_command import get_list_command
9
10
  from truefoundry.deploy.cli.commands.login_command import get_login_command
@@ -0,0 +1,22 @@
1
+ import rich_click as click
2
+
3
+ from truefoundry.deploy.cli.const import GROUP_CLS
4
+ from truefoundry.ml.cli.commands.model_init import get_model_init_command
5
+
6
+
7
+ @click.group(
8
+ name="deploy-init",
9
+ cls=GROUP_CLS,
10
+ help="Initialize the TrueFoundry deployment configuration.",
11
+ )
12
+ def deploy_init_command(): ...
13
+
14
+
15
+ def get_deploy_init_command():
16
+ """
17
+ Generates the deploy-init command.
18
+ model: Initialize the TrueFoundry deployment configuration for a model. eg: tfy deploy-init model [--args]
19
+ """
20
+
21
+ deploy_init_command.add_command(get_model_init_command())
22
+ return deploy_init_command
@@ -179,10 +179,11 @@ def trigger_job(
179
179
  command=command_str if command_str else None,
180
180
  params=params if params else None,
181
181
  )
182
+ jobRunName = result.jobRunName
182
183
  previous_runs_url = f"{client.base_url.strip('/')}/deployments/{application_info.id}?tab=previousRuns"
183
184
  logger.info(
184
185
  f"{message}.\n"
185
- f"You can check the status of your job run at {previous_runs_url}"
186
+ f"You can check the status of your job run at {previous_runs_url} with jobRunName: {jobRunName}"
186
187
  )
187
188
  return result
188
189
 
@@ -186,6 +186,10 @@ class BasicAuthCreds(models.BasicAuthCreds, PatchedModelBase):
186
186
  type: Literal["basic_auth"] = "basic_auth"
187
187
 
188
188
 
189
+ class JwtAuthCreds(models.JwtAuthCreds, PatchedModelBase):
190
+ type: Literal["jwt_auth"] = "jwt_auth"
191
+
192
+
189
193
  class HealthProbe(models.HealthProbe, PatchedModelBase):
190
194
  pass
191
195
 
@@ -338,6 +342,10 @@ class HelmRepo(models.HelmRepo, PatchedModelBase):
338
342
  type: Literal["helm-repo"] = "helm-repo"
339
343
 
340
344
 
345
+ class GitHelmRepo(models.GitHelmRepo, PatchedModelBase):
346
+ type: Literal["git-helm-repo"] = "git-helm-repo"
347
+
348
+
341
349
  class OCIRepo(models.OCIRepo, PatchedModelBase):
342
350
  type: Literal["oci-repo"] = "oci-repo"
343
351