truss 0.11.6rc102__py3-none-any.whl → 0.11.24rc2__py3-none-any.whl

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 (88) hide show
  1. truss/api/__init__.py +5 -2
  2. truss/base/constants.py +1 -0
  3. truss/base/trt_llm_config.py +14 -3
  4. truss/base/truss_config.py +19 -4
  5. truss/cli/chains_commands.py +49 -1
  6. truss/cli/cli.py +38 -7
  7. truss/cli/logs/base_watcher.py +31 -12
  8. truss/cli/logs/model_log_watcher.py +24 -1
  9. truss/cli/remote_cli.py +29 -0
  10. truss/cli/resolvers/chain_team_resolver.py +82 -0
  11. truss/cli/resolvers/model_team_resolver.py +90 -0
  12. truss/cli/resolvers/training_project_team_resolver.py +81 -0
  13. truss/cli/train/cache.py +332 -0
  14. truss/cli/train/core.py +57 -163
  15. truss/cli/train/deploy_checkpoints/__init__.py +2 -2
  16. truss/cli/train/deploy_checkpoints/deploy_checkpoints.py +236 -103
  17. truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py +1 -52
  18. truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py +1 -86
  19. truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py +1 -85
  20. truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py +1 -56
  21. truss/cli/train/types.py +18 -9
  22. truss/cli/train_commands.py +180 -35
  23. truss/cli/utils/common.py +40 -3
  24. truss/contexts/image_builder/serving_image_builder.py +17 -4
  25. truss/remote/baseten/api.py +215 -9
  26. truss/remote/baseten/core.py +63 -7
  27. truss/remote/baseten/custom_types.py +1 -0
  28. truss/remote/baseten/remote.py +42 -2
  29. truss/remote/baseten/service.py +0 -7
  30. truss/remote/baseten/utils/transfer.py +5 -2
  31. truss/templates/base.Dockerfile.jinja +8 -4
  32. truss/templates/control/control/application.py +51 -26
  33. truss/templates/control/control/endpoints.py +1 -5
  34. truss/templates/control/control/helpers/inference_server_process_controller.py +10 -4
  35. truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py +33 -18
  36. truss/templates/control/control/server.py +1 -1
  37. truss/templates/control/requirements.txt +1 -2
  38. truss/templates/docker_server/proxy.conf.jinja +13 -0
  39. truss/templates/docker_server/supervisord.conf.jinja +2 -1
  40. truss/templates/no_build.Dockerfile.jinja +1 -0
  41. truss/templates/server/requirements.txt +2 -3
  42. truss/templates/server/truss_server.py +2 -5
  43. truss/templates/server.Dockerfile.jinja +12 -12
  44. truss/templates/shared/lazy_data_resolver.py +214 -2
  45. truss/templates/shared/util.py +6 -5
  46. truss/tests/cli/chains/test_chains_team_parameter.py +443 -0
  47. truss/tests/cli/test_chains_cli.py +144 -0
  48. truss/tests/cli/test_cli.py +134 -1
  49. truss/tests/cli/test_cli_utils_common.py +11 -0
  50. truss/tests/cli/test_model_team_resolver.py +279 -0
  51. truss/tests/cli/train/test_cache_view.py +240 -3
  52. truss/tests/cli/train/test_deploy_checkpoints.py +2 -846
  53. truss/tests/cli/train/test_train_cli_core.py +2 -2
  54. truss/tests/cli/train/test_train_team_parameter.py +395 -0
  55. truss/tests/conftest.py +187 -0
  56. truss/tests/contexts/image_builder/test_serving_image_builder.py +10 -5
  57. truss/tests/remote/baseten/test_api.py +122 -3
  58. truss/tests/remote/baseten/test_chain_upload.py +294 -0
  59. truss/tests/remote/baseten/test_core.py +86 -0
  60. truss/tests/remote/baseten/test_remote.py +216 -288
  61. truss/tests/remote/baseten/test_service.py +56 -0
  62. truss/tests/templates/control/control/conftest.py +20 -0
  63. truss/tests/templates/control/control/test_endpoints.py +4 -0
  64. truss/tests/templates/control/control/test_server.py +8 -24
  65. truss/tests/templates/control/control/test_server_integration.py +4 -2
  66. truss/tests/test_config.py +21 -12
  67. truss/tests/test_data/server.Dockerfile +3 -1
  68. truss/tests/test_data/test_build_commands_truss/__init__.py +0 -0
  69. truss/tests/test_data/test_build_commands_truss/config.yaml +14 -0
  70. truss/tests/test_data/test_build_commands_truss/model/model.py +12 -0
  71. truss/tests/test_data/test_build_commands_truss/packages/constants/constants.py +1 -0
  72. truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml +1 -0
  73. truss/tests/test_model_inference.py +13 -0
  74. truss/tests/util/test_env_vars.py +8 -3
  75. truss/util/__init__.py +0 -0
  76. truss/util/env_vars.py +19 -8
  77. truss/util/error_utils.py +37 -0
  78. {truss-0.11.6rc102.dist-info → truss-0.11.24rc2.dist-info}/METADATA +2 -2
  79. {truss-0.11.6rc102.dist-info → truss-0.11.24rc2.dist-info}/RECORD +88 -70
  80. {truss-0.11.6rc102.dist-info → truss-0.11.24rc2.dist-info}/WHEEL +1 -1
  81. truss_chains/deployment/deployment_client.py +16 -4
  82. truss_chains/private_types.py +18 -0
  83. truss_chains/public_api.py +3 -0
  84. truss_train/definitions.py +6 -4
  85. truss_train/deployment.py +43 -21
  86. truss_train/public_api.py +4 -2
  87. {truss-0.11.6rc102.dist-info → truss-0.11.24rc2.dist-info}/entry_points.txt +0 -0
  88. {truss-0.11.6rc102.dist-info → truss-0.11.24rc2.dist-info}/licenses/LICENSE +0 -0
@@ -1,42 +1,46 @@
1
1
  truss/__init__.py,sha256=CoUcP6vx_pocyemRmpbCPlndkHhdMkABAlr0ZXVuPCk,1163
2
- truss/api/__init__.py,sha256=5GTE2rlupet-beaawUr0FPyDPEJ9UyBTUpJmCE3RGfc,5453
2
+ truss/api/__init__.py,sha256=6ZDLaMn6MI5kqmRZaHwgZf2jOQyxQS3H45-Zy9qeSvg,5634
3
3
  truss/api/definitions.py,sha256=QAaIBqL59Q-R7HtLcXcoeCIWBN2HqOzApdFX0PpCq2s,1604
4
4
  truss/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- truss/base/constants.py,sha256=sExArdnuGg83z83XMgaQ4b8SS3V_j_bJEpOATDGJzpE,3600
5
+ truss/base/constants.py,sha256=yFvDVyWMqeAsWOfKUKJVUNbH26N2JZKDqgxmRSe4EWk,3664
6
6
  truss/base/custom_types.py,sha256=FUSIT2lPOQb6gfg6IzT63YBV8r8L6NIZ0D74Fp3e_jQ,2835
7
7
  truss/base/errors.py,sha256=zDVLEvseTChdPP0oNhBBQCtQUtZJUaof5zeWMIjqz6o,691
8
- truss/base/trt_llm_config.py,sha256=CRz3AqGDAyv8YpcBWXUrnfjvNAauyo3yf8ZOGVsSt6g,32782
9
- truss/base/truss_config.py,sha256=7CtiJIwMHtDU8Wzn8UTJUVVunD0pWFl4QUVycK2aIpY,28055
8
+ truss/base/trt_llm_config.py,sha256=rEtBVFg2QnNMxnaz11s5Z69dJB1w7Bpt48Wf6jSsVZI,33087
9
+ truss/base/truss_config.py,sha256=woY42bYYzA3-hWjzHqvQxpJG9hsXPvHZ7LNNAjiLkAE,28675
10
10
  truss/base/truss_spec.py,sha256=jFVF79CXoEEspl2kXBAPyi-rwISReIGTdobGpaIhwJw,5979
