
    Rǻi                     $    d dl mZ  G d d      Zy)    )Anyc            
       8    e Zd ZddZed	dedededefd       Zy)
ObjectComparerreturnNc                      y )N )selfs    Y/opt/lhia/marcimex/agent/venv/lib/python3.12/site-packages/json_repair/object_comparer.py__init__zObjectComparer.__init__   s        obj1obj2pathc           	         t        |       t        |      uryt        | t              rt        |t              rtt        | j	                               t        |j	                               }}||z  }||z
  }||z
  }|ry|ry|D ]'  }t
        j                  | |   ||   | d|       r' y yt        | t              rt        |t              rt        t        |       t        |            }	t        |       t        |      k7  ryt        |	      D ](  }
t
        j                  | |
   ||
   | d|
 d      r( y t        |       t        |      kD  ryt        |      t        |       kD  ryy)z
        Recursively compares two objects and ensures that:
        - Their types match
        - Their keys/structure match
        F/)r   []T)type
isinstancedictsetkeysr   is_same_objectlistminlenrange)r   r   r   keys1keys2common_keysextra_keys1extra_keys2key
min_lengthis              r
   r   zObjectComparer.is_same_object   se    :T$Z'dD!jt&<tyy{+S-=5E%-K%-K%-K # !%44ItCy$q 5  !	!. # d#
4(>SYD	2J4yCI%:& !%44GT!WdV1QCq> 5  !	! 4y3t9$TSY&r   )r   N) )	__name__
__module____qualname__r   staticmethodr   strboolr   r   r   r
   r   r      s7     .S . .3 . . .r   r   N)typingr   r   r   r   r
   <module>r.      s    3 3r   