
    @ j                     8   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dS )    N)Hashable)
itemgetter)CallableDictIterableListTypeVarUnion   )T_numxs	tolerancereturnc                    |dk    rd t          |           D             S t          |           dk     rd t          |           D             S g }t          t          |                     } | d         g}| d         }| dd          D ];}|||z   k    r|                    |           n|                    |           |g}|}<|                    |           |S )Nr   c                     g | ]}|gS  r   .0xs     oC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pdfplumber/utils/clustering.py
<listcomp>z cluster_list.<locals>.<listcomp>       ((((((    r   c                     g | ]}|gS r   r   r   s     r   r   z cluster_list.<locals>.<listcomp>   r   r      )sortedlenlistappend)r   r   groupscurrent_grouplastr   s         r   cluster_listr#   	   s    A~ )((VBZZ((((
2ww{ )((VBZZ((((F	fRjj		BUGMa5DV  	!" 	   ####MM-(((CM
MM-   Mr   valuesc                     t          t          t          |                     |          }d t          |          D             }t	          t          j        |           S )Nc                 2    g | ]\  }fd |D             S )c                     g | ]}|fS r   r   )r   valis     r   r   z0make_cluster_dict.<locals>.<listcomp>.<listcomp>!   s    +++c#q+++r   r   )r   value_clusterr)   s     @r   r   z%make_cluster_dict.<locals>.<listcomp>    s?       0@=++++]+++  r   )r#   r   set	enumeratedict	itertoolschain)r$   r   clustersnested_tupless       r   make_cluster_dictr2      s\    DV--y99H DMhDWDW  M 	/000r   RFkey_fnpreserve_orderc                 j  	 t                    st                    t          |           }t          ||          t          d          t          d          c	}|rfd| D             }nt	          fd| D             |          }t          j        ||          }	fd|D             S )Nr   r   c                 P    g | ]"}|                      |                    f#S r   getr   r   cluster_dictr4   s     r   r   z#cluster_objects.<locals>.<listcomp>:   s4    GGGq1l..vvayy99:GGGr   c              3   X   K   | ]$}|                      |                    fV  %d S )Nr8   r:   s     r   	<genexpr>z"cluster_objects.<locals>.<genexpr>=   s>      ::!a!!&&)),,-::::::r   )keyc                 P    g | ]"\  }}t          t          |                    #S r   )r   map)r   kvget_0s      r   r   z#cluster_objects.<locals>.<listcomp>B   s-    444DAqDUA444r   )callabler   r@   r2   r   r.   groupby)
r   r4   r   r5   r$   get_1cluster_tuplesgroupedr;   rC   s
    `      @@r   cluster_objectsrI   *   s     F $F##__F$VY77La==*Q--LE5 
GGGGGBGGG:::::r:::
 
 
 E:::G4444G4444r   )r   )F)r.   collections.abcr   operatorr   typingr   r   r   r   r	   r
   _typingr   r#   intr2   r3   boolrI   r   r   r   <module>rP      so       $ $ $ $ $ $       A A A A A A A A A A A A A A A A       T%[ U 4U;L    (1huo 1% 1DPSDT 1 1 1 1 GCLL !	5 5Q5(HaS%Z0015 5 	5
 
$q']5 5 5 5 5 5r   