google / grumpy

Grumpy is a Python to Go source code transcompiler and runtime.
Apache License 2.0
10.54k stars 648 forks source link

Should resolve ImportError on run time, not compile time #397

Open alanjds opened 6 years ago

alanjds commented 6 years ago

Let be this test code:

import sys
import math

assert sys.modules['math']
assert 'fake_not_existing_module' not in sys.modules

sys.modules['fake_not_existing_module'] = math
assert sys.modules['fake_not_existing_module']

import fake_not_existing_module
assert fake_not_existing_module

It is valid and works on CPython, but Grumpy will raise:

...
  File "/Users/alanjds/src/git/grumpy/build/lib/python2.7/site-packages/grumpy/compiler/imputil.py", line 158, in _resolve_import
    raise util.ImportError(node, 'no such module: {}'.format(modname))
grumpy.compiler.util.ImportError: line 116: no such module: fake_not_existing_module

To me, seems that compile-time import errors should be ignored and be checked/raised only on run time.

alanjds commented 6 years ago

I am planning a refactor on the "tools" folder of Grumpy, to address this, #388, to implement the PEP-3147 and more.