U
    h&                     @   s   d dl mZmZmZ d dlZddlmZ ddlmZ ddl	m
Z
mZmZmZmZ ddlmZ errd dlZejjZneZddddddddddddeeef ee ee ee ee ee ee ee ee ee ee ee ed	d
dZdS )    )OptionalUnionTYPE_CHECKINGN   )EmailSyntaxError)ValidatedEmail)split_emailvalidate_email_local_partvalidate_email_domain_namevalidate_email_domain_literalvalidate_email_length)CASE_INSENSITIVE_MAILBOX_NAMES)allow_smtputf8allow_empty_localallow_quoted_localallow_domain_literalallow_display_namestrictcheck_deliverabilitytest_environmentglobally_deliverabletimeoutdns_resolver)emailr   r   r   r   r   r   r   r   r   r   r   returnc         $   
   C   s  ddl m}m}m}m}m}m}m}m}m	}m
} |dkr<|}|dkrH|}|dkrT|}|dkr`|}|dkrl|}|dkrx|}|dkr|}|dkr|}|	dkr|}	|
dkr|dkr|}
t| trnTt| trz| d} W n. tk
r } ztd|W 5 d}~X Y nX ntdt| \}}}}|r2td|}t }|sB|n
d| d d	 | |_||_t|||||d
}|d |_|d |_|d |_td|j}||jkrzt|||||d
 W n6 tk
r } ztdt| |W 5 d}~X Y nX ||_|r|std|jdk	rP|j tkrP|jdk	rP|j |_|j |_d}t|dkrltdn||dr| drt!|dd }|std|d |_"|d |_#|d |_$d}n"t%|||	d} | d |_"| d |_#|jd	 |j" |_&|js,|j#st'd|jpdd	 |j# |_(nd|_(t)| |dk	rR|sRtd|r|s|rh|S ddl*m+}! |!|j#|j"|
|}"|",d }#|#dk	r|#|_-|",d!|_.|S )"z
    Given an email address, and some options, returns a ValidatedEmail instance
    with information about the address if it is valid or, if the address is not
    valid, raises an EmailNotValidError. This is the main function of the module.
    r   )
ALLOW_SMTPUTF8ALLOW_EMPTY_LOCALALLOW_QUOTED_LOCALALLOW_DOMAIN_LITERALALLOW_DISPLAY_NAMESTRICTGLOBALLY_DELIVERABLECHECK_DELIVERABILITYTEST_ENVIRONMENTDEFAULT_TIMEOUTNasciiz%The email address is not valid ASCII.zemail must be str or bytesZNFC"@)r   r   Zquoted_local_partr   
local_partascii_local_partsmtputf8zAfter Unicode normalization: z7Quoting the part before the @-sign is not allowed here.Fr   z)There must be something after the @-sign.[]z<A bracketed IP address after the @-sign is not allowed here.domaindomain_addressT)r   r   ascii_domainzMissing ASCII domain. zRA display name and angle brackets around the email address are not permitted here.)validate_email_deliverabilitymxmx_fallback_type)/r1   r   r   r   r   r   r    r!   r"   r#   r$   
isinstancestrbytesdecode
ValueErrorr   	TypeErrorr   unicodedata	normalizer   Zoriginaldisplay_namer	   r(   r)   r*   lowerr   len
startswithendswithr   r.   r0   r/   r
   Z
normalized	ExceptionZascii_emailr   Zdeliverabilityr2   getr3   r4   )$r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   er=   r(   Zdomain_partZis_quoted_local_partretZlocal_part_infoZnormalized_local_partZis_domain_literalZdomain_literal_infoZdomain_name_infor2   Zdeliverability_infor3    rF   D./venv/lib/python3.8/site-packages/email_validator/validate_email.pyvalidate_email   s    0







$





   

rH   )typingr   r   r   r;   
exceptionsr   typesr   Zsyntaxr   r	   r
   r   r   Zrfc_constantsr   Zdns.resolverZdnsZresolverZResolverZ	_Resolverobjectr6   r7   boolintrH   rF   rF   rF   rG   <module>   sF   

