U
    ={f6                     @   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 k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   ]/var/www/html/Darija-Ai-API/env/lib/python3.8/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 kr2ddl m} |d kr |}tj }||_n|d k	rBtdi }zz^|| d}tdd |D }dd |D }t	|dkrt
d	| d
||d< d |d< W nv tjjk
r   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k
r   zF|| d}t fdd|D sVtjjd| fg|d< d|d< W n: tjjk
r } zt
d	| d
|W 5 d }~X Y nX Y nX zN|| d}|D ]8}	d|	j}
|
dr|
dkrt
d	| dqW n tjjk
r   Y nX Y nX W n tjjk
r\ } zt
d	| d|W 5 d }~X Y n tjjk
r|   ddi Y S  tjjk
r   ddi Y S  t
k
r    Y n6 tk
r } zt
dt| |W 5 d }~X Y nX |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   s     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k
r$   Y dS X |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   s     z0validate_email_deliverability.<locals>.<genexpr>ZAAAAc                 3   s   | ]} |j V  qd S r/   r0   r#   r1   r   r   r2   f   s     ZTXT    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   r1   r   validate_email_deliverability   s~    	
*
"  
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   .