11
- truss/cli/chains_commands.py,sha256=Kpa5mCg6URAJQE2ZmZfVQFhjBHEitKT28tKiW0H6XAI,17406
12
- truss/cli/cli.py,sha256=PaMkuwXZflkU7sa1tEoT_Zmy-iBkEZs1m4IVqcieaeo,30367
13
- truss/cli/remote_cli.py,sha256=G_xCKRXzgkCmkiZJhUFfsv5YSVgde1jLA5LPQitpZgI,1905
14
- truss/cli/train_commands.py,sha256=TZhtvofviWQF34pYppRCaQ6qayTsvPnx6afTrYbFpOM,17319
15
- truss/cli/logs/base_watcher.py,sha256=KKyd7lIrdaEeDVt8EtjMioSPGVpLyOcF0ewyzE_GGdQ,2785
16
- truss/cli/logs/model_log_watcher.py,sha256=NACcP-wkcaroYa2Cb9BZC7Yr0554WZa_FSM2LXOf4A8,1263
11
+ truss/cli/chains_commands.py,sha256=7meWaNVYIPmNkHRhRmW0of_vGa-McFag1XIgnUnSYVQ,18982
12
+ truss/cli/cli.py,sha256=iEO6JOY3yu4OtwzdMhmrxr72AboenLujWMm5WG6vKk4,31198
13
+ truss/cli/remote_cli.py,sha256=UI0YptsLD7WBEdi37fUoJIgCHGjrSxkiNFYS61Wlqdk,2730
14
+ truss/cli/train_commands.py,sha256=rL-wqqEl7CbvRKi3YkhmoFQO_59STVehlsOIC2dvmxY,22102
15
+ truss/cli/logs/base_watcher.py,sha256=vuqteoaMVGX34cgKcETf4X_gOkvnSnDaWz1_pbeFhqs,3343
16
+ truss/cli/logs/model_log_watcher.py,sha256=38vQCcNItfDrTKucvdJ10ZYLOcbGa5ZAKUqUnV4nH34,1971
17
17
  truss/cli/logs/training_log_watcher.py,sha256=r6HRqrLnz-PiKTUXiDYYxg4ZnP8vYcXlEX1YmgHhzlo,1173
18
18
  truss/cli/logs/utils.py,sha256=z-U_FG4BUzdZLbE3BnXb4DZQ0zt3LSZ3PiQpLaDuc3o,1031
19
+ truss/cli/resolvers/chain_team_resolver.py,sha256=9luCeXu4YpGn9K9snTqqB0GwzSvdUGOjA7CkXG1s-ug,3872
20
+ truss/cli/resolvers/model_team_resolver.py,sha256=D4QML3HK9T07XTCPiZ8JoYcqtYuXTPCVpwRPIni6kwA,4283
21
+ truss/cli/resolvers/training_project_team_resolver.py,sha256=UKwmuWL7OfMTbEtmGcTCmamGG_aNLLi2PzBZziBBJbo,3881
22
+ truss/cli/train/cache.py,sha256=S2f2x0ObdjUAyjLhzp3CPQCE5x2FbtSc5Gm_iTjlbZc,11519
19
23
  truss/cli/train/common.py,sha256=xTR41U5FeSndXfNBBHF9wF5XwZH1sOIVFlv-XHjsKIU,1547
20
- truss/cli/train/core.py,sha256=Xyl0SgCXIyvoQJLnkIvX6R2gWUVyeDiFHLB1caWJZjs,26154
24
+ truss/cli/train/core.py,sha256=ahyjfjkCQSH9Eqb_6pcrRM0Td52gsUcnnTkrAsTDpLE,22336
21
25
  truss/cli/train/deploy_from_checkpoint_config.yml,sha256=mktaVrfhN8Kjx1UveC4xr-gTW-kjwbHvq6bx_LpO-Wg,371
22
26
  truss/cli/train/deploy_from_checkpoint_config_whisper.yml,sha256=6GbOorYC8ml0UyOUvuBpFO_fuYtYE646JqsalR-D4oY,406
23
27
  truss/cli/train/metrics_watcher.py,sha256=smz-zrEsBj_-wJHI0pAZ-EAPrvfCWzq1eQjGiFNM-Mk,12755
24
28
  truss/cli/train/poller.py,sha256=TGRzELxsicga0bEXewSX1ujw6lfPmDnHd6nr8zvOFO8,3550
25
- truss/cli/train/types.py,sha256=alGtr4Q71GeB65PpGMhsoKygw4k_ncR6MKIP1ioP8rI,951
26
- truss/cli/train/deploy_checkpoints/__init__.py,sha256=wL-M2yu8PxO2tFvjwshXAfPnB-5TlvsBp2v_bdzimRU,99
27
- truss/cli/train/deploy_checkpoints/deploy_checkpoints.py,sha256=nJHUjR4f4_13mFPNetWKq7ecsqr-cradbv3RBBDj2pk,17364
28
- truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py,sha256=6x5nS_HnWYtS9vi-Pg8akzrJk9L_agjvFhm5EFh1m6Y,1964
29
- truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py,sha256=FYRG5KTMlxEMZS-RA_m2gp1wuqWbSpqt2RhdQfLibhA,3968
30
- truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py,sha256=P91dIAzuhl2GlzmrWwCcYI7uCMT1Lm7C79JQHM_exN4,4442
31
- truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py,sha256=NSo2kEn-CxawGvUhn-xE81noxoTJ0cCv8X9fkrMxAsM,2617
32
- truss/cli/utils/common.py,sha256=ink9ZE0MsOv6PCFK_Ra5k1aHm281TXTnMpnLjf2PtUM,6585
29
+ truss/cli/train/types.py,sha256=0tfgInTm1Dmq7p8Gh_0RwxGViN6Tpp0YjsiYeMUNiPE,1163
30
+ truss/cli/train/deploy_checkpoints/__init__.py,sha256=HuiDD6-qfwJ7fbRVX4s9Fxn6rmO6nwTLb0fVxwcMKls,137
31
+ truss/cli/train/deploy_checkpoints/deploy_checkpoints.py,sha256=AEl41GHI6s35ajVaPUGnbRJAdAwUaQdVnLPbUbGAifE,22478
32
+ truss/cli/train/deploy_checkpoints/deploy_checkpoints_helpers.py,sha256=r_IKMlqejMwIU6gsfxDIRzfmltfDf6Sz9-vnKrP_10s,83
33
+ truss/cli/train/deploy_checkpoints/deploy_full_checkpoints.py,sha256=f8_UB7CF6Y3MOhaf8Zim0heNiauOOAmA-WqsyP3X9mk,386
34
+ truss/cli/train/deploy_checkpoints/deploy_lora_checkpoints.py,sha256=YKVMy3xogmbubJNrN_1LCR6xdHj9lBOAlKgMxWHdlQM,1115
35
+ truss/cli/train/deploy_checkpoints/deploy_whisper_checkpoints.py,sha256=eEo4ahRTsvRKOxCDj7DAHIUyUZWicn39VmC1PYS0pCY,314
36
+ truss/cli/utils/common.py,sha256=keB8t-IVq-Wgel9laOZ_Ag4p0KxqLEBY2MKRwWncwUw,7869
33
37
  truss/cli/utils/output.py,sha256=GNjU85ZAMp5BI6Yij5wYXcaAvpm_kmHV0nHNmdkMxb0,646
34
38
  truss/cli/utils/self_upgrade.py,sha256=eTJZA4Wc8uUp4Qh6viRQp6bZm--wnQp7KWe5KRRpPtg,5427
35
39
  truss/contexts/docker_build_setup.py,sha256=cF4ExZgtYvrWxvyCAaUZUvV_DB_7__MqVomUDpalvKo,3925
36
40
  truss/contexts/truss_context.py,sha256=uS6L-ACHxNk0BsJwESOHh1lA0OGGw0pb33aFKGsASj4,436
37
41
  truss/contexts/image_builder/cache_warmer.py,sha256=TGMV1Mh87n2e_dSowH0sf0rZhZraDOR-LVapZL3a5r8,7377
38
42
  truss/contexts/image_builder/image_builder.py,sha256=IuRgDeeoHVLzIkJvKtX3807eeqEyaroCs_KWDcIHZUg,1461
39
- truss/contexts/image_builder/serving_image_builder.py,sha256=n6MTHMZsANSTGXPfkKDJ1Ch4fEc6HIjbOXA_1B9zt9Q,33438
43
+ truss/contexts/image_builder/serving_image_builder.py,sha256=1PfHtkTEdNPhSQAX8Ajk_0LN3KR2EfLKwOJsnECtKXQ,33958
40
44
  truss/contexts/image_builder/util.py,sha256=y2-CjUKv0XV-0w2sr1fUCflysDJLsoU4oPp6tvvoFnk,1203
41
45
  truss/contexts/local_loader/docker_build_emulator.py,sha256=3n0eIlJblz_sldh4AN8AHQDyfjQGdYyld5FabBdd9wE,3563
42
46
  truss/contexts/local_loader/dockerfile_parser.py,sha256=GoRJ0Af_3ILyLhjovK5lrCGn1rMxz6W3l681ro17ZzI,1344
@@ -52,52 +56,53 @@ truss/patch/truss_dir_patch_applier.py,sha256=ALnaVnu96g0kF2UmGuBFTua3lrXpwAy4sG
52
56
  truss/remote/remote_factory.py,sha256=-0gLh_yIyNDgD48Q6sR8Yo5dOMQg84lrHRvn_XR0n4s,3585
