§
    fÍâhün  ã                   óì   — d Z ddlmZ ddlmZ ddlmZmZmZmZm	Z	 ddl
mZ ddlmZ dZd	Zd
ZdZdZ G d„ d¦  «        Z G d„ d¦  «        Z G d„ d¦  «        Zd„ Zdd„Zdd„Z ej        ¦   «          dS )zÅ
    tablib.core
    ~~~~~~~~~~~

    This module implements the central Tablib objects.

    :copyright: (c) 2016 by Kenneth Reitz. 2019 Jazzband.
    :license: MIT, see LICENSE for more details.
é    )Úcopy)Ú
itemgetteré   )ÚHeadersNeededÚInvalidDatasetIndexÚInvalidDatasetTypeÚInvalidDimensionsÚUnsupportedFormat)Úregistry)Únormalize_inputÚtablibzKenneth ReitzÚMITz,Copyright 2017 Kenneth Reitz. 2019 Jazzband.Úrestructuredtextc                   ó¨   — e Zd ZdZddgZdd„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ ZdS )ÚRowz/Internal Row object. Mainly used for filtering.Ú_rowÚtags© c                 óV   — t          |¦  «        | _        t          |¦  «        | _        d S ©N)Úlistr   r   ©ÚselfÚrowr   s      úB/var/www/histauto/venv/lib/python3.11/site-packages/tablib/core.pyÚ__init__zRow.__init__$   s    € Ý˜‘I”IˆŒ	Ý˜‘J”JˆŒ	ˆ	ˆ	ó    c                 ó$   — d„ | j         D ¦   «         S )Nc              3   ó   K  — | ]}|V — Œd S r   r   )Ú.0Úcols     r   ú	<genexpr>zRow.__iter__.<locals>.<genexpr>)   s"   è è € Ð)Ð)˜�Ð)Ð)Ð)Ð)Ð)Ð)r   ©r   ©r   s    r   Ú__iter__zRow.__iter__(   s   € Ø)Ð)˜tœyÐ)Ñ)Ô)Ð)r   c                 ó*   — t          | j        ¦  «        S r   )Úlenr   r$   s    r   Ú__len__zRow.__len__+   s   € Ý�4”9‰~Œ~Ðr   c                 ó*   — t          | j        ¦  «        S r   )Úreprr   r$   s    r   Ú__repr__zRow.__repr__.   s   € Ý�D”I‰ŒÐr   c                 ó   — | j         |         S r   r#   ©r   Úis     r   Ú__getitem__zRow.__getitem__1   s   € ØŒy˜Œ|Ðr   c                 ó   — || j         |<   d S r   r#   )r   r.   Úvalues      r   Ú__setitem__zRow.__setitem__4   s   € ØˆŒ	�!‰ˆˆr   c                 ó   — | j         |= d S r   r#   r-   s     r   Ú__delitem__zRow.__delitem__7   s   € ØŒI�aˆLˆLˆLr   c                 ó   — | j         | j        fS r   ©r   r   r$   s    r   Ú__getstate__zRow.__getstate__:   s   € ØŒy˜$œ)Ð#Ð#r   c                 ó$   — |\  | _         | _        d S r   r6   )r   Ústates     r   Ú__setstate__zRow.__setstate__=   s   € Ø$ÑˆŒ	�4”9�9�9r   c                 óV   — |                       t          | j        ¦  «        |¦  «         d S r   )Úinsertr'   r   ©r   r1   s     r   Úrpushz	Row.rpush@   s$   € Ø�Š•C˜œ	‘N”N EÑ*Ô*Ð*Ð*Ð*r   c                 ó2   — |                       d|¦  «         d S )Nr   ©r<   r=   s     r   Úlpushz	Row.lpushC   s   € Ø�Š�A�uÑÔÐÐÐr   c                 ó0   — |                       |¦  «         d S r   ©r>   r=   s     r   Úappendz
Row.appendF   s   € Ø�
Š
�5ÑÔÐÐÐr   c                 ó<   — | j                              ||¦  «         d S r   )r   r<   )r   Úindexr1   s      r   r<   z
Row.insertI   s    € ØŒ	×Ò˜ Ñ&Ô&Ð&Ð&Ð&r   c                 ó~   — t          | j                             ¦   «         | j                             ¦   «         ¦  «        S r   )r   r   r   r   r$   s    r   r   zRow.copyL   s*   € Ý�4”9—>’>Ñ#Ô# T¤Y§^¢^Ñ%5Ô%5Ñ6Ô6Ð6r   c                 ó   — || j         v S r   r#   )r   Úitems     r   Ú__contains__zRow.__contains__O   s   € Ø�t”yÐ Ð r   c                 ó*   — t          | j        ¦  «        S )z%Tuple representation of :class:`Row`.)Útupler   r$   s    r   rL   z	Row.tupleR   s   € õ �T”YÑÔÐr   c                 ó*   — t          | j        ¦  «        S )z$List representation of :class:`Row`.)r   r   r$   s    r   r   zRow.listW   s   € õ �D”I‰ŒÐr   c                 óÂ   — |€dS t          |t          ¦  «        r	|| j        v S t          t	          t          |¦  «        t          | j        ¦  «        z  ¦  «        ¦  «        S )z)Returns true if current row contains tag.NF)Ú
isinstanceÚstrr   Úboolr'   Úset)r   Útags     r   Úhas_tagzRow.has_tag\   sV   € ð ˆ;Ø�5Ý˜�SÑ!Ô!ð 	8Ø˜$œ)Ð#Ð#å��C ™HœH¥s¨4¬9¡~¤~Ñ5Ñ6Ô6Ñ7Ô7Ð7r   N)r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   r%   r(   r+   r/   r2   r4   r7   r:   r>   rA   rD   r<   r   rJ   ÚpropertyrL   r   rT   r   r   r   r   r      sO  € € € € € Ø9Ð9à˜Ð €Iðð ð ð ð*ð *ð *ðð ð ðð ð ðð ð ðð ð ðð ð ð$ð $ð $ð%ð %ð %ð+ð +ð +ðð ð ðð ð ð'ð 'ð 'ð7ð 7ð 7ð!ð !ð !ð ð ð  ñ „Xð ð ðð ñ „Xðð8ð 8ð 8ð 8ð 8r   r   c                   óœ  — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd6d„Zd7d„Zd„ Zd„ Z eee¦  «        Zd„ Zd„ Z eee¦  «        Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd8d„Zd„ Zd9d„Zd9d„Zd9d„Zd9d„Zd9d„Zd„ Z d „ Z!d!„ Z"d"„ Z#d:d#„Z$d8d$„Z%d8d%„Z&d;d'„Z'd;d(„Z(d8d)„Z)d*„ Z*d+„ Z+d,„ Z,d<d-„Z-d.„ Z.d/„ Z/d0„ Z0d1„ Z1d2„ Z2d3„ Z3d4„ Z4d:d5„Z5dS )=ÚDatasetaÆ  The :class:`Dataset` object is the heart of Tablib. It provides all core
    functionality.

    Usually you create a :class:`Dataset` instance in your main module, and append
    rows as you collect data. ::

        data = tablib.Dataset()
        data.headers = ('name', 'age')

        for (name, age) in some_collector():
            data.append((name, age))


    Setting columns is similar. The column data length must equal the
    current height of the data and headers must be set. ::

        data = tablib.Dataset()
        data.headers = ('first_name', 'last_name')

        data.append(('John', 'Adams'))
        data.append(('George', 'Washington'))

        data.append_col((90, 67), header='age')


    You can also set rows and headers upon instantiation. This is useful if
    dealing with dozens or hundreds of :class:`Dataset` objects. ::

        headers = ('first_name', 'last_name')
        data = [('John', 'Adams'), ('George', 'Washington')]

        data = tablib.Dataset(*data, headers=headers)

    :param \*args: (optional) list of rows to populate Dataset
    :param headers: (optional) list strings for Dataset header row
    :param title: (optional) string to use as title of the Dataset


    .. admonition:: Format Attributes Definition

    If you look at the code, the various output/import formats are not
    defined within the :class:`Dataset` object. To add support for a new format, see
    :ref:`Adding New Formats <newformats>`.

    c                 óâ   — t          d„ |D ¦   «         ¦  «        | _        d | _        g | _        g | _        i | _        |                     d¦  «        | _        |                     d¦  «        | _        d S )Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   ©r   )r    Úargs     r   r"   z#Dataset.__init__.<locals>.<genexpr>—   s(   è è € Ð3Ð3 s�#˜c™(œ(Ð3Ð3Ð3Ð3Ð3Ð3r   ÚheadersÚtitle)	r   Ú_dataÚ_Dataset__headersÚ_separatorsÚ_formattersÚ_dynamic_columnsÚgetra   rb   )r   ÚargsÚkwargss      r   r   zDataset.__init__–   so   € ÝÐ3Ð3¨dÐ3Ñ3Ô3Ñ3Ô3ˆŒ
