File: //home/arjun/projects/env/lib/python3.10/site-packages/validators/__pycache__/email.cpython-310.pyc
o
we�
� @ s\ d Z ddlZddlmZ ddlmZ edddddd�ded ed
ededed
efdd��ZdS )zeMail.� N� )�hostname)� validatorF)�ipv6_address�ipv4_address�simple_host�rfc_1034�rfc_2782�valuer r r r r c
C s� | r | � d�dkrdS | �dd�\}}t|�dkst|�dkr!dS |s%|r:|�d�r8|�d�r8|�d��d�}ndS t�d|tj �rQt
t|| | d|||d ��S dS )
a 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.
> *New in version 0.1.0*.
�@r F�@ � �[�]z�(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*$|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$))�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_part� r! �I/home/arjun/projects/env/lib/python3.10/site-packages/validators/email.py�email s8 3������r# )�__doc__r r �utilsr �strr r# r! r! r! r"