gh-67224: Show source lines in tracebacks when using the -c option when running Python (#111200)

This commit is contained in:
Pablo Galindo Salgado 2023-10-26 15:17:28 +09:00 committed by GitHub
parent 3f84a19e62
commit 90a1b2859f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 104 additions and 36 deletions

View file

@ -5,10 +5,8 @@ is not found, it will look down the module search path for a file by
that name.
"""
import functools
import sys
import os
import tokenize
__all__ = ["getline", "clearcache", "checkcache", "lazycache"]
@ -82,6 +80,8 @@ def updatecache(filename, module_globals=None):
If something's wrong, print a message, discard the cache entry,
and return an empty list."""
import tokenize
if filename in cache:
if len(cache[filename]) != 1:
cache.pop(filename, None)
@ -176,11 +176,13 @@ def lazycache(filename, module_globals):
get_source = getattr(loader, 'get_source', None)
if name and get_source:
get_lines = functools.partial(get_source, name)
def get_lines(name=name, *args, **kwargs):
return get_source(name, *args, **kwargs)
cache[filename] = (get_lines,)
return True
return False
def _register_code(code, string, name):
cache[code] = (
len(string),