o
    ØŹha=  ć                   @   sF  d Z dZegZzddlZedd eD ZdZW n ey#   dZY nw dd	l	m
Z
mZmZmZ dd
lmZ zBddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! zddl"m#Z# e $e#” W n	 eyØ   Y nw e $e!” i Z%ej&j' (” D ]\Z)Z*e*e%d +e)”< q¶ej,j' (” D ]\Z)Z*e*e%d +e)”< qČej-j. (” D ]\Z)Z*e*e%d +e)”< qŚej/ (” D ]\Z)Z*e*e%d +e)”< qėej0j1 (” D ]\Z)Z*e*e%d  +e)”< qżej2j3 (” D ]\Z)Z*e*e%d! +e)”< qej4j5 (” D ]\Z)Z*e*e%d" +e)”< q"ej6j' (” D ]\Z)Z*e*e%d# +e)”< q5ej7j' (” D ]\Z)Z*e*e%d$ +e)”< qHej8j9j: (” D ]\Z)Z*e*e%d% +e)”< q\ej8j; (” D ]\Z)Z*e*e%d& +e)”< qoej<j' (” D ]\Z)Z*e*e%d' +e)”< qej=j' (” D ]\Z)Z*e*e%d( +e)”< qej>j? (” D ]\Z)Z*e*e%d) +e)”< qØej@jA (” D ]\Z)Z*e*e%d* +e)”< q»ejBjC (” D ]\Z)Z*e*e%d+ +e)”< qĪejDjE (” D ]\Z)Z*e*e%d, +e)”< qįe F” ZGe HeG”ZIeG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” eG JejK LejMjN”” ed-d eD ZdZOG d.d/ d/ePZQW n ey   dZOesed0Y nw G d1d2 d2ePZRG d3d4 d4ePZSd5d6 ZTdS )7zXThis module contains the implementation of a helper class for MySQL X
Protobuf messages.))zMysqlx.ServerMessages.Type.OKz	Mysqlx.Ok)z Mysqlx.ServerMessages.Type.ERRORzMysqlx.Error)z,Mysqlx.ServerMessages.Type.CONN_CAPABILITIESzMysqlx.Connection.Capabilities)z5Mysqlx.ServerMessages.Type.SESS_AUTHENTICATE_CONTINUEz#Mysqlx.Session.AuthenticateContinue)z/Mysqlx.ServerMessages.Type.SESS_AUTHENTICATE_OKzMysqlx.Session.AuthenticateOk)z!Mysqlx.ServerMessages.Type.NOTICEzMysqlx.Notice.Frame)z5Mysqlx.ServerMessages.Type.RESULTSET_COLUMN_META_DATAzMysqlx.Resultset.ColumnMetaData)z(Mysqlx.ServerMessages.Type.RESULTSET_ROWzMysqlx.Resultset.Row)z/Mysqlx.ServerMessages.Type.RESULTSET_FETCH_DONEzMysqlx.Resultset.FetchDone)z4Mysqlx.ServerMessages.Type.RESULTSET_FETCH_SUSPENDEDzMysqlx.Resultset.FetchSuspended)z?Mysqlx.ServerMessages.Type.RESULTSET_FETCH_DONE_MORE_RESULTSETSz(Mysqlx.Resultset.FetchDoneMoreResultsets)z.Mysqlx.ServerMessages.Type.SQL_STMT_EXECUTE_OKzMysqlx.Sql.StmtExecuteOk)z?Mysqlx.ServerMessages.Type.RESULTSET_FETCH_DONE_MORE_OUT_PARAMSz'Mysqlx.Resultset.FetchDoneMoreOutParamsé    Nc                 C   s"   g | ]\}}t t |”|fqS © )ŚintŚ	_mysqlxpbŚ
enum_value©Ś.0ŚkeyŚvalr   r   śJ/var/www/html/env/lib/python3.10/site-packages/mysqlx/protobuf/__init__.pyŚ
<listcomp>A   s    ’r   TFé   )ŚPY3ŚNUMERIC_TYPESŚSTRING_TYPESŚ
BYTE_TYPES)Śencode_to_bytesé   )Śmysqlx_connection_pb2)Śmysqlx_crud_pb2)Śmysqlx_datatypes_pb2)Śmysqlx_expect_pb2)Śmysqlx_expr_pb2)Śmysqlx_notice_pb2)Ś
mysqlx_pb2)Śmysqlx_resultset_pb2)Śmysqlx_session_pb2)Śmysqlx_sql_pb2)Śdescriptor_database)Śdescriptor_pb2)Śdescriptor_pool)Śmessage_factory)ŚRepeatedCompositeFieldContainer)ŚRepeatedCompositeContainerzMysqlx.ClientMessages.Type.{0}zMysqlx.ServerMessages.Type.{0}zMysqlx.Error.Severity.{0}zMysqlx.Crud.DataModel.{0}zMysqlx.Crud.Find.RowLock.{0}zMysqlx.Crud.Order.Direction.{0}z*Mysqlx.Crud.UpdateOperation.UpdateType.{0}z Mysqlx.Datatypes.Scalar.Type.{0}zMysqlx.Datatypes.Any.Type.{0}z3Mysqlx.Expect.Open.Condition.ConditionOperation.{0}z#Mysqlx.Expect.Open.CtxOperation.{0}zMysqlx.Expr.Expr.Type.{0}z%Mysqlx.Expr.DocumentPathItem.Type.{0}zMysqlx.Notice.Frame.Scope.{0}zMysqlx.Notice.Warning.Level.{0}z/Mysqlx.Notice.SessionStateChanged.Parameter.{0}z-Mysqlx.Resultset.ColumnMetaData.FieldType.{0}c                 C   s   g | ]
\}}t | |fqS r   ©Ś	_MESSAGESr   r   r   r
   r   “   s    c                   @   sT   e Zd ZdZe ” Zedd Zedd Z	edd Z
