
    Whj              	           d dl mZ d dlmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ ddlZddlZddlZddlZddlmZ d ZdefdZd	 Z	 	 dd
edededefdZddZd ZddZd Z d Z!y)   )EmailSyntaxError)EMAIL_MAX_LENGTHLOCAL_PART_MAX_LENGTHDOMAIN_MAX_LENGTHDOT_ATOM_TEXTDOT_ATOM_TEXT_INTLATEXT_REATEXT_INTL_REATEXT_HOSTNAME_INTL
QTEXT_INTLDNS_LABEL_LENGTH_LIMITDOT_ATOM_TEXT_HOSTNAMEDOMAIN_NAME_REGEXDOMAIN_LITERAL_CHARSQUOTED_LOCAL_PART_ADDR    N)Optionalc                     t        j                  |       x}r0|j                         \  }}dd l} |j                  dd|      }||dfS | j                  d      }t        |      dk7  rt        d      |\  }}||dfS )	Nr   z\\(.)z\1T@   z@The email address is not valid. It must have exactly one @-sign.F)r   matchgroupsresubsplitlenr   )emailm
local_partdomain_partr   partss         a/var/www/html/api.bullseye.mysouth.io/venv/lib/python3.12/site-packages/email_validator/syntax.pysplit_emailr#      s     #((//q/"#((*
K
 	RVVHeZ8
;,, C u:?"#eff"'
K;--    Fc                 R    t        |       |z
  }|rdnd}|dkD  rdnd}d| | d| dS )zEHelper function to return an error message related to invalid length.z	at least  r   s(z
 characterz
 too many))r   )addrutf8limitdiffprefixsuffixs         r"   get_length_reasonr/   +   s?    t9uD [bF1HS"FvhtfJvhj99r$   c                     | dk(  rd|  dS t        j                  |       d   dv rt        |       S t        |       dk  rdt        |       dj	                         }ndt        |       dj	                         }t        j
                  | |      S )	N\"r   LNPSi  zU+04x08x)unicodedatacategoryreprorduppername)chs     r"   safe_character_displayrB   3   s    DyA3bzAq!%99Aw 1vQ##%Q##% Aq!!r$   localallow_smtputf8allow_empty_localquoted_local_partc                 b   t        |       dk(  r|st        d      | | ddS t        |       t        kD  r t        | t              }t        d| d      t	        j
                  |       r| | ddS d}d}t        j
                  |       rO|sHt        d	 | D              }|r)t        d
dj                  t        |            z   dz         t        d      d}d}n|rt        d | D              }|r)t        ddj                  t        |            z   dz         t        d | D              }|r-d}|s)t        d
dj                  t        |            z   dz         d}|rgt        j                  d|       } t        | |dk(         	 | j                  d       |dk(  rdt        j                   dd|       z   dz   } | |s| |dS d|dS t        d | D              }|r)t        ddj                  t        |            z   dz         t#        | ddd       t        d      # t        $ r t        d      w xY w) z;Validates the syntax of the local part of an email address.r   z*There must be something before the @-sign.F)r   ascii_local_partsmtputf8r+   z0The email address is too long before the @-sign .Nc              3   \   K   | ]$  }t        j                  |      st        |       & y wN)r	   r   rB   .0r@   s     r"   	<genexpr>z,validate_email_local_part.<locals>.<genexpr>   s)      ~~a( 'q)   *,zBInternationalized characters before the @-sign are not supported: , zAInternationalized characters before the @-sign are not supported.zdot-atomTc              3   \   K   | ]$  }t        j                  |      st        |       & y wrM   )r   r   rB   rN   s     r"   rP   z,validate_email_local_part.<locals>.<genexpr>   s+      
##A& #1%
rQ   zKThe email address contains invalid characters in quotes before the @-sign: c              3   ^   K   | ]%  }d t        |      cxk  rdk  sn t        |       ' yw)    ~   N)r=   rB   rN   s     r"   rP   z,validate_email_local_part.<locals>.<genexpr>   s.      
#a&'C' #1%
s   +-quotedNFC)allow_spacer*   z0The email address contains an invalid character.r2   z(["\\])z\\\1c              3   \   K   | ]$  }t        j                  |      st        |       & y wrM   )r
   r   rB   rN   s     r"   rP   z,validate_email_local_part.<locals>.<genexpr>   s+      ""1% 	q!rQ   zAThe email address contains invalid characters before the @-sign: z(An email address cannot start with a {}.z@An email address cannot have a {} immediately before the @-sign.is_hostnamez@The email address contains invalid characters before the @-sign.)r   r   r   r/   r   r   r   setjoinsortedr:   	normalizecheck_unsafe_charsencode
ValueErrorr   r   check_dot_atom)rC   rD   rE   rF   reasonvalidrequires_smtputf8	bad_charss           r"   validate_email_local_partri   D   sA    5zQ "#OPP
 $$)!  5z))"50EF!QRXQYYZ[\\ 5!   %
 	
  E&   I
 &'knrnwnwx~  @I  yJ  oK  (K  NQ  (Q  R  R ##fgg   

  

 
	
 "#psws|s|  ~D  EN  ~O  tP  $P  SV  $V  W  W  

 
	
  $ "&'knrnwnwx~  @I  yJ  oK  (K  NQ  (Q  R  R   %%eU3 	5u/@B
	WLL  H"&&We<<sBE  ->)
 	
