o
    ¾Ùøi;  ã                   @   sŒ   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
„ 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                   @   s4  e Zd Zg d¢Zedeee  fdd„ƒZede	e
ef fdd„ƒZ	d3deee
  de	e
ef fd	d
„Zd3deee
  ddfdd„Zedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefdd„ƒZedefd d!„ƒZedefd"d#„ƒZedefd$d%„ƒZedefd&d'„ƒZedefd(d)„ƒZ						d4d*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/d0„Z					d5d*ee deee
  d-ee d+eee
  d,eee
  dee
 fd1d2„Z dS )6Ú	Container)Ú_rect_edgesÚ_curve_edgesÚ_edgesÚ_objectsÚreturnc                 C   ó   t ‚©N©ÚNotImplementedError©Úself© r   úa/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/pdfplumber/container.pyÚpages   ó   zContainer.pagesc                 C   r   r   r   r   r   r   r   Úobjects   r    zContainer.objectsNÚobject_typesc                 C   r   r   r   )r   r"   r   r   r   Úto_dict   s   zContainer.to_dictÚ
propertiesc                 C   s4   |d u r| j n|}|D ]}t| |ƒrt| |ƒ qd S r   )Úcached_propertiesÚhasattrÚdelattr)r   r$   ÚpropsÚpr   r   r   Úflush_cache   s   

€þzContainer.flush_cachec                 C   ó   | j  dg ¡S )NÚrect©r!   Úgetr   r   r   r   Úrects"   ó   zContainer.rectsc                 C   r+   )NÚliner-   r   r   r   r   Úlines&   r0   zContainer.linesc                 C   r+   )NÚcurver-   r   r   r   r   Úcurves*   r0   zContainer.curvesc                 C   r+   )NÚimager-   r   r   r   r   Úimages.   r0   zContainer.imagesc                 C   r+   )NÚcharr-   r   r   r   r   Úchars2   r0   zContainer.charsc                 C   r+   )NÚtextboxverticalr-   r   r   r   r   Útextboxverticals6   r0   zContainer.textboxverticalsc                 C   r+   )NÚtextboxhorizontalr-   r   r   r   r   Útextboxhorizontals:   r0   zContainer.textboxhorizontalsc                 C   r+   )NÚtextlineverticalr-   r   r   r   r   Útextlineverticals>   r0   zContainer.textlineverticalsc                 C   r+   )NÚtextlinehorizontalr-   r   r   r   r   ÚtextlinehorizontalsB   r0   zContainer.textlinehorizontalsc                 C   ó4   t | dƒr| jS dd„ | jD ƒ}tt|Ž ƒ| _| jS )Nr   c                 s   ó   � | ]}t  |¡V  qd S r   )r   Úrect_to_edges©Ú.0Úrr   r   r   Ú	<genexpr>J   ó   € z'Container.rect_edges.<locals>.<genexpr>)r&   r   r/   Úlistr   )r   Úrect_edges_genr   r   r   Ú
rect_edgesF   ó
   
zContainer.rect_edgesc                 C   rA   )Nr   c                 s   rB   r   )r   Úcurve_to_edgesrD   r   r   r   rG   R   rH   z(Container.curve_edges.<locals>.<genexpr>)r&   r   r4   rI   r   )r   Úcurve_edges_genr   r   r   Úcurve_edgesN   rL   zContainer.curve_edgesc                 C   s:   t | dƒr| jS tttj| jƒƒ}|| j | j | _| jS )Nr   )	r&   r   rI   Úmapr   Úline_to_edger2   rK   rO   )r   Ú
line_edgesr   r   r   ÚedgesV   s
   
zContainer.edgesc                 C   ó"   dt dtfdd„}tt|| jƒƒS )NÚxr   c                 S   ó   t | d dkƒS )NÚorientationÚh©Úbool©rU   r   r   r   Útest`   ó   z(Container.horizontal_edges.<locals>.test©r   rZ   rI   ÚfilterrS   ©r   r\   r   r   r   Úhorizontal_edges^   ó   zContainer.horizontal_edgesc                 C   rT   )NrU   r   c                 S   rV   )NrW   ÚvrY   r[   r   r   r   r\   g   r]   z&Container.vertical_edges.<locals>.testr^   r`   r   r   r   Úvertical_edgese   rb   zContainer.vertical_edgesÚstreamÚinclude_attrsÚexclude_attrsÚ	precisionÚindentc           	      C   sH   |   |¡}t|||d� |¡}|d u rtj||d�S tj|||d� d S )N©rh   rf   rg   )ri   )r#   r   Ú	serializeÚjsonÚdumpsÚdump)	r   re   r"   rf   rg   rh   ri   ÚdataÚ
serializedr   r   r   Úto_jsonl   s   

ýüzContainer.to_jsonc                 C   s4  |d u r
t ƒ }d}nd}|d u rt| j ¡ ƒdg }g }tƒ }| jd u r'| gn| j}	t|||d�}
|	D ]+}|D ]&}t||d ƒ}t|ƒr]||
 	|¡7 }dd„ |d  
¡ D ƒ}| t|ƒ¡}q7q3tttt|ƒttt ƒ ƒƒ }ttt|
j|ƒƒ }tj||d	tjd
d�}| ¡  | |¡ |r˜| d¡ | ¡ S d S )NTFÚannotrj   Úsc                 S   s    g | ]\}}t |ƒtur|‘qS r   )ÚtypeÚdict)rE   Úkrc   r   r   r   Ú
<listcomp>¤   s     z$Container.to_csv.<locals>.<listcomp>r   Úignoreú\)Ú
fieldnamesÚextrasactionÚquotingÚ
escapechar)r   rI   r!   ÚkeysÚsetr   r   ÚgetattrÚlenrk   ÚitemsÚunionr   Úsortedr   r_   Úattr_filterÚcsvÚ
DictWriterÚQUOTE_MINIMALÚwriteheaderÚ	writerowsÚseekÚread)r   re   r"   rh   rf   rg   Ú	to_stringrp   Úfieldsr   Ú
serializerÚpageÚtÚobjsÚnew_keysÚnon_req_colsÚcolsÚwr   r   r   Úto_csv„   sP   ý€ûÿû

zContainer.to_csvr   )NNNNNN)NNNNN)!Ú__name__Ú
__module__Ú__qualname__r%   Úpropertyr   r   r   r   r   Ústrr   r!   r#   r*   r/   r2   r4   r6   r8   r:   r<   r>   r@   rK   rO   rS   ra   rd   r	   Úintrq   r—   r   r   r   r   r      s     ÿ
ÿ

þùþ
ý
ü
ûúù
øúþ
ýü
û
úùr   )r†   rl   Úior   Ú	itertoolsr   Útypingr   r   r   r   r   r	   Ú r   Ú_typingr   r   Úconvertr   r   r   Úobjectr   r   r   r   r   Ú<module>   s     