truss 0.10.11rc2__tar.gz → 0.10.12__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 truss might be problematic. Click here for more details.

Files changed (407) hide show
  1. {truss-0.10.11rc2 → truss-0.10.12}/PKG-INFO +1 -1
  2. {truss-0.10.11rc2 → truss-0.10.12}/pyproject.toml +1 -1
  3. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/common.py +19 -0
  4. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/core.py +136 -0
  5. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/metrics_watcher.py +8 -9
  6. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train_commands.py +73 -2
  7. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/utils/common.py +14 -1
  8. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/api.py +7 -0
  9. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/custom_types.py +28 -0
  10. truss-0.10.12/truss/tests/cli/train/test_cache_view.py +712 -0
  11. {truss-0.10.11rc2 → truss-0.10.12}/truss-train/truss_train/deployment.py +1 -0
  12. {truss-0.10.11rc2 → truss-0.10.12}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  13. {truss-0.10.11rc2 → truss-0.10.12}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  14. {truss-0.10.11rc2 → truss-0.10.12}/.github/pull_request_template.md +0 -0
  15. {truss-0.10.11rc2 → truss-0.10.12}/.gitignore +0 -0
  16. {truss-0.10.11rc2 → truss-0.10.12}/CODE_OF_CONDUCT.md +0 -0
  17. {truss-0.10.11rc2 → truss-0.10.12}/CONTRIBUTING.md +0 -0
  18. {truss-0.10.11rc2 → truss-0.10.12}/LICENSE +0 -0
  19. {truss-0.10.11rc2 → truss-0.10.12}/README.md +0 -0
  20. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/README.md +0 -0
  21. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/README.md +0 -0
  22. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/android-arm-eabi/README.md +0 -0
  23. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/android-arm64/README.md +0 -0
  24. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/darwin-arm64/README.md +0 -0
  25. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/darwin-universal/README.md +0 -0
  26. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/darwin-x64/README.md +0 -0
  27. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/freebsd-x64/README.md +0 -0
  28. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-arm-gnueabihf/README.md +0 -0
  29. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-arm-musleabihf/README.md +0 -0
  30. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-arm64-gnu/README.md +0 -0
  31. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-arm64-musl/README.md +0 -0
  32. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-riscv64-gnu/README.md +0 -0
  33. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-x64-gnu/README.md +0 -0
  34. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/linux-x64-musl/README.md +0 -0
  35. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/win32-arm64-msvc/README.md +0 -0
  36. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/win32-ia32-msvc/README.md +0 -0
  37. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/node_bindings/npm/win32-x64-msvc/README.md +0 -0
  38. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/python_bindings/README.md +0 -0
  39. {truss-0.10.11rc2 → truss-0.10.12}/baseten-performance-client/scripts/README_nodejs.md +0 -0
  40. {truss-0.10.11rc2 → truss-0.10.12}/context_builder.Dockerfile +0 -0
  41. {truss-0.10.11rc2 → truss-0.10.12}/docs/README.md +0 -0
  42. {truss-0.10.11rc2 → truss-0.10.12}/docs/chains/doc_gen/README.md +0 -0
  43. {truss-0.10.11rc2 → truss-0.10.12}/docs/contribute/base-images.md +0 -0
  44. {truss-0.10.11rc2 → truss-0.10.12}/docs/contribute/release.md +0 -0
  45. {truss-0.10.11rc2 → truss-0.10.12}/truss/__init__.py +0 -0
  46. {truss-0.10.11rc2 → truss-0.10.12}/truss/api/__init__.py +0 -0
  47. {truss-0.10.11rc2 → truss-0.10.12}/truss/api/definitions.py +0 -0
  48. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/__init__.py +0 -0
  49. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/constants.py +0 -0
  50. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/custom_types.py +0 -0
  51. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/errors.py +0 -0
  52. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/trt_llm_config.py +0 -0
  53. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/truss_config.py +0 -0
  54. {truss-0.10.11rc2 → truss-0.10.12}/truss/base/truss_spec.py +0 -0
  55. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/chains_commands.py +0 -0
  56. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/cli.py +0 -0
  57. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/logs/base_watcher.py +0 -0
  58. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/logs/model_log_watcher.py +0 -0
  59. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/logs/training_log_watcher.py +0 -0
  60. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/logs/utils.py +0 -0
  61. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/remote_cli.py +0 -0
  62. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_checkpoints/__init__.py +0 -0
  63. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_checkpoints/deploy_checkpoints.py +0 -0
  64. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py +0 -0
  65. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py +0 -0
  66. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py +0 -0
  67. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py +0 -0
  68. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_from_checkpoint_config.yml +0 -0
  69. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/deploy_from_checkpoint_config_whisper.yml +0 -0
  70. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/poller.py +0 -0
  71. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/train/types.py +0 -0
  72. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/utils/output.py +0 -0
  73. {truss-0.10.11rc2 → truss-0.10.12}/truss/cli/utils/self_upgrade.py +0 -0
  74. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/docker_build_setup.py +0 -0
  75. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/image_builder/cache_warmer.py +0 -0
  76. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/image_builder/image_builder.py +0 -0
  77. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/image_builder/serving_image_builder.py +0 -0
  78. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/image_builder/util.py +0 -0
  79. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/local_loader/docker_build_emulator.py +0 -0
  80. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/local_loader/dockerfile_parser.py +0 -0
  81. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/local_loader/load_model_local.py +0 -0
  82. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/local_loader/truss_module_loader.py +0 -0
  83. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/local_loader/utils.py +0 -0
  84. {truss-0.10.11rc2 → truss-0.10.12}/truss/contexts/truss_context.py +0 -0
  85. {truss-0.10.11rc2 → truss-0.10.12}/truss/local/local_config.py +0 -0
  86. {truss-0.10.11rc2 → truss-0.10.12}/truss/local/local_config_handler.py +0 -0
  87. {truss-0.10.11rc2 → truss-0.10.12}/truss/patch/__init__.py +0 -0
  88. {truss-0.10.11rc2 → truss-0.10.12}/truss/patch/hash.py +0 -0
  89. {truss-0.10.11rc2 → truss-0.10.12}/truss/patch/signature.py +0 -0
  90. {truss-0.10.11rc2 → truss-0.10.12}/truss/patch/truss_dir_patch_applier.py +0 -0
  91. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/__init__.py +0 -0
  92. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/auth.py +0 -0
  93. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/core.py +0 -0
  94. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/error.py +0 -0
  95. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/remote.py +0 -0
  96. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/rest_client.py +0 -0
  97. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/service.py +0 -0
  98. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/utils/status.py +0 -0
  99. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/utils/tar.py +0 -0
  100. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/utils/time.py +0 -0
  101. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/baseten/utils/transfer.py +0 -0
  102. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/remote_factory.py +0 -0
  103. {truss-0.10.11rc2 → truss-0.10.12}/truss/remote/truss_remote.py +0 -0
  104. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/README.md.jinja +0 -0
  105. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/__init__.py +0 -0
  106. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/base.Dockerfile.jinja +0 -0
  107. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/cache.Dockerfile.jinja +0 -0
  108. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/cache_requirements.txt +0 -0
  109. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/application.py +0 -0
  110. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/endpoints.py +0 -0
  111. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/context_managers.py +0 -0
  112. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/custom_types.py +0 -0
  113. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/errors.py +0 -0
  114. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/inference_server_controller.py +0 -0
  115. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/inference_server_process_controller.py +0 -0
  116. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/inference_server_starter.py +0 -0
  117. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/truss_patch/__init__.py +0 -0
  118. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/truss_patch/model_code_patch_applier.py +0 -0
  119. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py +0 -0
  120. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/truss_patch/requirement_name_identifier.py +0 -0
  121. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/helpers/truss_patch/system_packages.py +0 -0
  122. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/control/server.py +0 -0
  123. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/control/requirements.txt +0 -0
  124. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/copy_cache_files.Dockerfile.jinja +0 -0
  125. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/custom/examples.yaml +0 -0
  126. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/custom/model/__init__.py +0 -0
  127. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/custom/model/model.py +0 -0
  128. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/custom_python_dx/my_model.py +0 -0
  129. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/docker_server/proxy.conf.jinja +0 -0
  130. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/docker_server/supervisord.conf.jinja +0 -0
  131. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/docker_server_requirements.txt +0 -0
  132. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/__init__.py +0 -0
  133. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/__init__.py +0 -0
  134. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/errors.py +0 -0
  135. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/patches/whisper/patch.py +0 -0
  136. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/patches.py +0 -0
  137. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/retry.py +0 -0
  138. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/schema.py +0 -0
  139. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/common/tracing.py +0 -0
  140. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/main.py +0 -0
  141. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/model_wrapper.py +0 -0
  142. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/requirements.txt +0 -0
  143. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server/truss_server.py +0 -0
  144. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/server.Dockerfile.jinja +0 -0
  145. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/__init__.py +0 -0
  146. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/dynamic_config_resolver.py +0 -0
  147. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/lazy_data_resolver.py +0 -0
  148. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/log_config.py +0 -0
  149. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/secrets_resolver.py +0 -0
  150. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/serialization.py +0 -0
  151. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/shared/util.py +0 -0
  152. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/model/model.py +0 -0
  153. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/sigint_patch.py +0 -0
  154. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/__init__.py +0 -0
  155. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/assets.py +0 -0
  156. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/batching.py +0 -0
  157. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/custom_types.py +0 -0
  158. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/modeling.py +0 -0
  159. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/tokenizer.py +0 -0
  160. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-audio/packages/whisper_trt/utils.py +0 -0
  161. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-briton/README.md +0 -0
  162. {truss-0.10.11rc2 → truss-0.10.12}/truss/templates/trtllm-briton/src/extension.py +0 -0
  163. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/__init__.py +0 -0
  164. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/cli/test_cli.py +0 -0
  165. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/cli/train/resources/test_deploy_from_checkpoint_config.yml +0 -0
  166. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/cli/train/test_deploy_checkpoints.py +0 -0
  167. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/cli/train/test_train_cli_core.py +0 -0
  168. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/conftest.py +0 -0
  169. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/contexts/image_builder/test_serving_image_builder.py +0 -0
  170. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/contexts/local_loader/test_load_local.py +0 -0
  171. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/contexts/local_loader/test_truss_module_finder.py +0 -0
  172. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/helpers.py +0 -0
  173. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/local/test_local_config_handler.py +0 -0
  174. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/patch/test_calc_patch.py +0 -0
  175. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/patch/test_dir_signature.py +0 -0
  176. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/patch/test_hash.py +0 -0
  177. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/patch/test_signature.py +0 -0
  178. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/patch/test_truss_dir_patch_applier.py +0 -0
  179. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/patch/test_types.py +0 -0
  180. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/baseten/conftest.py +0 -0
  181. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/baseten/test_api.py +0 -0
  182. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/baseten/test_auth.py +0 -0
  183. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/baseten/test_core.py +0 -0
  184. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/baseten/test_remote.py +0 -0
  185. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/baseten/test_service.py +0 -0
  186. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/test_remote_factory.py +0 -0
  187. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/remote/test_truss_remote.py +0 -0
  188. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/control/control/helpers/test_context_managers.py +0 -0
  189. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/control/control/helpers/test_model_container_patch_applier.py +0 -0
  190. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/control/control/helpers/test_requirement_name_identifier.py +0 -0
  191. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/control/control/test_endpoints.py +0 -0
  192. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/control/control/test_server.py +0 -0
  193. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/control/control/test_server_integration.py +0 -0
  194. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/core/server/test_dynamic_config_resolver.py +0 -0
  195. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/core/server/test_lazy_data_resolver_v2.py +0 -0
  196. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/core/server/test_secrets_resolver.py +0 -0
  197. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/server/common/test_retry.py +0 -0
  198. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/server/test_model_wrapper.py +0 -0
  199. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/server/test_schema.py +0 -0
  200. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/templates/server/test_truss_server.py +0 -0
  201. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_build.py +0 -0
  202. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_config.py +0 -0
  203. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_context_builder_image.py +0 -0
  204. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_control_truss_patching.py +0 -0
  205. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_custom_server.py +0 -0
  206. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/__init__.py +0 -0
  207. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/annotated_types_truss/__init__.py +0 -0
  208. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/annotated_types_truss/config.yaml +0 -0
  209. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/annotated_types_truss/model/__init__.py +0 -0
  210. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/annotated_types_truss/model/model.py +0 -0
  211. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/auto-mpg.data +0 -0
  212. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/context_builder_image_test/Dockerfile +0 -0
  213. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/context_builder_image_test/__init__.py +0 -0
  214. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/context_builder_image_test/test.py +0 -0
  215. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/gcs_fix/__init__.py +0 -0
  216. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/gcs_fix/config.yaml +0 -0
  217. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/gcs_fix/model/__init__.py +0 -0
  218. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/gcs_fix/model/model.py +0 -0
  219. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/happy.ipynb +0 -0
  220. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/model_load_failure_test/__init__.py +0 -0
  221. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/model_load_failure_test/config.yaml +0 -0
  222. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/model_load_failure_test/model/__init__.py +0 -0
  223. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/model_load_failure_test/model/model.py +0 -0
  224. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/patch_ping_test_server/__init__.py +0 -0
  225. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/patch_ping_test_server/app.py +0 -0
  226. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/pima-indians-diabetes.csv +0 -0
  227. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/readme_int_example.md +0 -0
  228. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/readme_no_example.md +0 -0
  229. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/readme_str_example.md +0 -0
  230. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/server.Dockerfile +0 -0
  231. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/server_conformance_test_truss/__init__.py +0 -0
  232. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/server_conformance_test_truss/config.yaml +0 -0
  233. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/server_conformance_test_truss/model/__init__.py +0 -0
  234. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/server_conformance_test_truss/model/model.py +0 -0
  235. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_async_truss/__init__.py +0 -0
  236. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_async_truss/config.yaml +0 -0
  237. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_async_truss/model/__init__.py +0 -0
  238. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_async_truss/model/model.py +0 -0
  239. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_basic_truss/__init__.py +0 -0
  240. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_basic_truss/config.yaml +0 -0
  241. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_basic_truss/model/__init__.py +0 -0
  242. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_basic_truss/model/model.py +0 -0
  243. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands/__init__.py +0 -0
  244. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands/config.yaml +0 -0
  245. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands/model/__init__.py +0 -0
  246. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands/model/model.py +0 -0
  247. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands_failure/__init__.py +0 -0
  248. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands_failure/config.yaml +0 -0
  249. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands_failure/model/__init__.py +0 -0
  250. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_build_commands_failure/model/model.py +0 -0
  251. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_concurrency_truss/__init__.py +0 -0
  252. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_concurrency_truss/config.yaml +0 -0
  253. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_concurrency_truss/model/__init__.py +0 -0
  254. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_concurrency_truss/model/model.py +0 -0
  255. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/__init__.py +0 -0
  256. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/config.yaml +0 -0
  257. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/test_docker_image/Dockerfile +0 -0
  258. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/test_docker_image/README.md +0 -0
  259. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/test_docker_image/VERSION +0 -0
  260. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/test_docker_image/__init__.py +0 -0
  261. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/test_docker_image/app.py +0 -0
  262. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_custom_server_truss/test_docker_image/build_upload_new_image.sh +0 -0
  263. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_env_vars/config.yaml +0 -0
  264. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_go_custom_server_truss/config.yaml +0 -0
  265. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_go_custom_server_truss/docker/Dockerfile +0 -0
  266. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_go_custom_server_truss/docker/README.md +0 -0
  267. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_go_custom_server_truss/docker/VERSION +0 -0
  268. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_go_custom_server_truss/docker/build_upload_new_image.sh +0 -0
  269. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_go_custom_server_truss/docker/main.go +0 -0
  270. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_openai/__init__.py +0 -0
  271. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_openai/config.yaml +0 -0
  272. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_openai/model/__init__.py +0 -0
  273. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_openai/model/model.py +0 -0
  274. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v1/__init__.py +0 -0
  275. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v1/config.yaml +0 -0
  276. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v1/model/__init__.py +0 -0
  277. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v1/model/model.py +0 -0
  278. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v1/requirements.txt +0 -0
  279. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v2/__init__.py +0 -0
  280. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v2/config.yaml +0 -0
  281. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v2/model/__init__.py +0 -0
  282. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v2/model/model.py +0 -0
  283. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_pyantic_v2/requirements.txt +0 -0
  284. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_requirements_file_truss/__init__.py +0 -0
  285. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_requirements_file_truss/config.yaml +0 -0
  286. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_requirements_file_truss/model/__init__.py +0 -0
  287. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_requirements_file_truss/model/model.py +0 -0
  288. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_requirements_file_truss/requirements.txt +0 -0
  289. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_async_generator_truss/__init__.py +0 -0
  290. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_async_generator_truss/config.yaml +0 -0
  291. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_async_generator_truss/model/__init__.py +0 -0
  292. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_async_generator_truss/model/model.py +0 -0
  293. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_read_timeout/__init__.py +0 -0
  294. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_read_timeout/config.yaml +0 -0
  295. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_read_timeout/model/__init__.py +0 -0
  296. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_read_timeout/model/model.py +0 -0
  297. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss/__init__.py +0 -0
  298. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss/config.yaml +0 -0
  299. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss/model/__init__.py +0 -0
  300. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss/model/model.py +0 -0
  301. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/__init__.py +0 -0
  302. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/config.yaml +0 -0
  303. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/model/__init__.py +0 -0
  304. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/model/model.py +0 -0
  305. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/packages/__init__.py +0 -0
  306. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_1.py +0 -0
  307. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_2.py +0 -0
  308. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_tracing/__init__.py +0 -0
  309. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_tracing/config.yaml +0 -0
  310. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_tracing/model/__init__.py +0 -0
  311. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_streaming_truss_with_tracing/model/model.py +0 -0
  312. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_trt_llm_truss/__init__.py +0 -0
  313. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_trt_llm_truss/config.yaml +0 -0
  314. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_trt_llm_truss/model/__init__.py +0 -0
  315. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_trt_llm_truss/model/model.py +0 -0
  316. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/__init__.py +0 -0
  317. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/config.yaml +0 -0
  318. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/examples.yaml +0 -0
  319. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/model/__init__.py +0 -0
  320. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/model/dummy +0 -0
  321. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/model/model.py +0 -0
  322. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/packages/__init__.py +0 -0
  323. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/packages/test_package/__init__.py +0 -0
  324. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss/packages/test_package/test.py +0 -0
  325. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v1/__init__.py +0 -0
  326. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml +0 -0
  327. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v1/model/__init__.py +0 -0
  328. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v1/model/model.py +0 -0
  329. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v2/__init__.py +0 -0
  330. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v2/config.yaml +0 -0
  331. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v2/model/__init__.py +0 -0
  332. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_server_model_cache_v2/model/model.py +0 -0
  333. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/__init__.py +0 -0
  334. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/config.yaml +0 -0
  335. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/model/__init__.py +0 -0
  336. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/model/model.py +0 -0
  337. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/packages/__init__.py +0 -0
  338. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/packages/helpers_1.py +0 -0
  339. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_data/test_truss_with_error/packages/helpers_2.py +0 -0
  340. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_docker.py +0 -0
  341. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_model_inference.py +0 -0
  342. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_model_schema.py +0 -0
  343. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_testing_utilities_for_other_tests.py +0 -0
  344. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_truss_gatherer.py +0 -0
  345. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_truss_handle.py +0 -0
  346. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/test_util.py +0 -0
  347. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/trt_llm/test_trt_llm_config.py +0 -0
  348. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/trt_llm/test_validation.py +0 -0
  349. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/util/test_config_checks.py +0 -0
  350. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/util/test_env_vars.py +0 -0
  351. {truss-0.10.11rc2 → truss-0.10.12}/truss/tests/util/test_path.py +0 -0
  352. {truss-0.10.11rc2 → truss-0.10.12}/truss/trt_llm/config_checks.py +0 -0
  353. {truss-0.10.11rc2 → truss-0.10.12}/truss/trt_llm/validation.py +0 -0
  354. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/__init__.py +0 -0
  355. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/build.py +0 -0
  356. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/decorators.py +0 -0
  357. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/__init__.py +0 -0
  358. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/calc_patch.py +0 -0
  359. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/constants.py +0 -0
  360. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/custom_types.py +0 -0
  361. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/dir_signature.py +0 -0
  362. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/hash.py +0 -0
  363. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/local_truss_patch_applier.py +0 -0
  364. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/signature.py +0 -0
  365. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/patch/truss_dir_patch_applier.py +0 -0
  366. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/readme_generator.py +0 -0
  367. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/truss_gatherer.py +0 -0
  368. {truss-0.10.11rc2 → truss-0.10.12}/truss/truss_handle/truss_handle.py +0 -0
  369. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/.truss_ignore +0 -0
  370. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/docker.py +0 -0
  371. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/download.py +0 -0
  372. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/env_vars.py +0 -0
  373. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/gpu.py +0 -0
  374. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/jinja.py +0 -0
  375. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/log_utils.py +0 -0
  376. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/notebook.py +0 -0
  377. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/path.py +0 -0
  378. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/requirements.py +0 -0
  379. {truss-0.10.11rc2 → truss-0.10.12}/truss/util/user_config.py +0 -0
  380. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/examples/README.md +0 -0
  381. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/examples/audio-transcription/README.md +0 -0
  382. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/examples/rag/README.md +0 -0
  383. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/tests/itest_chain/requirements.txt +0 -0
  384. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/__init__.py +0 -0
  385. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/deployment/__init__.py +0 -0
  386. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/deployment/code_gen.py +0 -0
  387. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/deployment/deployment_client.py +0 -0
  388. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/framework.py +0 -0
  389. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/private_types.py +0 -0
  390. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/public_api.py +0 -0
  391. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/public_types.py +0 -0
  392. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/py.typed +0 -0
  393. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/pydantic_numpy.py +0 -0
  394. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/reference_code/reference_chainlet.py +0 -0
  395. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/reference_code/reference_model.py +0 -0
  396. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/remote_chainlet/__init__.py +0 -0
  397. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/remote_chainlet/model_skeleton.py +0 -0
  398. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/remote_chainlet/stub.py +0 -0
  399. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/remote_chainlet/utils.py +0 -0
  400. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/streaming.py +0 -0
  401. {truss-0.10.11rc2 → truss-0.10.12}/truss-chains/truss_chains/utils.py +0 -0
  402. {truss-0.10.11rc2 → truss-0.10.12}/truss-train/truss_train/__init__.py +0 -0
  403. {truss-0.10.11rc2 → truss-0.10.12}/truss-train/truss_train/definitions.py +0 -0
  404. {truss-0.10.11rc2 → truss-0.10.12}/truss-train/truss_train/loader.py +0 -0
  405. {truss-0.10.11rc2 → truss-0.10.12}/truss-train/truss_train/public_api.py +0 -0
  406. {truss-0.10.11rc2 → truss-0.10.12}/truss-transfer/README.md +0 -0
  407. {truss-0.10.11rc2 → truss-0.10.12}/truss-transfer/tests/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truss
