flask.py 916 B

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