
    ɯeiT0                       d dl mZ d dlZd dlmZ d dlmZmZmZ d dlmZ  ed       Z	i dddgd	d
dgdddgdddgdddgdddgdddgdddgdddgd d!d"gd#d$d"gd%d&d'gd(d)d*gd+d,d-gd.d/d0gd1d2d0gd3d4d0gd5d6d7giZ
dGd8Z ed9d:      ZdHd;Zd< ZdId=ZdJd>ZdKd?Zd@ ZdLdAZdMdBZeeeeehZ G dC dD      Z G dE dFe      Zy)N    )annotationsN)
namedtuple)datedatetime	timedelta)struct_timeYear2digit_ElementTypeYY%yYear_ElementTypeYYYY%YMonth_ElementTypeMMz%mMonthAbbrev_ElementTypeMONz%bDayOfMonth_ElementTypeDDz%dDayOfWeekAbbrev_ElementTypeDYz%aHour24_ElementTypeHH24z%HHour12_ElementTypeHH12z%IHour_ElementTypeHHAnte_Meridiem_ElementTypeAMz%pPost_Meridiem_ElementTypePMMinute_ElementTypeMIz%MSecond_ElementTypeSSz%SMilliSecond_ElementTypeFF  TZOffsetHourColonMin_ElementTypezTZH:TZMz%zTZOffsetHourMin_ElementTypeTZHTZMTZOffsetHourOnly_ElementTypeTZHTZAbbr_ElementTypeTZDz%Zc                f    | j                   | j                  | j                  dz  dz  z   dz  z   dz  S )N   i  i@B )microsecondssecondsdays)tds    `/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/snowflake/connector/sfdatetime.py'sfdatetime_total_seconds_from_timedeltar6   "   s1    OOrzzBGGbL4,??5HHURR    SnowflakeDateTimezdatetime nanosecond scalec                .    t        | j                  |      S N)_build_year_formatr   valueyear_lens     r5   _support_negative_yearr?   )   s    ennh77r7   c                    t        | |      S r:   r;   r<   s     r5   _support_negative_year_datetimerB   .       eX..r7   c                d    t        | d      r| j                  }n| j                  }t        ||      S )Nyear)hasattrrE   tm_year_build_raw_year_format)dtr>   year_raw_values      r5   r;   r;   3   s-    r6 !.(;;r7   c                .    t        | j                  |      S r:   )rH   rG   )rI   r>   s     r5   "_support_negative_year_struct_timerL   =   s    !"**h77r7   c                |    d}| dk  rd}| dz  } |dk(  r| dz  } |dz   t        |      z   dz   }|j                  |       S )	Nr'   r   -   d   z{:0zd})strformat)rJ   r>   	sign_charfmts       r5   rH   rH   B   sV    I	"1}#
e
c(m
+d
2C::n%%r7   c                    t        | |      S r:   rA   r<   s     r5   _support_negative_year_daterW   M   rC   r7   c                   d}t        | d      rd}| j                  }nt        | d      r| j                  }nd}d}|dkD  r|j                  |      d | }|S |j                  |      }t        | d      r|d | j                   }|S )Nz{:09d}microsecondz{:06d}
nanosecondz{:01d}r   scale)rF   rY   rZ   rS   r[   )r=   fraction_lennano_strfraction
nano_values        r5   _inject_fractionr`   R   s    Hum$$$		%##a__X.}=
 	 __X.
5'"#Mekk2Jr7   c                    |S r:    )_value0s     r5   _inject_othersre   k   s    Mr7   c                  v    e Zd ZdZdeddf	 	 	 	 	 	 	 ddZddZddZd ZdddZ	dd	Z
	 d	 	 	 	 	 dd
ZddZy)SnowflakeDateTimeFormatzSnowflake DateTime Formatter.TIMESTAMP_NTZTc                .   || _         |dv | _        |t        k(  rt        | _        n?|t
        j                  k(  rt        | _        n |t        k(  rt        | _        nt        | _        t        | d|j                         | _        | j                  ||       y )N)rh   DATE_format_)support_negative_yearinject_fraction)_sql_format
