truss 0.10.9rc546__tar.gz → 0.10.9rc548__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.
Files changed (408) hide show
  1. {truss-0.10.9rc546 → truss-0.10.9rc548}/PKG-INFO +1 -1
  2. {truss-0.10.9rc546 → truss-0.10.9rc548}/pyproject.toml +1 -1
  3. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/local_loader/docker_build_emulator.py +26 -8
  4. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/base.Dockerfile.jinja +9 -6
  5. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/cache.Dockerfile.jinja +3 -2
  6. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server.Dockerfile.jinja +13 -18
  7. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/control/control/test_server_integration.py +64 -41
  8. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/server/test_truss_server.py +17 -12
  9. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_model_inference.py +4 -2
  10. {truss-0.10.9rc546 → truss-0.10.9rc548}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  11. {truss-0.10.9rc546 → truss-0.10.9rc548}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  12. {truss-0.10.9rc546 → truss-0.10.9rc548}/.github/pull_request_template.md +0 -0
  13. {truss-0.10.9rc546 → truss-0.10.9rc548}/.gitignore +0 -0
  14. {truss-0.10.9rc546 → truss-0.10.9rc548}/CODE_OF_CONDUCT.md +0 -0
  15. {truss-0.10.9rc546 → truss-0.10.9rc548}/CONTRIBUTING.md +0 -0
  16. {truss-0.10.9rc546 → truss-0.10.9rc548}/LICENSE +0 -0
  17. {truss-0.10.9rc546 → truss-0.10.9rc548}/README.md +0 -0
  18. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/README.md +0 -0
  19. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/README.md +0 -0
  20. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/android-arm-eabi/README.md +0 -0
  21. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/android-arm64/README.md +0 -0
  22. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/darwin-arm64/README.md +0 -0
  23. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/darwin-universal/README.md +0 -0
  24. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/darwin-x64/README.md +0 -0
  25. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/freebsd-x64/README.md +0 -0
  26. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-arm-gnueabihf/README.md +0 -0
  27. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-arm-musleabihf/README.md +0 -0
  28. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-arm64-gnu/README.md +0 -0
  29. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-arm64-musl/README.md +0 -0
  30. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-riscv64-gnu/README.md +0 -0
  31. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-x64-gnu/README.md +0 -0
  32. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/linux-x64-musl/README.md +0 -0
  33. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/win32-arm64-msvc/README.md +0 -0
  34. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/win32-ia32-msvc/README.md +0 -0
  35. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/node_bindings/npm/win32-x64-msvc/README.md +0 -0
  36. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/python_bindings/README.md +0 -0
  37. {truss-0.10.9rc546 → truss-0.10.9rc548}/baseten-performance-client/scripts/README_nodejs.md +0 -0
  38. {truss-0.10.9rc546 → truss-0.10.9rc548}/context_builder.Dockerfile +0 -0
  39. {truss-0.10.9rc546 → truss-0.10.9rc548}/docs/README.md +0 -0
  40. {truss-0.10.9rc546 → truss-0.10.9rc548}/docs/chains/doc_gen/README.md +0 -0
  41. {truss-0.10.9rc546 → truss-0.10.9rc548}/docs/contribute/base-images.md +0 -0
  42. {truss-0.10.9rc546 → truss-0.10.9rc548}/docs/contribute/release.md +0 -0
  43. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/__init__.py +0 -0
  44. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/api/__init__.py +0 -0
  45. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/api/definitions.py +0 -0
  46. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/__init__.py +0 -0
  47. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/constants.py +0 -0
  48. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/custom_types.py +0 -0
  49. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/errors.py +0 -0
  50. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/trt_llm_config.py +0 -0
  51. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/truss_config.py +0 -0
  52. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/base/truss_spec.py +0 -0
  53. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/chains_commands.py +0 -0
  54. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/cli.py +0 -0
  55. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/logs/base_watcher.py +0 -0
  56. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/logs/model_log_watcher.py +0 -0
  57. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/logs/training_log_watcher.py +0 -0
  58. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/logs/utils.py +0 -0
  59. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/remote_cli.py +0 -0
  60. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/common.py +0 -0
  61. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/core.py +0 -0
  62. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_checkpoints/__init__.py +0 -0
  63. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_checkpoints/deploy_checkpoints.py +0 -0
  64. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py +0 -0
  65. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py +0 -0
  66. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py +0 -0
  67. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py +0 -0
  68. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_from_checkpoint_config.yml +0 -0
  69. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/deploy_from_checkpoint_config_whisper.yml +0 -0
  70. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/metrics_watcher.py +0 -0
  71. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/poller.py +0 -0
  72. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train/types.py +0 -0
  73. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/train_commands.py +0 -0
  74. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/utils/common.py +0 -0
  75. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/utils/output.py +0 -0
  76. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/cli/utils/self_upgrade.py +0 -0
  77. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/docker_build_setup.py +0 -0
  78. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/image_builder/cache_warmer.py +0 -0
  79. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/image_builder/image_builder.py +0 -0
  80. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/image_builder/serving_image_builder.py +0 -0
  81. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/image_builder/util.py +0 -0
  82. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/local_loader/dockerfile_parser.py +0 -0
  83. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/local_loader/load_model_local.py +0 -0
  84. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/local_loader/truss_module_loader.py +0 -0
  85. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/local_loader/utils.py +0 -0
  86. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/contexts/truss_context.py +0 -0
  87. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/local/local_config.py +0 -0
  88. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/local/local_config_handler.py +0 -0
  89. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/patch/__init__.py +0 -0
  90. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/patch/hash.py +0 -0
  91. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/patch/signature.py +0 -0
  92. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/patch/truss_dir_patch_applier.py +0 -0
  93. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/__init__.py +0 -0
  94. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/api.py +0 -0
  95. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/auth.py +0 -0
  96. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/core.py +0 -0
  97. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/custom_types.py +0 -0
  98. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/error.py +0 -0
  99. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/remote.py +0 -0
  100. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/rest_client.py +0 -0
  101. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/service.py +0 -0
  102. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/utils/status.py +0 -0
  103. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/utils/tar.py +0 -0
  104. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/utils/time.py +0 -0
  105. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/baseten/utils/transfer.py +0 -0
  106. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/remote_factory.py +0 -0
  107. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/remote/truss_remote.py +0 -0
  108. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/README.md.jinja +0 -0
  109. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/__init__.py +0 -0
  110. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/cache_requirements.txt +0 -0
  111. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/application.py +0 -0
  112. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/endpoints.py +0 -0
  113. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/context_managers.py +0 -0
  114. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/custom_types.py +0 -0
  115. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/errors.py +0 -0
  116. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/inference_server_controller.py +0 -0
  117. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/inference_server_process_controller.py +0 -0
  118. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/inference_server_starter.py +0 -0
  119. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/truss_patch/__init__.py +0 -0
  120. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/truss_patch/model_code_patch_applier.py +0 -0
  121. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py +0 -0
  122. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/truss_patch/requirement_name_identifier.py +0 -0
  123. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/helpers/truss_patch/system_packages.py +0 -0
  124. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/control/server.py +0 -0
  125. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/control/requirements.txt +0 -0
  126. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/copy_cache_files.Dockerfile.jinja +0 -0
  127. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/custom/examples.yaml +0 -0
  128. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/custom/model/__init__.py +0 -0
  129. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/custom/model/model.py +0 -0
  130. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/custom_python_dx/my_model.py +0 -0
  131. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/docker_server/proxy.conf.jinja +0 -0
  132. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/docker_server/supervisord.conf.jinja +0 -0
  133. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/docker_server_requirements.txt +0 -0
  134. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/__init__.py +0 -0
  135. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/__init__.py +0 -0
  136. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/errors.py +0 -0
  137. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/patches/whisper/patch.py +0 -0
  138. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/patches.py +0 -0
  139. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/retry.py +0 -0
  140. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/schema.py +0 -0
  141. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/common/tracing.py +0 -0
  142. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/main.py +0 -0
  143. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/model_wrapper.py +0 -0
  144. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/requirements.txt +0 -0
  145. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/server/truss_server.py +0 -0
  146. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/__init__.py +0 -0
  147. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/dynamic_config_resolver.py +0 -0
  148. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/lazy_data_resolver.py +0 -0
  149. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/log_config.py +0 -0
  150. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/secrets_resolver.py +0 -0
  151. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/serialization.py +0 -0
  152. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/shared/util.py +0 -0
  153. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/model/model.py +0 -0
  154. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/sigint_patch.py +0 -0
  155. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/__init__.py +0 -0
  156. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/assets.py +0 -0
  157. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/batching.py +0 -0
  158. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/custom_types.py +0 -0
  159. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/modeling.py +0 -0
  160. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/tokenizer.py +0 -0
  161. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-audio/packages/whisper_trt/utils.py +0 -0
  162. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-briton/README.md +0 -0
  163. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/templates/trtllm-briton/src/extension.py +0 -0
  164. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/__init__.py +0 -0
  165. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/cli/test_cli.py +0 -0
  166. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/cli/train/resources/test_deploy_from_checkpoint_config.yml +0 -0
  167. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/cli/train/test_deploy_checkpoints.py +0 -0
  168. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/cli/train/test_train_cli_core.py +0 -0
  169. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/conftest.py +0 -0
  170. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/contexts/image_builder/test_serving_image_builder.py +0 -0
  171. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/contexts/local_loader/test_load_local.py +0 -0
  172. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/contexts/local_loader/test_truss_module_finder.py +0 -0
  173. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/helpers.py +0 -0
  174. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/local/test_local_config_handler.py +0 -0
  175. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/patch/test_calc_patch.py +0 -0
  176. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/patch/test_dir_signature.py +0 -0
  177. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/patch/test_hash.py +0 -0
  178. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/patch/test_signature.py +0 -0
  179. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/patch/test_truss_dir_patch_applier.py +0 -0
  180. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/patch/test_types.py +0 -0
  181. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/baseten/conftest.py +0 -0
  182. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/baseten/test_api.py +0 -0
  183. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/baseten/test_auth.py +0 -0
  184. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/baseten/test_core.py +0 -0
  185. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/baseten/test_remote.py +0 -0
  186. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/baseten/test_service.py +0 -0
  187. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/test_remote_factory.py +0 -0
  188. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/remote/test_truss_remote.py +0 -0
  189. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/control/control/helpers/test_context_managers.py +0 -0
  190. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/control/control/helpers/test_model_container_patch_applier.py +0 -0
  191. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/control/control/helpers/test_requirement_name_identifier.py +0 -0
  192. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/control/control/test_endpoints.py +0 -0
  193. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/control/control/test_server.py +0 -0
  194. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/core/server/test_dynamic_config_resolver.py +0 -0
  195. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/core/server/test_lazy_data_resolver_v2.py +0 -0
  196. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/core/server/test_secrets_resolver.py +0 -0
  197. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/server/common/test_retry.py +0 -0
  198. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/server/test_model_wrapper.py +0 -0
  199. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/templates/server/test_schema.py +0 -0
  200. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_build.py +0 -0
  201. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_config.py +0 -0
  202. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_context_builder_image.py +0 -0
  203. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_control_truss_patching.py +0 -0
  204. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_custom_server.py +0 -0
  205. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/__init__.py +0 -0
  206. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/annotated_types_truss/__init__.py +0 -0
  207. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/annotated_types_truss/config.yaml +0 -0
  208. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/annotated_types_truss/model/__init__.py +0 -0
  209. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/annotated_types_truss/model/model.py +0 -0
  210. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/auto-mpg.data +0 -0
  211. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/context_builder_image_test/Dockerfile +0 -0
  212. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/context_builder_image_test/__init__.py +0 -0
  213. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/context_builder_image_test/test.py +0 -0
  214. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/gcs_fix/__init__.py +0 -0
  215. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/gcs_fix/config.yaml +0 -0
  216. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/gcs_fix/model/__init__.py +0 -0
  217. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/gcs_fix/model/model.py +0 -0
  218. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/happy.ipynb +0 -0
  219. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/model_load_failure_test/__init__.py +0 -0
  220. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/model_load_failure_test/config.yaml +0 -0
  221. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/model_load_failure_test/model/__init__.py +0 -0
  222. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/model_load_failure_test/model/model.py +0 -0
  223. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/patch_ping_test_server/__init__.py +0 -0
  224. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/patch_ping_test_server/app.py +0 -0
  225. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/pima-indians-diabetes.csv +0 -0
  226. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/readme_int_example.md +0 -0
  227. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/readme_no_example.md +0 -0
  228. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/readme_str_example.md +0 -0
  229. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/server.Dockerfile +0 -0
  230. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/server_conformance_test_truss/__init__.py +0 -0
  231. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/server_conformance_test_truss/config.yaml +0 -0
  232. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/server_conformance_test_truss/model/__init__.py +0 -0
  233. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/server_conformance_test_truss/model/model.py +0 -0
  234. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_async_truss/__init__.py +0 -0
  235. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_async_truss/config.yaml +0 -0
  236. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_async_truss/model/__init__.py +0 -0
  237. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_async_truss/model/model.py +0 -0
  238. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_basic_truss/__init__.py +0 -0
  239. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_basic_truss/config.yaml +0 -0
  240. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_basic_truss/model/__init__.py +0 -0
  241. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_basic_truss/model/model.py +0 -0
  242. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands/__init__.py +0 -0
  243. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands/config.yaml +0 -0
  244. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands/model/__init__.py +0 -0
  245. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands/model/model.py +0 -0
  246. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands_failure/__init__.py +0 -0
  247. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands_failure/config.yaml +0 -0
  248. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands_failure/model/__init__.py +0 -0
  249. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_build_commands_failure/model/model.py +0 -0
  250. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_concurrency_truss/__init__.py +0 -0
  251. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_concurrency_truss/config.yaml +0 -0
  252. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_concurrency_truss/model/__init__.py +0 -0
  253. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_concurrency_truss/model/model.py +0 -0
  254. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/__init__.py +0 -0
  255. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/config.yaml +0 -0
  256. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/test_docker_image/Dockerfile +0 -0
  257. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/test_docker_image/README.md +0 -0
  258. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/test_docker_image/VERSION +0 -0
  259. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/test_docker_image/__init__.py +0 -0
  260. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/test_docker_image/app.py +0 -0
  261. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_custom_server_truss/test_docker_image/build_upload_new_image.sh +0 -0
  262. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_env_vars/config.yaml +0 -0
  263. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_go_custom_server_truss/config.yaml +0 -0
  264. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_go_custom_server_truss/docker/Dockerfile +0 -0
  265. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_go_custom_server_truss/docker/README.md +0 -0
  266. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_go_custom_server_truss/docker/VERSION +0 -0
  267. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_go_custom_server_truss/docker/build_upload_new_image.sh +0 -0
  268. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_go_custom_server_truss/docker/main.go +0 -0
  269. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_openai/__init__.py +0 -0
  270. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_openai/config.yaml +0 -0
  271. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_openai/model/__init__.py +0 -0
  272. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_openai/model/model.py +0 -0
  273. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v1/__init__.py +0 -0
  274. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v1/config.yaml +0 -0
  275. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v1/model/__init__.py +0 -0
  276. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v1/model/model.py +0 -0
  277. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v1/requirements.txt +0 -0
  278. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v2/__init__.py +0 -0
  279. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v2/config.yaml +0 -0
  280. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v2/model/__init__.py +0 -0
  281. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v2/model/model.py +0 -0
  282. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_pyantic_v2/requirements.txt +0 -0
  283. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_requirements_file_truss/__init__.py +0 -0
  284. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_requirements_file_truss/config.yaml +0 -0
  285. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_requirements_file_truss/model/__init__.py +0 -0
  286. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_requirements_file_truss/model/model.py +0 -0
  287. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_requirements_file_truss/requirements.txt +0 -0
  288. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_async_generator_truss/__init__.py +0 -0
  289. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_async_generator_truss/config.yaml +0 -0
  290. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_async_generator_truss/model/__init__.py +0 -0
  291. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_async_generator_truss/model/model.py +0 -0
  292. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_read_timeout/__init__.py +0 -0
  293. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_read_timeout/config.yaml +0 -0
  294. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_read_timeout/model/__init__.py +0 -0
  295. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_read_timeout/model/model.py +0 -0
  296. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss/__init__.py +0 -0
  297. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss/config.yaml +0 -0
  298. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss/model/__init__.py +0 -0
  299. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss/model/model.py +0 -0
  300. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/__init__.py +0 -0
  301. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/config.yaml +0 -0
  302. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/model/__init__.py +0 -0
  303. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/model/model.py +0 -0
  304. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/packages/__init__.py +0 -0
  305. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_1.py +0 -0
  306. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_error/packages/helpers_2.py +0 -0
  307. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_tracing/__init__.py +0 -0
  308. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_tracing/config.yaml +0 -0
  309. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_tracing/model/__init__.py +0 -0
  310. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_streaming_truss_with_tracing/model/model.py +0 -0
  311. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_trt_llm_truss/__init__.py +0 -0
  312. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_trt_llm_truss/config.yaml +0 -0
  313. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_trt_llm_truss/model/__init__.py +0 -0
  314. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_trt_llm_truss/model/model.py +0 -0
  315. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/__init__.py +0 -0
  316. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/config.yaml +0 -0
  317. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/examples.yaml +0 -0
  318. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/model/__init__.py +0 -0
  319. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/model/dummy +0 -0
  320. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/model/model.py +0 -0
  321. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/packages/__init__.py +0 -0
  322. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/packages/test_package/__init__.py +0 -0
  323. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss/packages/test_package/test.py +0 -0
  324. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v1/__init__.py +0 -0
  325. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml +0 -0
  326. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v1/model/__init__.py +0 -0
  327. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v1/model/model.py +0 -0
  328. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v2/__init__.py +0 -0
  329. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v2/config.yaml +0 -0
  330. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v2/model/__init__.py +0 -0
  331. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_server_model_cache_v2/model/model.py +0 -0
  332. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/__init__.py +0 -0
  333. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/config.yaml +0 -0
  334. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/model/__init__.py +0 -0
  335. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/model/model.py +0 -0
  336. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/packages/__init__.py +0 -0
  337. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/packages/helpers_1.py +0 -0
  338. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_data/test_truss_with_error/packages/helpers_2.py +0 -0
  339. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_docker.py +0 -0
  340. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_model_schema.py +0 -0
  341. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_testing_utilities_for_other_tests.py +0 -0
  342. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_truss_gatherer.py +0 -0
  343. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_truss_handle.py +0 -0
  344. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/test_util.py +0 -0
  345. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/trt_llm/test_trt_llm_config.py +0 -0
  346. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/trt_llm/test_validation.py +0 -0
  347. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/util/test_basetenpointer.py +0 -0
  348. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/util/test_config_checks.py +0 -0
  349. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/util/test_env_vars.py +0 -0
  350. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/tests/util/test_path.py +0 -0
  351. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/trt_llm/config_checks.py +0 -0
  352. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/trt_llm/validation.py +0 -0
  353. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/__init__.py +0 -0
  354. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/build.py +0 -0
  355. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/decorators.py +0 -0
  356. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/__init__.py +0 -0
  357. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/calc_patch.py +0 -0
  358. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/constants.py +0 -0
  359. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/custom_types.py +0 -0
  360. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/dir_signature.py +0 -0
  361. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/hash.py +0 -0
  362. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/local_truss_patch_applier.py +0 -0
  363. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/signature.py +0 -0
  364. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/patch/truss_dir_patch_applier.py +0 -0
  365. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/readme_generator.py +0 -0
  366. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/truss_gatherer.py +0 -0
  367. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/truss_handle/truss_handle.py +0 -0
  368. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/.truss_ignore +0 -0
  369. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/basetenpointer.py +0 -0
  370. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/docker.py +0 -0
  371. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/download.py +0 -0
  372. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/env_vars.py +0 -0
  373. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/gpu.py +0 -0
  374. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/jinja.py +0 -0
  375. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/log_utils.py +0 -0
  376. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/notebook.py +0 -0
  377. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/path.py +0 -0
  378. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/requirements.py +0 -0
  379. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss/util/user_config.py +0 -0
  380. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/examples/README.md +0 -0
  381. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/examples/audio-transcription/README.md +0 -0
  382. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/examples/rag/README.md +0 -0
  383. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/tests/itest_chain/requirements.txt +0 -0
  384. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/__init__.py +0 -0
  385. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/deployment/__init__.py +0 -0
  386. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/deployment/code_gen.py +0 -0
  387. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/deployment/deployment_client.py +0 -0
  388. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/framework.py +0 -0
  389. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/private_types.py +0 -0
  390. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/public_api.py +0 -0
  391. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/public_types.py +0 -0
  392. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/py.typed +0 -0
  393. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/pydantic_numpy.py +0 -0
  394. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/reference_code/reference_chainlet.py +0 -0
  395. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/reference_code/reference_model.py +0 -0
  396. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/remote_chainlet/__init__.py +0 -0
  397. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/remote_chainlet/model_skeleton.py +0 -0
  398. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/remote_chainlet/stub.py +0 -0
  399. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/remote_chainlet/utils.py +0 -0
  400. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/streaming.py +0 -0
  401. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-chains/truss_chains/utils.py +0 -0
  402. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-train/truss_train/__init__.py +0 -0
  403. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-train/truss_train/definitions.py +0 -0
  404. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-train/truss_train/deployment.py +0 -0
  405. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-train/truss_train/loader.py +0 -0
  406. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-train/truss_train/public_api.py +0 -0
  407. {truss-0.10.9rc546 → truss-0.10.9rc548}/truss-transfer/README.md +0 -0
  408. {truss-0.10.9rc546 → truss-0.10.9rc548}/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.9rc546
