asm
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -----------------------------------------------------------------------------
|
||||
# Copyright (c) 2009- Spyder Kernels Contributors
|
||||
#
|
||||
# Licensed under the terms of the MIT License
|
||||
# (see spyder_kernels/__init__.py for details)
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
"""
|
||||
Lazy modules.
|
||||
|
||||
They are useful to not import big modules until it's really necessary.
|
||||
"""
|
||||
|
||||
from spyder_kernels.utils.misc import is_module_installed
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Auxiliary classes
|
||||
# =============================================================================
|
||||
class FakeObject(object):
|
||||
"""Fake class used in replacement of missing objects"""
|
||||
pass
|
||||
|
||||
|
||||
class LazyModule(object):
|
||||
"""Lazy module loader class."""
|
||||
|
||||
def __init__(self, modname, second_level_attrs=None):
|
||||
"""
|
||||
Lazy module loader class.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
modname: str
|
||||
Module name to lazy load.
|
||||
second_level_attrs: list (optional)
|
||||
List of second level attributes to add to the FakeObject
|
||||
that stands for the module in case it's not found.
|
||||
"""
|
||||
self.__spy_modname__ = modname
|
||||
self.__spy_mod__ = FakeObject
|
||||
|
||||
# Set required second level attributes
|
||||
if second_level_attrs is not None:
|
||||
for attr in second_level_attrs:
|
||||
setattr(self.__spy_mod__, attr, FakeObject)
|
||||
|
||||
def __getattr__(self, name):
|
||||
if is_module_installed(self.__spy_modname__):
|
||||
self.__spy_mod__ = __import__(self.__spy_modname__)
|
||||
else:
|
||||
return self.__spy_mod__
|
||||
|
||||
return getattr(self.__spy_mod__, name)
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# Lazy modules
|
||||
# =============================================================================
|
||||
numpy = LazyModule('numpy', ['MaskedArray'])
|
||||
|
||||
pandas = LazyModule('pandas')
|
||||
|
||||
PIL = LazyModule('PIL.Image', ['Image'])
|
||||
|
||||
bs4 = LazyModule('bs4', ['NavigableString'])
|
||||
|
||||
scipy = LazyModule('scipy.io')
|
||||
Reference in New Issue
Block a user