U
    [e.!                     @   s0  d Z ddlmZ ddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ dZdZdZdZd	Zd
ZG dd deZG dd deZG dd deZG dd deZG dd deZdd Zdd ZG dd dZG dd dZeeejZ eeej!Z"eeej!Z#eeejZ$e Z%e Z&dd Z'dS )z
    pyexcel_io.plugins
    ~~~~~~~~~~~~~~~~~~~

    factory for getting readers and writers

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
    Nscan_plugins_regex)
PluginInfoPluginManagerPluginInfoChainz,one of these plugins for %s data in '%s': %szHPlease upgrade the plugin '%s' according to plugin compactibility table.zpyexcel-io readerzpyexcel-io v2 readerzpyexcel-io writerzpyexcel-io v2 writerc                   @   s   e Zd ZdZdd ZdS )IOPluginInfoz"Pyexcel-io plugin info descriptionc                 c   s   | j D ]
}|V  qd S N)
file_types)self	file_type r   T/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel_io/plugins.pytags   s    
zIOPluginInfo.tagsN)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   c                   @   s$   e Zd ZdZdddZdddZdS )	IOPluginInfoChain5provide custom functions to add a reader and a writerNc                 C   s    t t| |||d}| |S )!add pyexcle-io reader plugin infor	   stream_type)r   READER_PLUGIN_get_abs_pathadd_a_plugin_instancer
   relative_plugin_class_pathr	   r   a_plugin_infor   r   r   add_a_reader%   s    zIOPluginInfoChain.add_a_readerc                 C   s    t t| |||d}| |S )!add pyexcle-io writer plugin infor   )r   WRITER_PLUGINr   r   r   r   r   r   add_a_writer4   s    zIOPluginInfoChain.add_a_writer)NNN)NNNr   r   r   r   r   r!   r   r   r   r   r   "   s      
   r   c                   @   s$   e Zd ZdZdddZd	ddZdS )
IOPluginInfoChainV2r   Nr   c                    s.   t t| | fdd|D |d}| |S )r   c                    s$   g | ]} D ]}| d | qqS -r   .0r   location	locationsr   r   
<listcomp>R   s    z4IOPluginInfoChainV2.add_a_reader.<locals>.<listcomp>r   )r   READER_PLUGIN_V2r   r   r
   r   r*   r	   r   r   r   r)   r   r   G   s    

z IOPluginInfoChainV2.add_a_readerc                    s.   t t| | fdd|D |d}| |S )r   c                    s$   g | ]} D ]}| d | qqS r$   r   r&   r)   r   r   r+   f   s    z4IOPluginInfoChainV2.add_a_writer.<locals>.<listcomp>r   )r   WRITER_PLUGIN_V2r   r   r-   r   r)   r   r!   [   s    

z IOPluginInfoChainV2.add_a_writer)Nr   NN)Nr   r   Nr"   r   r   r   r   r#   D   s       
    r#   c                   @   sB   e Zd ZdZdd Zdd Zdd Zdd	d
Zdd Zdd Z	dS )	IOManagerzManage pyexcel-io pluginsc                 C   s,   t | | || _d| _| jtkr(d| _d S )Nreadwrite)r   __init__known_pluginsactionZplugin_namer    )r
   Zplugin_typeZ
known_listr   r   r   r2   s   s
    
zIOManager.__init__c                 C   s   t | | t| d S r   )r   load_me_later_do_additional_registrationr
   plugin_infor   r   r   r5   z   s    zIOManager.load_me_laterc                 C   s   t | || t| dS zfor dynamically loaded pluginN)r   register_a_pluginr6   r
   clsr8   r   r   r   r:   ~   s    zIOManager.register_a_pluginNc                 K   sN   |  }z| j||d}W n tk
r8   | | Y nX | }|| |S )Nlibrary)lowerload_me_now	Exceptionraise_exceptionset_type)r
   r   r>   keywordsZ_IOManager__file_typepluginhandlerr   r   r   get_a_plugin   s    
