about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/boto3/utils.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/boto3/utils.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/boto3/utils.py')
-rw-r--r--.venv/lib/python3.12/site-packages/boto3/utils.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/boto3/utils.py b/.venv/lib/python3.12/site-packages/boto3/utils.py
new file mode 100644
index 00000000..27561adc
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/boto3/utils.py
@@ -0,0 +1,100 @@
+# Copyright 2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"). You
+# may not use this file except in compliance with the License. A copy of
+# the License is located at
+#
+# https://aws.amazon.com/apache2.0/
+#
+# or in the "license" file accompanying this file. This file is
+# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
+# ANY KIND, either express or implied. See the License for the specific
+# language governing permissions and limitations under the License.
+import sys
+from collections import namedtuple
+
+_ServiceContext = namedtuple(
+    'ServiceContext',
+    [
+        'service_name',
+        'service_model',
+        'service_waiter_model',
+        'resource_json_definitions',
+    ],
+)
+
+
+class ServiceContext(_ServiceContext):
+    """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".
+    """
+
+    pass
+
+
+def import_module(name):
+    """Import module given a name.
+
+    Does not support relative imports.
+
+    """
+    __import__(name)
+    return sys.modules[name]
+
+
+def lazy_call(full_name, **kwargs):
+    parent_kwargs = kwargs
+
+    def _handler(**kwargs):
+        module, function_name = full_name.rsplit('.', 1)
+        module = import_module(module)
+        kwargs.update(parent_kwargs)
+        return getattr(module, function_name)(**kwargs)
+
+    return _handler
+
+
+def inject_attribute(class_attributes, name, value):
+    if name in class_attributes:
+        raise RuntimeError(
+            f'Cannot inject class attribute "{name}", attribute '
+            f'already exists in class dict.'
+        )
+    else:
+        class_attributes[name] = value
+
+
+class LazyLoadedWaiterModel:
+    """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.
+    """
+
+    def __init__(self, bc_session, service_name, api_version):
+        self._session = bc_session
+        self._service_name = service_name
+        self._api_version = api_version
+
+    def get_waiter(self, waiter_name):
+        return self._session.get_waiter_model(
+            self._service_name, self._api_version
+        ).get_waiter(waiter_name)