
    Ef                        d Z ddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 dZdej        z  dz   Zdej        z  Zdej        z  d	z   Zd
ZdZdZdZd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_io.readers.csv_sheet
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    csv file reader

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
    N)ISheet__z---%s---z%sz---%s:(.*)---z---%s:z%s---%sz
s   s   f   c                   *    e Zd ZdZd Zd Zd Zd ZdS )CSVMemoryMapIteratorz
    Wrapper class for mmap object

    mmap object does not handle encoding at all. This class
    provide the necessary transcoding for utf-8, utf-16 and utf-32
    c                 `   || _         || _        d| _        t          | _        |dk    r	d| _        d S |dk    r	d| _        d S |dk    r	d| _        d S |dv rd| _        t          | _        d S |dk    rd| _        t          | _        d S |d	k    rd| _        t          | _        d S t          d
|z            )Nr   utf-8utf-16r   utf-32   )z	utf-32-bez	utf-16-bez	utf-32-lez	utf-16-lezEncoding %s is not supported)_CSVMemoryMapIterator__mmap_obj_CSVMemoryMapIterator__encoding_CSVMemoryMapIterator__countLITTLE_ENDIAN_CSVMemoryMapIterator__endian*_CSVMemoryMapIterator__zeros_left_in_2_row
BIG_ENDIAN	Exception)selfmmap_objencodings      ^/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel_io/readers/csv_sheet.py__init__zCSVMemoryMapIterator.__init__&   s    ""%w *+D&&&!! *+D&&&!! *+D&&&333)*D&&DMMM$$)*D&)DMMM$$)*D&)DMMM:XEFFF    c                     | S N r   s    r   __iter__zCSVMemoryMapIterator.__iter__C   s    r   c                    | j                                         }| j        dk    r:| j        dk    p
| j        dk    }|r!|d d         }|t          k    rt
          | _        n| j        t          k    r|| j        d          }| j        t          k    r|	                                }|
                    | j                  }| xj        dz  c_        |dk    rt          |S )Nr   r
   r      r    )r   readliner   r   BOM_BIG_ENDIANr   r   r   r   rstripdecodeStopIteration)r   line	utf_16_32
bom_headers       r   __next__zCSVMemoryMapIterator.__next__F   s    ''))<18+Jt(/J   /!"1"X
//$.DM]m++2445D=M));;==D{{4?++2::r   c                     d S r   r   r   s    r   closezCSVMemoryMapIterator.close[   s    r   N)__name__
__module____qualname____doc__r   r   r+   r-   r   r   r   r   r      s]         G G G:    *    r   r   c                   H    e Zd ZdZ	 	 	 	 	 	 	 	 ddZd Zd Zd	 Zd
 Zd Z	dS )CSVSheetReaderzgeneric csv file readerr	   TFNc
                     || _         || _        || _        || _        || _        || _        d | _        || _        || _        |	| _	        |
| _
        d S r   )_native_sheet	_encoding _CSVSheetReader__auto_detect_int"_CSVSheetReader__auto_detect_float _CSVSheetReader__ignore_infinity%_CSVSheetReader__auto_detect_datetime_CSVSheetReader__file_handle_CSVSheetReader__pep_0515_off _CSVSheetReader__ignore_nan_text"_CSVSheetReader__default_float_nan	_keywords)r   sheetr   auto_detect_floatignore_infinityauto_detect_intauto_detect_datetimepep_0515_offignore_nan_textdefault_float_nankeywordss              r   r   zCSVSheetReader.__init__b   s^     #!!0#4 !0&:#!*!0#4 !r   c                      t          d          )zreturn me unicde reader for csvz"Please implement get_file_handle())NotImplementedErrorr   s    r   get_file_handlezCSVSheetReader.get_file_handle{   s    !"FGGGr   c                 l    |                                  | _        t          j        | j        fi | j        S r   )rK   r;   csvreaderr?   r   s    r   row_iteratorzCSVSheetReader.row_iterator   s3    !1133z$,?????r   c              #   V   K   |D ]#}||dk    r|                      |          }|V  $d S )Nr"   )_CSVSheetReader__convert_cell)r   rowelements      r   column_iteratorzCSVSheetReader.column_iterator   sK       	 	G"w"}}--g66MMMM	 	r   c                 D   d }| j         rt          j        || j                  }|Y| j        rRt          j        || j        | j        | j                  }|t          d          t          d          fv o| j	        }|rd }|| j
        rt          j        |          }||}|S )N)rF   rG   infz-inf)r7   servicedetect_int_valuer<   r8   detect_float_valuer=   r>   floatr9   r:   detect_date_value)r   csv_cell_textretshall_we_ignore_the_conversions       r   __convert_cellzCSVSheetReader.__convert_cell   s    ! 	O*=$:MNNC;43;,# $ 6"&":	  C eeFmm44.)( + . ;46;+M::C;C
r   c                 J    | j         r| j                                          d S d S r   )r;   r-   r   s    r   r-   zCSVSheetReader.close   s2     	'$$&&&&&	' 	'r   )r	   TTTTTFN)
r.   r/   r0   r1   r   rK   rO   rT   rQ   r-   r   r   r   r3   r3   _   s        !!
 !" " " "2H H H@ @ @    ,' ' ' ' 'r   r3   c                       e Zd ZdZd ZdS )CSVFileReaderzread csv from phyical filec                 H    t          | j        j        d| j                  }|S )Nr)r   )openr5   payloadr6   )r   unicode_readers     r   rK   zCSVFileReader.get_file_handle   s-    &dn
 
 
 r   Nr.   r/   r0   r1   rK   r   r   r   rb   rb      s)        $$    r   rb   c                       e Zd ZdZd ZdS )CSVinMemoryReaderzread csv file from memoryc                     t          | j        j        t          j                  rK| j        j                                        }t          j        |                    | j                            }n| j        j        }|S r   )	
isinstancer5   rf   compactBytesIOreadStringIOr&   r6   )r   contentrg   s      r   rK   z!CSVinMemoryReader.get_file_handle   sf    d(0'/BB 	8
 (05577G$-gnnT^.L.LMMNN!/7Nr   Nrh   r   r   r   rj   rj      s)        ##    r   rj   )r1   rM   pyexcel_io.servicerW   pyexcel_io._compact_compactrm   pyexcel_io.constants	constantspyexcel_io.plugin_apir   DEFAULT_SEPARATORDEFAULT_NAME!DEFAULT_SHEET_SEPARATOR_FORMATTERSEPARATOR_MATCHER!DEFAULT_CSV_STREAM_FILE_FORMATTERDEFAULT_NEWLINEBOM_LITTLE_ENDIANr$   r   r   objectr   r3   rb   rj   r   r   r   <module>r      sv    


 $ $ $ $ $ $ % % % % % % ( ( ( ( ( ( ( ( ( ( ( ( $.1G$G$$N !#i&<< y%%	1 "  
> > > > >6 > > >BB' B' B' B' B'V B' B' B'R    N            r   