# Python : DeepDiff \[ [pypi](https://pypi.org/project/deepdiff/) | [src](https://github.com/seperman/deepdiff/) | [docs](https://zepworks.com/deepdiff/current/) ] ```python from deepdiff import DeepDiff # deep diff of two things from deepdiff import grep, DeepSearch # finding items in an object from deepdiff import DeepHash # hashing objects based on contents from deepdiff import Delta # creating re-useable deltas from deepdiff import extract # extracting a path from an object from deepdiff.operator import BaseOperator ``` #### DeepDiff ```python DeepDiff( dict1, dict2 ) # if match, returns {} diff.to_dict() diff.to_json() ### Custom Operators class AbortAfterFirstDiff( BaseOperator ): def match( self, level ): return True def give_up_diffing( self, level, diff_instance ): return any( diff_instance.tree.values() ) DeepDiff( t1, t2, custom_operators=[ AbortAfterFirstDiff() ] ) ``` ###### Diff Example ``` { 'values_changed' : { "root[ 'metadata' ][ 'annotations' ][ 'run.googleapis.com/operation-id' ]": { 'new_value' : '040374e2-bbbe-421d-b683-784ffc46443e' 'old_value' : '7f7481f2-e750-4f7d-adfc-23016fefefd4' } "root[ 'metadata' ][ 'generation' ]": { 'new_value' : 29 'old_value' : 28 } } } ``` TODO #### DeepSearch TODO #### DeepHash ```python hash = DeepHash( obj )[ obj ] ``` TODO #### Delta TODO #### Extract TODO #### CLI ```bash $ deep --help ``` TODO