Ë
    ùmxi°  ã                   ó   — d Z ddlZddlZddlmZ ddlZddlmZ ddlmZ  G d„ d ej                  dd	«      ej                  «      Zd
„ Zd„ ZddgZej                  d   dk\  r+ej                  d   dk\  rddlmZ ej'                  d«       yyy)z;Reference implementation for status mapping in gRPC Python.é    N)Ú
status_pb2é   )ÚGRPC_DETAILS_METADATA_KEY)Úcode_to_grpc_status_codec                   ó   — e Zd Zy)Ú_StatusN)Ú__name__Ú
__module__Ú__qualname__© ó    úM/home/htdocs/ttos/venv/lib/python3.12/site-packages/grpc_status/rpc_status.pyr   r      s   „ ð 	r   r   ©ÚcodeÚdetailsÚtrailing_metadatac                 óö  — | j                  «       €y| j                  «       D ]Õ  \  }}|t        k(  sŒt        j                  j	                  |«      }| j                  «       j                  d   |j
                  k7  r3t        dt        |j
                  «      ›d| j                  «       ›d�«      ‚| j                  «       |j                  k7  r*t        d|j                  ›d| j                  «       ›d�«      ‚|c S  y)a¡  Returns a google.rpc.status.Status message corresponding to a given grpc.Call.

    This is an EXPERIMENTAL API.

    Args:
      call: A grpc.Call instance.

    Returns:
      A google.rpc.status.Status message representing the status of the RPC.

    Raises:
      ValueError: If the gRPC call's code or details are inconsistent with the
        status code and message inside of the google.rpc.status.Status.
    Nr   zCode in Status proto (z) doesn't match status code (ú)zMessage in Status proto (z ) doesn't match status details ()r   r   r   ÚStatusÚ
FromStringr   ÚvalueÚ
ValueErrorr   r   Úmessage)ÚcallÚkeyr   Úrich_statuss       r   Ú	from_callr   !   sà   € ð ×ÑÓÐ'ØØ×,Ñ,Ó.ò ‰
ˆˆUØÔ+Ó+Ü$×+Ñ+×6Ñ6°uÓ=ˆKØ�y‰y‹{× Ñ  Ñ# {×'7Ñ'7Ò7Ý ä/°×0@Ñ0@ÕAÀ4Ç9Á9Å;ðPóð ð �|‰|‹~ ×!4Ñ!4Ò4Ý à*×2Ó2°D·L±LµNðDóð ð Òðð r   c                 ó‚   — t        t        | j                  «      | j                  t        | j                  «       ff¬«      S )ad  Convert a google.rpc.status.Status message to grpc.Status.

    This is an EXPERIMENTAL API.

    Args:
      status: a google.rpc.status.Status message representing the non-OK status
        to terminate the RPC with and communicate it to the client.

    Returns:
      A grpc.Status instance representing the input google.rpc.status.Status message.
    r   )r   r   r   r   r   ÚSerializeToString)Ústatuss    r   Ú	to_statusr!   C   s:   € ô Ü% f§k¡kÓ2Ø—‘ä&¨×(@Ñ(@Ó(BÐCð
ôð r   r   r!   é   é   )Ú_asyncÚaio)Ú__doc__ÚcollectionsÚsysÚ
google.rpcr   ÚgrpcÚ_commonr   r   Ú
namedtupler   r   r   r!   Ú__all__Úversion_infoÚ r$   r%   Úappendr   r   r   ú<module>r1      s™   ðñ Bã Û 
å !Û å .Ý -ô	Ø€K×Ñ˜9Ð&NÓOØ‡K�Kô	òòDð, Øð€ð
 ×Ñ�AÑ˜!Ò × 0Ñ 0°Ñ 3°qÒ 8Ýà‡N�N�5Õð !9Ðr   