a
    	3j3                     @   sL  g d Z ddlZddlZddlZddlZddlZddl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mZmZ ddlmZ dZd	Zd	Zd
ZdZedZedZdd Zdd Zd4ddZdd Zdd Zd5ddZ d6ddZ!d7ddZ"d d! Z#d"d# Z$d$d% Z%d&d' Z&d8d(d)Z'ed*ej(Z)d+d, Z*d9d/d0Z+d:d2d3Z,dS );)collapse_rfc2231_valuedecode_paramsdecode_rfc2231encode_rfc2231
formataddr
formatdateformat_datetimegetaddresses
make_msgid	mktime_tz	parseaddr	parsedateparsedate_tzparsedate_to_datetimeunquote    N)quote)AddressList)r
   )r   r   _parsedate_tz)Charsetz,  z
'z[][\\()<>@,:;".]z[\\"]c                 C   s(   z|    W dS  ty"   Y dS 0 d S )NFT)encodeUnicodeEncodeError)s r   G/www/server/python_manager/versions/3.9.10/lib/python3.9/email/utils.py_has_surrogates3   s
    r   c                 C   s   |  dd}|ddS )Nutf-8surrogateescapereplace)r   decode)stringZoriginal_bytesr   r   r   	_sanitize@   s    r"   r   c                 C   s   | \}}| d |rz| d W n: ty^   t|trDt|}||}d||f  Y S 0 d}t|rrd}t	d|}d||||f S |S )Nasciiz%s <%s>r   "z\\\g<0>z%s%s%s <%s>)
r   r   
isinstancestrr   Zheader_encode
specialsresearch	escapesresub)ZpaircharsetnameaddressZencoded_nameZquotesr   r   r   r   L   s     



r   c                 C   s"   t dd | D }t|}|jS )Nc                 s   s   | ]}t |V  qd S )Nr&   ).0vr   r   r   	<genexpr>p       zgetaddresses.<locals>.<genexpr>)
COMMASPACEjoin_AddressListaddresslist)Zfieldvaluesallar   r   r   r   n   s    r   c              	   C   sH   dg d| d  | d g d| d d  | d | d | d	 | d
 |f S )Nz"%s, %02d %s %04d %02d:%02d:%02d %s)ZMonZTueZWedZThuZFriZSatZSun      )ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDec   r            r   )	timetuplezoner   r   r   _format_timetuple_and_zoneu   s    
rA   Fc                 C   sR   | d u rt   } |s|r,tj| tjj}ntj| }|rH| }d}t||S )NF)timedatetimeZfromtimestamptimezoneutcZutcfromtimestamp
astimezoner   )timeval	localtimeusegmtdtr   r   r   r   ~   s    r   c                 C   sV   |   }|r2| jd u s$| jtjjkr,tdd}n| jd u rBd}n
| d}t||S )Nz%usegmt option requires a UTC datetimeZGMTz-0000z%z)r?   tzinforC   rD   rE   
ValueErrorstrftimerA   )rJ   rI   nowr@   r   r   r   r      s    

r   c                 C   s^   t t d }t }td}| d u r0d} nd|  } |d u rHt }d|||| |f }|S )Nd   @   r   .z<%d.%d.%d%s@%s>)intrB   osgetpidrandomgetrandbitssocketgetfqdn)ZidstringdomainrG   pidrandintZmsgidr   r   r   r	      s    

r	   c                 C   sN   t | ^ }}|d u r(tj|d d  S tj|d d dttj|diS )Nr9   rK   seconds)r   rC   rD   	timedelta)dataZdtupletzr   r   r   r      s    r   c                 C   s   t | j}|sdS |d S )N)r   r   r   )r5   r6   )addrZaddrsr   r   r   r      s    
r   c                 C   s`   t | dkr\| dr<| dr<| dd ddddS | dr\| dr\| dd S | S )	Nr;   r$   z\\\z\"<>)len
startswithendswithr   r.   r   r   r   r      s    r   c                 C   s&   |  td}t|dkr"d d | fS |S )Nr:   )splitTICKrf   )r   partsr   r   r   r      s    
r   c                 C   sD   t jj| d|pdd} |d u r*|d u r*| S |d u r6d}d||| f S )Nr   r#   )safeencodingz%s'%s'%s)urllibparser   )r   r+   languager   r   r   r      s    r   z&^(?P<name>\w+)\*((?P<num>[0-9]+)\*?)?$c                 C   s@  | d g}i }| dd  D ]x\}}| d}t|}t|}|r||dd\}}|d urbt|}||g |||f q||dt| f q|r<|	 D ]\}}g }d}	|
  |D ],\}}
}|rtjj|
dd	}
d
}	||
 qtt|}|	r(t|\}}}||||d| ff q||d| f q|S )Nr   r;   *r,   numz"%s"Fzlatin-1)rm   T)rh   r   rfc2231_continuationmatchgrouprR   
setdefaultappendr   itemssortrn   ro   EMPTYSTRINGr4   r   )params
new_paramsZrfc2231_paramsr,   valueencodedmorr   ZcontinuationsZextendedr   r+   rp   r   r   r   r     s8    


r   r   us-asciic                 C   sl   t | trt| dkrt| S | \}}}|d u r4|}t|d}zt|||W S  tyf   t| Y S 0 d S )Nr<   zraw-unicode-escape)r%   tuplerf   r   bytesr&   LookupError)r}   errorsZfallback_charsetr+   rp   textZrawbytesr   r   r   r   1  s    

r   rb   c           	      C   s  | d u rt j t jj S | jd ur.|  S |  d d |f }t|}t	|}z t j
|jd}t ||j}W n~ ty   | t j t|d d   }tjo|jdk}|rtjntj }|t j
|dkrt |tj| }n
t |}Y n0 | j|dS )Nrb   r\   r9   r   )rK   )rC   rN   rD   rE   rF   rK   r?   rB   mktimerH   r^   	tm_gmtofftm_zoneAttributeErrorgmtimedaylighttm_isdstaltzonetznamer   )	rJ   ZisdstZtmr]   ZlocaltmZdeltar`   dstZgmtoffr   r   r   rH   K  s$    


rH   )r   )NFF)F)NN)NN)r   r   )Nrb   )-__all__rS   rerB   rU   rW   rC   urllib.parsern   Zemail._parseaddrr   r   r5   r
   r   r   r   Zemail.charsetr   r3   rz   ZUEMPTYSTRINGZCRLFrj   compiler'   r)   r   r"   r   r   rA   r   r   r	   r   r   r   r   r   ASCIIrs   r   r   rH   r   r   r   r   <module>   sP   


"	



0  