ØˆŒð ˆÔð ˆÔð !#ˆÔà—z’z )Ñ,Ô,ˆŒà—Z’Z Ñ(Ô(ˆŒ
ˆ
ˆ
r   c                 ó   — | j         S r   )Úheightr$   s    r   r(   zDataset.__len__§   s
   € ØŒ{Ðr   c                 ó  ‡— t          |t          ¦  «        r=|| j        v r-| j                             |¦  «        Šˆfd„| j        D ¦   «         S t
          ‚| j        |         }t          |t          ¦  «        r|j        S d„ |D ¦   «         S )Nc                 ó    •— g | ]
}|‰         ‘ŒS r   r   )r    r   Úposs     €r   ú
<listcomp>z'Dataset.__getitem__.<locals>.<listcomp>®   s   ø€ Ð7Ð7Ð7 S˜˜CœÐ7Ð7Ð7r   c                 ó   — g | ]	}|j         ‘Œ
S r   )rL   )r    Úresults     r   rp   z'Dataset.__getitem__.<locals>.<listcomp>¶   s   € Ð<Ð<Ð<¨˜œÐ<Ð<Ð<r   )rO   rP   ra   rF   rc   ÚKeyErrorr   rL   )r   ÚkeyÚ_resultsro   s      @r   r/   zDataset.__getitem__ª   s‘   ø€ Ý�c�3ÑÔð 	=Ø�d”lÐ"Ð"Ø”l×(Ò(¨Ñ-Ô-�Ø7Ð7Ð7Ð7¨D¬JÐ7Ñ7Ô7Ð7å�à”z #”ˆHÝ˜(¥CÑ(Ô(ð =Ø”~Ð%à<Ð<°8Ð<Ñ<Ô<Ð<r   c                 ó^   — |                       |¦  «         t          |¦  «        | j        |<   d S r   )Ú	_validater   rc   )r   rt   r1   s      r   r2   zDataset.__setitem__¸   s)   € Ø�Š�uÑÔÐÝ˜e™*œ*ˆŒ
�3‰ˆˆr   c                 ó  — t          |t          ¦  «        rl|| j        v r\| j                             |¦  «        }| j        |= || j        v r| j        |= t          | j        ¦  «        D ]\  }}||= || j        |<   Œd S t          ‚| j        |= d S r   )rO   rP   ra   rF   rg   Ú	enumeraterc   rs   )r   rt   ro   r.   r   s        r   r4   zDataset.__delitem__¼   s¨   € Ý�c�3ÑÔð 	 à�d”lÐ"Ð"à”l×(Ò(¨Ñ-Ô-�Ø”L Ð%Ø˜$Ô/Ð/Ð/ØÔ-¨cÐ2å'¨¬
Ñ3Ô3ð (ð (‘F�A�sà˜C˜Ø$'�D”J˜q‘M�Mð(ð (õ
 �à”
˜3���r   c                 ó^   — 	 d| j                              ¦   «         z  S # t          $ r Y dS w xY w)Nz<%s dataset>z<dataset object>©rb   ÚlowerÚAttributeErrorr$   s    r   r+   zDataset.__repr__Ï   sD   € ð	&Ø! T¤Z×%5Ò%5Ñ%7Ô%7Ñ8Ð8øÝð 	&ð 	&ð 	&Ø%Ð%Ð%ð	&øøøó   ‚ ž
,«,c                 óø  ‡— g }| j         r$|                     d„ | j         D ¦   «         ¦  «         |                     d„ | j        D ¦   «         ¦  «         d„ |D ¦   «         }t	          t          t          t          |Ž ¦  «        ¦  «        }| j         r |                     dd„ |D ¦   «         ¦  «         d 	                    d„ t          |¦  «        D ¦   «         ¦  «        Šd 	                    ˆfd	„|D ¦   «         ¦  «        S )
Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS r   )rP   )r    Úhs     r   rp   z#Dataset.__str__.<locals>.<listcomp>Ú   s   € Ð:Ð:Ð: a�3˜q™6œ6Ð:Ð:Ð:r   c              3   óZ   K  — | ]&}t          t          t          |¦  «        ¦  «        V — Œ'd S r   )r   ÚmaprP   ©r    r   s     r   r"   z"Dataset.__str__.<locals>.<genexpr>Ý   s2   è è € Ð@Ð@¨c•d�3�s C™=œ=Ñ)Ô)Ð@Ð@Ð@Ð@Ð@Ð@r   c                 óR   — g | ]$}t          t          t          |¦  «        ¦  «        ‘Œ%S r   )r   rƒ   r'   r„   s     r   rp   z#Dataset.__str__.<locals>.<listcomp>ß   s(   € Ð6Ð6Ð6¨••S�˜c‘]”]Ñ#Ô#Ð6Ð6Ð6r   r   c                 ó   — g | ]}d |z  ‘ŒS ©ú-r   )r    Úlengths     r   rp   z#Dataset.__str__.<locals>.<listcomp>ä   s   € ÐDÐDÐD¨v˜c F™lÐDÐDÐDr   ú|c              3   ó    K  — | ]	}d |z  V — Œ
dS )z{%s:%s}Nr   )r    rI   s     r   r"   z"Dataset.__str__.<locals>.<genexpr>æ   s'   è è € Ð TÐ T°d ¨TÑ!1Ð TÐ TÐ TÐ TÐ TÐ Tr   ú
c              3   ó,   •K  — | ]} ‰j         |Ž V — Œd S r   )Úformat)r    r   Úformat_strings     €r   r"   z"Dataset.__str__.<locals>.<genexpr>è   s.   øè è € ÐFÐF¸Ð-˜Ô-¨sÐ3ÐFÐFÐFÐFÐFÐFr   )rd   rD   Úextendrc   r   rƒ   ÚmaxÚzipr<   Újoinry   )r   rr   ÚlensÚ
field_lensr�   s       @r   Ú__str__zDataset.__str__Õ   s	  ø€ Øˆð Œ>ð 	<Ø�MŠMÐ:Ð:¨4¬>Ð:Ñ:Ô:Ñ;Ô;Ð;ð 	�ŠÐ@Ð@°T´ZÐ@Ñ@Ô@Ñ@Ô@Ð@à6Ð6¨vÐ6Ñ6Ô6ˆÝ�#�c¥3¨ :Ñ.Ô.Ñ/Ô/ˆ
ð Œ>ð 	FØ�MŠM˜!ÐDÐD¸ÐDÑDÔDÑEÔEÐEàŸšÐ TÐ T½iÈ
Ñ>SÔ>SÐ TÑ TÔ TÑTÔTˆà�yŠyÐFÐFÐFÐF¸vÐFÑFÔFÑFÔFÐFr   c                 óB   —  t          j        |¦  «        j        | fi |¤ŽS r   )r   Ú
get_formatÚ
export_set)r   Úfmt_keyrj   s      r   Ú_get_in_formatzDataset._get_in_formatî   s(   € Ø6�xÔ" 7Ñ+Ô+Ô6°tÐFÐF¸vÐFÐFÐFr   c                 ób   — t          |¦  «        } t          j        |¦  «        j        | |fi |¤ŽS r   )r   r   r˜   Ú
import_set)r   rš   Ú	in_streamrj   s       r   Ú_set_in_formatzDataset._set_in_formatñ   s7   € Ý# IÑ.Ô.ˆ	Ø6�xÔ" 7Ñ+Ô+Ô6°t¸YÐQÐQÈ&ÐQÐQÐQr   NFc                 óz  ‡ — |rP‰ j         rFt          |¦  «        ‰ j         k    p,t          |¦  «        ‰ j         t          ‰ j        ¦  «        z
  k    }n]d}nZ|r8t          |¦  «        dk     rd}nB‰ j        rt          |¦  «        ‰ j        k    nd}n t	          ˆ fd„‰ j        D ¦   «         ¦  «        }|rdS |st          ‚dS )z>Assures size of every row in dataset is of proper proportions.Tr   c              3   óH   •K  — | ]}t          |¦  «        ‰j        k    V — Œd S r   )r'   Úwidth)r    Úxr   s     €r   r"   z$Dataset._validate.<locals>.<genexpr>  s0   øè è € ÐDÐD°A�3˜q™6œ6 T¤ZÒ/ÐDÐDÐDÐDÐDÐDr   F)r¢   r'   rg   rl   Úallrc   r	   )r   r   r!   ÚsafetyÚis_valids   `    r   rw   zDataset._validateõ   sß   ø€ àð 	EØŒzð  å˜‘H”H ¤
Ò*ð JÝ˜‘H”H ¤­c°$Ô2GÑ.HÔ.HÑ!HÒIð �ð
  ��Øð 	EÝ�3‰xŒx˜!Š|ˆ|Ø��à8<¼ÐM�C ™HœH¨¬Ò3Ð3È��åÐDÐDÐDÐD¸¼ÐDÑDÔDÑDÔDˆHàð 	Ø�4àð (Ý'Ð'Ø�5r   Tc                 óÔ   ‡ ‡— t          ‰ j        ¦  «        }ˆ fd„Š‰ j        r7|rˆˆ fd„|D ¦   «         }n3t          ‰ j        ¦  «        gˆfd„|D ¦   «         z   }nˆfd„|D ¦   «         }|S )z=Packages Dataset into lists of dictionaries for transmission.c                 ó¾   •‡— ‰j         rF|                      ¦   «         } ‰j         D ]*\  }Š|€ˆfd„| D ¦   «         } Œ ‰| |         ¦  «        | |<   Œ+t          | ¦  «        S )Nc                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   )r    ÚcellÚcallbacks     €r   rp   z8Dataset._package.<locals>.format_row.<locals>.<listcomp>  s!   ø€ Ð>Ð>Ð>°$˜x˜x¨™~œ~Ð>Ð>Ð>r   )rf   r   r   )r   r!   r«   r   s     @€r   Ú
format_rowz$Dataset._package.<locals>.format_row  sw   øø€ àÔð 6Ø—h’h‘j”j�Ø%)Ô%5ð 6ð 6‘M�C˜Ø�{à>Ð>Ð>Ð>¸#Ð>Ñ>Ô>˜˜à#+ 8¨C°¬HÑ#5Ô#5˜˜C™˜Ý˜‘9”9Ðr   c                 ó€   •— g | ]:}t          t          t          ‰j         ‰|¦  «        ¦  «        ¦  «        ¦  «        ‘Œ;S r   )Údictr   r’   ra   )r    r   r¬   r   s     €€r   rp   z$Dataset._package.<locals>.<listcomp>"  s=   ø€ ÐXÐXÐXÈ3��T¥# d¤l°J°J¸s±O´OÑ"DÔ"DÑEÔEÑFÔFÐXÐXÐXr   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   ©r    r   r¬   s     €r   rp   z$Dataset._package.<locals>.<listcomp>$  s!   ø€ Ð.PÐ.PÐ.PÀ3¨z¨z¸#©¬Ð.PÐ.PÐ.Pr   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   r°   s     €r   rp   z$Dataset._package.<locals>.<listcomp>&  s!   ø€ Ð5Ð5Ð5¨�J�J˜s‘O”OÐ5Ð5Ð5r   )r   rc   ra   )r   Údictsrc   Údatar¬   s   `   @r   Ú_packagezDataset._package  s®   øø€ õ �T”ZÑ Ô ˆð
	ð 
	ð 
	ð 
	ð 
	ð Œ<ð 	6Øð QØXÐXÐXÐXÐXÐRWÐXÑXÔX��å˜Tœ\Ñ*Ô*Ð+Ð.PÐ.PÐ.PÐ.PÈ%Ð.PÑ.PÔ.PÑP��à5Ð5Ð5Ð5¨uÐ5Ñ5Ô5ˆDØˆr   c                 ó   — | j         S )z³An *optional* list of strings to be used for header rows and attribute names.

        This must be set manually. The given list length must equal :attr:`Dataset.width`.

        )rd   r$   s    r   Ú_get_headerszDataset._get_headers)  s   € ð Œ~Ðr   c                 ón   — |                       |¦  «         |rt          |¦  «        | _        dS d| _        dS )zValidating headers setter.N)rw   r   rd   )r   Ú
