about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/azure/core/_enum_meta.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/azure/core/_enum_meta.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/core/_enum_meta.py')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/core/_enum_meta.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/core/_enum_meta.py b/.venv/lib/python3.12/site-packages/azure/core/_enum_meta.py
new file mode 100644
index 00000000..d4c9da02
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/core/_enum_meta.py
@@ -0,0 +1,66 @@
+# --------------------------------------------------------------------------
+#
+# Copyright (c) Microsoft Corporation. All rights reserved.
+#
+# The MIT License (MIT)
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the ""Software""), to
+# deal in the Software without restriction, including without limitation the
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+# sell copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+# --------------------------------------------------------------------------
+from typing import Any
+from enum import EnumMeta, Enum
+
+
+class CaseInsensitiveEnumMeta(EnumMeta):
+    """Enum metaclass to allow for interoperability with case-insensitive strings.
+
+    Consuming this metaclass in an SDK should be done in the following manner:
+
+    .. code-block:: python
+
+        from enum import Enum
+        from azure.core import CaseInsensitiveEnumMeta
+
+        class MyCustomEnum(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+            FOO = 'foo'
+            BAR = 'bar'
+
+    """
+
+    def __getitem__(cls, name: str) -> Any:
+        # disabling pylint bc of pylint bug https://github.com/PyCQA/astroid/issues/713
+        return super(CaseInsensitiveEnumMeta, cls).__getitem__(name.upper())
+
+    def __getattr__(cls, name: str) -> Enum:
+        """Return the enum member matching `name`.
+
+        We use __getattr__ instead of descriptors or inserting into the enum
+        class' __dict__ in order to support `name` and `value` being both
+        properties for enum members (which live in the class' __dict__) and
+        enum members themselves.
+
+        :param str name: The name of the enum member to retrieve.
+        :rtype: ~azure.core.CaseInsensitiveEnumMeta
+        :return: The enum member matching `name`.
+        :raises AttributeError: If `name` is not a valid enum member.
+        """
+        try:
+            return cls._member_map_[name.upper()]
+        except KeyError as err:
+            raise AttributeError(name) from err