
    ;3h;                         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y)    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 y)"	Container)_rect_edges_curve_edges_edges_objectsreturnc                     t         NNotImplementedErrorselfs    T/var/www/html/audio-gradio/venv/lib/python3.12/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                 d    || j                   n|}|D ]  }t        | |      st        | |        y r   )cached_propertieshasattrdelattr)r   r(   propsps       r   flush_cachezContainer.flush_cache   s7    *4*<&&* 	!AtQa 	!r"   c                 :    | j                   j                  dg       S )Nrectr$   getr   s    r   rectszContainer.rects"       ||++r"   c                 :    | j                   j                  dg       S )Nliner2   r   s    r   lineszContainer.lines&   r5   r"   c                 :    | j                   j                  dg       S )Ncurver2   r   s    r   curveszContainer.curves*       ||,,r"   c                 :    | j                   j                  dg       S )Nimager2   r   s    r   imageszContainer.images.   r<   r"   c                 :    | j                   j                  dg       S )Ncharr2   r   s    r   charszContainer.chars2   r5   r"   c                 :    | j                   j                  dg       S )Ntextboxverticalr2   r   s    r   textboxverticalszContainer.textboxverticals6   s    || 1266r"   c                 :    | j                   j                  dg       S )Ntextboxhorizontalr2   r   s    r   textboxhorizontalszContainer.textboxhorizontals:   s    || 3R88r"   c                 :    | j                   j                  dg       S )Ntextlineverticalr2   r   s    r   textlineverticalszContainer.textlineverticals>   s    || 2B77r"   c                 :    | j                   j                  dg       S )Ntextlinehorizontalr2   r   s    r   textlinehorizontalszContainer.textlinehorizontalsB   s    || 4b99r"   c                     t        | d      r| j                  S d | j                  D        }t        t	        |       | _        | j                  S )Nr   c              3   F   K   | ]  }t        j                  |        y wr   )r   rect_to_edges.0rs     r   	<genexpr>z'Container.rect_edges.<locals>.<genexpr>J   s     EQ%--a0E   !)r+   r   r4   listr   )r   rect_edges_gens     r   
rect_edgeszContainer.rect_edgesF   sD    4'###E$**E'+E>,B'Cr"   c                     t        | d      r| j                  S d | j                  D        }t        t	        |       | _        | j                  S )Nr   c              3   F   K   | ]  }t        j                  |        y wr   )r   curve_to_edgesrR   s     r   rU   z(Container.curve_edges.<locals>.<genexpr>R   s     Hq5//2HrV   )r+   r   r;   rW   r   )r   curve_edges_gens     r   curve_edgeszContainer.curve_edgesN   sD    4($$$HDKKH(,UO-D(E   r"   c                     t        | d      r| j                  S t        t        t        j
                  | j                              }|| j                  z   | j                  z   | _        | j                  S )Nr   )	r+   r   rW   mapr   line_to_edger8   rY   r^   )r   
line_edgess     r   edgeszContainer.edgesV   sV    4";;#e00$**=>
",t">AQAQ"Q{{r"   c                 `    dt         dt        fd}t        t        || j                              S )Nxr   c                 $    t        | d   dk(        S )Norientationhboolre   s    r   testz(Container.horizontal_edges.<locals>.test`       -(C/00r"   r   rj   rW   filterrc   r   rl   s     r   horizontal_edgeszContainer.horizontal_edges^   -    	1E 	1d 	1 F4,--r"   c                 `    dt         dt        fd}t        t        || j                              S )Nre   r   c                 $    t        | d   dk(        S )Nrg   vri   rk   s    r   rl   z&Container.vertical_edges.<locals>.testg   rm   r"   rn   rp   s     r   vertical_edgeszContainer.vertical_edgese   rr   r"   streaminclude_attrsexclude_attrs	precisionindentc                     | j                  |      }t        |||      j                  |      }|t        j                  ||      S t        j
                  |||       y )Nrz   rx   ry   )r{   )r'   r   	serializejsondumpsdump)	r   rw   r%   rx   ry   rz   r{   data
serializeds	            r   to_jsonzContainer.to_jsonl   s^     ||L)''
 )D/	 	 >::j88IIj&8r"   c           
         |t               }d}nd}|'t        | j                  j                               dgz   }g }t	               }| j
                  | gn| j
                  }	t        |||      }
|	D ]  }|D ]  }t        ||dz         }t        |      s||
j                  |      z  }|d   j                         D cg c]  \  }}t        |      t        us| }}}|j                  t	        |            }  t        t        t        t	        |      t	        t         t        z         z
              z   }t         t        t#        |
j$                  |            z   }t'        j(                  ||dt&        j*                  d	      }|j-                          |j/                  |       |r!|j1                  d       |j3                         S y c c}}w )
NTFannotr}   sr   ignore\)
fieldnamesextrasactionquoting
escapechar)r   rW   r$   keyssetr    r   getattrlenr~   itemstypedictunionr   sortedr   ro   attr_filtercsv
DictWriterQUOTE_MINIMALwriteheader	writerowsseekread)r   rw   r%   rz   rx   ry   	to_stringr   fieldsr    
serializerpagetobjskru   new_keysnon_req_colscolsws                       r   to_csvzContainer.to_csv   s    >ZFII 1 1 34y@L
5**,$**''


  	9D! 9tQW-t9*"6"6t"<<J.21gmmoUdaaPTATUHU#\\#h-8F9	9 +T3v;%69L%L!MMN.
 
 !4z/E/E|(T#UUNN!%%
 	
	JKKN;;= /  Vs   ?G
G
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   rY   r^   rc   rq   rv   r
   intr   r    r"   r   r   r      s   M"xS	* " " "c:o. " " 37"$T#Y/"	c3h"
!htCy&9 !T ! ,z , , ,z , , -
 - - -
 - - ,z , , 7* 7 7 9J 9 9 8: 8 8 :Z : :  J     !Z ! ! z   .* . . .
 . . $(,0-1-1#' $  tCy)  S	*	
  S	* C=  
#4 $(,0#'-1-17 7 tCy)7 C=	7
  S	*7  S	*7 
#7r"   r   )r   r   ior   	itertoolsr   typingr   r   r   r   r	   r
    r   _typingr   r   convertr   r   r   objectr   r   r"   r   <module>r      s1    
    9 9  & G Go or"   