
    k?1i                         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 ddl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      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)CallableDictIterableListTypeVarUnion   )T_num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         e/home/www/therecruiter.miabetepe.com/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.R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)   r/   r   r"   groupbyr   )r   r+   r   r,   r   get_0get_1r   cluster_tuplesgroupedkvr1   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
   _typingr   r   intr)   r*   boolr=        r   <module>rF      s     $  A A T%[ U 4U;L (1huo 1% 1DPSDT 1 CL !	5Q5(HaS%Z0015 5 	5
 
$q']5rE   