truefoundry 0.9.4__tar.gz → 0.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of truefoundry might be problematic. Click here for more details.

Files changed (388) hide show
  1. {truefoundry-0.9.4 → truefoundry-0.10.0}/PKG-INFO +1 -1
  2. {truefoundry-0.9.4 → truefoundry-0.10.0}/pyproject.toml +2 -2
  3. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/constants.py +2 -1
  4. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/__init__.py +3 -0
  5. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/_autogen/models.py +20 -37
  6. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/__init__.py +2 -2
  7. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/__init__.py +22 -19
  8. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/tfy_spark_buildpack/dockerfile_template.py +17 -38
  9. truefoundry-0.10.0/truefoundry/deploy/builder/builders/tfy_spark_buildpack/tfy_execute_notebook.py +56 -0
  10. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/patched_models.py +20 -0
  11. truefoundry-0.9.4/truefoundry/deploy/builder/builders/tfy_spark_buildpack/execute_notebook.py +0 -21
  12. {truefoundry-0.9.4 → truefoundry-0.10.0}/.gitignore +0 -0
  13. {truefoundry-0.9.4 → truefoundry-0.10.0}/README.md +0 -0
  14. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/__init__.py +0 -0
  15. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/_ask/__init__.py +0 -0
  16. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/_ask/cli.py +0 -0
  17. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/_ask/client.py +0 -0
  18. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/_ask/llm_utils.py +0 -0
  19. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/_client.py +0 -0
  20. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/__init__.py +0 -0
  21. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/agents/__init__.py +0 -0
  22. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/agents/base.py +0 -0
  23. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/agents/developer.py +0 -0
  24. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
  25. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/agents/tester.py +0 -0
  26. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/cli.py +0 -0
  27. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/constants.py +0 -0
  28. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/exception.py +0 -0
  29. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/logger.py +0 -0
  30. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/__init__.py +0 -0
  31. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/ask.py +0 -0
  32. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/base.py +0 -0
  33. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/commit.py +0 -0
  34. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/docker_build.py +0 -0
  35. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/docker_run.py +0 -0
  36. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
  37. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/list_files.py +0 -0
  38. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/read_file.py +0 -0
  39. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/send_request.py +0 -0
  40. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/tools/write_file.py +0 -0
  41. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/utils/client.py +0 -0
  42. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/utils/diff.py +0 -0
  43. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
  44. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/__init__.py +0 -0
  45. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/__main__.py +0 -0
  46. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/config.py +0 -0
  47. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/console.py +0 -0
  48. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/const.py +0 -0
  49. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/display_util.py +0 -0
  50. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/cli/util.py +0 -0
  51. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/__init__.py +0 -0
  52. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/auth_service_client.py +0 -0
  53. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/credential_file_manager.py +0 -0
  54. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/credential_provider.py +0 -0
  55. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/entities.py +0 -0
  56. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/exceptions.py +0 -0
  57. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/request_utils.py +0 -0
  58. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/servicefoundry_client.py +0 -0
  59. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/session.py +0 -0
  60. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/storage_provider_utils.py +0 -0
  61. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/types.py +0 -0
  62. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/utils.py +0 -0
  63. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/common/warnings.py +0 -0
  64. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/__init__.py +0 -0
  65. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
  66. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +0 -0
  67. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
  68. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +0 -0
  69. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +0 -0
  70. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/constants.py +0 -0
  71. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/docker_service.py +0 -0
  72. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/builder/utils.py +0 -0
  73. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/__init__.py +0 -0
  74. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/__init__.py +0 -0
  75. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
  76. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/build_command.py +0 -0
  77. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
  78. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
  79. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
  80. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/get_command.py +0 -0
  81. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/k8s_exec_credential_command.py +0 -0
  82. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/kubeconfig_command.py +0 -0
  83. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/login_command.py +0 -0
  84. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
  85. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
  86. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
  87. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
  88. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
  89. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
  90. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/cli/commands/utils.py +0 -0
  91. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/core/__init__.py +0 -0
  92. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/core/login.py +0 -0
  93. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/core/logout.py +0 -0
  94. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/io/__init__.py +0 -0
  95. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/io/no_output_callback.py +0 -0
  96. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/io/output_callback.py +0 -0
  97. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/io/rich_output_callback.py +0 -0
  98. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/__init__.py +0 -0
  99. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/clients/__init__.py +0 -0
  100. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/clients/servicefoundry_client.py +0 -0
  101. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/const.py +0 -0
  102. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/dao/__init__.py +0 -0
  103. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/dao/application.py +0 -0
  104. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/dao/apply.py +0 -0
  105. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/dao/delete.py +0 -0
  106. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/dao/version.py +0 -0
  107. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/dao/workspace.py +0 -0
  108. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/diff_utils.py +0 -0
  109. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/logs_utils.py +0 -0
  110. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/messages.py +0 -0
  111. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/model/__init__.py +0 -0
  112. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/model/entity.py +0 -0
  113. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/session.py +0 -0
  114. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/util.py +0 -0
  115. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/lib/win32.py +0 -0
  116. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/python_deploy_codegen.py +0 -0
  117. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/__init__.py +0 -0
  118. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/__init__.py +0 -0
  119. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/deploy.py +0 -0
  120. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
  121. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
  122. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/models.py +0 -0
  123. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/deploy/v2/lib/source.py +0 -0
  124. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/logger.py +0 -0
  125. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/__init__.py +0 -0
  126. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/__init__.py +0 -0
  127. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/__init__.py +0 -0
  128. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/__init__.py +0 -0
  129. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/auth_api.py +0 -0
  130. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/deprecated_api.py +0 -0
  131. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/experiments_api.py +0 -0
  132. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/generate_code_snippet_api.py +0 -0
  133. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/health_api.py +0 -0
  134. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/metrics_api.py +0 -0
  135. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/mlfoundry_artifacts_api.py +0 -0
  136. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/run_artifacts_api.py +0 -0
  137. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api/runs_api.py +0 -0
  138. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api_client.py +0 -0
  139. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/api_response.py +0 -0
  140. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/configuration.py +0 -0
  141. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/exceptions.py +0 -0
  142. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/__init__.py +0 -0
  143. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/agent_app.py +0 -0
  144. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/agent_manifest.py +0 -0
  145. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_manifest.py +0 -0
  146. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
  147. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/agent_with_fqn.py +0 -0
  148. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/apply_request_dto.py +0 -0
  149. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/apply_response_dto.py +0 -0
  150. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_dto.py +0 -0
  151. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_manifest.py +0 -0
  152. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_path.py +0 -0
  153. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_response_dto.py +0 -0
  154. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_type.py +0 -0
  155. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_version_dto.py +0 -0
  156. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_version_response_dto.py +0 -0
  157. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_version_serialization_format.py +0 -0
  158. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/artifact_version_status.py +0 -0
  159. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/assistant_message.py +0 -0
  160. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
  161. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
  162. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/blob_storage_reference.py +0 -0
  163. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/body_get_search_runs_get.py +0 -0
  164. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest.py +0 -0
  165. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest_messages_inner.py +0 -0
  166. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/columns_dto.py +0 -0
  167. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/command.py +0 -0
  168. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/content.py +0 -0
  169. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/content1.py +0 -0
  170. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/content2.py +0 -0
  171. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/content2_any_of_inner.py +0 -0
  172. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_artifact_request_dto.py +0 -0
  173. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_artifact_response_dto.py +0 -0
  174. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_artifact_version_request_dto.py +0 -0
  175. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_artifact_version_response_dto.py +0 -0
  176. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_dataset_request_dto.py +0 -0
  177. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_experiment_request_dto.py +0 -0
  178. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_experiment_response_dto.py +0 -0
  179. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_model_version_request_dto.py +0 -0
  180. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
  181. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
  182. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
  183. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
  184. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
  185. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_run_request_dto.py +0 -0
  186. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_run_response_dto.py +0 -0
  187. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
  188. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/data_directory_manifest.py +0 -0
  189. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/dataset_dto.py +0 -0
  190. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/dataset_response_dto.py +0 -0
  191. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
  192. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/delete_dataset_request_dto.py +0 -0
  193. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
  194. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/delete_model_version_request_dto.py +0 -0
  195. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/delete_run_request.py +0 -0
  196. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/delete_tag_request_dto.py +0 -0
  197. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/experiment_dto.py +0 -0
  198. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/experiment_id_request_dto.py +0 -0
  199. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/experiment_response_dto.py +0 -0
  200. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/experiment_tag_dto.py +0 -0
  201. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/export_deployment_files_request_dto.py +0 -0
  202. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/external_blob_storage_source.py +0 -0
  203. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/fast_ai_framework.py +0 -0
  204. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/file_info_dto.py +0 -0
  205. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
  206. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/framework.py +0 -0
  207. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_artifact_version_aliases_response_dto.py +0 -0
  208. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_experiment_response_dto.py +0 -0
  209. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_latest_run_log_response_dto.py +0 -0
  210. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_metric_history_response.py +0 -0
  211. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
  212. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
  213. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
  214. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
  215. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
  216. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
  217. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
  218. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
  219. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/get_tenant_id_response_dto.py +0 -0
  220. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/gluon_framework.py +0 -0
  221. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/h2_o_framework.py +0 -0
  222. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/http_validation_error.py +0 -0
  223. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/image_content_part.py +0 -0
  224. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/image_url.py +0 -0
  225. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/infer_method_name.py +0 -0
  226. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/keras_framework.py +0 -0
  227. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/latest_run_log_dto.py +0 -0
  228. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/library_name.py +0 -0
  229. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/light_gbm_framework.py +0 -0
  230. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_artifact_versions_request_dto.py +0 -0
  231. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_artifact_versions_response_dto.py +0 -0
  232. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_artifacts_request_dto.py +0 -0
  233. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_artifacts_response_dto.py +0 -0
  234. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_colums_response_dto.py +0 -0
  235. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_datasets_request_dto.py +0 -0
  236. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_datasets_response_dto.py +0 -0
  237. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_experiments_response_dto.py +0 -0
  238. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
  239. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
  240. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
  241. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
  242. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
  243. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_metric_history_request_dto.py +0 -0
  244. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_metric_history_response_dto.py +0 -0
  245. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_model_version_response_dto.py +0 -0
  246. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_model_versions_request_dto.py +0 -0
  247. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_models_request_dto.py +0 -0
  248. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_models_response_dto.py +0 -0
  249. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_run_artifacts_response_dto.py +0 -0
  250. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/list_run_logs_response_dto.py +0 -0
  251. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/local_artifact_source.py +0 -0
  252. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/local_model_source.py +0 -0
  253. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/log_batch_request_dto.py +0 -0
  254. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/log_metric_request_dto.py +0 -0
  255. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/log_param_request_dto.py +0 -0
  256. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/manifest.py +0 -0
  257. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/manifest1.py +0 -0
  258. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/manifest2.py +0 -0
  259. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/method.py +0 -0
  260. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/metric_collection_dto.py +0 -0
  261. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/metric_dto.py +0 -0
  262. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/mime_type.py +0 -0
  263. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_configuration.py +0 -0
  264. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_dto.py +0 -0
  265. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_manifest.py +0 -0
  266. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_response_dto.py +0 -0
  267. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_server.py +0 -0
  268. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_version_dto.py +0 -0
  269. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_version_environment.py +0 -0
  270. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/model_version_response_dto.py +0 -0
  271. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/multi_part_upload_dto.py +0 -0
  272. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/multi_part_upload_response_dto.py +0 -0
  273. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/multi_part_upload_storage_provider.py +0 -0
  274. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
  275. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/onnx_framework.py +0 -0
  276. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/openapi_spec.py +0 -0
  277. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/paddle_framework.py +0 -0
  278. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/param_dto.py +0 -0
  279. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/parameters.py +0 -0
  280. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/py_torch_framework.py +0 -0
  281. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/resolve_agent_app_response_dto.py +0 -0
  282. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/restore_run_request_dto.py +0 -0
  283. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_data_dto.py +0 -0
  284. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_dto.py +0 -0
  285. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_info_dto.py +0 -0
  286. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_log_dto.py +0 -0
  287. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_log_input_dto.py +0 -0
  288. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_response_dto.py +0 -0
  289. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/run_tag_dto.py +0 -0
  290. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/search_runs_request_dto.py +0 -0
  291. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/search_runs_response_dto.py +0 -0
  292. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/set_experiment_tag_request_dto.py +0 -0
  293. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/set_tag_request_dto.py +0 -0
  294. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/signed_url_dto.py +0 -0
  295. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/sklearn_framework.py +0 -0
  296. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/sklearn_model_schema.py +0 -0
  297. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/sklearn_serialization_format.py +0 -0
  298. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/source.py +0 -0
  299. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/source1.py +0 -0
  300. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/source2.py +0 -0
  301. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/spa_cy_framework.py +0 -0
  302. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/stats_models_framework.py +0 -0
  303. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/stop.py +0 -0
  304. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/store_run_logs_request_dto.py +0 -0
  305. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/subject.py +0 -0
  306. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/subject_type.py +0 -0
  307. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/system_message.py +0 -0
  308. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/tensor_flow_framework.py +0 -0
  309. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/text.py +0 -0
  310. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/text_content_part.py +0 -0
  311. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/transformers_framework.py +0 -0
  312. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
  313. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
  314. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/true_foundry_managed_source.py +0 -0
  315. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/update_artifact_version_request_dto.py +0 -0
  316. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/update_dataset_request_dto.py +0 -0
  317. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/update_experiment_request_dto.py +0 -0
  318. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/update_model_version_request_dto.py +0 -0
  319. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/update_run_request_dto.py +0 -0
  320. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/update_run_response_dto.py +0 -0
  321. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/url.py +0 -0
  322. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/user_message.py +0 -0
  323. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
  324. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
  325. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/validation_error.py +0 -0
  326. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/validation_error_loc_inner.py +0 -0
  327. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/xg_boost_framework.py +0 -0
  328. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/xg_boost_model_schema.py +0 -0
  329. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/models/xg_boost_serialization_format.py +0 -0
  330. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client/rest.py +0 -0
  331. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/client_README.md +0 -0
  332. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/entities/artifacts.py +0 -0
  333. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/models/__init__.py +0 -0
  334. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/models/exceptions.py +0 -0
  335. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/models/schema.py +0 -0
  336. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/models/signature.py +0 -0
  337. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/_autogen/models/utils.py +0 -0
  338. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/artifact/__init__.py +0 -0
  339. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +0 -0
  340. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/cli/__init__.py +0 -0
  341. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/cli/cli.py +0 -0
  342. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/cli/commands/__init__.py +0 -0
  343. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/cli/commands/download.py +0 -0
  344. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/cli/commands/model_init.py +0 -0
  345. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/cli/utils.py +0 -0
  346. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/clients/__init__.py +0 -0
  347. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
  348. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/constants.py +0 -0
  349. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/entities.py +0 -0
  350. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/enums.py +0 -0
  351. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/exceptions.py +0 -0
  352. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/git_info.py +0 -0
  353. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/internal_namespace.py +0 -0
  354. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/__init__.py +0 -0
  355. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
  356. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
  357. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
  358. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
  359. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/artifacts/model.py +0 -0
  360. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
  361. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/image/__init__.py +0 -0
  362. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/image/constants.py +0 -0
  363. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/image/image.py +0 -0
  364. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
  365. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/image/types.py +0 -0
  366. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/plot.py +0 -0
  367. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/pydantic_base.py +0 -0
  368. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/log_types/utils.py +0 -0
  369. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/logger.py +0 -0
  370. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/mlfoundry_api.py +0 -0
  371. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/mlfoundry_run.py +0 -0
  372. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/model_framework.py +0 -0
  373. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/prompt_utils.py +0 -0
  374. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/run_utils.py +0 -0
  375. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/session.py +0 -0
  376. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/ml/validation_utils.py +0 -0
  377. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/pydantic_v1.py +0 -0
  378. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/version.py +0 -0
  379. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/__init__.py +0 -0
  380. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/container_task.py +0 -0
  381. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/map_task.py +0 -0
  382. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/python_task.py +0 -0
  383. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
  384. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
  385. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
  386. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
  387. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/task.py +0 -0
  388. {truefoundry-0.9.4 → truefoundry-0.10.0}/truefoundry/workflow/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truefoundry
