
    !jb                        d Z ddlmZmZ ddlZddlmZmZ 	 ddlmZ dZ	n# e
$ r dZ	Y nw xY wg dZg d	ZddZddZddZddZddZddZddZddZd dZdS )!zTime formatter for S3 APIs.    )absolute_importannotationsN)datetimetimezone)UTCTF)MonTueWedThuFriSatSun)JanFebMarAprMayJunJulAugSepOctNovDecvaluer   returnc                z    | j         r3|                     t          j                                      d          n| S )z*Convert to UTC time if value is not naive.Ntzinfo)r   
astimezoner   utcreplacer   s    T/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/minio/time.py_to_utcr%   #   s<     <	#&&..d.;;;"    
str | Nonedatetime | Nonec                    | dS 	 t          j        | d          }n%# t          $ r t          j        | d          }Y nw xY w|                    t          j                  S )z0Parse UTC ISO-8601 formatted string to datetime.Nz%Y-%m-%dT%H:%M:%S.%fZz%Y-%m-%dT%H:%M:%SZr   )r   strptime
ValueErrorr"   r   r!   )r   times     r$   from_iso8601utcr-   +   sn    }t> (?@@ > > > (<==><<x|<,,,s    >>c                    | dS t          |           } |                     d          |                     d          dd         z   dz   S )z3Format datetime into UTC ISO-8601 formatted string.Nz%Y-%m-%dT%H:%M:%S.z%f   Zr%   strftimer#   s    r$   to_iso8601utcr3   7   sK    }tENNE+,,u~~d/C/CBQB/GG#Mr&   strc                   t          |           dk    rt          d|  d          | dd         t          vs| d         dk    rt          d|  d          t                              | dd                   }t	          j        | dd         d	          j        }| dd
         t          vrt          d|  d          t                              | dd
                   }t	          j        | d
d         d          }|                    ||dz   t          j
                  }||                                k    rt          d|  d          |S )z4Parse HTTP header date formatted string to datetime.   z
time data z" does not match HTTP header formatr   r/   ,       %d    N %Y %H:%M:%S GMT   )daymonthr   )lenr+   
_WEEK_DAYSindexr   r*   r>   _MONTHSr"   r   r!   weekday)r   rD   r>   r?   r,   s        r$   from_http_headerrE   B   sv   
5zzRBBBBD D 	D QqSz##uQx3BBBBD D 	DuQqSz**G

E!A#J
/
/
3CQrT{'!!BBBBD D 	DMM%"+&&EU233Z);<<D<<CuQwx|<DDD$,,..  BBBBD D 	D Kr&   c                    t          |           } t          |                                          }|                     d          }t          | j        dz
           }|                     d          }| d| | | S )z7Format datatime into HTTP header date formatted string.r:   r=   r<   r7   )r%   rA   rD   r2   rC   r?   )r   rD   r>   r?   suffixs        r$   to_http_headerrH   ^   sp    ENNE)G
..
 
 CEK!O$E^^.//F,,,U,F,,,r&   c                F    t          |                               d          S )z/Format datetime into AMZ date formatted string.z%Y%m%dT%H%M%SZr1   r#   s    r$   to_amz_daterJ   h   s    5>>""#3444r&   c                     t           r7t          j        t                                        t
          j                  S t          j                                        t
          j                  S )z,Timezone-aware wrapper to datetime.utcnow().r   )_UTC_IMPORTEDr   nowr   r"   r   r!   utcnow r&   r$   rN   rN   m   sN     >|C  (((===?$$HL$999r&   c                F    t          |                               d          S )z7Format datetime into SignatureV4 date formatted string.z%Y%m%dr1   r#   s    r$   to_signer_daterQ   t   s    5>>""8,,,r&   floatc                d    t          j        |                                           | j        dz  z   S )z"Convert datetime into float value.gư>)ctimemktime	timetuplemicrosecondr#   s    r$   to_floatrX   y   s)    <))**U->-EEEr&   )r   r   r   r   )r   r'   r   r(   )r   r(   r   r'   )r   r4   r   r   )r   r   r   r4   )r   r   )r   r   r   rR   )__doc__
__future__r   r   r,   rT   r   r   r   rL   ImportErrorrA   rC   r%   r-   r3   rE   rH   rJ   rN   rQ   rX   rO   r&   r$   <module>r\      sm  " " ! 3 3 3 3 3 3 3 3     ' ' ' ' ' ' ' 'MM   MMM ?>>
     	- 	- 	- 	-      8- - - -5 5 5 5
: : : :- - - -
F F F F F Fs   ! ++