53
57
  truss/remote/truss_remote.py,sha256=TEe6h6by5-JLy7PMFsDN2QxIY5FmdIYN3bKvHHl02xM,8440
54
58
  truss/remote/baseten/__init__.py,sha256=XNqJW1zyp143XQc6-7XVwsUA_Q_ZJv_ausn1_Ohtw9Y,176
55
- truss/remote/baseten/api.py,sha256=5XsB0mSfFD2YGybco4aPGMQalSvhsqv-QgzW4A66r7k,25081
59
+ truss/remote/baseten/api.py,sha256=StxIk5k-88DYEd0YU7yKxuMXpcODSdgbqD7VjwRK--Q,32430
56
60
  truss/remote/baseten/auth.py,sha256=tI7s6cI2EZgzpMIzrdbILHyGwiHDnmoKf_JBhJXT55E,776
57
- truss/remote/baseten/core.py,sha256=uxtmBI9RAVHu1glIEJb5Q4ccJYLeZM1Cp5Svb9W68Yw,21965
58
- truss/remote/baseten/custom_types.py,sha256=bYrfTzGgYr6FDoya0omyadCLSTcTc-83U2scQORyUj0,4715
61
+ truss/remote/baseten/core.py,sha256=U2JwM-HFTf_KmVRnHeuGJU5g4bvi3auNfmTjkHlw48I,24210
62
+ truss/remote/baseten/custom_types.py,sha256=g7yWkE8p6uIAG5JqgfELFGHzjFLvO7vLPzbe-yl1nYs,4735
59
63
  truss/remote/baseten/error.py,sha256=3TNTwwPqZnr4NRd9Sl6SfLUQR2fz9l6akDPpOntTpzA,578
60
- truss/remote/baseten/remote.py,sha256=Se8AES5mk8jxa8S9fN2DSG7wnsaV7ftRjJ4Uwc_w_S0,22544
64
+ truss/remote/baseten/remote.py,sha256=7xCm_zmfiWfnZLbJi4Txxq7xezN8B235a1tO0rVeTMQ,24372
61
65
  truss/remote/baseten/rest_client.py,sha256=_t3CWsWARt2u0C0fDsF4rtvkkHe-lH7KXoPxWXAkKd4,1185
62
- truss/remote/baseten/service.py,sha256=j_cCbSkpvCqIoptCDp65BCRKORPrp9NswTdI3BbiFqU,6081
66
+ truss/remote/baseten/service.py,sha256=HMaKiYbr2Mzv4BfXF9QkJ8H3Wwrq3LOMpFt9js4t0rs,5834
63
67
  truss/remote/baseten/utils/status.py,sha256=jputc9N9AHXxUuW4KOk6mcZKzQ_gOBOe5BSx9K0DxPY,1266
64
68
  truss/remote/baseten/utils/tar.py,sha256=pMUv--YkwXDngUx1WUOK-KmAIKMcOg2E-CD5x4heh3s,2514
65
69
  truss/remote/baseten/utils/time.py,sha256=Ry9GMjYnbIGYVIGwtmv4V8ljWjvdcaCf5NOQzlNeGxI,397
66
- truss/remote/baseten/utils/transfer.py,sha256=d3VptuQb6M1nyS6kz0BAfeOYDLkMKUjatJXpY-mp-As,1548
70
+ truss/remote/baseten/utils/transfer.py,sha256=vMI-Dcd_HaRkqVjWI02y3eK9DjiqgG0ULayS0KxIIvA,1652
67
71
  truss/templates/README.md.jinja,sha256=N7CJdyldZuJamj5jLh47le0hFBdu9irVsTBqoxhPNPQ,2476
68
72
  truss/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- truss/templates/base.Dockerfile.jinja,sha256=93UgFjjDzmRILsWjvQBMcWuHY2j-HlP8pkCLmvZz_0o,5098
73
+ truss/templates/base.Dockerfile.jinja,sha256=tdMmK5TeiQuYbz4gqbACM3R-l-mazqL9tAZtJ4sxC4g,5331
70
74
  truss/templates/cache.Dockerfile.jinja,sha256=1qZqDo1phrcqi-Vwol-VafYJkADsBbQWU6huQ-_1x00,1146
71
75
  truss/templates/cache_requirements.txt,sha256=xoPoJ-OVnf1z6oq_RVM3vCr3ionByyqMLj7wGs61nUs,87
72
76
  truss/templates/copy_cache_files.Dockerfile.jinja,sha256=Os5zFdYLZ_AfCRGq4RcpVTObOTwL7zvmwYcvOzd_Zqo,126
73
77
  truss/templates/docker_server_requirements.txt,sha256=PyhOPKAmKW1N2vLvTfLMwsEtuGpoRrbWuNo7tT6v2Mc,18
74
- truss/templates/server.Dockerfile.jinja,sha256=CUYnF_hgxPGq2re7__0UPWlwzOHMoFkxp6NVKi3U16s,7071
75
- truss/templates/control/requirements.txt,sha256=nqqNmlTwFeV8sV4fqwItwzzd_egADBP_e-cEopXBJ4k,358
76
- truss/templates/control/control/application.py,sha256=jYeta6hWe1SkfLL3W4IDmdYjg3ZuKqI_UagWYs5RB_E,3793
77
- truss/templates/control/control/endpoints.py,sha256=VQ1lvZjFvR091yRkiFdvXw1Q7PiNGXT9rJwY7_sX6yg,11828
78
- truss/templates/control/control/server.py,sha256=R4Y219i1dcz0kkksN8obLoX-YXWGo9iW1igindyG50c,3128
78
+ truss/templates/no_build.Dockerfile.jinja,sha256=8x2PJUxr_gHai0St8ue2aWyih36t8kBytXMGr_5LG4w,35
79
+ truss/templates/server.Dockerfile.jinja,sha256=wApuWMfyXrDpPlIodm9bK-KNrsi7fVdNKm-iw7mi7bw,7075
80
+ truss/templates/control/requirements.txt,sha256=tJGr83WoE0CZm2FrloZ9VScK84q-_FTuVXjDYrexhW0,250
81
+ truss/templates/control/control/application.py,sha256=5Kam6M-XtfKGaXQz8cc3d0bwDkB80o2MskABWROx1gk,5321
82
+ truss/templates/control/control/endpoints.py,sha256=KzqsLVNJE6r6TCPW8D5FMCtsfHadTwR15A3z_viGxmM,11782
83
+ truss/templates/control/control/server.py,sha256=bdyXoqhW9e4jvFhxt3eoBKUPzH2Y5UAnMhY5GR0Kd5M,3124
79
84
  truss/templates/control/control/helpers/context_managers.py,sha256=W6dyFgLBhPa5meqrOb3w_phMtKfaJI-GhwUfpiycDc8,413
80
85
  truss/templates/control/control/helpers/custom_types.py,sha256=n_lTudtLTpy4oPV3aDdJ4X2rh3KCV5btYO9UnTeUouQ,5471
81
86
  truss/templates/control/control/helpers/errors.py,sha256=LddFuQywuCCdYTEnFT5EalxdWos4uR89rbhMakCy2bA,970
82
87
  truss/templates/control/control/helpers/inference_server_controller.py,sha256=anFm7FwkGaUnYRQo2dxXohA9__c-XAVAqfA1EL2bIIY,6324
83
- truss/templates/control/control/helpers/inference_server_process_controller.py,sha256=2So-3FhBr7OE61ShS-dYrDiEqQ-h4JU6EbWdIxL4Yks,4227
88
+ truss/templates/control/control/helpers/inference_server_process_controller.py,sha256=RkkLA2_bKUl1iqwrwlH7gZPZUuUVFfJDy74EVWkRVOI,4579
84
89
  truss/templates/control/control/helpers/inference_server_starter.py,sha256=Fz2Puijro6Cc5cvTsAqOveNJbBQR_ARYJXl4lvETJ8Y,2633
85
90
  truss/templates/control/control/helpers/truss_patch/__init__.py,sha256=CXZdUV_ylqLTJrKuFpvSnUT6PUFrZrMF2y6jiHbdaKU,998
86
91
  truss/templates/control/control/helpers/truss_patch/model_code_patch_applier.py,sha256=LTIIADLz0wRn7V49j64dU1U7Hbta9YLde3pb5YZWvzQ,2001
87
- truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py,sha256=uiZvKhLa_rpr_N67NpApgA-XVrBFLXraZlikSOFDDOw,6445
92
+ truss/templates/control/control/helpers/truss_patch/model_container_patch_applier.py,sha256=9bWoleD_dfQHokW5qgC5DyvAQPVhSku3tUqrVKQsQ3w,7091
88
93
  truss/templates/control/control/helpers/truss_patch/requirement_name_identifier.py,sha256=CL3KEAj4B3ApMQShd7TI5umXVbazLZY5StrNlwHwWtc,1995
89
94
  truss/templates/control/control/helpers/truss_patch/system_packages.py,sha256=IYh1CVU_kooAvtSGXKQDDWnNdOhlv7ENWagsL1wvhgw,208
90
95
  truss/templates/custom/examples.yaml,sha256=2UcCtEdavImWmiCtj31ckBlAKVOwNMC5AwMIIznKDag,48
91
96
  truss/templates/custom/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
97
  truss/templates/custom/model/model.py,sha256=J04rLxK09Pwt2F4GoKOLKL-H-CqZUdYIM-PL2CE9PoE,1079
93
98
  truss/templates/custom_python_dx/my_model.py,sha256=NG75mQ6wxzB1BYUemDFZvRLBET-UrzuUK4FuHjqI29U,910
94
- truss/templates/docker_server/proxy.conf.jinja,sha256=Lg-PcZzKflG85exZKHNgW_I6r0mATV8AtOIBaE40-RM,1669
95
- truss/templates/docker_server/supervisord.conf.jinja,sha256=dd37fwZE--cutrvOUCqEyJQQQhlp61H2IUs2huKWsSk,1808
99
+ truss/templates/docker_server/proxy.conf.jinja,sha256=Axily8EtznvrF7mUCgy2VFY99BYRt4BycZ0p9uWfd0s,2025
100
+ truss/templates/docker_server/supervisord.conf.jinja,sha256=AliMMd6bNn-oCYIB8GumTvt8L2JshkjFaoqIcyBzQmc,1835
96
101
  truss/templates/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
102
  truss/templates/server/main.py,sha256=kWXrdD8z8IpamyWxc8qcvd5ck9gM1Kz2QH5qHJCnmOQ,222
98
103
  truss/templates/server/model_wrapper.py,sha256=k75VVISwwlsx5EGb82UZsu8kCM_i6Yi3-Hd0-Kpm1yo,42055
99
- truss/templates/server/requirements.txt,sha256=lhJYYExWE1IdBlYYFW-kmfmuKZTWyIg1TNyoWIIuuDg,780
100
- truss/templates/server/truss_server.py,sha256=pwIUmIi59bmjC7f6u3omdHyWYye0J-WfFMn4-kZG9OY,19943
104
+ truss/templates/server/requirements.txt,sha256=1EvdUuD9Fyy_xgo0a5WuAxMZaFRTZtozt79PB5KkGcI,672
105
+ truss/templates/server/truss_server.py,sha256=YKcG7Sr0T_8XjIC3GK9vBwoNb8oxVgwic3-3Ikzpmgw,19781
101
106
  truss/templates/server/common/__init__.py,sha256=qHIqr68L5Tn4mV6S-PbORpcuJ4jmtBR8aCuRTIWDvNo,85
102
107
  truss/templates/server/common/errors.py,sha256=My0P6-Y7imVTICIhazHT0vlSu3XJDH7As06OyVzu4Do,8589
103
108
  truss/templates/server/common/patches.py,sha256=uEOzvDnXsHOkTSa8zygGYuR4GHhrFNVHNQc5peJcwvo,1393
@@ -107,11 +112,11 @@ truss/templates/server/common/tracing.py,sha256=XSTXNoRtV8vXwveJoX3H32go0JKnLmzn
107
112
  truss/templates/server/common/patches/whisper/patch.py,sha256=kDECQ-wmEpeAZFhUTQP457ofueeMsm7DgNy9tqinhJQ,2383
108
113
  truss/templates/shared/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
114
  truss/templates/shared/dynamic_config_resolver.py,sha256=75s42NFhQI5jL7BqlJH_UkuQS7ptbtFh13f2nh6X5Wo,920
110
- truss/templates/shared/lazy_data_resolver.py,sha256=SMw3L24R_UkNXuL0fO-AN02rUTHfy0Aiz3JTyS0PAEc,5978
115
+ truss/templates/shared/lazy_data_resolver.py,sha256=HxrZz6X30j2LbsExYSqhuOGoYEffGpd7FPBtJexI7TQ,14064
111
116
  truss/templates/shared/log_config.py,sha256=l9udyu4VKHZePlfK9LQEd5TOUUodPuehypsXRSUL4Ac,5411
112
117
  truss/templates/shared/secrets_resolver.py,sha256=3prDe3Q06NTmUEe7KCW-W4TD1CzGck9lpDG789209z4,2110
113
118
  truss/templates/shared/serialization.py,sha256=_WC_2PPkRi-MdTwxwjG8LKQptnHi4sANfpOlKWevqWc,3736
114
- truss/templates/shared/util.py,sha256=dPgFF4iL_YkeC6Kf8tZUHJH60rbpskHwVPh0ONLGaQM,2222
119
+ truss/templates/shared/util.py,sha256=NoIel4ES73fHzjY7tknxAFhZQGh11tqL45Ye6-RTh4k,2281
115
120
  truss/templates/train/config.py,sha256=aQJ3lsyVRlq6edjjZq4_Anz1bZVwkjLdclmZPJTdo1k,1626
116
121
  truss/templates/train/run.sh,sha256=2rimigJOn6yg4DguRfOJWkzm77X-meNSYXnidLafqNg,346
117
122
  truss/templates/trtllm-audio/model/model.py,sha256=o38QqW57b1lf8O_td1lW_AojZZ8R_qAZCgzOWtoIse8,1619
@@ -126,27 +131,32 @@ truss/templates/trtllm-audio/packages/whisper_trt/utils.py,sha256=pi-c486yPe85Te
126
131
  truss/templates/trtllm-briton/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
132
  truss/templates/trtllm-briton/src/extension.py,sha256=6qwYPIYQEmXd2xz50-v80Nilc_xLAMgdYkHu2JWboH4,2655
128
133
  truss/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
- truss/tests/conftest.py,sha256=LCP-knM4UsQYvGd2Vbv2hHnbPCuOELCqPui31DrtxyM,24221
134
+ truss/tests/conftest.py,sha256=0izxvPZPdlRZBIvxH0z0ISNcdq3Et3OQ1BLDwevrNpM,29928
130
135
  truss/tests/helpers.py,sha256=DKnUGzmt-k4IN_wSnlAXbVYCiEt58xFzFmmuCDSQ0dg,555
131
136
  truss/tests/test_build.py,sha256=Wq4sM9tmZFVTCN3YljvOcn04Kkj-L-41Tlw0DKQ8Z7c,709
132
- truss/tests/test_config.py,sha256=AVpVCL_XHYXKSGHzwecrh7BAJlB_Wr5AUlnnwMqWM98,30559
137
+ truss/tests/test_config.py,sha256=bxIZVELyX31y69lPRdv2On8NiLD1M8IyDtQCv78kN9c,30942
133
138
  truss/tests/test_context_builder_image.py,sha256=fVZNJSzZNiWa7Dr1X_VhhMJtyJ5HzsLaPglOr6NV2CA,1105
134
139
  truss/tests/test_control_truss_patching.py,sha256=qQOUfyF1MorZ_obOvPJK9utI4HUAzgT6YBS-fo90TEw,14497
135
140
  truss/tests/test_custom_server.py,sha256=GP2qMgnqxJMPRtfEciqbhBcG0_JUK7gNL7nrXPGrSLg,1305
136
141
  truss/tests/test_docker.py,sha256=3RI6jEC9CVQsKj83s_gOBl3EkdOaov-KEX4IihfMJW4,523
137
- truss/tests/test_model_inference.py,sha256=Q8mgNDNbwAUi7AQTgmyK-QrYuksuARDczYndTh56fKk,76205
142
+ truss/tests/test_model_inference.py,sha256=JbLmBb3N0oRr58LdVmxaNsMgK8aeSfjDyUfsabZPD9Q,76688
138
143
  truss/tests/test_model_schema.py,sha256=Bw28CZ4D0JQOkYdBQJZvgryeW0TRn7Axketp5kvZ_t4,14219
139
144
  truss/tests/test_testing_utilities_for_other_tests.py,sha256=YqIKflnd_BUMYaDBSkX76RWiWGWM_UlC2IoT4NngMqE,3048
140
145
  truss/tests/test_truss_gatherer.py,sha256=bn288OEkC49YY0mhly4cAl410ktZPfElNdWwZy82WfA,1261
141
146
  truss/tests/test_truss_handle.py,sha256=-xz9VXkecXDTslmQZ-dmUmQLnvD0uumRqHS2uvGlMBA,30750
142
147
  truss/tests/test_util.py,sha256=hs1bNMkXKEdoPRx4Nw-NAEdoibR92OubZuADGmbiYsQ,1344
