
    Ng                         d Z ddlZddlmZmZ ddlmZ ddlmZ ddlm	Z	  edd	          Z
dd
e
dedefdZdee
         dede
fdZd
e
dej        ddfdZdee
         dej        de
fdZdS )z,Contains the Nextgen Pythonic protobuf APIs.    N)TypeTypeVar)decoder)encoder)Message_MESSAGEr   )boundmessagedeterministicreturnc                 .    |                      |          S )a  Return the serialized proto.

  Args:
    message: The proto message to be serialized.
    deterministic: If true, requests deterministic serialization
        of the protobuf, with predictable ordering of map keys.

  Returns:
    A binary bytes representation of the message.
  )r   )SerializeToString)r
   r   s     Q/var/www/html/ai-engine/env/lib/python3.11/site-packages/google/protobuf/proto.py	serializer      s     
	"	"	"	?	??    message_classpayloadc                 D     |             }|                     |           |S )zGiven a serialized data in binary form, deserialize it into a Message.

  Args:
    message_class: The message meta class.
    payload: A serialized bytes in binary form.

  Returns:
    A new message deserialized from payload.
  )ParseFromString)r   r   new_messages      r   parser   "   s)     +g&&&	r   outputc                     |                                  } t          j                    |j        |           |                    t	          |                     }||k    rt          d||fz            dS )a  Writes the size of the message as a varint and the serialized message.

  Writes the size of the message as a varint and then the serialized message.
  This allows more data to be written to the output after the message. Use
  parse_length_prefixed to parse messages written by this method.

  The output stream must be buffered, e.g. using
  https://docs.python.org/3/library/io.html#buffered-streams.

  Example usage:
    out = io.BytesIO()
    for msg in message_list:
      proto.serialize_length_prefixed(msg, out)

  Args:
    message: The protocol buffer message that should be serialized.
    output: BytesIO or custom buffered IO that data should be written to.
  z_Failed to write complete message (wrote: %d, expected: %d). Ensure output is using buffered IO.N)ByteSizer   _VarintEncoderwriter   	TypeError)r
   r   sizeout_sizes       r   serialize_length_prefixedr    1   s    & 
				$'6<...\\)G,,--(
	03;T2B	C   r   input_bytesc                    t          j        |          }|dS  |             }|dk    r|S |                    |                    |                    }||k    r.t	          d                    |||j        j                            |S )a  Parse a message from input_bytes.

  Args:
    message_class: The protocol buffer message class that parser should parse.
    input_bytes: A buffered input.

  Example usage:
    while True:
      msg = proto.parse_length_prefixed(message_class, input_bytes)
      if msg is None:
        break
      ...

  Returns:
    A parsed message if successful. None if input_bytes is at EOF.
  Nr   zdTruncated message or non-buffered input_bytes: Expected {0} bytes but only {1} bytes parsed for {2}.)r   _DecodeVarintr   read
ValueErrorformat
DESCRIPTORname)r   r!   r   r
   parsed_sizes        r   parse_length_prefixedr*   O   s    & 
	{	+	+$	\ 4MOO'	QYYN''(8(8(>(>??+D
	vdK);)@AA  
 
.r   )N)__doc__iotypingr   r   google.protobuf.internalr   r   google.protobuf.messager   r   boolbytesr   r   BytesIOr    r*    r   r   <module>r4      sB   3 2 				                 , , , , , , , , , , , , + + + + + +7:Y///@ @x @ @ @ @ @ @h % H    x      <%>%02
%% % % % % %r   