about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/deepdiff/base.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/deepdiff/base.py')
-rw-r--r--.venv/lib/python3.12/site-packages/deepdiff/base.py51
1 files changed, 51 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/deepdiff/base.py b/.venv/lib/python3.12/site-packages/deepdiff/base.py
new file mode 100644
index 00000000..d3b24fb8
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/deepdiff/base.py
@@ -0,0 +1,51 @@
+from typing import Any
+from deepdiff.helper import strings, numbers, SetOrdered
+
+
+DEFAULT_SIGNIFICANT_DIGITS_WHEN_IGNORE_NUMERIC_TYPES = 12
+TYPE_STABILIZATION_MSG = 'Unable to stabilize the Numpy array {} due to {}. Please set ignore_order=False.'
+
+
+class Base:
+    numbers = numbers
+    strings = strings
+
+    def get_significant_digits(self, significant_digits, ignore_numeric_type_changes):
+        if significant_digits is not None and significant_digits < 0:
+            raise ValueError(
+                "significant_digits must be None or a non-negative integer")
+        if significant_digits is None:
+            if ignore_numeric_type_changes:
+                significant_digits = DEFAULT_SIGNIFICANT_DIGITS_WHEN_IGNORE_NUMERIC_TYPES
+        return significant_digits
+
+    def get_ignore_types_in_groups(self, ignore_type_in_groups,
+                                   ignore_string_type_changes,
+                                   ignore_numeric_type_changes,
+                                   ignore_type_subclasses):
+        if ignore_type_in_groups:
+            if isinstance(ignore_type_in_groups[0], type):
+                ignore_type_in_groups = [ignore_type_in_groups]
+        else:
+            ignore_type_in_groups = []
+
+        result = []
+        for item_group in ignore_type_in_groups:
+            new_item_group = SetOrdered()
+            for item in item_group:
+                item = type(item) if item is None or not isinstance(item, type) else item
+                new_item_group.add(item)
+            result.append(new_item_group)
+        ignore_type_in_groups = result
+
+        if ignore_string_type_changes and self.strings not in ignore_type_in_groups:
+            ignore_type_in_groups.append(SetOrdered(self.strings))
+
+        if ignore_numeric_type_changes and self.numbers not in ignore_type_in_groups:
+            ignore_type_in_groups.append(SetOrdered(self.numbers))
+
+        if not ignore_type_subclasses:
+            # is_instance method needs tuples. When we look for subclasses, we need them to be tuples
+            ignore_type_in_groups = list(map(tuple, ignore_type_in_groups))
+
+        return ignore_type_in_groups