3
+ Version: 0.10.9rc548
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.9rc546"
3
+ version = "0.10.9rc548"
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" },
@@ -1,3 +1,4 @@
1
+ import re
1
2
  from dataclasses import dataclass, field
2
3
  from pathlib import Path
3
4
  from typing import Dict, List
@@ -31,12 +32,26 @@ class DockerBuildEmulator:
31
32
  self._context_dir = context_dir
32
33
 
33
34
  def run(self, fs_root_dir: Path) -> DockerBuildEmulatorResult:
34
- def _resolve_env(key: str) -> str:
35
- if key.startswith("$"):
36
- key = key.replace("$", "", 1)
37
- v = result.env[key]
38
- return v
39
- return key
35
+ def _resolve_env(in_value: str) -> str:
36
+ # Valid environment variable name pattern
37
+ var_name_pattern = r'[A-Za-z_][A-Za-z0-9_]*'
38
+
39
+ # Handle ${VAR} syntax
40
+ def replace_braced_var(match):
41
+ var_name = match.group(1)
42
+ return result.env.get(var_name, match.group(0)) # Return original if not found
43
+
44
+ # Handle $VAR syntax (word boundary ensures we don't match parts of other vars)
45
+ def replace_simple_var(match):
46
+ var_name = match.group(1)
47
+ return result.env.get(var_name, match.group(0)) # Return original if not found
48
+
49
+ # Replace ${VAR} patterns first, using % substitution to avoid additional braces noise with f-strings
50
+ value = re.sub(r'\$\{(%s)\}' % var_name_pattern, replace_braced_var, in_value)
51
+ # Then replace remaining $VAR patterns (only at word boundaries)
52
+ value = re.sub(r'\$(%s)\b' % var_name_pattern, replace_simple_var, value)
53
+
54
+ return value
40
55
 
