o
    6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dee dedee
jj d	e
jjfd
dZedeeeef  ee edddZddededee dee
jj d	ef
ddZdS )    )AnyListOptionalTuple	TypedDictN   )EmailUndeliverableError)timeoutcachedns_resolverr	   r
   r   returnc                 C   s@   | d u rddl m} |} |ptj }|ptj |_| |_|S )Nr   DEFAULT_TIMEOUT) r   dnsresolverResolverLRUCacher
   lifetime)r	   r
   r   r   r    r   r/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/email_validator/deliverability.pycaching_resolver   s   r   DeliverabilityInfo)mxmx_fallback_typeunknown-deliverabilityF)totaldomaindomain_i18nc                    s  |d u rddl m} |d u r|}tj }||_n|d ur!tdi }zz0|| d}tdd |D }dd |D }t	|dkrIt
d	| d
||d< d |d< W W |S  tjjy   dtdtfdd z"|| d}t fdd|D s}tjjd| fg|d< d|d< W nE tjjy   z"|| d}t fdd|D stjjd| fg|d< d|d< W n tjjy } z	t
d	| d
|d }~ww Y nw z$|| d}|D ]}	d|	j}
|
dr|
dkrt
d	| dqW n tjjy   Y nw Y W |S Y W |S w  tjjy } z	t
d	| d|d }~w tjjy.   ddi Y S  tjjy=   ddi Y S  t
yE     tyZ } z	t
dt| |d }~ww ) Nr   r   z5It's not valid to pass both timeout and dns_resolver.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 |jS  ty   Y dS w )NF)	ipaddress
ip_address
ValueError	is_global)r)   ipaddrr   r   r   is_global_addrO   s   z5validate_email_deliverability.<locals>.is_global_addrAc                 3       | ]} |j V  qd S Nr)   r%   r/   r   r   	<genexpr>Y       z0validate_email_deliverability.<locals>.<genexpr>AAAAc                 3   r1   r2   r3   r%   r4   r   r   r5   f   r6   TXT    s   v=spf1 s   v=spf1 -allz does not send email.z does not exist.r   no_nameserversr	   zZThere was an error while checking if the domain name in the email address is deliverable: )r   r   r   r   get_default_resolverr   r,   resolvesortedlenr   NoAnswerr   boolanyjoinstrings
startswithNXDOMAINNoNameservers	exceptionTimeout	Exceptionr"   )r   r   r	   r   r   deliverability_inforesponsemtaserecvaluer   r4   r   validate_email_deliverability   s   	
]
%?
rP   )NN)typingr   r   r   r   r   r*   exceptions_typesr   dns.resolverr   dns.exceptionintr   r   r   r"   r   rP   r   r   r   r   <module>   s    4
0