
    Ng                         d dl Z 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lmZmZ ddlmZmZmZ  G d	 d
e          ZdS )    N)StringIO)chain)AnyDictListOptionalSetTextIO   )utils)T_obj
T_obj_list)CSV_COLS_REQUIREDCSV_COLS_TO_PREPEND
Serializerc                      e Zd Zg dZedeee                  fd            Zede	e
ef         fd            Z	 ddeee
                  de	e
ef         fdZddeee
                  ddfd	Zedefd
            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Zedefd            Z	 	 	 	 	 	 d dee         deee
                  deee
                  deee
                  dee         dee         dee
         fdZ	 	 	 	 	 d!dee         deee
                  dee         deee
                  deee
                  dee
         fdZ dS )"	Container)_rect_edges_curve_edges_edges_objectsreturnc                     t           NNotImplementedErrorselfs    P/var/www/html/ai-engine/env/lib/python3.11/site-packages/pdfplumber/container.pypageszContainer.pages       !!    c                     t           r   r   r   s    r   objectszContainer.objects   r!   r"   Nobject_typesc                     t           r   r   )r   r%   s     r   to_dictzContainer.to_dict   s
     "!r"   
propertiesc                 f    || j         n|}|D ]"}t          | |          rt          | |           #d S r   )cached_propertieshasattrdelattr)r   r(   propsps       r   flush_cachezContainer.flush_cache   sP    *4*<&&* 	! 	!AtQ !a   	! 	!r"   c                 8    | j                             dg           S )Nrectr$   getr   s    r   rectszContainer.rects"       |+++r"   c                 8    | j                             dg           S )Nliner2   r   s    r   lineszContainer.lines&   r5   r"   c                 8    | j                             dg           S )Ncurver2   r   s    r   curveszContainer.curves*       |,,,r"   c                 8    | j                             dg           S )Nimager2   r   s    r   imageszContainer.images.   r<   r"   c                 8    | j                             dg           S )Ncharr2   r   s    r   charszContainer.chars2   r5   r"   c                 8    | j                             dg           S )Ntextboxverticalr2   r   s    r   textboxverticalszContainer.textboxverticals6   s    | 12666r"   c                 8    | j                             dg           S )Ntextboxhorizontalr2   r   s    r   textboxhorizontalszContainer.textboxhorizontals:   s    | 3R888r"   c                 8    | j                             dg           S )Ntextlineverticalr2   r   s    r   textlineverticalszContainer.textlineverticals>   s    | 2B777r"   c                 8    | j                             dg           S )Ntextlinehorizontalr2   r   s    r   textlinehorizontalszContainer.textlinehorizontalsB   s    | 4b999r"   c                     t          | d          r| j        S d | j        D             }t          t	          |           | _        | j        S )Nr   c              3   >   K   | ]}t          j        |          V  d S r   )r   rect_to_edges.0rs     r   	<genexpr>z'Container.rect_edges.<locals>.<genexpr>J   s-      EEQ%-a00EEEEEEr"   )r+   r   r4   listr   )r   rect_edges_gens     r   
rect_edgeszContainer.rect_edgesF   sP    4'' 	$##EE$*EEE'+E>,B'C'Cr"   c                     t          | d          r| j        S d | j        D             }t          t	          |           | _        | j        S )Nr   c              3   >   K   | ]}t          j        |          V  d S r   )r   curve_to_edgesrR   s     r   rU   z(Container.curve_edges.<locals>.<genexpr>R   s-      HHq5/22HHHHHHr"   )r+   r   r;   rV   r   )r   curve_edges_gens     r   curve_edgeszContainer.curve_edgesN   sP    4(( 	%$$HHDKHHH(,UO-D(E(E  r"   c                     t          | d          r| j        S t          t          t          j        | j                            }|| j        z   | j        z   | _        | j        S )Nr   )	r+   r   rV   mapr   line_to_edger8   rX   r]   )r   
line_edgess     r   edgeszContainer.edgesV   sV    4"" 	;#e0$*==>>
",t">AQ"Q{r"   c                 j    dt           dt          fd}t          t          || j                            S )Nxr   c                 4    t          | d         dk              S )Norientationhboolrd   s    r   testz(Container.horizontal_edges.<locals>.test`       -(C/000r"   r   ri   rV   filterrb   r   rk   s     r   horizontal_edgeszContainer.horizontal_edges^   @    	1E 	1d 	1 	1 	1 	1 F4,,---r"   c                 j    dt           dt          fd}t          t          || j                            S )Nrd   r   c                 4    t          | d         dk              S )Nrf   vrh   rj   s    r   rk   z&Container.vertical_edges.<locals>.testg   rl   r"   rm   ro   s     r   vertical_edgeszContainer.vertical_edgese   rq   r"   streaminclude_attrsexclude_attrs	precisionindentc                     |                      |          }t          |||                              |          }|t          j        ||          S t          j        |||           d S )Nry   rw   rx   )rz   )r'   r   	serializejsondumpsdump)	r   rv   r%   rw   rx   ry   rz   data
serializeds	            r   to_jsonzContainer.to_jsonl   sz     ||L))''
 
 
 )D//	 	 >:j8888Ij&88884r"   c           
         |t                      }d}nd}|*t          | j                                                  dgz   }g }t	                      }| j        | gn| j        }	t          |||          }
|	D ]}|D ]}t          ||dz             }t          |          r^||
	                    |          z  }d |d         
                                D             }|                    t	          |                    }t          t          t          t	          |          t	          t          t          z             z
                      z   }t          t          t          |
j        |                    z   }t#          j        ||d	          }|                                 |                    |           |r)|                    d           |                                S d S )
NTFannotr|   sc                 D    g | ]\  }}t          |          t          u|S  )typedict)rS   krt   s      r   
<listcomp>z$Container.to_csv.<locals>.<listcomp>   s-    UUUdaaPTATATATATATr"   r   ignore)
fieldnamesextrasaction)r   rV   r$   keyssetr    r   getattrlenr}   itemsunionr   sortedr   rn   attr_filtercsv
DictWriterwriteheader	writerowsseekread)r   rv   r%   ry   rw   rx   	to_stringr   fieldsr    
serializerpagetobjsnew_keysnon_req_colscolsws                     r   to_csvzContainer.to_csv   s    >ZZFIII 1 1 3 344y@L
55*,$*''
 
 


  	9 	9D! 9 9tQW--t99 9*"6"6t"<"<<JUUd1gmmooUUUH#\\#h--88F9 +T3v;;%69L%L!M!MMNN.
 .
 
 !4z/E|(T(T#U#UUN6dJJJ		J 	KKNNN;;== 4r"   r   )NNNNNN)NNNNN)!__name__
__module____qualname__r*   propertyr   r   r   r    r   strr   r$   r'   r/   r4   r8   r;   r?   rB   rE   rH   rK   rN   rX   r]   rb   rp   ru   r
   intr   r   r   r"   r   r   r      s8       MMM"xS	* " " " X" "c:o. " " " X" 37" "$T#Y/"	c3h" " " "
! !htCy&9 !T ! ! ! ! ,z , , , X, ,z , , , X, -
 - - - X- -
 - - - X- ,z , , , X, 7* 7 7 7 X7 9J 9 9 9 X9 8: 8 8 8 X8 :Z : : : X:  J       X  !Z ! ! ! X! z    X .* . . . X. .
 . . . X. $(,0-1-1#' $   tCy)  S	*	
  S	* C=  
#   4 $(,0#'-1-11 1 1 tCy)1 C=	1
  S	*1  S	*1 
#1 1 1 1 1 1r"   r   )r   r~   ior   	itertoolsr   typingr   r   r   r   r	   r
    r   _typingr   r   convertr   r   r   objectr   r   r"   r   <module>r      s    



              9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9       & & & & & & & & G G G G G G G G G Gi i i i i i i i i ir"   