3
- Version: 0.9.4
3
+ Version: 0.10.0
4
4
  Summary: TrueFoundry CLI
5
5
  Author-email: TrueFoundry Team <abhishek@truefoundry.com>
6
6
  Requires-Python: <3.14,>=3.8.1
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "truefoundry"
3
- version = "0.9.4" # This is a placeholder version, it will be replaced when releasing
3
+ version = "0.10.0" # This is a placeholder version, it will be replaced when releasing
4
4
  requires-python = ">=3.8.1,<3.14"
5
5
  description = "TrueFoundry CLI"
6
6
  authors = [{ name = "TrueFoundry Team", email = "abhishek@truefoundry.com" }]
@@ -178,7 +178,7 @@ warn_required_dynamic_aliases = true
178
178
  [tool.pytest.ini_options]
179
179
  env = [
180
180
  "TFY_PYTHONBUILD_PYTHON_IMAGE_REPO=docker.io/truefoundrycloud/test/python",
181
- "TFY_SPARK_BUILD_SPARK_IMAGE_REPO=apache/spark",
181
+ "TFY_SPARK_BUILD_SPARK_IMAGE_REPO=public.ecr.aws/bitnami/spark",
182
182
  ]
183
183
 
184
184
  [tool.uv]
@@ -65,7 +65,8 @@ class TrueFoundrySdkEnv(BaseSettings):
65
65
  # Fo customizing the python image used for building via PythonBuild