zIOManager.get_a_pluginc                 C   sh   | j |d }|rVd}t|dkr>|t| j|d|f 7 }n||d 7 }t|ntd| d S )NPlease install    ,r    No suitable library found for %s)	r3   getlenERROR_MESSAGE_FORMATTERr4   join
exceptions(SupportingPluginAvailableButNotInstalledNoSupportingPluginFoundr
   r   pluginsmessager   r   r   rB      s    
zIOManager.raise_exceptionc                 C   s:   t t| j t| j  }|t tjtjg}|S )return all supported formats)	setlistregistrykeysr3   
difference	constantsDB_SQL	DB_DJANGOr
   Zall_formatsr   r   r   get_all_formats   s    zIOManager.get_all_formats)NN)
r   r   r   r   r2   r5   r:   rG   rB   r`   r   r   r   r   r/   p   s   

r/   c                   @   s6   e Zd Zdd Zdd ZdddZdd	 Zd
d ZdS )NewIOManagerc                 C   s   t | | t| d S r   )r   r5   +_do_additional_registration_for_new_pluginsr7   r   r   r   r5      s    zNewIOManager.load_me_laterc                 C   s   t | || t| dS r9   )r   r:   rb   r;   r   r   r   r:      s    zNewIOManager.register_a_pluginNc                 K   s$   |  }| j| d| |d}|S )Nr%   r=   )r?   r@   )r
   r   r(   r>   rD   Z_NewIOManager__file_typerE   r   r   r   rG      s    zNewIOManager.get_a_pluginc                 C   sv   | dd }| j|d }|rdd}t|dkrL|t| j|d|f 7 }n||d 7 }t|nt	d| d S )Nr%   rI   rH   rJ   r   rK   )
splitr3   rL   rM   rN   r4   rO   rP   rQ   rR   rS   r   r   r   rB      s    
zNewIOManager.raise_exceptionc                 C   s*   t dd | j D t| j  }|S )rV   c                 S   s   g | ]}| d d qS )r%   rI   )rc   )r'   xr   r   r   r+      s     z0NewIOManager.get_all_formats.<locals>.<listcomp>)rW   rY   rZ   rX   r3   r_   r   r   r   r`      s    zNewIOManager.get_all_formats)NNN)r   r   r   r5   r:   rG   rB   r`   r   r   r   r   ra      s        
ra   c                 C   s0   |   D ]"}t|| j t|| jd  qd S r   )r   managerregister_stream_typer   register_a_file_typer8   r   r   r   r   r6      s    r6   c                 C   sD   |   D ]6}t|dd | j t|dd | jd  qd S )Nr%   rI   )r   re   rf   rc   r   rg   rh   r   r   r   rb      s       rb   c                   @   s   e Zd Zdd ZdS )
AllReadersc                 C   s"   t  t ttjtjg S r   )OLD_READERSr`   unionNEW_READERSrW   r\   r]   r^   r
   r   r   r   r`      s
    zAllReaders.get_all_formatsNr   r   r   r`   r   r   r   r   ri      s   ri   c                   @   s   e Zd Zdd ZdS )
AllWritersc                 C   s"   t  t ttjtjg S r   )OLD_WRITERSr`   rk   NEW_WRITERSrW   r\   r]   r^   rm   r   r   r   r`      s
    zAllWriters.get_all_formatsNrn   r   r   r   r   ro      s   ro   c                 C   s   t | |||d dS )z&Try to discover all pyexcel-io plugins)plugin_name_patternsZpyinstaller_path
black_list
white_listNr   )rr   pathrs   rt   r   r   r   load_plugins   s    rv   )(r   Zpyexcel_io.utilsutilsZioutilsZpyexcel_io.managerre   Zpyexcel_io.constantsr\   Zpyexcel_io.exceptionsrP   Z
lml.loaderr   Z
lml.pluginr   r   r   rN   ZUPGRADE_MESSAGEr   r,   r    r.   r   r   r#   r/   ra   r6   rb   ri   ro   ZAVAILABLE_READERSrj   ZAVAILABLE_WRITERSrp   rq   rl   ZREADERSZWRITERSrv   r   r   r   r   <module>   s8   	",;.
