
    ;3h7                        d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZ ddlmZmZ dde
e   ded	e
e
e      fd
Zde	e   ded	eeef   fdZ edeeedf         Z	 dde
e   deeeegef   f   deded	e
e
e      f
dZy)    N)Hashable)
itemgetter)AnyCallableDictIterableListTupleTypeVarUnion   )T_numT_objxs	tolerancereturnc                    |dk(  rt        |       D cg c]  }|g c}S t        |       dk  rt        |       D cg c]  }|g c}S g }t        t        |             } | d   g}| d   }| dd  D ]2  }|||z   k  r|j                  |       n|j                  |       |g}|}4 |j                  |       |S c c}w c c}w )Nr   r      )sortedlenlistappend)r   r   xgroupscurrent_grouplasts         [/var/www/html/audio-gradio/venv/lib/python3.12/site-packages/pdfplumber/utils/clustering.pycluster_listr   	   s    A~#BZ(((
2w{#BZ(((F	fRj	BUGMa5DV 	!"  #MM-(CM MM- M )(s
   
B6
B;valuesc           
          t        t        t        |             |      }t        |      D cg c]  \  }}|D cg c]  }||f c} }}}}t	        t        j                  |       S c c}w c c}}}w N)r   r   set	enumeratedict	itertoolschain)r   r   clustersivalue_clustervalnested_tupless          r   make_cluster_dictr,      sr    DV-y9H ENhDW 0@=]+c#q+M  	/00 	,s   A.A)A.)A.Clusterable.key_fnpreserve_orderc           
         t              st              t        |       }t        ||      t        d      t        d      }}|r'| D cg c]  }|j	                   |            f }}nt        fd| D        |      }t        j                  ||      }	|	D 
cg c]  \  }
}t        t        ||             c}}
S c c}w c c}}
w )Nr   r   c              3   P   K   | ]  }|j                   |            f  y wr!   )get).0r   cluster_dictr.   s     r   	<genexpr>z"cluster_objects.<locals>.<genexpr>=   s%     :!a!!&),-:s   #&)key)	callabler   mapr,   r2   r   r%   groupbyr   )r   r.   r   r/   r   get_0get_1r   cluster_tuplesgroupedkvr4   s    `          @r   cluster_objectsr@   *   s     FF#_F$VY7La=*Q-5EDFGq1l..vay9:GG:r:
 E:G,34DAqDUA44 H 5s    C#C)r   )F)r%   collections.abcr   operatorr   typingr   r   r   r   r	   r
   r   r   _typingr   r   r   intr,   r-   boolr@        r   <module>rI      s     $  M M M "T%[ U 4U;L (1huo 1% 1DPSDT 1 mUE#s(O< !	5[5(Hk]E%9::;5 5 	5
 
${
5rH   