edd	 Zed
d ZdS )Ś_mysqlxpb_purez]This class implements the methods in pure Python used by the
        _mysqlxpb C++ extension.c                 C   s   t j t | ””}| S ©N)r%   ŚfactoryŚGetPrototypeŚ_DESCRIPTOR_POOLŚFindMessageTypeByName)ŚnameŚclsr   r   r
   Śnew_messageæ   s   ’z_mysqlxpb_pure.new_messagec                 C   s   t |  S r&   r#   )r   r   r   r
   r   Å   ó   z_mysqlxpb_pure.enum_valuec                 C   s   |   ” S r&   )ŚSerializeToString)Śmsgr   r   r
   Śserialize_messageÉ   r.   z _mysqlxpb_pure.serialize_messagec                 C   s   t  | ”}| |” |S r&   )r%   r-   ŚParseFromString)Śmsg_type_nameŚpayloadr0   r   r   r
   Śparse_messageĶ   s   

z_mysqlxpb_pure.parse_messagec                 C   s4   t  | ”}|std | ”t |”}| |” |S )NzUnknown msg_type: {0})ŚSERVER_MESSAGESŚgetŚ
ValueErrorŚformatr%   r-   r2   )Śmsg_typer4   r3   r0   r   r   r
   Śparse_server_messageÓ   s   


z#_mysqlxpb_pure.parse_server_messageN)Ś__name__Ś
__module__Ś__qualname__Ś__doc__r    ŚMessageFactoryr'   Śstaticmethodr-   r   r1   r5   r;   r   r   r   r
   r%   ¹   s    



r%   śProtobuf is not availablec                   @   s4   e Zd ZdZer
eneZerdndZe	dd Z
dS )ŚProtobufzŲProtobuf class acts as a container of the Protobuf message class.
    It allows the switch between the C extension and pure Python implementation
    message handlers, by patching the `mysqlxpb` class attribute.
    FTc                 C   s8   | rt std| ststd| rtntt_| t_dS )z”Sets whether to use the C extension or pure Python implementation.

        Args:
            use_pure (bool): `True` to use pure Python implementation.
        rB   z-MySQL X Protobuf C extension is not availableN)ŚHAVE_PROTOBUFŚImportErrorŚHAVE_MYSQLXPB_CEXTr%   r   rC   ŚmysqlxpbŚuse_pure)rH   r   r   r
   Śset_use_pureé   s   
zProtobuf.set_use_pureN)r<   r=   r>   r?   rF   r   r%   rG   rH   rA   rI   r   r   r   r
   rC   į   s    rC   c                   @   s   e Zd ZdZdddZdd Zdd Zd	d
 Zdd ZdddZ	dd Z
dd Zdd Zedd Zedd Zedd Zedd Zedd ZdS ) ŚMessagezŠHelper class for interfacing with the MySQL X Protobuf extension.

    Args:
        msg_type_name (string): Protobuf type name.
        **kwargs: Arbitrary keyword arguments with values for the message.
    Nc                 K   s<   |rt j |”nd | jd< | ” D ]
\}}|  ||” qd S )NŚ_msg)rC   rG   r-   Ś__dict__ŚitemsŚ__setattr__)Śselfr3   Śkwargsr   Śvaluer   r   r
   Ś__init__’   s   ’’’zMessage.__init__c                 C   sĘ   t jrStrt|trt| j|t| d S t|ttt	fr&t| j|| d S t|t
r6t| j| |” d S t|trHt| j| | ” ” d S t| j| |” d S t|tr\| ” n|| j|< d S r&   )rC   rH   r   Ś
isinstancer   ŚsetattrrK   r   r   r   ŚlistŚgetattrŚextendrJ   Ś	MergeFromŚget_message©rO   r+   rQ   r   r   r
   rN     s   


’’zMessage.__setattr__c                 C   s4   zt js
| j| W S t| j|W S  ty   tw r&   )rC   rH   rK   rV   ŚKeyErrorŚAttributeError©rO   r+   r   r   r
   Ś__getattr__  s   
’’zMessage.__getattr__c                 C   s   |   ||” d S r&   )rN   rZ   r   r   r
   Ś__setitem__  s   zMessage.__setitem__c                 C   s
   |   |”S r&   )r^   r]   r   r   r
   Ś__getitem__  s   