DH)
 	
   I
 beienenouv  pA  fB   B  EH   H  I  	I 5D  GI  W\  ] ]
^^I  	W"#UVV	Ws   H H.c           	         t               }t        |       D ]  \  }}t        j                  |      }|d   dv r#|d   dk(  r|dk(  s1|j	                  |       C|dk(  r|rK|j	                  |       ]|d   dk(  r|j	                  |       w|d   dv r|j	                  |       |j	                  |        |r0t        ddj                  d	 t        |      D              z   d
z         y )Nr   r3   MZsZ)Crm   z.The email address contains unsafe characters: rR   c              3   2   K   | ]  }t        |        y wrM   )rB   rN   s     r"   rP   z%check_unsafe_chars.<locals>.<genexpr>  s     *`+A!+D*`s   rK   )r]   	enumerater:   r;   addr   r^   r_   )r'   rY   rh   ir@   r;   s         r"   ra   ra      s    I! *1''*A;..a[C
 Ava  a a[C
 MM!a[J& MM! MM!U*V O!%*`fU^N_*`!` acf g h 	h r$   c                    | j                  d      rt        |j                  d            | j                  d      rt        |j                  d            d| v rt        d      |rj| j                  d      rt        |j                  d            | j                  d      rt        |j                  d            d| v sd| v rt        d	      y y )
NrK   periodz..z2An email address cannot have two periods in a row.-hyphenz.-z-.zFAn email address cannot have a period and a hyphen next to each other.)endswithr   format
startswith)labelstart_descr	end_descrr\   s       r"   rd   rd     s    ~~cy//9::{11(;<<u}STT>>#"9#3#3H#=>>C ";#5#5h#?@@5=DEM"#kll * r$   c                    t        d | D              }|r)t        ddj                  t        |            z   dz         t	        |        	 t        j                  | dd      } t        | d
dd       | j                  d      D ]2  }t        j                  d|t        j                        s)t        d       t        j                  |       r| }nG	 t        j                  | d      j                  d      }t        j                  |      st        d      t#        |      t$        kD  r t'        |t$              }t        d| d      |j                  d      D ]4  }t#        |      t(        kD  st'        |t(              }t        d| d       |r6d|vr|dk(  r|st        d      t+        j,                  |      st        d      ddlm} |D ].  }	|	dk(  r|r||	k(  s|j3                  d|	z         s%t        d       	 t        j                  |j                  d            }
t        d | D              }|r)t        ddj                  t        |            z   dz         t	        |        ||
d S # t
        j                  $ r}t        d| d      d	}~ww xY w# t
        j                  $ r,}dt!        |      v rt        d      t        d| d      d	}~ww xY w# t
        j                  $ r}t        d| d      d	}~ww xY w)!z<Validates the syntax of the domain part of an email address.c              3   \   K   | ]$  }t        j                  |      st        |       & y wrM   r   r   rB   rN   s     r"   rP   z-validate_email_domain_name.<locals>.<genexpr>5  +      "((+ 	q!rQ   z7The part after the @-sign contains invalid characters: rR   rK   F)
std3_rulestransitionalz7The part after the @-sign contains invalid characters ().Nz?An email address cannot have a {} immediately after the @-sign.z&An email address cannot end with a {}.Tr[   z
(?!xn)..--zAn email address cannot have two letters followed by two dashes immediately after the @-sign or after a period, except Punycode.)uts46asciizDomain too longz/The email address is too long after the @-sign.zSThe email address contains invalid characters after the @-sign after IDNA encoding.rJ   z/The email address is too long after the @-sign zDAfter the @-sign, periods cannot be separated by so many characters testz@The part after the @-sign is not valid. It should have a period.zRThe part after the @-sign is not valid. It is not within a valid top-level domain.r   )SPECIAL_USE_DOMAIN_NAMESz[The part after the @-sign is a special-use or reserved name that cannot be used with email.z-The part after the @-sign is not valid IDNA (c              3   \   K   | ]$  }t        j                  |      st        |       & y wrM   r   rN   s     r"   rP   z-validate_email_domain_name.<locals>.<genexpr>  r   rQ   )ascii_domaindomain)r]   r   r^   r_   ra   idnauts46_remap	IDNAErrorrd   r   r   r   Ir   rb   decodestrr   r   r/   r   r   searchr&   r   rw   )r   test_environmentglobally_deliverablerh   erz   r   re   r   ddomain_i18ns              r"   validate_email_domain_namer   0  sd   
   I
 X[_[d[dekluev[wwz}}~~ v`!!&UO 6\  _G  UY  Z c" g88M5"$$/"  $f  g  gg ##F+		d;;vU;BB7KL &++L9"#xyy <,,"<7HI!PQWPXXYZ[[ ##C( uu:..&u4JKF"%ijpiqqr#sttu
  l"LF,BGW"#eff !''5"#wxx +% B;+1 5 5cAg >"  $A  B  BBVkk,"5"5g">?   I
 X[_[d[dekluev[wwz}}~~v % { >> `!XYZX[[]^__`J ~~ 	d CF*
 ''XYY"%\]^\__a#bcc	dH >> V!NqcQSTUUVsH   
I3 &J $K 3JJJK0'KKL2LLc                    | j                   rt        | j                         t        kD  rt| j                   | j                  k(  rt	        | j                         }n6t        | j                        t        kD  rt	        | j                  d      }nd}t        d| d      t        | j                  j                  d            t        kD  rEt        | j                        t        kD  rt	        | j                  d      }nd}t        d| d      y )NT)r*   z(when converted to IDNA ASCII)zThe email address is too long rK   r*   z(when encoded in bytes))ascii_emailr   r   
normalizedr/   r   rb   )addrinfore   s     r"   validate_email_lengthr     s     H$8$8 9<L L8#6#66&x';';<F$$%(88 'x':':FF5F!?xqIJJ 8%%f-.1AAx""#&66 'x':':FF.F!?xqIJJ Br$   c                    t        j                  d|       r	 t        j                  |       }|d| ddS | j                  d      r,	 t        j                  | dd        }|d|j                   ddS d| vrt        d      t        d | D              }|r)t        ddj                  t        |            z   dz         t        d      # t        $ r}t        d| d      d }~ww xY w# t        $ r}t        d	| d
      d }~ww xY w)Nz
^[0-9\.]+$zRThe address in brackets after the @-sign is not valid: It is not an IPv4 address (z') or is missing an address literal tag.[])domain_addressr   zIPv6:   z<The IPv6 address in brackets after the @-sign is not valid (r   z[IPv6::z\The part after the @-sign in brackets is not an IPv4 address and has no address literal tag.c              3   \   K   | ]$  }t        j                  |      st        |       & y wrM   )r   r   rB   rN   s     r"   rP   z0validate_email_domain_literal.<locals>.<genexpr>#  s+      #))!, 	q!rQ   zCThe part after the @-sign contains invalid characters in brackets: rR   rK   zNThe part after the @-sign contains an invalid address literal tag in brackets.)r   r   	ipaddressIPv4Addressrc   r   ry   IPv6Address
compressedr]   r^   r_   )domain_literalr)   r   rh   s       r"   validate_email_domain_literalr     s|    
xx~.	d((8D #$qk
 	
   )	i(();<D #t/q1
 	
 . }~~   I
 dgkgpgpqw  yB  rC  hD   D  GJ   J  K  	K k
llY  	d"%wxywz  {b  $c  d  d	d  	i"%abcaddf#ghh	is/   C
 C* 
	C'C""C'*	D3DD)TFF)F)FT)"exceptions_typesr   rfc_constantsr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r:   r   r   typingr   r#   r/   rB   r   boolri   ra   rd   r   r   r    r$   r"   <module>r      s    .   
 
    .: "'.> :"" bg8=b_S b_$ b_Z^ b_15b_J1hhm&Zz&KR7mr$   