build_environment: drop off by one fix (#47960)
This commit is contained in:
parent
f181ac199a
commit
94bd7b9afb
@ -1426,27 +1426,20 @@ def make_stack(tb, stack=None):
|
|||||||
# We found obj, the Package implementation we care about.
|
# We found obj, the Package implementation we care about.
|
||||||
# Point out the location in the install method where we failed.
|
# Point out the location in the install method where we failed.
|
||||||
filename = inspect.getfile(frame.f_code)
|
filename = inspect.getfile(frame.f_code)
|
||||||
lineno = frame.f_lineno
|
lines = [f"{filename}:{frame.f_lineno}, in {frame.f_code.co_name}:"]
|
||||||
if os.path.basename(filename) == "package.py":
|
|
||||||
# subtract 1 because we inject a magic import at the top of package files.
|
|
||||||
# TODO: get rid of the magic import.
|
|
||||||
lineno -= 1
|
|
||||||
|
|
||||||
lines = ["{0}:{1:d}, in {2}:".format(filename, lineno, frame.f_code.co_name)]
|
|
||||||
|
|
||||||
# Build a message showing context in the install method.
|
# Build a message showing context in the install method.
|
||||||
sourcelines, start = inspect.getsourcelines(frame)
|
sourcelines, start = inspect.getsourcelines(frame)
|
||||||
|
|
||||||
# Calculate lineno of the error relative to the start of the function.
|
# Calculate lineno of the error relative to the start of the function.
|
||||||
fun_lineno = lineno - start
|
fun_lineno = frame.f_lineno - start
|
||||||
start_ctx = max(0, fun_lineno - context)
|
start_ctx = max(0, fun_lineno - context)
|
||||||
sourcelines = sourcelines[start_ctx : fun_lineno + context + 1]
|
sourcelines = sourcelines[start_ctx : fun_lineno + context + 1]
|
||||||
|
|
||||||
for i, line in enumerate(sourcelines):
|
for i, line in enumerate(sourcelines):
|
||||||
is_error = start_ctx + i == fun_lineno
|
is_error = start_ctx + i == fun_lineno
|
||||||
mark = ">> " if is_error else " "
|
|
||||||
# Add start to get lineno relative to start of file, not function.
|
# Add start to get lineno relative to start of file, not function.
|
||||||
marked = " {0}{1:-6d}{2}".format(mark, start + start_ctx + i, line.rstrip())
|
marked = f" {'>> ' if is_error else ' '}{start + start_ctx + i:-6d}{line.rstrip()}"
|
||||||
if is_error:
|
if is_error:
|
||||||
marked = colorize("@R{%s}" % cescape(marked))
|
marked = colorize("@R{%s}" % cescape(marked))
|
||||||
lines.append(marked)
|
lines.append(marked)
|
||||||
|
Loading…
Reference in New Issue
Block a user