truss 0.11.8rc3__py3-none-any.whl → 0.11.8rc4__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.

Potentially problematic release.


This version of truss might be problematic. Click here for more details.

@@ -2,13 +2,15 @@ import asyncio
2
2
  import logging
3
3
  import logging.config
4
4
  import re
5
+ import traceback
6
+ from functools import wraps
5
7
  from pathlib import Path
6
- from typing import Dict
8
+ from typing import Any, Callable, Coroutine, Dict
7
9
 
8
10
  import httpx
9
11
  from endpoints import control_app
10
- from fastapi import FastAPI
11
- from fastapi.responses import JSONResponse
12
+ from fastapi import FastAPI, Request
13
+ from fastapi.responses import JSONResponse, Response
12
14
  from helpers.errors import ModelLoadFailed, PatchApplicatonError
13
15
  from helpers.inference_server_controller import InferenceServerController
14
16
  from helpers.inference_server_process_controller import InferenceServerProcessController
@@ -18,17 +20,43 @@ from shared import log_config
18
20
  from starlette.datastructures import State
19
21
 
20
22
 
23
+ def sanitized_exception_logging(
24
+ original_handler: Callable[[Request, Any], Coroutine[Any, Any, Response]],
25
+ ) -> Callable[[Request, Any], Coroutine[Any, Any, Response]]:
26
+ @wraps(original_handler)
27
+ async def wrapper(request: Request, error: Exception) -> Response:
28
+ logger = request.app.state.logger
29
+ traceback_error = traceback.extract_tb(error.__traceback__)
30
+
31
+ if traceback_error:
32
+ last_frame = traceback_error[-1]
33
+ concise_error = (
34
+ f' File "{last_frame.filename}", line {last_frame.lineno}, in {last_frame.name}\n'
35
+ f" {last_frame.line}"
36
+ )
37
+ else:
38
+ concise_error = f"{type(error).__name__}: {error}"
39
+
40
+ logger.error(concise_error)
41
+ return await original_handler(request, error)
42
+
43
+ return wrapper
44
+
45
+
46
+ @sanitized_exception_logging
21
47
  async def handle_patch_error(_, exc):
22
48
  error_type = _camel_to_snake_case(type(exc).__name__)
23
49
  return JSONResponse(content={"error": {"type": error_type, "msg": str(exc)}})
24
50
 
25
51
 
52
+ @sanitized_exception_logging
26
53
  async def generic_error_handler(_, exc):
27
54
  return JSONResponse(
28
55
  content={"error": {"type": "unknown", "msg": f"{type(exc)}: {exc}"}}
29
56
  )
30
57
 
31
58
 
59
+ @sanitized_exception_logging
32
60
  async def handle_model_load_failed(_, error):
33
61
  # Model load failures should result in 503 status
34
62
  return JSONResponse({"error": str(error)}, 503)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: truss
3
- Version: 0.11.8rc3
3
+ Version: 0.11.8rc4
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
@@ -73,7 +73,7 @@ truss/templates/copy_cache_files.Dockerfile.jinja,sha256=Os5zFdYLZ_AfCRGq4RcpVTO
73
73
  truss/templates/docker_server_requirements.txt,sha256=PyhOPKAmKW1N2vLvTfLMwsEtuGpoRrbWuNo7tT6v2Mc,18
74
74
  truss/templates/server.Dockerfile.jinja,sha256=CUYnF_hgxPGq2re7__0UPWlwzOHMoFkxp6NVKi3U16s,7071
75
75
  truss/templates/control/requirements.txt,sha256=nqqNmlTwFeV8sV4fqwItwzzd_egADBP_e-cEopXBJ4k,358
76
- truss/templates/control/control/application.py,sha256=jYeta6hWe1SkfLL3W4IDmdYjg3ZuKqI_UagWYs5RB_E,3793
76
+ truss/templates/control/control/application.py,sha256=Js6I1b5lxgi8Ylyj2-g3UeEqpKnSvvdYiXq-jSq2XX8,4803
77
77
  truss/templates/control/control/endpoints.py,sha256=VQ1lvZjFvR091yRkiFdvXw1Q7PiNGXT9rJwY7_sX6yg,11828
78
78
  truss/templates/control/control/server.py,sha256=R4Y219i1dcz0kkksN8obLoX-YXWGo9iW1igindyG50c,3128
79
79
  truss/templates/control/control/helpers/context_managers.py,sha256=W6dyFgLBhPa5meqrOb3w_phMtKfaJI-GhwUfpiycDc8,413
@@ -368,8 +368,8 @@ truss_train/deployment.py,sha256=lWWANSuzBWu2M4oK4qD7n-oVR1JKdmw2Pn5BJQHg-Ck,307
368
368
  truss_train/loader.py,sha256=0o66EjBaHc2YY4syxxHVR4ordJWs13lNXnKjKq2wq0U,1630
369
369
  truss_train/public_api.py,sha256=9N_NstiUlmBuLUwH_fNG_1x7OhGCytZLNvqKXBlStrM,1220
370
370
  truss_train/restore_from_checkpoint.py,sha256=8hdPm-WSgkt74HDPjvCjZMBpvA9MwtoYsxVjOoa7BaM,1176
371
- truss-0.11.8rc3.dist-info/METADATA,sha256=ziFdl3TpygMkpZIMoHXADHO9gSIBCXaVeGdXelt46U0,6680
372
- truss-0.11.8rc3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
373
- truss-0.11.8rc3.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
374
- truss-0.11.8rc3.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
375
- truss-0.11.8rc3.dist-info/RECORD,,
371
+ truss-0.11.8rc4.dist-info/METADATA,sha256=L17Z01_P_5zrhwF9d9sK1tGmAS-_vLI1YoVAVs0Vpvk,6680
372
+ truss-0.11.8rc4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
373
+ truss-0.11.8rc4.dist-info/entry_points.txt,sha256=-MwKfHHQHQ6j0HqIgvxrz3CehCmczDLTD-OsRHnjjuU,130
374
+ truss-0.11.8rc4.dist-info/licenses/LICENSE,sha256=FTqGzu85i-uw1Gi8E_o0oD60bH9yQ_XIGtZbA1QUYiw,1064
375
+ truss-0.11.8rc4.dist-info/RECORD,,