B 劇cE @s`ddlZddlmZedddddgZGdddeZd d Zd d Zd dZGdddZdS)N) namedtupleServiceContext service_nameZ service_modelZservice_waiter_modelZresource_json_definitionsc@seZdZdZdS)raProvides 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__r r f/private/var/folders/8c/hx9_v10d5x38qmnzt13b7b8j1k3n5b/T/pip-target-x6xd5gna/lib/python/boto3/utils.pyrscCst|tj|S)zIImport module given a name. Does not support relative imports. ) __import__sysmodules)namer r r import_module2src s|fdd}|S)Ncs2dd\}}t|}|t||f|S)N.)rsplitrupdategetattr)kwargsmoduleZ function_name) full_name parent_kwargsr r _handler?s zlazy_call.._handlerr )rrrr )rrr lazy_call<srcCs&||krtd|dn|||<dS)NzCannot inject class attribute "z*", attribute already exists in class dict.) RuntimeError)Zclass_attributesrvaluer r r inject_attributeHsrc@s eZdZdZddZddZdS)LazyLoadedWaiterModelatA 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. cCs||_||_||_dS)N)_session _service_name _api_version)selfZ bc_sessionr api_versionr r r __init__\szLazyLoadedWaiterModel.__init__cCs|j|j|j|S)N)rZget_waiter_modelr r! get_waiter)r"Z waiter_namer r r r%as z LazyLoadedWaiterModel.get_waiterN)rrrrr$r%r r r r rRsr) r collectionsrZ_ServiceContextrrrrrr r r r  s