collections     r   Ú_set_headerszDataset._set_headers1  s:   € à�Š�zÑ"Ô"Ð"Øð 	"Ý! *Ñ-Ô-ˆDŒNˆNˆNà!ˆDŒNˆNˆNr   c                 ó*   — |                       ¦   «         S )aÆ  A native Python representation of the :class:`Dataset` object. If headers have
        been set, a list of Python dictionaries will be returned. If no headers have been set,
        a list of tuples (rows) will be returned instead.

        A dataset object can also be imported by setting the `Dataset.dict` attribute: ::

            data = tablib.Dataset()
            data.dict = [{'age': 90, 'first_name': 'Kenneth', 'last_name': 'Reitz'}]

        )r´   r$   s    r   Ú	_get_dictzDataset._get_dict;  s   € ð �}Š}‰ŒÐr   c           	      ój  — d}|sdS t          |t          ¦  «        st          |¦  «        ‚t          |d         t          ¦  «        r=|                      ¦   «          |D ]$}|                      t          |¦  «        ¦  «         Œ%dS t          |d         t          ¦  «        rˆ|                      ¦   «          t          |d                              ¦   «         ¦  «        | _        |D ]C}|                      t          t          | 	                    ¦   «         ¦  «        ¦  «        ¦  «         ŒDdS t          |¦  «        ‚)aÃ  A native Python representation of the Dataset object. If headers have been
        set, a list of Python dictionaries will be returned. If no headers have been
        set, a list of tuples (rows) will be returned instead.

        A dataset object can also be imported by setting the :attr:`Dataset.dict` attribute. ::

            data = tablib.Dataset()
            data.dict = [{'age': 90, 'first_name': 'Kenneth', 'last_name': 'Reitz'}]

        z[Please check format documentation https://tablib.readthedocs.io/en/stable/formats.html#yamlNr   )
rO   r   r
   ÚwiperD   r   r®   Úkeysra   Úvalues)r   ÚpickleÚerror_detailsr   s       r   Ú	_set_dictzDataset._set_dictH  s/  € ðHð 	ð
 ð 	ØˆFå˜&¥$Ñ'Ô'ð 	3õ $ MÑ2Ô2Ð2õ �f˜Q”i¥Ñ&Ô&ð 	3Ø�IŠI‰KŒKˆKØð &ð &�Ø—’�C ™HœHÑ%Ô%Ð%Ð%ð&ð &õ ˜˜qœ	¥4Ñ(Ô(ð 	3Ø�IŠI‰KŒKˆKÝ  q¤	§¢Ñ 0Ô 0Ñ1Ô1ˆDŒLØð 5ð 5�Ø—’�C¥ S§Z¢Z¡\¤\Ñ 2Ô 2Ñ3Ô3Ñ4Ô4Ð4Ð4ð5ð 5õ $ MÑ2Ô2Ð2r   c                 óÆ   — t          |¦  «        }t          |¦  «        dk    r>t          |d         d¦  «        r(t          t          |d         | j        ¦  «        ¦  «        }|S )zsPrepares the given column for insert/append. `col` is not supposed to
           contain any header value.
        r   r   Ú__call__)r   r'   Úhasattrrƒ   rc   )r   r!   s     r   Ú
