
    Hf                        d Z ddlZddlmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZ  G d	 d
e          Z G d de          Z G d de          Z G d de          Zd Zd Z G d de          Z G d de          ZdS )z
    pyexcel.plugins
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Public interface for plugins

    :copyright: (c) 2015-2022 by Onni Software Ltd.
    :license: New BSD License
    N)product)	constants)
PluginInfoPluginInfoChain)	is_string)FileTypeNotSupported)PARSERRENDERERc                   $    e Zd ZdZd Zd Zd ZdS )
SourceInfozPlugin description for a sourcec                 .    t          j        | d|fi | d S )Nsource)r   __init__)selfabsolute_import_pathkeywordss      Z/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel/plugins/__init__.pyr   zSourceInfo.__init__   s&    D(,@MMHMMMMM    c              #   `   K   t          | j        | j                  }|D ]\  }}|d|V  d S )N-)r   targetsactions)r   target_action_listtargetactions       r   tagszSourceInfo.tags   sQ      $T\4<@@0 	- 	-NFF#VVVV,,,,,	- 	-r   c                 h    fd| j         D             }d |D             }t          |          dk    S )zS
        Check if incoming keywords match the parameters in source plugins
        c                 0    g | ]}t          |          S  )
_has_field).0fieldr   s     r   
<listcomp>z-SourceInfo.is_my_business.<locals>.<listcomp>#   s#    IIIEJuh//IIIr   c                     g | ]}|d u |	S )Fr   )r!   statuss     r   r#   z-SourceInfo.is_my_business.<locals>.<listcomp>$   s    DDDfFeOO6OOOr   r   )fieldslen)r   r   r   statusesresultss     `  r   is_my_businesszSourceInfo.is_my_business   sE     JIIIT[IIIDDDDD7||q  r   N)__name__
__module____qualname____doc__r   r   r*   r   r   r   r   r      sJ        ))N N N- - -
! ! ! ! !r   r   c                       e Zd ZdZd Zd ZdS )FileSourceInfoz$Plugin description for a file sourcec                 ^   t          j        | |fi |}|r|                    dd           }|rT|                    d          }|<t          t	          |                    rt          ||          }n%t          d          n|                    d          }|                     ||          }|S )N	file_nameforce_file_typezUnsupported file type	file_type)r   r*   getr   typefind_file_type_from_file_nameIOErrorcan_i_handle)r   r   r   r%   r2   r4   s         r   r*   zFileSourceInfo.is_my_business+   s    *4DD8DD 	: [$77I 6$LL):;;	$ i11 ?$A%v% %		 &&=>>> % %LL55	&&vy99Fr   c                      t          d          )N )NotImplementedError)r   r   r4   s      r   r9   zFileSourceInfo.can_i_handle?   s    !"%%%r   N)r+   r,   r-   r.   r*   r9   r   r   r   r0   r0   (   s8        ..  (& & & & &r   r0   c                       e Zd ZdZd ZdS )InputSourceInfoz&Plugin description for an input sourcec                     d }|r|                                 }|t          j        k    r|t          j                    v }nd}|S NF)lowerr   READ_ACTIONr	   get_all_file_types)r   r   r4   _InputSourceInfo__file_typer%   s        r   r9   zInputSourceInfo.can_i_handleF   sK     	,#//++KY*** F$=$?$??FFFr   Nr+   r,   r-   r.   r9   r   r   r   r>   r>   C   s)        00    r   r>   c                       e Zd ZdZd ZdS )OutputSourceInfoz+Plugin description for a output file sourcec                     |t           j        k    r5|                                t          t	          j                              v }nd}|S r@   )r   WRITE_ACTIONrA   tupler
   rC   )r   r   r4   r%   s       r   r9   zOutputSourceInfo.can_i_handleT   sA    Y+++__&&%0K0M0M*N*NNFFFr   NrE   r   r   r   rG   rG   Q   s)        55    r   rG   c                     | |v o	||          d uS Nr   )r"   r   s     r   r    r    \   s    H<%!<<r   c                    |dk    rt          j                    }nt          j                    }g }|                                 }|D ],}|                    |          r|                    |           -t          |          dk    rt          |t                    }|d         }nUt          |          dk    r	|d         }n9|                    d          d         }t          t          j        ||fz            |S )z*
    Extract file type from file name
    read   )keyr   .)r	   rC   r
   rA   endswithappendr'   sortedsplitr   r   FILE_TYPE_NOT_SUPPORTED_FMT)r2   r   list_of_file_types
file_typeslowercase_file_namea_supported_typer4   s          r   r7   r7   `   s    #688%8::J#//++. 0 0''(899 	0.///
:JC000
rN			ZA		qM		'--c2226	"1Y4GG
 
 	
 r   c                       e Zd ZdZd ZdS )IOPluginInfoz-Plugin description for a parser or a rendererc              #   r   K   | j         }t          |t          j                  r
 |            }|D ]}|V  d S rL   )rY   
isinstancetypesFunctionType)r   rY   r4   s      r   r   zIOPluginInfo.tags~   sQ      _
j%"455 	&#J# 	 	IOOOO	 	r   N)r+   r,   r-   r.   r   r   r   r   r]   r]   {   s)        77    r   r]   c                   @    e Zd ZdZddZddZddZd	dZ	 	 	 d
dZdS )PyexcelPluginChainzIt is used by pyexcel pluginsNc                     dg d}|                     |           |                     t          |                     |          fi |           | S )zB
        Add a data source plugin for signature functions
        NrP   
attributes)updateadd_a_plugin_instancer   _get_abs_pathr   relative_plugin_class_pathr   defaults       r   add_a_sourcezPyexcelPluginChain.add_a_source   sn     b11x   """"#=>> BI 	
 	
 	

 r   c                     dg d}|                     |           |                     t          |                     |          fi |           | S )z*
        append file input source
        Nre   )rg   rh   r>   ri   rj   s       r   add_an_input_sourcez&PyexcelPluginChain.add_an_input_source   sn     b11x   """"#=>> BI 	
 	
 	

 r   c                     dg d}|                     |           |                     t          |                     |          fi |           | S )z+
        append file output source
        Nre   )rg   rh   rG   ri   rj   s       r   add_a_output_sourcez&PyexcelPluginChain.add_a_output_source   sn     b11x   """"#=>> BI 	
 	
 	

 r   c                 v    |                      t          d|                     |          |                     | S )z-
        append an excel file reader
        parser)rY   )rh   r]   ri   )r   rk   rY   s      r   add_a_parserzPyexcelPluginChain.add_a_parser   sM     	""""#=>>%  	
 	
 	
 r   c                     t          ||          }|                     t          d|                     |          fi |           | S )z-
        append an excel file writer
        )rY   stream_typerenderer)dictrh   r]   ri   )r   rk   rY   rv   rl   s        r   add_a_rendererz!PyexcelPluginChain.add_a_renderer   sf     *+FFF""""#=>>   	
 	
 	
 r   rL   )NN)NNN)	r+   r,   r-   r.   rm   ro   rq   rt   ry   r   r   r   rc   rc      s        ''             $(	     r   rc   )r.   r`   	itertoolsr   pyexcelr   
lml.pluginr   r   pyexcel._compactr   pyexcel.exceptionsr   pyexcel.internal.pluginsr	   r
   r   r0   r>   rG   r    r7   r]   rc   r   r   r   <module>r      s           * * * * * * 2 2 2 2 2 2 2 2 & & & & & & 3 3 3 3 3 3 5 5 5 5 5 5 5 5! ! ! ! ! ! ! !(& & & & &Z & & &6    n       ~   = = =  6    :   H H H H H H H H H Hr   