Skip to content

Commit f86189e

Browse files
committed
updated docs
1 parent ef9228a commit f86189e

File tree

1 file changed

+12
-78
lines changed

1 file changed

+12
-78
lines changed

docs/custom.rst

+12-78
Original file line numberDiff line numberDiff line change
@@ -180,14 +180,16 @@ Define A Custom Operator
180180

181181
To define an custom operator, you just need to inherit *BaseOperator* or *BaseOperatorPlus*.
182182

183-
*BaseOperatorPlus* is our new base operator that can be subclassed and provides the structure to build any custom operator.
184-
*BaseOperator* is our older base operator that was designed mainly for simple string based regex comparison.
183+
- *BaseOperatorPlus* is our new base operator that can be subclassed and provides the structure to build any custom operator.
184+
- *BaseOperator* is our older base class for creating custom operators. It was designed mainly for simple string based regex comparison.
185+
185186

186187
Base Operator Plus
187-
------------------
188+
..................
188189

189190
*BaseOperatorPlus* is our new base operator that can be subclassed and provides the structure to build any custom operator.
190191

192+
.. code-block:: python
191193
192194
class BaseOperatorPlus(metaclass=ABCMeta):
193195
@@ -216,74 +218,8 @@ Base Operator Plus
216218
pass
217219
218220
219-
**Example 1: We don't care about the exact GUID values. As long as pairs of strings match GUID regex, we want them to be considered as equals
220-
>>> import re
221-
... from typing import Any
222-
... from deepdiff import DeepDiff
223-
... from deepdiff.operator import BaseOperatorPlus
224-
...
225-
...
226-
...
227-
... d1 = {
228-
... "Name": "SUB_OBJECT_FILES",
229-
... "Values": {
230-
... "Value": [
231-
... "{f254498b-b752-4f35-bef5-6f1844b61eb7}",
232-
... "{7fb2a550-1849-45c0-b273-9aa5e4eb9f2b}",
233-
... "{a9cbecc0-21dc-49ce-8b2c-d36352dae139}"
234-
... ]
235-
... }
236-
... }
237-
...
238-
... d2 = {
239-
... "Name": "SUB_OBJECT_FILES",
240-
... "Values": {
241-
... "Value": [
242-
... "{e5d18917-1a2c-4abe-b601-8ec002629953}",
243-
... "{ea71ba1f-1339-4fae-bc28-a9ce9b8a8c67}",
244-
... "{66bb6192-9cd2-4074-8be1-f2ac52877c70}",
245-
... ]
246-
... }
247-
... }
248-
...
249-
...
250-
...
251-
... class RemoveGUIDsOperator(BaseOperatorPlus):
252-
... _pattern = r"[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}"
253-
... _substitute = "guid"
254-
...
255-
... def match(self, level) -> bool:
256-
... return isinstance(level.t1, str) and isinstance(level.t2, str)
257-
...
258-
... @classmethod
259-
... def _remove_pattern(cls, t: str):
260-
... return re.sub(cls._pattern, cls._substitute, t)
261-
...
262-
... def give_up_diffing(self, level, diff_instance):
263-
... t1 = self._remove_pattern(level.t1)
264-
... t2 = self._remove_pattern(level.t2)
265-
... return t1 == t2
266-
...
267-
... def normalize_value_for_hashing(self, parent: Any, obj: Any) -> Any:
268-
... """
269-
... Used for ignore_order=True
270-
... """
271-
... if isinstance(obj, str):
272-
... return self._remove_pattern(obj)
273-
... return obj
274-
...
275-
...
276-
... operator = RemoveGUIDsOperator()
277-
...
278-
... diff1 = DeepDiff(d1, d2, custom_operators=[operator], log_stacktrace=True)
279-
... diff1
280-
...
281-
...
282-
... diff2 = DeepDiff(d1, d2, ignore_order=True, custom_operators=[operator], log_stacktrace=True)
283-
... diff2
284-
...
285-
...
286-
{}
221+
**Example 1: We don't care about the exact GUID values. As long as pairs of strings match GUID regex, we want them to be considered as equals**
222+
287223
>>> import re
288224
... from typing import Any
289225
... from deepdiff import DeepDiff
@@ -340,24 +276,22 @@ Base Operator Plus
340276
...
341277
... operator = RemoveGUIDsOperator()
342278
...
343-
... diff1 = DeepDiff(d1, d2, custom_operators=[operator], log_stacktrace=True)
279+
>>> diff1 = DeepDiff(d1, d2, custom_operators=[operator], log_stacktrace=True)
344280
... diff1
345-
...
346281
{}
347282
>>> diff2 = DeepDiff(d1, d2, ignore_order=True, custom_operators=[operator], log_stacktrace=True)
348283
... diff2
349-
...
350-
...
351284
{}
352285

353286

354287

355-
356288
Base Operator
357-
-------------
289+
.............
290+
291+
*BaseOperator* is our older base class for creating custom operators. It was designed mainly for simple string based regex comparison.
358292

359-
*BaseOperator* is our older base operator that was designed mainly for simple string based regex comparison.
360293

294+
.. code-block:: python
361295
362296
class BaseOperator:
363297

0 commit comments

Comments
 (0)