o
    FÊÆh?P  ã                   @  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  ddl!m"Z" erfd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 Z0	 eee)dd gd!d"d#d$�f Z1	 eee)d%d&gd'd(�f Z2	 eee)d)gd!d*d+�f Z3	 eee)g d,¢d-d(�f Z4	 eee)g d.¢d-d(�f Z5	 dGd1d2„Z6e�ree7d3f Z8nG d4d5„ d5ƒZ8G d6d7„ d7ej9ƒZ:G d8d9„ d9ƒZ;G d:d;„ d;ƒZ<G d<d=„ d=ƒZ=dHd?d@„Z>e>ƒ Z?dAZ@	 dIdEdF„ZAeeBƒZCdS )JzEThe 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)ÚGetCoreSchemaHandler)Ú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/   r0   r1   ©Úself© r9   ú^/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/pydantic/networks.pyÚ__hash__E   s   úÿzUrlConstraints.__hash__)r2   r3   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   Ú__annotations__r-   r.   r/   r0   r1   r;   r9   r9   r9   r:   r   1   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-   )Úcockroachdbzcockroachdb+psycopg2zcockroachdb+asyncpgÚamqpÚamqpsÚredisÚredissÚ	localhostië  z/0)r-   r/   r0   r1   Úmongodbzmongodb+srvi‰i  )r-   r0   Úkafkai„#  )r-   r/   r0   )Úmysqlzmysql+mysqlconnectorzmysql+aiomysqlzmysql+asyncmyzmysql+mysqldbzmysql+pymysqlzmysql+cymysqlzmysql+pyodbciê  )Úmariadbzmariadb+mariadbconnectorzmariadb+pymysqlr2   Ú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)Úer9   r9   r:   Úimport_email_validator]  s   
€ÿrT   .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   
        Info:
            To use this type, you need to install the optional
            [`email-validator`](https://github.com/JoshData/python-email-validator) package:

            ```bash
            pip install email-validator
            ```

        Validate email addresses.

        ```py
        from pydantic import BaseModel, EmailStr

        class Model(BaseModel):
            email: EmailStr

        print(Model(email='contact@mail.com'))
        #> email='contact@mail.com'
        ```
        Ú_sourceú	type[Any]Ú_handlerr   r2   úcore_schema.CoreSchemac                 C  s   t ƒ  t | jt ¡ ¡S r4   )rT   r   Ú no_info_after_validator_functionÚ	_validateÚ
str_schema©ÚclsrU   rW   r9   r9   r:   Ú__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©r]   r   r_   Úfield_schemar9   r9   r:   Ú__get_pydantic_json_schema__‰  ó   z%EmailStr.__get_pydantic_json_schema__Ú_EmailStr__input_valueÚstrc                 C  s   t |ƒd S )Nr   )r)   )r]   rm   r9   r9   r:   rZ   ‘  s   zEmailStr._validateN©rU   rV   rW   r   r2   rX   ©r   rX   r_   r`   r2   r   )rm   rn   r2   rn   )r<   r=   r>   r?   Úclassmethodr^   rk   rZ   r9   r9   r9   r:   r   i  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È  
    Info:
        To use this type, you need to install the optional
        [`email-validator`](https://github.com/JoshData/python-email-validator) package:

        ```bash
        pip install email-validator
        ```

    Validate a name and email address combination, as specified by
    [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322#section-3.4).

    The `NameEmail` has two properties: `name` and `email`.
    In case the `name` is not provided, it's inferred from the email address.

    ```py
    from pydantic import BaseModel, NameEmail

    class User(BaseModel):
        email: NameEmail

    user = User(email='Fred Bloggs <fred.bloggs@example.com>')
    print(user.email)
    #> Fred Bloggs <fred.bloggs@example.com>
    print(user.email.name)
    #> Fred Bloggs

    user = User(email='fred.bloggs@example.com')
    print(user.email)
    #> fred.bloggs <fred.bloggs@example.com>
    print(user.email.name)
    #> fred.bloggs
    ```
    ©Únamerc   rs   rn   rc   c                 C  s   || _ || _d S r4   rr   )r8   rs   rc   r9   r9   r:   Ú__init__¼  s   
zNameEmail.__init__Úotherr
   r2   Úboolc                 C  s"   t |tƒo| j| jf|j|jfkS r4   )Ú
isinstancer   rs   rc   )r8   ru   r9   r9   r:   Ú__eq__À  s   "zNameEmail.__eq__r   rX   r_   r`   r   c                 C  ra   )Nrb   z
name-emailrd   rg   ri   r9   r9   r:   rk   Ã  rl   z&NameEmail.__get_pydantic_json_schema__rU   rV   rW   r   c                 C  s6   t ƒ  tj| jtjt | ¡t ¡ gddd�t ¡ d�S )NÚname_email_typezInput is not a valid NameEmail)Úcustom_error_typeÚcustom_error_message©Úserialization)rT   r   rY   rZ   Úunion_schemaÚis_instance_schemar[   Úto_string_ser_schemar\   r9   r9   r:   r^   Ë  s   ýùz&NameEmail.__get_pydantic_core_schema__Ú_NameEmail__input_valueúNameEmail | strc                 C  s$   t || ƒr|S t|ƒ\}}| ||ƒS r4   )rw   r)   )r]   r�   rs   rc   r9   r9   r:   rZ   Ü  s   

