truss 0.11.16__tar.gz → 0.11.17__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 (417) hide show
  1. {truss-0.11.16 → truss-0.11.17}/PKG-INFO +1 -1
  2. {truss-0.11.16 → truss-0.11.17}/pyproject.toml +1 -1
  3. {truss-0.11.16 → truss-0.11.17}/truss/cli/chains_commands.py +10 -0
  4. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/api.py +68 -4
  5. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/core.py +40 -0
  6. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/custom_types.py +1 -0
  7. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/remote.py +18 -0
  8. truss-0.11.17/truss/tests/cli/test_chains_cli.py +100 -0
  9. truss-0.11.17/truss/tests/remote/baseten/test_chain_upload.py +285 -0
  10. truss-0.11.17/truss/util/error_utils.py +37 -0
  11. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/deployment/deployment_client.py +7 -0
  12. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/private_types.py +3 -0
  13. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/public_api.py +3 -0
  14. {truss-0.11.16 → truss-0.11.17}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {truss-0.11.16 → truss-0.11.17}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  16. {truss-0.11.16 → truss-0.11.17}/.github/pull_request_template.md +0 -0
  17. {truss-0.11.16 → truss-0.11.17}/.gitignore +0 -0
  18. {truss-0.11.16 → truss-0.11.17}/CODE_OF_CONDUCT.md +0 -0
  19. {truss-0.11.16 → truss-0.11.17}/CONTRIBUTING.md +0 -0
  20. {truss-0.11.16 → truss-0.11.17}/LICENSE +0 -0
  21. {truss-0.11.16 → truss-0.11.17}/README.md +0 -0
  22. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/README.md +0 -0
  23. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/README.md +0 -0
  24. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/android-arm-eabi/README.md +0 -0
  25. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/android-arm64/README.md +0 -0
  26. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/darwin-arm64/README.md +0 -0
  27. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/darwin-universal/README.md +0 -0
  28. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/darwin-x64/README.md +0 -0
  29. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/freebsd-x64/README.md +0 -0
  30. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-arm-gnueabihf/README.md +0 -0
  31. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-arm-musleabihf/README.md +0 -0
  32. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-arm64-gnu/README.md +0 -0
  33. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-arm64-musl/README.md +0 -0
  34. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-riscv64-gnu/README.md +0 -0
  35. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-x64-gnu/README.md +0 -0
  36. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/linux-x64-musl/README.md +0 -0
  37. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/win32-arm64-msvc/README.md +0 -0
  38. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/win32-ia32-msvc/README.md +0 -0
  39. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/node_bindings/npm/win32-x64-msvc/README.md +0 -0
  40. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/python_bindings/README.md +0 -0
  41. {truss-0.11.16 → truss-0.11.17}/baseten-performance-client/scripts/README_nodejs.md +0 -0
  42. {truss-0.11.16 → truss-0.11.17}/context_builder.Dockerfile +0 -0
  43. {truss-0.11.16 → truss-0.11.17}/docs/README.md +0 -0
  44. {truss-0.11.16 → truss-0.11.17}/docs/chains/doc_gen/README.md +0 -0
  45. {truss-0.11.16 → truss-0.11.17}/docs/contribute/base-images.md +0 -0
  46. {truss-0.11.16 → truss-0.11.17}/docs/contribute/release.md +0 -0
  47. {truss-0.11.16 → truss-0.11.17}/truss/__init__.py +0 -0
  48. {truss-0.11.16 → truss-0.11.17}/truss/api/__init__.py +0 -0
  49. {truss-0.11.16 → truss-0.11.17}/truss/api/definitions.py +0 -0
  50. {truss-0.11.16 → truss-0.11.17}/truss/base/__init__.py +0 -0
  51. {truss-0.11.16 → truss-0.11.17}/truss/base/constants.py +0 -0
  52. {truss-0.11.16 → truss-0.11.17}/truss/base/custom_types.py +0 -0
  53. {truss-0.11.16 → truss-0.11.17}/truss/base/errors.py +0 -0
  54. {truss-0.11.16 → truss-0.11.17}/truss/base/trt_llm_config.py +0 -0
  55. {truss-0.11.16 → truss-0.11.17}/truss/base/truss_config.py +0 -0
  56. {truss-0.11.16 → truss-0.11.17}/truss/base/truss_spec.py +0 -0
  57. {truss-0.11.16 → truss-0.11.17}/truss/cli/cli.py +0 -0
  58. {truss-0.11.16 → truss-0.11.17}/truss/cli/logs/base_watcher.py +0 -0
  59. {truss-0.11.16 → truss-0.11.17}/truss/cli/logs/model_log_watcher.py +0 -0
  60. {truss-0.11.16 → truss-0.11.17}/truss/cli/logs/training_log_watcher.py +0 -0
  61. {truss-0.11.16 → truss-0.11.17}/truss/cli/logs/utils.py +0 -0
  62. {truss-0.11.16 → truss-0.11.17}/truss/cli/remote_cli.py +0 -0
  63. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/common.py +0 -0
  64. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/core.py +0 -0
  65. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_checkpoints/__init__.py +0 -0
  66. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_checkpoints/deploy_checkpoints.py +0 -0
  67. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py +0 -0
  68. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py +0 -0
  69. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py +0 -0
  70. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py +0 -0
  71. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_from_checkpoint_config.yml +0 -0
  72. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/deploy_from_checkpoint_config_whisper.yml +0 -0
  73. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/metrics_watcher.py +0 -0
  74. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/poller.py +0 -0
  75. {truss-0.11.16 → truss-0.11.17}/truss/cli/train/types.py +0 -0
  76. {truss-0.11.16 → truss-0.11.17}/truss/cli/train_commands.py +0 -0
  77. {truss-0.11.16 → truss-0.11.17}/truss/cli/utils/common.py +0 -0
  78. {truss-0.11.16 → truss-0.11.17}/truss/cli/utils/output.py +0 -0
  79. {truss-0.11.16 → truss-0.11.17}/truss/cli/utils/self_upgrade.py +0 -0
  80. {truss-0.11.16 → truss-0.11.17}/truss/contexts/docker_build_setup.py +0 -0
  81. {truss-0.11.16 → truss-0.11.17}/truss/contexts/image_builder/cache_warmer.py +0 -0
  82. {truss-0.11.16 → truss-0.11.17}/truss/contexts/image_builder/image_builder.py +0 -0
  83. {truss-0.11.16 → truss-0.11.17}/truss/contexts/image_builder/serving_image_builder.py +0 -0
  84. {truss-0.11.16 → truss-0.11.17}/truss/contexts/image_builder/util.py +0 -0
  85. {truss-0.11.16 → truss-0.11.17}/truss/contexts/local_loader/docker_build_emulator.py +0 -0
  86. {truss-0.11.16 → truss-0.11.17}/truss/contexts/local_loader/dockerfile_parser.py +0 -0
  87. {truss-0.11.16 → truss-0.11.17}/truss/contexts/local_loader/load_model_local.py +0 -0
  88. {truss-0.11.16 → truss-0.11.17}/truss/contexts/local_loader/truss_module_loader.py +0 -0
  89. {truss-0.11.16 → truss-0.11.17}/truss/contexts/local_loader/utils.py +0 -0
  90. {truss-0.11.16 → truss-0.11.17}/truss/contexts/truss_context.py +0 -0
  91. {truss-0.11.16 → truss-0.11.17}/truss/local/local_config.py +0 -0
  92. {truss-0.11.16 → truss-0.11.17}/truss/local/local_config_handler.py +0 -0
  93. {truss-0.11.16 → truss-0.11.17}/truss/patch/__init__.py +0 -0
  94. {truss-0.11.16 → truss-0.11.17}/truss/patch/hash.py +0 -0
  95. {truss-0.11.16 → truss-0.11.17}/truss/patch/signature.py +0 -0
  96. {truss-0.11.16 → truss-0.11.17}/truss/patch/truss_dir_patch_applier.py +0 -0
  97. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/__init__.py +0 -0
  98. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/auth.py +0 -0
  99. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/error.py +0 -0
  100. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/rest_client.py +0 -0
  101. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/service.py +0 -0
  102. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/utils/status.py +0 -0
  103. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/utils/tar.py +0 -0
  104. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/utils/time.py +0 -0
  105. {truss-0.11.16 → truss-0.11.17}/truss/remote/baseten/utils/transfer.py +0 -0
  106. {truss-0.11.16 → truss-0.11.17}/truss/remote/remote_factory.py +0 -0
  107. {truss-0.11.16 → truss-0.11.17}/truss/remote/truss_remote.py +0 -0
  108. {truss-0.11.16 → truss-0.11.17}/truss/templates/README.md.jinja +0 -0
  109. {truss-0.11.16 → truss-0.11.17}/truss/templates/__init__.py +0 -0
  110. {truss-0.11.16 → truss-0.11.17}/truss/templates/base.Dockerfile.jinja +0 -0
  111. {truss-0.11.16 → truss-0.11.17}/truss/templates/cache.Dockerfile.jinja +0 -0
  112. {truss-0.11.16 → truss-0.11.17}/truss/templates/cache_requirements.txt +0 -0
  113. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/application.py +0 -0
  114. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/endpoints.py +0 -0
  115. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/context_managers.py +0 -0
  116. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/custom_types.py +0 -0
  117. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/errors.py +0 -0
  118. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/inference_server_controller.py +0 -0
  119. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/inference_server_process_controller.py +0 -0
  120. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/inference_server_starter.py +0 -0
  121. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/truss_patch/__init__.py +0 -0
  122. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/truss_patch/model_code_patch_applier.py +0 -0
  123. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py +0 -0
  124. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/truss_patch/requirement_name_identifier.py +0 -0
  125. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/helpers/truss_patch/system_packages.py +0 -0
  126. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/control/server.py +0 -0
  127. {truss-0.11.16 → truss-0.11.17}/truss/templates/control/requirements.txt +0 -0
  128. {truss-0.11.16 → truss-0.11.17}/truss/templates/copy_cache_files.Dockerfile.jinja +0 -0
  129. {truss-0.11.16 → truss-0.11.17}/truss/templates/custom/examples.yaml +0 -0
  130. {truss-0.11.16 → truss-0.11.17}/truss/templates/custom/model/__init__.py +0 -0
  131. {truss-0.11.16 → truss-0.11.17}/truss/templates/custom/model/model.py +0 -0
  132. {truss-0.11.16 → truss-0.11.17}/truss/templates/custom_python_dx/my_model.py +0 -0
  133. {truss-0.11.16 → truss-0.11.17}/truss/templates/docker_server/proxy.conf.jinja +0 -0
  134. {truss-0.11.16 → truss-0.11.17}/truss/templates/docker_server/supervisord.conf.jinja +0 -0
  135. {truss-0.11.16 → truss-0.11.17}/truss/templates/docker_server_requirements.txt +0 -0
  136. {truss-0.11.16 → truss-0.11.17}/truss/templates/no_build.Dockerfile.jinja +0 -0
  137. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/__init__.py +0 -0
  138. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/__init__.py +0 -0
  139. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/errors.py +0 -0
  140. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/patches/whisper/patch.py +0 -0
  141. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/patches.py +0 -0
  142. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/retry.py +0 -0
  143. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/schema.py +0 -0
  144. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/common/tracing.py +0 -0
  145. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/main.py +0 -0
  146. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/model_wrapper.py +0 -0
  147. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/requirements.txt +0 -0
  148. {truss-0.11.16 → truss-0.11.17}/truss/templates/server/truss_server.py +0 -0
  149. {truss-0.11.16 → truss-0.11.17}/truss/templates/server.Dockerfile.jinja +0 -0
  150. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/__init__.py +0 -0
  151. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/dynamic_config_resolver.py +0 -0
  152. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/lazy_data_resolver.py +0 -0
  153. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/log_config.py +0 -0
  154. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/secrets_resolver.py +0 -0
  155. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/serialization.py +0 -0
  156. {truss-0.11.16 → truss-0.11.17}/truss/templates/shared/util.py +0 -0
  157. {truss-0.11.16 → truss-0.11.17}/truss/templates/train/config.py +0 -0
  158. {truss-0.11.16 → truss-0.11.17}/truss/templates/train/run.sh +0 -0
  159. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/model/model.py +0 -0
  160. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/sigint_patch.py +0 -0
  161. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/__init__.py +0 -0
  162. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/assets.py +0 -0
  163. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/batching.py +0 -0
  164. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/custom_types.py +0 -0
  165. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/modeling.py +0 -0
  166. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/tokenizer.py +0 -0
  167. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-audio/packages/whisper_trt/utils.py +0 -0
  168. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-briton/README.md +0 -0
  169. {truss-0.11.16 → truss-0.11.17}/truss/templates/trtllm-briton/src/extension.py +0 -0
  170. {truss-0.11.16 → truss-0.11.17}/truss/tests/__init__.py +0 -0
  171. {truss-0.11.16 → truss-0.11.17}/truss/tests/cli/test_cli.py +0 -0
  172. {truss-0.11.16 → truss-0.11.17}/truss/tests/cli/train/resources/test_deploy_from_checkpoint_config.yml +0 -0
  173. {truss-0.11.16 → truss-0.11.17}/truss/tests/cli/train/test_cache_view.py +0 -0
  174. {truss-0.11.16 → truss-0.11.17}/truss/tests/cli/train/test_deploy_checkpoints.py +0 -0
  175. {truss-0.11.16 → truss-0.11.17}/truss/tests/cli/train/test_train_cli_core.py +0 -0
  176. {truss-0.11.16 → truss-0.11.17}/truss/tests/cli/train/test_train_init.py +0 -0
  177. {truss-0.11.16 → truss-0.11.17}/truss/tests/conftest.py +0 -0
  178. {truss-0.11.16 → truss-0.11.17}/truss/tests/contexts/image_builder/test_serving_image_builder.py +0 -0
  179. {truss-0.11.16 → truss-0.11.17}/truss/tests/contexts/local_loader/test_load_local.py +0 -0
  180. {truss-0.11.16 → truss-0.11.17}/truss/tests/contexts/local_loader/test_truss_module_finder.py +0 -0
  181. {truss-0.11.16 → truss-0.11.17}/truss/tests/helpers.py +0 -0
  182. {truss-0.11.16 → truss-0.11.17}/truss/tests/local/test_local_config_handler.py +0 -0
  183. {truss-0.11.16 → truss-0.11.17}/truss/tests/patch/test_calc_patch.py +0 -0
  184. {truss-0.11.16 → truss-0.11.17}/truss/tests/patch/test_dir_signature.py +0 -0
  185. {truss-0.11.16 → truss-0.11.17}/truss/tests/patch/test_hash.py +0 -0
  186. {truss-0.11.16 → truss-0.11.17}/truss/tests/patch/test_signature.py +0 -0
  187. {truss-0.11.16 → truss-0.11.17}/truss/tests/patch/test_truss_dir_patch_applier.py +0 -0
  188. {truss-0.11.16 → truss-0.11.17}/truss/tests/patch/test_types.py +0 -0
  189. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/baseten/conftest.py +0 -0
  190. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/baseten/test_api.py +0 -0
  191. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/baseten/test_auth.py +0 -0
  192. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/baseten/test_core.py +0 -0
  193. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/baseten/test_remote.py +0 -0
  194. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/baseten/test_service.py +0 -0
  195. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/test_remote_factory.py +0 -0
  196. {truss-0.11.16 → truss-0.11.17}/truss/tests/remote/test_truss_remote.py +0 -0
  197. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/conftest.py +0 -0
  198. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/helpers/test_context_managers.py +0 -0
  199. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/helpers/test_model_container_patch_applier.py +0 -0
  200. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/helpers/test_requirement_name_identifier.py +0 -0
  201. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/test_endpoints.py +0 -0
  202. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/test_server.py +0 -0
  203. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/control/control/test_server_integration.py +0 -0
  204. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/core/server/test_dynamic_config_resolver.py +0 -0
  205. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/core/server/test_lazy_data_resolver_v2.py +0 -0
  206. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/core/server/test_secrets_resolver.py +0 -0
  207. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/server/common/test_retry.py +0 -0
  208. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/server/test_model_wrapper.py +0 -0
  209. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/server/test_schema.py +0 -0
  210. {truss-0.11.16 → truss-0.11.17}/truss/tests/templates/server/test_truss_server.py +0 -0
  211. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_build.py +0 -0
  212. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_config.py +0 -0
  213. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_context_builder_image.py +0 -0
  214. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_control_truss_patching.py +0 -0
  215. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_custom_server.py +0 -0
  216. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/__init__.py +0 -0
  217. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/annotated_types_truss/__init__.py +0 -0
  218. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/annotated_types_truss/config.yaml +0 -0
  219. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/annotated_types_truss/model/__init__.py +0 -0
  220. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/annotated_types_truss/model/model.py +0 -0
  221. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/auto-mpg.data +0 -0
  222. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/context_builder_image_test/Dockerfile +0 -0
  223. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/context_builder_image_test/__init__.py +0 -0
  224. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/context_builder_image_test/test.py +0 -0
  225. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/gcs_fix/__init__.py +0 -0
  226. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/gcs_fix/config.yaml +0 -0
  227. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/gcs_fix/model/__init__.py +0 -0
  228. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/gcs_fix/model/model.py +0 -0
  229. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/happy.ipynb +0 -0
  230. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/model_load_failure_test/__init__.py +0 -0
  231. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/model_load_failure_test/config.yaml +0 -0
  232. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/model_load_failure_test/model/__init__.py +0 -0
  233. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/model_load_failure_test/model/model.py +0 -0
  234. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/patch_ping_test_server/__init__.py +0 -0
  235. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/patch_ping_test_server/app.py +0 -0
  236. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/pima-indians-diabetes.csv +0 -0
  237. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/readme_int_example.md +0 -0
  238. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/readme_no_example.md +0 -0
  239. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/readme_str_example.md +0 -0
  240. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/server.Dockerfile +0 -0
  241. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/server_conformance_test_truss/__init__.py +0 -0
  242. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/server_conformance_test_truss/config.yaml +0 -0
  243. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/server_conformance_test_truss/model/__init__.py +0 -0
  244. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/server_conformance_test_truss/model/model.py +0 -0
  245. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_async_truss/__init__.py +0 -0
  246. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_async_truss/config.yaml +0 -0
  247. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_async_truss/model/__init__.py +0 -0
  248. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_async_truss/model/model.py +0 -0
  249. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_basic_truss/__init__.py +0 -0
  250. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_basic_truss/config.yaml +0 -0
  251. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_basic_truss/model/__init__.py +0 -0
  252. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_basic_truss/model/model.py +0 -0
  253. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands/__init__.py +0 -0
  254. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands/config.yaml +0 -0
  255. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands/model/__init__.py +0 -0
  256. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands/model/model.py +0 -0
  257. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands_failure/__init__.py +0 -0
  258. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands_failure/config.yaml +0 -0
  259. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands_failure/model/__init__.py +0 -0
  260. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_build_commands_failure/model/model.py +0 -0
  261. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_concurrency_truss/__init__.py +0 -0
  262. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_concurrency_truss/config.yaml +0 -0
  263. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_concurrency_truss/model/__init__.py +0 -0
  264. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_concurrency_truss/model/model.py +0 -0
  265. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/__init__.py +0 -0
  266. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/config.yaml +0 -0
  267. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/test_docker_image/Dockerfile +0 -0
  268. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/test_docker_image/README.md +0 -0
  269. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/test_docker_image/VERSION +0 -0
  270. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/test_docker_image/__init__.py +0 -0
  271. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/test_docker_image/app.py +0 -0
  272. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_custom_server_truss/test_docker_image/build_upload_new_image.sh +0 -0
  273. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_env_vars/config.yaml +0 -0
  274. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_go_custom_server_truss/config.yaml +0 -0
  275. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_go_custom_server_truss/docker/Dockerfile +0 -0
  276. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_go_custom_server_truss/docker/README.md +0 -0
  277. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_go_custom_server_truss/docker/VERSION +0 -0
  278. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_go_custom_server_truss/docker/build_upload_new_image.sh +0 -0
  279. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_go_custom_server_truss/docker/main.go +0 -0
  280. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_openai/__init__.py +0 -0
  281. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_openai/config.yaml +0 -0
  282. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_openai/model/__init__.py +0 -0
  283. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_openai/model/model.py +0 -0
  284. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v1/__init__.py +0 -0
  285. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v1/config.yaml +0 -0
  286. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v1/model/__init__.py +0 -0
  287. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v1/model/model.py +0 -0
  288. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v1/requirements.txt +0 -0
  289. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v2/__init__.py +0 -0
  290. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v2/config.yaml +0 -0
  291. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v2/model/__init__.py +0 -0
  292. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v2/model/model.py +0 -0
  293. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_pyantic_v2/requirements.txt +0 -0
  294. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_requirements_file_truss/__init__.py +0 -0
  295. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_requirements_file_truss/config.yaml +0 -0
  296. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_requirements_file_truss/model/__init__.py +0 -0
  297. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_requirements_file_truss/model/model.py +0 -0
  298. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_requirements_file_truss/requirements.txt +0 -0
  299. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_async_generator_truss/__init__.py +0 -0
  300. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_async_generator_truss/config.yaml +0 -0
  301. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_async_generator_truss/model/__init__.py +0 -0
  302. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_async_generator_truss/model/model.py +0 -0
  303. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_read_timeout/__init__.py +0 -0
  304. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_read_timeout/config.yaml +0 -0
  305. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_read_timeout/model/__init__.py +0 -0
  306. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_read_timeout/model/model.py +0 -0
  307. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss/__init__.py +0 -0
  308. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss/config.yaml +0 -0
  309. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss/model/__init__.py +0 -0
  310. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss/model/model.py +0 -0
  311. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/__init__.py +0 -0
  312. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/config.yaml +0 -0
  313. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/model/__init__.py +0 -0
  314. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/model/model.py +0 -0
  315. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/packages/__init__.py +0 -0
  316. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_1.py +0 -0
  317. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_2.py +0 -0
  318. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_tracing/__init__.py +0 -0
  319. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_tracing/config.yaml +0 -0
  320. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_tracing/model/__init__.py +0 -0
  321. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_streaming_truss_with_tracing/model/model.py +0 -0
  322. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_trt_llm_truss/__init__.py +0 -0
  323. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_trt_llm_truss/config.yaml +0 -0
  324. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_trt_llm_truss/model/__init__.py +0 -0
  325. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_trt_llm_truss/model/model.py +0 -0
  326. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/__init__.py +0 -0
  327. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/config.yaml +0 -0
  328. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/examples.yaml +0 -0
  329. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/model/__init__.py +0 -0
  330. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/model/dummy +0 -0
  331. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/model/model.py +0 -0
  332. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/packages/__init__.py +0 -0
  333. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/packages/test_package/__init__.py +0 -0
  334. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss/packages/test_package/test.py +0 -0
  335. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v1/__init__.py +0 -0
  336. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml +0 -0
  337. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v1/model/__init__.py +0 -0
  338. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v1/model/model.py +0 -0
  339. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v2/__init__.py +0 -0
  340. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v2/config.yaml +0 -0
  341. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v2/model/__init__.py +0 -0
  342. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_server_model_cache_v2/model/model.py +0 -0
  343. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/__init__.py +0 -0
  344. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/config.yaml +0 -0
  345. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/model/__init__.py +0 -0
  346. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/model/model.py +0 -0
  347. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/packages/__init__.py +0 -0
  348. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/packages/helpers_1.py +0 -0
  349. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_data/test_truss_with_error/packages/helpers_2.py +0 -0
  350. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_docker.py +0 -0
  351. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_model_inference.py +0 -0
  352. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_model_schema.py +0 -0
  353. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_testing_utilities_for_other_tests.py +0 -0
  354. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_truss_gatherer.py +0 -0
  355. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_truss_handle.py +0 -0
  356. {truss-0.11.16 → truss-0.11.17}/truss/tests/test_util.py +0 -0
  357. {truss-0.11.16 → truss-0.11.17}/truss/tests/trt_llm/test_trt_llm_config.py +0 -0
  358. {truss-0.11.16 → truss-0.11.17}/truss/tests/trt_llm/test_validation.py +0 -0
  359. {truss-0.11.16 → truss-0.11.17}/truss/tests/util/test_config_checks.py +0 -0
  360. {truss-0.11.16 → truss-0.11.17}/truss/tests/util/test_env_vars.py +0 -0
  361. {truss-0.11.16 → truss-0.11.17}/truss/tests/util/test_path.py +0 -0
  362. {truss-0.11.16 → truss-0.11.17}/truss/trt_llm/config_checks.py +0 -0
  363. {truss-0.11.16 → truss-0.11.17}/truss/trt_llm/validation.py +0 -0
  364. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/__init__.py +0 -0
  365. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/build.py +0 -0
  366. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/decorators.py +0 -0
  367. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/__init__.py +0 -0
  368. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/calc_patch.py +0 -0
  369. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/constants.py +0 -0
  370. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/custom_types.py +0 -0
  371. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/dir_signature.py +0 -0
  372. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/hash.py +0 -0
  373. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/local_truss_patch_applier.py +0 -0
  374. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/signature.py +0 -0
  375. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/patch/truss_dir_patch_applier.py +0 -0
  376. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/readme_generator.py +0 -0
  377. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/truss_gatherer.py +0 -0
  378. {truss-0.11.16 → truss-0.11.17}/truss/truss_handle/truss_handle.py +0 -0
  379. {truss-0.11.16 → truss-0.11.17}/truss/util/.truss_ignore +0 -0
  380. {truss-0.11.16 → truss-0.11.17}/truss/util/__init__.py +0 -0
  381. {truss-0.11.16 → truss-0.11.17}/truss/util/docker.py +0 -0
  382. {truss-0.11.16 → truss-0.11.17}/truss/util/download.py +0 -0
  383. {truss-0.11.16 → truss-0.11.17}/truss/util/env_vars.py +0 -0
  384. {truss-0.11.16 → truss-0.11.17}/truss/util/gpu.py +0 -0
  385. {truss-0.11.16 → truss-0.11.17}/truss/util/jinja.py +0 -0
  386. {truss-0.11.16 → truss-0.11.17}/truss/util/log_utils.py +0 -0
  387. {truss-0.11.16 → truss-0.11.17}/truss/util/notebook.py +0 -0
  388. {truss-0.11.16 → truss-0.11.17}/truss/util/path.py +0 -0
  389. {truss-0.11.16 → truss-0.11.17}/truss/util/requirements.py +0 -0
  390. {truss-0.11.16 → truss-0.11.17}/truss/util/user_config.py +0 -0
  391. {truss-0.11.16 → truss-0.11.17}/truss-chains/examples/README.md +0 -0
  392. {truss-0.11.16 → truss-0.11.17}/truss-chains/examples/audio-transcription/README.md +0 -0
  393. {truss-0.11.16 → truss-0.11.17}/truss-chains/examples/rag/README.md +0 -0
  394. {truss-0.11.16 → truss-0.11.17}/truss-chains/tests/itest_chain/requirements.txt +0 -0
  395. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/__init__.py +0 -0
  396. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/deployment/__init__.py +0 -0
  397. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/deployment/code_gen.py +0 -0
  398. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/framework.py +0 -0
  399. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/public_types.py +0 -0
  400. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/py.typed +0 -0
  401. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/pydantic_numpy.py +0 -0
  402. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/reference_code/reference_chainlet.py +0 -0
  403. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/reference_code/reference_model.py +0 -0
  404. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/remote_chainlet/__init__.py +0 -0
  405. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/remote_chainlet/model_skeleton.py +0 -0
  406. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/remote_chainlet/stub.py +0 -0
  407. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/remote_chainlet/utils.py +0 -0
  408. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/streaming.py +0 -0
  409. {truss-0.11.16 → truss-0.11.17}/truss-chains/truss_chains/utils.py +0 -0
  410. {truss-0.11.16 → truss-0.11.17}/truss-train/truss_train/__init__.py +0 -0
  411. {truss-0.11.16 → truss-0.11.17}/truss-train/truss_train/definitions.py +0 -0
  412. {truss-0.11.16 → truss-0.11.17}/truss-train/truss_train/deployment.py +0 -0
  413. {truss-0.11.16 → truss-0.11.17}/truss-train/truss_train/loader.py +0 -0
  414. {truss-0.11.16 → truss-0.11.17}/truss-train/truss_train/public_api.py +0 -0
  415. {truss-0.11.16 → truss-0.11.17}/truss-train/truss_train/restore_from_checkpoint.py +0 -0
  416. {truss-0.11.16 → truss-0.11.17}/truss-transfer/README.md +0 -0
  417. {truss-0.11.16 → truss-0.11.17}/truss-transfer/tests/README.md +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truss
