
    SAi7                        S SK r S SKJr  S SKJr  S SKJrJrJrJ	r	J
r
JrJrJr  SSKJrJr  SS\
\   S\S	\
\
\      4S
 jjrS\	\   S\S	\\\4   4S jr\" S\\\S4   5      r SS\
\   S\\\\/\4   4   S\S\S	\
\
\      4
S jjrg)    N)Hashable)
itemgetter)AnyCallableDictIterableListTupleTypeVarUnion   )T_numT_objxs	tolerancereturnc                    US:X  a  [        U 5       Vs/ s H  o"/PM     sn$ [        U 5      S:  a  [        U 5       Vs/ s H  o"/PM     sn$ / n[        [        U 5      5      n U S   /nU S   nU SS   H3  nX%U-   ::  a  UR                  U5        OUR                  U5        U/nUnM5     UR                  U5        U$ s  snf s  snf )Nr   r      )sortedlenlistappend)r   r   xgroupscurrent_grouplasts         W/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pdfplumber/utils/clustering.pycluster_listr   	   s    A~#BZ(ZZ((
2w{#BZ(ZZ((F	fRj	BUGMa5DV	!"  #MM-(CM  MM- M )(s
   B>Cvaluesc           
          [        [        [        U 5      5      U5      n[        U5       VVVs/ s H  u  p4U Vs/ s H  oUU4PM     snPM     nnnn[	        [
        R                  " U6 5      $ s  snf s  snnnf N)r   r   set	enumeratedict	itertoolschain)r   r   clustersivalue_clustervalnested_tupless          r   make_cluster_dictr,      sq    DV-y9H ENhDWDW0@]+]cq]+DW   	/00 	,s   A3A.A3.A3Clusterable.key_fnpreserve_orderc           
        ^^ [        T5      (       d  [        T5      m[        TU 5      n[        XB5      m[        S5      [        S5      peU(       a)  U  Vs/ s H  owTR	                  T" U5      5      4PM     nnO[        UU4S jU  5       US9n[        R                  " XS9n	U	 V
Vs/ s H  u  p[        [        X[5      5      PM     snn
$ s  snf s  snn
f )Nr   r   c              3   T   >#    U  H  oTR                  T" U5      5      4v   M     g 7fr!   )get).0r   cluster_dictr.   s     r   	<genexpr>"cluster_objects.<locals>.<genexpr>=   s#     :r!!!&),-rs   %()key)	callabler   mapr,   r2   r   r%   groupbyr   )r   r.   r   r/   r   get_0get_1r   cluster_tuplesgroupedkvr4   s    `          @r   cluster_objectsrA   *   s     FF#_F$V7La=*Q-5DFGBql..vay9:BG:r:
 :G,34GDADUG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-   boolrA        r   <module>rJ      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
 
${
5rI   