zNameEmail._validatec                 C  s   | j › d| j› d�S )Nz <ú>rr   r7   r9   r9   r:   Ú__str__ä  s   zNameEmail.__str__N)rs   rn   rc   rn   )ru   r
   r2   rv   rp   ro   )r�   r‚   r2   r   )r2   rn   )r<   r=   r>   r?   Ú	__slots__rt   rx   rq   rk   r^   rZ   r„   r9   r9   r9   r:   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    a‚  Validate an IPv4 or IPv6 address.

    ```py
    from pydantic import BaseModel
    from pydantic.networks import IPvAnyAddress

    class IpModel(BaseModel):
        ip: IPvAnyAddress

    print(IpModel(ip='127.0.0.1'))
    #> ip=IPv4Address('127.0.0.1')

    try:
        IpModel(ip='http://www.example.com')
    except ValueError as e:
        print(e.errors())
        '''
        [
            {
                'type': 'ip_any_address',
                'loc': ('ip',),
                'msg': 'value is not a valid IPv4 or IPv6 address',
                'input': 'http://www.example.com',
            }
        ]
        '''
    ```
    r9   Úvaluer
   r2   úIPv4Address | IPv6Addressc                 C  óB   zt |ƒW S  ty   Y nw zt|ƒW S  ty    tddƒ‚w )z!Validate an IPv4 or IPv6 address.Úip_any_addressz)value is not a valid IPv4 or IPv6 address)r   Ú
ValueErrorr   r   ©r]   r‡   r9   r9   r:   Ú__new__  ó   
ÿ

ÿzIPvAnyAddress.__new__r   rX   r_   r`   r   c                 C  ó   i }|j ddd� |S )Nrb   Úipvanyaddressrd   rg   ri   r9   r9   r:   rk     ó   z*IPvAnyAddress.__get_pydantic_json_schema__rU   rV   rW   r   c                 C  ó   t j| jt  ¡ d�S ©Nr|   ©r   Ú no_info_plain_validator_functionrZ   r€   r\   r9   r9   r:   r^     ó   
ÿz*IPvAnyAddress.__get_pydantic_core_schema__Ú_IPvAnyAddress__input_valuec                 C  ó   | |ƒS r4   r9   )r]   r—   r9   r9   r:   rZ   &  ó   zIPvAnyAddress._validateN)r‡   r
   r2   rˆ   rp   ro   )r—   r
   r2   rˆ   ©
r<   r=   r>   r?   r…   r�   rq   rk   r^   rZ   r9   r9   r9   r:   r    è  s    
	r    c                   @  r†   )r!   ú#Validate an IPv4 or IPv6 interface.r9   r‡   r   r2   úIPv4Interface | IPv6Interfacec                 C  r‰   )r›   Úip_any_interfacez+value is not a valid IPv4 or IPv6 interface)r   r‹   r   r   rŒ   r9   r9   r:   r�   0  rŽ   zIPvAnyInterface.__new__r   rX   r_   r`   r   c                 C  r�   )Nrb   Úipvanyinterfacerd   rg   ri   r9   r9   r:   rk   <  r‘   z,IPvAnyInterface.__get_pydantic_json_schema__rU   rV   rW   r   c                 C  r’   r“   r”   r\   r9   r9   r:   r^   D  r–   z,IPvAnyInterface.__get_pydantic_core_schema__Ú_IPvAnyInterface__input_valuec                 C  r˜   r4   r9   )r]   rŸ   r9   r9   r:   rZ   N  r™   zIPvAnyInterface._validateN)r‡   r   r2   rœ   rp   ro   )rŸ   r   r2   rœ   rš   r9   r9   r9   r:   r!   +  s    
	r!   c                   @  r†   )r"   ú!Validate an IPv4 or IPv6 network.r9   r‡   r   r2   úIPv4Network | IPv6Networkc                 C  r‰   )r    Úip_any_networkz)value is not a valid IPv4 or IPv6 network)r   r‹   r   r   rŒ   r9   r9   r:   r�   X  s   