143
- truss/tests/cli/test_cli.py,sha256=yfbVS5u1hnAmmA8mJ539vj3lhH-JVGUvC4Q_Mbort44,787
144
- truss/tests/cli/train/test_cache_view.py,sha256=aVRCh3atRpFbJqyYgq7N-vAW0DiKMftQ7ajUqO2ClOg,22606
145
- truss/tests/cli/train/test_deploy_checkpoints.py,sha256=lDk88uAUPYatJ30JKVVtJDdXv_zWNk1nxXFyUH6IVGw,44800
146
- truss/tests/cli/train/test_train_cli_core.py,sha256=vzYfxKdwoa3NaFMrVZbSg5qOoLXivMvZXN1ClQirGTQ,16148
148
+ truss/tests/cli/test_chains_cli.py,sha256=fmMYwA5XdA7lngyqnx4-3kKWxRB3vl094VjI44gVmzA,4582
149
+ truss/tests/cli/test_cli.py,sha256=kNQjwvUdsGhkDY6LbLT7X1AysfgVAvzRwF36swP-97E,5214
150
+ truss/tests/cli/test_cli_utils_common.py,sha256=X9eU5MngmQPs_R3hqf-t2TlGVyZUdxSwYfYv7nUC9R4,455
151
+ truss/tests/cli/test_model_team_resolver.py,sha256=Dsk0u5G66LaHhCpt-tWpxvKALXTINMzDP-mylN351Ak,10370
152
+ truss/tests/cli/chains/test_chains_team_parameter.py,sha256=psnb7batCG0jTUUhi_1dD4ji-XcqH0EKtEqoTvIsm3w,18816
153
+ truss/tests/cli/train/test_cache_view.py,sha256=912zvkbI6m3ffGVqUCgRcoB1cuaUPxvo3rSbmwQrO4E,30213
154
+ truss/tests/cli/train/test_deploy_checkpoints.py,sha256=Ndkd9YxEgDLf3zLAZYH0myFK_wkKTz0oGZ57yWQt_l8,10100
155
+ truss/tests/cli/train/test_train_cli_core.py,sha256=Fabmz8bDPEElgUnCRxORyFVl9v8LzORCPrJgrDnFP10,16177
147
156
  truss/tests/cli/train/test_train_init.py,sha256=SRAZvvD5-PWYlpHHek2MftYTA4I3ZHi7gniHl2fYV98,17464
157
+ truss/tests/cli/train/test_train_team_parameter.py,sha256=kIth6iO7zd8MHqzhq2x3jFFkhxpYaY-V0bHUkaSvpHI,18748
148
158
  truss/tests/cli/train/resources/test_deploy_from_checkpoint_config.yml,sha256=GF7r9l0KaeXiUYCPSBpeMPd2QG6PeWWyI12NdbqLOgc,1930
149
- truss/tests/contexts/image_builder/test_serving_image_builder.py,sha256=16niCXZnuxFHXYQw2vPFZ8svSZafkH5DT0Gx3Z9Xdd8,22377
159
+ truss/tests/contexts/image_builder/test_serving_image_builder.py,sha256=okn0Dx7Pf976YIcRsMLRXqiIks81yAa9v1HgiDE9uv8,22512
150
160
  truss/tests/contexts/local_loader/test_load_local.py,sha256=D1qMH2IpYA2j5009v50QMgUnKdeOsX15ndkwXe10a4E,801
151
161
  truss/tests/contexts/local_loader/test_truss_module_finder.py,sha256=oN1K2lg3ATHY5yOVUTfQIaSqusTF9I2wFaYaTSo5-O4,5342
152
162
  truss/tests/local/test_local_config_handler.py,sha256=aLvcOyfppskA2MziVLy_kMcagjxMpO4mjar9zxUN6g0,2245
@@ -159,14 +169,16 @@ truss/tests/patch/test_types.py,sha256=OUVDiLckbjjjEN49I4hm62emOTAr8lv_QooJrmXxs
159
169
  truss/tests/remote/test_remote_factory.py,sha256=S-iZlF5Pf5SDoFUnMlZXy9iRMkosVgwLd22evzWlFr0,4842
160
170
  truss/tests/remote/test_truss_remote.py,sha256=Rguyrnbx5RlbPJHFfCtsRtX1czAJ9Fo0aeC5EWRVkGw,2726
161
171
  truss/tests/remote/baseten/conftest.py,sha256=vNk0nfDB7XdmqatOMhjdANCWFGYM4VwSHVKlaBO2PPk,442
162
- truss/tests/remote/baseten/test_api.py,sha256=AKJeNsrUtTNa0QPClfEvXlBOSJ214PKp23ULehMRJOQ,15885
172
+ truss/tests/remote/baseten/test_api.py,sha256=bRTq4r1KKvVtAXTwo-HOUvDu0mdhuy65_zqfGlT3UhM,20327
163
173
  truss/tests/remote/baseten/test_auth.py,sha256=ttu4bDnmwGfo3oiNut4HVGnh-QnjAefwZJctiibQJKY,669
164
- truss/tests/remote/baseten/test_core.py,sha256=6NzJTDmoSUv6Muy1LFEYIUg10-cqw-hbLyeTSWcdNjY,26117
165
- truss/tests/remote/baseten/test_remote.py,sha256=y1qSPL1t7dBeYI3xMFn436fttG7wkYdAoENTz7qKObg,23634
166
- truss/tests/remote/baseten/test_service.py,sha256=ufZbtQlBNIzFCxRt_iE-APLpWbVw_3ViUpSh6H9W5nU,1945
167
- truss/tests/templates/control/control/test_endpoints.py,sha256=fxTiiCR0ltaHCL_-v-22Ie1qVgnch1lqcj3w0U3R-fk,3644
168
- truss/tests/templates/control/control/test_server.py,sha256=r1O3VEK9eoIL2-cg8nYLXYct_H3jf5rGp1wLT1KBdeA,9488
169
- truss/tests/templates/control/control/test_server_integration.py,sha256=EdDY3nLzjrRCJ5LI5yZsNCEImSRkxTL7Rn9mGnK67zA,11837
174
+ truss/tests/remote/baseten/test_chain_upload.py,sha256=D_Uhgi8YfvYpF2vAcFFutCT-gDPWM4YobHdRs-L87n8,11409
175
+ truss/tests/remote/baseten/test_core.py,sha256=oi9dSmlkJWO88LwDTULquNlQbnEyxHnPYehm8ph01kg,29253
176
+ truss/tests/remote/baseten/test_remote.py,sha256=NHUDEU3UrSKYVqGda0Q2h9DhIfjVE8tscVde0dvSi5M,21476
177
+ truss/tests/remote/baseten/test_service.py,sha256=ehbGkzzSPdLN7JHxc0O9YDPfzzKqU8OBzJGjRdw08zE,3786
178
+ truss/tests/templates/control/control/conftest.py,sha256=euDFh0AhcHP-vAmTzi1Qj3lymnplDTgvtbt4Ez_lfpw,654
179
+ truss/tests/templates/control/control/test_endpoints.py,sha256=HIlRYOicsdHD8r_V5gHpZWybDC26uwXJfbvCohdE3HI,3751
180
+ truss/tests/templates/control/control/test_server.py,sha256=0D0OMwZ-9jZRxxHoiQYij0RBMenuA9o29LlwNzd04Vk,9149
181
+ truss/tests/templates/control/control/test_server_integration.py,sha256=kvhgN1OGF5SZ1JFeg6qwbcrTy-Vr7B2JSP2z507ahxo,11925
170
182
  truss/tests/templates/control/control/helpers/test_context_managers.py,sha256=3LoonRaKu_UvhaWs1eNmEQCZq-iJ3aIjI0Mn4amC8Bw,283
171
183
  truss/tests/templates/control/control/helpers/test_model_container_patch_applier.py,sha256=jhPgExGFF42iuWPM9ry93dnpF765d-CGTCIhbswK0hk,5730
172
184
  truss/tests/templates/control/control/helpers/test_requirement_name_identifier.py,sha256=kPYrAb97BtN8Wm0Hofw7iJ412Tew2xHgiteKtXVoC5A,2980
@@ -184,7 +196,7 @@ truss/tests/test_data/pima-indians-diabetes.csv,sha256=BvW3ws17ymhv2k-S6rX2Hn_2Q
184
196
  truss/tests/test_data/readme_int_example.md,sha256=fuHvpLtdkJy1f4NAR_djotVBdzusHYNXc-Fwh588XAE,1586
185
197
  truss/tests/test_data/readme_no_example.md,sha256=T2CzFMRvICXeX3_5XbFoqhHchcHGot-xM7izx34B3aQ,1607
186
198
  truss/tests/test_data/readme_str_example.md,sha256=fP4pvMqgLdIapaOf_BgRiV0H7pw4so0RNxrlq5lbROE,1726