66
66
  TFY_PYTHONBUILD_PYTHON_IMAGE_REPO: str = "public.ecr.aws/docker/library/python"
67
67
 
68
- TFY_SPARK_BUILD_SPARK_IMAGE_REPO: str = "apache/spark"
68
+ # TODO(gw): Use another image with more linient rate limits
69
+ TFY_SPARK_BUILD_SPARK_IMAGE_REPO: str = "public.ecr.aws/bitnami/spark"
69
70
 
70
71
  # For local development, this enables futher configuration via _TFYServersConfig
71
72
  TFY_CLI_LOCAL_DEV_MODE: bool = False
@@ -113,6 +113,9 @@ from truefoundry.deploy.v2.lib.patched_models import (
113
113
  ServiceAutoscaling,
114
114
  SlackBot,
115
115
  SlackWebhook,
116
+ SparkBuild,
117
+ SparkImage,
118
+ SparkImageBuild,
116
119
  SparkJobJavaEntrypoint,
117
120
  SparkJobPythonEntrypoint,
118
121
  SparkJobScalaEntrypoint,
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: application.json
3
- # timestamp: 2025-06-08T14:28:34+00:00
3
+ # timestamp: 2025-06-09T12:01:27+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -643,7 +643,7 @@ class PythonBuild(BaseModel):
643
643
  )