ÿ

ÿzIPvAnyNetwork.__new__r   rX   r_   r`   r   c                 C  r�   )Nrb   Úipvanynetworkrd   rg   ri   r9   r9   r:   rk   f  r‘   z*IPvAnyNetwork.__get_pydantic_json_schema__rU   rV   rW   r   c                 C  r’   r“   r”   r\   r9   r9   r:   r^   n  r–   z*IPvAnyNetwork.__get_pydantic_core_schema__Ú_IPvAnyNetwork__input_valuec                 C  r˜   r4   r9   )r]   r¤   r9   r9   r:   rZ   x  r™   zIPvAnyNetwork._validateN)r‡   r   r2   r¡   rp   ro   )r¤   r   r2   r¡   rš   r9   r9   r9   r:   r"   S  s    
	r"   úre.Pattern[str]c               	   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)Ú
name_charsÚunquoted_name_groupÚquoted_name_groupÚemail_groupr9   r9   r:   Ú_build_pretty_email_regex}  s
   r­   i   r‡   rn   útuple[str, str]c              
   C  sÐ   t du rtƒ  t| ƒtkrtddddt› d�iƒ‚t | ¡}d}|r-| ¡ \}}} |p,|}|  ¡ }z	t j	|dd�}W n t j
yU } ztdddt|jd	 ƒiƒ|‚d}~ww |j}|dus_J ‚|pc|j}||fS )
a|  Email address validation using [email-validator](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.
    NÚvalue_errorz,value is not a valid email address: {reason}ÚreasonzLength must not exceed z charactersF)Úcheck_deliverabilityr   )rQ   rT   ÚlenÚMAX_EMAIL_LENGTHr   Úpretty_email_regexÚ	fullmatchÚgroupsÚstripr)   ÚEmailNotValidErrorrn   ÚargsÚ
normalizedÚ
local_part)r‡   Úmrs   Úunquoted_nameÚquoted_namerc   ÚpartsrS   r9   r9   r:   r)   �  s8   
ý
ÿþ€ÿ
r)   )r2   rP   )r2   r¥   )r‡   rn   r2   r®   )Dr?   Ú
__future__r   Ú_annotationsÚdataclassesÚ_dataclassesr§   Ú	ipaddressr   r   r   r   r   r   Útypingr	   r
   Úpydantic_corer   r   r   r   Útyping_extensionsr   r   Ú	_internalr   r   r   Ú
_migrationr   Úannotated_handlersr   Újson_schemar   rQ   r   r@   Ú__all__Ú	dataclassÚPydanticMetadatar   r   r   r   r   r#   r$   r%   r&   r'   r(   r*   r+   rT   rn   r   ÚRepresentationr   r    r!   r"   r­   r´   r³   r)   r<   Ú__getattr__r9   r9   r9   r:   Ú<module>   s²      Jþÿÿ;þÿÿÿÿ
õÿÿþÿÿ
-RC(
*
)