_clean_colzDataset._clean_colq  sR   € õ
 �3‰iŒiˆåˆs‰8Œ8�qŠ=ˆ=�W S¨¤V¨ZÑ8Ô8ˆ=Ý•s˜3˜qœ6 4¤:Ñ.Ô.Ñ/Ô/ˆCàˆ
r   c                 ó*   — t          | j        ¦  «        S )zfThe number of rows currently in the :class:`Dataset`.
           Cannot be directly modified.
        )r'   rc   r$   s    r   rl   zDataset.height}  s   € õ
 �4”:‰ŒÐr   c                 ó¦   — 	 t          | j        d         ¦  «        S # t          $ r* 	 t          | j        ¦  «        cY S # t          $ r Y Y dS w xY ww xY w)ziThe number of columns currently in the :class:`Dataset`.
           Cannot be directly modified.
        r   )r'   rc   Ú
IndexErrorra   Ú	TypeErrorr$   s    r   r¢   zDataset.width„  su   € ð	Ý�t”z !”}Ñ%Ô%Ð%øÝð 	ð 	ð 	ðÝ˜4œ<Ñ(Ô(Ð(Ð(Ð(øÝð ð ð Ø�q�q�qðøøøð	øøøs)   ‚ œ
A§=ºA½
AÁAÁAÁAc                 óÒ   — t          |¦  «        }|st          |¦  «        }t          j        |¦  «        }t	          |d¦  «        st          d|› d�¦  «        ‚ |j        | |fi |¤Ž | S )zù
        Import `in_stream` to the :class:`Dataset` object using the `format`.
        `in_stream` can be a file-like object, a string, or a bytestring.

        :param \*\*kwargs: (optional) custom configuration to the format `import_set`.
        r�   úFormat z cannot be imported.)r   Údetect_formatr   r˜   rÅ   r
   r�   ©r   rž   rŽ   rj   ÚstreamÚfmts         r   ÚloadzDataset.load’  s„   € õ ! Ñ+Ô+ˆØð 	+Ý" 6Ñ*Ô*ˆFåÔ! &Ñ)Ô)ˆÝ�s˜LÑ)Ô)ð 	LÝ#Ð$J¨fÐ$JÐ$JÐ$JÑKÔKÐKàˆŒ�t˜VÐ.Ð. vÐ.Ð.Ð.Øˆr   c                 óŒ   — t          j        |¦  «        }t          |d¦  «        st          d|› d�¦  «        ‚ |j        | fi |¤ŽS )z•
        Export :class:`Dataset` object to `format`.

        :param \*\*kwargs: (optional) custom configuration to the format `export_set`.
        r™   rÌ   ú cannot be exported.)r   r˜   rÅ   r
   r™   ©r   rŽ   rj   rÐ   s       r   ÚexportzDataset.export¥  s[   € õ Ô! &Ñ)Ô)ˆÝ�s˜LÑ)Ô)ð 	LÝ#Ð$J¨fÐ$JÐ$JÐ$JÑKÔKÐKàˆsŒ~˜dÐ-Ð- fÐ-Ð-Ð-r   r   c                 óN  — |                       |¦  «         t          |¦  «        | j        k     rM| j                             ¦   «         D ]3\  }}t          |¦  «        }|                     | ||¦  «        ¦  «         Œ4| j                             |t          ||¬¦  «        ¦  «         dS )a­  Inserts a row to the :class:`Dataset` at the given index.

        Rows inserted must be the correct size (height or width).

        The default behaviour is to insert the given row to the :class:`Dataset`
        object at the given index.

        You can add :ref:`tags <tags>` to the row you are inserting.
        This gives you the ability to :method:`filter <Dataset.filter>` your
        :class:`Dataset` later.
        )r   N)	rw   r'   r¢   rg   Úitemsr   r<   rc   r   )r   rF   r   r   ro   Úfuncs         r   r<   zDataset.insertµ  s    € ð 	�Š�sÑÔÐÝˆs‰8Œ8�d”jÒ Ð Ø!Ô2×8Ò8Ñ:Ô:ð +ð +‘	��TÝ˜3‘i”i�Ø—