3
- Version: 0.11.16
3
+ Version: 0.11.17
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.11.16"
3
+ version = "0.11.17"
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" },
@@ -211,6 +211,14 @@ def _create_chains_table(service) -> Tuple[rich.table.Table, List[str]]:
211
211
  default=False,
212
212
  help=common.INCLUDE_GIT_INFO_DOC,
213
213
  )
214
+ @click.option(
215
+ "--disable-chain-download",
216
+ "disable_chain_download",
217
+ is_flag=True,
218
+ required=False,
219
+ default=False,
220
+ help="Disable downloading of pushed chain source code from the UI.",
221
+ )
214
222
  @click.pass_context
215
223
  @common.common_options()
216
224
  def push_chain(
@@ -227,6 +235,7 @@ def push_chain(
227
235
  environment: Optional[str],
228
236
  experimental_watch_chainlet_names: Optional[str],
229
237
  include_git_info: bool = False,
238
+ disable_chain_download: bool = False,
230
239
  ) -> None:
231
240
  """
232
241
  Deploys a chain remotely.
@@ -284,6 +293,7 @@ def push_chain(
284
293
  environment=environment,
285
294
  include_git_info=include_git_info,
286
295
  working_dir=source.parent if source.is_file() else source.resolve(),
296
+ disable_chain_download=disable_chain_download,
287
297
  )
288
298
  service = deployment_client.push(
289
299
  entrypoint_cls, options, progress_bar=progress.Progress
@@ -5,6 +5,7 @@ from typing import Any, Dict, List, Mapping, Optional
5
5
  import requests
6
6
  from pydantic import BaseModel, Field
7
7
 
8
+ from truss.base.custom_types import SafeModel
8
9
  from truss.remote.baseten import custom_types as b10_types
9
10
  from truss.remote.baseten.auth import ApiKey, AuthService
10
11
  from truss.remote.baseten.custom_types import APIKeyCategory
@@ -13,6 +14,29 @@ from truss.remote.baseten.rest_client import RestAPIClient
13
14
  from truss.remote.baseten.utils.transfer import base64_encoded_json_str
14
15
 
15
16
  logger = logging.getLogger(__name__)
17
+ PARAMS_INDENT = "\n "
18
+
19
+
20
+ class ChainAWSCredential(SafeModel):
21
+ aws_access_key_id: str
22
+ aws_secret_access_key: str
23
+ aws_session_token: str
24
+
25
+
26
+ class ChainUploadCredentials(SafeModel):
27
+ s3_bucket: str
28
+ s3_key: str
29
+ aws_access_key_id: str
30
+ aws_secret_access_key: str
31
+ aws_session_token: str
32
+
33
+ @property
34
+ def aws_credentials(self) -> ChainAWSCredential:
35
+ return ChainAWSCredential(
36
+ aws_access_key_id=self.aws_access_key_id,
37
+ aws_secret_access_key=self.aws_secret_access_key,
38
+ aws_session_token=self.aws_session_token,
39
+ )
16
40
 
17
41
 
18
42
  class InstanceTypeV1(BaseModel):
@@ -299,7 +323,11 @@ class BasetenApi:
299
323
  chain_name: Optional[str] = None,
300
324
  environment: Optional[str] = None,
301
325
  is_draft: bool = False,
326
+ original_source_artifact_s3_key: Optional[str] = None,
327
+ allow_truss_download: Optional[bool] = True,
302
328
  ):
329
+ if allow_truss_download is None:
330
+ allow_truss_download = True
303
331
  entrypoint_str = _chainlet_data_atomic_to_graphql_mutation(entrypoint)
304
332
 
305
333
  dependencies_str = ", ".join(
@@ -309,13 +337,28 @@ class BasetenApi:
309
337
  ]
310
338
  )
311
339
 
340
+ params = []
341
+ if chain_id:
342
+ params.append(f'chain_id: "{chain_id}"')
343
+ if chain_name:
344
+ params.append(f'chain_name: "{chain_name}"')
345
+ if environment:
346
+ params.append(f'environment: "{environment}"')
347
+ if original_source_artifact_s3_key:
348
+ params.append(
349
+ f'original_source_artifact_s3_key: "{original_source_artifact_s3_key}"'
350
+ )
351
+
352
+ params.append(f"is_draft: {str(is_draft).lower()}")
353
+ if allow_truss_download is False:
354
+ params.append("allow_truss_download: false")
355
+
356
+ params_str = PARAMS_INDENT.join(params)
357
+
312
358
  query_string = f"""
313
359
  mutation ($trussUserEnv: String) {{
314
360
  deploy_chain_atomic(
315
- {f'chain_id: "{chain_id}"' if chain_id else ""}
316
- {f'chain_name: "{chain_name}"' if chain_name else ""}
317
- {f'environment: "{environment}"' if environment else ""}
318
- is_draft: {str(is_draft).lower()}
361
+ {params_str}
319
362
  entrypoint: {entrypoint_str}
320
363
  dependencies: [{dependencies_str}]
321
364
  truss_user_env: $trussUserEnv
@@ -657,8 +700,29 @@ class BasetenApi:
657
700
  return resp_json["training_projects"]
658
701
 
659
702
  def get_blob_credentials(self, blob_type: b10_types.BlobType):
703
+ if blob_type == b10_types.BlobType.CHAIN:
704
+ return self.get_chain_s3_upload_credentials()
660
705
  return self._rest_api_client.get(f"v1/blobs/credentials/{blob_type.value}")
661
706
 
707
+ def get_chain_s3_upload_credentials(self) -> ChainUploadCredentials:
708
+ """Get chain artifact credentials using GraphQL query."""
709
+ query = """
710
+ query {
711
+ chain_s3_upload_credentials {
712
+ s3_bucket
713
+ s3_key
714
+ aws_access_key_id
715
+ aws_secret_access_key
716
+ aws_session_token
717
+ }
718
+ }
719
+ """
720
+ response = self._post_graphql_query(query)
721
+
722
+ return ChainUploadCredentials.model_validate(
723
+ response["data"]["chain_s3_upload_credentials"]
724
+ )
725
+
662
726
  def get_training_job_metrics(
663
727
  self,
664
728
  project_id: str,
@@ -8,6 +8,7 @@ from typing import IO, TYPE_CHECKING, Any, Dict, List, NamedTuple, Optional, Tup
8
8
  import requests
9
9
 
10
10
  from truss.base.errors import ValidationError
11
+ from truss.util.error_utils import handle_client_error
11
12
 
12
13
  if TYPE_CHECKING:
13
14
  from rich import progress
@@ -80,6 +81,8 @@ class ChainDeploymentHandleAtomic(NamedTuple):
80
81
  chain_id: str
81
82
  chain_deployment_id: str
82
83
  is_draft: bool
84
+ original_source_artifact_s3_key: Optional[str] = None
85
+ allow_truss_download: Optional[bool] = True
83
86
 
84
87
 
85
88
  class ModelVersionHandle(NamedTuple):
@@ -127,6 +130,8 @@ def create_chain_atomic(
127
130
  is_draft: bool,
128
131
  truss_user_env: b10_types.TrussUserEnv,
129
132
  environment: Optional[str],
133
+ original_source_artifact_s3_key: Optional[str] = None,
134
+ allow_truss_download: bool = True,
130
135
  ) -> ChainDeploymentHandleAtomic:
131
136
  if environment and is_draft:
132
137
  logging.info(
@@ -149,6 +154,8 @@ def create_chain_atomic(
149
154
  chain_name=chain_name,
150
155
  is_draft=True,
151
156
  truss_user_env=truss_user_env,
157
+ original_source_artifact_s3_key=original_source_artifact_s3_key,
158
+ allow_truss_download=allow_truss_download,
152
159
  )
153
160
  elif chain_id:
154
161
  # This is the only case where promote has relevance, since
@@ -162,6 +169,8 @@ def create_chain_atomic(
162
169
  chain_id=chain_id,
163
170
  environment=environment,
164
171
  truss_user_env=truss_user_env,
172
+ original_source_artifact_s3_key=original_source_artifact_s3_key,
173
+ allow_truss_download=allow_truss_download,
165
174
  )
166
175
  except ApiError as e:
167
176
  if (
@@ -182,6 +191,8 @@ def create_chain_atomic(
182
191
  dependencies=dependencies,
183
192
  chain_name=chain_name,
184
193
  truss_user_env=truss_user_env,
194
+ original_source_artifact_s3_key=original_source_artifact_s3_key,
195
+ allow_truss_download=allow_truss_download,
185
196
  )
186
197
 
187
198
  return ChainDeploymentHandleAtomic(
@@ -189,6 +200,8 @@ def create_chain_atomic(
189
200
  chain_id=res["chain_deployment"]["chain"]["id"],
190
201
  hostname=res["chain_deployment"]["chain"]["hostname"],
191
202
  is_draft=is_draft,
203
+ original_source_artifact_s3_key=original_source_artifact_s3_key,
204
+ allow_truss_download=allow_truss_download,
192
205
  )
193
206
 
194
207
 
@@ -342,6 +355,33 @@ def upload_truss(
342
355
  return s3_key
343
356
 
344
357
 
358
+ def upload_chain_artifact(
359
+ api: BasetenApi,
360
+ serialize_file: IO,
361
+ progress_bar: Optional[Type["progress.Progress"]],
362
+ ) -> str:
363
+ """
364
+ Upload a chain artifact to the Baseten remote.
365
+
366
+ Args:
367
+ api: BasetenApi instance
368
+ serialize_file: File-like object containing the serialized chain artifact
369
+
370
+ Returns:
371
+ The S3 key of the uploaded file
372
+ """
373
+ credentials = api.get_chain_s3_upload_credentials()
374
+ with handle_client_error("Uploading chain source"):
375
+ multipart_upload_boto3(
376
+ serialize_file.name,
377
+ credentials.s3_bucket,
378
+ credentials.s3_key,
379
+ credentials.aws_credentials.model_dump(),
380
+ progress_bar,
381
+ )
382
+ return credentials.s3_key
383
+
384
+
345
385
  def create_truss_service(
346
386
  api: BasetenApi,
347
387
  model_name: str,
@@ -120,6 +120,7 @@ class TrussUserEnv(pydantic.BaseModel):
120
120
  class BlobType(Enum):
121
121
  MODEL = "model"
122
122
  TRAIN = "train"
123
+ CHAIN = "chain"
123
124
 
124
125
 
125
126
  class FileSummary(pydantic.BaseModel):
@@ -31,6 +31,7 @@ from truss.remote.baseten.core import (
31
31
  get_model_and_versions,
32
32
  get_prod_version_from_versions,
33
33
  get_truss_watch_state,
34
+ upload_chain_artifact,
34
35
  upload_truss,
35
36
  validate_truss_config_against_backend,
36
37
  )
@@ -263,9 +264,11 @@ class BasetenRemote(TrussRemote):
263
264
  entrypoint_artifact: custom_types.ChainletArtifact,
264
265
  dependency_artifacts: List[custom_types.ChainletArtifact],
265
266
  truss_user_env: b10_types.TrussUserEnv,
267
+ chain_root: Optional[Path] = None,
266
268
  publish: bool = False,
267
269
  environment: Optional[str] = None,
268
270
  progress_bar: Optional[Type["progress.Progress"]] = None,
271
+ disable_chain_download: bool = False,
269
272
  ) -> ChainDeploymentHandleAtomic:
270
273
  # If we are promoting a model to an environment after deploy, it must be published.
271
274
  # Draft models cannot be promoted.
@@ -285,6 +288,7 @@ class BasetenRemote(TrussRemote):
285
288
  publish=publish,
286
289
  origin=custom_types.ModelOrigin.CHAINS,
287
290
  progress_bar=progress_bar,
291
+ disable_truss_download=disable_chain_download,
288
292
  )
289
293
  oracle_data = custom_types.OracleData(
290
294
  model_name=push_data.model_name,
@@ -300,6 +304,18 @@ class BasetenRemote(TrussRemote):
300
304
  )
301
305
  )
302
306
 
307
+ # Upload raw chain artifact if chain_root is provided
308
+ raw_chain_s3_key = None
309
+ if chain_root is not None:
310
+ logging.info("Uploading source artifact")
311
+ # Create a tar file from the chain root directory
312
+ original_source_tar = archive_dir(dir=chain_root, progress_bar=progress_bar)
313
+ # Upload the chain artifact to S3
314
+ raw_chain_s3_key = upload_chain_artifact(
315
+ api=self._api,
316
+ serialize_file=original_source_tar,
317
+ progress_bar=progress_bar,
318
+ )
303
319
  chain_deployment_handle = create_chain_atomic(
304
320
  api=self._api,
305
321
  chain_name=chain_name,
@@ -308,6 +324,8 @@ class BasetenRemote(TrussRemote):
308
324
  is_draft=not publish,
309
325
  truss_user_env=truss_user_env,
310
326
  environment=environment,
327
+ original_source_artifact_s3_key=raw_chain_s3_key,
328
+ allow_truss_download=not disable_chain_download,
311
329
  )
312
330
  logging.info("Successfully pushed to baseten. Chain is building and deploying.")
313
331
  return chain_deployment_handle
@@ -0,0 +1,100 @@
1
+ """Tests for truss chains CLI commands."""
2
+
3
+ from unittest.mock import Mock, patch
4
+
5
+ from click.testing import CliRunner
6
+
7
+ from truss.cli.cli import truss_cli
8
+
9
+
10
+ def test_chains_push_with_disable_chain_download_flag():
11
+ """Test that --disable-chain-download flag is properly parsed and passed through."""
12
+ runner = CliRunner()
13
+
14
+ mock_entrypoint_cls = Mock()
15
+ mock_entrypoint_cls.meta_data.chain_name = "test_chain"
16
+ mock_entrypoint_cls.display_name = "TestChain"
17
+
18
+ mock_service = Mock()
19
+ mock_service.run_remote_url = "http://test.com/run_remote"
20
+ mock_service.is_websocket = False
21
+
22
+ with patch(
23
+ "truss_chains.framework.ChainletImporter.import_target"
24
+ ) as mock_importer:
25
+ with patch("truss_chains.deployment.deployment_client.push") as mock_push:
26
+ mock_importer.return_value.__enter__.return_value = mock_entrypoint_cls
27
+ mock_push.return_value = mock_service
28
+
29
+ result = runner.invoke(
30
+ truss_cli,
31
+ [
32
+ "chains",
33
+ "push",
34
+ "test_chain.py",
35
+ "--disable-chain-download",
36
+ "--remote",
37
+ "test_remote",
38
+ "--dryrun",
39
+ ],
40
+ )
41
+
42
+ assert result.exit_code == 0
43
+
44
+ mock_push.assert_called_once()
45
+ call_args = mock_push.call_args
46
+ options = call_args[0][1]
47
+
48
+ assert hasattr(options, "disable_chain_download")
49
+ assert options.disable_chain_download is True
50
+
51
+
52
+ def test_chains_push_without_disable_chain_download_flag():
53
+ """Test that disable_chain_download defaults to False when flag is not provided."""
54
+ runner = CliRunner()
55
+
56
+ mock_entrypoint_cls = Mock()
57
+ mock_entrypoint_cls.meta_data.chain_name = "test_chain"
58
+ mock_entrypoint_cls.display_name = "TestChain"
59
+
60
+ mock_service = Mock()
61
+ mock_service.run_remote_url = "http://test.com/run_remote"
62
+ mock_service.is_websocket = False
63
+
64
+ with patch(
65
+ "truss_chains.framework.ChainletImporter.import_target"
66
+ ) as mock_importer:
67
+ with patch("truss_chains.deployment.deployment_client.push") as mock_push:
68
+ mock_importer.return_value.__enter__.return_value = mock_entrypoint_cls
69
+ mock_push.return_value = mock_service
70
+
71
+ result = runner.invoke(
72
+ truss_cli,
73
+ [
74
+ "chains",
75
+ "push",
76
+ "test_chain.py",
77
+ "--remote",
78
+ "test_remote",
79
+ "--dryrun",
80
+ ],
81
+ )
82
+
83
+ assert result.exit_code == 0
84
+
85
+ mock_push.assert_called_once()
86
+ call_args = mock_push.call_args
87
+ options = call_args[0][1]
88
+
89
+ assert hasattr(options, "disable_chain_download")
90
+ assert options.disable_chain_download is False
91
+
92
+
93
+ def test_chains_push_help_includes_disable_chain_download():
94
+ """Test that --disable-chain-download appears in the help output."""
95
+ runner = CliRunner()
96
+
97
+ result = runner.invoke(truss_cli, ["chains", "push", "--help"])
98
+
99
+ assert result.exit_code == 0
100
+ assert "--disable-chain-download" in result.output