644
644
  cuda_version: Optional[
645
645
  constr(
646
- regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8)$"
646
+ regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9)$"
647
647
  )
648
648
  ] = Field(
649
649
  None,
@@ -840,7 +840,7 @@ class SlackWebhook(BaseModel):
840
840
  )
841
841
 
842
842
 
843
- class SparkBuildSpec(BaseModel):
843
+ class SparkBuild(BaseModel):
844
844
  """
845
845
  Describes that we are using python to build a container image with a specific python version and pip packages installed.
846
846
  """
@@ -850,12 +850,6 @@ class SparkBuildSpec(BaseModel):
850
850
  "3.5.2",
851
851
  description="Spark version should match the spark version installed in the image.",
852
852
  )
853
- python_version: Optional[constr(regex=r"^\d+(\.\d+){1,2}([\-\.a-z0-9]+)?$")] = (
854
- Field(
855
- None,
856
- description="Python version to run your application. Should be one of the tags listed on [Official Python Docker Page](https://hub.docker.com/_/python)",
857
- )
858
- )
859
853
  build_context_path: str = Field(
860
854
  "./", description="Build path relative to project root path."
861
855
  )
@@ -863,14 +857,6 @@ class SparkBuildSpec(BaseModel):
863
857
  None,
864
858
  description="Path to `requirements.txt` relative to\n`Path to build context`",
