
    Ef                     B   d Z ddlZddlZddlZddlmZmZ d Zd Z	 d#dZ	d$d	Z
d
 Zd Zd Zd Zeej        ej        ej        eeedZedededej        dej        dej        dej        dediZeeeeeedZd Zd Zd Zd Zd Zd ZeeeeeedZddd d!ddd d"Z dS )%z
    pyexcel_io.service
    ~~~~~~~~~~~~~~~~~~~

    provide service code to downstream projects

    :copyright: (c) 2014-2022 by Onni Software Ltd.
    :license: New BSD License, see LICENSE for more details
    N)	constants
exceptionsc                 2    | t          j        |           k    S )z/check if a float value had zero value in digits)mathfloorvalues    T/var/www/ffwdstore.be/apps/py-env/lib/python3.11/site-packages/pyexcel_io/service.pyhas_no_digits_in_floatr      s    DJu%%%%    c                    d}	 t          |           dk    r5t          j                            | d          }|                                }not          |           dk    r!t          j                            | d          }n;t          |           dk    r(t          j                            | dd         d          }n# t          $ r Y nw xY w|S )	z?
    Read the date formats that were written by csv.writer
    N
   %Y-%m-%d   z%Y-%m-%d %H:%M:%Sr      z%Y-%m-%d %H:%M:%S.%f)lendatetimestrptimedate
ValueError)	cell_textrets     r
   detect_date_valuer      s     Cy>>R#,,Y
CCC((**CC^^r!!#,,Y8KLLCC^^b  #,,!B$!7 C    J   B7B< <
C	C	TFc                    |                      d          o|                      d          du }|rd S |rd}t          j        ||           rd S 	 |r)|                                 dk    rd S t	          |           S |                                 dk    r| |k    rt	          d          S d S t	          |           S # t
          $ r Y d S w xY w)N0z0.Fz([0-9]+_)+[0-9]+.[0-9]*$nanNaN)
startswithrematchlowerfloatr   )r   pep_0515_offignore_nan_textdefault_float_nanshould_we_skip_itpatterns         r
   detect_float_valuer)   *   s     	S!!Ii&:&:4&@&@E&I    t ,8GY'' 	4 	(  E))tY'''  E)) 111 <<'4Y'''   tts$   B6 )B6 8,B6 'B6 6
CCc                 J   |                      d          rt          |           dk    rd S |rd}t          j        ||           rd S 	 t	          |           S # t
          $ rB d}t          j        ||           r'|                     dd          }t	          |          cY S Y d S w xY w)Nr      z([0-9]+_)+[0-9]+$z([0-9]+,)*[0-9]+$, )r   r   r    r!   intr   replace)r   r$   r(   integer_strings       r
   detect_int_valuer1   L   s    C   S^^a%7%7t %8GY'' 	4
9~~   %8GY'' 	&..sB77N~&&&&& 44s   A AB"!B"c                 $    t          |           }|S )zconvert a value to float)r#   r	   r   s     r
   float_valuer4   b   s    
,,CJr   c                    d}	 t          |           dk    r5t          j                            | d          }|                                }not          |           dk    r!t          j                            | d          }n;t          |           dk    r(t          j                            | dd         d          }n# t          $ r Y nw xY w|dk    rt          d	| z            |S )
z1convert to data value accroding ods specificationinvalidr   r   r   z%Y-%m-%dT%H:%M:%Sr   r   z%Y-%m-%dT%H:%M:%S.%fzBad date value %s)r   r   r   r   r   	Exceptionr3   s     r
   
date_valuer8   h   s    
Cu::#,,UJ??C((**CCZZ2#,,U4GHHCCZZ"__#,,ad3 C    
i+e3444Jr   c                    ddl } |j        d|           }|rt          |                                          dk    rt	          |                    d                    }t	          |                    d                    }t	          |                    d                    }|dk     rt          j        |||          }nt          j        |||          }nd}|S )	z1convert to time value accroding the specificationr   NzPT(\d+)H(\d+)M(\d+)S   r+         )hoursminutesseconds)	r    r!   r   groupsr.   groupr   time	timedelta)r	   r    resultshourminutesecondr   s          r
   
time_valuerH   ~   s    IIIbh.66G 3w~~''((A--7==##$$W]]1%%&&W]]1%%&&"99-ff55CC$FF  CC Jr   c                 .    | dk    rd}n| dk    rd}n| }|S )zget bolean valuetrueTfalseF r3   s     r
   boolean_valuerM      s0    	'		 Jr   )r#   r   rB   rC   boolean
percentagecurrencyr#   stringr   rB   rC   r   rN   )r#   r   rB   rC   rN   rO   c                 0    t          j        d| z            Nz%s is too big)r   IntegerAccuracyLossErrorr   s    r
   throw_exceptionrU      s    

-o.E
F
FFr   c                 T    | t           j        k    rt          j        d| z            | S rS   )r   MAX_INTEGERr   rT   r   s    r
   ods_float_valuerX      s+    y$$$1/E2IJJJLr   c                 ,    |                      d          S )Nr   strftimer   s    r
   ods_date_valuer\      s    >>*%%%r   c                 ,    |                      d          S )NzPT%HH%MM%SSrZ   r   s    r
   ods_time_valuer^      s    >>-(((r   c                     | du rdS dS )zconvert a boolean value to textTrJ   rK   rL   r   s    r
   ods_bool_valuer`      s    }}v wr   c                 j    | j         dz  | j        dz  z   }| j        dz  dz  }| j        dz  }d|||fz  S )z"convert a cell value to time deltar<   i  <   zPT%02dH%02dM%02dS)daysr?   )cellr=   r>   r?   s       r
   ods_timedelta_valuere      sH    INT\T11E|r!R'GlRG%'!:::r   )r   rB   rN   rC   r#   longr	   z
date-valuez
time-valuezboolean-value)r#   r   rB   rN   rO   rP   rC   )TFN)T)!__doc__r    r   r   
pyexcel_ior   r   r   r   r)   r1   r4   r8   rH   rM   r#   r   rB   rC   boolODS_FORMAT_CONVERSIONr.   strODS_WRITE_FORMAT_COVERSIONVALUE_CONVERTERSrU   rX   r\   r^   r`   re   ODS_VALUE_CONVERTERSVALUE_TOKENrL   r   r
   <module>rp      s    
			   , , , , , , , ,& & &
  * LP   D   ,    ,  (	 	 	 MM#   
7M6M6z)	    G G G  & & &) ) )  ; ; ; $    r   