o
    Ù­j0  ã                   @   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   ú[/var/www/html/CropPilot/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 }zäz0| | 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 ƒƒs¨t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rñt
d	|› d�ƒ‚qØW 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*   Ú
exceptionsr   Údns.resolverr   Údns.exceptionÚintr   r   r   r"   r   rP   r   r   r   r   Ú<module>   s    4
ýü0