
    /JfE                     ~    d dl Z d dlmZ  edg d          Z G d de          Zd Zd Zd Z G d	 d
          ZdS )    N)
namedtupleServiceContext)service_nameservice_modelservice_waiter_modelresource_json_definitionsc                       e Zd ZdZdS )r   a   Provides important service-wide, read-only information about a service

    :type service_name: str
    :param service_name: The name of the service

    :type service_model: :py:class:`botocore.model.ServiceModel`
    :param service_model: The model of the service.

    :type service_waiter_model: :py:class:`botocore.waiter.WaiterModel` or
        a waiter model-like object such as
        :py:class:`boto3.utils.LazyLoadedWaiterModel`
    :param service_waiter_model: The waiter model of the service.

    :type resource_json_definitions: dict
    :param resource_json_definitions: The loaded json models of all resource
        shapes for a service. It is equivalient of loading a
        ``resource-1.json`` and retrieving the value at the key "resources".
    N)__name__
__module____qualname____doc__     N/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/boto3/utils.pyr   r      s         & 	Dr   c                 D    t          |            t          j        |          S )zIImport module given a name.

    Does not support relative imports.

    )
__import__sysmodules)names    r   import_moduler   2   s     t;tr   c                      | fd}|S )Nc                                           dd          \  }}t          |          }|                                 t          ||          di | S )N.   r   )rsplitr   updategetattr)kwargsmodulefunction_name	full_nameparent_kwargss      r   _handlerzlazy_call.<locals>._handler?   s\     ) 0 0a 8 8v&&m$$$-wv}--77777r   r   )r!   r   r#   r"   s   `  @r   	lazy_callr$   <   s.    M8 8 8 8 8 8 Or   c                 >    || v rt          d| d          || |<   d S )NzCannot inject class attribute "z*", attribute already exists in class dict.)RuntimeError)class_attributesr   values      r   inject_attributer)   H   sI    -d - - -
 
 	

 "'r   c                       e Zd ZdZd Zd ZdS )LazyLoadedWaiterModelat  A lazily loaded waiter model

    This does not load the service waiter model until an attempt is made
    to retrieve the waiter model for a specific waiter. This is helpful
    in docstring generation where we do not need to actually need to grab
    the waiter-2.json until it is accessed through a ``get_waiter`` call
    when the docstring is generated/accessed.
    c                 0    || _         || _        || _        d S N)_session_service_name_api_version)self
bc_sessionr   api_versions       r   __init__zLazyLoadedWaiterModel.__init__\   s    ")'r   c                 r    | j                             | j        | j                                      |          S r-   )r.   get_waiter_modelr/   r0   
get_waiter)r1   waiter_names     r   r7   z LazyLoadedWaiterModel.get_waitera   s4    }-- 1
 

*[
!
!	"r   N)r
   r   r   r   r4   r7   r   r   r   r+   r+   R   s<         ( ( (
" " " " "r   r+   )	r   collectionsr   _ServiceContextr   r   r$   r)   r+   r   r   r   <module>r;      s    


 " " " " " "*   	 	 	 	 	_ 	 	 	.  	 	 	' ' '" " " " " " " " " "r   