aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/docx/opc/shared.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/docx/opc/shared.py')
-rw-r--r--.venv/lib/python3.12/site-packages/docx/opc/shared.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/docx/opc/shared.py b/.venv/lib/python3.12/site-packages/docx/opc/shared.py
new file mode 100644
index 00000000..9d4c0a6d
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/docx/opc/shared.py
@@ -0,0 +1,31 @@
+"""Objects shared by opc modules."""
+
+from __future__ import annotations
+
+from typing import Any, Dict, TypeVar
+
+_T = TypeVar("_T")
+
+
+class CaseInsensitiveDict(Dict[str, Any]):
+ """Mapping type that behaves like dict except that it matches without respect to the
+ case of the key.
+
+ E.g. cid['A'] == cid['a']. Note this is not general-purpose, just complete enough to
+ satisfy opc package needs. It assumes str keys, and that it is created empty; keys
+ passed in constructor are not accounted for
+ """
+
+ def __contains__(self, key):
+ return super(CaseInsensitiveDict, self).__contains__(key.lower())
+
+ def __getitem__(self, key):
+ return super(CaseInsensitiveDict, self).__getitem__(key.lower())
+
+ def __setitem__(self, key, value):
+ return super(CaseInsensitiveDict, self).__setitem__(key.lower(), value)
+
+
+def cls_method_fn(cls: type, method_name: str):
+ """Return method of `cls` having `method_name`."""
+ return getattr(cls, method_name)