’
˜3   S¡	¤	Ñ*Ô*Ð*Ð*ØŒ
×Ò˜%¥ S¨tÐ!4Ñ!4Ô!4Ñ5Ô5Ð5Ð5Ð5r   c                 ó@   — |                       | j        ||¬¦  «         dS )zzAdds a row to the end of the :class:`Dataset`.
        See :method:`Dataset.insert` for additional documentation.
        ©r   r   N)r<   rl   r   s      r   r>   zDataset.rpushÉ  s$   € ð
 	�Š�D”K S¨tˆÑ4Ô4Ð4Ð4Ð4r   c                 ó6   — |                       d||¬¦  «         dS )zzAdds a row to the top of the :class:`Dataset`.
        See :method:`Dataset.insert` for additional documentation.
        r   rÚ   Nr@   r   s      r   rA   zDataset.lpushÐ  s"   € ð
 	�Š�A˜3 TˆÑ*Ô*Ð*Ð*Ð*r   c                 ó2   — |                       ||¦  «         dS )zoAdds a row to the :class:`Dataset`.
        See :method:`Dataset.insert` for additional documentation.
        NrC   r   s      r   rD   zDataset.append×  s   € ð
 	�
Š
�3˜ÑÔÐÐÐr   c                 ó<   — |D ]}|                       ||¦  «         ŒdS )z[Adds a list of rows to the :class:`Dataset` using
        :method:`Dataset.append`
        N)rD   )r   Úrowsr   r   s       r   r�   zDataset.extendÞ  s4   € ð
 ð 	#ð 	#ˆCØ�KŠK˜˜TÑ"Ô"Ð"Ð"ð	#ð 	#r   c                 ó   — | d         }| d= |S )z:Removes and returns the first row of the :class:`Dataset`.r   r   ©r   Úcaches     r   ÚlpopzDataset.lpopæ  s   € ð �Q”ˆØ�ˆGàˆr   c                 ó   — | d         }| d= |S )ú9Removes and returns the last row of the :class:`Dataset`.éÿÿÿÿr   rà   s     r   ÚrpopzDataset.rpopî  s   € ð �R”ˆØ�ˆHàˆr   c                 ó*   — |                       ¦   «         S )rä   )ræ   r$   s    r   ÚpopzDataset.popö  s   € ð �yŠy‰{Œ{Ðr   c                 óZ   — t          |t          ¦  «        r| |         S t          d¦  «        ‚)z=Returns the row from the :class:`Dataset` at the given index.zRow indices must be integers.)rO   ÚintrÊ   ©r   rF   s     r   rh   zDataset.getû  s/   € õ �e�SÑ!Ô!ð 	Ø˜”;ÐåÐ7Ñ8Ô8Ð8r   c                 óP  — |€g }t          |¦  «        r1|| j        | j        <   t          t	          || j        ¦  «        ¦  «        }|                      |¦  «        }|                      |¬¦  «         | j        rN|st          ¦   «         ‚|r!| j
        dk    rt          |¦  «        rt          ‚| j                             ||¦  «         | j
        rI| j        rBt          | j        ¦  «        D ]+\  }}|                     |||         ¦  «         || j        |<   Œ,dS d„ |D ¦   «         | _        dS )a?  Inserts a column to the :class:`Dataset` at the given index.

        Columns inserted must be the correct height.

        You can also insert a column of a single callable object, which will
        add a new column with the return values of the callable each as an
        item in the column. ::

            data.append_col(col=random.randint)

        If inserting a column, and :attr:`Dataset.headers` is set, the
        header attribute must be set, and will be considered the header for
        that row.

        See :ref:`dyncols` for an in-depth example.
        N©r!   r   c                 ó.   — g | ]}t          |g¦  «        ‘ŒS r   r_   r„   s     r   rp   z&Dataset.insert_col.<locals>.<listcomp>6  s    € Ð4Ð4Ð4¨�#˜s˜e™*œ*Ð4Ð4Ð4r   )Úcallablerg   r¢   r   rƒ   rc   rÆ   rw   ra   r   rl   r'   r	   r<   ry   )r   rF   r!   Úheaderr.   r   s         r   Ú
insert_colzDataset.insert_col  s@  € ð$ ˆ;ØˆCõ �C‰=Œ=ð 	-Ø03ˆDÔ! $¤*Ñ-Ý•s˜3 ¤
Ñ+Ô+Ñ,Ô,ˆCà�oŠo˜cÑ"Ô"ˆØ�Š˜3ˆÑÔÐàŒ<ð 		/àð (Ý#‘o”oÐ%ð ð (˜DœK¨1Ò,Ð,µ°S±´Ð,Ý'Ð'àŒL×Ò  vÑ.Ô.Ð.àŒ;ð 	5˜4œ:ð 	5å# D¤JÑ/Ô/ð $ð $‘��3à—
’
˜5 # a¤&Ñ)Ô)Ð)Ø #�”
˜1‘�ð$ð $ð
 5Ð4°Ð4Ñ4Ô4ˆDŒJˆJˆJr   c                 ó@   — |                       | j        ||¬¦  «         dS )z}Adds a column to the end of the :class:`Dataset`.
        See :method:`Dataset.insert` for additional documentation.
        ©rð   N)rñ   r¢   ©r   r!   rð   s      r   Ú	rpush_colzDataset.rpush_col8  s$   € ð
 	�Š˜œ
 C°ˆÑ7Ô7Ð7Ð7Ð7r   c                 ó6   — |                       d||¬¦  «         dS )z}Adds a column to the top of the :class:`Dataset`.
        See :method:`Dataset.insert` for additional documentation.
        r   ró   N)rñ   rô   s      r   Ú	lpush_colzDataset.lpush_col?  s"   € ð
 	�Š˜˜3 vˆÑ.Ô.Ð.Ð.Ð.r   rˆ   c                 óB   — ||f}| j                              |¦  «         dS )z4Adds a separator to :class:`Dataset` at given index.N)re   rD   )r   rF   ÚtextÚseps       r   Úinsert_separatorzDataset.insert_separatorF  s*   € ð �dˆmˆØÔ×Ò Ñ$Ô$Ð$Ð$Ð$r   c                 óˆ   — | j         s| j        r| j        nd}n| j        r
| j        dz   nd}|                      ||¦  «         dS )z=Adds a :ref:`separator <separators>` to the :class:`Dataset`.r   r   N)ra   rl   rû   )r   rù   rF   s      r   Úappend_separatorzDataset.append_separatorL  sT   € ð Œ|ð 	<Ø#'¤;Ð5�D”K�K°AˆEˆEà)-¬Ð;�T”[ 1‘_�_¸!ˆEà×Ò˜e TÑ*Ô*Ð*Ð*Ð*r   c                 ó2   — |                       ||¦  «         dS )zvAdds a column to the :class:`Dataset`.
        See :method:`Dataset.insert_col` for additional documentation.
        N)rõ   rô   s      r   Ú