zMessage.__getitem__c                 C   s*   t js| jd  ||”S t| jd ||S )a  Returns the value of an element of the message dictionary.

        Args:
            name (string): Key name.
            default (object): The default value if the key does not exists.

        Returns:
            object: The value of the provided key name.
        rK   )rC   rH   rL   r7   rV   )rO   r+   Śdefaultr   r   r
   r7   "  s   ’žzMessage.getc                 C   s   || j d< dS )zdSets the message.

        Args:
            msg (dict): Dictionary representing a message.
        rK   N©rL   )rO   r0   r   r   r
   Śset_message0  ó   zMessage.set_messagec                 C   s
   | j d S )zøReturns the dictionary representing a message containing parsed
        data.

        Returns:
            dict: The dictionary representing a message containing parsed data.
        rK   rb   ©rO   r   r   r
   rY   8  s   
zMessage.get_messagec                 C   s   t j | j”S )zSerializes a message to a string.

        Returns:
           string: A string representing a message containing parsed data.
        )rC   rG   r1   rK   re   r   r   r
   Śserialize_to_stringA  rd   zMessage.serialize_to_stringc                 C   s   t js| jd S | jjjS )zstring: Message type name.Ś_mysqlxpb_type_name)rC   rH   rK   Ś
DESCRIPTORŚ	full_namere   r   r   r
   ŚtypeI  s   ’zMessage.typec                 C   ó   t j | |”S )a  Creates a new message, initialized with parsed data.

        Args:
            msg_type_name (string): Message type name.
            payload (string): Serialized message data.

        Returns:
            dict: The dictionary representing a message containing parsed data.
        )rC   rG   r5   )r3   r4   r   r   r
   ŚparseO  ó   zMessage.parsec                 C   rk   )a  Creates a new server-side message, initialized with parsed data.

        Args:
            msg_type (int): Message type.
            payload (string): Serialized message data.

        Returns:
            dict: The dictionary representing a message containing parsed data.
        )rC   rG   r;   )r:   r4   r   r   r
   Śparse_from_server\  rm   zMessage.parse_from_serverc                 C   ó   |  }|  tj ||”” |S )a  Creates a new message, initialized with parsed data and returns a
        :class:`mysqlx.protobuf.Message` object.

        Args:
            msg_type_name (string): Message type name.
            payload (string): Serialized message data.

        Returns:
            mysqlx.protobuf.Message: The Message representing a message
                                     containing parsed data.
        )rc   rC   rG   r5   )r,   r3   r4   r0   r   r   r
   Śfrom_messagei  s   zMessage.from_messagec                 C   ro   )a  Creates a new server-side message, initialized with parsed data and
        returns a :class:`mysqlx.protobuf.Message` object.

        Args:
            msg_type (int): Message type.
            payload (string): Serialized message data.

        Returns:
            mysqlx.protobuf.Message: The Message representing a message
                                     containing parsed data.
        )rc   rC   rG   r;   )r,   r:   r4   r0   r   r   r
   Śfrom_server_messagez  s
   ’zMessage.from_server_messager&   )r<   r=   r>   r?   rR   rN   r^   r_   r`   r7   rc   rY   rf   Śpropertyrj   rA   rl   rn   Śclassmethodrp   rq   r   r   r   r
   rJ   ų   s*    

	



rJ   c                 C   s   t j | ”S )zÆReturns the value of a MySQL X Protobuf enumerator.

    Args:
        name (string): MySQL X Protobuf numerator name.

    Returns:
        int: Value of the enumerator.
    )rC   rG   r   )r+   r   r   r
   Śmysqlxpb_enum  s   	rt   )Ur?   Ś_SERVER_MESSAGES_TUPLESrU   ŚPROTOBUF_REPEATED_TYPESr   Śdictr6   rF   rE   Ścompatr   r   r   r   Śhelpersr   Ś r   r   r   r   r   r   r   r   r   r   Śgoogle.protobufr   r   r   r    Ś#google.protobuf.internal.containersr!   Śgoogle.protobuf.pyext._messager"   Śappendr$   ŚClientMessagesŚTyperM   r   r	   r9   ŚServerMessagesŚErrorŚSeverityŚ	DataModelŚFindŚRowLockŚOrderŚ	DirectionŚUpdateOperationŚ
UpdateTypeŚScalarŚAnyŚOpenŚ	ConditionŚConditionOperationŚCtxOperationŚExprŚDocumentPathItemŚFrameŚScopeŚWarningŚLevelŚSessionStateChangedŚ	ParameterŚColumnMetaDataŚ	FieldTypeŚDescriptorDatabaseŚ_DESCRIPTOR_DBŚDescriptorPoolr)   ŚAddŚFileDescriptorProtoŚ
FromStringrh   Śserialized_pbrD   Śobjectr%   rC   rJ   rt   r   r   r   r
   Ś<module>   sś   ’’’
’’’’

’
’
’
’
’
’
’
’
’
’’"’ž 