3
- Version: 0.10.11rc2
3
+ Version: 0.10.12
4
4
  Summary: A seamless bridge from model development to model delivery
5
5
  Project-URL: Repository, https://github.com/basetenlabs/truss
6
6
  Project-URL: Homepage, https://truss.baseten.co
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "truss"
3
- version = "0.10.11rc2"
3
+ version = "0.10.12"
4
4
  description = "A seamless bridge from model development to model delivery"
5
5
  authors = [
6
6
  { name = "Pankaj Gupta", email = "no-reply@baseten.co" },
@@ -5,6 +5,12 @@ import rich_click as click
5
5
  from truss.cli.utils.output import console
6
6
  from truss.remote.baseten import BasetenRemote
7
7
 
8
+ # Byte size constants
9
+ BYTES_PER_KB = 1000
10
+ BYTES_PER_MB = BYTES_PER_KB * 1000
11
+ BYTES_PER_GB = BYTES_PER_MB * 1000
12
+ BYTES_PER_TB = BYTES_PER_GB * 1000
13
+
8
14
 
9
15
  def get_most_recent_job(
10
16
  remote_provider: BasetenRemote, project_id: Optional[str], job_id: Optional[str]
@@ -27,3 +33,16 @@ def get_most_recent_job(
27
33
  project_id = cast(str, job["training_project"]["id"])
28
34
  job_id = cast(str, job["id"])
29
35
  return project_id, job_id
36
+
37
+
38
+ def format_bytes_to_human_readable(bytes: int) -> str:
39
+ if bytes > BYTES_PER_TB:
40
+ return f"{bytes / BYTES_PER_TB:.2f} TB"
41
+ if bytes > BYTES_PER_GB:
42
+ return f"{bytes / BYTES_PER_GB:.2f} GB"
43
+ elif bytes > BYTES_PER_MB:
44
+ return f"{bytes / BYTES_PER_MB:.2f} MB"
45
+ elif bytes > BYTES_PER_KB:
46
+ return f"{bytes / BYTES_PER_KB:.2f} KB"
47
+ else:
48
+ return f"{bytes} B"
@@ -20,6 +20,14 @@ from truss.remote.baseten.remote import BasetenRemote
20
20
  from truss_train import loader
21
21
  from truss_train.definitions import DeployCheckpointsConfig
22
22
 
23
+ SORT_BY_FILEPATH = "filepath"
24
+ SORT_BY_SIZE = "size"
25
+ SORT_BY_MODIFIED = "modified"
26
+ SORT_BY_TYPE = "type"
27
+ SORT_BY_PERMISSIONS = "permissions"
28
+ SORT_ORDER_ASC = "asc"
29
+ SORT_ORDER_DESC = "desc"
30
+
23
31
  ACTIVE_JOB_STATUSES = [
24
32
  "TRAINING_JOB_RUNNING",
25
33
  "TRAINING_JOB_CREATED",
@@ -401,3 +409,131 @@ def download_checkpoint_artifacts(
401
409
 
402
410
  def status_page_url(remote_url: str, training_job_id: str) -> str:
403
411
  return f"{remote_url}/training/jobs/{training_job_id}"
412
+
413
+
414
+ def fetch_project_by_name_or_id(
415
+ remote_provider: BasetenRemote, project_identifier: str
416
+ ) -> dict:
417
+ """Fetch a training project by name or ID.
418
+
419
+ Args:
420
+ remote_provider: The remote provider instance
421
+ project_identifier: Either a project ID or project name
422
+
423
+ Returns:
424
+ The project object as a dictionary
425
+
426
+ Raises:
427
+ click.ClickException: If the project is not found
428
+ """
429
+ try:
430
+ projects = remote_provider.api.list_training_projects()
431
+ projects_by_name = {project.get("name"): project for project in projects}
432
+ projects_by_id = {project.get("id"): project for project in projects}
433
+ if project_identifier in projects_by_id:
434
+ return projects_by_id[project_identifier]
435
+ if project_identifier in projects_by_name:
436
+ return projects_by_name[project_identifier]
437
+ valid_project_ids_and_names = ", ".join(
438
+ [f"{project.get('id')} ({project.get('name')})" for project in projects]
439
+ )
440
+ raise click.ClickException(
441
+ f"Project '{project_identifier}' not found. Valid project IDs and names: {valid_project_ids_and_names}"
442
+ )
443
+ except click.ClickException:
444
+ raise
445
+ except Exception as e:
446
+ raise click.ClickException(f"Error fetching project: {str(e)}")
447
+
448
+
449
+ def view_cache_summary(
450
+ remote_provider: BasetenRemote,
451
+ project_id: str,
452
+ sort_by: str = SORT_BY_FILEPATH,
453
+ order: str = SORT_ORDER_ASC,
454
+ ):
455
+ """View cache summary for a training project."""
456
+ try:
457
+ cache_data = remote_provider.api.get_cache_summary(project_id)
458
+
459
+ if not cache_data:
460
+ console.print("No cache summary found for this project.", style="yellow")
461
+ return
462
+
463
+ table = rich.table.Table(title=f"Cache summary for project: {project_id}")
464
+ table.add_column("File Path", style="cyan")
465
+ table.add_column("Size", style="green")
466
+ table.add_column("Modified", style="yellow")
467
+ table.add_column("Type")
468
+ table.add_column("Permissions", style="magenta")
469
+
470
+ files = cache_data.get("file_summaries", [])
471
+ if not files:
472
+ console.print("No files found in cache.", style="yellow")
473
+ return
474
+
475
+ reverse = order == SORT_ORDER_DESC
476
+
477
+ if sort_by == SORT_BY_FILEPATH:
478
+ files.sort(key=lambda x: x.get("path", ""), reverse=reverse)
479
+ elif sort_by == SORT_BY_SIZE:
480
+ files.sort(key=lambda x: x.get("size_bytes", 0), reverse=reverse)
481
+ elif sort_by == SORT_BY_MODIFIED:
482
+ files.sort(key=lambda x: x.get("modified", ""), reverse=reverse)
483
+ elif sort_by == SORT_BY_TYPE:
484
+ files.sort(key=lambda x: x.get("file_type", ""), reverse=reverse)
485
+ elif sort_by == SORT_BY_PERMISSIONS:
486
+ files.sort(key=lambda x: x.get("permissions", ""), reverse=reverse)
487
+
488
+ total_size = 0
489
+ for file_info in files:
490
+ total_size += file_info.get("size_bytes", 0)
491
+
492
+ total_size_str = common.format_bytes_to_human_readable(total_size)
493
+
494
+ console.print(
495
+ f"📅 Cache captured at: {cache_data.get('timestamp', 'Unknown')}",
496
+ style="bold blue",
497
+ )
498
+ console.print(
499
+ f"📁 Project ID: {cache_data.get('project_id', 'Unknown')}",
500
+ style="bold blue",
501
+ )
502
+ console.print()
503
+ console.print(f"📊 Total files: {len(files)}", style="bold green")
504
+ console.print(f"💾 Total size: {total_size_str}", style="bold green")
505
+ console.print()
506
+
507
+ for file_info in files:
508
+ size_bytes = file_info.get("size_bytes", 0)
509
+
510
+ size_str = cli_common.format_bytes_to_human_readable(int(size_bytes))
511
+
512
+ modified_str = cli_common.format_localized_time(
513
+ file_info.get("modified", "Unknown")
514
+ )
515
+
516
+ table.add_row(
517
+ file_info.get("path", "Unknown"),
518
+ size_str,
519
+ modified_str,
520
+ file_info.get("file_type", "Unknown"),
521
+ file_info.get("permissions", "Unknown"),
522
+ )
523
+
524
+ console.print(table)
525
+
526
+ except Exception as e:
527
+ console.print(f"Error fetching cache summary: {str(e)}", style="red")
528
+ raise
529
+
530
+
531
+ def view_cache_summary_by_project(
532
+ remote_provider: BasetenRemote,
533
+ project_identifier: str,
534
+ sort_by: str = SORT_BY_FILEPATH,
535
+ order: str = SORT_ORDER_ASC,
536
+ ):
537
+ """View cache summary for a training project by ID or name."""
538
+ project = fetch_project_by_name_or_id(remote_provider, project_identifier)
539
+ view_cache_summary(remote_provider, project["id"], sort_by, order)
@@ -35,18 +35,17 @@ class MetricsWatcher(TrainingPollerMixin):
35
35
 
36
36
  def _format_bytes(self, bytes_val: float) -> Tuple[str, str]:
37
37
  """Convert bytes to human readable format"""
38
+ default_color = "green"
38
39
  color_map = {"MB": "green", "GB": "cyan", "TB": "magenta"}
39
- unit = "MB"
40
- if bytes_val > 1024 * 1024 * 1024 * 1024:
40
+ unit = "B"
41
+ if bytes_val > 1000 * 1000 * 1000 * 1000:
41
42
  unit = "TB"
42
- elif bytes_val > 1024 * 1024 * 1024:
43
+ elif bytes_val > 1000 * 1000 * 1000:
43
44
  unit = "GB"
44
-
45
- if unit == "MB":
46
- return f"{bytes_val / (1024 * 1024):.2f} MB", color_map[unit]
47
- elif unit == "GB":
48
- return f"{bytes_val / (1024 * 1024 * 1024):.2f} GB", color_map[unit]
49
- return f"{bytes_val:.2f} bytes", color_map[unit]
45
+ elif bytes_val > 1000 * 1000:
46
+ unit = "MB"
47
+ color = color_map.get(unit, default_color)
48
+ return (common.format_bytes_to_human_readable(int(bytes_val)), color)
50
49
 
51
50
  def _format_storage_utilization(self, utilization: float) -> Tuple[str, str]:
52
51
  percent = round(utilization * 100, 4)
@@ -11,11 +11,21 @@ from truss.cli.logs import utils as cli_log_utils
11
11
  from truss.cli.logs.training_log_watcher import TrainingLogWatcher
12
12
  from truss.cli.train import common as train_common
13
13
  from truss.cli.train import core
14
+ from truss.cli.train.core import (
15
+ SORT_BY_FILEPATH,
16
+ SORT_BY_MODIFIED,
17
+ SORT_BY_PERMISSIONS,
18
+ SORT_BY_SIZE,
19
+ SORT_BY_TYPE,
20
+ SORT_ORDER_ASC,
21
+ SORT_ORDER_DESC,
22
+ )
14
23
  from truss.cli.utils import common
15
24
  from truss.cli.utils.output import console, error_console
16
25
  from truss.remote.baseten.core import get_training_job_logs_with_pagination
17
26
  from truss.remote.baseten.remote import BasetenRemote
18
27
  from truss.remote.remote_factory import RemoteFactory
28
+ from truss_train import TrainingJob
19
29
 
20
30
 
21
31
  @click.group()
@@ -27,15 +37,30 @@ truss_cli.add_command(train)
27
37
 
28
38
 
29
39
  def _print_training_job_success_message(
30
- job_id: str, remote_provider: BasetenRemote
40
+ job_id: str,
41
+ project_name: str,
42
+ job_object: TrainingJob,
43
+ remote_provider: BasetenRemote,
31
44
  ) -> None:
32
45
  """Print success message and helpful commands for a training job."""
33
46
  console.print("✨ Training job successfully created!", style="green")
47
+ should_print_cache_summary = (
48
+ job_object.runtime.enable_cache
49
+ or job_object.runtime.cache_config
50
+ and job_object.runtime.cache_config.enabled
51
+ )
52
+ cache_summary_snippet = ""
53
+ if should_print_cache_summary:
54
+ cache_summary_snippet = (
55
+ f"📁 View cache summary via "
56
+ f"[cyan]'truss train cache summarize --project {project_name}'[/cyan]\n"
57
+ )
34
58
  console.print(
35
59
  f"🪵 View logs for your job via "
36
60
  f"[cyan]'truss train logs --job-id {job_id} --tail'[/cyan]\n"
37
61
  f"🔍 View metrics for your job via "
38
62
  f"[cyan]'truss train metrics --job-id {job_id}'[/cyan]\n"
63
+ f"{cache_summary_snippet}"
39
64
  f"🌐 Status page: {common.format_link(core.status_page_url(remote_provider.remote_url, job_id))}"
40
65
  )
41
66
 
@@ -44,6 +69,7 @@ def _handle_post_create_logic(
44
69
  job_resp: dict, remote_provider: BasetenRemote, tail: bool
45
70
  ) -> None:
46
71
  project_id, job_id = job_resp["training_project"]["id"], job_resp["id"]
72
+ project_name = job_resp["training_project"]["name"]
47
73
 
48
74
  if job_resp.get("current_status", None) == "TRAINING_JOB_QUEUED":
49
75
  console.print(
@@ -51,7 +77,9 @@ def _handle_post_create_logic(
51
77
  style="green",
52
78
  )
53
79
  else:
54
- _print_training_job_success_message(job_id, remote_provider)
80
+ _print_training_job_success_message(
81
+ job_id, project_name, job_resp["job_object"], remote_provider
82
+ )
55
83
 
56
84
  if tail:
57
85
  watcher = TrainingLogWatcher(remote_provider.api, project_id, job_id)
@@ -351,3 +379,46 @@ def download_checkpoint_artifacts(job_id: Optional[str], remote: Optional[str])
351
379
  except Exception as e:
352
380
  error_console.print(f"Failed to download checkpoint artifacts data: {str(e)}")
353
381
  sys.exit(1)
382
+
383
+
384
+ @train.group(name="cache")
385
+ def cache():
386
+ """Cache-related subcommands for truss train"""
387
+
388
+
389
+ @cache.command(name="summarize")
390
+ @click.option(
391
+ "--project", type=str, required=True, help="Project ID or name to view cache for."
392
+ )
393
+ @click.option("--remote", type=str, required=False, help="Remote to use")
394
+ @click.option(
395
+ "--sort",
396
+ type=click.Choice(
397
+ [
398
+ SORT_BY_FILEPATH,
399
+ SORT_BY_SIZE,
400
+ SORT_BY_MODIFIED,
401
+ SORT_BY_TYPE,
402
+ SORT_BY_PERMISSIONS,
403
+ ]
404
+ ),
405
+ default=SORT_BY_FILEPATH,
406
+ help="Sort files by filepath, size, modified date, file type, or permissions.",
407
+ )
408
+ @click.option(
409
+ "--order",
410
+ type=click.Choice([SORT_ORDER_ASC, SORT_ORDER_DESC]),
411
+ default=SORT_ORDER_ASC,
412
+ help="Sort order: ascending or descending.",
413
+ )
414
+ @common.common_options()
415
+ def view_cache_summary(project: str, remote: Optional[str], sort: str, order: str):
416
+ """View cache summary for a training project"""
417
+ if not remote:
418
+ remote = remote_cli.inquire_remote_name()
419
+
420
+ remote_provider: BasetenRemote = cast(
421
+ BasetenRemote, RemoteFactory.create(remote=remote)
422
+ )
423
+
424
+ train_cli.view_cache_summary_by_project(remote_provider, project, sort, order)
@@ -186,4 +186,17 @@ def format_localized_time(iso_timestamp: str) -> str:
186
186
  iso_timestamp = iso_timestamp.replace("Z", "+00:00")
187
187
  utc_time = datetime.datetime.fromisoformat(iso_timestamp)
188
188
  local_time = utc_time.astimezone()
189
- return local_time.strftime("%Y-%m-%d %H:%M")
189
+ return local_time.strftime("%Y-%m-%d %H:%M:%S")
190
+
191
+
192
+ def format_bytes_to_human_readable(bytes: int) -> str:
193
+ if bytes > 1000 * 1000 * 1000 * 1000:
194
+ return f"{bytes / (1000 * 1000 * 1000 * 1000):.2f} TB"
195
+ if bytes > 1000 * 1000 * 1000:
196
+ return f"{bytes / (1000 * 1000 * 1000):.2f} GB"
197
+ elif bytes > 1000 * 1000:
198
+ return f"{bytes / (1000 * 1000):.2f} MB"
199
+ elif bytes > 1000:
200
+ return f"{bytes / 1000:.2f} KB"
201
+ else:
202
+ return f"{bytes} B"
@@ -669,6 +669,13 @@ class BasetenApi:
669
669
  # NB(nikhil): reverse order so latest logs are at the end
670
670
  return resp_json["logs"][::-1]
671
671
 
672
+ def get_cache_summary(self, project_id: str):
673
+ """Get cache summary for a training project."""
674
+ resp_json = self._rest_api_client.get(
675
+ f"v1/training_projects/{project_id}/cache/summary"
676
+ )
677
+ return resp_json
678
+
672
679
  def _fetch_log_batch(
673
680
  self, project_id: str, job_id: str, query_params: Dict[str, Any]
674
681
  ) -> List[Any]:
@@ -120,3 +120,31 @@ class TrussUserEnv(pydantic.BaseModel):
120
120
  class BlobType(Enum):
121
121
  MODEL = "model"
122
122
  TRAIN = "train"
123
+
124
+
125
+ class FileSummary(pydantic.BaseModel):
126
+ """Information about a file in the cache."""
127
+
128
+ path: str = pydantic.Field(description="Relative path of the file in the cache")
129
+ size_bytes: int = pydantic.Field(description="Size of the file in bytes")
130
+ modified: str = pydantic.Field(description="Last modification time of the file")
131
+ file_type: Optional[str] = pydantic.Field(
132
+ default=None,
133
+ description="Type of the file (e.g., 'file', 'directory', 'symlink')",
134
+ )
135
+ permissions: Optional[str] = pydantic.Field(
136
+ default=None,
137
+ description="File permissions in Unix symbolic format (e.g., 'drwxr-xr-x', '-rw-r--r--')",
138
+ )
139
+
140
+
141
+ class GetCacheSummaryResponseV1(pydantic.BaseModel):
142
+ """Response for getting cache summary."""
143
+
144
+ timestamp: str = pydantic.Field(
145
+ description="Timestamp when the cache summary was captured"
146
+ )
147
+ project_id: str = pydantic.Field(description="Project ID associated with the cache")
148
+ file_summaries: list[FileSummary] = pydantic.Field(
149
+ description="List of files in the cache"
150
+ )