o
    $6dy5                     @  s  U d Z ddlmZ ddlZddlZddlmZm	Z	m
Z
mZmZmZ ddlmZmZ ddlmZmZmZmZ ddlmZmZ dd	lmZmZmZ dd
lmZ ddlm Z  er`ddl!a!dZ"de#d< nda!g dZ$ej%G dd dej&Z'eZ(	 eee'ddgdf Z)	 eee'dddgdf Z*	 eee'dgdf Z+	 eee'dg ddf Z,	 eee'dg ddf Z-	 eee'ddgdf Z.	 eee'ddgd d!d"d#f Z/	 eee'd$d%gd&d'f Z0	 eee'd(gd d)d*f Z1	 eee'g d+d,d'f Z2	 eee'g d-d,d'f Z3	 dEd0d1Z4eree5d2f Z6nG d3d4 d4Z6G d5d6 d6ej7Z8G d7d8 d8Z9G d9d: d:Z:G d;d< d<Z;dFd>d?Z<e< Z=dGdCdDZ>ee?Z@dS )HzEThe networks module contains types for common network-related fields.    )annotationsN)IPv4AddressIPv4InterfaceIPv4NetworkIPv6AddressIPv6InterfaceIPv6Network)TYPE_CHECKINGAny)MultiHostUrlPydanticCustomErrorUrlcore_schema)	Annotated	TypeAlias   )_fields_repr_schema_generation_shared)getattr_migration)JsonSchemaValuez7str | bytes | int | tuple[str | bytes | int, str | int]r   NetworkType)AnyUrl
AnyHttpUrlFileUrlHttpUrlUrlConstraintsEmailStr	NameEmailIPvAnyAddressIPvAnyInterfaceIPvAnyNetworkPostgresDsnCockroachDsnAmqpDsnRedisDsnMongoDsnKafkaDsnvalidate_emailMySQLDsn
MariaDBDsnc                   @  sd   e Zd ZU dZdZded< dZded< dZded< dZd	ed
< dZ	ded< dZ
d	ed< dddZdS )r   a  Url constraints.

    Attributes:
        max_length: The maximum length of the url. Defaults to `None`.
        allowed_schemes: The allowed schemes. Defaults to `None`.
        host_required: Whether the host is required. Defaults to `None`.
        default_host: The default host. Defaults to `None`.
        default_port: The default port. Defaults to `None`.
        default_path: The default path. Defaults to `None`.
    Nz
int | None
max_lengthzlist[str] | Noneallowed_schemeszbool | Nonehost_requiredz
str | Nonedefault_hostdefault_portdefault_pathreturnintc                 C  s2   t | j| jd urt| jnd | j| j| j| jfS N)hashr+   r,   tupler-   r.   r/   r0   self r8   hC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\site-packages\pydantic/networks.py__hash__D   s   zUrlConstraints.__hash__)r1   r2   )__name__
__module____qualname____doc__r+   __annotations__r,   r-   r.   r/   r0   r:   r8   r8   r8   r9   r   0   s   
 r   httphttps)r,   i#  )r+   r,   fileT)	postgres
postgresqlzpostgresql+asyncpgzpostgresql+pg8000zpostgresql+psycopgzpostgresql+psycopg2zpostgresql+psycopg2cffizpostgresql+py-postgresqlzpostgresql+pygresql)r-   r,   )Zcockroachdbzcockroachdb+psycopg2zcockroachdb+asyncpgZamqpZamqpsZredisZrediss	localhosti  z/0)r,   r.   r/   r0   Zmongodbzmongodb+srvii  )r,   r/   Zkafkai#  )r,   r.   r/   )mysqlzmysql+mysqlconnectorzmysql+aiomysqlzmysql+asyncmyzmysql+mysqldbzmysql+pymysqlzmysql+cymysqlzmysql+pyodbci  )Zmariadbzmariadb+mariadbconnectorzmariadb+pymysqlr1   Nonec               
   C  s2   zdd l a W d S  ty }  ztd| d } ~ ww )Nr   zCemail-validator is not installed, run `pip install pydantic[email]`)email_validatorImportError)er8   r8   r9   import_email_validator   s   
rK   .c                   @  s:   e Zd ZdZedddZedddZedddZdS )r   a,  Validate email addresses.

        Example:
            ```py
            from pydantic import BaseModel, EmailStr

            class Model(BaseModel):
                email: EmailStr

            print(Model(email='contact@mail.com'))
            #> email='contact@mail.com'
            ```
        source	type[Any]r1   core_schema.CoreSchemac                 C  s   t   t| jt S r3   )rK   r    general_after_validator_function	_validate
str_schemaclsrL   r8   r8   r9   __get_pydantic_core_schema__   s   z%EmailStr.__get_pydantic_core_schema__r   handler._schema_generation_shared.GetJsonSchemaHandlerr   c                 C     ||}|j ddd |S )NstringemailtypeformatupdaterS   r   rU   Zfield_schemar8   r8   r9   __get_pydantic_json_schema__      z%EmailStr.__get_pydantic_json_schema___EmailStr__input_valuestr_core_schema.ValidationInfoc                 C  s   t |d S )Nr   )r(   )rS   rb   rd   r8   r8   r9   rP      s   zEmailStr._validateNrL   rM   r1   rN   r   rN   rU   rV   r1   r   )rb   rc   rd   re   r1   rc   )r;   r<   r=   r>   classmethodrT   r`   rP   r8   r8   r8   r9   r      s    r   c                   @  s\   e Zd ZdZdZd"ddZd#ddZed$ddZed%ddZ	ed&ddZ
d'dd Zd!S )(r   a  Validate a name and email address combination.

    Example:
        ```py
        from pydantic import BaseModel, NameEmail

        class User(BaseModel):
            email: NameEmail

        print(User(email='John Doe <john.doe@mail.com>'))
        #> email=NameEmail(name='John Doe', email='john.doe@mail.com')
        ```

    Attributes:
        name: The name.
        email: The email address.
    namerY   rj   rc   rY   c                 C  s   || _ || _d S r3   ri   )r7   rj   rY   r8   r8   r9   __init__   s   
