flask.py 919 Bytes
Newer Older
Stelios Karozis's avatar
Stelios Karozis committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
def import_module(callback):
    """
    Handle "magic" Flask extension imports:
    ``flask.ext.foo`` is really ``flask_foo`` or ``flaskext.foo``.
    """
    def wrapper(inference_state, import_names, module_context, *args, **kwargs):
        if len(import_names) == 3 and import_names[:2] == ('flask', 'ext'):
            # New style.
            ipath = (u'flask_' + import_names[2]),
            value_set = callback(inference_state, ipath, None, *args, **kwargs)
            if value_set:
                return value_set
            value_set = callback(inference_state, (u'flaskext',), None, *args, **kwargs)
            return callback(
                inference_state,
                (u'flaskext', import_names[2]),
                next(iter(value_set)),
                *args, **kwargs
            )
        return callback(inference_state, import_names, module_context, *args, **kwargs)
    return wrapper