_ignore_tzr   rB   _support_negative_year_methodtimer   rL   r   rW   r?   getattr__name__rS   _compile)self
sql_format	data_typedatetime_classrl   rm   s         r5   __init__z SnowflakeDateTimeFormat.__init__{   s     &#'@@X%1PD.t///1SD.t#1LD.1GD. dh~/F/F.G$HI"7 	 	
r7   c                    g }| j                   D ]"  }|d   }|j                   |||d                $ dj                  |      S )Nr      r'   )	_elementsappendjoin)ru   r=   rU   efs        r5   _pre_formatz#SnowflakeDateTimeFormat._pre_format   sI     	'A!AJJq!~&	' wws|r7   c                   | j                  |      }|j                  }t        |t        j                        rt        t        j                  ||            S |j                  dk  r|j                         S |j                  |      S )z!Formats SnowflakeDateTime object.  )	r   r   
isinstancerq   r   rR   strftimerE   	isoformat)ru   r=   rU   rI   s       r5   _format_SnowflakeDateTimez1SnowflakeDateTimeFormat._format_SnowflakeDateTime   sg    u%^^b$**+t}}S"-..77T><<>!{{3r7   c                    | j                  |      }t        |t        j                        rt	        t        j
                  ||            S |j                  dk  r|j                         S |j                  |      S )zFormats datetime object.r   )r   r   rq   r   rR   r   rE   r   ru   r=   rU   s      r5   _format_datetimez(SnowflakeDateTimeFormat._format_datetime   s`    u%eT--.t}}S%011::??$$~~c""r7   c                    |D ]L  }|j                  |d         s|s$| j                  j                  t        |d   f       t	        |d         c S  | j                  |d          y)Nr   r{   )
startswithr|   r}   re   len_add_raw_char)ru   sql_fmt
candidatesignorecs        r5   _match_tokenz$SnowflakeDateTimeFormat._match_token   sf     	!A!!!A$'NN))>1Q4*@A1Q4y 		!
 	71:&r7   c                `    | j                   j                  t        |dk(  rdf       y |f       y )N%z%%)r|   r}   re   )ru   chs     r5   r   z%SnowflakeDateTimeFormat._add_raw_char   s'    ~rSytIJbIJr7   c           	     	   g | _         d}| j                  j                         }|t        |      k  rN||   }|dk(  r"|| j	                  ||d  t
        d   g      z  }n|dk(  r*|| j	                  ||d  t
        d   t
        d   g      z  }n|dk(  r2|| j	                  ||d  t
        d   t
        d	   t
        d
   g      z  }n|dk(  r2|| j	                  ||d  t
        d   t
        d   t
        d   g      z  }nd|dk(  r"|| j	                  ||d  t
        d   g      z  }n=|dk(  r"|| j	                  ||d  t
        d   g      z  }n|dk(  rF|| j	                  ||d  t
        d   t
        d   t
        d   t
        d   g| j                        z  }n|dk(  r|| j	                  ||d  t
        d   t
        d   g      z  }|r| j                   d   }|d   dk(  r6| j                   d= | j                   j                  | j                  df       nN|d   d k(  rE| j                   d= | j                   j                  | j                  d!f       n|d"k(  rs|dz   t        |      k  rJ||dz   d  j                  t
        d#   d         r)| j                   j                  t        d"f       d$| _        n| j                  |       |dz  }n|d%k(  r||d  j                  t
        d#   d         r|t        t
        d#   d         z  }|rYd}|t        |      k  r&||   j                         rt        ||         }|dz  }| j                   j                  t        |f       n| j                   j                  t        d&f       n| j                  |       |dz  }n|d'k(  r|dz  }|}|t        | j                        k  rB| j                  |   d'k7  r0|dz  }|t        | j                        k  r| j                  |   d'k7  r0| j                   j                  t        | j                  || f       |t        | j                        k  r|dz  }n| j                  |       |dz  }| j!                          |t        |      k  rMy y )(Nr   Ar   Dr   r   Hr   r   r   Mr   r   r!   Pr   Sr#   Tr(   r)   r+   r-   )r   Yr   r	   rO   r{   r      r   rP   .r%   TF0")r|   rn   upperr   r   ElementTypero   r}   rp   r   re   _fractions_with_dotr   isdigitintr`   _optimize_elements)	ru   rl   rm   idxu_sql_formatr   last_elementfractions_len	start_idxs	            r5   rt   z SnowflakeDateTimeFormat._compile   s    ''--/C%%c"BSyt(( &#$?@  st(( &#$<=#$AB  st(( &#$89#$89#$67  st(( &#$=>#$78#$89  st(( &#$?@  st(( &#$89  st(( &#$FG#$AB#$BC#$89	  ?? ) 	 	 st(( &#$67#$<=  )#'>>"#5L#A$. NN2.--t/Q/QST.UV%aD0 NN2.--t/Q/QST.UVs7S..<a	3J3U3U 9:1=4 NN))>3*?@/3D,&&r*qs%00 9:1= 3{+DEaHIIC&(*\!22|C7H7P7P7R,/S0A,BM1HC--/?.OP--~s.CD&&r*1HCsq	C 0 011d6F6Fs6Ks6R1HC C 0 011d6F6Fs6Ks6R %%~t7G7G	RU7V&WXT--..1HC""2&q##%q C%%r7   c                *   t        | j                        dk  ry | j                  d   }|d   t        v ry | j                  d   }|d   t        v ry | j                  d= | j                  d= | j                  j                  t        |d   |d   z   f       y )NrP   rO   r   r{   )r   r|   NOT_OTHER_FORMATr}   re   )ru   r   second_last_elements      r5   r   z*SnowflakeDateTimeFormat._optimize_elements=  s    t~~"~~b)?.."nnR0q!%55NN2NN203l1oEF	
r7   N)rw   rR   rl   boolrm   r   returnNone)r=   SnowflakeDateTime | struct_timer   rR   )r=   r8   r   rR   )F)r   r   r   r   )TT)rl   r   rm   r   r   r   )rs   
__module____qualname____doc__r   ry   r   r   r   r   r   rt   r   rb   r7   r5   rg   rg   x   s    '
 )&* $
 

  $
 
 

