o
    ¾Ùøi*  ã                   @   s  d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZmZ d
dlm Z  d
dl!m"Z" d
dl#m$Z$m%Z% d
dl&m'Z'm(Z( d
dl)m*Z* d
dl+m,Z, e -e.¡Z/G dd„ de ƒZ0dS )é    N)ÚBufferedReaderÚBytesIO)ÚTracebackType)	ÚAnyÚDictÚ	GeneratorÚListÚLiteralÚOptionalÚTupleÚTypeÚUnion)ÚLAParams)ÚPDFDocument)ÚPDFResourceManager)ÚPDFPage)Ú	PDFParseré   )ÚT_numÚ
T_obj_list)Ú	Container)ÚPage)ÚT_repair_settingÚ_repair©ÚPDFStructTreeÚStructTreeMissing)Úresolve_and_decode)ÚPdfminerExceptionc                   @   s"  e Zd ZU ejdg Zee ed< 								d0dee	e
f dedeej d	eeee ee f  d
eeeef  dee dedeed  defdd„Ze									d1deeeje	e
f d	eeee ee f  d
eeeef  dee dedeed  dedeeeejf  dededd fdd„ƒZd2dd„Zd3dd„Zdeee  dee d ee ddfd!d"„Zedee fd#d$„ƒZ edeee!f fd%d&„ƒZ"edeeeef  fd'd(„ƒZ#edeeeef  fd)d*„ƒZ$edeeeef  fd+d,„ƒZ%d4d-eee  deeef fd.d/„Z&dS )5ÚPDFÚ_pagesÚcached_propertiesFNTÚstreamÚstream_is_externalÚpathÚpagesÚlaparamsÚpasswordÚstrict_metadataÚunicode_norm)ÚNFCÚNFKCÚNFDÚNFKDÚraise_unicode_errorsc
                 C   s  || _ || _|| _|| _|d u rd ntdi |¤Ž| _|| _|| _|	| _zt	t
|ƒ|p+dd�| _W n ty@ }
 zt|
ƒ‚d }
~
ww tƒ | _i | _| jjD ]}| j |¡ qL| j ¡ D ]/\}}z	t|ƒ| j|< W qZ ty‰ }
 z|rr‚ t d|› dt|
ƒ› �¡ W Y d }
~
qZd }
~
ww d S )NÚ )r'   z[WARNING] Metadata key "z(" could not be parsed due to exception: © )r"   r#   r$   Úpages_to_parser   r&   r'   r)   r.   r   r   ÚdocÚ	Exceptionr   r   ÚrsrcmgrÚmetadataÚinfoÚupdateÚitemsr   ÚloggerÚwarningÚstr)Úselfr"   r#   r$   r%   r&   r'   r(   r)   r.   Úer6   ÚkÚvr0   r0   ú[/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/pdfplumber/pdf.pyÚ__init__   s@   €ÿÿÿ€úýzPDF.__init__ÚdefaultÚ
path_or_fpÚrepairÚgs_pathÚrepair_settingÚreturnc                 C   sŽ   |rt ||||	d�}d}d }nt|ttjfƒr$t|dƒ}d}t |¡}n|}d}d }z| |||||||||
d�	W S  tyF   |sE| ¡  ‚ w )N)r'   rE   ÚsettingFÚrbT)r$   r%   r&   r'   r(   r)   r#   r.   )r   Ú
isinstancer;   ÚpathlibÚPathÚopenr   Úclose)ÚclsrC   r%   r&   r'   r(   r)   rD   rE   rF   r.   r"   r#   r$   r0   r0   r@   rM   H   s<   ÿ
÷ýzPDF.openc                 C   s4   |   ¡  | jD ]}| ¡  q| js| j ¡  d S d S ©N)Úflush_cacher%   rN   r#   r"   )r<   Úpager0   r0   r@   rN   |   s   