zNameEmail.__init__otherr
   r1   boolc                 C  s"   t |to| j| jf|j|jfkS r3   )
isinstancer   rj   rY   )r7   rl   r8   r8   r9   __eq__   s   "zNameEmail.__eq__r   rN   rU   rV   r   c                 C  rW   )NrX   z
name-emailrZ   r]   r_   r8   r8   r9   r`      ra   z&NameEmail.__get_pydantic_json_schema__rL   rM   c                 C  s6   t   tj| jtjt| t gdddt dS )NZname_email_typezInput is not a valid NameEmail)Zcustom_error_typeZcustom_error_messageZserialization)rK   r   rO   rP   Zunion_schemaZis_instance_schemarQ   to_string_ser_schemarR   r8   r8   r9   rT      s   z&NameEmail.__get_pydantic_core_schema___NameEmail__input_valueNameEmail | strrd   re   c                 C  s$   t || r|S t|\}}| ||S r3   )rn   r(   )rS   rr   rd   rj   rY   r8   r8   r9   rP     s   

zNameEmail._validatec                 C  s   | j  d| j dS )Nz <>ri   r6   r8   r8   r9   __str__
  s   zNameEmail.__str__N)rj   rc   rY   rc   )rl   r
   r1   rm   rg   rf   )rr   rs   rd   re   r1   r   )r1   rc   )r;   r<   r=   r>   	__slots__rk   ro   rh   r`   rT   rP   ru   r8   r8   r8   r9   r      s    

r   c                   @  H   e Zd ZdZdZdddZedddZedddZedddZ	dS )r   !Validate an IPv4 or IPv6 address.r8   valuer
   r1   IPv4Address | IPv6Addressc                 C  B   zt |W S  ty   Y nw zt|W S  ty    tddw )rx   Zip_any_addressz)value is not a valid IPv4 or IPv6 address)r   
ValueErrorr   r   rS   ry   r8   r8   r9   __new__     


