aboutsummaryrefslogtreecommitdiff
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 hereHEADmaster
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