ÿz	PDF.closec                 C   s   | S rP   r0   ©r<   r0   r0   r@   Ú	__enter__…   s   zPDF.__enter__ÚtÚvalueÚ	tracebackc                 C   s   |   ¡  d S rP   )rN   )r<   rU   rV   rW   r0   r0   r@   Ú__exit__ˆ   s   zPDF.__exit__c                    s–   t ˆ dƒrˆ jS d}ˆ j}g ˆ _dttd d f f‡ fdd„}t|ƒ ƒD ]$\}}|d }|d ur4||vr4q#tˆ |||d�}ˆ j |¡ ||j7 }q#ˆ jS )Nr    r   rG   c               
   3   sT   � t  ˆ j¡} 	 zt| ƒV  W n ty   Y d S  ty( } zt|ƒ‚d }~ww qrP   )r   Úcreate_pagesr2   ÚnextÚStopIterationr3   r   )Úgenr=   rS   r0   r@   Ú
iter_pages™   s   €€ÿûzPDF.pages.<locals>.iter_pagesr   )Úpage_numberÚinitial_doctop)	Úhasattrr    r1   r   r   Ú	enumerater   ÚappendÚheight)r<   ÚdoctopÚppr]   ÚirR   r^   Úpr0   rS   r@   r%   �   s   

z	PDF.pagesc                 C   sV   t | dƒr| jS i }| jD ]}|j ¡ D ]}| |g ¡|j|  ||< qq|| _| jS )NÚ_objects)r`   rh   r%   ÚobjectsÚkeysÚget)r<   Úall_objectsrg   Úkindr0   r0   r@   ri   ¬   s   

ÿzPDF.objectsc                 C   ó   dd„ | j D ƒ}ttj|Ž ƒS )Nc                 s   ó   � | ]}|j V  qd S rP   )Úannots©Ú.0rg   r0   r0   r@   Ú	<genexpr>¹   ó   € zPDF.annots.<locals>.<genexpr>©r%   ÚlistÚ	itertoolsÚchain©r<   r\   r0   r0   r@   rp   ·   ó   z
PDF.annotsc                 C   rn   )Nc                 s   ro   rP   )Ú
hyperlinksrq   r0   r0   r@   rs   ¾   rt   z!PDF.hyperlinks.<locals>.<genexpr>ru   ry   r0   r0   r@   r{   ¼   rz   zPDF.hyperlinksc                 C   s,   z
dd„ t | ƒD ƒW S  ty   g  Y S w )z+Return the structure tree for the document.c                 S   s   g | ]}|  ¡ ‘qS r0   ©Úto_dict)rr   Úelemr0   r0   r@   Ú
<listcomp>Å   s    z&PDF.structure_tree.<locals>.<listcomp>r   rS   r0   r0   r@   Ústructure_treeÁ   s
   ÿzPDF.structure_treeÚobject_typesc                    s   | j ‡ fdd„| jD ƒdœS )Nc                    s   g | ]}|  ˆ ¡‘qS r0   r|   )rr   rR   ©r�   r0   r@   r   Ì   s    zPDF.to_dict.<locals>.<listcomp>©r5   r%   rƒ   )r<   r�   r0   r‚   r@   r}   É   s   þzPDF.to_dict)FNNNNFNT)	NNNFNFNrB   T)rG   N)rG   r   rP   )'Ú__name__Ú
__module__Ú__qualname__r   r!   r   r;   Ú__annotations__r   r   r   Úboolr
   rK   rL   Úintr   r   r   r	   rA   Úclassmethodr   rM   rN   rT   r   ÚBaseExceptionr   rX   Úpropertyr   r%   r   ri   rp   r{   r€   r}   r0   r0   r0   r@   r      s¨   
 ö
þýüûúùø
	÷

ö,õþýüûú
ùø	÷
öõô
3
	
þýü
û
(r   )1rw   ÚloggingrK   Úior   r   Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   Úpdfminer.layoutr   Úpdfminer.pdfdocumentr   Úpdfminer.pdfinterpr   Úpdfminer.pdfpager   Úpdfminer.pdfparserr   Ú_typingr   r   Ú	containerr   rR   r   rD   r   r   Ú	structurer   r   Úutilsr   Úutils.exceptionsr   Ú	getLoggerr„   r9   r   r0   r0   r0   r@   Ú<module>   s(    ,
