o
    ªZh>  ã                   @   sh   d Z ddlmZ G dd„ deƒZG d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
dS )zW
Lazy modules.

They are useful to not import big modules until it's really necessary.
é    )Úis_module_installedc                   @   s   e Zd ZdZdS )Ú
FakeObjectz1Fake class used in replacement of missing objectsN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__© r   r   úW/var/www/html/lang_env/lib/python3.10/site-packages/spyder_kernels/utils/lazymodules.pyr      s    r   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )Ú
LazyModulezLazy module loader class.Nc                 C   s4   || _ t| _|dur|D ]}t| j|tƒ qdS dS )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ÚmodnameZsecond_level_attrsÚattrr   r   r	   Ú__init__   s   þzLazyModule.__init__c                 C   s*   t | jƒrt| jƒ| _n| jS t| j|ƒS ©N)r   r   Ú
__import__r   Úgetattr)r   Únamer   r   r	   Ú__getattr__1   s   
zLazyModule.__getattr__r   )r   r   r   r   r   r   r   r   r   r	   r
      s    
r
   ÚnumpyZMaskedArrayÚpandasz	PIL.ImageZImageÚbs4ZNavigableStringzscipy.ioN)r   Zspyder_kernels.utils.miscr   Úobjectr   r
   r   r   ZPILr   Zscipyr   r   r   r	   Ú<module>   s   #