
    "i                     h    S SK Jr  S SKJr  \" S/ SQ5      r " S S\5      rS rS r " S S	5      rg
)    )
namedtuple)import_moduleServiceContext)service_nameservice_modelservice_waiter_modelresource_json_definitionsc                       \ rS rSrSrSrg)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       J/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/boto3/utils.pyr   r      s    & 	r   c                    ^ ^ UmU U4S jnU$ )Nc                     > TR                  SS5      u  p[        U5      nU R                  T5        [        X5      " S0 U D6$ )N.   r   )rsplitr   updategetattr)kwargsmodulefunction_name	full_nameparent_kwargss      r   _handlerlazy_call.<locals>._handler5   sA     ) 0 0a 8v&m$v-777r   r   )r   r   r!   r    s   `  @r   	lazy_callr#   2   s    M8 Or   c                 4    X;   a  [        SU S35      eX U'   g )NzCannot inject class attribute "z*", attribute already exists in class dict.)RuntimeError)class_attributesnamevalues      r   inject_attributer)   >   s0    -dV 4, -
 	

 "'r   c                   $    \ rS rSrSrS rS rSrg)LazyLoadedWaiterModelH   a\  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                 (    Xl         X l        X0l        g N)_session_service_name_api_version)self
bc_sessionr   api_versions       r   __init__LazyLoadedWaiterModel.__init__R   s    ")'r   c                     U R                   R                  U R                  U R                  5      R	                  U5      $ r.   )r/   get_waiter_modelr0   r1   
get_waiter)r2   waiter_names     r   r9    LazyLoadedWaiterModel.get_waiterW   s4    }}-- 1 1

*[
!	"r   )r1   r0   r/   N)r   r   r   r   r   r5   r9   r   r   r   r   r+   r+   H   s    (
"r   r+   N)	collectionsr   	importlibr   _ServiceContextr   r#   r)   r+   r   r   r   <module>r?      s?    # #	_ 	.	'" "r   