41
56
  def _resolve_values(keys: List[str]) -> List[str]:
42
57
  return list(map(_resolve_env, keys))
@@ -53,11 +68,14 @@ class DockerBuildEmulator:
53
68
  if cmd.instruction == DockerInstruction.ENTRYPOINT:
54
69
  result.entrypoint = list(values)
55
70
  if cmd.instruction == DockerInstruction.COPY:
71
+ # Filter out --chown flags
72
+ filtered_values = [v for v in values if not v.startswith("--chown")]
73
+
56
74
  # NB(nikhil): Skip COPY commands with --from flag (multi-stage builds)
57
- if len(values) != 2:
75
+ if len(filtered_values) != 2:
58
76
  continue
59
77
 
60
- src, dst = values
78
+ src, dst = filtered_values
61
79
  src = src.replace("./", "", 1)
62
80
  dst = dst.replace("/", "", 1)
63
81
  copy_tree_or_file(self._context_dir / src, fs_root_dir / dst)
@@ -13,18 +13,21 @@ ENV PYTHON_EXECUTABLE="{{ python_executable }}"
13
13
  {%- set app_user_uid = 60000 %}
14
14
  {%- set control_server_dir = "/control" %}
15
15
  {%- set default_owner = "root:root" %}
16
- # The non-root user's home directory.
17
- # uv will use $HOME to install packages.
16
+ {# The non-root user's home directory. #}
17
+ {# uv will use $HOME to install packages. #}
18
18
  ENV HOME=/home/{{ app_username }}
19
- # Directory containing inference server code.
19
+ {# Directory containing inference server code. #}
20
20
  ENV APP_HOME=/{{ app_username }}
21
21
  RUN mkdir -p ${APP_HOME} {{ control_server_dir }}
22
- # Create a non-root user to run model containers.
22
+ {# Create a non-root user to run model containers. #}
23
23
  RUN useradd -u {{ app_user_uid }} -ms /bin/bash {{ app_username }}
24
24
  {% endblock %} {#- endblock user_setup #}
25
25
 
26
+ {#- at the very beginning, set non-interactive mode for apt #}
26
27
  ENV DEBIAN_FRONTEND=noninteractive
27
28
 
29
+ {# If non-root user is enabled and model container admin commands are enabled, install sudo #}
30
+ {# to allow the non-root user to install packages. #}
28
31
  {%- if non_root_user and enable_model_container_admin_commands %}
29
32
  RUN apt update && apt install -y sudo
30
33
  {%- set allowed_admin_commands = ["/usr/bin/apt install *", "/usr/bin/apt update"] %}
@@ -60,13 +63,13 @@ RUN {{ python_exec_path }} -c "import sys; \
60
63
  {% endblock %}
61
64
 
62
65
  {% block install_uv %}
63
- # Add the user's local bin to the path, used by uv.
64
- ENV PATH=${PATH}:${HOME}/.local/bin
65
66
  {# Install `uv` and `curl` if not already present in the image. #}
66
67
  RUN if ! command -v uv >/dev/null 2>&1; then \
67
68
  command -v curl >/dev/null 2>&1 || (apt update && apt install -y curl) && \
68
69
  curl -LsSf --retry 5 --retry-delay 5 https://astral.sh/uv/{{ UV_VERSION }}/install.sh | sh; \
69
70
  fi
71
+ {# Add the user's local bin to the path, used by uv. #}
72
+ ENV PATH=${PATH}:${HOME}/.local/bin
70
73
  {% endblock %}
71
74
 
72
75
  {% block base_image_patch %}
@@ -1,5 +1,6 @@
1
1
  FROM python:3.11-slim AS cache_warmer
2
2
 
3
+ ENV APP_HOME=/app
3
4
  RUN mkdir -p ${APP_HOME}/model_cache
4
5
  WORKDIR ${APP_HOME}
5
6
 
@@ -8,9 +9,9 @@ ENV HUGGING_FACE_HUB_TOKEN="{{hf_access_token}}"
8
9
  {% endif %}
9
10
 
10
11
  RUN apt-get -y update; apt-get -y install curl; curl -s https://baseten-public.s3.us-west-2.amazonaws.com/bin/b10cp-5fe8dc7da-linux-amd64 -o /app/b10cp; chmod +x /app/b10cp
11
- ENV B10CP_PATH_TRUSS="/app/b10cp"
12
+ ENV B10CP_PATH_TRUSS="${APP_HOME}/b10cp"
12
13
  COPY --chown={{ default_owner }} ./cache_requirements.txt ${APP_HOME}/cache_requirements.txt
13
- RUN pip install -r /app/cache_requirements.txt --no-cache-dir && rm -rf /root/.cache/pip
14
+ RUN pip install -r ${APP_HOME}/cache_requirements.txt --no-cache-dir && rm -rf /root/.cache/pip
14
15
  COPY --chown={{ default_owner }} ./cache_warmer.py /cache_warmer.py
15
16
 
16
17
  {% for credential in credentials_to_cache %}
@@ -46,7 +46,7 @@ RUN {{ sys_pip_install_command }} -r {{ server_requirements_filename }} --no-cac
46
46
 
47
47
  {% block app_copy %}
48
48
  {%- if model_cache_v1 %}
49
- # Copy data before code for better caching
49
+ {# Copy data before code for better caching #}
50
50
  {%- include "copy_cache_files.Dockerfile.jinja" -%}
51
51
  {%- endif %} {#- endif model_cache_v1 #}
52
52
 
@@ -68,7 +68,7 @@ COPY --chown={{ default_owner }} ./{{ config.data_dir }} ${APP_HOME}/data
68
68
  {%- endif %} {#- endif data_dir_exists #}
69
69
 
70
70
  {%- if model_cache_v2 %}
71
- # v0.0.9, keep synced with server_requirements.txt
71
+ {# v0.0.9, keep synced with server_requirements.txt #}
72
72
  RUN curl -sSL --fail --retry 5 --retry-delay 2 -o /usr/local/bin/truss-transfer-cli https://github.com/basetenlabs/truss/releases/download/v0.10.9rc0/truss-transfer-cli-v0.10.9rc0-linux-x86_64-unknown-linux-musl
73
73
  RUN chmod +x /usr/local/bin/truss-transfer-cli
74
74
  RUN mkdir /static-bptr
@@ -101,10 +101,13 @@ COPY --chown={{ default_owner }} ./{{ config.model_module_dir }} ${APP_HOME}/mod
101
101
  {% endblock %} {#- endblock app_copy #}
102
102
 
103
103
  {% block run %}
104
-
104
+ {# Macro to change ownership of directories and switch to regular user #}
105
+ {%- macro chown_and_switch_to_regular_user_if_enabled(additional_chown_dirs=[]) -%}
105
106
  {%- if non_root_user %}
106
- RUN chown -R {{ app_username }}:{{ app_username }} ${HOME} ${APP_HOME}
107
+ RUN chown -R {{ app_username }}:{{ app_username }} {% for dir in additional_chown_dirs %}{{ dir }} {% endfor %}${HOME} ${APP_HOME}
108
+ USER {{ app_username }}
107
109
  {%- endif %} {#- endif non_root_user #}
110
+ {%- endmacro -%}
108
111
 
109
112
  {%- if config.docker_server %}
110
113
  RUN apt-get update -y && apt-get install -y --no-install-recommends \
@@ -112,9 +115,9 @@ RUN apt-get update -y && apt-get install -y --no-install-recommends \
112
115
  COPY --chown={{ default_owner }} ./docker_server_requirements.txt ${APP_HOME}/docker_server_requirements.txt
113
116
 
114
117
  {# NB(nikhil): Use the same python version for custom server proxy as the control server, for consistency. #}
115
- RUN uv python install {{ control_python_version }}
116
- RUN uv venv /docker_server/.venv --python {{ control_python_version }}
117
- RUN uv pip install --python /docker_server/.venv/bin/python -r /app/docker_server_requirements.txt --no-cache-dir
118
+ RUN HOME=/root uv python install {{ control_python_version }}
119
+ RUN HOME=/root uv venv /docker_server/.venv --python {{ control_python_version }}
120
+ RUN HOME=/root uv pip install --python /docker_server/.venv/bin/python -r /app/docker_server_requirements.txt --no-cache-dir
118
121
  {% set proxy_config_path = "/etc/nginx/conf.d/proxy.conf" %}
119
122
  {% set supervisor_config_path = "/etc/supervisor/supervisord.conf" %}
120
123
  {% set supervisor_server_url = "http://localhost:8080" %}
@@ -124,12 +127,8 @@ ENV SUPERVISOR_SERVER_URL="{{ supervisor_server_url }}"
124
127
  ENV SERVER_START_CMD="/docker_server/.venv/bin/supervisord -c {{ supervisor_config_path }}"
125
128
  {#- default configuration uses port 80, which requires root privileges, so we remove it #}
126
129
  RUN rm -f /etc/nginx/sites-enabled/default
127
- {%- if non_root_user %}
128
130
  {#- nginx writes to /var/lib/nginx, /var/log/nginx, and /run directories #}
129
- {% set nginx_dirs = ["/var/lib/nginx", "/var/log/nginx", "/run"] %}
130
- RUN chown -R {{ app_username }}:{{ app_username }} {{ nginx_dirs | join(" ") }}
131
- USER {{ app_username }}
132
- {%- endif %} {#- endif non_root_user #}
131
+ {{ chown_and_switch_to_regular_user_if_enabled(["/var/lib/nginx", "/var/log/nginx", "/run"]) }}
133
132
  ENTRYPOINT ["/docker_server/.venv/bin/supervisord", "-c", "{{ supervisor_config_path }}"]
134
133
 
135
134
  {%- elif requires_live_reload %} {#- elif requires_live_reload #}
@@ -137,17 +136,13 @@ ENV HASH_TRUSS="{{ truss_hash }}"
137
136
  ENV CONTROL_SERVER_PORT="8080"
138
137
  ENV INFERENCE_SERVER_PORT="8090"
139
138
  ENV SERVER_START_CMD="/control/.env/bin/python /control/control/server.py"
140
- {%- if non_root_user %}
141
- USER {{ app_username }}
142
- {%- endif %} {#- endif non_root_user #}
139
+ {{ chown_and_switch_to_regular_user_if_enabled() }}
143
140
  ENTRYPOINT ["/control/.env/bin/python", "/control/control/server.py"]
144
141
 
145
142
  {%- else %} {#- else (default inference server) #}
146
143
  ENV INFERENCE_SERVER_PORT="8080"
147
144
  ENV SERVER_START_CMD="{{ python_executable }} /app/main.py"
148
- {%- if non_root_user %}
149
- USER {{ app_username }}
150
- {%- endif %} {#- endif non_root_user #}
145
+ {{ chown_and_switch_to_regular_user_if_enabled() }}
151
146
  ENTRYPOINT ["{{ python_executable }}", "/app/main.py"]
152
147
  {%- endif %} {#- endif config.docker_server / live_reload #}
153
148
 
@@ -21,6 +21,56 @@ from prometheus_client.parser import text_string_to_metric_families
21
21
  PATCH_PING_MAX_DELAY_SECS = 3
22
22
 
23
23
 
24
+ def _start_truss_server(
25
+ stdout_capture_file_path: str,
26
+ truss_control_container_fs: Path,
27
+ with_patch_ping_flow: bool,
28
+ patch_ping_server_port: int,
29
+ ctrl_port: int,
30
+ inf_port: int,
31
+ ):
32
+ """Module-level function to avoid pickling issues with multiprocessing."""
33
+ if with_patch_ping_flow:
34
+ os.environ["PATCH_PING_URL_TRUSS"] = (
35
+ f"http://localhost:{patch_ping_server_port}"
36
+ )
37
+ sys.stdout = open(stdout_capture_file_path, "w")
38
+ app_path = truss_control_container_fs / "app"
39
+ sys.path.append(str(app_path))
40
+ control_path = truss_control_container_fs / "control" / "control"
41
+ sys.path.append(str(control_path))
42
+
43
+ from server import ControlServer
44
+
45
+ control_server = ControlServer(
46
+ python_executable_path=sys.executable,
47
+ inf_serv_home=str(app_path),
48
+ control_server_port=ctrl_port,
49
+ inference_server_port=inf_port,
50
+ )
51
+ control_server.run()
52
+
53
+
54
+ def _start_patch_ping_server(patch_ping_server_port: int):
55
+ """Module-level function to avoid pickling issues with multiprocessing."""
56
+ import json
57
+ import random
58
+ import time
59
+ from http.server import BaseHTTPRequestHandler, HTTPServer
60
+
61
+ class Handler(BaseHTTPRequestHandler):
62
+ def do_POST(self):
63
+ time.sleep(random.uniform(0, PATCH_PING_MAX_DELAY_SECS))
64
+ self.send_response(200)
65
+ self.end_headers()
66
+ self.wfile.write(
67
+ bytes(json.dumps({"is_current": True}), encoding="utf-8")
68
+ )
69
+
70
+ httpd = HTTPServer(("localhost", patch_ping_server_port), Handler)
71
+ httpd.serve_forever()
72
+
73
+
24
74
  @dataclass
25
75
  class ControlServerDetails:
26
76
  control_server_process: Process
@@ -270,51 +320,24 @@ def _configured_control_server(
270
320
  inf_port = ctrl_port + 1
271
321
  patch_ping_server_port = ctrl_port + 2
272
322
 
273
- def start_truss_server(stdout_capture_file_path):
274
- if with_patch_ping_flow:
275
- os.environ["PATCH_PING_URL_TRUSS"] = (
276
- f"http://localhost:{patch_ping_server_port}"
277
- )
278
- sys.stdout = open(stdout_capture_file_path, "w")
279
- app_path = truss_control_container_fs / "app"
280
- sys.path.append(str(app_path))
281
- control_path = truss_control_container_fs / "control" / "control"
282
- sys.path.append(str(control_path))
283
-
284
- from server import ControlServer
285
-
286
- control_server = ControlServer(
287
- python_executable_path=sys.executable,
288
- inf_serv_home=str(app_path),
289
- control_server_port=ctrl_port,
290
- inference_server_port=inf_port,
291
- )
292
- control_server.run()
293
-
294
- def start_patch_ping_server():
295
- import json
296
- import random
297
- import time
298
- from http.server import BaseHTTPRequestHandler, HTTPServer
299
-
300
- class Handler(BaseHTTPRequestHandler):
301
- def do_POST(self):
302
- time.sleep(random.uniform(0, PATCH_PING_MAX_DELAY_SECS))
303
- self.send_response(200)
304
- self.end_headers()
305
- self.wfile.write(
306
- bytes(json.dumps({"is_current": True}), encoding="utf-8")
307
- )
308
-
309
- httpd = HTTPServer(("localhost", patch_ping_server_port), Handler)
310
- httpd.serve_forever()
311
-
312
323
  stdout_capture_file = tempfile.NamedTemporaryFile()
313
- subproc = Process(target=start_truss_server, args=(stdout_capture_file.name,))
324
+ subproc = Process(
325
+ target=_start_truss_server,
326
+ args=(
327
+ stdout_capture_file.name,
328
+ truss_control_container_fs,
329
+ with_patch_ping_flow,
330
+ patch_ping_server_port,
331
+ ctrl_port,
332
+ inf_port,
333
+ ),
334
+ )
314
335
  subproc.start()
315
336
  proc_id = subproc.pid
316
337
  if with_patch_ping_flow:
317
- patch_ping_server_proc = Process(target=start_patch_ping_server)
338
+ patch_ping_server_proc = Process(
339
+ target=_start_patch_ping_server, args=(patch_ping_server_port,)
340
+ )
318
341
  patch_ping_server_proc.start()
319
342
  try:
320
343
  time.sleep(2.0)
@@ -10,23 +10,28 @@ from pathlib import Path
10
10
  import pytest
11
11
 
12
12
 
13
- @pytest.mark.integration
14
- def test_truss_server_termination(truss_container_fs):
15
- port = 10123
13
+ def _start_truss_server(stdout_capture_file_path: str, truss_container_fs: Path, port: int):
14
+ """Module-level function to avoid pickling issues with multiprocessing."""
15
+ sys.stdout = open(stdout_capture_file_path, "w")
16
+ app_path = truss_container_fs / "app"
17
+ sys.path.append(str(app_path))
18
+ os.chdir(app_path)
19
+
20
+ from truss_server import TrussServer
16
21
 
17
- def start_truss_server(stdout_capture_file_path):
18
- sys.stdout = open(stdout_capture_file_path, "w")
19
- app_path = truss_container_fs / "app"
20
- sys.path.append(str(app_path))
21
- os.chdir(app_path)
22
+ server = TrussServer(http_port=port, config_or_path=app_path / "config.yaml")
23
+ server.start()
22
24
 
23
- from truss_server import TrussServer
24
25
 
25
- server = TrussServer(http_port=port, config_or_path=app_path / "config.yaml")
26
- server.start()
26
+ @pytest.mark.integration
27
+ def test_truss_server_termination(truss_container_fs):
28
+ port = 10123
27
29
 
28
30
  stdout_capture_file = tempfile.NamedTemporaryFile()
29
- subproc = Process(target=start_truss_server, args=(stdout_capture_file.name,))
31
+ subproc = Process(
32
+ target=_start_truss_server,
33
+ args=(stdout_capture_file.name, truss_container_fs, port)
34
+ )
30
35
  subproc.start()
31
36
  proc_id = subproc.pid
32
37
  time.sleep(2.0)
@@ -990,8 +990,10 @@ def test_is_healthy_returns_503_on_load_failure():
990
990
  # when the model goes down, this will throw an exception
991
991
  break
992
992
  diff = container.diff()
993
- assert "/root/inference_server_crashed.txt" in diff
994
- assert diff["/root/inference_server_crashed.txt"] == "A"
993
+ # the crash file is written to the app user's home directory
994
+ crash_file_path = "/home/app/inference_server_crashed.txt"
995
+ assert crash_file_path in diff
996
+ assert diff[crash_file_path] == "A"
995
997
 
996
998
 
997
999
  @pytest.mark.integration
File without changes
File without changes
File without changes
File without changes
File without changes