187
- truss/tests/test_data/server.Dockerfile,sha256=64M9aAB-Ar5Yl0k9r5WFxVb-4iUShm_OR1w9pKJfDgg,1985
199
+ truss/tests/test_data/server.Dockerfile,sha256=KoQN5qBpiXL93qbjbG76kfRVapwfV5CNJzQcpjPocz0,2047
188
200
  truss/tests/test_data/annotated_types_truss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
201
  truss/tests/test_data/annotated_types_truss/config.yaml,sha256=B-ZyyjLLqtxGfXj2tkH68Hy7NOMB_coYvoWyWom61g0,147
190
202
  truss/tests/test_data/annotated_types_truss/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -222,6 +234,10 @@ truss/tests/test_data/test_build_commands_failure/__init__.py,sha256=47DEQpj8HBS
222
234
  truss/tests/test_data/test_build_commands_failure/config.yaml,sha256=xosGlR8QZNo-eE1kOj6_4wVrkBD1Y928NGcFeK8Lo2g,259
223
235
  truss/tests/test_data/test_build_commands_failure/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
236
  truss/tests/test_data/test_build_commands_failure/model/model.py,sha256=ELYdtI0UT0T45c1yfnSsc4LvQHQn66e50UMj9RYEm1g,502
237
+ truss/tests/test_data/test_build_commands_truss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
+ truss/tests/test_data/test_build_commands_truss/config.yaml,sha256=NaAlcxR9QRew2n3C5uMhreJdirjuP0OrhhTXuEWyajQ,330
239
+ truss/tests/test_data/test_build_commands_truss/model/model.py,sha256=BMgwja9pg_GQCPp08kh8DiXKhMF7NAQK2U7aiAYY8X8,199
240
+ truss/tests/test_data/test_build_commands_truss/packages/constants/constants.py,sha256=WelkZEadCUlo8BkCYwQt2XPhTuCLbey7v10sZMEqClo,30
225
241
  truss/tests/test_data/test_concurrency_truss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
242
  truss/tests/test_data/test_concurrency_truss/config.yaml,sha256=8a1tsXlHn8IVbu_X3anP93YfkkaFxJ6wwWVI2t-q3UA,111
227
243
  truss/tests/test_data/test_concurrency_truss/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -297,7 +313,7 @@ truss/tests/test_data/test_truss/packages/__init__.py,sha256=47DEQpj8HBSa-_TImW-
297
313
  truss/tests/test_data/test_truss/packages/test_package/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
314
  truss/tests/test_data/test_truss/packages/test_package/test.py,sha256=Crrh4K5yghbuRJk8Wjp1X4scOH2Uf8TE9yyrDkqEIUs,6
299
315
  truss/tests/test_data/test_truss_server_model_cache_v1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
300
- truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml,sha256=k8wO0gs60WsLhkF6Y8ObUkhdJoPZENLqCRyg9g8ScUM,379
316
+ truss/tests/test_data/test_truss_server_model_cache_v1/config.yaml,sha256=Cjdm2tQSgtA6K7xSn3gPx0UkorMP8IgKq0ixJm2ekWg,401
301
317
  truss/tests/test_data/test_truss_server_model_cache_v1/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
318
  truss/tests/test_data/test_truss_server_model_cache_v1/model/model.py,sha256=PzIUuHohTxl7rqFpKNF6Gx2t9cfYhc_T6_a8FEPygyo,448
303
319
  truss/tests/test_data/test_truss_server_model_cache_v2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -314,7 +330,7 @@ truss/tests/test_data/test_truss_with_error/packages/helpers_2.py,sha256=q_UpVfX
314
330
  truss/tests/trt_llm/test_trt_llm_config.py,sha256=lNQ4EEkOsiT17KvnvW1snCeEBd7K_cl9_Y0dko3qpn8,8505
315
331
  truss/tests/trt_llm/test_validation.py,sha256=dmax2EHxRfqxJvWzV8uubkTef50833KBBHw-WkHufL8,2120
316
332
  truss/tests/util/test_config_checks.py,sha256=aoZF_Q-eRd3qz5wjUqa8Cr_7qF2SxodXbBIY_DBuFWg,522
317
- truss/tests/util/test_env_vars.py,sha256=hthgB1mU0bJb1H4Jugc-0khArlLZ3x6tLE82cDaa-J0,390
333
+ truss/tests/util/test_env_vars.py,sha256=kz5FlynWvXhNR9bhf-xC-0cXuyYyAOvtKLLxKLDUGf4,616
318
334
  truss/tests/util/test_path.py,sha256=YfW3-IM_7iRsdR1Cb26KB1BkDsG_53_BUGBzoxY2Nog,7408
319
335
  truss/trt_llm/config_checks.py,sha256=Efxb5l7vRNveDglse78untq9V-IgtLxejk3_8JKxN5I,4671
320
336
  truss/trt_llm/validation.py,sha256=cse-EnmuHmRpwBuSc3IvmSnl-StSQCIFM1nssgnaRUQ,1848
@@ -334,9 +350,11 @@ truss/truss_handle/patch/local_truss_patch_applier.py,sha256=fOHWKt3teYnbqeRsF63
334
350
  truss/truss_handle/patch/signature.py,sha256=8eas8gy6Japd1hrgdmtHmKTTxQmWsbmgKRQQGL2PVuA,858
335
351
  truss/truss_handle/patch/truss_dir_patch_applier.py,sha256=uhhHvKYHn_dpfz0xp4jwO9_qAej5sO3f8of_h-21PP4,3666
336
352
  truss/util/.truss_ignore,sha256=jpQA9ou-r_JEIcEHsUqGLHhir_m3d4IPGNyzKXtS-2g,3131
353
+ truss/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
337
354
  truss/util/docker.py,sha256=6PD7kMBBrOjsdvgkuSv7JMgZbe3NoJIeGasljMm2SwA,3934
338
355
  truss/util/download.py,sha256=1lfBwzyaNLEp7SAVrBd9BX5inZpkCVp8sBnS9RNoiJA,2521
339
- truss/util/env_vars.py,sha256=7Bv686eER71Barrs6fNamk_TrTJGmu9yV2TxaVmupn0,1232
356
+ truss/util/env_vars.py,sha256=PmKsXdN-PX2-_xk9XcdHTFuRRWiFaMw2iNUKxE8B1Ro,1671
357
+ truss/util/error_utils.py,sha256=pvBH_opyCVpfUbFvm8bgOtjOWit23x2smkBPPdkSZwc,1148
340
358
  truss/util/gpu.py,sha256=YiEF_JZyzur0MDMJOebMuJBQxrHD9ApGI0aPpWdb5BU,553
341
359
  truss/util/jinja.py,sha256=7KbuYNq55I3DGtImAiCvBwR0K9-z1Jo6gMhmsy4lNZE,333
342
360
  truss/util/log_utils.py,sha256=LwSgRh2K7KFjKKqBxr-IirFxGIzHi1mUM7YEvujvHsE,1985
@@ -346,8 +364,8 @@ truss/util/requirements.py,sha256=6T4nVV_NbSl3mAEo-CAk3JFmyJ_RJD768QaR55RdUJQ,69
346
364
  truss/util/user_config.py,sha256=CvBf5oouNyfdcFXOg3HFhELVW-THiuwyOYdW3aTxdHw,9130
347
365
  truss_chains/__init__.py,sha256=QDw1YwdqMaQpz5Oltu2Eq2vzEX9fDrMoqnhtbeh60i4,1278
348
366
  truss_chains/framework.py,sha256=CS7tSegPe2Q8UUT6CDkrtSrB3utr_1QN1jTEPjrj5Ug,67519
349
- truss_chains/private_types.py,sha256=6CaQEPawFLXjEbJ-01lqfexJtUIekF_q61LNENWegFo,8917
350
- truss_chains/public_api.py,sha256=0AXV6UdZIFAMycUNG_klgo4aLFmBZeKGfrulZEWzR0M,9532
367
+ truss_chains/private_types.py,sha256=fSdlsJE0VST2rU-OyATz9hOQyK1IwUB4O4sIhMOz6CI,9727
368
+ truss_chains/public_api.py,sha256=civY8juJU92jSGBI7zM1qMnA7hlUdCq7L8o4IOo5meA,9722
351
369
  truss_chains/public_types.py,sha256=RPr8jgKO_F_26F7H3CpwbidL-6euoKPdFHVpEIpYqrQ,29415
352
370
  truss_chains/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
353
371
  truss_chains/pydantic_numpy.py,sha256=MG8Ji_Inwo_JSfM2n7TPj8B-nbrBlDYsY3SOeBwD8fE,4289
@@ -355,7 +373,7 @@ truss_chains/streaming.py,sha256=DGl2LEAN67YwP7Nn9MK488KmYc4KopWmcHuE6WjyO1Q,125
355
373
  truss_chains/utils.py,sha256=LvpCG2lnN6dqPqyX3PwLH9tyjUzqQN3N4WeEFROMHak,6291