append_colzDataset.append_colW  s   € ð
 	�Š�s˜FÑ#Ô#Ð#Ð#Ð#r   c                 ó*   ‡— ˆfd„| j         D ¦   «         S )z@Returns the column from the :class:`Dataset` at the given index.c                 ó    •— g | ]
}|‰         ‘ŒS r   r   )r    r   rF   s     €r   rp   z#Dataset.get_col.<locals>.<listcomp>a  s   ø€ Ð1Ð1Ð1˜s��E”
Ð1Ð1Ð1r   )rc   rë   s    `r   Úget_colzDataset.get_col^  s!   ø€ ð 2Ð1Ð1Ð1 d¤jÐ1Ñ1Ô1Ð1r   c                 óè   — t          |t          ¦  «        r+|| j        v r| j                             |¦  «        }nt          ‚|�|| j        k    r| j                             ||f¦  «         nt          ‚dS )a'  Adds a formatter to the :class:`Dataset`.

        :param col: column to. Accepts index int, header str, or None to apply
                    the formatter to all columns.
        :param handler: reference to callback function to execute against
                        each cell value.
        NT)	rO   rP   ra   rF   rs   r¢   rf   rD   r   )r   r!   Úhandlers      r   Úadd_formatterzDataset.add_formatterg  sy   € õ �c�3ÑÔð 	Ø�d”lÐ"Ð"Ø”l×(Ò(¨Ñ-Ô-��å�àˆ;˜# ¤Ò+Ð+ØÔ×#Ò# S¨' NÑ3Ô3Ð3Ð3å%Ð%àˆtr   c                 óV   ‡— t          | ¦  «        }ˆfd„|j        D ¦   «         |_        |S )z…Returns a new instance of the :class:`Dataset`, excluding any rows
        that do not contain the given :ref:`tags <tags>`.
        c                 ó>   •— g | ]}|                      ‰¦  «        ¯|‘ŒS r   )rT   )r    r   rS   s     €r   rp   z"Dataset.filter.<locals>.<listcomp>‚  s*   ø€ ÐFÐFÐF˜s°S·[²[ÀÑ5EÔ5EÐF�sÐFÐFÐFr   )r   rc   )r   rS   Ú_dsets    ` r   ÚfilterzDataset.filter}  s2   ø€ õ �T‘
”
ˆØFÐFÐFÐF e¤kÐFÑFÔFˆŒàˆr   c                 ó@  ‡— t          |t          ¦  «        r|| j        st          ‚t	          | j        t          |¦  «        |¬¦  «        }t          | j        | j        ¬¦  «        }|D ]+Šˆfd„| j        D ¦   «         }| 	                    |¬¦  «         Œ,n‹| j        r| j        |         }t	          | j        t          |¦  «        |¬¦  «        }t          | j        | j        ¬¦  «        }|D ]5Š| j        rˆfd„| j        D ¦   «         }n‰}| 	                    |¬¦  «         Œ6|S )a  Sort a :class:`Dataset` by a specific column, given string (for
        header) or integer (for column index). The order can be reversed by
        setting ``reverse`` to ``True``.

        Returns a new :class:`Dataset` instance where columns have been
        sorted.
        )rt   Úreverse)ra   rb   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   ©r    rt   rI   s     €r   rp   z Dataset.sort.<locals>.<listcomp>˜  s   ø€ Ð9Ð9Ð9 S�t˜C”yÐ9Ð9Ð9r   ©r   c                 ó    •— g | ]
}‰|         ‘ŒS r   r   r  s     €r   rp   z Dataset.sort.<locals>.<listcomp>¤  s   ø€ Ð=Ð=Ð=¨˜4 œ9Ð=Ð=Ð=r   )
rO   rP   ra   r   Úsortedr®   r   r\   rb   rD   )r   r!   r  Ú_sortedr  r   rI   s         @r   ÚsortzDataset.sort†  s@  ø€ õ �c�3ÑÔð 	&à”<ð $Ý#Ð#å˜TœY­J°s©O¬OÀWÐMÑMÔMˆGÝ D¤L¸¼
ÐCÑCÔCˆEàð &ð &�Ø9Ð9Ð9Ð9¨D¬LÐ9Ñ9Ô9�Ø—’ �Ñ%Ô%Ð%Ð%ð&ð
 Œ|ð (Ø”l 3Ô'�å˜TœY­J°s©O¬OÀWÐMÑMÔMˆGÝ D¤L¸¼
ÐCÑCÔCˆEàð &ð &�Ø”<ð Ø=Ð=Ð=Ð=°´Ð=Ñ=Ô=�C�Cà�CØ—’ �Ñ%Ô%Ð%Ð%àˆr   c                 óH  — t          ¦   «         }| j        d         g| | j        d                  z   }||_        t          | j        ¦  «        D ]U\  }}|| j        d         k    rŒ|g|                      |¦  «        z   }t	          |¦  «        }|                     |¬¦  «         ŒV|S )zÀTranspose a :class:`Dataset`, turning rows into columns and vice
        versa, returning a new ``Dataset`` instance. The first row of the
        original instance becomes the new header row.r   r  )r\   ra   ry   r  r   rD   )r   r  Únew_headersrF   ÚcolumnÚrow_datas         r   Ú_transpose_with_headerszDataset._transpose_with_headers«  s¦   € õ
 ‘	”	ˆð ”| A”Ð'¨$¨t¬|¸A¬Ô*?Ñ?ˆà#ˆŒÝ& t¤|Ñ4Ô4ð 
	'ð 
	'‰MˆE�6à˜œ aœÒ(Ð(àð �x $§,¢,¨uÑ"5Ô"5Ñ5ˆHÝ˜8‘}”}ˆHØ�LŠL˜XˆLÑ&Ô&Ð&Ð&Øˆr   c                 óÎ   — t          ¦   «         }t          dt          | j        d         ¦  «        ¦  «        D ]-}|                      |¦  «        }|                     |¬¦  «         Œ.|S )zÇTranspose a :class:`Dataset`, turning rows into columns and vice
        versa, returning a new ``Dataset`` instance. This instance should not
        have headers, or the dimension would be invalid.r   r  )r\   Úranger'   rc   r  rD   )r   r  rF   r  s       r   Ú_transpose_without_headersz"Dataset._transpose_without_headersÃ  sc   € õ
 ‘	”	ˆõ ˜1�c $¤*¨Q¤-Ñ0Ô0Ñ1Ô1ð 	'ð 	'ˆEØ—|’| EÑ*Ô*ˆHØ�LŠL˜XˆLÑ&Ô&Ð&Ð&àˆr   c                 óh   — | sdS | j         €|                      ¦   «         S |                      ¦   «         S )zåTranspose a :class:`Dataset`, turning rows into columns and vice
        versa, returning a new ``Dataset`` instance. If the instance has
        headers, the first row of the original instance becomes the new header
        row.N)ra   r  r  r$   s    r   Ú	transposezDataset.transposeÑ  s=   € ð ð 	ØˆFàŒ<ÐØ×2Ò2Ñ4Ô4Ð4à×/Ò/Ñ1Ô1Ð1r   c                 óü   — t          |t          ¦  «        sdS | j        |j        k    rt          ‚t	          | ¦  «        }d„ |j        D ¦   «         }d„ |j        D ¦   «         }|                     |¦  «         ||_        |S )zˆStack two :class:`Dataset` instances together by
        joining at the row level, and return new combined
        ``Dataset`` instance.Nc                 ó   — g | ]}|‘ŒS r   r   r„   s     r   rp   z!Dataset.stack.<locals>.<listcomp>î  s   € Ð4Ð4Ð4 ˜Ð4Ð4Ð4r   c                 ó   — g | ]}|‘ŒS r   r   r„   s     r   rp   z!Dataset.stack.<locals>.<listcomp>ï  s   € Ð1Ð1Ð1˜c�cÐ1Ð1Ð1r   )rO   r\   r¢   r	   r   rc   r�   )r   Úotherr  Úrows_to_stackÚ
