o
    Hh%                     @   s   d Z ddl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ddd	Zd d
ededefddZdee dedefddZd
edejddfddZdee dejdefddZd
e
defddZd
e
ddfddZd
e
deddfddZdS )!z,Contains the Nextgen Pythonic protobuf APIs.    N)TextTypeTypeVar)decoder)encoder)Message_MESSAGEr   )boundmessagedeterministicreturnc                 C   s   | j |d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    r   V/var/www/html/Persson_Maskin/env/lib/python3.10/site-packages/google/protobuf/proto.py	serialize   s   r   message_classpayloadc                 C   s   |  }| | |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_messager   r   r   parse"   s   

r   outputc                 C   sB   |   }t |j| |t| }||krtd||f 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_sizer   r   r   serialize_length_prefixed1   s   r   input_bytesc                 C   sZ   t |}|du r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_sizer   r   r   parse_length_prefixedO   s   
r&   c                 C   s   |   S )zReturns the serialized size of this message.

  Args:
    message: A proto message.

  Returns:
    int: The number of bytes required to serialize this message.
  )r   r
   r   r   r   	byte_sizew   s   	r(   c                 C   s   |    dS )zfClears all data that was set in the message.

  Args:
    message: The proto message to be cleared.
  N)Clearr'   r   r   r   clear_message   s   r*   
field_namec                 C   s   |  | dS )ah  Clears the contents of a given field.

  Inside a oneof group, clears the field set. If the name neither refers to a
  defined field or oneof group, :exc:`ValueError` is raised.

  Args:
    message: The proto message.
    field_name (str): The name of the field to be cleared.

  Raises:
    ValueError: if the `field_name` is not a member of this message.
  N)
ClearField)r
   r+   r   r   r   clear_field   s   r-   )N)__doc__iotypingr   r   r   google.protobuf.internalr   r   google.protobuf.messager   r   boolbytesr   r   BytesIOr   r&   intr(   r*   r-   r   r   r   r   <module>   s(   
(	