356
374
  truss_chains/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
357
375
  truss_chains/deployment/code_gen.py,sha256=397FiSNZuW59J3Ma7N9GKGfvG_87BNFAXCIV8BW41t0,32669
358
- truss_chains/deployment/deployment_client.py,sha256=OoqkO3daktYzR2YsIcDvsuGfjR05X2K7QlA7wvFduzc,34208
376
+ truss_chains/deployment/deployment_client.py,sha256=mg9q2lw_kVCgRnv36pfLq8RLlcQwO4X_TIoyyf7eqRI,34733
359
377
  truss_chains/reference_code/reference_chainlet.py,sha256=5feSeqGtrHDbldkfZCfX2R5YbbW0Uhc35mhaP2pXrHw,1340
360
378
  truss_chains/reference_code/reference_model.py,sha256=emH3hb23E_nbP98I37PGp1Xk1hz3g3lQ00tiLo55cSM,322
361
379
  truss_chains/remote_chainlet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -363,13 +381,13 @@ truss_chains/remote_chainlet/model_skeleton.py,sha256=8ZReLOO2MLcdg7bNZ61C-6j-e6
363
381
  truss_chains/remote_chainlet/stub.py,sha256=Y2gDUzMY9WRaQNHIz-o4dfLUfFyYV9dUhIRQcfgrY8g,17209
364
382
  truss_chains/remote_chainlet/utils.py,sha256=Zn3GZRvK8f65WUa-qa-8uPFZ2pD7ukRFxbLOvT-BL0Q,24063
365
383
  truss_train/__init__.py,sha256=A3MzRPMInZfmzLvPpZI7gdKgshAVCw6bwhU-6JYU2zs,939
366
- truss_train/definitions.py,sha256=TGoeG86aG76wt3h3giufg1rfm9K0W8y9bDJSITe76Aw,8209
367
- truss_train/deployment.py,sha256=lWWANSuzBWu2M4oK4qD7n-oVR1JKdmw2Pn5BJQHg-Ck,3074
384
+ truss_train/definitions.py,sha256=z5s7VaK9nhj9rpZ6Yfa_FzA-XiEzpE3bxNQr6VnyK9s,8287
385
+ truss_train/deployment.py,sha256=SfDMFBOLZvH0iuTKuOpVIOn7wnATfKnAVubP9DKFeTw,3608
368
386
  truss_train/loader.py,sha256=0o66EjBaHc2YY4syxxHVR4ordJWs13lNXnKjKq2wq0U,1630
369
- truss_train/public_api.py,sha256=9N_NstiUlmBuLUwH_fNG_1x7OhGCytZLNvqKXBlStrM,1220
387
+ truss_train/public_api.py,sha256=22li-_qXj74e9NsvxzvCbwHjGW7M6Np5-apLuh8tMKo,1322
370
388
  truss_train/restore_from_checkpoint.py,sha256=8hdPm-WSgkt74HDPjvCjZMBpvA9MwtoYsxVjOoa7BaM,1176
371
- truss-0.11.6rc102.dist-info/METADATA,sha256=48c8ILnTZPiPaHMZcqyA1YmCoaUSOPYBBI5f22Zxw4g,6682
372
- truss-0.11.6rc102.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
373
- truss-0.11.6rc102.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
374
- truss-0.11.6rc102.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
375
- truss-0.11.6rc102.dist-info/RECORD,,
389
+ truss-0.11.24rc2.dist-info/METADATA,sha256=L0Pb4nyRwyXqtaxmu7ZEaABdjUpkbEz24wldAy_wstA,6681
390
+ truss-0.11.24rc2.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
391
+ truss-0.11.24rc2.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
392
+ truss-0.11.24rc2.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
393
+ truss-0.11.24rc2.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.27.0
2
+ Generator: hatchling 1.28.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
@@ -502,10 +502,13 @@ def _create_baseten_chain(
502
502
  f"Pushing Chain '{baseten_options.chain_name}' to Baseten "
503
503
  f"(publish={baseten_options.publish}, environment={baseten_options.environment})."
504
504
  )
505
- remote_provider = cast(
506
- b10_remote.BasetenRemote,
507
- remote_factory.RemoteFactory.create(remote=baseten_options.remote),
508
- )
505
+ if baseten_options.remote_provider is not None:
506
+ remote_provider = baseten_options.remote_provider
507
+ else:
508
+ remote_provider = cast(
509
+ b10_remote.BasetenRemote,
510
+ remote_factory.RemoteFactory.create(remote=baseten_options.remote),
511
+ )
509
512
 
510
513
  if user_config.settings.include_git_info or baseten_options.include_git_info:
511
514
  truss_user_env = b10_types.TrussUserEnv.collect_with_git_info(
@@ -516,14 +519,23 @@ def _create_baseten_chain(
516
519
 
517
520
  _create_chains_secret_if_missing(remote_provider)
518
521
 
522
+ # Get chain root for raw chain artifact upload
523
+ chain_root = None
524
+ if entrypoint_descriptor is not None:
525
+ chain_root = _get_chain_root(entrypoint_descriptor.chainlet_cls)
526
+
519
527
  chain_deployment_handle = remote_provider.push_chain_atomic(
520
528
  baseten_options.chain_name,
521
529
  entrypoint_artifact,
522
530
  dependency_artifacts,
523
531
  truss_user_env,
532
+ chain_root=chain_root,
524
533
  publish=baseten_options.publish,
525
534
  environment=baseten_options.environment,
526
535
  progress_bar=progress_bar,
536
+ disable_chain_download=baseten_options.disable_chain_download,
537
+ deployment_name=baseten_options.deployment_name,
538
+ team_id=baseten_options.team_id,
527
539
  )
528
540
  return BasetenChainService(
529
541
  baseten_options.chain_name,
@@ -21,6 +21,8 @@ import pydantic
21
21
 
22
22
  from truss.base import custom_types
23
23
  from truss.base.constants import PRODUCTION_ENVIRONMENT_NAME
24
+ from truss.remote.baseten.remote import BasetenRemote
25
+ from truss.remote.remote_factory import RemoteFactory
24
26
  from truss_chains import public_types, utils
25
27
 
26
28
  TRUSS_CONFIG_CHAINS_KEY = "chains_metadata"
@@ -265,6 +267,10 @@ class PushOptionsBaseten(PushOptions):
265
267
  environment: Optional[str]
266
268
  include_git_info: bool
267
269
  working_dir: pathlib.Path
270
+ disable_chain_download: bool = False
271
+ deployment_name: Optional[str] = None
272
+ team_id: Optional[str] = None
273
+ remote_provider: Optional[BasetenRemote] = None
268
274
 
269
275
  @classmethod
270
276
  def create(
@@ -277,11 +283,19 @@ class PushOptionsBaseten(PushOptions):
277
283
  include_git_info: bool,
278
284
  working_dir: pathlib.Path,
279
285
  environment: Optional[str] = None,
286
+ disable_chain_download: bool = False,
287
+ deployment_name: Optional[str] = None,
288
+ team_id: Optional[str] = None,
289
+ remote_provider: Optional[BasetenRemote] = None,
280
290
  ) -> "PushOptionsBaseten":
281
291
  if promote and not environment:
282
292
  environment = PRODUCTION_ENVIRONMENT_NAME
283
293
  if environment:
284
294
  publish = True
295
+
296
+ if remote_provider is None and remote and not only_generate_trusses:
297
+ remote_provider = cast(BasetenRemote, RemoteFactory.create(remote=remote))
298
+
285
299
  return PushOptionsBaseten(
286
300
  remote=remote,
287
301
  chain_name=chain_name,
@@ -290,6 +304,10 @@ class PushOptionsBaseten(PushOptions):
290
304
  environment=environment,
291
305
  include_git_info=include_git_info,
292
306
  working_dir=working_dir,
307
+ disable_chain_download=disable_chain_download,
308
+ deployment_name=deployment_name,
309
+ team_id=team_id,
310
+ remote_provider=remote_provider,
293
311
  )
294
312
 
295
313
 
@@ -151,6 +151,7 @@ def push(
151
151
  environment: Optional[str] = None,
152
152
  progress_bar: Optional[Type["progress.Progress"]] = None,
153
153
  include_git_info: bool = False,
154
+ disable_chain_download: bool = False,
154
155
  ) -> deployment_client.BasetenChainService:
155
156
  """
156
157
  Deploys a chain remotely (with all dependent chainlets).
@@ -172,6 +173,7 @@ def push(
172
173
  include_git_info: Whether to attach git versioning info (sha, branch, tag) to
173
174
  deployments made from within a git repo. If set to True in `.trussrc`, it
174
175
  will always be attached.
176
+ disable_chain_download: Disable downloading of pushed chain source code from the UI.
175
177
 
176
178
  Returns:
177
179
  A chain service handle to the deployed chain.
@@ -186,6 +188,7 @@ def push(
186
188
  environment=environment,
187
189
  include_git_info=include_git_info,
188
190
  working_dir=pathlib.Path(inspect.getfile(entrypoint)).parent,
191
+ disable_chain_download=disable_chain_download,
189
192
  )
190
193
  service = deployment_client.push(entrypoint, options, progress_bar=progress_bar)
191
194
  assert isinstance(
@@ -99,6 +99,7 @@ class LoadCheckpointConfig(custom_types.SafeModelNoExtra):
99
99
  class CheckpointingConfig(custom_types.SafeModelNoExtra):
100
100
  enabled: bool = False
101
101
  checkpoint_path: Optional[str] = None
102
+ volume_size_gib: Optional[int] = None
102
103
 
103
104
 
104
105
  class CacheConfig(custom_types.SafeModelNoExtra):
@@ -125,7 +126,7 @@ class Runtime(custom_types.SafeModelNoExtra):
125
126
  raise ValueError(
126
127
  "Cannot set both 'enable_cache' and 'cache_config'. "
127
128
  "'enable_cache' is deprecated. Prefer migrating to 'cache_config' with "
128
- "`enabled=True` and `enable_legacy_hf_cache=True`."
129
+ "`enabled=True` and `enable_legacy_hf_mount=True`."
129
130
  )
130
131
 
131
132
  # Migrate enable_cache to cache_config if enable_cache is True
@@ -181,16 +182,18 @@ class TrainingProject(custom_types.SafeModelNoExtra):
181
182
  # TrainingProject is the wrapper around project config and job config. However, we exclude job
182
183
  # in serialization so just TrainingProject metadata is included in API requests.
183
184
  job: TrainingJob = pydantic.Field(exclude=True)
185
+ team_name: Optional[str] = None
184
186
 
185
187
 
186
188
  class Checkpoint(custom_types.ConfigModel, ABC):
187
189
  training_job_id: str
188
- paths: List[str]
190
+ checkpoint_name: str
189
191
  model_weight_format: ModelWeightsFormat
190
192
 
191
193
  def to_truss_config(self) -> truss_config.TrainingArtifactReference:
192
194
  return truss_config.TrainingArtifactReference(
193
- training_job_id=self.training_job_id, paths=self.paths
195
+ training_job_id=self.training_job_id,
196
+ paths=[f"rank-0/{self.checkpoint_name}/"],
194
197
  )
195
198
 
196
199
 
@@ -244,6 +247,5 @@ class DeployCheckpointsRuntime(custom_types.SafeModelNoExtra):
244
247
  class DeployCheckpointsConfig(custom_types.SafeModelNoExtra):
245
248
  checkpoint_details: Optional[CheckpointList] = None
246
249
  model_name: Optional[str] = None
247
- deployment_name: Optional[str] = None
248
250
  runtime: Optional[DeployCheckpointsRuntime] = None
249
251
  compute: Optional[Compute] = None
truss_train/deployment.py CHANGED
@@ -9,7 +9,6 @@ from truss.remote.baseten.api import BasetenApi
9
9
  from truss.remote.baseten.core import archive_dir
10
10
  from truss.remote.baseten.remote import BasetenRemote
11
11
  from truss.remote.baseten.utils import transfer
12
- from truss_train import loader
13
12
  from truss_train.definitions import TrainingJob, TrainingProject
14
13
 
15
14
 
@@ -22,6 +21,7 @@ class S3Artifact(SafeModel):
22
21
  # to the end user via the TrainingJob SDK.
23
22
  class PreparedTrainingJob(TrainingJob):
24
23
  runtime_artifacts: List[S3Artifact] = []
24
+ truss_user_env: Optional[b10_types.TrussUserEnv] = None
25
25
 
26
26
  def model_dump(self, *args, **kwargs):
27
27
  data = super().model_dump(*args, **kwargs)
@@ -31,7 +31,12 @@ class PreparedTrainingJob(TrainingJob):
31
31
  return data
32
32
 
33
33
 
34
- def prepare_push(api: BasetenApi, config: pathlib.Path, training_job: TrainingJob):
34
+ def prepare_push(
35
+ api: BasetenApi,
36
+ config: pathlib.Path,
37
+ training_job: TrainingJob,
38
+ truss_user_env: Optional[b10_types.TrussUserEnv] = None,
39
+ ):
35
40
  # Assume config is at the root of the directory.
36
41
  archive = archive_dir(config.absolute().parent)
37
42
  credentials = api.get_blob_credentials(b10_types.BlobType.TRAIN)
@@ -49,16 +54,27 @@ def prepare_push(api: BasetenApi, config: pathlib.Path, training_job: TrainingJo
49
54
  runtime_artifacts=[
50
55
  S3Artifact(s3_key=credentials["s3_key"], s3_bucket=credentials["s3_bucket"])
51
56
  ],
57
+ truss_user_env=truss_user_env,
52
58
  )
53
59
 
54
60
 
55
- def create_training_job(
56
- remote_provider: BasetenRemote, training_project: TrainingProject, config: Path
61
+ def _upsert_project_and_create_job(
62
+ remote_provider: BasetenRemote,
63
+ training_project: TrainingProject,
64
+ config: Path,
65
+ team_id: Optional[str] = None,
57
66
  ) -> dict:
58
- project_resp = remote_provider.api.upsert_training_project(
59
- training_project=training_project
67
+ project_resp = remote_provider.upsert_training_project(
68
+ training_project=training_project, team_id=team_id
69
+ )
70
+
71
+ # Collect TrussUserEnv with git info from the config directory
72
+ working_dir = config.absolute().parent
73
+ truss_user_env = b10_types.TrussUserEnv.collect_with_git_info(working_dir)
74
+
75
+ prepared_job = prepare_push(
76
+ remote_provider.api, config, training_project.job, truss_user_env=truss_user_env
60
77
  )
61
- prepared_job = prepare_push(remote_provider.api, config, training_project.job)
62
78
 
63
79
  job_resp = remote_provider.api.create_training_job(
64
80
  project_id=project_resp["id"], job=prepared_job
@@ -66,22 +82,28 @@ def create_training_job(
66
82
  return job_resp
67
83
 
68
84
 
69
- def create_training_job_from_file(
85
+ def create_training_job(
70
86
  remote_provider: BasetenRemote,
71
87
  config: Path,
88
+ training_project: TrainingProject,
72
89
  job_name_from_cli: Optional[str] = None,
90
+ team_name: Optional[str] = None,
91
+ team_id: Optional[str] = None,
73
92
  ) -> dict:
74
- with loader.import_training_project(config) as training_project:
75
- if job_name_from_cli:
76
- if training_project.job.name:
77
- console.print(
78
- f"[bold yellow]⚠ Warning:[/bold yellow] name '{training_project.job.name}' provided in config file will be ignored. Using job name '{job_name_from_cli}' provided via --job-name flag."
79
- )
80
- training_project.job.name = job_name_from_cli
81
- job_resp = create_training_job(
82
- remote_provider=remote_provider,
83
- training_project=training_project,
84
- config=config,
85
- )
86
- job_resp["job_object"] = training_project.job
93
+ if job_name_from_cli:
94
+ if training_project.job.name:
95
+ console.print(
96
+ f"[bold yellow]⚠ Warning:[/bold yellow] name '{training_project.job.name}' provided in config file will be ignored. Using job name '{job_name_from_cli}' provided via --job-name flag."
97
+ )
98
+ training_project.job.name = job_name_from_cli
99
+ if team_name:
100
+ training_project.team_name = team_name
101
+
102
+ job_resp = _upsert_project_and_create_job(
103
+ remote_provider=remote_provider,
104
+ training_project=training_project,
105
+ config=config,
106
+ team_id=team_id,
107
+ )
108
+ job_resp["job_object"] = training_project.job
87
109
  return job_resp
truss_train/public_api.py CHANGED
@@ -3,7 +3,8 @@ from typing import cast
3
3
 
4
4
  from truss.remote.baseten.remote import BasetenRemote
5
5
  from truss.remote.remote_factory import RemoteFactory
6
- from truss_train.deployment import create_training_job_from_file
6
+ from truss_train import loader
7
+ from truss_train.deployment import create_training_job
7
8
 
8
9
 
9
10
  def push(config: Path, remote: str = "baseten"):
@@ -30,4 +31,5 @@ def push(config: Path, remote: str = "baseten"):
30
31
  remote_provider: BasetenRemote = cast(
31
32
  BasetenRemote, RemoteFactory.create(remote=remote)
32
33
  )
33
- return create_training_job_from_file(remote_provider, config)
34
+ with loader.import_training_project(config) as training_project:
35
+ return create_training_job(remote_provider, config, training_project)