U
    ±[Öež  ã                   @   s~   d Z ddlmZ ddlmZ ddlmZ ddlmZmZ ddl	mZ
 dZe
je
jfZG dd„ deƒZd	d
„ Zdd„ Zeƒ ZdS )z¹
    pyexcel.internal.source_plugin
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Second level abstraction

    :copyright: (c) 2015-2022 by Onni Software Ltd.
    :license: New BSD License
é    )Ú	constants)Ú
exceptions)ÚPluginManager)Úregister_book_attributeÚregister_sheet_attributez%s-%sc                   @   sl   e Zd ZdZdd„ Zdd„ Zddd„Zd	d
„ Zddd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )ÚSourcePluginManagerzData source plugin loaderc                 C   s   t  | d¡ i | _d S )NÚsource)r   Ú__init__Úkeywords)Úself© r   ú`/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pyexcel/internal/source_plugin.pyr	      s    zSourcePluginManager.__init__c                 C   s   t  | |¡ |  |¡ d S )N)r   Úload_me_laterÚ_register_a_plugin_info)r   Úplugin_infor   r   r   r       s    z!SourcePluginManager.load_me_laterNc                 K   sj   | j  d| ¡ d}| j| D ]:}|j|f|Žr|  |¡}t|jƒ}|rT||krTqq qfqt|f|Ž |S )z%get source module into memory for usezload me now:N)Ú_loggerÚdebugÚregistryZis_my_businessZdynamic_load_libraryÚ_get_me_pypi_package_nameÚ
__module__Ú_error_handler)r   ÚkeyÚactionÚlibraryr
   Úpluginr   Úmodule_namer   r   r   Úload_me_now$   s    

zSourcePluginManager.load_me_nowc                 C   s   t  | ||¡ |  |¡ dS )z for dynamically loaded plugin N)r   Úregister_a_pluginr   )r   Z
plugin_clsr   r   r   r   r   7   s    z%SourcePluginManager.register_a_pluginc           	      K   sX   t ||f }d}d|kr"| d¡}| j|f||dœ|—Ž}|dk	rJ||d< |f |Ž}|S )z.obtain a source plugin for signature functionsNr   )r   r   )ÚREGISTRY_KEY_FORMATÚpopr   )	r   Útargetr   Zsource_libraryr
   r   Z
io_libraryZ
source_clsZsource_instancer   r   r   Úget_a_plugin<   s     
ÿ ÿÿ
z SourcePluginManager.get_a_pluginc                 K   s   | j f tjtjdœ|—ŽS )z9obtain a sheet read source plugin for signature functions©r    r   )r!   r   ÚSHEETÚREAD_ACTION©r   r
   r   r   r   Ú
get_sourceM   s     ÿÿzSourcePluginManager.get_sourcec                 K   s   | j f tjtjdœ|—ŽS )z8obtain a book read source plugin for signature functionsr"   )r!   r   ÚBOOKr$   r%   r   r   r   Úget_book_sourceS   s     ÿÿz#SourcePluginManager.get_book_sourcec                 K   s   | j f tjtjdœ|—ŽS )z:obtain a sheet write source plugin for signature functionsr"   )r!   r   r#   ÚWRITE_ACTIONr%   r   r   r   Úget_writable_sourceY   s     ÿÿz'SourcePluginManager.get_writable_sourcec                 K   s   | j f tjtjdœ|—ŽS )z9obtain a book write source plugin for signature functionsr"   )r!   r   r'   r)   r%   r   r   r   Úget_writable_book_source_   s     ÿÿz,SourcePluginManager.get_writable_book_sourcec                 C   s   | j  |d¡S )zcustom keyword for an attributeN)r
   Úget)r   r   r   r   r   Úget_keyword_for_parametere   s    z-SourcePluginManager.get_keyword_for_parameterc           
      C   sÎ   d}d}d}|  ¡ D ]˜}| d¡\}}|j}t|tƒs<|ƒ }|D ]b}	|	tkrNq@|dkrdt|||	ƒ n"|dkrzt|||	ƒ ntd| ƒ‚|d|	 7 }|j	| j
|	< d	}q@|d
7 }q|rÊ| j |¡ | j |¡ d S )NzSource registry: zInstance attribute: Fú-ÚbookZsheetzKnown target: %sz%s Tz, )ÚtagsÚsplitÚ
attributesÚ
isinstanceÚlistÚNO_DOT_NOTATIONr   r   Ú	Exceptionr   r
   r   r   )
r   r   Zdebug_registryZdebug_attributeZanythingr   r    r   r2   Úattrr   r   r   r   i   s.    

z+SourcePluginManager._register_a_plugin_info)NN)NNN)Ú__name__r   Ú__qualname__Ú__doc__r	   r   r   r   r!   r&   r(   r*   r+   r-   r   r   r   r   r   r      s   
     ÿ
r   c                 K   sn   |r`|  dd ¡}|r*t tj|| f ¡‚qjd|kr<| d¡ d}|d7 }|d7 }t || ¡‚n
t d¡‚d S )NÚ	file_typeZ	on_demandz$Please check if there were typos in z#function parameters: %s. Otherwise z#unrecognized parameters were given.zNo parameters found!)r,   r   ZFileTypeNotSupportedr   ZFILE_TYPE_NOT_SUPPORTED_FMTr   ZUnknownParameters)r   r
   r;   Úmsgr   r   r   r   †   s    ÿ
r   c                 C   s   |   d¡d }| dd¡S )NÚ.r   Ú_r.   )r1   Úreplace)r   Zroot_module_namer   r   r   r   š   s    r   N)r:   Zpyexcelr   r   Z
lml.pluginr   Zpyexcel.internal.attributesr   r   Z
pyexcel_ioZio_constantsr   Z	DB_DJANGOZDB_SQLr5   r   r   r   ZSOURCEr   r   r   r   Ú<module>   s   	m