other_rowss        r   ÚstackzDataset.stackà  s‡   € õ
 ˜%¥Ñ)Ô)ð 	ØˆFàŒ:˜œÒ$Ð$Ý#Ð#õ �T‘
”
ˆà4Ð4¨¬Ð4Ñ4Ô4ˆØ1Ð1 U¤[Ð1Ñ1Ô1ˆ
à×Ò˜ZÑ(Ô(Ð(Ø#ˆŒàˆr   c                 ó°  — t          |t          ¦  «        sdS | j        s|j        r| j        r|j        st          ‚| j        |j        k    rt
          ‚	 | j        |j        z   }n# t          $ r d}Y nw xY wt          ¦   «         }| j        D ]}|                     | |         ¬¦  «         Œ|j        D ]}|                     ||         ¬¦  «         Œ||_        |S )zÙStack two :class:`Dataset` instances together by
        joining at the column level, and return a new
        combined ``Dataset`` instance. If either ``Dataset``
        has headers set, than the other must as well.Nrí   )rO   r\   ra   r   rl   r	   rÊ   rÿ   )r   r   r  r  r  s        r   Ú
stack_colszDataset.stack_colsö  s
  € õ ˜%¥Ñ)Ô)ð 	ØˆFàŒ<ð 	$˜5œ=ð 	$Ø”<ð $ u¤}ð $Ý#Ð#àŒ;˜%œ,Ò&Ð&Ý#Ð#ð	Øœ,¨¬Ñ6ˆKˆKøÝð 	ð 	ð 	ØˆKˆKˆKð	øøøõ ‘	”	ˆà”lð 	/ð 	/ˆFØ×Ò  f¤ÐÑ.Ô.Ð.Ð.à”mð 	0ð 	0ˆFØ×Ò  v¤ÐÑ/Ô/Ð/Ð/à#ˆŒàˆs   ÁA# Á#A2Á1A2c                 ó^   ‡— t          ¦   «         Šˆfd„| j        D ¦   «         | j        dd…<   dS )ziRemoves all duplicate rows from the :class:`Dataset` object
        while maintaining the original order.c                 óz   •— g | ]7}t          |¦  «        ‰v °‰                     t          |¦  «        ¦  «        °5|‘Œ8S r   )rL   Úadd)r    r   Úseens     €r   rp   z-Dataset.remove_duplicates.<locals>.<listcomp>  sH   ø€ ð 
ð 
ð 
Ø­e°C©j¬j¸DÐ.@Ð.@ÀDÇHÂHÍUÐSVÉZÌZÑDXÔDXÐ.@ˆCÐ.@Ð.@Ð.@r   N)rR   rc   )r   r)  s    @r   Úremove_duplicateszDataset.remove_duplicates  sF   ø€ õ ‰uŒuˆð
ð 
ð 
ð 
Øœ:ð
ñ 
ô 
ˆŒ
�1�1�1‰ˆˆr   c                 ó:   — t          ¦   «         | _        d| _        dS )zARemoves all content and headers from the :class:`Dataset` object.N)r   rc   rd   r$   s    r   r½   zDataset.wipe  s   € å‘V”VˆŒ
ØˆŒˆˆr   c                 ó0  ‡ — ‰ sdS |€!t          t          ‰ j        ¦  «        ¦  «        }|€t          ‰ j        ¦  «        }ˆ fd„|D ¦   «         }ˆ fd„|D ¦   «         }t	          ¦   «         }t          |¦  «        |_        g |_        t          ‰ j        ¦  «        D ]}\  }}g }|j        D ]G}|‰ j        v r6‰ j                             |¦  «        }|                     ||         ¦  «         ŒAt          ‚||v r#|                     t          |¦  «        ¬¦  «         Œ~|S )zkReturns a new instance of the :class:`Dataset`,
        including only specified rows and columns.
        Nc                 ó@   •— g | ]}|t          ‰j        ¦  «        v ¯|‘ŒS r   )r  rl   )r    r   r   s     €r   rp   z"Dataset.subset.<locals>.<listcomp>4  s-   ø€ ÐAÐAÐA˜ s­e°D´KÑ.@Ô.@Ð'@Ð'@�Ð'@Ð'@Ð'@r   c                 ó&   •— g | ]}|‰j         v ¯|‘ŒS r   )ra   )r    rð   r   s     €r   rp   z"Dataset.subset.<locals>.<listcomp>5  s%   ø€ ÐDÐDÐD˜6¨V°t´|Ð-CÐ-C�Ð-CÐ-CÐ-Cr   r  )r   r  rl   ra   r\   rc   ry   rF   rD   rs   r   )	r   rÞ   Úcolsr  Úrow_nor   Údata_rowrt   ro   s	   `        r   ÚsubsetzDataset.subset$  s2  ø€ ð ð 	ØˆFàˆ<Ý�˜dœkÑ*Ô*Ñ+Ô+ˆDàˆ<Ý˜œÑ%Ô%ˆDð BÐAÐAÐA˜tÐAÑAÔAˆØDÐDÐDÐD TÐDÑDÔDˆå‘	”	ˆõ ˜T™
œ
ˆŒàˆŒÝ$ T¤ZÑ0Ô0ð 
	0ð 
	0‰KˆF�CØˆHØ”}ð #ð #�Ø˜$œ,Ð&Ð&Øœ,×,Ò,¨SÑ1Ô1�CØ—O’O C¨¤HÑ-Ô-Ð-Ð-å"�Nà˜ˆ~ˆ~Ø—’¥ X¡¤�Ñ/Ô/Ð/øàˆr   )NNF)Tr   )r   )NNr‡   )F)6rU   rV   rW   rX   r   r(   r/   r2   r4   r+   r–   r›   rŸ   rw   r´   r¶   r¹   rZ   ra   r»   rÂ   r®   rÆ   rl   r¢   rÑ   rÕ   r<   r>   rA   rD   r�   râ   ræ   rè   rh   rñ   rõ   r÷   rû   rý   rÿ   r  r  r	  r  r  r  r  r#  r%  r*  r½   r2  r   r   r   r\   r\   g   s{  € € € € € ð,ð ,ð\)ð )ð )ð"ð ð ð=ð =ð =ð%ð %ð %ð ð  ð  ð&&ð &ð &ðGð Gð Gð2Gð Gð GðRð Rð Rðð ð ð ð2ð ð ð ð6ð ð ð"ð "ð "ð ˆh�| \Ñ2Ô2€Gðð ð ð%3ð %3ð %3ðN ˆ8�I˜yÑ)Ô)€Dð
ð 
ð 
ð ðð ñ „Xðð ðð ñ „Xððð ð ð ð&
.ð 
.ð 
.ð 6ð 6ð 6ð 6ð(5ð 5ð 5ð 5ð+ð +ð +ð +ðð ð ð ð#ð #ð #ð #ðð ð ðð ð ðð ð ð
9ð 9ð 9ð/5ð /5ð /5ð /5ðb8ð 8ð 8ð 8ð/ð /ð /ð /ð%ð %ð %ð %ð	+ð 	+ð 	+ð 	+ð$ð $ð $ð $ð2ð 2ð 2ðð ð ð,ð ð ð#ð #ð #ð #ðJð ð ð0ð ð ð2ð 2ð 2ðð ð ð,ð ð ðB
ð 
ð 
ðð ð ð
%ð %ð %ð %ð %ð %r   r\   c                   óZ   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd„ Z	e
d	„ ¦   «         Zd
„ Zd„ ZdS )ÚDatabookz(A book of :class:`Dataset` objects.
    Nc                 ó   — |pg | _         d S r   ©Ú	_datasets)r   Úsetss     r   r   zDatabook.__init__P  s   € Ø˜ ˆŒˆˆr   c                 ó^   — 	 d| j                              ¦   «         z  S # t          $ r Y dS w xY w)Nz<%s databook>z<databook object>r{   r$   s    r   r+   zDatabook.__repr__S  sD   € ð	'Ø" d¤j×&6Ò&6Ñ&8Ô&8Ñ9Ð9øÝð 	'ð 	'ð 	'Ø&Ð&Ð&ð	'øøør~   c                 ó   — g | _         dS )z@Removes all :class:`Dataset` objects from the :class:`Databook`.Nr6  r$   s    r   r½   zDatabook.wipeY  s   € àˆŒˆˆr   c                 ó   — | j         S r   r6  r$   s    r   ÚsheetszDatabook.sheets]  s
   € ØŒ~Ðr   c                 ór   — t          |t          ¦  «        r| j                             |¦  «         dS t          ‚)z5Adds given :class:`Dataset` to the :class:`Databook`.N)rO   r\   r7  rD   r   )r   Údatasets     r   Ú	add_sheetzDatabook.add_sheet`  s6   € å�g�wÑ'Ô'ð 	%ØŒN×!Ò! 'Ñ*Ô*Ð*Ð*Ð*å$Ð$r   c                 ó|   — g }| j         D ]1}|                     |j        |                     ¦   «         dœ¦  «         Œ2|S )z(Packages :class:`Databook` for delivery.)rb   r³   )r7  rD   rb   r´   )r   Ú	collectorÚdsets      r   r´   zDatabook._packageg  sW   € àˆ	à”Nð 	ð 	ˆDØ×ÒØœØŸš™œðð ñ ô ð ð ð Ðr   c                 ó*   — t          | j        ¦  «        S )zDThe number of the :class:`Dataset` objects within :class:`Databook`.)r'   r7  r$   s    r   ÚsizezDatabook.sizer  s   € õ �4”>Ñ"Ô"Ð"r   c                 óÒ   — t          |¦  «        }|st          |¦  «        }t          j        |¦  «        }t	          |d¦  «        st          d|› d�¦  «        ‚ |j        | |fi |¤Ž | S )zû
        Import `in_stream` to the :class:`Databook` object using the `format`.
        `in_stream` can be a file-like object, a string, or a bytestring.

        :param \*\*kwargs: (optional) custom configuration to the format `import_book`.
        Úimport_bookrÌ   z cannot be loaded.)r   rÍ   r   r˜   rÅ   r
   rF  rÎ   s         r   rÑ   zDatabook.loadw  s„   € õ ! Ñ+Ô+ˆØð 	+Ý" 6Ñ*Ô*ˆFåÔ! &Ñ)Ô)ˆÝ�s˜MÑ*Ô*ð 	JÝ#Ð$H¨fÐ$HÐ$HÐ$HÑIÔIÐIàˆŒ˜˜fÐ/Ð/¨Ð/Ð/Ð/Øˆr   c                 óŒ   — t          j        |¦  «        }t          |d¦  «        st          d|› d�¦  «        ‚ |j        | fi |¤ŽS )z—
        Export :class:`Databook` object to `format`.

        :param \*\*kwargs: (optional) custom configuration to the format `export_book`.
        Úexport_bookrÌ   rÓ   )r   r˜   rÅ   r
   rH  rÔ   s       r   rÕ   zDatabook.exportŠ  s[   € õ Ô! &Ñ)Ô)ˆÝ�s˜MÑ*Ô*ð 	LÝ#Ð$J¨fÐ$JÐ$JÐ$JÑKÔKÐKàˆsŒ˜tÐ.Ð. vÐ.Ð.Ð.r   r   )rU   rV   rW   rX   r   r+   r½   r<  r?  r´   rZ   rD  rÑ   rÕ   r   r   r   r4  r4  L  s¶   € € € € € ðð ð$ð $ð $ð $ð'ð 'ð 'ðð ð ðð ð ð%ð %ð %ð	ð 	ð 	ð ð#ð #ñ „Xð#ðð ð ð&
