
    Hf                         d Z ddlmZ ddlmZmZmZ ddlmZ  G d de	          Z
 G d de          Z G d	 d
e          Z G d de          ZdS )z
    pyexcel.plugins.sources.pydata
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Representation of array, dict, records and book dict sources

    :copyright: (c) 2015-2022 by Onni Software Ltd.
    :license: New BSD License
    )	constants)PY2OrderedDictzip_longest)SheetReaderc                   $    e Zd ZdZd Zd Zd ZdS )_FakeIOzemulates a stream objectc                     d | _         d S N_FakeIO__valueselfs    g/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel/plugins/sources/pydata/common.py__init__z_FakeIO.__init__   s        c                     || _         dS )zduck method setvalueNr   )r   values     r   setvaluez_FakeIO.setvalue   s    r   c                     | j         S )zduck method getvaluer   r   s    r   getvaluez_FakeIO.getvalue   s
    |r   N)__name__
__module____qualname____doc__r   r   r    r   r   r	   r	      sG        ""        r   r	   c                       e Zd ZdZd Zd ZdS )ArrayReaderz0read data from an array via pyexcel-io interfacec              #   &   K   | j         D ]}|V  d S r   _native_sheet)r   rows     r   row_iteratorzArrayReader.row_iterator#   s-      % 	 	CIIII	 	r   c              #      K   |D ]}|V  d S r   r   )r   r"   cells      r   column_iteratorzArrayReader.column_iterator'   s*       	 	DJJJJ	 	r   N)r   r   r   r   r#   r&   r   r   r   r   r       s8        ::      r   r   c                       e Zd ZdZd ZdS )RecordsReadera  read data from a records via pyexcel-io interface

    By default, all records are assumed to have the keys and
    the keys of the first dictionary of the records will be
    taken as a reference.

    When the keys of the first dictionary is the full list,
    The records reader will fill-in the missing key with
    default n/a, which is ''.

    Otherwise, please supply a complete list of keys as a
    parameter to get_records method, or save_as

    c              #     K   | j                             d          }t          | j                  D ]\  }}|dk    r^|Xt	          |t
                    r"t          |                                          }n!t          |                                          }|V  g }|D ]5}|	                    |                    |t          j                             6|V  d S )Ncustom_headersr   )	_keywordsget	enumerater!   
isinstancer   listkeyssortedappendr   
DEFAULT_NA)r   headersindexr"   valuesks         r   r#   zRecordsReader.row_iterator=   s      .$$%566#D$677 	 	JE3zz?!#{33 5"&sxxzz"2"2"("4"4F @ @cgga)=>>????LLLL	 	r   Nr   r   r   r   r#   r   r   r   r(   r(   -   s-             r   r(   c                       e Zd ZdZd ZdS )
DictReaderz4read data from a dictionary via pyexcel-io interfacec              #      K    j                                         }t          st          |          }t	           j         t
                    st          |          } j                            dd          r|V  t	           j         |d                  t                    r- fd|D             }t          |dt          j        iD ]}|V  d S  fd|D             }|V  d S )N	with_keysTr   c              3   2   K   | ]}j         |         V  d S r   r    .0keyr   s     r   	<genexpr>z*DictReader.row_iterator.<locals>.<genexpr>\   s+      EET/4EEEEEEr   	fillvaluec                 *    g | ]}j         |         S r   r    r>   s     r   
<listcomp>z+DictReader.row_iterator.<locals>.<listcomp>b   s!    ;;;s4%c*;;;r   )r!   r0   r   r/   r.   r   r1   r+   r,   r   r   r3   )r   r0   sorted_valuesr"   s   `   r   r#   zDictReader.row_iteratorR   s     !&&(( 	::D$,k:: 	 $<<D>k400 	JJJd(a1488 	EEEEEEEM"*3*>    				 
 <;;;d;;;CIIIIIr   Nr8   r   r   r   r:   r:   O   s)        >>    r   r:   N)r   pyexcelr   pyexcel._compactr   r   r   pyexcel_io.sheetr   objectr	   r   r(   r:   r   r   r   <module>rJ      s    + * * * * * : : : : : : : : : : ( ( ( ( ( (    f    	 	 	 	 	+ 	 	 	    K   D         r   