Ë
    5¾ªjµ  ã                   ón  — d Z ddgZddlZddlZddlZ	 ddlZddlmZm	Z	m
Z
mZ erddlmZ ej                  d«        G d„ d	ej                  «      Z G d
„ dej                   j"                  «      Z	 dddœdededede	deej(                  ef   f
d„Zde
de	de	dej,                  fd„Zy# e$ r dZY Œ›w xY w)z
Utilities.Ú	to_threadÚopen_connectioné    N)ÚTYPE_CHECKINGÚAnyÚCallableÚTuple)ÚMySQLConnectionAbstractÚStreamWriterc                   ó4   — e Zd ZdZdej
                  ddfd„Zy)ÚStreamReaderProtocolzìExtends asyncio.streams.StreamReaderProtocol for adding start_tls().

    The ``start_tls()`` is based on ``asyncio.streams.StreamWriter`` introduced
    in Python 3.11. It provides the same functionality for older Python versions.
    ÚwriterÚreturnNc                 óh   — |j                   }|| _        || _        |j                  d«      du| _        y)zQReplace stream writer.

        Args:
            writer: Stream Writer.
        Ú
sslcontextN)Ú	transportÚ_stream_writerÚ
_transportÚget_extra_infoÚ	_over_ssl)Úselfr   r   s      úX/var/www/html/serviGia/entorno/lib/python3.12/site-packages/mysql/connector/aio/utils.pyÚ_replace_writerz$StreamReaderProtocol._replace_writer<   s5   € ð ×$Ñ$ˆ	Ø$ˆÔØ#ˆŒØ"×1Ñ1°,Ó?ÀtÐKˆ�ó    )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úasyncior
   r   © r   r   r   r   5   s#   „ ñð	L g×&:Ñ&:ð 	L¸tô 	Lr   r   c            	       óD   — e Zd ZdZdddœdej
                  dededdfd„Zy)	r
   zäExtends asyncio.streams.StreamWriter for adding start_tls().

    The ``start_tls()`` is based on ``asyncio.streams.StreamWriter`` introduced
    in Python 3.11. It provides the same functionality for older Python versions.
    N)Úserver_hostnameÚssl_handshake_timeoutÚssl_contextr!   r"   r   c             ƒ   ó"  K  — | j                   j                  du}| j                   }| j                  «       ƒ d{  –—†  | j                  j	                  | j
                  |||||¬«      ƒ d{  –—† }|| _        |j                  | «       y7 ŒP7 Œ­w)zåUpgrade an existing stream-based connection to TLS.

        Args:
            ssl_context: Configured SSL context.
            server_hostname: Server host name.
            ssl_handshake_timeout: SSL handshake timeout.
        N)Úserver_sider!   r"   )Ú	_protocolÚ_client_connected_cbÚdrainÚ_loopÚ	start_tlsr   r   )r   r#   r!   r"   r%   ÚprotocolÚnew_transports          r   r*   zStreamWriter.start_tlsO   s�   è ø€ ð —n‘n×9Ñ9ÀÐEˆØ—>‘>ˆØ�j‰j‹l×ÐØ"Ÿj™j×2Ñ2à�O‰OØØØ#Ø+Ø"7ð 3ó 
÷ 
ˆð ð 	Œð 	× Ñ  Õ&ð 	øð
ús!   ‚8BºB»2BÁ-BÁ.BÂB)	r   r   r   r   ÚsslÚ
SSLContextÚstrÚintr*   r   r   r   r
   r
   H   s>   „ ñð  $Ø%)ò'à—^‘^ð'ð ð	'ð
  #ð'ð 
ô'r   i   )ÚlimitÚhostÚportr1   Úkwdsr   c             ‹   óþ   ‡	K  — t        j                  «       }t         j                  j                  ||¬«      }t	        ||¬«      Š	 |j
                  ˆ	fd„| |fi |¤Žƒ d{  –—† \  }}t        |‰	||«      }||fS 7 Œ­w)a  A wrapper for create_connection() returning a (reader, writer) pair.

    This function is based on ``asyncio.streams.open_connection`` and adds a custom
    stream reader.

    MySQL expects TLS negotiation to happen in the middle of a TCP connection, not at
    the start.
    This function in conjunction with ``_StreamReaderProtocol`` and ``_StreamWriter``
    allows the TLS negotiation on an existing connection.

    Args:
        host: Server host name.
        port: Server port.
        limit: The buffer size limit used by the returned ``StreamReader`` instance.
               By default the limit is set to 64 KiB.

    Returns:
        tuple: Returns a pair of reader and writer objects that are instances of
               ``StreamReader`` and ``StreamWriter`` classes.
    )r1   Úloop)r6   c                  ó   •— ‰ S )Nr   )r+   s   €r   ú<lambda>z!open_connection.<locals>.<lambda>‰   s   ø€ ¸€ r   N)r   Úget_running_loopÚstreamsÚStreamReaderr   Úcreate_connectionr
   )
r2   r3   r1   r4   r6   Úreaderr   Ú_r   r+   s
            @r   r   r   o   s€   øè ø€ ô. ×#Ñ#Ó%€DÜ�_‰_×)Ñ)°¸DÐ)ÓA€FÜ# F°Ô6€HØ/˜×/Ñ/Ó0@À$ÈÑUÐPTÑU×U�L€IˆqÜ˜) X¨v°tÓ<€FØ�6ˆ>Ðð Vús   ƒAA=Á!A;Á"A=ÚfuncÚargsÚkwargsc              �   óÚ   K  — t        j                  «       }t        j                  «       }t	        j
                  |j                  | g|¢­i |¤Ž}|j                  d|«      ƒ d{  –—† S 7 Œ­w)aQ  Asynchronously run function ``func`` in a separate thread.

    This function is based on ``asyncio.to_thread()`` introduced in Python 3.9, which
    provides the same functionality for older Python versions.

    Returns:
        coroutine: A coroutine that can be awaited to get the eventual result of
                   ``func``.
    N)r   r9   ÚcontextvarsÚcopy_contextÚ	functoolsÚpartialÚrunÚrun_in_executor)r?   r@   rA   r6   ÚctxÚ	func_calls         r   r   r   Ž   s]   è ø€ ô ×#Ñ#Ó%€DÜ
×
"Ñ
"Ó
$€CÜ×!Ñ! #§'¡'¨4ÐA°$ÒA¸&ÑA€IØ×%Ñ% d¨IÓ6×6Ð6Ð6ús   ‚A"A+Á$A)Á%A+)NN)r   Ú__all__r   rC   rE   r-   ÚImportErrorÚtypingr   r   r   r   Úmysql.connector.aio.abstractsr	   Úappendr   r:   r
   r/   r0   r;   r   ÚFuturer   r   r   r   ú<module>rQ      sò   ðñ@ àÐ)Ð
*€ã Û Û ðÛ÷ 7Ó 6áÝEà‡N�N�>Ô"ôL˜7×7Ñ7ô Lô&$'�7—?‘?×/Ñ/ô $'ðP #'ðØ8=òØ
ðØðØ25ðØGJðà
ˆ7×Ñ Ð-Ñ.óð>7˜(ð 7¨3ð 7¸#ð 7À'Ç.Á.ô 7øðI ò Ø
‚Cðús   ”B* Â*B4Â3B4