/ð 
/ð 
/ð 
/ð 
/r   r4  c                 ó   — t          | ¦  «        } d}t          j        ¦   «         D ]¨}	 |                     | ¦  «        r/|j        }	 t          | d¦  «        r|                      d¦  «          nbn# t          $ r Y nw xY wt          | d¦  «        r|                      d¦  «         Œ~# t          | d¦  «        r|                      d¦  «         w w xY w|S )zMReturn format name of given stream (file-like object, string, or bytestring).NÚseekr   )r   r   ÚformatsÚdetectrb   rÅ   rJ  r}   )rÏ   Ú	fmt_titlerÐ   s      r   rÍ   rÍ   —  só   € å˜VÑ$Ô$€FØ€IÝÔÑ!Ô!ð 	ð 	ˆð	Ø�zŠz˜&Ñ!Ô!ð ØœI�	Øõ �v˜vÑ&Ô&ð Ø—’˜A‘”�øøðøõ ð 	ð 	ð 	ØˆDð	øøøõ �v˜vÑ&Ô&ð Ø—’˜A‘”�øøõ �v˜vÑ&Ô&ð Ø—’˜A‘”��ðøøøàÐs)   ¨A-Á,B#Á-
A:Á7B#Á9A:Á:B#Â#(CNc                 ó8   —  t          ¦   «         j        | |fi |¤ŽS ©zIReturn dataset of given stream (file-like object, string, or bytestring).)r\   rÑ   ©rÏ   rŽ   rj   s      r   r�   r�   ¨  s$   € ð �7‰9Œ9Œ>˜& &Ð3Ð3¨FÐ3Ð3Ð3r   c                 ó8   —  t          ¦   «         j        | |fi |¤ŽS rO  )r4  rÑ   rP  s      r   rF  rF  ®  s$   € ð �8‰:Œ:Œ?˜6 6Ð4Ð4¨VÐ4Ð4Ð4r   r   )rX   r   Úoperatorr   Ú
exceptionsr   r   r   r	   r
   rK  r   Úutilsr   Ú	__title__Ú
__author__Ú__license__Ú__copyright__Ú__docformat__r   r\   r4  rÍ   r�   rF  Úregister_builtinsr   r   r   ú<module>r[     s�  ððð ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "à€	Ø€
Ø€Ø>€Ø"€ðE8ð E8ð E8ð E8ð E8ñ E8ô E8ð E8ðPbð bð bð bð bñ bô bð bðJH/ð H/ð H/ð H/ð H/ñ H/ô H/ð H/ðVð ð ð"4ð 4ð 4ð 4ð5ð 5ð 5ð 5ð €Ô Ñ Ô Ð Ð Ð r   