
    j,	                         d dl Z d dlZd dlmZ d dlmZ d dlmZ dedefdZdedefd	Z	d
e
defdZdee         fdZdedefdZdeeef         fdZdedefdZdedz  defdZdS )    N)datetime)urlparse)Imagenamereturnc                     t          d          d                    fd| D                                                       }|pdS )Nz	/\:*?"<>| c              3   (   K   | ]}|v rd n|V  dS )_N ).0charinvalids     6/home/longshao/multi-rider-rag/shared/utils/helpers.py	<genexpr>z$sanitize_zip_name.<locals>.<genexpr>   s/      FF47??CCFFFFFF    image)setjoinstrip)r   fixedr   s     @r   sanitize_zip_namer   	   sM    ,GGGFFFFFFFFFLLNNEGr   urlc                     t          |           }t          j                            |j                  pd}|                    d          d         }t          |          pdS )Nr   ;r   )r   ospathbasenamesplitr   )r   parsedbases      r   filename_from_urlr"      sP    c]]F7FK((3GD::c??1DT""-g-r   	img_bytesc                     	 t          j        t          j        |                     }|j        pd                                }dddddddd                    |d          S # t          $ r Y dS w xY w)	Nr	   z.jpgz.pngz.bmpz.webpz.gifz.tif)JPEGJPGPNGBMPWEBPGIFTIFF)r   openioBytesIOformatupperget	Exception)r#   imgfmts      r   infer_ext_from_bytesr5      s    jI..//zR&&((
 
 #c6

	    vvs   AA! !
A/.A/c                     g }| s|S t          | t                    r| n| g}|D ]I}	 t          |          }d|cxk    rdk    rn n|                    |d           :# t          $ r Y Fw xY w|S )Nr      02d)
isinstancelistintappendr2   )raw_listhoursitemshourvalues        r   ensure_hours_listrB   '   s    E "8T22BHH
E  	IIEER^^,,, 	 	 	H	Ls   6A
A*)A*rA   c                    | st          d          |                                 } g d}d }|D ])}	 t          j        | |          } n# t          $ r Y &w xY w|t          d|            |                    d          S )Nztime is empty)%Y/%m/%d %H:%M:%S%Y-%m-%dT%H:%M:%Sz%Y-%m-%dT%H:%M%Y-%m-%d %H:%M:%Sz%Y-%m-%d %H:%Mzunable to parse datetime: rF   )
ValueErrorr   r   strptimer2   strftime)rA   formatsdtr4   s       r   parse_and_normalize_dtrL   6   s     *)))KKMME  G 
B  	"5#..BE 	 	 	H		z=e==>>>;;*+++s   A
AAc                      t          j                    } |                     ddd          }d}|                    |          |                     |          fS )Nr   )minutesecondmicrosecondrF   )r   nowreplacerI   )endstartr4   s      r   default_time_rangerU   N   sL    
,..CKKqK::E
C>>#S 1 111r   rK   c                 ,    |                      d          S )NrE   )rI   )rK   s    r   to_datetime_local_strrW   U   s    ;;*+++r   tsc                 X    | sdS t          j        |                               d          S )Nr	   rD   )r   fromtimestamprI   )rX   s    r   format_timestampr[   Y   s/     r!"%%../BCCCr   )r-   r   r   urllib.parser   PILr   strr   r"   bytesr5   r:   rB   rL   tuplerU   rW   r;   r[   r   r   r   <module>ra      sq   				 				       ! ! ! ! ! !      C C    .3 .3 . . . .E c    "49    ,# ,# , , , ,02E#s(O 2 2 2 2,h ,3 , , , ,Dt D D D D D D Dr   