
    
3j              	           S SK Jr  S SKJrJr  S SKJr  S\S\S\4S jr	S r
S	\S
\S\\\4   4S jrSS\S	\S\4S jjrSS\S\S
\S\4S jjrg)    )Tuple)JSONSummaryNodeType)
json_dumpssmax_lenreturnc                 \    [        U 5      U::  a  U $ US::  a  U SU $ U SUS-
   S-   U SS -   $ )z
Truncate string s to max_len characters.
If possible, keep the first (max_len-5) characters, then '...' then the last 2 characters.
   N...)len)r   r   s     L/home/wildlama/miniconda3/lib/python3.13/site-packages/deepdiff/summarize.py	_truncater      sH    
 1v!|'{\gk?U"QrsV++    c                    [        U [        5      (       aX  Sn0 nU R                  5        H,  u  p4 [        U5      n[        U5      u  pgXV-   nX-  nXVU4X#'   M.     U[        R                  U44$ [        U [        5      (       aK  Sn/ nU  H-  nSn[        U5      u  pgXV-   nX-  nUR                  XVU45        M/     U[        R                  U44$ [        U [        5      (       a  [        U 5      n	Of[        U [        5      (       a  [        [        U 5      5      n	O<[        U [        5      (       a  [        [        [        U S5      5      5      n	OU c  Sn	OSn	U	[        R                  U 44$ ! [         a    Sn GN=f = f)Nr         )
isinstancedictitemsr   	TypeErrorcalculate_weightsr   listappendstrintfloatroundleaf)
nodeweightchildren_weightskvedge_weightchild_weightchild_structuretotal_weightnode_weights
             r   r   r      s   $JJLDA !!f ->a,@)L&5L"F#.o"N ! ,,.>???	D$		AK,=a,@)L&5L"F##[$PQ  ,,.>??? dC  d)Kc""c$i.Ke$$c%a.12K\KK_114888=    s   E))E98E9
max_weightbalance_thresholdc                 P   U u  p4U[         R                  L a  Un[        U5      u  pgXa::  a  XV4$ [        U[        5      (       a  [        XQ5      nU[        U5      4$ [        U[        [        45      (       a'  [	        U5      n	U	S U n
 [        U
5      [        U
5      4$ Uc  S US:  a  S4$ S4$  gU[         R                  L a  0 nSn[        UR                  5       S SS9nU HW  u  nu  pn[        X-  X-
  5      nUU::  a  M!  [        UU-
  5      n[        UUU5      u  nnUb  UXS U '   XU-   -  nX:  d  MW    O   U(       d  gX4$ U[         R                  L a  / nSn[        US SS9nU Hc  u  pn[        [        X-  X-
  5      5      n[        UUU5      u  nnUb  UR!                  U5        UU-  nXS-
  :  d  MR  UR!                  S5          O   U(       d  gUU4$ g! [         a9     [        U
5      [        U
5      4s $ ! [         a    U
[        U
5      4s s $ f = ff = f)	Nr   r   c                 $    U S   S   U S   S   -   $ )Nr   r    xs    r   <lambda>&shrink_tree_balanced.<locals>.<lambda>[   s    !A$q'AaDQRGBSr   T)keyreverse)Nr   c                     U S   U S   -   $ )Nr   r   r/   r0   s    r   r2   r3   r   s    !A$1+r   r   )r   r    r   r   r   r   r   r   r   	Exceptionr   sortedr   minshrink_tree_balancedr   r   )node_structurer+   r,   	node_type	node_info
leaf_valueleaf_weight_truncated_valueleaf_strtruncated_strshrunk_dictr)   sorted_childrenr$   edge_wchild_structallowed_branch_weightremaining_weightshrunk_childshrunk_weightshrunk_lists                         r   r:   r:   ?   s   )IO(((
*:6$***c**"+J"C&O(<<<Je55z? (* 5A}-s=/AAA #*/Q88q88 $T O 
o**	* !28S]ab,;(A(<$'
(F
Ha$b!$."#86#AB*>|M]_p*q'L-'*6gvJ' 66) -< ((	o**	* 0EtT'6#F|$'J,JJLe(f$g!*>|Mbdu*v'L-'""<0-A~-""5) (7 L((_ ! AA$]3S5GGG$ A,c-.@@@AAs0   G" "
H%-HH%H!H% H!!H%	json_datac                 J    [        U 5      u  p4X1::  a  U $ [        XAU5      u  pVU$ N)r   r:   )rM   r+   r,   r)   tree_structureshrunk_treer@   s          r   "greedy_tree_summarization_balancedrR      s0    #4Y#? L!).FWXNKr   data
max_lengthc                 d     [        [        XU5      5      $ ! [         a    [        U 5      s $ f = frO   )r   rR   r7   r   )rS   rT   r,   s      r   	summarizerV      s:    .tARS
 	
  4ys    //N)333333?)   rW   )typingr   deepdiff.helperr   r   deepdiff.serializationr   r   r   r   r   r   r:   rR   rV   r/   r   r   <module>r\      s     1 -	, 	,s 	,s 	,%9V@S @U @W\]ach]hWi @F$ C cg D S  c r   