o
    xi                  
   @  s   d dl mZ d dlmZ ddlmZmZmZm	Z	m
Z
 ejjeejjeejjeejje
ejje	iZdd e D ZG dd dZd	S )
    )annotations)wandb_internal_pb2   )AuthenticationError	CommErrorErrorUnsupportedError
UsageErrorc                 C  s   i | ]\}}||qS  r
   ).0kvr
   r
   E/home/ubuntu/.local/lib/python3.10/site-packages/wandb/errors/util.py
<dictcomp>   s    r   c                   @  s,   e Zd ZdZedddZedd
dZdS )ProtobufErrorHandlerz6Converts protobuf errors to exceptions and vice versa.errorpb.ErrorInforeturnError | Nonec                 C  s0   |   sdS | jtv rt| j | jS t| jS )zConvert a protobuf error to an exception.

        Args:
            error: The protobuf error to convert.

        Returns:
            The corresponding exception.

        N)SerializeToStringcodeto_exception_mapmessager   )r   r
   r
   r   to_exception   s
   

z!ProtobufErrorHandler.to_exceptionexcr   c                 C  sL   t |ts	tdd}t|jD ]}|tv rt| } nqtj|t|dS )zConvert an wandb error to a protobuf error message.

        Args:
            exc: The exception to convert.

        Returns:
            The corresponding protobuf error message.
        z,exc must be a subclass of wandb.errors.ErrorN)r   r   )	
isinstancer   	TypeErrortype__mro__from_exception_mappb	ErrorInfostr)clsr   r   subclassr
   r
   r   from_exception'   s   

z#ProtobufErrorHandler.from_exceptionN)r   r   r   r   )r   r   r   r   )__name__
__module____qualname____doc__staticmethodr   classmethodr%   r
   r
   r
   r   r      s    r   N)
__future__r   wandb.protor   r     r   r   r   r   r	   r!   UNKNOWNCOMMUNICATIONAUTHENTICATIONUSAGEUNSUPPORTEDr   itemsr   r   r
   r
   r
   r   <module>   s    