865
859
  )
866
- pip_packages: Optional[List[str]] = Field(
867
- None,
868
- description='Define pip package requirements.\nIn Python/YAML E.g. ["fastapi>=0.90,<1.0", "uvicorn"]',
869
- )
870
- apt_packages: Optional[List[str]] = Field(
871
- None,
872
- description='Debian packages to install via `apt get`.\nIn Python/YAML E.g. ["git", "ffmpeg", "htop"]',
873
- )
874
860
 
875
861
 
876
862
  class SparkDriverConfig(BaseModel):
@@ -897,7 +883,7 @@ class SparkImage(BaseModel):
897
883
  Describes that we are using a pre-built image stored in a Docker Image registry
898
884
  """
899
885
 
900
- type: Literal["image"] = Field(..., description="")
886
+ type: Literal["spark-image"] = Field(..., description="")
901
887
  spark_version: str = Field(
902
888
  "3.5.2",
903
889
  description="Spark version should match the spark version installed in the image.",
@@ -912,6 +898,20 @@ class SparkImage(BaseModel):
912
898
  )
913
899
 
914
900
 
901
+ class SparkImageBuild(BaseModel):
902
+ """
903
+ Describes that we are building a new image based on the spec
904
+ """
905
+
906
+ type: Literal["spark-image-build"] = Field(..., description="")
907
+ docker_registry: Optional[constr(regex=r"^\S+$")] = Field(
908
+ None,
909
+ description="FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page",
910
+ )
911
+ build_source: GitSource
912
+ build_spec: SparkBuild
913
+
914
+
915
915
  class SparkJobJavaEntrypoint(BaseModel):
916
916
  type: Literal["java"] = Field(..., description="")
917
917
  main_application_file: str = Field(
@@ -1011,7 +1011,7 @@ class TaskPythonBuild(BaseModel):
1011
1011
  )
1012
1012
  cuda_version: Optional[
1013
1013
  constr(
1014
- regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8)$"
1014
+ regex=r"^((\d+\.\d+(\.\d+)?-cudnn\d+-(runtime|devel)-ubuntu\d+\.\d+)|11\.0-cudnn8|11\.1-cudnn8|11\.2-cudnn8|11\.3-cudnn8|11\.4-cudnn8|11\.5-cudnn8|11\.6-cudnn8|11\.7-cudnn8|11\.8-cudnn8|12\.0-cudnn8|12\.1-cudnn8|12\.2-cudnn8|12\.3-cudnn9|12\.4-cudnn9|12\.5-cudnn9|12\.6-cudnn9)$"
1015
1015
  )
1016
1016
  ] = Field(
1017
1017
  None,
@@ -1432,23 +1432,6 @@ class SSHServer(BaseWorkbenchInput):
1432
1432
  )
1433
1433
 
1434
1434
 
1435
- class SparkBuild(BaseModel):
1436
- """
1437
- Describes that we are building a new image based on the spec
1438
- """
1439
-
1440
- type: Literal["build"] = Field(..., description="")
1441
- docker_registry: Optional[constr(regex=r"^\S+$")] = Field(
1442
- None,
1443
- description="FQN of the container registry. If you can't find your registry here,\nadd it through the [Integrations](/integrations?tab=docker-registry) page",
1444
- )
1445
- build_source: Union[GitSource, LocalSource] = Field(..., description="")
1446
- build_spec: Union[SparkBuildSpec, PythonBuild] = Field(
1447
- ...,
1448
- description="Instructions to build a container image out of the build source",
1449
- )
1450
-
1451
-
1452
1435
  class SparkExecutorConfig(BaseModel):
1453
1436
  instances: Union[SparkExecutorFixedInstances, SparkExecutorDynamicScaling] = Field(
1454
1437
  {"type": "fixed", "count": 1}, description=""
@@ -1461,7 +1444,7 @@ class SparkJob(BaseModel):
1461
1444
  name: constr(regex=r"^[a-z](?:[a-z0-9]|-(?!-)){1,30}[a-z0-9]$") = Field(
1462
1445
  ..., description="Name of the job"
1463
1446
  )
1464
- image: Union[SparkImage, SparkBuild] = Field(
1447
+ image: Union[SparkImage, SparkImageBuild] = Field(
1465
1448
  ...,
1466
1449
  description="The image to use for driver and executors. Must have spark installed. Spark version must match the version in the image.",
1467
1450
  )
@@ -2,8 +2,8 @@ from typing import Any, Dict, List, Optional, Union
2
2
 
3
3
  from truefoundry.deploy._autogen.models import (
4
4
  DockerFileBuild,
5
- SparkBuildSpec,
6
5
  PythonBuild,
6
+ SparkBuild,
7
7
  TaskDockerFileBuild,
8
8
  TaskPythonBuild,
9
9
  )
@@ -21,7 +21,7 @@ class _BuildConfig(BaseModel):
21
21
  NotebookImageBuild,
22
22
  TaskPythonBuild,
23
23
  TaskDockerFileBuild,
24
- SparkBuildSpec,
24
+ SparkBuild,
25
25
  ] = Field(discriminator="type")
26
26
 
27
27
 
@@ -3,7 +3,8 @@ import shutil
3
3
  from tempfile import TemporaryDirectory
4
4
  from typing import List, Optional
5
5
 
6
- from truefoundry.deploy._autogen.models import DockerFileBuild, SparkBuildSpec
6
+ from truefoundry.common.constants import PythonPackageManager
7
+ from truefoundry.deploy._autogen.models import DockerFileBuild, SparkBuild
7
8
  from truefoundry.deploy.builder.builders import dockerfile
8
9
  from truefoundry.deploy.builder.builders.tfy_spark_buildpack.dockerfile_template import (
9
10
  generate_dockerfile_content,
@@ -14,13 +15,14 @@ __all__ = ["generate_dockerfile_content", "build"]
14
15
 
15
16
 
16
17
  def _convert_to_dockerfile_build_config(
17
- build_configuration: SparkBuildSpec,
18
+ build_configuration: SparkBuild,
18
19
  dockerfile_path: str,
19
20
  mount_python_package_manager_conf_secret: bool = False,
20
21
  ) -> DockerFileBuild:
21
22
  dockerfile_content = generate_dockerfile_content(
22
23
  build_configuration=build_configuration,
23
24
  mount_python_package_manager_conf_secret=mount_python_package_manager_conf_secret,
25
+ package_manager=PythonPackageManager.PIP.value,
24
26
  )
25
27
  with open(dockerfile_path, "w", encoding="utf8") as fp:
26
28
  fp.write(dockerfile_content)
@@ -34,27 +36,28 @@ def _convert_to_dockerfile_build_config(
34
36
 
35
37
  def build(
36
38
  tag: str,
37
- build_configuration: SparkBuildSpec,
39
+ build_configuration: SparkBuild,
38
40
  extra_opts: Optional[List[str]] = None,
39
41
  ):
40
- if not build_configuration.spark_version:
41
- raise ValueError(
42
- "`spark_version` is required for `tfy-spark-buildpack` builder"
43
- )
44
42
  mount_python_package_manager_conf_secret = (
45
43
  has_python_package_manager_conf_secret(extra_opts) if extra_opts else False
46
44
  )
47
-
48
- # Copy execute_notebook.py to the build context
49
- execute_notebook_src = os.path.join(os.path.dirname(__file__), "execute_notebook.py")
50
- execute_notebook_dst = os.path.join(build_configuration.build_context_path, "execute_notebook.py")
51
-
52
- # Track if we copied the file to clean it up later
53
- copied_execute_notebook = False
54
- if not os.path.exists(execute_notebook_dst):
55
- shutil.copy2(execute_notebook_src, execute_notebook_dst)
56
- copied_execute_notebook = True
57
-
45
+
46
+ # Copy tfy_execute_notebook.py to the build context
47
+ execute_notebook_src = os.path.join(
48
+ os.path.dirname(__file__), "tfy_execute_notebook.py"
49
+ )
50
+ execute_notebook_dst = os.path.join(
51
+ build_configuration.build_context_path, "tfy_execute_notebook.py"
52
+ )
53
+
54
+ # Verify the source file exists before copying
55
+ if not os.path.isfile(execute_notebook_src):
56
+ raise FileNotFoundError(f"Required file not found: {execute_notebook_src}")
57
+
58
+ # Always copy the file, overwrite if exists
59
+ shutil.copy2(execute_notebook_src, execute_notebook_dst)
60
+
58
61
  try:
59
62
  with TemporaryDirectory() as local_dir:
60
63
  docker_build_configuration = _convert_to_dockerfile_build_config(
@@ -69,7 +72,7 @@ def build(
69
72
  )
70
73
  finally:
71
74
  # Clean up the copied file if we copied it
72
- if copied_execute_notebook and os.path.exists(execute_notebook_dst):
75
+ if os.path.exists(execute_notebook_dst):
73
76
  try:
74
77
  os.remove(execute_notebook_dst)
75
78
  except OSError:
@@ -1,10 +1,10 @@
1
1
  import shlex
2
- from typing import Dict, List, Optional
2
+ from typing import List, Optional
3
3
 
4
4
  from mako.template import Template
5
5
 
6
6
  from truefoundry.common.constants import ENV_VARS, PythonPackageManager
7
- from truefoundry.deploy._autogen.models import SparkBuildSpec
7
+ from truefoundry.deploy._autogen.models import SparkBuild
8
8
  from truefoundry.deploy.builder.constants import (
9
9
  PIP_CONF_BUILDKIT_SECRET_MOUNT,
10
10
  PIP_CONF_SECRET_MOUNT_AS_ENV,
@@ -17,21 +17,20 @@ from truefoundry.deploy.v2.lib.patched_models import (
17
17
 
18
18
  # TODO (chiragjn): Switch to a non-root user inside the container
19
19
 
20
- DEFAULT_PYTHON_IMAGE_REPO = "apache/spark"
21
-
22
20
  _POST_PYTHON_INSTALL_TEMPLATE = """
