truefoundry 0.5.0rc6__tar.gz → 0.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of truefoundry might be problematic. Click here for more details.
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/PKG-INFO +2 -6
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/pyproject.toml +8 -9
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/auth_service_client.py +2 -2
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/constants.py +9 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/utils.py +81 -1
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/__init__.py +5 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/__init__.py +4 -2
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/__init__.py +7 -5
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_python_buildpack/dockerfile_template.py +87 -28
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/constants.py +8 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/utils.py +9 -4
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/cli.py +2 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/__init__.py +1 -0
- truefoundry-0.5.1/truefoundry/deploy/cli/commands/deploy_init_command.py +22 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/application.py +2 -1
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/patched_models.py +8 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/__init__.py +25 -15
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/artifact/truefoundry_artifact_repo.py +8 -3
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/__init__.py +24 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/mlfoundry_artifacts_api.py +325 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/__init__.py +24 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_manifest.py +2 -2
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/export_deployment_files_request_dto.py +82 -0
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/infer_method_name.py +34 -0
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/model_server.py +34 -0
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/model_version_environment.py +97 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_version_manifest.py +13 -8
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/sklearn_framework.py +25 -2
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/sklearn_model_schema.py +82 -0
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/sklearn_serialization_format.py +35 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/transformers_framework.py +2 -2
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/validate_external_storage_root_request_dto.py +71 -0
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/validate_external_storage_root_response_dto.py +69 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/xg_boost_framework.py +28 -3
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/xg_boost_model_schema.py +88 -0
- truefoundry-0.5.1/truefoundry/ml/autogen/client/models/xg_boost_serialization_format.py +36 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client_README.md +12 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/entities/artifacts.py +119 -26
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/signature.py +6 -3
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/utils.py +12 -7
- truefoundry-0.5.1/truefoundry/ml/cli/commands/model_init.py +97 -0
- truefoundry-0.5.1/truefoundry/ml/cli/utils.py +34 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/model.py +53 -38
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/utils.py +38 -2
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/mlfoundry_api.py +77 -81
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/mlfoundry_run.py +3 -33
- truefoundry-0.5.1/truefoundry/ml/model_framework.py +538 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/validation_utils.py +2 -0
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/__init__.py +0 -3
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/__main__.py +0 -27
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/app.py +0 -92
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/build.py +0 -45
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/__init__.py +0 -6
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/context.py +0 -3
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/method.py +0 -67
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/remote/remote.py +0 -144
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/route.py +0 -137
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/service.py +0 -113
- truefoundry-0.5.0rc6/truefoundry/deploy/function_service/utils.py +0 -53
- truefoundry-0.5.0rc6/truefoundry/langchain/__init__.py +0 -12
- truefoundry-0.5.0rc6/truefoundry/langchain/deprecated.py +0 -302
- truefoundry-0.5.0rc6/truefoundry/langchain/truefoundry_chat.py +0 -130
- truefoundry-0.5.0rc6/truefoundry/langchain/truefoundry_embeddings.py +0 -171
- truefoundry-0.5.0rc6/truefoundry/langchain/truefoundry_llm.py +0 -106
- truefoundry-0.5.0rc6/truefoundry/langchain/utils.py +0 -44
- truefoundry-0.5.0rc6/truefoundry/ml/log_types/artifacts/model_extras.py +0 -48
- truefoundry-0.5.0rc6/truefoundry/ml/model_framework.py +0 -169
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/README.md +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/base.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/developer.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/project_identifier.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/agents/tester.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/cli.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/constants.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/exception.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/logger.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/ask.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/base.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/commit.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/docker_build.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/docker_run.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/file_type_counts.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/list_files.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/read_file.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/send_request.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/tools/write_file.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/utils/client.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/utils/diff.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/autodeploy/utils/pydantic_compat.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/cli/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/cli/__main__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/credential_file_manager.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/credential_provider.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/entities.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/exceptions.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/request_utils.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/common/servicefoundry_client.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/auto_gen/models.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/dockerfile.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/builders/tfy_notebook_buildpack/dockerfile_template.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/builder/docker_service.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/apply_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/build_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/build_logs_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/create_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/delete_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/deploy_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/get_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/list_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/login_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/logout_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/logs_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/patch_application_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/patch_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/redeploy_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/terminate_comand.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/commands/trigger_command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/config.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/console.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/const.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/display_util.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/cli/util.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/core/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/core/login.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/core/logout.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/io/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/io/output_callback.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/io/rich_output_callback.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/json_util.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/auth/servicefoundry_session.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/clients/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/clients/servicefoundry_client.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/const.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/apply.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/version.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/dao/workspace.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/exceptions.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/logs_utils.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/messages.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/model/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/model/entity.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/session.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/util.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/lib/win32.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/python_deploy_codegen.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/deploy.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/deploy_workflow.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/deployable_patched_models.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/models.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/deploy/v2/lib/source.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/logger.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/artifact/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/auth_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/deprecated_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/experiments_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/generate_code_snippet_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/health_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/metrics_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/run_artifacts_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api/runs_api.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api_client.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/api_response.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/configuration.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/exceptions.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/add_custom_metrics_to_model_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/add_features_to_model_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_app.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_open_api_tool.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_open_api_tool_with_fqn.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/agent_with_fqn.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_type.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_serialization_format.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/artifact_version_status.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/assistant_message.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/authorize_user_for_model_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/authorize_user_for_model_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/blob_storage_reference.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/body_get_search_runs_get.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/chat_prompt.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/chat_prompt_messages_inner.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/columns_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/command.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content1.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content2.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/content2_any_of_inner.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_artifact_version_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_dataset_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_experiment_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_experiment_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_model_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_for_dataset_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_for_dataset_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_multi_part_upload_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_python_deployment_config_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_python_deployment_config_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_run_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_run_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/create_workflow_task_config_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/dataset_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/dataset_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_artifact_versions_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_dataset_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_files_for_dataset_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_model_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_run_request.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/delete_tag_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_id_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/experiment_tag_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/external_artifact_source.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/fast_ai_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/file_info_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/finalize_artifact_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_experiment_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_latest_run_log_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_metric_history_response.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_url_for_dataset_write_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_read_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_read_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_write_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_artifact_version_write_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_read_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_read_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_signed_urls_for_dataset_write_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/get_tenant_id_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/gluon_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/h2_o_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/http_validation_error.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/image_content_part.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/image_url.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/internal_metadata.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/keras_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/latest_run_log_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/library_name.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/light_gbm_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifact_versions_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifact_versions_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifacts_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_artifacts_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_colums_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_datasets_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_datasets_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_experiments_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_artifact_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_artifact_versions_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_dataset_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_files_for_dataset_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_latest_run_logs_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_metric_history_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_metric_history_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_model_version_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_model_versions_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_models_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_models_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_run_artifacts_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/list_run_logs_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/log_batch_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/log_metric_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/log_param_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/manifest.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/method.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/metric_collection_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/metric_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/mime_type.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_configuration.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_version_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/model_version_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/multi_part_upload_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/multi_part_upload_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/multi_part_upload_storage_provider.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/notify_artifact_version_failure_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/onnx_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/openapi_spec.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/paddle_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/param_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/parameters.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/py_torch_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/resolve_agent_app_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/restore_run_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_data_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_info_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_log_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_log_input_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/run_tag_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/search_runs_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/search_runs_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/set_experiment_tag_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/set_tag_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/signed_url_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/source.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/source1.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/spa_cy_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/stats_models_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/stop.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/store_run_logs_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/subject.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/subject_type.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/system_message.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/tensor_flow_framework.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/text.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/text_content_part.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/trigger_job_run_config_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/trigger_job_run_config_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/true_foundry_artifact_source.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_artifact_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_dataset_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_experiment_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_model_version_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_run_request_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/update_run_response_dto.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/url.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/user_message.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/validation_error.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/models/validation_error_loc_inner.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/client/rest.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/exceptions.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/autogen/models/schema.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/cli.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/commands/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/cli/commands/download.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/entities.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/servicefoundry_client.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/clients/utils.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/constants.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/entities.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/enums.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/exceptions.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/git_info.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/internal_namespace.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/artifact.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/constants.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/dataset.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/artifacts/general_artifact.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/constants.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/image.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/image_normalizer.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/image/types.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/plot.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/pydantic_base.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/log_types/utils.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/logger.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/run_utils.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/ml/session.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/pydantic_v1.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/version.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/container_task.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/deploy.sh +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/hello_world_package/workflow.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/package/test_workflow.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/truefoundry.yaml +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/example/workflow.yaml +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/map_task.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/python_task.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/__init__.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/logger.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_client.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/remote_filesystem/tfy_signed_url_fs.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/task.py +0 -0
- {truefoundry-0.5.0rc6 → truefoundry-0.5.1}/truefoundry/workflow/workflow.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: truefoundry
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: Truefoundry CLI
|
|
5
5
|
Author: Abhishek Choudhary
|
|
6
6
|
Author-email: abhishek@truefoundry.com
|
|
@@ -19,7 +19,6 @@ Requires-Dist: aenum (>=3.0.0,<4.0.0)
|
|
|
19
19
|
Requires-Dist: click (>=7.0.0,<9.0.0)
|
|
20
20
|
Requires-Dist: coolname (>=1.1.0,<2.0.0)
|
|
21
21
|
Requires-Dist: docker (>=6.1.2,<8.0.0)
|
|
22
|
-
Requires-Dist: fastapi (>=0.56.0,<0.200.0)
|
|
23
22
|
Requires-Dist: filelock (>=3.8.0,<4.0.0)
|
|
24
23
|
Requires-Dist: flytekit (==1.13.13) ; extra == "workflow"
|
|
25
24
|
Requires-Dist: gitignorefile (>=1.1.2,<2.0.0)
|
|
@@ -29,15 +28,13 @@ Requires-Dist: numpy (>=1.23.0,<2.0.0) ; python_version < "3.12"
|
|
|
29
28
|
Requires-Dist: numpy (>=1.26.0,<2.0.0) ; python_version >= "3.12"
|
|
30
29
|
Requires-Dist: openai (>=1.16.2,<2.0.0)
|
|
31
30
|
Requires-Dist: packaging (>=20.0,<25.0)
|
|
32
|
-
Requires-Dist: pandas (>=1.0.0,<3.0.0) ; python_version < "3.10"
|
|
33
|
-
Requires-Dist: pandas (>=1.4.0,<3.0.0) ; python_version >= "3.10"
|
|
34
31
|
Requires-Dist: pydantic (>=1.8.2,<3.0.0)
|
|
35
32
|
Requires-Dist: pygments (>=2.12.0,<3.0.0)
|
|
36
33
|
Requires-Dist: python-dateutil (>=2.8.2,<3.0.0)
|
|
37
34
|
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
|
|
38
35
|
Requires-Dist: python-socketio[client] (>=5.5.2,<6.0.0)
|
|
39
36
|
Requires-Dist: questionary (>=1.10.0,<2.0.0)
|
|
40
|
-
Requires-Dist: requests (>=2.
|
|
37
|
+
Requires-Dist: requests (>=2.18.0,<3.0.0)
|
|
41
38
|
Requires-Dist: requirements-parser (>=0.11.0,<0.12.0)
|
|
42
39
|
Requires-Dist: rich (>=13.7.1,<14.0.0)
|
|
43
40
|
Requires-Dist: rich-click (>=1.2.1,<2.0.0)
|
|
@@ -46,7 +43,6 @@ Requires-Dist: scipy (>=1.5.0,<2.0.0) ; python_version < "3.12"
|
|
|
46
43
|
Requires-Dist: tqdm (>=4.0.0,<5.0.0)
|
|
47
44
|
Requires-Dist: typing-extensions (>=4.0)
|
|
48
45
|
Requires-Dist: urllib3 (>=1.26.18,<3)
|
|
49
|
-
Requires-Dist: uvicorn (>=0.13.0,<1.0.0)
|
|
50
46
|
Requires-Dist: yq (>=3.1.0,<4.0.0)
|
|
51
47
|
Description-Content-Type: text/markdown
|
|
52
48
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "truefoundry"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.1"
|
|
4
4
|
description = "Truefoundry CLI"
|
|
5
5
|
authors = ["Abhishek Choudhary <abhishek@truefoundry.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -11,7 +11,6 @@ aenum = ">=3.0.0,<4.0.0"
|
|
|
11
11
|
click = ">=7.0.0,<9.0.0"
|
|
12
12
|
coolname = ">=1.1.0,<2.0.0"
|
|
13
13
|
docker = ">=6.1.2,<8.0.0"
|
|
14
|
-
fastapi = ">=0.56.0,<0.200.0"
|
|
15
14
|
filelock = ">=3.8.0,<4.0.0"
|
|
16
15
|
flytekit = { version = "1.13.13", optional = true }
|
|
17
16
|
gitignorefile = ">=1.1.2,<2.0.0"
|
|
@@ -29,14 +28,13 @@ python-dotenv = ">=1.0.1,<2.0.0"
|
|
|
29
28
|
python-socketio = { version = ">=5.5.2,<6.0.0", extras = ["client"] }
|
|
30
29
|
PyYAML = ">=6.0.0,<7.0.0"
|
|
31
30
|
questionary = ">=1.10.0,<2.0.0"
|
|
32
|
-
requests = ">=2.
|
|
31
|
+
requests = ">=2.18.0,<3.0.0"
|
|
33
32
|
requirements-parser = ">=0.11.0,<0.12.0"
|
|
34
33
|
rich = ">=13.7.1,<14.0.0"
|
|
35
34
|
rich-click = ">=1.2.1,<2.0.0"
|
|
36
35
|
tqdm = ">=4.0.0,<5.0.0"
|
|
37
36
|
typing-extensions = ">=4.0"
|
|
38
37
|
urllib3 = ">=1.26.18,<3"
|
|
39
|
-
uvicorn = ">=0.13.0,<1.0.0"
|
|
40
38
|
yq = ">=3.1.0,<4.0.0"
|
|
41
39
|
# Check and try to eliminate libs below this comment
|
|
42
40
|
scipy = [
|
|
@@ -49,11 +47,6 @@ numpy = [
|
|
|
49
47
|
{ version = ">=1.23.0,<2.0.0", python = "<3.12" },
|
|
50
48
|
{ version = ">=1.26.0,<2.0.0", python = ">=3.12" },
|
|
51
49
|
]
|
|
52
|
-
pandas = [
|
|
53
|
-
# This is split into two because poetry will select a version which has no wheel on python >= 3.10 :/
|
|
54
|
-
{ version = ">=1.0.0,<3.0.0", python = "<3.10" },
|
|
55
|
-
{ version = ">=1.4.0,<3.0.0", python = ">=3.10" },
|
|
56
|
-
]
|
|
57
50
|
|
|
58
51
|
|
|
59
52
|
[tool.poetry.extras]
|
|
@@ -67,6 +60,11 @@ langchain = ">=0.2.0,<0.3.0"
|
|
|
67
60
|
matplotlib = ">=3.0.0,<4.0.0"
|
|
68
61
|
mypy = "*"
|
|
69
62
|
plotly = ">=5.8.2,<6.0.0"
|
|
63
|
+
pandas = [
|
|
64
|
+
# This is split into two because poetry will select a version which has no wheel on python >= 3.10 :/
|
|
65
|
+
{ version = ">=1.0.0,<3.0.0", python = "<3.10" },
|
|
66
|
+
{ version = ">=1.4.0,<3.0.0", python = ">=3.10" },
|
|
67
|
+
]
|
|
70
68
|
pre-commit = ">=3.5.0,<4.0.0"
|
|
71
69
|
pytest = ">=8.2.2,<9.0.0"
|
|
72
70
|
pytest-env = ">=1.1.5,<2.0.0"
|
|
@@ -77,6 +75,7 @@ shap = [
|
|
|
77
75
|
{ version = ">=0.40.0", python = "<3.12" },
|
|
78
76
|
{ version = ">=0.45.0", python = ">=3.12" },
|
|
79
77
|
]
|
|
78
|
+
xgboost = "^2.1.3"
|
|
80
79
|
|
|
81
80
|
|
|
82
81
|
[tool.poetry-dynamic-versioning]
|
|
@@ -51,7 +51,7 @@ class ServiceFoundryServerAuthServiceClient(AuthServiceClient):
|
|
|
51
51
|
self._api_server_url = url
|
|
52
52
|
|
|
53
53
|
def refresh_token(self, token: Token, host: Optional[str] = None) -> Token:
|
|
54
|
-
host_arg_str =
|
|
54
|
+
host_arg_str = host if host else "HOST"
|
|
55
55
|
if not token.refresh_token:
|
|
56
56
|
# TODO: Add a way to propagate error messages without traceback to the output interface side
|
|
57
57
|
raise Exception(
|
|
@@ -128,7 +128,7 @@ class AuthServerServiceClient(AuthServiceClient):
|
|
|
128
128
|
self._auth_server_url = url
|
|
129
129
|
|
|
130
130
|
def refresh_token(self, token: Token, host: Optional[str] = None) -> Token:
|
|
131
|
-
host_arg_str =
|
|
131
|
+
host_arg_str = host if host else "HOST"
|
|
132
132
|
if not token.refresh_token:
|
|
133
133
|
# TODO: Add a way to propagate error messages without traceback to the output interface side
|
|
134
134
|
raise Exception(
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import enum
|
|
1
2
|
import os
|
|
2
3
|
from pathlib import Path
|
|
3
4
|
from typing import Optional
|
|
@@ -15,6 +16,11 @@ TFY_INTERNAL_SIGNED_URL_SERVER_HOST_ENV_KEY = "TFY_INTERNAL_SIGNED_URL_SERVER_HO
|
|
|
15
16
|
TFY_INTERNAL_SIGNED_URL_SERVER_TOKEN_ENV_KEY = "TFY_INTERNAL_SIGNED_URL_SERVER_TOKEN"
|
|
16
17
|
|
|
17
18
|
|
|
19
|
+
class PythonPackageManager(str, enum.Enum):
|
|
20
|
+
PIP = "pip"
|
|
21
|
+
UV = "uv"
|
|
22
|
+
|
|
23
|
+
|
|
18
24
|
class TrueFoundrySdkEnv(BaseSettings):
|
|
19
25
|
# Note: Every field in this class should have a default value
|
|
20
26
|
# Never expect the user to set these values
|
|
@@ -46,6 +52,9 @@ class TrueFoundrySdkEnv(BaseSettings):
|
|
|
46
52
|
# For local development, this enables futher configuration via _TFYServersConfig
|
|
47
53
|
TFY_CLI_LOCAL_DEV_MODE: bool = False
|
|
48
54
|
|
|
55
|
+
TFY_PYTHON_BUILD_PACKAGE_MANAGER: PythonPackageManager = PythonPackageManager.PIP
|
|
56
|
+
TFY_PYTHON_BUILD_UV_IMAGE_URI: str = "ghcr.io/astral-sh/uv:latest"
|
|
57
|
+
|
|
49
58
|
|
|
50
59
|
ENV_VARS = TrueFoundrySdkEnv()
|
|
51
60
|
API_SERVER_RELATIVE_PATH = "api/svc"
|
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import json
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
import sys
|
|
1
5
|
import time
|
|
6
|
+
from collections import namedtuple
|
|
2
7
|
from functools import lru_cache, wraps
|
|
8
|
+
from shutil import rmtree
|
|
9
|
+
from subprocess import check_output
|
|
3
10
|
from time import monotonic_ns
|
|
4
|
-
from typing import Callable, Generator, Optional, TypeVar
|
|
11
|
+
from typing import Callable, Generator, List, Optional, TypeVar
|
|
5
12
|
from urllib.parse import urljoin, urlparse
|
|
6
13
|
|
|
7
14
|
from truefoundry.common.constants import (
|
|
@@ -12,7 +19,10 @@ from truefoundry.common.constants import (
|
|
|
12
19
|
)
|
|
13
20
|
from truefoundry.pydantic_v1 import BaseSettings
|
|
14
21
|
|
|
22
|
+
logger = logging.getLogger(__name__)
|
|
23
|
+
|
|
15
24
|
T = TypeVar("T")
|
|
25
|
+
InstalledPipPackage = namedtuple("InstalledPipPackage", ["name", "version"])
|
|
16
26
|
|
|
17
27
|
|
|
18
28
|
class _TFYServersConfig(BaseSettings):
|
|
@@ -102,3 +112,73 @@ def resolve_tfy_host(tfy_host: Optional[str] = None) -> str:
|
|
|
102
112
|
tfy_host = tfy_host.strip("/")
|
|
103
113
|
validate_tfy_host(tfy_host)
|
|
104
114
|
return tfy_host
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
class ContextualDirectoryManager:
|
|
118
|
+
def __init__(self, dir_path: str, cleanup_on_error: bool = True):
|
|
119
|
+
self.dir_path = dir_path
|
|
120
|
+
self.cleanup_on_error = cleanup_on_error
|
|
121
|
+
|
|
122
|
+
def __enter__(self):
|
|
123
|
+
if os.path.exists(self.dir_path):
|
|
124
|
+
raise FileExistsError(
|
|
125
|
+
f"The directory {self.dir_path!r} already exists. "
|
|
126
|
+
"Please provide a path with a different name that does not already exist."
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
os.makedirs(self.dir_path, exist_ok=False)
|
|
130
|
+
return self.dir_path
|
|
131
|
+
|
|
132
|
+
def __exit__(self, exc_type, exc_value, traceback):
|
|
133
|
+
if self.cleanup_on_error and exc_type is not None:
|
|
134
|
+
# Only delete the directory if an exception occurred
|
|
135
|
+
if os.path.exists(self.dir_path):
|
|
136
|
+
rmtree(self.dir_path)
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
def get_python_version_major_minor() -> str:
|
|
140
|
+
"""
|
|
141
|
+
Returns the major.minor version of the Python interpreter
|
|
142
|
+
"""
|
|
143
|
+
version_info = sys.version_info
|
|
144
|
+
return f"{version_info.major}.{version_info.minor}"
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
def list_pip_packages_installed(
|
|
148
|
+
filter_package_names: Optional[List[str]] = None,
|
|
149
|
+
) -> List[InstalledPipPackage]:
|
|
150
|
+
"""
|
|
151
|
+
List the installed package_names, along with their versions.
|
|
152
|
+
Args:
|
|
153
|
+
filter_package_names (List[str]): A list of specific libraries to filter for.
|
|
154
|
+
|
|
155
|
+
Returns:
|
|
156
|
+
List[InstalledPipPackage]: A list of InstalledPipPackage namedtuples for each match.
|
|
157
|
+
"""
|
|
158
|
+
relevant_package_names: List[InstalledPipPackage] = []
|
|
159
|
+
|
|
160
|
+
# Get the installed packages in JSON format from pip
|
|
161
|
+
try:
|
|
162
|
+
output = check_output(
|
|
163
|
+
[
|
|
164
|
+
sys.executable,
|
|
165
|
+
"-m",
|
|
166
|
+
"pip",
|
|
167
|
+
"--disable-pip-version-check",
|
|
168
|
+
"list",
|
|
169
|
+
"--pre",
|
|
170
|
+
"--format=json",
|
|
171
|
+
]
|
|
172
|
+
)
|
|
173
|
+
installed_package_names = json.loads(output.decode("utf-8"))
|
|
174
|
+
except Exception:
|
|
175
|
+
logger.exception("Failed to list installed packages using pip.")
|
|
176
|
+
return relevant_package_names
|
|
177
|
+
|
|
178
|
+
package_names_to_check = set(filter_package_names or [])
|
|
179
|
+
for package in installed_package_names:
|
|
180
|
+
if package["name"] in package_names_to_check:
|
|
181
|
+
relevant_package_names.append(
|
|
182
|
+
InstalledPipPackage(package["name"], package["version"])
|
|
183
|
+
)
|
|
184
|
+
return relevant_package_names
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
from truefoundry.deploy.auto_gen.models import (
|
|
2
2
|
AppProtocol,
|
|
3
|
+
Autoshutdown,
|
|
3
4
|
CanaryStep,
|
|
4
5
|
CapacityType,
|
|
6
|
+
Claim,
|
|
5
7
|
ConcurrencyPolicy,
|
|
8
|
+
JobAlert,
|
|
6
9
|
Kustomize,
|
|
7
10
|
ParamType,
|
|
8
11
|
Protocol,
|
|
@@ -66,6 +69,7 @@ from truefoundry.deploy.v2.lib.patched_models import (
|
|
|
66
69
|
DynamicVolumeConfig,
|
|
67
70
|
Endpoint,
|
|
68
71
|
GcpTPU,
|
|
72
|
+
GitHelmRepo,
|
|
69
73
|
GitSource,
|
|
70
74
|
GPUType,
|
|
71
75
|
HealthProbe,
|
|
@@ -73,6 +77,7 @@ from truefoundry.deploy.v2.lib.patched_models import (
|
|
|
73
77
|
HttpProbe,
|
|
74
78
|
HuggingfaceArtifactSource,
|
|
75
79
|
Image,
|
|
80
|
+
JwtAuthCreds,
|
|
76
81
|
KafkaInputConfig,
|
|
77
82
|
KafkaMetricConfig,
|
|
78
83
|
KafkaOutputConfig,
|
|
@@ -8,7 +8,7 @@ from truefoundry.deploy.builder.builders.tfy_notebook_buildpack.dockerfile_templ
|
|
|
8
8
|
NotebookImageBuild,
|
|
9
9
|
generate_dockerfile_content,
|
|
10
10
|
)
|
|
11
|
-
from truefoundry.deploy.builder.utils import
|
|
11
|
+
from truefoundry.deploy.builder.utils import has_python_package_manager_conf_secret
|
|
12
12
|
|
|
13
13
|
__all__ = ["generate_dockerfile_content", "build"]
|
|
14
14
|
|
|
@@ -38,7 +38,9 @@ def build(
|
|
|
38
38
|
build_configuration: NotebookImageBuild,
|
|
39
39
|
extra_opts: Optional[List[str]] = None,
|
|
40
40
|
):
|
|
41
|
-
mount_pip_conf_secret =
|
|
41
|
+
mount_pip_conf_secret = (
|
|
42
|
+
has_python_package_manager_conf_secret(extra_opts) if extra_opts else False
|
|
43
|
+
)
|
|
42
44
|
with TemporaryDirectory() as local_dir:
|
|
43
45
|
docker_build_configuration = _convert_to_dockerfile_build_config(
|
|
44
46
|
build_configuration,
|
|
@@ -7,7 +7,7 @@ from truefoundry.deploy.builder.builders import dockerfile
|
|
|
7
7
|
from truefoundry.deploy.builder.builders.tfy_python_buildpack.dockerfile_template import (
|
|
8
8
|
generate_dockerfile_content,
|
|
9
9
|
)
|
|
10
|
-
from truefoundry.deploy.builder.utils import
|
|
10
|
+
from truefoundry.deploy.builder.utils import has_python_package_manager_conf_secret
|
|
11
11
|
|
|
12
12
|
__all__ = ["generate_dockerfile_content", "build"]
|
|
13
13
|
|
|
@@ -15,11 +15,11 @@ __all__ = ["generate_dockerfile_content", "build"]
|
|
|
15
15
|
def _convert_to_dockerfile_build_config(
|
|
16
16
|
build_configuration: PythonBuild,
|
|
17
17
|
dockerfile_path: str,
|
|
18
|
-
|
|
18
|
+
mount_python_package_manager_conf_secret: bool = False,
|
|
19
19
|
) -> DockerFileBuild:
|
|
20
20
|
dockerfile_content = generate_dockerfile_content(
|
|
21
21
|
build_configuration=build_configuration,
|
|
22
|
-
|
|
22
|
+
mount_python_package_manager_conf_secret=mount_python_package_manager_conf_secret,
|
|
23
23
|
)
|
|
24
24
|
with open(dockerfile_path, "w", encoding="utf8") as fp:
|
|
25
25
|
fp.write(dockerfile_content)
|
|
@@ -36,12 +36,14 @@ def build(
|
|
|
36
36
|
build_configuration: PythonBuild,
|
|
37
37
|
extra_opts: Optional[List[str]] = None,
|
|
38
38
|
):
|
|
39
|
-
|
|
39
|
+
mount_python_package_manager_conf_secret = (
|
|
40
|
+
has_python_package_manager_conf_secret(extra_opts) if extra_opts else False
|
|
41
|
+
)
|
|
40
42
|
with TemporaryDirectory() as local_dir:
|
|
41
43
|
docker_build_configuration = _convert_to_dockerfile_build_config(
|
|
42
44
|
build_configuration,
|
|
43
45
|
dockerfile_path=os.path.join(local_dir, "Dockerfile"),
|
|
44
|
-
|
|
46
|
+
mount_python_package_manager_conf_secret=mount_python_package_manager_conf_secret,
|
|
45
47
|
)
|
|
46
48
|
dockerfile.build(
|
|
47
49
|
tag=tag,
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import os
|
|
2
|
+
import shlex
|
|
2
3
|
from typing import Dict, List, Optional
|
|
3
4
|
|
|
4
5
|
from mako.template import Template
|
|
5
6
|
|
|
6
|
-
from truefoundry.common.constants import ENV_VARS
|
|
7
|
+
from truefoundry.common.constants import ENV_VARS, PythonPackageManager
|
|
7
8
|
from truefoundry.deploy.auto_gen.models import PythonBuild
|
|
8
9
|
from truefoundry.deploy.builder.constants import (
|
|
9
10
|
PIP_CONF_BUILDKIT_SECRET_MOUNT,
|
|
10
11
|
PIP_CONF_SECRET_MOUNT_AS_ENV,
|
|
12
|
+
UV_CONF_BUILDKIT_SECRET_MOUNT,
|
|
13
|
+
UV_CONF_SECRET_MOUNT_AS_ENV,
|
|
11
14
|
)
|
|
12
15
|
from truefoundry.deploy.v2.lib.patched_models import CUDAVersion
|
|
13
16
|
|
|
@@ -22,8 +25,8 @@ RUN ${apt_install_command}
|
|
|
22
25
|
% if requirements_path is not None:
|
|
23
26
|
COPY ${requirements_path} ${requirements_destination_path}
|
|
24
27
|
% endif
|
|
25
|
-
% if
|
|
26
|
-
RUN ${
|
|
28
|
+
% if python_packages_install_command is not None:
|
|
29
|
+
RUN ${package_manager_config_secret_mount} ${python_packages_install_command}
|
|
27
30
|
% endif
|
|
28
31
|
COPY . /app
|
|
29
32
|
WORKDIR /app
|
|
@@ -114,44 +117,91 @@ def generate_pip_install_command(
|
|
|
114
117
|
mount_pip_conf_secret: bool = False,
|
|
115
118
|
) -> Optional[str]:
|
|
116
119
|
upgrade_pip_command = "python -m pip install -U pip setuptools wheel"
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
envs = []
|
|
121
|
+
if mount_pip_conf_secret:
|
|
122
|
+
envs.append(PIP_CONF_SECRET_MOUNT_AS_ENV)
|
|
123
|
+
|
|
124
|
+
command = ["python", "-m", "pip", "install", "--use-pep517", "--no-cache-dir"]
|
|
125
|
+
args = []
|
|
119
126
|
if requirements_path:
|
|
120
|
-
|
|
127
|
+
args.append("-r")
|
|
128
|
+
args.append(requirements_path)
|
|
121
129
|
|
|
122
130
|
if pip_packages:
|
|
123
|
-
|
|
124
|
-
final_pip_install_command or pip_install_base_command
|
|
125
|
-
)
|
|
126
|
-
final_pip_install_command += " " + " ".join(
|
|
127
|
-
f"'{package}'" for package in pip_packages
|
|
128
|
-
)
|
|
131
|
+
args.extend(pip_packages)
|
|
129
132
|
|
|
130
|
-
if not
|
|
133
|
+
if not args:
|
|
131
134
|
return None
|
|
132
135
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
final_pip_install_command = shlex.join(envs + command + args)
|
|
137
|
+
final_docker_run_command = " && ".join(
|
|
138
|
+
[upgrade_pip_command, final_pip_install_command]
|
|
139
|
+
)
|
|
140
|
+
return final_docker_run_command
|
|
137
141
|
|
|
138
|
-
|
|
142
|
+
|
|
143
|
+
def generate_uv_pip_install_command(
|
|
144
|
+
requirements_path: Optional[str],
|
|
145
|
+
pip_packages: Optional[List[str]],
|
|
146
|
+
mount_uv_conf_secret: bool = False,
|
|
147
|
+
) -> Optional[str]:
|
|
148
|
+
upgrade_pip_command = "python -m pip install -U pip setuptools wheel"
|
|
149
|
+
uv_mount = f"--mount=from={ENV_VARS.TFY_PYTHON_BUILD_UV_IMAGE_URI},source=/uv,target=/usr/local/bin/uv"
|
|
150
|
+
envs = [
|
|
151
|
+
"UV_SYSTEM_PYTHON=true",
|
|
152
|
+
"UV_LINK_MODE=copy",
|
|
153
|
+
"UV_PYTHON_DOWNLOADS=never",
|
|
154
|
+
"UV_INDEX_STRATEGY=unsafe-best-match",
|
|
155
|
+
]
|
|
156
|
+
if mount_uv_conf_secret:
|
|
157
|
+
envs.append(UV_CONF_SECRET_MOUNT_AS_ENV)
|
|
158
|
+
|
|
159
|
+
command = ["uv", "pip", "install", "--no-cache-dir"]
|
|
160
|
+
|
|
161
|
+
args = []
|
|
162
|
+
|
|
163
|
+
if requirements_path:
|
|
164
|
+
args.append("-r")
|
|
165
|
+
args.append(requirements_path)
|
|
166
|
+
|
|
167
|
+
if pip_packages:
|
|
168
|
+
args.extend(pip_packages)
|
|
169
|
+
|
|
170
|
+
if not args:
|
|
171
|
+
return None
|
|
172
|
+
|
|
173
|
+
uv_pip_install_command = shlex.join(envs + command + args)
|
|
174
|
+
shell_commands = " && ".join([upgrade_pip_command, uv_pip_install_command])
|
|
175
|
+
final_docker_run_command = " ".join([uv_mount, shell_commands])
|
|
176
|
+
|
|
177
|
+
return final_docker_run_command
|
|
139
178
|
|
|
140
179
|
|
|
141
180
|
def generate_dockerfile_content(
|
|
142
181
|
build_configuration: PythonBuild,
|
|
143
|
-
|
|
182
|
+
package_manager: str = ENV_VARS.TFY_PYTHON_BUILD_PACKAGE_MANAGER,
|
|
183
|
+
mount_python_package_manager_conf_secret: bool = False,
|
|
144
184
|
) -> str:
|
|
145
185
|
# TODO (chiragjn): Handle recursive references to other requirements files e.g. `-r requirements-gpu.txt`
|
|
146
186
|
requirements_path = resolve_requirements_txt_path(build_configuration)
|
|
147
187
|
requirements_destination_path = (
|
|
148
188
|
"/tmp/requirements.txt" if requirements_path else None
|
|
149
189
|
)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
190
|
+
if package_manager == PythonPackageManager.PIP.value:
|
|
191
|
+
python_packages_install_command = generate_pip_install_command(
|
|
192
|
+
requirements_path=requirements_destination_path,
|
|
193
|
+
pip_packages=build_configuration.pip_packages,
|
|
194
|
+
mount_pip_conf_secret=mount_python_package_manager_conf_secret,
|
|
195
|
+
)
|
|
196
|
+
elif package_manager == PythonPackageManager.UV.value:
|
|
197
|
+
python_packages_install_command = generate_uv_pip_install_command(
|
|
198
|
+
requirements_path=requirements_destination_path,
|
|
199
|
+
pip_packages=build_configuration.pip_packages,
|
|
200
|
+
mount_uv_conf_secret=mount_python_package_manager_conf_secret,
|
|
201
|
+
)
|
|
202
|
+
else:
|
|
203
|
+
raise ValueError(f"Unsupported package manager: {package_manager}")
|
|
204
|
+
|
|
155
205
|
apt_install_command = generate_apt_install_command(
|
|
156
206
|
apt_packages=build_configuration.apt_packages
|
|
157
207
|
)
|
|
@@ -161,13 +211,22 @@ def generate_dockerfile_content(
|
|
|
161
211
|
"apt_install_command": apt_install_command,
|
|
162
212
|
"requirements_path": requirements_path,
|
|
163
213
|
"requirements_destination_path": requirements_destination_path,
|
|
164
|
-
"
|
|
214
|
+
"python_packages_install_command": python_packages_install_command,
|
|
165
215
|
}
|
|
166
216
|
|
|
167
|
-
if
|
|
168
|
-
|
|
217
|
+
if mount_python_package_manager_conf_secret:
|
|
218
|
+
if package_manager == PythonPackageManager.PIP.value:
|
|
219
|
+
template_args["package_manager_config_secret_mount"] = (
|
|
220
|
+
PIP_CONF_BUILDKIT_SECRET_MOUNT
|
|
221
|
+
)
|
|
222
|
+
elif package_manager == PythonPackageManager.UV.value:
|
|
223
|
+
template_args["package_manager_config_secret_mount"] = (
|
|
224
|
+
UV_CONF_BUILDKIT_SECRET_MOUNT
|
|
225
|
+
)
|
|
226
|
+
else:
|
|
227
|
+
raise ValueError(f"Unsupported package manager: {package_manager}")
|
|
169
228
|
else:
|
|
170
|
-
template_args["
|
|
229
|
+
template_args["package_manager_config_secret_mount"] = ""
|
|
171
230
|
|
|
172
231
|
if build_configuration.cuda_version:
|
|
173
232
|
template = CUDA_DOCKERFILE_TEMPLATE
|
|
@@ -5,3 +5,11 @@ PIP_CONF_BUILDKIT_SECRET_MOUNT = (
|
|
|
5
5
|
PIP_CONF_SECRET_MOUNT_AS_ENV = (
|
|
6
6
|
f"PIP_CONFIG_FILE=/run/secrets/{BUILDKIT_SECRET_MOUNT_PIP_CONF_ID}"
|
|
7
7
|
)
|
|
8
|
+
|
|
9
|
+
BUILDKIT_SECRET_MOUNT_UV_CONF_ID = "uv.toml"
|
|
10
|
+
UV_CONF_BUILDKIT_SECRET_MOUNT = (
|
|
11
|
+
f"--mount=type=secret,id={BUILDKIT_SECRET_MOUNT_UV_CONF_ID}"
|
|
12
|
+
)
|
|
13
|
+
UV_CONF_SECRET_MOUNT_AS_ENV = (
|
|
14
|
+
f"UV_CONFIG_FILE=/run/secrets/{BUILDKIT_SECRET_MOUNT_UV_CONF_ID}"
|
|
15
|
+
)
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
from typing import List, Optional
|
|
2
2
|
|
|
3
|
-
from truefoundry.deploy.builder.constants import
|
|
3
|
+
from truefoundry.deploy.builder.constants import (
|
|
4
|
+
BUILDKIT_SECRET_MOUNT_PIP_CONF_ID,
|
|
5
|
+
BUILDKIT_SECRET_MOUNT_UV_CONF_ID,
|
|
6
|
+
)
|
|
4
7
|
|
|
5
8
|
|
|
6
9
|
def _get_id_from_buildkit_secret_value(value: str) -> Optional[str]:
|
|
@@ -19,14 +22,16 @@ def _get_id_from_buildkit_secret_value(value: str) -> Optional[str]:
|
|
|
19
22
|
return None
|
|
20
23
|
|
|
21
24
|
|
|
22
|
-
def
|
|
25
|
+
def has_python_package_manager_conf_secret(docker_build_extra_args: List[str]) -> bool:
|
|
23
26
|
args = [arg.strip() for arg in docker_build_extra_args]
|
|
24
27
|
for i, arg in enumerate(docker_build_extra_args):
|
|
25
28
|
if (
|
|
26
29
|
arg == "--secret"
|
|
27
30
|
and i + 1 < len(args)
|
|
28
|
-
and
|
|
29
|
-
|
|
31
|
+
and (
|
|
32
|
+
_get_id_from_buildkit_secret_value(args[i + 1])
|
|
33
|
+
in (BUILDKIT_SECRET_MOUNT_PIP_CONF_ID, BUILDKIT_SECRET_MOUNT_UV_CONF_ID)
|
|
34
|
+
)
|
|
30
35
|
):
|
|
31
36
|
return True
|
|
32
37
|
return False
|
|
@@ -9,6 +9,7 @@ from truefoundry.deploy.cli.commands import (
|
|
|
9
9
|
get_build_command,
|
|
10
10
|
get_delete_command,
|
|
11
11
|
get_deploy_command,
|
|
12
|
+
get_deploy_init_command,
|
|
12
13
|
get_login_command,
|
|
13
14
|
get_logout_command,
|
|
14
15
|
get_patch_application_command,
|
|
@@ -36,6 +37,7 @@ def create_truefoundry_cli() -> click.MultiCommand:
|
|
|
36
37
|
cli.add_command(get_logout_command())
|
|
37
38
|
cli.add_command(get_apply_command())
|
|
38
39
|
cli.add_command(get_deploy_command())
|
|
40
|
+
cli.add_command(get_deploy_init_command())
|
|
39
41
|
cli.add_command(get_patch_application_command())
|
|
40
42
|
cli.add_command(get_delete_command())
|
|
41
43
|
cli.add_command(get_trigger_command())
|
|
@@ -4,6 +4,7 @@ from truefoundry.deploy.cli.commands.build_logs_command import get_build_logs_co
|
|
|
4
4
|
from truefoundry.deploy.cli.commands.create_command import get_create_command
|
|
5
5
|
from truefoundry.deploy.cli.commands.delete_command import get_delete_command
|
|
6
6
|
from truefoundry.deploy.cli.commands.deploy_command import get_deploy_command
|
|
7
|
+
from truefoundry.deploy.cli.commands.deploy_init_command import get_deploy_init_command
|
|
7
8
|
from truefoundry.deploy.cli.commands.get_command import get_get_command
|
|
8
9
|
from truefoundry.deploy.cli.commands.list_command import get_list_command
|
|
9
10
|
from truefoundry.deploy.cli.commands.login_command import get_login_command
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import rich_click as click
|
|
2
|
+
|
|
3
|
+
from truefoundry.deploy.cli.const import GROUP_CLS
|
|
4
|
+
from truefoundry.ml.cli.commands.model_init import get_model_init_command
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@click.group(
|
|
8
|
+
name="deploy-init",
|
|
9
|
+
cls=GROUP_CLS,
|
|
10
|
+
help="Initialize the TrueFoundry deployment configuration.",
|
|
11
|
+
)
|
|
12
|
+
def deploy_init_command(): ...
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_deploy_init_command():
|
|
16
|
+
"""
|
|
17
|
+
Generates the deploy-init command.
|
|
18
|
+
model: Initialize the TrueFoundry deployment configuration for a model. eg: tfy deploy-init model [--args]
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
deploy_init_command.add_command(get_model_init_command())
|
|
22
|
+
return deploy_init_command
|
|
@@ -179,10 +179,11 @@ def trigger_job(
|
|
|
179
179
|
command=command_str if command_str else None,
|
|
180
180
|
params=params if params else None,
|
|
181
181
|
)
|
|
182
|
+
jobRunName = result.jobRunName
|
|
182
183
|
previous_runs_url = f"{client.base_url.strip('/')}/deployments/{application_info.id}?tab=previousRuns"
|
|
183
184
|
logger.info(
|
|
184
185
|
f"{message}.\n"
|
|
185
|
-
f"You can check the status of your job run at {previous_runs_url}"
|
|
186
|
+
f"You can check the status of your job run at {previous_runs_url} with jobRunName: {jobRunName}"
|
|
186
187
|
)
|
|
187
188
|
return result
|
|
188
189
|
|
|
@@ -186,6 +186,10 @@ class BasicAuthCreds(models.BasicAuthCreds, PatchedModelBase):
|
|
|
186
186
|
type: Literal["basic_auth"] = "basic_auth"
|
|
187
187
|
|
|
188
188
|
|
|
189
|
+
class JwtAuthCreds(models.JwtAuthCreds, PatchedModelBase):
|
|
190
|
+
type: Literal["jwt_auth"] = "jwt_auth"
|
|
191
|
+
|
|
192
|
+
|
|
189
193
|
class HealthProbe(models.HealthProbe, PatchedModelBase):
|
|
190
194
|
pass
|
|
191
195
|
|
|
@@ -338,6 +342,10 @@ class HelmRepo(models.HelmRepo, PatchedModelBase):
|
|
|
338
342
|
type: Literal["helm-repo"] = "helm-repo"
|
|
339
343
|
|
|
340
344
|
|
|
345
|
+
class GitHelmRepo(models.GitHelmRepo, PatchedModelBase):
|
|
346
|
+
type: Literal["git-helm-repo"] = "git-helm-repo"
|
|
347
|
+
|
|
348
|
+
|
|
341
349
|
class OCIRepo(models.OCIRepo, PatchedModelBase):
|
|
342
350
|
type: Literal["oci-repo"] = "oci-repo"
|
|
343
351
|
|