+
     Ii  c                   sj    ^ RI Ht ^ RIHt ]! R. R
O4      t ! R R]4      tR tR t ! R R4      tR	# )i    )
namedtuple)import_moduleServiceContextc                   s    ] 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       0/usr/lib/python3.14/site-packages/boto3/utils.pyr   r      s    & 	r
   c                 s   a a VoV V3R  lpV# )c                  s   < SP                  R ^4      w  r\        V4      pV P                  S4       \        W4      ! R/ V B # )Z.r   )Zrsplitr   ZupdateZgetattr)kwargsZmoduleZfunction_name	full_nameparent_kwargss   ,  r   _handlerZlazy_call.<locals>._handler5   sA     ) 0 0a 8v&m$v-777r
   r   )r   r   r   r   s   f, @r   	lazy_callr   2   s    M8 Or
   c                 s8    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)ZRuntimeError)Zclass_attributesZnameZvalues   &&&r   inject_attributer   >   s0    -dV 4, -
 	

 "'r
   c                   s0   a  ] tR t^Ht 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                s*    Wn         W n        W0n        R # N)_session_service_name_api_version)selfZ
bc_sessionservice_nameZapi_versions   &&&&r   __init__ZLazyLoadedWaiterModel.__init__R   s    ")'r
   c                s    V P                   P                  V P                  V P                  4      P	                  V4      # r   )r   Zget_waiter_modelr   r   
get_waiter)r   Zwaiter_names   &&r   r   Z LazyLoadedWaiterModel.get_waiterW   s4    }}-- 1 1

*[
!	"r
   )r   r   r   N)	r   r   r   r   r   r   r   r	   Z__classdictcell__)Z__classdict__s   @r   r   r   H   s     (
" "r
   r   N)r   Zservice_modelZservice_waiter_modelZresource_json_definitions)	Zcollectionsr    Z	importlibr   Z_ServiceContextr   r   r   r   r   r
   r   <module>r      s?    # #	_ 	.	'" "r
   