zIPvAnyAddress.__new__r   rN   rU   rV   r   c                 C     i }|j ddd |S )NrX   ZipvanyaddressrZ   r]   r_   r8   r8   r9   r`        z*IPvAnyAddress.__get_pydantic_json_schema__rL   rM   c                 C     t j| jt  dS Nrp   r   Z general_plain_validator_functionrP   rq   rR   r8   r8   r9   rT   '     
z*IPvAnyAddress.__get_pydantic_core_schema___IPvAnyAddress__input_valuerd   re   c                 C     | |S r3   r8   )rS   r   rd   r8   r8   r9   rP   0     zIPvAnyAddress._validateN)ry   r
   r1   rz   rg   rf   )r   r
   rd   re   r1   rz   
r;   r<   r=   r>   rv   r~   rh   r`   rT   rP   r8   r8   r8   r9   r         
r   c                   @  rw   )r    #Validate an IPv4 or IPv6 interface.r8   ry   r   r1   IPv4Interface | IPv6Interfacec                 C  r{   )r   Zip_any_interfacez+value is not a valid IPv4 or IPv6 interface)r   r|   r   r   r}   r8   r8   r9   r~   :  r   zIPvAnyInterface.__new__r   rN   rU   rV   r   c                 C  r   )NrX   ZipvanyinterfacerZ   r]   r_   r8   r8   r9   r`   F  r   z,IPvAnyInterface.__get_pydantic_json_schema__rL   rM   c                 C  r   r   r   rR   r8   r8   r9   rT   N  r   z,IPvAnyInterface.__get_pydantic_core_schema___IPvAnyInterface__input_valuerd   re   c                 C  r   r3   r8   )rS   r   rd   r8   r8   r9   rP   W  r   zIPvAnyInterface._validateN)ry   r   r1   r   rg   rf   )r   r   rd   re   r1   r   r   r8   r8   r8   r9   r    5  r   r    c                   @  rw   )r!   !Validate an IPv4 or IPv6 network.r8   ry   r   r1   IPv4Network | IPv6Networkc                 C  r{   )r   Zip_any_networkz)value is not a valid IPv4 or IPv6 network)r   r|   r   r   r}   r8   r8   r9   r~   a  s   


zIPvAnyNetwork.__new__r   rN   rU   rV   r   c                 C  r   )NrX   ZipvanynetworkrZ   r]   r_   r8   r8   r9   r`   o  r   z*IPvAnyNetwork.__get_pydantic_json_schema__rL   rM   c                 C  r   r   r   rR   r8   r8   r9   rT   w  r   z*IPvAnyNetwork.__get_pydantic_core_schema___IPvAnyNetwork__input_valuerd   re   c                 C  r   r3   r8   )rS   r   rd   r8   r8   r9   rP     r   zIPvAnyNetwork._validateN)ry   r   r1   r   rg   rf   )r   r   rd   re   r1   r   r   r8   r8   r8   r9   r!   \  s    
r!   
re.Patternc               	   C  s<   d} d|  d|  d}d}d}t d| d| d	| d
S )Nz[\w!#$%&\'*+\-/=?^_`{|}~]z((?:z+\s+)*z+)z"((?:[^"]|\")+)"z<\s*(.+)\s*>z\s*(?:|z)?\s*z\s*)recompile)Z
name_charsZunquoted_name_groupZquoted_name_groupZemail_groupr8   r8   r9   _build_pretty_email_regex  s
   r   ry   rc   tuple[str, str]c              
   C  s   t du rt  t| }d}|r| \}}} |p|}|  }z	t j|dd}W n t jyC } ztdddt	|j
d i|d}~ww |j}|dusMJ |pQ|j}||fS )ag  Email address validation using https://pypi.org/project/email-validator/.

    Note:
        Note that:

        * Raw IP address (literal) domain parts are not allowed.
        * "John Doe <local_part@domain.com>" style "pretty" email addresses are processed.
        * Spaces are striped from the beginning and end of addresses, but no error is raised.
    NF)Zcheck_deliverabilityZvalue_errorz,value is not a valid email address: {reason}reasonr   )rH   rK   pretty_email_regex	fullmatchgroupsstripr(   ZEmailNotValidErrorr   rc   args
normalizedZ
local_part)ry   mrj   Zunquoted_nameZquoted_namerY   partsrJ   r8   r8   r9   r(     s,   


r(   )r1   rG   )r1   r   )ry   rc   r1   r   )Ar>   
__future__r   Z_annotationsdataclasses_dataclassesr   	ipaddressr   r   r   r   r   r   typingr	   r
   Zpydantic_corer   r   r   r   Ztyping_extensionsr   r   	_internalr   r   r   Z
_migrationr   Zjson_schemar   rH   r   r?   __all__	dataclassZPydanticMetadatar   r   r   r   r   r"   r#   r$   r%   r&   r'   r)   r*   rK   rc   r   ZRepresentationr   r   r    r!   r   r   r(   r;   __getattr__r8   r8   r8   r9   <module>   s      

$@''
)
"