23
- % if apt_install_command is not None:
24
- RUN ${apt_install_command}
25
- % endif
26
21
  % if requirements_path is not None:
27
22
  COPY ${requirements_path} ${requirements_destination_path}
28
23
  % endif
29
24
  % if python_packages_install_command is not None:
30
25
  RUN ${package_manager_config_secret_mount} ${python_packages_install_command}
31
26
  % endif
27
+ USER spark
32
28
  COPY . /app
33
29
  WORKDIR /app
34
- USER spark
30
+ """
31
+
32
+ _POST_USER_TEMPLATE = """
33
+ COPY tfy_execute_notebook.py /app/tfy_execute_notebook.py
35
34
  """
36
35
 
37
36
  DOCKERFILE_TEMPLATE = Template(
@@ -41,25 +40,12 @@ USER root
41
40
  RUN apt update && \
42
41
  DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends git && \
43
42
  rm -rf /var/lib/apt/lists/*
44
- COPY execute_notebook.py /app/execute_notebook.py
45
43
  """
46
- # + _POST_PYTHON_INSTALL_TEMPLATE
44
+ + _POST_PYTHON_INSTALL_TEMPLATE
45
+ + _POST_USER_TEMPLATE
47
46
  )
48
47
 
49
- ADDITIONAL_PIP_PACKAGES = ['papermill']
50
-
51
- def generate_apt_install_command(apt_packages: Optional[List[str]]) -> Optional[str]:
52
- packages_list = None
53
- if apt_packages:
54
- packages_list = " ".join(p.strip() for p in apt_packages if p.strip())
55
- if not packages_list:
56
- return None
57
- apt_update_command = "apt update"
58
- apt_install_command = f"DEBIAN_FRONTEND=noninteractive apt install -y --no-install-recommends {packages_list}"
59
- clear_apt_lists_command = "rm -rf /var/lib/apt/lists/*"
60
- return " && ".join(
61
- [apt_update_command, apt_install_command, clear_apt_lists_command]
62
- )
48
+ ADDITIONAL_PIP_PACKAGES = ["papermill>=2.6.0,<2.7.0"]
63
49
 
