+
    iE                     l    ^ RI t ^ RIHt ]! R. R
O4      t ! R R]4      tR tR tR t ! R R	4      tR# )    N)
namedtupleServiceContextc                       ] tR t^tRtRtR# )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____firstlineno____doc____static_attributes__r       -/usr/lib/python3/dist-packages/boto3/utils.pyr   r      s    & 	r   c                F    \        V 4       \        P                  V ,          # )zAImport module given a name.

Does not support relative imports.

)
__import__sysmodules)names   &r   import_moduler   2   s     t;;tr   c                    a a VoV V3R  lpV# )c                     < SP                  R ^4      w  r\        V4      pV P                  S4       \        W4      ! R/ V B # ).r   )rsplitr   updategetattr)kwargsmodulefunction_name	full_nameparent_kwargss   ,  r   _handlerlazy_call.<locals>._handler?   sA     ) 0 0a 8v&m$v-777r   r   )r   r   r    r   s   f, @r   	lazy_callr"   <   s    M8 Or   c                 8    W9   d   \        R V R24      hW V&   R# )zCannot inject class attribute "z*", attribute already exists in class dict.N)RuntimeError)class_attributesr   values   &&&r   inject_attributer'   H   s0    -dV 4, -
 	

 "'r   c                   0   a  ] tR t^Rt o RtR tR tRtV tR# )LazyLoadedWaiterModela\  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                *    Wn         W n        W0n        R # N)_session_service_name_api_version)self
bc_sessionservice_nameapi_versions   &&&&r   __init__LazyLoadedWaiterModel.__init__\   s    ")'r   c                    V P                   P                  V P                  V P                  4      P	                  V4      # r+   )r,   get_waiter_modelr-   r.   
get_waiter)r/   waiter_names   &&r   r7    LazyLoadedWaiterModel.get_waitera   s4    }}-- 1 1

*[
!	"r   )r.   r-   r,   N)	r   r   r	   r
   r   r3   r7   r   __classdictcell__)__classdict__s   @r   r)   r)   R   s     (
" "r   r)   )r1   service_modelservice_waiter_modelresource_json_definitions)	r   collectionsr   _ServiceContextr   r   r"   r'   r)   r   r   r   <module>rA      sD     "	_ 	.	'" "r   