a
    QҚh6                     @   s   d dl mZmZmZmZmZ d dlZddlmZ d dl	Z
d dlZ
ddddee eee
jj e
jjdddZed	eeeef  ee ed
ddZdeeee ee
jj edddZdS )    )AnyListOptionalTuple	TypedDictN   )EmailUndeliverableError)timeoutcachedns_resolver)r	   r
   r   returnc                 C   s@   | d u rddl m} |} |p$tj }|p2tj |_| |_|S )Nr   DEFAULT_TIMEOUT) r   dnsresolverResolverZLRUCacher
   lifetime)r	   r
   r   r   r    r   Y/wd/webapps/venvs/v2025_4um/lib/python3.9/site-packages/email_validator/deliverability.pycaching_resolver   s    r   DeliverabilityInfo)mxmx_fallback_typeunknown-deliverabilityF)total)domaindomain_i18nr	   r   r   c                    s  |d u r2ddl m} |d u r |}tj }||_n|d urBtdi }zz^|| d}tdd |D }dd |D }t	|dkrt
d	| d
||d< d |d< W nr tjjy   ttddd zD|| d}t fdd|D stjjd| fg|d< d|d< W n tjjy   zF|| d}t fdd|D sRtjjd| fg|d< d|d< W n< tjjy } zt
d	| d
|W Y d }~n
d }~0 0 Y n0 zN|| d}|D ]8}	d|	j}
|
dr|
dkrt
d	| dqW n tjjy   Y n0 Y n0 W n tjjyZ } zt
d	| d|W Y d }~nd }~0  tjjyx   ddi Y S  tjjy   ddi Y S  t
y    Y n8 ty } zt
dt| |W Y d }~n
d }~0 0 |S )Nr   r   z5It's not valid to pass both timeout and dns_resolver.ZMXc                 S   s"   g | ]}|j t|jd fqS ).)
preferencestrexchangerstrip.0rr   r   r   
<listcomp>6       z1validate_email_deliverability.<locals>.<listcomp>c                 S   s    g | ]\}}|d kr||fqS )r   r   )r$   r   r!   r   r   r   r&   <   s   r   zThe domain name z does not accept email.r   r   )addressr   c                 S   s*   zt | }W n ty"   Y dS 0 |jS )NF)	ipaddress
ip_address
ValueError	is_global)r(   ipaddrr   r   r   is_global_addrO   s
    z5validate_email_deliverability.<locals>.is_global_addrAc                 3   s   | ]} |j V  qd S Nr(   r#   r.   r   r   	<genexpr>Y   r'   z0validate_email_deliverability.<locals>.<genexpr>ZAAAAc                 3   s   | ]} |j V  qd S r0   r1   r#   r2   r   r   r3   f   r'   ZTXTr'   s   v=spf1 s   v=spf1 -allz does not send email.z does not exist.r   Zno_nameserversr	   zZThere was an error while checking if the domain name in the email address is deliverable: )r   r   r   r   Zget_default_resolverr   r+   resolvesortedlenr   ZNoAnswerr   boolanyjoinstrings
startswithZNXDOMAINZNoNameservers	exceptionTimeout	Exceptionr    )r   r   r	   r   r   Zdeliverability_inforesponseZmtaseZrecvaluer   r2   r   validate_email_deliverability   sz    	
.
&
rB   )NN)typingr   r   r   r   r   r)   Zexceptions_typesr   Zdns.resolverr   Zdns.exceptionintr   r   r   r    r   rB   r   r   r   r   <module>   s   .
