
    Ii
                     d    S r SSKrSSKJr  SSKJr  \SSSSSS.S\S	\S
\S\S\S\4S jj5       rg)zeMail.    N   )hostname)	validatorF)ipv6_addressipv4_addresssimple_hostrfc_1034rfc_2782valuer   r   r   r	   r
   c                  U (       a  U R                  S5      S:w  a  gU R                  SS5      u  pg[        U5      S:  d  [        U5      S:  a  gU(       d  U(       aN  UR                  S5      (       a7  UR	                  S5      (       a!  UR                  S5      R                  S5      nOg[        R                  " SU[        R                  5      (       a"  [        [        UU(       + U(       + SUUUS	95      $ S$ )
ak  Validate an email address.

This was inspired from [Django's email validator][1].
Also ref: [RFC 1034][2], [RFC 5321][3] and [RFC 5322][4].

[1]: https://github.com/django/django/blob/main/django/core/validators.py#L174
[2]: https://www.rfc-editor.org/rfc/rfc1034
[3]: https://www.rfc-editor.org/rfc/rfc5321
[4]: https://www.rfc-editor.org/rfc/rfc5322

Examples:
    >>> email('someone@example.com')
    # Output: True
    >>> email('bogus@@')
    # Output: ValidationError(email=email, args={'value': 'bogus@@'})

Args:
    value:
        eMail string to validate.
    ipv6_address:
        When the domain part is an IPv6 address.
    ipv4_address:
        When the domain part is an IPv4 address.
    simple_host:
        When the domain part is a simple hostname.
    rfc_1034:
        Allow trailing dot in domain name.
        Ref: [RFC 1034](https://www.rfc-editor.org/rfc/rfc1034).
    rfc_2782:
        Domain name is of type service record.
        Ref: [RFC 2782](https://www.rfc-editor.org/rfc/rfc2782).

Returns:
    (Literal[True]): If `value` is a valid eMail.
    (ValidationError): If `value` is an invalid eMail.
@r   F@      []z(^[\u0100-\u017F\u0180-\u024F]|[-!#$%&'*+/=?^_`{}|~0-9a-z]+(\.[-!#$%&'*+/=?^_`{}|~0-9a-z]+)*$|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\011.])*"$))skip_ipv6_addrskip_ipv4_addrmay_have_portmaybe_simpler	   r
   )countrsplitlen
startswithendswithlstriprstriprematch
IGNORECASEboolr   )r   r   r   r   r	   r
   username_partdomain_parts           6/venv/lib/python3.13/site-packages/validators/email.pyemailr$      s    ^ EKK$)!&c1!5M
=B#k"2S"8|!!#&&;+?+?+D+D%,,S188=K 88M
 MM	
 	
 	#//#//#(!!
	
, -    )__doc__r   r   utilsr   strr    r$    r%   r#   <module>r*      s|     
   
 UU 	U
 U U U U Ur%   