64
50
 
65
51
  def generate_pip_install_command(
@@ -67,12 +53,12 @@ def generate_pip_install_command(
67
53
  pip_packages: Optional[List[str]],
68
54
  mount_pip_conf_secret: bool = False,
69
55
  ) -> Optional[str]:
70
- upgrade_pip_command = "python -m pip install -U pip setuptools wheel"
56
+ upgrade_pip_command = "python3 -m pip install -U pip setuptools wheel"
71
57
  envs = []
72
58
  if mount_pip_conf_secret:
73
59
  envs.append(PIP_CONF_SECRET_MOUNT_AS_ENV)
74
60
 
75
- command = ["python", "-m", "pip", "install", "--use-pep517", "--no-cache-dir"]
61
+ command = ["python3", "-m", "pip", "install", "--use-pep517", "--no-cache-dir"]
76
62
  args = []
77
63
  if requirements_path:
78
64
  args.append("-r")
@@ -96,7 +82,7 @@ def generate_uv_pip_install_command(
96
82
  pip_packages: Optional[List[str]],
97
83
  mount_uv_conf_secret: bool = False,
98
84
  ) -> Optional[str]:
99
- upgrade_pip_command = "python -m pip install -U pip setuptools wheel"
85
+ upgrade_pip_command = "python3 -m pip install -U pip setuptools wheel"
100
86
  uv_mount = f"--mount=from={ENV_VARS.TFY_PYTHON_BUILD_UV_IMAGE_URI},source=/uv,target=/usr/local/bin/uv"
101
87
  envs = [
102
88
  "UV_LINK_MODE=copy",
@@ -128,7 +114,7 @@ def generate_uv_pip_install_command(
128
114
 
129
115
 
130
116
  def generate_dockerfile_content(
131
- build_configuration: SparkBuildSpec,
117
+ build_configuration: SparkBuild,
132
118
  package_manager: str = ENV_VARS.TFY_PYTHON_BUILD_PACKAGE_MANAGER,
133
119
  mount_python_package_manager_conf_secret: bool = False,
134
120
  ) -> str:
@@ -144,32 +130,25 @@ def generate_dockerfile_content(
144
130
  raise ValueError(
145
131
  "`spark_version` is required for `tfy-spark-buildpack` builder"
146
132
  )
147
-
148
- # Handle pip packages - SparkBuildSpec pip_packages is Optional[List[str]], so we need to handle None
149
- pip_packages = build_configuration.pip_packages or []
150
-
133
+
151
134
  if package_manager == PythonPackageManager.PIP.value:
152
135
  python_packages_install_command = generate_pip_install_command(
153
136
  requirements_path=requirements_destination_path,
154
- pip_packages=pip_packages + ADDITIONAL_PIP_PACKAGES,
137
+ pip_packages=ADDITIONAL_PIP_PACKAGES,
155
138
  mount_pip_conf_secret=mount_python_package_manager_conf_secret,
156
139
  )
157
140
  elif package_manager == PythonPackageManager.UV.value:
158
141
  python_packages_install_command = generate_uv_pip_install_command(
159
142
  requirements_path=requirements_destination_path,
160
- pip_packages=pip_packages + ADDITIONAL_PIP_PACKAGES,
143
+ pip_packages=ADDITIONAL_PIP_PACKAGES,
161
144
  mount_uv_conf_secret=mount_python_package_manager_conf_secret,
162
145
  )
163
146
  else:
164
147
  raise ValueError(f"Unsupported package manager: {package_manager}")
165
148
 
166
- apt_install_command = generate_apt_install_command(
167
- apt_packages=build_configuration.apt_packages
168
- )
169
149
  template_args = {
170
150
  "spark_image_repo": ENV_VARS.TFY_SPARK_BUILD_SPARK_IMAGE_REPO,
171
151
  "spark_version": build_configuration.spark_version,
172
- "apt_install_command": apt_install_command,
173
152
  "requirements_path": requirements_path,
174
153
  "requirements_destination_path": requirements_destination_path,
175
154
  "python_packages_install_command": python_packages_install_command,
@@ -0,0 +1,56 @@
1
+ # This script is used as the main application file for spark applications
2
+ # when the application to be run is a notebook, the actual notebook to be
3
+ # executed is passed as an argument to this script.
4
+
5
+
6
+ import argparse
7
+ import sys
8
+
9
+ import papermill as pm
10
+
11
+
12
+ def execute_notebook(notebook_path, output_path="output.ipynb", parameters=None):
13
+ """
14
+ Execute a Jupyter notebook using papermill.
15
+
16
+ Args:
17
+ notebook_path: Path to the input notebook
18
+ output_path: Path for the output notebook
19
+ parameters: Dictionary of parameters to pass to the notebook
20
+
21
+ Raises:
22
+ Exception: If notebook execution fails
23
+ """
24
+ if parameters is None:
25
+ parameters = {}
26
+
27
+ print(f"Starting execution of notebook: {notebook_path}")
28
+ pm.execute_notebook(
29
+ notebook_path,
30
+ output_path,
31
+ parameters=parameters,
32
+ # TODO(gw): Replace with kernel name for venv
33
+ kernel_name="python3",
34
+ )
35
+ print(f"Successfully executed notebook: {notebook_path}")
36
+
37
+
38
+ if __name__ == "__main__":
39
+ parser = argparse.ArgumentParser(
40
+ description="Execute a Jupyter notebook using papermill for Spark applications"
41
+ )
42
+ parser.add_argument("notebook_path", help="Path to the notebook file to execute")
43
+
44
+ args = parser.parse_args()
45
+
46
+ # TODO(gw): Add support for passing parameters to the notebook
47
+ try:
48
+ execute_notebook(args.notebook_path)
49
+ except Exception as e:
50
+ print(f"Error executing notebook {args.notebook_path}: {e}")
51
+ print(
52
+ "Exiting with status code 1 to signal failure to parent process/orchestrator"
53
+ )
54
+ sys.exit(1)
55
+
56
+ # TODO(gw): Publish the output notebook to blob storage from where it could be rendered
@@ -159,6 +159,26 @@ class PythonBuild(models.PythonBuild, PatchedModelBase):
159
159
  return values
160
160
 
161
161
 
162
+ class SparkBuild(models.SparkBuild, PatchedModelBase):
163
+ type: Literal["tfy-spark-buildpack"] = "tfy-spark-buildpack"
164
+
165
+ @root_validator
166
+ def validate_values(cls, values):
167
+ _resolve_requirements_path(
168
+ build_context_path=values.get("build_context_path") or "./",
169
+ requirements_path=values.get("requirements_path"),
170
+ )
171
+ return values
172
+
173
+
174
+ class SparkImageBuild(models.SparkImageBuild, PatchedModelBase):
175
+ type: Literal["spark-image-build"] = "spark-image-build"
176
+
177
+
178
+ class SparkImage(models.SparkImage, PatchedModelBase):
179
+ type: Literal["spark-image"] = "spark-image"
180
+
181
+
162
182
  class RemoteSource(models.RemoteSource, PatchedModelBase):
163
183
  type: Literal["remote"] = "remote"
164
184
 
@@ -1,21 +0,0 @@
1
- # This script is used as the main application file for spark applications
2
- # when the application to be run is a notebook, the actual notebook to be
3
- # executed is passed as an argument to this script.
4
-
5
-
6
- import papermill as pm
7
- import sys
8
-
9
- if __name__ == "__main__":
10
-
11
- if len(sys.argv) != 2:
12
- print("Usage: python execute_notebook.py <notebook_path>")
13
- sys.exit(1)
14
-
15
- notebook_path = sys.argv[1]
16
-
17
- pm.execute_notebook(
18
- notebook_path,
19
- "output.ipynb",
20
- parameters=dict(),
21
- )
File without changes
File without changes