2	 #K KO&%)&CG&	&B
r7   rg   c                  .     e Zd Zd fdZddZd Z xZS )SnowflakeDateFormatc                0    d|d<   t        |   |fi | y )NFrm   )superry   )ru   rv   kwargs	__class__s      r5   ry   zSnowflakeDateFormat.__init__N  s     $) !.v.r7   c                b    | j                  |      }t        t        j                  ||            S )zFormats struct_time.)r   rR   rq   r   r   s      r5   _format_struct_timez'SnowflakeDateFormat._format_struct_timeR  s(    u%4==e,--r7   c                F    | j                  |      }|j                  |      S r:   )r   r   r   s      r5   _format_datez SnowflakeDateFormat._format_dateW  s!    u%~~c""r7   r   )r=   r   r   rR   )rs   r   r   ry   r   r   __classcell__)r   s   @r5   r   r   M  s    /.
#r7   r   )r4   r   r   r   )r=   r8   r>   r   r   rR   )rI   zdatetime | struct_timer>   r   r   rR   )rI   r   r>   r   r   rR   )rJ   r   r>   r   r   rR   )r=   zSnowflakeDateTime | datetimer\   r   r   rR   )rc   r   rd   rR   r   rR   )
__future__r   rq   collectionsr   r   r   r   r   ZERO_TIMEDELTAr   r6   r8   r?   rB   r;   rL   rH   rW   r`   re   r   rg   r   rb   r7   r5   <module>r      s   "  " . . 1tTl $ t}	
 tTl "D$< 64. 64. t  $  $ 4, 4, bz  'D(9!" "Hd#3#$ #UDM%& 5$-'.S 24OP 8
/
<8
&/
2
 #& R
 R
j#1 #r7   