
    ` Ie>                         d Z ddlmZ  G d de      Z G d de      Z eddg      Z ed	      Z ed
dg      Z eddg      Z	 ed      Z
y)zW
Lazy modules.

They are useful to not import big modules until it's really necessary.
    )is_module_installedc                       e Zd ZdZy)
FakeObjectz1Fake class used in replacement of missing objectsN)__name__
__module____qualname____doc__     B/usr/lib/python3/dist-packages/spyder_kernels/utils/lazymodules.pyr   r      s    ;r   r   c                       e Zd ZdZddZd Zy)
LazyModulezLazy module loader class.Nc                 r    || _         t        | _        |#|D ]  }t        | j                  |t                yy)a=  
        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.
        N)__spy_modname__r   __spy_mod__setattr)selfmodnamesecond_level_attrsattrs       r   __init__zLazyModule.__init__   sB      '% )* <(($
;< *r   c                     t        | j                        rt        | j                        | _        n| j                  S t	        | j                  |      S N)r   r   
__import__r   getattr)r   names     r   __getattr__zLazyModule.__getattr__1   sB    t334)$*>*>?D###t''..r   r   )r   r   r   r	   r   r   r
   r   r   r   r      s    #<(/r   r   numpyMaskedArraypandasz	PIL.ImageImagebs4NavigableStringzscipy.ioN)r	   spyder_kernels.utils.miscr   objectr   r   r   r    PILr"   scipyr
   r   r   <module>r(      sj    :	 	
/ /F 	7]O,	H	wi(*+,:r   