IronPython doesn't always have frame.f_globals, fix #75

This commit is contained in:
Ram Rachum
2019-04-28 22:27:50 +03:00
parent 9a81a2e76c
commit fb5b7eabbc
2 changed files with 4 additions and 4 deletions

View File

@@ -7,7 +7,7 @@ import collections
__VersionInfo = collections.namedtuple('VersionInfo',
('major', 'minor', 'micro'))
__version__ = '0.0.22'
__version__ = '0.0.23'
__version_info__ = __VersionInfo(*(map(int, __version__.split('.'))))
del collections, __VersionInfo # Avoid polluting the namespace

View File

@@ -54,7 +54,7 @@ def get_local_reprs(frame, variables=()):
for variable in variables:
try:
result[variable] = get_shortish_repr(
eval(variable, frame.f_globals, frame.f_locals)
eval(variable, (frame.f_globals or {}), frame.f_locals)
)
except Exception:
pass
@@ -71,7 +71,7 @@ source_cache_by_file_name = {}
def get_source_from_frame(frame):
module_name = frame.f_globals.get('__name__') or ''
module_name = (frame.f_globals or {}).get('__name__') or ''
if module_name:
try:
return source_cache_by_module_name[module_name]
@@ -83,7 +83,7 @@ def get_source_from_frame(frame):
return source_cache_by_file_name[file_name]
except KeyError:
pass
loader = frame.f_globals.get('__loader__')
loader = (frame.f_globals or {}).get('__loader__')
source = None
if hasattr(loader, 'get_source'):