
     h                     D    d dl mZ d dlmZ  G d d      Z G d d      Zy)    )ClientError)get_service_module_namec                   "    e Zd ZeZd Zd Zd Zy)BaseClientExceptionsc                     || _         y)a  Base class for exceptions object on a client

        :type code_to_exception: dict
        :param code_to_exception: Mapping of error codes (strings) to exception
            class that should be raised when encountering a particular
            error code.
        N)_code_to_exception)selfcode_to_exceptions     q/home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/botocore/errorfactory.py__init__zBaseClientExceptions.__init__   s     #4    c                 N    | j                   j                  || j                        S )aN  Retrieves the error class based on the error code

        This is helpful for identifying the exception class needing to be
        caught based on the ClientError.parsed_reponse['Error']['Code'] value

        :type error_code: string
        :param error_code: The error code associated to a ClientError exception

        :rtype: ClientError or a subclass of ClientError
        :returns: The appropriate modeled exception class for that error
            code. If the error code does not match any of the known
            modeled exceptions then return a generic ClientError.
        )r   getr   )r	   
error_codes     r   	from_codezBaseClientExceptions.from_code   s#     &&**:t7G7GHHr   c           	          | j                   j                         D cg c]  }|j                   }}t        |  d| ddj	                  |             c c}w )Nz object has no attribute z. Valid exceptions are: z, )r   values__name__AttributeErrorjoin)r	   nameexception_clsexception_cls_namess       r   __getattr__z BaseClientExceptions.__getattr__.   sr     "&!8!8!?!?!A
 ""
 
 v.tf 5&&*ii0C&D%EG
 	
	
s   AN)r   
__module____qualname__r   r   r   r    r   r   r   r      s    K4I 
r   r   c                       e Zd Zd Zd Zd Zy)ClientExceptionsFactoryc                     i | _         y )N)_client_exceptions_cache)r	   s    r   r   z ClientExceptionsFactory.__init__:   s
    (*%r   c                     |j                   }|| j                  vr | j                  |      }|| j                  |<   | j                  |   S )a  Creates a ClientExceptions object for the particular service client

        :type service_model: botocore.model.ServiceModel
        :param service_model: The service model for the client

        :rtype: object that subclasses from BaseClientExceptions
        :returns: The exceptions object of a client that can be used
            to grab the various different modeled exceptions.
        )service_namer!   _create_client_exceptions)r	   service_modelr#   client_exceptionss       r   create_client_exceptionsz0ClientExceptionsFactory.create_client_exceptions=   sO     %11t<<< $ > >} M:KD)),7,,\::r   c                    i }i }|j                   D ]H  }t        |j                        }t        |t        fi       }|||<   t        |j
                        }|||<   J t        t        |      dz         }t        |t        f|      }	 |	|      S )N
Exceptions)error_shapesstrr   typer   r   r   r   )
r	   r%   	cls_propsr
   error_shapeexception_namer   codecls_nameclient_exceptions_clss
             r   r$   z1ClientExceptionsFactory._create_client_exceptionsM   s    	(55 	4K !1!12N +DM(5In%{--.D&3d#	4 .}=LM $+-y!
 %%677r   N)r   r   r   r   r'   r$   r   r   r   r   r   9   s    +; 8r   r   N)botocore.exceptionsr   botocore.utilsr   r   r   r   r   r   <module>r5      s"    , 2%
 %
P!8 !8r   