mirror of https://github.com/astral-sh/uv
Defer import of traceback
This commit is contained in:
parent
f9bea6bba0
commit
73b1aa85a2
|
|
@ -13,7 +13,6 @@ import errno
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import traceback
|
|
||||||
from contextlib import ExitStack, contextmanager
|
from contextlib import ExitStack, contextmanager
|
||||||
from functools import cache
|
from functools import cache
|
||||||
from typing import Any, Literal, Self, TextIO
|
from typing import Any, Literal, Self, TextIO
|
||||||
|
|
@ -389,6 +388,9 @@ def send_error(file: TextIO, exc: HookdError):
|
||||||
|
|
||||||
|
|
||||||
def send_traceback(file: TextIO, exc: BaseException):
|
def send_traceback(file: TextIO, exc: BaseException):
|
||||||
|
# Defer import of traceback until an exception occurs
|
||||||
|
import traceback
|
||||||
|
|
||||||
tb = traceback.format_exception(exc)
|
tb = traceback.format_exception(exc)
|
||||||
write_safe(file, "TRACEBACK", "\n".join(tb))
|
write_safe(file, "TRACEBACK", "\n".join(tb))
|
||||||
|
|
||||||
|
|
@ -473,15 +475,17 @@ def run_once(stdin: TextIO, stdout: TextIO):
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Optimized version of temporary file creation.
|
Optimized version of temporary file creation based on CPython's `NamedTemporaryFile`.
|
||||||
Implemenation based on CPython.
|
|
||||||
|
|
||||||
This implementation:
|
Profiling shows that temporary file creation for stdout and stderr is the most expensive
|
||||||
|
part of running a build hook.
|
||||||
|
|
||||||
|
Notable differences:
|
||||||
- Uses UUIDs instead of the CPython random name generator
|
- Uses UUIDs instead of the CPython random name generator
|
||||||
- Finds a valid temporary directory at the same time as creating the temporary file
|
- Finds a valid temporary directory at the same time as creating the temporary file
|
||||||
- Avoids having to unlink a file created just to test if the directory is valid
|
- Avoids having to unlink a file created just to test if the directory is valid
|
||||||
- Only finds the default temporary directory _once_ then caches it
|
- Only finds the default temporary directory _once_ then caches it
|
||||||
|
- Does not manage deletion of the file
|
||||||
"""
|
"""
|
||||||
|
|
||||||
_text_openflags = os.O_RDWR | os.O_CREAT | os.O_EXCL
|
_text_openflags = os.O_RDWR | os.O_CREAT | os.O_EXCL
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue