§
    fÍâh
$  ã                   ój   — d Z ddlmZ ddlmZ ddlmZ dZdZdZ	eee	fZ
d„ Zd	„ Z G d
„ d¦  «        ZdS )z# Tablib - reStructuredText Support
é    )Úzip_longest)Úmedian)ÚTextWrapperÚleftÚcenterÚrightc                 ót   — t          | t          ¦  «        r|                      d¦  «        S t          | ¦  «        S )Nzutf-8)Ú
isinstanceÚbytesÚdecodeÚstr)Úvalues    úJ/var/www/histauto/venv/lib/python3.11/site-packages/tablib/formats/_rst.pyÚto_strr      s2   € Ý�%�ÑÔð %Ø�|Š|˜GÑ$Ô$Ð$Ýˆu‰:Œ:Ðó    c                 ód   — | r-t          d„ |                      ¦   «         D ¦   «         d¬¦  «        ndS )z}
    Return the length of the longest word in `text`.

    >>> _max_word_len('Python Module for Tabular Datasets')
    8
    c              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Úlen)Ú.0Úwords     r   ú	<genexpr>z _max_word_len.<locals>.<genexpr>   s(   è è € Ð3Ð3˜d•�D‘	”	Ð3Ð3Ð3Ð3Ð3Ð3r   r   )Údefault)ÚmaxÚsplit)Útexts    r   Ú_max_word_lenr      s:   € ð DHÐN�3Ð3Ð3 d§j¢j¡l¤lÐ3Ñ3Ô3¸QÐ?Ñ?Ô?Ð?ÈQÐNr   c                   óÚ   — e Zd ZdZdZdZed„ ¦   «         Zedefd„¦   «         Z	eedfd„¦   «         Z
edd
„¦   «         Zedd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd	S )Ú
ReSTFormatÚrst)r!   éP   c                 ó4  — |j         r#d„ |j         D ¦   «         }d„ |j         D ¦   «         }n<d„ t          |j        ¦  «        D ¦   «         }d„ t          |j        ¦  «        D ¦   «         }|j        D ]§}t	          t          |d¦  «        r|                     ¦   «         n|¦  «        }t          |¦  «        D ]b\  }}t          |¦  «        }||          	                    t          |¦  «        ¦  «         t          ||         t          |¦  «        ¦  «        ||<   ŒcŒ¨||fS )zn
        Returns a list of string lengths of each column, and a list of
        maximum word lengths.
        c                 ó.   — g | ]}t          |¦  «        g‘ŒS © r   ©r   Úhs     r   ú
<listcomp>z9ReSTFormat._get_column_string_lengths.<locals>.<listcomp>+   s    € Ð@Ð@Ð@¨1�s 1™vœv˜hÐ@Ð@Ð@r   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r%   )r   r&   s     r   r(   z9ReSTFormat._get_column_string_lengths.<locals>.<listcomp>,   s    € ÐCÐCÐC¨a� qÑ)Ô)ÐCÐCÐCr   c                 ó   — g | ]}g ‘ŒS r%   r%   ©r   Ú_s     r   r(   z9ReSTFormat._get_column_string_lengths.<locals>.<listcomp>.   s   € Ð?Ð?Ð? Q˜bÐ?Ð?Ð?r   c                 ó   — g | ]}d ‘ŒS )r   r%   r+   s     r   r(   z9ReSTFormat._get_column_string_lengths.<locals>.<listcomp>/   s   € Ð9Ð9Ð9˜q˜Ð9Ð9Ð9r   Úvalues)ÚheadersÚrangeÚwidthÚdictÚiterÚhasattrr.   Ú	enumerater   Úappendr   r   r   )	ÚclsÚdatasetÚcolumn_lengthsÚ	word_lensÚrowr.   ÚiÚvalr   s	            r   Ú_get_column_string_lengthsz%ReSTFormat._get_column_string_lengths$   s*  € ð Œ?ð 	:Ø@Ð@°´Ð@Ñ@Ô@ˆNØCÐC°7´?ÐCÑCÔCˆIˆIà?Ð?­%°´Ñ*>Ô*>Ð?Ñ?Ô?ˆNØ9Ð9¥E¨'¬-Ñ$8Ô$8Ð9Ñ9Ô9ˆIØ”<ð 	Fð 	FˆCÝ­'°#°xÑ*@Ô*@ÐI˜#Ÿ*š*™,œ,˜,ÀcÑJÔJˆFÝ# FÑ+Ô+ð Fð F‘��3Ý˜c‘{”{�Ø˜qÔ!×(Ò(­¨T©¬Ñ3Ô3Ð3Ý" 9¨Q¤<µ¸tÑ1DÔ1DÑEÔE�	˜!‘�ðFð ˜yÐ(Ð(r   ú|c                 óÜ  ‡‡‡‡‡‡— ‰t           vr:t          d                     d                     t           ¦  «        ¦  «        ¦  «        ‚ˆfd„Š|r|dz   ndŠ|rd|z   ndŠd|z   dz   Šg }t	          |‰¦  «        D ]E\  }}||_        t          |¦  «        }	|                     |	¦  «        }
|                     |
¦  «         ŒFt          |ddiŽ}ˆˆfd„|D ¦   «         }ˆˆˆfd„|D ¦   «         }|S )	zJ
        Returns a table row of wrapped values as a list of lines
        z&Value of "justify" must be one of "{}"z", "c                 ó®   •— ‰t           k    r|                      |¦  «        S ‰t          k    r|                      |¦  «        S |                      |¦  «        S r   )ÚJUSTIFY_LEFTÚljustÚJUSTIFY_CENTERr   Úrjust)Útext_Úwidth_Újustifys     €r   Újustz&ReSTFormat._row_to_lines.<locals>.justB   sO   ø€ Ø�,Ò&Ð&Ø—{’{ 6Ñ*Ô*Ð*Ø�NÒ*Ð*Ø—|’| FÑ+Ô+Ð+à—{’{ 6Ñ*Ô*Ð*r   ú Ú Ú	fillvaluec              3   óP   •K  — | ] }ˆˆfd „t          |¦  «        D ¦   «         V — Œ!dS )c              3   óB   •K  — | ]\  }} ‰|‰|         ¦  «        V — Œd S r   r%   )r   r<   Ú	cell_linerI   Úwidthss      €€r   r   z5ReSTFormat._row_to_lines.<locals>.<genexpr>.<genexpr>T   s7   øè è € ÐLÐL©L¨A¨yˆTˆT�)˜V AœYÑ'Ô'ÐLÐLÐLÐLÐLÐLr   N)r5   )r   ÚlinerI   rP   s     €€r   r   z+ReSTFormat._row_to_lines.<locals>.<genexpr>S   sU   øè è € ð 
ð 
àð MÐLÐLÐLÐL½IÀd¹O¼OÐLÑLÔLð
ð 
ð 
ð 
ð 
ð 
r   c                 óf   •— g | ]-}d                       ‰‰                      |¦  «        ‰f¦  «        ‘Œ.S )rK   )Újoin)r   rQ   ÚlpadÚpadÚrpads     €€€r   r(   z,ReSTFormat._row_to_lines.<locals>.<listcomp>W   s6   ø€ ÐIÐIÐI¸4�—’˜$ §¢¨¡¤°Ð5Ñ6Ô6ÐIÐIÐIr   )
ÚJUSTIFY_VALUESÚ
ValueErrorÚformatrS   Úzipr1   r   Úwrapr6   r   )r7   r.   rP   ÚwrapperÚseprH   Úcellsr   r1   r   ÚcellÚlinesrI   rT   rU   rV   s     `  `      @@@@r   Ú_row_to_lineszReSTFormat._row_to_lines8   sU  øøøøøø€ ð
 �.Ð(Ð(ÝÐE×LÒLØ—’�NÑ+Ô+ñô ñ ô ð ð	+ð 	+ð 	+ð 	+ð 	+ð  Ð'ˆs�S‰yˆy RˆØÐ'ˆs�S‰yˆy RˆØ�C‰i˜#‰oˆØˆÝ ¨Ñ/Ô/ð 	ð 	‰LˆE�5Ø!ˆGŒMÝ˜%‘=”=ˆDØ—<’< Ñ%Ô%ˆDØ�LŠL˜ÑÔÐÐÝ˜UÐ1¨bÐ1Ð1ˆð
ð 
ð 
ð 
ð 
àð
ñ 
ô 
ˆð JÐIÐIÐIÐIÐIÀ5ÐIÑIÔIˆØˆr   é   c                 ó,  ‡‡‡— |                       |¦  «        \  }}d„ |D ¦   «         }t          |¦  «        Š‰‰‰t          |¦  «        z  z
  k    rˆˆfd„|D ¦   «         }nd„ |D ¦   «         }ˆfd„|D ¦   «         }d„ t          ||¦  «        D ¦   «         }|S )zw
        Returns a list of column widths proportional to the median length
        of the text in their cells.
        c                 óF   — g | ]}t          t          |¦  «        ¦  «        ‘ŒS r%   )Úintr   ©r   Úlenss     r   r(   z1ReSTFormat._get_column_widths.<locals>.<listcomp>a   s&   € Ð>Ð>Ð>¨T•s�6 $™<œ<Ñ(Ô(Ð>Ð>Ð>r   c              3   ó(   •K  — | ]}‰|z  ‰z  V — Œd S r   r%   )r   rg   Úmax_table_widthÚtotals     €€r   r   z0ReSTFormat._get_column_widths.<locals>.<genexpr>d   s-   øè è € ÐUÐUÀ˜_¨tÑ3°uÑ<ÐUÐUÐUÐUÐUÐUr   c              3   ó   K  — | ]}|V — Œd S r   r%   rf   s     r   r   z0ReSTFormat._get_column_widths.<locals>.<genexpr>f   s"   è è € Ð:Ð: d˜TÐ:Ð:Ð:Ð:Ð:Ð:r   c              3   ó2   •K  — | ]}|‰k    r|‰z
  n|V — Œd S r   r%   )r   ÚwÚpad_lens     €r   r   z0ReSTFormat._get_column_widths.<locals>.<genexpr>h   s3   øè è € ÐRÐR¸q¨¨Gª¨˜˜W™˜¸ÐRÐRÐRÐRÐRÐRr   c                 ó4   — g | ]\  }}t          ||¦  «        ‘ŒS r%   )r   )r   rm   Úls      r   r(   z1ReSTFormat._get_column_widths.<locals>.<listcomp>j   s$   € ÐMÐMÐM¡t q¨!�˜Q ™œÐMÐMÐMr   )r>   Úsumr   rZ   )	r7   r8   ri   rn   Ústr_lensr:   Úmedian_lensÚcolumn_widthsrj   s	     ``    @r   Ú_get_column_widthszReSTFormat._get_column_widthsZ   sÉ   øøø€ ð "×<Ò<¸WÑEÔEÑˆ�)Ø>Ð>°XÐ>Ñ>Ô>ˆÝ�KÑ Ô ˆØ�? gµ°KÑ0@Ô0@Ñ&@ÑAÒAÐAØUÐUÐUÐUÐUÈÐUÑUÔUˆMˆMà:Ð:¨kÐ:Ñ:Ô:ˆMàRÐRÐRÐRÀMÐRÑRÔRˆàMÐM­s°=À)Ñ/LÔ/LÐMÑMÔMˆØÐr   Nc           	      ó†  — g }t          ¦   «         }|€|                      |d¬¦  «        }d                     d„ |D ¦   «         ¦  «        }|                     |¦  «         |j        rL|                     |                      |j        ||dt          ¬¦  «        ¦  «         |                     |¦  «         |j        D ]`}t          t          |d¦  «        r|                     ¦   «         n|¦  «        }|                     |                      |||d¦  «        ¦  «         Œa|                     |¦  «         d	                     |¦  «        S )
zP
        Returns reStructuredText grid table representation of dataset.
        Né   )rn   z  c                 ó   — g | ]}d |z  ‘ŒS ©ú=r%   ©r   rm   s     r   r(   z9ReSTFormat.export_set_as_simple_table.<locals>.<listcomp>v   s   € Ð;Ð;Ð;¨˜C !™GÐ;Ð;Ð;r   rK   )r]   rH   r.   ú
©r   ru   rS   r6   r/   Úextendra   rD   r2   r3   r4   r.   )r7   r8   rt   r`   r\   Úborderr;   r.   s           r   Úexport_set_as_simple_tablez%ReSTFormat.export_set_as_simple_tablem   sF  € ð
 ˆÝ‘-”-ˆØÐ Ø×2Ò2°7ÀAÐ2ÑFÔFˆMØ—’Ð;Ð;¨]Ð;Ñ;Ô;Ñ<Ô<ˆà�Š�VÑÔÐØŒ?ð 	!Ø�LŠL˜×*Ò*Ø”ØØØÝ&ð +ñ ô ñ ô ð ð �LŠL˜Ñ Ô Ð Ø”<ð 	Pð 	PˆCÝ­'°#°xÑ*@Ô*@ÐI˜#Ÿ*š*™,œ,˜,ÀcÑJÔJˆFØ�LŠL˜×*Ò*¨6°=À'È2ÑNÔNÑOÔOÐOÐOØ�Š�VÑÔÐØ�yŠy˜ÑÔÐr   c                 óÔ  — g }t          ¦   «         }|€|                      |¦  «        }dd                     d„ |D ¦   «         ¦  «        z   dz   }dd                     d„ |D ¦   «         ¦  «        z   d	z   }|                     |¦  «         |j        rK|                     |                      |j        ||t          ¬
¦  «        ¦  «         |                     |¦  «         |j        D ]t}t          t          |d¦  «        r|                     ¦   «         n|¦  «        }|                     |                      |||¦  «        ¦  «         |                     |¦  «         Œud                     |¦  «        S )a…  
        Returns reStructuredText grid table representation of dataset.


        >>> from tablib import Dataset
        >>> from tablib.formats import registry
        >>> bits = ((0, 0), (1, 0), (0, 1), (1, 1))
        >>> data = Dataset()
        >>> data.headers = ['A', 'B', 'A and B']
        >>> for a, b in bits:
        ...     data.append([bool(a), bool(b), bool(a * b)])
        >>> rst = registry.get_format('rst')
        >>> print(rst.export_set(data, force_grid=True))
        +-------+-------+-------+
        |   A   |   B   | A and |
        |       |       |   B   |
        +=======+=======+=======+
        | False | False | False |
        +-------+-------+-------+
        | True  | False | False |
        +-------+-------+-------+
        | False | True  | False |
        +-------+-------+-------+
        | True  | True  | True  |
        +-------+-------+-------+

        Nz+=z=+=c                 ó   — g | ]}d |z  ‘ŒS ry   r%   r{   s     r   r(   z7ReSTFormat.export_set_as_grid_table.<locals>.<listcomp>©   s   € Ð'GÐ'GÐ'G°A¨¨a©Ð'GÐ'GÐ'Gr   z=+z+-z-+-c                 ó   — g | ]}d |z  ‘ŒS )ú-r%   r{   s     r   r(   z7ReSTFormat.export_set_as_grid_table.<locals>.<listcomp>ª   s   € Ð$DÐ$DÐ$D° S¨1¡WÐ$DÐ$DÐ$Dr   z-+)rH   r.   r|   r}   )	r7   r8   rt   r`   r\   Ú
header_sepÚrow_sepr;   r.   s	            r   Úexport_set_as_grid_tablez#ReSTFormat.export_set_as_grid_tableˆ   sn  € ð: ˆÝ‘-”-ˆØÐ Ø×2Ò2°7Ñ;Ô;ˆMØ˜EŸJšJÐ'GÐ'G¸Ð'GÑ'GÔ'GÑHÔHÑHÈ4ÑOˆ
Ø˜ŸšÐ$DÐ$D°mÐ$DÑ$DÔ$DÑEÔEÑEÈÑLˆà�Š�WÑÔÐàŒ?ð 	%Ø�LŠL˜×*Ò*Ø”ØØÝ&ð	 +ñ ô ñ ô ð ð �LŠL˜Ñ$Ô$Ð$Ø”<ð 	"ð 	"ˆCÝ­'°#°xÑ*@Ô*@ÐI˜#Ÿ*š*™,œ,˜,ÀcÑJÔJˆFØ�LŠL˜×*Ò*¨6°=À'ÑJÔJÑKÔKÐKØ�LŠL˜Ñ!Ô!Ð!Ð!Ø�yŠy˜ÑÔÐr   c                 ó¦   — |�$t          |¦  «        }t          |¦  «        |k    rdS |D ]'}t          |¦  «        }t          |¦  «        |k    r dS Œ(dS )a[  
        Use a simple table if the text in the first column is never wrapped


        >>> from tablib.formats import registry
        >>> rst = registry.get_format('rst')
        >>> rst._use_simple_table('menu', ['egg', 'bacon'], 10)
        True
        >>> rst._use_simple_table(None, ['lobster thermidor', 'spam'], 10)
        False

        NFT)r   r   )r7   Úhead0Úcol0Úwidth0r_   s        r   Ú_use_simple_tablezReSTFormat._use_simple_table¼   sg   € ð ÐÝ˜5‘M”MˆEÝ�5‰zŒz˜FÒ"Ð"Ø�uØð 	ð 	ˆDÝ˜$‘<”<ˆDÝ�4‰yŒy˜6Ò!Ð!Ø�u�uð "àˆtr   c                 óŠ  — |j         sdS |                     dd¦  «        }|                     d| j        ¦  «        }|                      ||¦  «        }|                      |j        r|j        d         nd|                     d¦  «        |d         ¦  «        }|r|s|                      ||¦  «        S |                      ||¦  «        S )a†  
        Returns reStructuredText table representation of dataset.

        Returns a simple table if the text in the first column is never
        wrapped, otherwise returns a grid table.


        >>> from tablib import Dataset
        >>> bits = ((0, 0), (1, 0), (0, 1), (1, 1))
        >>> data = Dataset()
        >>> data.headers = ['A', 'B', 'A and B']
        >>> for a, b in bits:
        ...     data.append([bool(a), bool(b), bool(a * b)])
        >>> table = data.rst
        >>> table.split('\n') == [
        ...     '=====  =====  =====',
        ...     '  A      B    A and',
        ...     '                B  ',
        ...     '=====  =====  =====',
        ...     'False  False  False',
        ...     'True   False  False',
        ...     'False  True   False',
        ...     'True   True   True ',
        ...     '=====  =====  =====',
        ... ]
        True

        rK   Ú
force_gridFri   r   N)	r2   ÚgetÚMAX_TABLE_WIDTHru   rŒ   r/   Úget_colr€   r‡   )r7   r8   ÚkwargsrŽ   ri   rt   Úuse_simple_tables          r   Ú
export_setzReSTFormat.export_setÔ   sÔ   € ð< Œ|ð 	Ø�2Ø—Z’Z ¨eÑ4Ô4ˆ
Ø Ÿ*š*Ð%6¸Ô8KÑLÔLˆØ×.Ò.¨w¸ÑHÔHˆà×0Ò0Ø")¤/Ð;ˆGŒO˜AÔÐ°tØ�OŠO˜AÑÔØ˜!Ôñ
ô 
Ðð
 ð 	H Jð 	HØ×1Ò1°'¸=ÑIÔIÐIà×/Ò/°¸ÑGÔGÐGr   c                 óP   ‡ — d                      ˆ fd„|j        D ¦   «         ¦  «        S )z—
        reStructuredText representation of a Databook.

        Tables are separated by a blank line. All tables use the grid
        format.
        z

c              3   óF   •K  — | ]}‰                      |d ¬¦  «        V — ŒdS )T)rŽ   N)r”   )r   r8   r7   s     €r   r   z)ReSTFormat.export_book.<locals>.<genexpr>
  sG   øè è € ð >ð >Ø&ð Ÿ>š>¨'¸d˜>ÑCÔCð >ð >ð >ð >ð >ð >r   )rS   Ú	_datasets)r7   Údatabooks   ` r   Úexport_bookzReSTFormat.export_book  sD   ø€ ð �{Š{ð >ð >ð >ð >Ø*2Ô*<ð>ñ >ô >ñ >ô >ð 	>r   r   )Ú__name__Ú
__module__Ú__qualname__ÚtitleÚ
extensionsr�   Úclassmethodr>   rB   ra   ru   r€   r‡   rŒ   r”   r™   r%   r   r   r    r       s  € € € € € Ø€EØ€Jà€Oàð)ð )ñ „[ð)ð& Ø8;À\ð ð ð ñ „[ððB Ø9HÐRSð ð ð ñ „[ðð$ ð ð  ð  ñ „[ð ð4 ð1 ð 1 ð 1 ñ „[ð1 ðf ðð ñ „[ðð. ð+Hð +Hñ „[ð+HðZ ð>ð >ñ „[ð>ð >ð >r   r    N)Ú__doc__Ú	itertoolsr   Ú
statisticsr   Útextwrapr   rB   rD   ÚJUSTIFY_RIGHTrW   r   r   r    r%   r   r   ú<module>r¥      s¿   ððð ð "Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  à€Ø€Ø€Ø °Ð>€ðð ð ðOð Oð Oðm>ð m>ð m>ð m>ð m>ñ m>ô m>ð m>ð m>ð m>r   