truefoundry 0.7.0rc3__tar.gz → 0.7.0rc4__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 (383) hide show
  1. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/PKG-INFO +1 -1
  2. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/pyproject.toml +1 -1
  3. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/__main__.py +2 -0
  4. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/entities.py +6 -2
  5. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/session.py +8 -3
  6. truefoundry-0.7.0rc4/truefoundry/deploy/cli/commands/get_command.py +29 -0
  7. truefoundry-0.7.0rc4/truefoundry/deploy/cli/commands/k8s_exec_credential_command.py +64 -0
  8. truefoundry-0.7.0rc4/truefoundry/deploy/cli/commands/kubeconfig_command.py +88 -0
  9. truefoundry-0.7.0rc4/truefoundry/deploy/cli/commands/utils.py +118 -0
  10. truefoundry-0.7.0rc4/truefoundry/deploy/io/no_output_callback.py +27 -0
  11. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/session.py +4 -2
  12. truefoundry-0.7.0rc3/truefoundry/deploy/cli/commands/get_command.py +0 -216
  13. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/.gitignore +0 -0
  14. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/README.md +0 -0
  15. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/__init__.py +0 -0
  16. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/_client.py +0 -0
  17. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/__init__.py +0 -0
  18. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/agents/__init__.py +0 -0
  19. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/agents/base.py +0 -0
  20. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/agents/developer.py +0 -0
  21. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
  22. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/agents/tester.py +0 -0
  23. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/cli.py +0 -0
  24. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/constants.py +0 -0
  25. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/exception.py +0 -0
  26. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/logger.py +0 -0
  27. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/__init__.py +0 -0
  28. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/ask.py +0 -0
  29. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/base.py +0 -0
  30. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/commit.py +0 -0
  31. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/docker_build.py +0 -0
  32. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/docker_run.py +0 -0
  33. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
  34. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/list_files.py +0 -0
  35. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/read_file.py +0 -0
  36. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/send_request.py +0 -0
  37. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/tools/write_file.py +0 -0
  38. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/utils/client.py +0 -0
  39. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/utils/diff.py +0 -0
  40. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
  41. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/__init__.py +0 -0
  42. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/config.py +0 -0
  43. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/console.py +0 -0
  44. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/const.py +0 -0
  45. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/display_util.py +0 -0
  46. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/cli/util.py +0 -0
  47. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/__init__.py +0 -0
  48. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/auth_service_client.py +0 -0
  49. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/constants.py +0 -0
  50. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/credential_file_manager.py +0 -0
  51. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/credential_provider.py +0 -0
  52. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/exceptions.py +0 -0
  53. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/request_utils.py +0 -0
  54. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/servicefoundry_client.py +0 -0
  55. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/storage_provider_utils.py +0 -0
  56. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/types.py +0 -0
  57. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/utils.py +0 -0
  58. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/common/warnings.py +0 -0
  59. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/__init__.py +0 -0
  60. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/_autogen/models.py +0 -0
  61. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/__init__.py +0 -0
  62. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/builders/__init__.py +0 -0
  63. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
  64. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +0 -0
  65. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
  66. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +0 -0
  67. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +0 -0
  68. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/constants.py +0 -0
  69. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/docker_service.py +0 -0
  70. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/builder/utils.py +0 -0
  71. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/__init__.py +0 -0
  72. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/__init__.py +0 -0
  73. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
  74. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/build_command.py +0 -0
  75. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/create_command.py +0 -0
  76. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
  77. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
  78. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/deploy_init_command.py +0 -0
  79. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/list_command.py +0 -0
  80. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/login_command.py +0 -0
  81. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
  82. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
  83. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
  84. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
  85. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/redeploy_command.py +0 -0
  86. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
  87. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
  88. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/core/__init__.py +0 -0
  89. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/core/login.py +0 -0
  90. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/core/logout.py +0 -0
  91. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/io/__init__.py +0 -0
  92. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/io/output_callback.py +0 -0
  93. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/io/rich_output_callback.py +0 -0
  94. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/__init__.py +0 -0
  95. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/clients/__init__.py +0 -0
  96. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/clients/servicefoundry_client.py +0 -0
  97. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/const.py +0 -0
  98. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/dao/__init__.py +0 -0
  99. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/dao/application.py +0 -0
  100. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/dao/apply.py +0 -0
  101. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/dao/delete.py +0 -0
  102. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/dao/version.py +0 -0
  103. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/dao/workspace.py +0 -0
  104. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/logs_utils.py +0 -0
  105. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/messages.py +0 -0
  106. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/model/__init__.py +0 -0
  107. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/model/entity.py +0 -0
  108. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/util.py +0 -0
  109. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/lib/win32.py +0 -0
  110. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/python_deploy_codegen.py +0 -0
  111. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/__init__.py +0 -0
  112. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/__init__.py +0 -0
  113. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/deploy.py +0 -0
  114. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
  115. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
  116. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/models.py +0 -0
  117. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/patched_models.py +0 -0
  118. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/deploy/v2/lib/source.py +0 -0
  119. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/logger.py +0 -0
  120. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/__init__.py +0 -0
  121. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/__init__.py +0 -0
  122. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/__init__.py +0 -0
  123. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/__init__.py +0 -0
  124. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/auth_api.py +0 -0
  125. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/deprecated_api.py +0 -0
  126. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/experiments_api.py +0 -0
  127. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/generate_code_snippet_api.py +0 -0
  128. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/health_api.py +0 -0
  129. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/metrics_api.py +0 -0
  130. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/mlfoundry_artifacts_api.py +0 -0
  131. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/run_artifacts_api.py +0 -0
  132. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api/runs_api.py +0 -0
  133. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api_client.py +0 -0
  134. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/api_response.py +0 -0
  135. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/configuration.py +0 -0
  136. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/exceptions.py +0 -0
  137. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/__init__.py +0 -0
  138. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/agent_app.py +0 -0
  139. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/agent_manifest.py +0 -0
  140. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_manifest.py +0 -0
  141. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
  142. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/agent_with_fqn.py +0 -0
  143. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/apply_request_dto.py +0 -0
  144. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/apply_response_dto.py +0 -0
  145. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_dto.py +0 -0
  146. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_manifest.py +0 -0
  147. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_path.py +0 -0
  148. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_response_dto.py +0 -0
  149. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_type.py +0 -0
  150. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_version_dto.py +0 -0
  151. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_version_response_dto.py +0 -0
  152. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_version_serialization_format.py +0 -0
  153. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/artifact_version_status.py +0 -0
  154. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/assistant_message.py +0 -0
  155. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
  156. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
  157. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/blob_storage_reference.py +0 -0
  158. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/body_get_search_runs_get.py +0 -0
  159. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest.py +0 -0
  160. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/chat_prompt_manifest_messages_inner.py +0 -0
  161. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/columns_dto.py +0 -0
  162. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/command.py +0 -0
  163. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/content.py +0 -0
  164. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/content1.py +0 -0
  165. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/content2.py +0 -0
  166. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/content2_any_of_inner.py +0 -0
  167. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_artifact_request_dto.py +0 -0
  168. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_artifact_response_dto.py +0 -0
  169. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_artifact_version_request_dto.py +0 -0
  170. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_artifact_version_response_dto.py +0 -0
  171. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_dataset_request_dto.py +0 -0
  172. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_experiment_request_dto.py +0 -0
  173. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_experiment_response_dto.py +0 -0
  174. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_model_version_request_dto.py +0 -0
  175. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
  176. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
  177. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
  178. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
  179. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
  180. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_run_request_dto.py +0 -0
  181. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_run_response_dto.py +0 -0
  182. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
  183. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/data_directory_manifest.py +0 -0
  184. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/dataset_dto.py +0 -0
  185. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/dataset_response_dto.py +0 -0
  186. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
  187. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/delete_dataset_request_dto.py +0 -0
  188. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
  189. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/delete_model_version_request_dto.py +0 -0
  190. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/delete_run_request.py +0 -0
  191. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/delete_tag_request_dto.py +0 -0
  192. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/experiment_dto.py +0 -0
  193. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/experiment_id_request_dto.py +0 -0
  194. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/experiment_response_dto.py +0 -0
  195. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/experiment_tag_dto.py +0 -0
  196. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/export_deployment_files_request_dto.py +0 -0
  197. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/external_blob_storage_source.py +0 -0
  198. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/fast_ai_framework.py +0 -0
  199. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/file_info_dto.py +0 -0
  200. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
  201. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/framework.py +0 -0
  202. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_artifact_version_aliases_response_dto.py +0 -0
  203. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_experiment_response_dto.py +0 -0
  204. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_latest_run_log_response_dto.py +0 -0
  205. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_metric_history_response.py +0 -0
  206. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
  207. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
  208. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
  209. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
  210. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
  211. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
  212. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
  213. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
  214. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/get_tenant_id_response_dto.py +0 -0
  215. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/gluon_framework.py +0 -0
  216. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/h2_o_framework.py +0 -0
  217. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/http_validation_error.py +0 -0
  218. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/image_content_part.py +0 -0
  219. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/image_url.py +0 -0
  220. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/infer_method_name.py +0 -0
  221. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/keras_framework.py +0 -0
  222. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/latest_run_log_dto.py +0 -0
  223. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/library_name.py +0 -0
  224. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/light_gbm_framework.py +0 -0
  225. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_artifact_versions_request_dto.py +0 -0
  226. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_artifact_versions_response_dto.py +0 -0
  227. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_artifacts_request_dto.py +0 -0
  228. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_artifacts_response_dto.py +0 -0
  229. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_colums_response_dto.py +0 -0
  230. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_datasets_request_dto.py +0 -0
  231. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_datasets_response_dto.py +0 -0
  232. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_experiments_response_dto.py +0 -0
  233. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
  234. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
  235. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
  236. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
  237. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
  238. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_metric_history_request_dto.py +0 -0
  239. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_metric_history_response_dto.py +0 -0
  240. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_model_version_response_dto.py +0 -0
  241. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_model_versions_request_dto.py +0 -0
  242. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_models_request_dto.py +0 -0
  243. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_models_response_dto.py +0 -0
  244. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_run_artifacts_response_dto.py +0 -0
  245. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/list_run_logs_response_dto.py +0 -0
  246. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/local_artifact_source.py +0 -0
  247. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/local_model_source.py +0 -0
  248. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/log_batch_request_dto.py +0 -0
  249. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/log_metric_request_dto.py +0 -0
  250. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/log_param_request_dto.py +0 -0
  251. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/manifest.py +0 -0
  252. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/manifest1.py +0 -0
  253. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/manifest2.py +0 -0
  254. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/method.py +0 -0
  255. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/metric_collection_dto.py +0 -0
  256. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/metric_dto.py +0 -0
  257. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/mime_type.py +0 -0
  258. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_configuration.py +0 -0
  259. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_dto.py +0 -0
  260. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_manifest.py +0 -0
  261. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_response_dto.py +0 -0
  262. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_server.py +0 -0
  263. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_version_dto.py +0 -0
  264. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_version_environment.py +0 -0
  265. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/model_version_response_dto.py +0 -0
  266. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/multi_part_upload_dto.py +0 -0
  267. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/multi_part_upload_response_dto.py +0 -0
  268. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/multi_part_upload_storage_provider.py +0 -0
  269. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
  270. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/onnx_framework.py +0 -0
  271. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/openapi_spec.py +0 -0
  272. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/paddle_framework.py +0 -0
  273. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/param_dto.py +0 -0
  274. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/parameters.py +0 -0
  275. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/py_torch_framework.py +0 -0
  276. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/resolve_agent_app_response_dto.py +0 -0
  277. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/restore_run_request_dto.py +0 -0
  278. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_data_dto.py +0 -0
  279. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_dto.py +0 -0
  280. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_info_dto.py +0 -0
  281. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_log_dto.py +0 -0
  282. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_log_input_dto.py +0 -0
  283. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_response_dto.py +0 -0
  284. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/run_tag_dto.py +0 -0
  285. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/search_runs_request_dto.py +0 -0
  286. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/search_runs_response_dto.py +0 -0
  287. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/set_experiment_tag_request_dto.py +0 -0
  288. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/set_tag_request_dto.py +0 -0
  289. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/signed_url_dto.py +0 -0
  290. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/sklearn_framework.py +0 -0
  291. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/sklearn_model_schema.py +0 -0
  292. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/sklearn_serialization_format.py +0 -0
  293. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/source.py +0 -0
  294. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/source1.py +0 -0
  295. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/source2.py +0 -0
  296. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/spa_cy_framework.py +0 -0
  297. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/stats_models_framework.py +0 -0
  298. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/stop.py +0 -0
  299. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/store_run_logs_request_dto.py +0 -0
  300. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/subject.py +0 -0
  301. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/subject_type.py +0 -0
  302. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/system_message.py +0 -0
  303. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/tensor_flow_framework.py +0 -0
  304. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/text.py +0 -0
  305. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/text_content_part.py +0 -0
  306. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/transformers_framework.py +0 -0
  307. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
  308. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
  309. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/true_foundry_managed_source.py +0 -0
  310. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/update_artifact_version_request_dto.py +0 -0
  311. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/update_dataset_request_dto.py +0 -0
  312. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/update_experiment_request_dto.py +0 -0
  313. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/update_model_version_request_dto.py +0 -0
  314. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/update_run_request_dto.py +0 -0
  315. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/update_run_response_dto.py +0 -0
  316. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/url.py +0 -0
  317. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/user_message.py +0 -0
  318. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_request_dto.py +0 -0
  319. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/validate_external_storage_root_response_dto.py +0 -0
  320. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/validation_error.py +0 -0
  321. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/validation_error_loc_inner.py +0 -0
  322. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/xg_boost_framework.py +0 -0
  323. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/xg_boost_model_schema.py +0 -0
  324. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/models/xg_boost_serialization_format.py +0 -0
  325. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client/rest.py +0 -0
  326. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/client_README.md +0 -0
  327. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/entities/artifacts.py +0 -0
  328. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/models/__init__.py +0 -0
  329. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/models/exceptions.py +0 -0
  330. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/models/schema.py +0 -0
  331. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/models/signature.py +0 -0
  332. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/_autogen/models/utils.py +0 -0
  333. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/artifact/__init__.py +0 -0
  334. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +0 -0
  335. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/cli/__init__.py +0 -0
  336. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/cli/cli.py +0 -0
  337. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/cli/commands/__init__.py +0 -0
  338. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/cli/commands/download.py +0 -0
  339. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/cli/commands/model_init.py +0 -0
  340. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/cli/utils.py +0 -0
  341. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/clients/__init__.py +0 -0
  342. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
  343. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/constants.py +0 -0
  344. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/entities.py +0 -0
  345. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/enums.py +0 -0
  346. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/exceptions.py +0 -0
  347. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/git_info.py +0 -0
  348. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/internal_namespace.py +0 -0
  349. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/__init__.py +0 -0
  350. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
  351. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
  352. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
  353. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
  354. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/artifacts/model.py +0 -0
  355. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/artifacts/utils.py +0 -0
  356. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/image/__init__.py +0 -0
  357. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/image/constants.py +0 -0
  358. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/image/image.py +0 -0
  359. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
  360. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/image/types.py +0 -0
  361. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/plot.py +0 -0
  362. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/pydantic_base.py +0 -0
  363. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/log_types/utils.py +0 -0
  364. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/logger.py +0 -0
  365. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/mlfoundry_api.py +0 -0
  366. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/mlfoundry_run.py +0 -0
  367. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/model_framework.py +0 -0
  368. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/prompt_utils.py +0 -0
  369. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/run_utils.py +0 -0
  370. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/session.py +0 -0
  371. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/ml/validation_utils.py +0 -0
  372. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/pydantic_v1.py +0 -0
  373. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/version.py +0 -0
  374. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/__init__.py +0 -0
  375. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/container_task.py +0 -0
  376. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/map_task.py +0 -0
  377. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/python_task.py +0 -0
  378. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
  379. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
  380. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
  381. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
  382. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/task.py +0 -0
  383. {truefoundry-0.7.0rc3 → truefoundry-0.7.0rc4}/truefoundry/workflow/workflow.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truefoundry
3
- Version: 0.7.0rc3
3
+ Version: 0.7.0rc4
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.7.0rc3" # This is a placeholder version, it will be replaced when releasing
3
+ version = "0.7.0rc4" # 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" }]
@@ -14,6 +14,7 @@ from truefoundry.deploy.cli.commands import (
14
14
  get_delete_command,
15
15
  get_deploy_command,
16
16
  get_deploy_init_command,
17
+ get_get_command,
17
18
  get_login_command,
18
19
  get_logout_command,
19
20
  get_patch_application_command,
@@ -88,6 +89,7 @@ def create_truefoundry_cli() -> click.Group:
88
89
  cli.add_command(get_trigger_command())
89
90
  cli.add_command(get_terminate_command())
90
91
  cli.add_command(get_ml_cli())
92
+ cli.add_command(get_get_command())
91
93
 
92
94
  if not (sys.platform.startswith("win32") or sys.platform.startswith("cygwin")):
93
95
  cli.add_command(get_patch_command())
@@ -58,10 +58,14 @@ class Token(BaseModel):
58
58
  assert self.decoded_value is not None
59
59
  return self.decoded_value["tenantName"]
60
60
 
61
+ @property
62
+ def exp(self) -> int:
63
+ assert self.decoded_value is not None
64
+ return self.decoded_value["exp"]
65
+
61
66
  def is_going_to_be_expired(self, buffer_in_seconds: int = 120) -> bool:
62
67
  assert self.decoded_value is not None
63
- exp = int(self.decoded_value["exp"])
64
- return (exp - time.time()) < buffer_in_seconds
68
+ return (self.exp - time.time()) < buffer_in_seconds
65
69
 
66
70
  def to_user_info(self) -> UserInfo:
67
71
  assert self.decoded_value is not None
@@ -8,7 +8,7 @@ from truefoundry.common.credential_provider import (
8
8
  EnvCredentialProvider,
9
9
  FileCredentialProvider,
10
10
  )
11
- from truefoundry.common.entities import UserInfo
11
+ from truefoundry.common.entities import Token, UserInfo
12
12
  from truefoundry.common.utils import relogin_error_message
13
13
  from truefoundry.logger import logger
14
14
 
@@ -20,7 +20,7 @@ class Session:
20
20
  def __init__(self) -> None:
21
21
  self._closed = False
22
22
  self._cred_provider: Optional[CredentialProvider] = self._get_cred_provider()
23
- self._user_info: Optional[UserInfo] = self._cred_provider.token.to_user_info()
23
+ self._user_info: Optional[UserInfo] = self.token.to_user_info()
24
24
 
25
25
  @staticmethod
26
26
  def _get_cred_provider() -> CredentialProvider:
@@ -69,7 +69,12 @@ class Session:
69
69
  @property
70
70
  def access_token(self) -> str:
71
71
  assert self._cred_provider is not None
72
- return self._cred_provider.token.access_token
72
+ return self.token.access_token
73
+
74
+ @property
75
+ def token(self) -> Token:
76
+ assert self._cred_provider is not None
77
+ return self._cred_provider.token
73
78
 
74
79
  @property
75
80
  def tfy_host(self) -> str:
@@ -0,0 +1,29 @@
1
+ import rich_click as click
2
+
3
+ from truefoundry.cli.const import GROUP_CLS
4
+ from truefoundry.deploy.cli.commands.k8s_exec_credential_command import (
5
+ k8s_exec_credential_command,
6
+ )
7
+ from truefoundry.deploy.cli.commands.kubeconfig_command import kubeconfig_command
8
+
9
+ # TODO (chiragjn): --json should disable all non json console prints
10
+
11
+
12
+ @click.group(name="get", cls=GROUP_CLS)
13
+ def get_command():
14
+ # TODO (chiragjn): Figure out a way to update supported resources based on ENABLE_* flags
15
+ """
16
+ Get TrueFoundry resources
17
+
18
+ \b
19
+ Supported resources:
20
+ - Kubernetes Exec Credential
21
+ - Kubeconfig
22
+ """
23
+ pass
24
+
25
+
26
+ def get_get_command():
27
+ get_command.add_command(k8s_exec_credential_command)
28
+ get_command.add_command(kubeconfig_command)
29
+ return get_command
@@ -0,0 +1,64 @@
1
+ import json
2
+ from datetime import datetime, timezone
3
+ from typing import Any, Dict, Optional
4
+ from urllib.parse import urlparse
5
+
6
+ import rich_click as click
7
+
8
+ from truefoundry.cli.const import COMMAND_CLS
9
+ from truefoundry.cli.util import handle_exception_wrapper
10
+ from truefoundry.common.session import Session
11
+ from truefoundry.deploy.cli.commands.utils import (
12
+ CONTEXT_NAME_FORMAT,
13
+ get_cluster_server_url,
14
+ get_kubeconfig_content,
15
+ get_kubeconfig_path,
16
+ )
17
+ from truefoundry.deploy.io.no_output_callback import NoOutputCallBack
18
+ from truefoundry.deploy.lib.session import login
19
+
20
+
21
+ @click.command(
22
+ name="k8s-exec-credential",
23
+ cls=COMMAND_CLS,
24
+ help="Generate a Kubernetes exec credential for the specified cluster user",
25
+ )
26
+ @click.option(
27
+ "-c",
28
+ "--cluster",
29
+ type=str,
30
+ required=True,
31
+ help="The cluster id from TrueFoundry",
32
+ )
33
+ @handle_exception_wrapper
34
+ def k8s_exec_credential_command(cluster: str) -> None:
35
+ """
36
+ Generate a Kubernetes exec credential for the specified cluster.
37
+ This command retrieves the cluster server URL from the kubeconfig file,
38
+ """
39
+ path = get_kubeconfig_path()
40
+ kubeconfig: Dict[str, Any] = get_kubeconfig_content(path=path)
41
+ server_url: Optional[str] = get_cluster_server_url(kubeconfig, cluster)
42
+ if not server_url:
43
+ raise click.ClickException(
44
+ f"Context `{CONTEXT_NAME_FORMAT.format(cluster=cluster)}` for cluster `{cluster}` not found in kubeconfig. \n\nPlease run `tfy get kubeconfig --cluster {cluster}` first."
45
+ )
46
+ host: str = f"{urlparse(server_url).scheme}://{urlparse(server_url).netloc}"
47
+ login(host=host, output_hook=NoOutputCallBack())
48
+
49
+ session = Session.new()
50
+ token: str = session.access_token
51
+
52
+ exec_credential: Dict[str, Any] = {
53
+ "kind": "ExecCredential",
54
+ "apiVersion": "client.authentication.k8s.io/v1beta1",
55
+ "spec": {},
56
+ "status": {
57
+ "expirationTimestamp": datetime.fromtimestamp(
58
+ session.token.exp, tz=timezone.utc
59
+ ).strftime("%Y-%m-%dT%H:%M:%SZ"),
60
+ "token": token,
61
+ },
62
+ }
63
+
64
+ print(json.dumps(exec_credential, indent=4))
@@ -0,0 +1,88 @@
1
+ from typing import Any, Dict, Optional
2
+ from urllib.parse import urljoin
3
+
4
+ import rich_click as click
5
+ from rich.console import Console
6
+
7
+ from truefoundry.cli.const import COMMAND_CLS
8
+ from truefoundry.cli.util import handle_exception_wrapper
9
+ from truefoundry.common.session import Session
10
+ from truefoundry.deploy.cli.commands.utils import (
11
+ CONTEXT_NAME_FORMAT,
12
+ add_update_cluster_context,
13
+ get_cluster_server_url,
14
+ get_kubeconfig_content,
15
+ get_kubeconfig_path,
16
+ save_kubeconfig,
17
+ )
18
+
19
+ console = Console()
20
+
21
+
22
+ def construct_k8s_proxy_server(host: str, cluster: str) -> str:
23
+ """Construct the Kubernetes proxy server URL."""
24
+ return urljoin(host, f"api/svc/v1/k8s/proxy/{cluster}")
25
+
26
+
27
+ @click.command(
28
+ name="kubeconfig",
29
+ cls=COMMAND_CLS,
30
+ help="Update kubeconfig with TrueFoundry cluster context",
31
+ )
32
+ @click.option(
33
+ "-c",
34
+ "--cluster",
35
+ type=str,
36
+ required=True,
37
+ help="The cluster id from TrueFoundry",
38
+ )
39
+ @click.option(
40
+ "--overwrite",
41
+ is_flag=True,
42
+ default=False,
43
+ show_default=True,
44
+ help="Overwrite if cluster entry already exists",
45
+ )
46
+ @handle_exception_wrapper
47
+ def kubeconfig_command(cluster: str, overwrite: bool = False) -> None:
48
+ """
49
+ Execute kubectl commands with authentication through the TrueFoundry CLI.
50
+ """
51
+ session = Session.new()
52
+
53
+ path = get_kubeconfig_path()
54
+ kubeconfig: Dict[str, Any] = get_kubeconfig_content(path=path)
55
+ server_url: Optional[str] = get_cluster_server_url(kubeconfig, cluster)
56
+ if server_url is not None and not overwrite:
57
+ should_update = click.confirm(
58
+ text=f"Context `{CONTEXT_NAME_FORMAT.format(cluster=cluster)}` for cluster `{cluster}` already exists in kubeconfig.\nDo you want to update the context?",
59
+ default=False,
60
+ err=True,
61
+ )
62
+ if not should_update:
63
+ console.print(
64
+ "Existing context found. Use --overwrite to force update the context."
65
+ )
66
+ return
67
+
68
+ k8s_proxy_server: str = construct_k8s_proxy_server(session.tfy_host, cluster)
69
+
70
+ context_name: str = add_update_cluster_context(
71
+ kubeconfig,
72
+ cluster,
73
+ k8s_proxy_server,
74
+ exec_command=[
75
+ "tfy",
76
+ "--json",
77
+ "get",
78
+ "k8s-exec-credential",
79
+ "--cluster",
80
+ cluster,
81
+ ],
82
+ )
83
+
84
+ save_kubeconfig(kubeconfig, path=path)
85
+ console.print(
86
+ f"Updated kubeconfig at {str(path)!r} with context {context_name!r} for cluster {cluster!r}\n"
87
+ f"Run `kubectl config use-context {context_name}` to use this context\n"
88
+ )
@@ -0,0 +1,118 @@
1
+ import os
2
+ from pathlib import Path
3
+ from typing import Any, Dict, List, Optional
4
+
5
+ import yaml
6
+
7
+ DEFAULT_KUBECONFIG_PATH: Path = Path.home() / ".kube" / "config"
8
+ CLUSTER_NAME_FORMAT: str = "tfy-{cluster}-cluster"
9
+ USER_NAME_FORMAT: str = "tfy-{cluster}-user"
10
+ CONTEXT_NAME_FORMAT: str = "tfy-{cluster}-context"
11
+ KUBE_CONFIG_CONTENT = {
12
+ "apiVersion": "v1",
13
+ "kind": "Config",
14
+ "clusters": [],
15
+ "users": [],
16
+ "contexts": [],
17
+ }
18
+
19
+
20
+ def get_kubeconfig_path() -> Path:
21
+ """
22
+ Returns the kubeconfig path to use.
23
+ If KUBECONFIG is set, returns the first path from the environment variable.
24
+ Otherwise, returns the default kubeconfig path.
25
+ """
26
+ kubeconfig_env = os.environ.get("KUBECONFIG")
27
+ if kubeconfig_env:
28
+ # Use the first path in KUBECONFIG if multiple are provided
29
+ first_path = kubeconfig_env.split(os.pathsep)[0]
30
+ return Path(first_path)
31
+ return DEFAULT_KUBECONFIG_PATH
32
+
33
+
34
+ def get_kubeconfig_content(path: Path = DEFAULT_KUBECONFIG_PATH) -> Dict[str, Any]:
35
+ if path.exists():
36
+ with open(path, "r") as f:
37
+ return yaml.safe_load(f) or KUBE_CONFIG_CONTENT
38
+ else:
39
+ return KUBE_CONFIG_CONTENT
40
+
41
+
42
+ def save_kubeconfig(config: Dict[str, Any], path: Path) -> None:
43
+ config["apiVersion"] = "v1"
44
+ config["kind"] = "Config"
45
+ path.parent.mkdir(parents=True, exist_ok=True)
46
+ with open(path, "w") as f:
47
+ yaml.safe_dump(config, f, default_flow_style=False)
48
+
49
+
50
+ def add_update_cluster_context(
51
+ config: Dict[str, Any],
52
+ cluster: str,
53
+ server_url: str,
54
+ exec_command: List[str],
55
+ envs: Optional[Dict[str, str]] = None,
56
+ ) -> str:
57
+ """
58
+ Adds a new cluster context to the given kubeconfig dictionary using exec-based authentication.
59
+ """
60
+ cluster_name: str = CLUSTER_NAME_FORMAT.format(cluster=cluster)
61
+ user_name: str = USER_NAME_FORMAT.format(cluster=cluster)
62
+ context_name: str = CONTEXT_NAME_FORMAT.format(cluster=cluster)
63
+
64
+ # Add or update cluster
65
+ config["clusters"] = [
66
+ c for c in config.get("clusters", []) if c["name"] != cluster_name
67
+ ]
68
+ config["clusters"].append(
69
+ {
70
+ "name": cluster_name,
71
+ "cluster": {"server": server_url},
72
+ }
73
+ )
74
+
75
+ # Add or update user with exec command
76
+ config["users"] = [u for u in config.get("users", []) if u["name"] != user_name]
77
+ config["users"].append(
78
+ {
79
+ "name": user_name,
80
+ "user": {
81
+ "exec": {
82
+ "apiVersion": "client.authentication.k8s.io/v1beta1",
83
+ "command": exec_command[0],
84
+ "args": exec_command[1:],
85
+ "env": (
86
+ [{"name": k, "value": v} for k, v in envs.items()]
87
+ if envs
88
+ else []
89
+ ),
90
+ }
91
+ },
92
+ }
93
+ )
94
+
95
+ # Add or update context
96
+ config["contexts"] = [
97
+ c for c in config.get("contexts", []) if c["name"] != context_name
98
+ ]
99
+ config["contexts"].append(
100
+ {"name": context_name, "context": {"cluster": cluster_name, "user": user_name}}
101
+ )
102
+ return context_name
103
+
104
+
105
+ def get_cluster_context(
106
+ config: Dict[str, Any], cluster: str
107
+ ) -> Optional[Dict[str, Any]]:
108
+ cluster_name: str = CLUSTER_NAME_FORMAT.format(cluster=cluster)
109
+ return next(
110
+ (c for c in config.get("clusters", []) if c["name"] == cluster_name), None
111
+ )
112
+
113
+
114
+ def get_cluster_server_url(config: Dict[str, Any], cluster: str) -> Optional[str]:
115
+ cluster: Optional[Dict[str, Any]] = get_cluster_context(config, cluster)
116
+ if cluster:
117
+ return cluster["cluster"].get("server")
118
+ return None
@@ -0,0 +1,27 @@
1
+ from typing import Any, List, Optional
2
+
3
+ from truefoundry.deploy.io.output_callback import OutputCallBack
4
+
5
+
6
+ class NoOutputCallBack(OutputCallBack):
7
+ def print_header(self, line: Any) -> None:
8
+ pass
9
+
10
+ def _print_separator(self) -> None:
11
+ pass
12
+
13
+ def print_line(self, line: str) -> None:
14
+ pass
15
+
16
+ def print_lines_in_panel(
17
+ self, lines: List[str], header: Optional[str] = None
18
+ ) -> None:
19
+ pass
20
+
21
+ def print_code_in_panel(
22
+ self, lines: List[str], header: Optional[str] = None
23
+ ) -> None:
24
+ pass
25
+
26
+ def print(self, line: Any) -> None:
27
+ pass
@@ -70,7 +70,9 @@ def login(
70
70
  else:
71
71
  auth_service = AuthServiceClient.from_tfy_host(tfy_host=host)
72
72
  # interactive login
73
- token = _login_with_device_code(base_url=host, auth_service=auth_service)
73
+ token = _login_with_device_code(
74
+ base_url=host, auth_service=auth_service, output_hook=output_hook
75
+ )
74
76
 
75
77
  cred_file_content = CredentialsFileContent(
76
78
  access_token=token.access_token,
@@ -97,7 +99,7 @@ def logout(
97
99
 
98
100
 
99
101
  def get_access_token():
100
- # Create a new session which handles token refresh
102
+ # Get the access token from the session
101
103
  session = Session.new()
102
104
  return session.access_token
103
105
 
@@ -1,216 +0,0 @@
1
- import contextlib
2
- import sys
3
- from enum import Enum
4
-
5
- import rich_click as click
6
- import yaml
7
- from rich.pretty import pprint
8
-
9
- from truefoundry.cli.config import CliConfig
10
- from truefoundry.cli.console import console
11
- from truefoundry.cli.const import COMMAND_CLS, GROUP_CLS
12
- from truefoundry.cli.display_util import print_entity_obj, print_json
13
- from truefoundry.cli.util import handle_exception_wrapper
14
- from truefoundry.deploy.lib.dao import application as application_lib
15
- from truefoundry.deploy.lib.dao import version as version_lib
16
- from truefoundry.deploy.lib.dao import workspace as workspace_lib
17
-
18
- # TODO (chiragjn): --json should disable all non json console prints
19
-
20
-
21
- @click.group(name="get", cls=GROUP_CLS)
22
- def get_command():
23
- # TODO (chiragjn): Figure out a way to update supported resources based on ENABLE_* flags
24
- """
25
- Get TrueFoundry resources
26
-
27
- \b
28
- Supported resources:
29
- - Workspace
30
- - Application
31
- - Application Version
32
- """
33
- pass
34
-
35
-
36
- @click.command(name="workspace", cls=COMMAND_CLS, help="Get Workspace details")
37
- @click.option(
38
- "-w",
39
- "--workspace-fqn",
40
- "--workspace_fqn",
41
- type=click.STRING,
42
- default=None,
43
- help="FQN of the Workspace",
44
- required=True,
45
- )
46
- @handle_exception_wrapper
47
- def get_workspace(workspace_fqn):
48
- workspace = workspace_lib.get_workspace_by_fqn(workspace_fqn=workspace_fqn)
49
- if CliConfig.get("json"):
50
- print_json(data=workspace.dict())
51
- else:
52
- print_entity_obj("Workspace", workspace)
53
-
54
-
55
- @click.command(name="application", cls=COMMAND_CLS, help="Get Application details")
56
- @click.option(
57
- "--application-fqn",
58
- "--application_fqn",
59
- type=click.STRING,
60
- default=None,
61
- help="FQN of the application",
62
- required=True,
63
- )
64
- @handle_exception_wrapper
65
- def get_application(application_fqn):
66
- application = application_lib.get_application(application_fqn=application_fqn)
67
- if CliConfig.get("json"):
68
- print_json(data=application.dict())
69
- else:
70
- print_entity_obj(
71
- "Application",
72
- application,
73
- )
74
-
75
-
76
- @click.command(
77
- name="application-version", cls=COMMAND_CLS, help="Get Application Version details"
78
- )
79
- @click.option(
80
- "--application-fqn",
81
- "--application_fqn",
82
- type=click.STRING,
83
- default=None,
84
- help="FQN of the application",
85
- required=True,
86
- )
87
- @click.option(
88
- "--version",
89
- type=click.STRING,
90
- default=None,
91
- help="Version number of the application deployment",
92
- required=True,
93
- )
94
- @handle_exception_wrapper
95
- def get_version(application_fqn, version):
96
- version = version_lib.get_version(application_fqn=application_fqn, version=version)
97
- if CliConfig.get("json"):
98
- print_json(data=version.dict())
99
- else:
100
- print_entity_obj("Version", version)
101
-
102
-
103
- @click.command(
104
- name="spec", cls=COMMAND_CLS, help="Get YAML/Python Spec for an Application Version"
105
- )
106
- @click.option(
107
- "--application-fqn",
108
- "--application_fqn",
109
- type=click.STRING,
110
- default=None,
111
- help="FQN of the application",
112
- required=True,
113
- )
114
- @click.option(
115
- "--version",
116
- type=click.STRING,
117
- default=None,
118
- help="Version number of the application deployment",
119
- required=True,
120
- )
121
- @click.option(
122
- "-o",
123
- "--output",
124
- type=click.Choice(
125
- [
126
- "yml",
127
- "yaml",
128
- "json",
129
- "py",
130
- "python",
131
- ]
132
- ),
133
- default="yaml",
134
- help="Output format for the spec",
135
- required=False,
136
- )
137
- @handle_exception_wrapper
138
- def get_spec(application_fqn, version, output):
139
- version = version_lib.get_version(application_fqn=application_fqn, version=version)
140
- if output in ["yml", "yaml"]:
141
- yaml.safe_dump(version.manifest.dict(), sys.stdout, indent=2)
142
- elif output in ["json"]:
143
- print_json(version.manifest.dict())
144
- elif output in ["py", "python"]:
145
- from truefoundry.deploy.v2.lib.deployable_patched_models import Application
146
-
147
- manifest = version.manifest.dict()
148
- instance = Application.parse_obj(manifest).__root__
149
-
150
- # TODO (chiragjn): Can we somehow just enable `use_enum_values` on all Pydantic classes?
151
-
152
- @contextlib.contextmanager
153
- def _monkey_patch_enum_repr():
154
- def new_repr(self):
155
- # return "%r" % (self._value_)
156
- return "%s.%s" % (self.__class__.__name__, self._name_)
157
-
158
- enum_subclasses = [
159
- es
160
- for es in Enum.__subclasses__()
161
- if es.__module__.startswith("truefoundry.")
162
- ]
163
- original_reprs = []
164
- for es in enum_subclasses:
165
- original_reprs.append(es)
166
- es.__repr__ = new_repr
167
-
168
- yield
169
-
170
- for es, og_repr in zip(enum_subclasses, original_reprs):
171
- es.__repr__ = og_repr
172
-
173
- with _monkey_patch_enum_repr():
174
- pprint(
175
- instance,
176
- indent_guides=False,
177
- max_length=88,
178
- expand_all=True,
179
- console=console,
180
- )
181
-
182
-
183
- @click.command(name="job-run", cls=COMMAND_CLS, help="Get Job Run")
184
- @click.option(
185
- "--application-fqn",
186
- "--application_fqn",
187
- type=click.STRING,
188
- default=None,
189
- help="FQN of the application",
190
- required=True,
191
- )
192
- @click.option(
193
- "--job-run-name",
194
- "--job_run_name",
195
- type=click.STRING,
196
- default=None,
197
- help="Run name of the job",
198
- required=True,
199
- )
200
- @handle_exception_wrapper
201
- def get_job_run(application_fqn, job_run_name):
202
- job_run = application_lib.get_job_run(
203
- application_fqn=application_fqn, job_run_name=job_run_name
204
- )
205
- if CliConfig.get("json"):
206
- print_json(data=job_run.dict())
207
- else:
208
- print_entity_obj("Job Run", job_run)
209
-
210
-
211
- def get_get_command():
212
- get_command.add_command(get_workspace)
213
- get_command.add_command(get_application)
214
- get_command.add_command(get_version)
215
- get_command.add_command(get_job_run)
216
- return get_command
File without changes