§
    tŠtjÔ ã            
      óJ  — U d Z ddlmZ ddlmZ ddlZddlmZmZ ddl	Z	ddl
Z
ddl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 ddlZddlZddlmZmZmZ dd	l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.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlQmRZRmSZSmTZT ddlUmVZV ddlWmXZX ddlYmZc m[Z\ ddl]m^Z^m_Z_ ddl`maZbmcZc ddldmeZe ddlfmgZg ddlhmiZimjZj er6ddlkmlZlmmZmmnZnmoZo ddlpmqZqmrZr dd lsmtZtmuZumvZv dd!lwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~ dd"lm€Z€ d#Z�d$Z‚dÁd)„Zƒd*„ Z„e^Z…d+e†d,<   dÂd/„Z‡d0Zˆd1e†d2<   d3Z‰d1e†d4<   d5ZŠd1e†d6<   d7d7d8d8d9œZ‹eFdgiZŒd:Z�d1e†d;<   d<ZŽd1e†d=<    ej�        d>¦  «        5   ej�        d?d@e�ej‘        ¬A¦  «          ej�        dBdeŽ ej’        g dC¢¦  «        ¬A¦  «         ddd¦  «         n# 1 swxY w Y   da“dDe†dE<   d@a”dF„ Z•	 	 	 	 	 	 	 	 	 	 	 	 dÃdÄd_„Z– e4d`¦  «        	 	 	 	 	 	 	 	 	 dÅdÆdj„¦   «         Z—dÇdn„Z˜ e4d`¦  «         G do„ dp¦  «        ¦   «         Z™ G dq„ dr¦  «        Zš G ds„ dt¦  «        Z› G du„ dve›¦  «        Zœ G dw„ dxe›¦  «        Z� G dy„ dze�¦  «        Zž G d{„ d|ež¦  «        ZŸ G d}„ d~¦  «        Z  G d„ d€e ¦  «        Z¡ G d�„ d‚e¡¦  «        Z¢ G dƒ„ d„e¡¦  «        Z£ G d…„ d†e£¦  «        Z¤ G d‡„ dˆe ¦  «        Z¥ G d‰„ dŠe¥¦  «        Z¦ G d‹„ dŒe¥¦  «        Z§ G d�„ dŽe§¦  «        Z¨ G d�„ d�e¨¦  «        Z© G d‘„ d’e©¦  «        Zª G d“„ d”e¨¦  «        Z« G d•„ d–e¨¦  «        Z¬	 dÈdÉd�„Z­dÊd¡„Z®dËd§„Z¯dÌd©„Z°dÍd¬„Z±dÎd°„Z²dÏd³„Z³dÏd´„Z´dÐd¶„ZµdÑd·„Z¶dÒd¸„Z·dÓd»„Z¸dÔd½„Z¹dÕd¾„Zº G d¿„ dÀ¦  «        Z»dS )ÖzY
High level interface to PyTables for reading and writing pandas data structures
to disk
é    )Úannotations)ÚsuppressN)ÚdateÚtzinfo)Údedent)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚSelfÚ	TypeAliasÚcastÚoverload)ÚconfigÚ
get_optionÚusing_string_dtype)ÚlibÚwriters)Úis_string_array)Ú	timezones)ÚHAS_PYARROW)Úimport_optional_dependency)Úpatch_pickle)ÚAttributeConflictWarningÚClosedFileErrorÚIncompatibilityWarningÚPerformanceWarningÚPossibleDataLossError)Úcache_readonlyÚ
set_module)Úfind_stack_level)Úensure_objectÚis_bool_dtypeÚis_complex_dtypeÚis_list_likeÚis_string_dtypeÚneeds_i8_conversion)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtypeÚPeriodDtype)Úarray_equivalent)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚStringDtypeÚTimedeltaIndexÚconcatÚisna)ÚCategoricalÚDatetimeArrayÚPeriodArray)Útz_to_dtype)ÚBaseStringArray)ÚPyTablesExprÚmaybe_expression)ÚarrayÚextract_array)Úensure_index)Ústringify_path)ÚadjoinÚpprint_thing)ÚCallableÚHashableÚIteratorÚSequence)Ú
ModuleTypeÚTracebackType)ÚColÚFileÚNode)ÚAnyArrayLikeÚ	ArrayLikeÚAxisIntÚDtypeArgÚFilePathÚTimeUnitÚnpt)ÚBlockz0.15.2úUTF-8Úencodingú
str | NoneÚreturnÚstrc                ó   — | €t           } | S ©N)Ú_default_encoding©rW   s    úP/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/io/pytables.pyÚ_ensure_encodingr`   –   s   € àÐÝ$ˆà€Oó    c                óN   — t          | t          ¦  «        rt          | ¦  «        } | S )zÓ
    Ensure that an index / column name is a str (python 3); otherwise they
    may be np.string dtype. Non-string dtypes are passed through unchanged.

    https://github.com/pandas-dev/pandas/issues/13492
    )Ú
isinstancerZ   ©Únames    r_   Ú_ensure_strrf   ž   s&   € õ �$�ÑÔð Ý�4‰yŒyˆØ€Kra   r   ÚTermÚscope_levelÚintc                óÎ   ‡— |dz   Št          | t          t          f¦  «        rˆfd„| D ¦   «         } n t          | ¦  «        rt	          | ‰¬¦  «        } | �t          | ¦  «        r| ndS )zÔ
    Ensure that the where is a Term or a list of Term.

    This makes sure that we are capturing the scope of variables that are
    passed create the terms here with a frame_level=2 (we are 2 levels down)
    é   c                ó^   •— g | ])}|®t          |¦  «        rt          |‰dz   ¬¦  «        n|‘Œ*S )Nrk   ©rh   )r>   rg   )Ú.0ÚtermÚlevels     €r_   ú
<listcomp>z _ensure_term.<locals>.<listcomp>¸   sM   ø€ ð 
ð 
ð 
àØÐõ 2BÀ$Ñ1GÔ1GÐQ�D� 5¨1¡9Ð-Ñ-Ô-Ð-ÈTàÐÐra   rm   N)rc   ÚlistÚtupler>   rg   Úlen)Úwhererh   rp   s     @r_   Ú_ensure_termrv   ­   sŠ   ø€ ð ˜!‰O€EÝ�%�$¥˜Ñ'Ô'ð /ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆˆõ
 
˜%Ñ	 Ô	 ð /Ý�U¨Ð.Ñ.Ô.ˆØ�M¥S¨¡Z¤Z�Mˆ5ˆ5°TÐ9ra   z¨
where criteria is being ignored as this version [%s] is too old (or
not-defined), read the file in and write it out to a new file to upgrade (with
the copy_to method)
r
   Úincompatibility_doczu
the [%s] attribute of the existing index is [%s] which conflicts with the new
[%s], resetting the attribute to None
Úattribute_conflict_docz‘
your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->%s,key->%s] [items->%s]
Úperformance_docÚfixedÚtable)Úfrz   Útr{   z;
: boolean
    drop ALL nan rows when appending to a table
Ú
dropna_docz~
: format
    default format writing format, if None, then
    put will default to 'fixed' and append will default to 'table'
Ú
format_doczio.hdfÚdropna_tableF)Ú	validatorÚdefault_format)rz   r{   NzModuleType | NoneÚ
_table_modc                 ó¢   — t           €Bdd l} | a t          t          ¦  «        5  | j        j        dk    ad d d ¦  «         n# 1 swxY w Y   t           S )Nr   Ústrict)rƒ   Útablesr   ÚAttributeErrorÚfileÚ_FILE_OPEN_POLICYÚ!_table_file_open_policy_is_strict)r†   s    r_   Ú_tablesr‹   ñ   s—   € õ ÐØˆˆˆàˆ
õ
 •nÑ%Ô%ð 	ð 	à”Ô-°Ò9ð .ð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ
 Ðs   ¢?¿AÁAÚaTr…   Úpath_or_bufúFilePath | HDFStoreÚkeyÚvalueúDataFrame | SeriesÚmodeÚ	complevelú
int | NoneÚcomplibÚappendÚboolÚformatÚindexÚmin_itemsizeúint | dict[str, int] | NoneÚdropnaúbool | NoneÚdata_columnsú Literal[True] | list[str] | NoneÚerrorsÚNonec           
     ó(  ‡‡‡‡‡	‡
‡‡‡‡— |rˆˆˆˆˆˆˆˆ	ˆ
ˆf
d„}nˆˆˆˆˆˆˆˆ	ˆ
ˆf
d„}t          | t          ¦  «        r || ¦  «         dS t          | ¦  «        } t          | |||¬¦  «        5 } ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z+store this object, close it if we opened itc                óB   •
— |                       ‰‰
‰‰‰‰	‰‰‰‰¬¦
  «
        S )N)r˜   r™   rš   Únan_reprœ   rž   r    rW   )r–   ©Ústorerž   rœ   rW   r    r˜   r™   r�   rš   r¤   r�   s    €€€€€€€€€€r_   ú<lambda>zto_hdf.<locals>.<lambda>  s8   ø€ ˜%Ÿ,š,ØØØØØ%ØØØ%ØØð 'ñ 
ô 
€ ra   c                óB   •
— |                       ‰‰
‰‰‰‰	‰‰‰‰¬¦
  «
        S )N)r˜   r™   rš   r¤   rž   r    rW   rœ   ©Úputr¥   s    €€€€€€€€€€r_   r§   zto_hdf.<locals>.<lambda>(  s8   ø€ ˜%Ÿ)š)ØØØØØ%ØØ%ØØØð $ñ 
ô 
€ ra   )r’   r“   r•   N)rc   ÚHDFStorerB   )r�   r�   r�   r’   r“   r•   r–   r˜   r™   rš   r¤   rœ   rž   r    rW   r|   r¦   s    ``    ````````  r_   Úto_hdfr¬     s]  øøøøøøøøøø€ ð$ ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆˆð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ �+�xÑ(Ô(ð Ø	ˆˆ+‰Œˆˆˆå$ [Ñ1Ô1ˆÝØ˜d¨iÀð
ñ 
ô 
ð 	àØˆAˆe‰HŒHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s   Á.BÂBÂBÚpandasÚrru   ústr | list | NoneÚstartÚstopÚcolumnsúlist[str] | NoneÚiteratorÚ	chunksizec
           
     óâ  — |dvrt          d|› d�¦  «        ‚|�t          |d¬¦  «        }t          | t          ¦  «        r| j        st          d¦  «        ‚| }d}n”t          | ¦  «        } t          | t          ¦  «        st          d	¦  «        ‚	 t          j
                             | ¦  «        }n# t          t           f$ r d}Y nw xY w|st          d
| › d�¦  «        ‚t          | f||dœ|
¤Ž}d}	 |€q|                     ¦   «         }t          |¦  «        dk    rt          d¦  «        ‚|d         }|dd…         D ]!}t!          ||¦  «        st          d¦  «        ‚Œ"|j        }|                     |||||||	|¬¦  «        S # t           t          t&          f$ rW t          | t          ¦  «        s@t)          t*          ¦  «        5  |                     ¦   «          ddd¦  «         n# 1 swxY w Y   ‚ w xY w)a>
  
    Read from the store, close it if we opened it.

    Retrieve pandas object stored in file, optionally based on where
    criteria.

    .. warning::

       Pandas uses PyTables for reading and writing HDF5 files, which allows
       serializing object-dtype data with pickle when using the "fixed" format.
       Loading pickled data received from untrusted sources can be unsafe.

       See: https://docs.python.org/3/library/pickle.html for more.

    Parameters
    ----------
    path_or_buf : str, path object, pandas.HDFStore
        Any valid string path is acceptable. Only supports the local file system,
        remote URLs and file-like objects are not supported.

        If you want to pass in a path object, pandas accepts any
        ``os.PathLike``.

        Alternatively, pandas accepts an open :class:`pandas.HDFStore` object.

    key : object, optional
        The group identifier in the store. Can be omitted if the HDF file
        contains a single pandas object.
    mode : {'r', 'r+', 'a'}, default 'r'
        Mode to use when opening the file. Ignored if path_or_buf is a
        :class:`pandas.HDFStore`. Default is 'r'.
    errors : str, default 'strict'
        Specifies how encoding and decoding errors are to be handled.
        See the errors argument for :func:`open` for a full list
        of options.
    where : list, optional
        A list of Term (or convertible) objects.
    start : int, optional
        Row number to start selection.
    stop : int, optional
        Row number to stop selection.
    columns : list, optional
        A list of columns names to return.
    iterator : bool, optional
        Return an iterator object.
    chunksize : int, optional
        Number of rows to include in an iteration when using an iterator.
    **kwargs
        Additional keyword arguments passed to HDFStore.

    Returns
    -------
    object
        The selected object. Return type depends on the object stored.

    See Also
    --------
    DataFrame.to_hdf : Write an HDF file from a DataFrame.
    HDFStore : Low-level access to HDF files.

    Notes
    -----
    When ``errors="surrogatepass"``, ``pd.options.future.infer_string`` is true,
    and PyArrow is installed, if a UTF-16 surrogate is encountered when decoding
    to UTF-8, the resulting dtype will be
    ``pd.StringDtype(storage="python", na_value=np.nan)``.

    Examples
    --------
    >>> df = pd.DataFrame([[1, 1.0, "a"]], columns=["x", "y", "z"])  # doctest: +SKIP
    >>> df.to_hdf("./store.h5", "data")  # doctest: +SKIP
    >>> reread = pd.read_hdf("./store.h5")  # doctest: +SKIP
    )r®   úr+rŒ   zmode zG is not allowed while performing a read. Allowed modes are r, r+ and a.Nrk   rm   z&The HDFStore must be open for reading.Fz5Support for generic buffers has not been implemented.zFile z does not exist)r’   r    Tr   z]Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.z?key must be provided when HDF5 file contains multiple datasets.)ru   r°   r±   r²   r´   rµ   Ú
auto_close)Ú
ValueErrorrv   rc   r«   Úis_openÚOSErrorrB   rZ   ÚNotImplementedErrorÚosÚpathÚexistsÚ	TypeErrorÚFileNotFoundErrorÚgroupsrt   Ú_is_metadata_ofÚ_v_pathnameÚselectÚLookupErrorr   r‡   Úclose)r�   r�   r’   r    ru   r°   r±   r²   r´   rµ   Úkwargsr¦   r¸   r¿   rÂ   Úcandidate_only_groupÚgroup_to_checks                    r_   Úread_hdfrË   ?  sÉ  € ðn Ð#Ð#Ð#Ýð.�Dð .ð .ð .ñ
ô 
ð 	
ð
 ÐÝ˜U°Ð2Ñ2Ô2ˆå�+�xÑ(Ô(ð ØÔ"ð 	DÝÐBÑCÔCÐCàˆØˆ
ˆ
å$ [Ñ1Ô1ˆÝ˜+¥sÑ+Ô+ð 	Ý%ØGñô ð ð	Ý”W—^’^ KÑ0Ô0ˆFˆFøõ �:Ð&ð 	ð 	ð 	ØˆFˆFˆFð	øøøð ð 	JÝ#Ð$H¨KÐ$HÐ$HÐ$HÑIÔIÐIå˜ÐI¨4¸ÐIÐIÀ&ÐIÐIˆð ˆ
ð%Øˆ;Ø—\’\‘^”^ˆFÝ�6‰{Œ{˜aÒÐÝ ðDñô ð ð $*¨!¤9Ð ð #)¨¨¨¤*ð ð �Ý& ~Ð7KÑLÔLð Ý$ð;ñô ð ðð
 'Ô2ˆCØ�|Š|ØØØØØØØØ!ð ñ 	
ô 	
ð 		
øõ �	¥;Ð/ð ð ð Ý˜+¥xÑ0Ô0ð 	å�.Ñ)Ô)ð ð Ø—’‘”�ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 	ðøøøsD   ÂB/ Â/CÃCÃ0BF  Æ A G.Ç G!ÇG.Ç!G%	Ç%G.Ç(G%	Ç)G.ÚgrouprM   Úparent_groupc                óœ   — | j         |j         k    rdS | }|j         dk    r,|j        }||k    r|j        dk    rdS |j        }|j         dk    °,dS )zDCheck if a given group is a metadata group for a given parent_group.Frk   ÚmetaT)Ú_v_depthÚ	_v_parentÚ_v_name)rÌ   rÍ   ÚcurrentÚparents       r_   rÃ   rÃ   â  sm   € à„~˜Ô.Ò.Ð.Øˆuà€GØ
Ô
˜QÒ
Ð
ØÔ"ˆØ�\Ò!Ð! g¤o¸Ò&?Ð&?Ø�4ØÔ#ˆð	 Ô
˜QÒ
Ð
ð
 ˆ5ra   c                  óv  — e Zd ZU dZded<   ded<   	 	 	 	 dtdud„Zdvd„Zed„ ¦   «         Zedvd„¦   «         Z	dwd„Z
dxd„Zdyd„Zdzd„Zd{d„Zd|d„Zdvd„Zd}d„Zd~d&„Zdd€d*„Zd�d,„Zd‚d.„Zdƒd„d/„Zd…d0„Zed†d1„¦   «         Zd‡dˆd3„Zdwd4„Z	 	 	 	 	 	 	 d‰dŠd8„Z	 	 	 d‹dŒd;„Z	 	 d�dŽd=„Z	 	 	 	 	 	 	 	 d�d�d>„Z	 	 	 	 	 	 	 	 	 	 	 	 d‘d’dL„Zd‹dydM„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d“d”dP„Z!	 	 	 d•d–dS„Z"	 	 	 d‹d—dW„Z#d˜dY„Z$d™dšd]„Z%d›d_„Z&dœda„Z'	 	 	 	 	 	 	 d�džde„Z(dvdf„Z)d…dg„Z*dŸdi„Z+	 	 	 	 d d¡dm„Z,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¢d£dn„Z-d¤dq„Z.d¥dr„Z/d¦ds„Z0dS )§r«   aP	  
    Dict-like IO interface for storing pandas objects in PyTables.

    Either Fixed or Table format.

    .. warning::

       Pandas uses PyTables for reading and writing HDF5 files, which allows
       serializing object-dtype data with pickle when using the "fixed" format.
       Loading pickled data received from untrusted sources can be unsafe.

       See: https://docs.python.org/3/library/pickle.html for more.

    Parameters
    ----------
    path : str
        File path to HDF5 file.
    mode : {'a', 'w', 'r', 'r+'}, default 'a'

        ``'r'``
            Read-only; no data can be modified.
        ``'w'``
            Write; a new file is created (an existing file with the same
            name would be deleted).
        ``'a'``
            Append; an existing file is opened for reading and writing,
            and if the file does not exist it is created.
        ``'r+'``
            It is similar to ``'a'``, but the file must already exist.
    complevel : int, 0-9, default None
        Specifies a compression level for data.
        A value of 0 or None disables compression.
    complib : {'zlib', 'lzo', 'bzip2', 'blosc'}, default 'zlib'
        Specifies the compression library to be used.
        These additional compressors for Blosc are supported
        (default if no compressor specified: 'blosc:blosclz'):
        {'blosc:blosclz', 'blosc:lz4', 'blosc:lz4hc', 'blosc:snappy',
         'blosc:zlib', 'blosc:zstd'}.
        Specifying a compression library which is not available issues
        a ValueError.
    fletcher32 : bool, default False
        If applying compression use the fletcher32 checksum.
    **kwargs
        These parameters will be passed to the PyTables open_file method.

    Examples
    --------
    >>> bar = pd.DataFrame(np.random.randn(10, 4))
    >>> store = pd.HDFStore("test.h5")
    >>> store["foo"] = bar  # write to HDF5
    >>> bar = store["foo"]  # retrieve
    >>> store.close()

    **Create or load HDF5 file in-memory**

    When passing the `driver` option to the PyTables open_file method through
    **kwargs, the HDF5 file is loaded or created in-memory and will only be
    written when closed:

    >>> bar = pd.DataFrame(np.random.randn(10, 4))
    >>> store = pd.HDFStore("test.h5", driver="H5FD_CORE")
    >>> store["foo"] = bar
    >>> store.close()  # only now, data is written to disk
    zFile | NoneÚ_handlerZ   Ú_moderŒ   NFr’   r“   r”   Ú
fletcher32r—   rY   r¡   c                ón  — d|v rt          d¦  «        ‚t          d¦  «        }|�+||j        j        vrt          d|j        j        › d�¦  «        ‚|€|�|j        j        }t          |¦  «        | _        |€d}|| _        d | _        |r|nd| _	        || _
        || _        d | _         | j        d	d|i|¤Ž d S )
Nr˜   z-format is not a defined argument for HDFStorer†   zcomplib only supports z compression.rŒ   r   r’   © )r¹   r   ÚfiltersÚall_complibsÚdefault_complibrB   Ú_pathr×   rÖ   Ú
_complevelÚ_complibÚ_fletcher32Ú_filtersÚopen)Úselfr¾   r’   r“   r•   rØ   rÈ   r†   s           r_   Ú__init__zHDFStore.__init__6  së   € ð �vÐÐÝÐLÑMÔMÐMå+¨HÑ5Ô5ˆàÐ 7°&´.Ô2MÐ#MÐ#MÝØS¨¬Ô)DÐSÐSÐSñô ð ð ˆ?˜yÐ4Ø”nÔ4ˆGå# DÑ)Ô)ˆŒ
Øˆ<ØˆDØˆŒ
ØˆŒØ'0Ð7˜)˜)°aˆŒØˆŒØ%ˆÔØˆŒØˆŒ	Ð&Ð&�tÐ&˜vÐ&Ð&Ð&Ð&Ð&ra   c                ó   — | j         S r\   ©rÞ   ©rä   s    r_   Ú
__fspath__zHDFStore.__fspath__W  s
   € ØŒzÐra   c                óT   — |                       ¦   «          | j        €J ‚| j        j        S )zreturn the root node)Ú_check_if_openrÖ   Úrootrè   s    r_   rì   zHDFStore.rootZ  s/   € ð 	×ÒÑÔÐØŒ|Ð'Ð'Ð'ØŒ|Ô Ð ra   c                ó   — | j         S r\   rç   rè   s    r_   ÚfilenamezHDFStore.filenamea  ó
   € àŒzÐra   r�   c                ó,   — |                       |¦  «        S r\   )Úget©rä   r�   s     r_   Ú__getitem__zHDFStore.__getitem__e  s   € Ø�xŠx˜‰}Œ}Ðra   c                ó2   — |                       ||¦  «         d S r\   r©   )rä   r�   r�   s      r_   Ú__setitem__zHDFStore.__setitem__h  s   € Ø�Š��eÑÔÐÐÐra   c                ó,   — |                       |¦  «        S r\   )Úremoverò   s     r_   Ú__delitem__zHDFStore.__delitem__k  s   € Ø�{Š{˜3ÑÔÐra   re   c                ó¬   — 	 |                       |¦  «        S # t          t          f$ r Y nw xY wt          dt	          | ¦  «        j        › d|› d�¦  «        ‚)z$allow attribute access to get storesú'z' object has no attribute ')rñ   ÚKeyErrorr   r‡   ÚtypeÚ__name__)rä   re   s     r_   Ú__getattr__zHDFStore.__getattr__n  sm   € ð	Ø—8’8˜D‘>”>Ð!øÝ�/Ð*ð 	ð 	ð 	ØˆDð	øøøåØG•�T‘
”
Ô#ÐGÐGÀÐGÐGÐGñ
ô 
ð 	
s   ‚ —+ª+c                ób   — |                       |¦  «        }|�|j        }|||dd…         fv rdS dS )zx
        check for existence of this key
        can match the exact pathname or the pathnm w/o the leading '/'
        Nrk   TF)Úget_noderÄ   )rä   r�   Únodere   s       r_   Ú__contains__zHDFStore.__contains__x  sE   € ð
 �}Š}˜SÑ!Ô!ˆØÐØÔ#ˆDØ�t˜T ! " "œXÐ&Ð&Ð&Ø�tØˆura   ri   c                óD   — t          |                      ¦   «         ¦  «        S r\   )rt   rÂ   rè   s    r_   Ú__len__zHDFStore.__len__„  s   € Ý�4—;’;‘=”=Ñ!Ô!Ð!ra   c                óT   — t          | j        ¦  «        }t          | ¦  «        › d|› d�S )Nú
File path: ú
)rD   rÞ   rü   )rä   Úpstrs     r_   Ú__repr__zHDFStore.__repr__‡  s.   € Ý˜DœJÑ'Ô'ˆÝ�t‘*”*Ð3Ð3¨4Ð3Ð3Ð3Ð3ra   r   c                ó   — | S r\   rÚ   rè   s    r_   Ú	__enter__zHDFStore.__enter__‹  s   € Øˆra   Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | Nonec                ó.   — |                       ¦   «          d S r\   )rÇ   )rä   r  r  r  s       r_   Ú__exit__zHDFStore.__exit__Ž  s   € ð 	�
Š
‰Œˆˆˆra   r­   Úincludeú	list[str]c                óÚ   — |dk    rd„ |                       ¦   «         D ¦   «         S |dk    r/| j        €J ‚d„ | j                             dd¬¦  «        D ¦   «         S t          d	|› d
�¦  «        ‚)af  
        Return a list of keys corresponding to objects stored in HDFStore.

        Parameters
        ----------

        include : str, default 'pandas'
                When kind equals 'pandas' return pandas objects.
                When kind equals 'native' return native HDF5 Table objects.

        Returns
        -------
        list
            List of ABSOLUTE path-names (e.g. have the leading '/').

        Raises
        ------
        raises ValueError if kind has an illegal value

        See Also
        --------
        HDFStore.info : Prints detailed information on the store.
        HDFStore.get_node : Returns the node with the key.
        HDFStore.get_storer : Returns the storer object for a key.

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> store.get("data")  # doctest: +SKIP
        >>> print(store.keys())  # doctest: +SKIP
        ['/data1', '/data2']
        >>> store.close()  # doctest: +SKIP
        r­   c                ó   — g | ]	}|j         ‘Œ
S rÚ   ©rÄ   ©rn   Úns     r_   rq   z!HDFStore.keys.<locals>.<listcomp>»  s   € Ð9Ð9Ð9 a�A”MÐ9Ð9Ð9ra   ÚnativeNc                ó   — g | ]	}|j         ‘Œ
S rÚ   r  r  s     r_   rq   z!HDFStore.keys.<locals>.<listcomp>¿  s'   € ð ð ð Ø"#�”ðð ð ra   ú/ÚTable)Ú	classnamez8`include` should be either 'pandas' or 'native' but is 'rú   )rÂ   rÖ   Ú
walk_nodesr¹   )rä   r  s     r_   ÚkeyszHDFStore.keys–  s�   € ðH �hÒÐØ9Ð9¨4¯;ª;©=¬=Ð9Ñ9Ô9Ð9à˜Ò Ð Ø”<Ð+Ð+Ð+ðð Ø'+¤|×'>Ò'>¸sÈgÐ'>Ñ'VÔ'Vðñ ô ð õ ØQÀwÐQÐQÐQñ
ô 
ð 	
ra   úIterator[str]c                óD   — t          |                      ¦   «         ¦  «        S r\   )Úiterr!  rè   s    r_   Ú__iter__zHDFStore.__iter__Æ  s   € Ý�D—I’I‘K”KÑ Ô Ð ra   úIterator[tuple[str, list]]c              #  óN   K  — |                       ¦   «         D ]}|j        |fV — ŒdS )z'
        iterate on key->group
        N)rÂ   rÄ   )rä   Úgs     r_   ÚitemszHDFStore.itemsÉ  s?   è è € ð —’‘”ð 	#ð 	#ˆAØ”- Ð"Ð"Ð"Ð"Ð"ð	#ð 	#ra   c                óü  — t          ¦   «         }| j        |k    r@| j        dv r|dv rn+|dv r'| j        r t          d| j        › d| j        › d�¦  «        ‚|| _        | j        r|                      ¦   «          | j        rC| j        dk    r8t          ¦   «                              | j        | j        | j	        ¬¦  «        | _
        t          r| j        rd	}t          |¦  «        ‚ |j        | j        | j        fi |¤Ž| _        d
S )a9  
        Open the file in the specified mode

        Parameters
        ----------
        mode : {'a', 'w', 'r', 'r+'}, default 'a'
            See HDFStore docstring or tables.open_file for info about modes
        **kwargs
            These parameters will be passed to the PyTables open_file method.
        )rŒ   Úw)r®   r·   )r+  zRe-opening the file [z] with mode [z] will delete the current file!r   )rØ   zGCannot open HDF5 file, which is already opened, even in read-only mode.N)r‹   r×   rº   r   rÞ   rÇ   rß   ÚFiltersrà   rá   râ   rŠ   r¹   Ú	open_filerÖ   )rä   r’   rÈ   r†   Úmsgs        r_   rã   zHDFStore.openÐ  s6  € õ ‘”ˆàŒ:˜ÒÐàŒz˜ZÐ'Ð'¨D°KÐ,?Ð,?ØØ˜��à”<ð Ý/ð8°´
ð 8ð 8ÈÌð 8ð 8ð 8ñô ð ð
 ˆDŒJð Œ<ð 	Ø�JŠJ‰LŒLˆLàŒ?ð 	˜tœ°Ò2Ð2Ý#™IœI×-Ò-Ø” ¤¸4Ô;Kð .ñ ô ˆDŒMõ -ð 	"°´ð 	"ð*ð õ ˜S‘/”/Ð!à'�vÔ'¨¬
°D´JÐIÐIÀ&ÐIÐIˆŒˆˆra   c                óT   — | j         �| j                              ¦   «          d| _         dS )z0
        Close the PyTables file handle
        N)rÖ   rÇ   rè   s    r_   rÇ   zHDFStore.closeý  s+   € ð Œ<Ð#ØŒL×ÒÑ Ô Ð ØˆŒˆˆra   c                óF   — | j         €dS t          | j         j        ¦  «        S )zF
        return a boolean indicating whether the file is open
        NF)rÖ   r—   Úisopenrè   s    r_   rº   zHDFStore.is_open  s$   € ð
 Œ<ÐØ�5Ý�D”LÔ'Ñ(Ô(Ð(ra   Úfsyncc                ó  — | j         �u| j                              ¦   «          |r\t          t          ¦  «        5  t	          j        | j                              ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS dS dS )aó  
        Force all buffered modifications to be written to disk.

        Parameters
        ----------
        fsync : bool (default False)
          call ``os.fsync()`` on the file handle to force writing to disk.

        Notes
        -----
        Without ``fsync=True``, flushing may not guarantee that the OS writes
        to disk. With fsync, the operation will block until the OS claims the
        file has been written; however, other caching layers may still
        interfere.
        N)rÖ   Úflushr   r»   r½   r2  Úfileno)rä   r2  s     r_   r4  zHDFStore.flush  sÊ   € ð  Œ<Ð#ØŒL×ÒÑ Ô Ð Øð 4Ý�gÑ&Ô&ð 4ð 4Ý”H˜Tœ\×0Ò0Ñ2Ô2Ñ3Ô3Ð3ð4ð 4ð 4ñ 4ô 4ð 4ð 4ð 4ð 4ð 4ð 4ð 4øøøð 4ð 4ð 4ð 4ð 4ð 4ð $Ð#ð4ð 4s   ·,A0Á0A4Á7A4c                óÐ   — t          ¦   «         5  |                      |¦  «        }|€t          d|› d�¦  «        ‚|                      |¦  «        cddd¦  «         S # 1 swxY w Y   dS )aô  
        Retrieve pandas object stored in file.

        Parameters
        ----------
        key : str
            Object to retrieve from file. Raises KeyError if not found.

        Returns
        -------
        object
            Same type as object stored in file.

        See Also
        --------
        HDFStore.get_node : Returns the node with the key.
        HDFStore.get_storer : Returns the storer object for a key.

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> store.get("data")  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        NúNo object named ú in the file)r   r   rû   Ú_read_group©rä   r�   rÌ   s      r_   rñ   zHDFStore.get$  sµ   € õ6 ‰^Œ^ð 	+ð 	+ð —M’M #Ñ&Ô&ˆEØˆ}ÝÐC°#ÐCÐCÐCÑDÔDÐDØ×#Ò# EÑ*Ô*ð	+ð 	+ð 	+ð 	+ñ 	+ô 	+ð 	+ð 	+ð 	+ð 	+ð 	+ð 	+øøøð 	+ð 	+ð 	+ð 	+ð 	+ð 	+s   �?AÁAÁ"Ar´   rµ   r¸   c	                ó>  ‡‡— |                       |¦  «        }	|	€t          d|› d�¦  «        ‚t          |d¬¦  «        }|                      |	¦  «        Š‰                     ¦   «          ˆˆfd„}
t          | ‰|
|‰j        |||||¬¦
  «
        }|                     ¦   «         S )aC  
        Retrieve pandas object stored in file, optionally based on where criteria.

        .. warning::

           Pandas uses PyTables for reading and writing HDF5 files, which allows
           serializing object-dtype data with pickle when using the "fixed" format.
           Loading pickled data received from untrusted sources can be unsafe.

           See: https://docs.python.org/3/library/pickle.html for more.

        Parameters
        ----------
        key : str
            Object being retrieved from file.
        where : list or None
            List of Term (or convertible) objects, optional.
        start : int or None
            Row number to start selection.
        stop : int, default None
            Row number to stop selection.
        columns : list or None
            A list of columns that if not None, will limit the return columns.
        iterator : bool or False
            Returns an iterator.
        chunksize : int or None
            Number or rows to include in iteration, return an iterator.
        auto_close : bool or False
            Should automatically close the store when finished.

        Returns
        -------
        object
            Retrieved object from file.

        See Also
        --------
        HDFStore.select_as_coordinates : Returns the selection as an index.
        HDFStore.select_column : Returns a single column from the table.
        HDFStore.select_as_multiple : Retrieves pandas objects from multiple tables.

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> store.get("data")  # doctest: +SKIP
        >>> print(store.keys())  # doctest: +SKIP
        ['/data1', '/data2']
        >>> store.select("/data1")  # doctest: +SKIP
           A  B
        0  1  2
        1  3  4
        >>> store.select("/data1", where="columns == A")  # doctest: +SKIP
           A
        0  1
        1  3
        >>> store.close()  # doctest: +SKIP
        Nr7  r8  rk   rm   c                ó6   •— ‰                      | ||‰¬¦  «        S )N)r°   r±   ru   r²   ©Úread)Ú_startÚ_stopÚ_wherer²   Úss      €€r_   ÚfunczHDFStore.select.<locals>.func—  s   ø€ Ø—6’6 ¨U¸&È'�6ÑRÔRÐRra   ©ru   Únrowsr°   r±   r´   rµ   r¸   )r   rû   rv   Ú_create_storerÚ
infer_axesÚTableIteratorrE  Ú
get_result)rä   r�   ru   r°   r±   r²   r´   rµ   r¸   rÌ   rC  ÚitrB  s        `      @r_   rÅ   zHDFStore.selectG  sÕ   øø€ ðL —’˜cÑ"Ô"ˆØˆ=ÝÐ?¨cÐ?Ð?Ð?Ñ@Ô@Ð@õ ˜U°Ð2Ñ2Ô2ˆØ×Ò Ñ&Ô&ˆØ	�Š‰Œˆð	Sð 	Sð 	Sð 	Sð 	Sð 	Sõ ØØØØØ”'ØØØØØ!ð
ñ 
ô 
ˆð �}Š}‰ŒÐra   r°   r±   c                óÆ   — t          |d¬¦  «        }|                      |¦  «        }t          |t          ¦  «        st	          d¦  «        ‚|                     |||¬¦  «        S )a“  
        return the selection as an Index

        .. warning::

           Pandas uses PyTables for reading and writing HDF5 files, which allows
           serializing object-dtype data with pickle when using the "fixed" format.
           Loading pickled data received from untrusted sources can be unsafe.

           See: https://docs.python.org/3/library/pickle.html for more.


        Parameters
        ----------
        key : str
        where : list of Term (or convertible) objects, optional
        start : integer (defaults to None), row number to start selection
        stop  : integer (defaults to None), row number to stop selection
        rk   rm   z&can only read_coordinates with a table©ru   r°   r±   )rv   Ú
get_storerrc   r  rÀ   Úread_coordinates)rä   r�   ru   r°   r±   Útbls         r_   Úselect_as_coordinateszHDFStore.select_as_coordinatesª  sd   € õ4 ˜U°Ð2Ñ2Ô2ˆØ�oŠo˜cÑ"Ô"ˆÝ˜#�uÑ%Ô%ð 	FÝÐDÑEÔEÐEØ×#Ò#¨%°uÀ4Ð#ÑHÔHÐHra   Úcolumnc                ó¤   — |                       |¦  «        }t          |t          ¦  «        st          d¦  «        ‚|                     |||¬¦  «        S )a~  
        return a single column from the table. This is generally only useful to
        select an indexable

        .. warning::

           Pandas uses PyTables for reading and writing HDF5 files, which allows
           serializing object-dtype data with pickle when using the "fixed" format.
           Loading pickled data received from untrusted sources can be unsafe.

           See: https://docs.python.org/3/library/pickle.html for more.

        Parameters
        ----------
        key : str
        column : str
            The column of interest.
        start : int or None, default None
        stop : int or None, default None

        Raises
        ------
        raises KeyError if the column is not found (or key is not a valid
            store)
        raises ValueError if the column can not be extracted individually (it
            is part of a data block)

        z!can only read_column with a table)rQ  r°   r±   )rM  rc   r  rÀ   Úread_column)rä   r�   rQ  r°   r±   rO  s         r_   Úselect_columnzHDFStore.select_columnÊ  sP   € ðF �oŠo˜cÑ"Ô"ˆÝ˜#�uÑ%Ô%ð 	AÝÐ?Ñ@Ô@Ð@Ø�Š f°EÀˆÑEÔEÐEra   c
                óº  ‡ ‡‡‡— t          |d¬¦  «        }t          |t          t          f¦  «        rt	          |¦  «        dk    r|d         }t          |t
          ¦  «        r‰                      ||‰|||||	¬¦  «        S t          |t          t          f¦  «        st          d¦  «        ‚t	          |¦  «        st          d¦  «        ‚|€|d         }ˆ fd„|D ¦   «         Š‰  	                    |¦  «        }
d}t          j        |
|fgt          ‰|d	¬
¦  «        ¦  «        D ]]\  }}|€t          d|› d�¦  «        ‚|j        st          d|j        › d�¦  «        ‚|€|j        }ŒC|j        |k    rt          d¦  «        ‚Œ^d„ ‰D ¦   «         }d„ |D ¦   «                              ¦   «         Šˆˆˆfd„}t%          ‰ |
||||||||	¬¦
  «
        }|                     d	¬¦  «        S )aÙ  
        Retrieve pandas objects from multiple tables.

        .. warning::

           Pandas uses PyTables for reading and writing HDF5 files, which allows
           serializing object-dtype data with pickle when using the "fixed" format.
           Loading pickled data received from untrusted sources can be unsafe.

           See: https://docs.python.org/3/library/pickle.html for more.

        Parameters
        ----------
        keys : a list of the tables
        selector : the table to apply the where criteria (defaults to keys[0]
            if not supplied)
        columns : the columns I want back
        start : integer (defaults to None), row number to start selection
        stop  : integer (defaults to None), row number to stop selection
        iterator : bool, return an iterator, default False
        chunksize : nrows to include in iteration, return an iterator
        auto_close : bool, default False
            Should automatically close the store when finished.

        Raises
        ------
        raises KeyError if keys or selector is not found or keys is empty
        raises TypeError if keys is not a list or tuple
        raises ValueError if the tables are not ALL THE SAME DIMENSIONS
        rk   rm   r   )r�   ru   r²   r°   r±   r´   rµ   r¸   zkeys must be a list/tuplez keys must have a non-zero lengthNc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÚ   )rM  )rn   Úkrä   s     €r_   rq   z/HDFStore.select_as_multiple.<locals>.<listcomp>6  s%   ø€ Ð1Ð1Ð1 q�—’ Ñ"Ô"Ð1Ð1Ð1ra   T©r…   zInvalid table [ú]zobject [z>] is not a table, and cannot be used in all select as multiplez,all tables must have exactly the same nrows!c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rÚ   )rc   r  ©rn   Úxs     r_   rq   z/HDFStore.select_as_multiple.<locals>.<listcomp>K  s'   € Ð9Ð9Ð9�q¥J¨qµ%Ñ$8Ô$8Ð9�Ð9Ð9Ð9ra   c                ó4   — h | ]}|j         d          d          ’ŒS ©r   )Únon_index_axes)rn   r}   s     r_   ú	<setcomp>z.HDFStore.select_as_multiple.<locals>.<setcomp>N  s%   € Ð6Ð6Ð6¨1�Ô  Ô# AÔ&Ð6Ð6Ð6ra   c                ót   •‡ ‡‡— ˆ ˆˆˆfd„‰D ¦   «         }t          |‰d¬¦  «                             ¦   «         S )Nc                óB   •— g | ]}|                      ‰‰‰‰¬ ¦  «        ‘ŒS )©ru   r²   r°   r±   r=  )rn   r}   r?  r@  rA  r²   s     €€€€r_   rq   z=HDFStore.select_as_multiple.<locals>.func.<locals>.<listcomp>S  s=   ø€ ð ð ð àð —’˜V¨W¸FÈ�ÑOÔOðð ð ra   F)ÚaxisÚverify_integrity)r6   Ú_consolidate)r?  r@  rA  Úobjsrd  r²   Útblss   ``` €€€r_   rC  z)HDFStore.select_as_multiple.<locals>.funcP  s`   øøøø€ ðð ð ð ð ð ð àðñ ô ˆDõ ˜$ T¸EÐBÑBÔB×OÒOÑQÔQÐQra   rD  )Úcoordinates)rv   rc   rr   rs   rt   rZ   rÅ   rÀ   r¹   rM  Ú	itertoolsÚchainÚziprû   Úis_tableÚpathnamerE  ÚpoprH  rI  )rä   r!  ru   Úselectorr²   r°   r±   r´   rµ   r¸   rB  rE  r}   rW  Ú_tblsrC  rJ  rd  rh  s   `   `            @@r_   Úselect_as_multiplezHDFStore.select_as_multipleò  sx  øøøø€ õV ˜U°Ð2Ñ2Ô2ˆÝ�d�T¥5˜MÑ*Ô*ð 	­s°4©y¬y¸Aª~¨~Ø˜”7ˆDÝ�d�CÑ Ô ð 
	Ø—;’;ØØØØØØ!Ø#Ø%ð ñ 	ô 	ð 	õ ˜$¥¥u Ñ.Ô.ð 	9ÝÐ7Ñ8Ô8Ð8å�4‰yŒyð 	AÝÐ?Ñ@Ô@Ð@àÐØ˜A”wˆHð 2Ð1Ð1Ð1¨DÐ1Ñ1Ô1ˆØ�OŠO˜HÑ%Ô%ˆð ˆÝ”O a¨ ] OµS¸¸tÈDÐ5QÑ5QÔ5QÑRÔRð 	Qð 	Q‰DˆAˆqØˆyÝÐ5°Ð5Ð5Ð5Ñ6Ô6Ð6Ø”:ð Ýð)˜qœzð )ð )ð )ñô ð ð
 ˆ}Øœ��Ø”˜EÒ!Ð!Ý Ð!OÑPÔPÐPð "ð
 :Ð9˜DÐ9Ñ9Ô9ˆð 7Ð6°Ð6Ñ6Ô6×:Ò:Ñ<Ô<ˆð		Rð 		Rð 		Rð 		Rð 		Rð 		Rð 		Rõ ØØØØØØØØØØ!ð
ñ 
ô 
ˆð �}Š}¨ˆ}Ñ.Ô.Ð.ra   Tr…   r�   r‘   r™   r–   rš   r›   rž   rŸ   r    Útrack_timesrœ   c                óœ   — |€t          d¦  «        pd}|                      |¦  «        }|                      |||||||||	|
||||¬¦  «         dS )aL  
        Store object in HDFStore.

        This method writes a pandas DataFrame or Series into an HDF5 file using
        either the fixed or table format. The `table` format allows additional
        operations like incremental appends and queries but may have performance
        trade-offs. The `fixed` format provides faster read/write operations but
        does not support appends or queries.

        Parameters
        ----------
        key : str
            Key of object to store in file.
        value : {Series, DataFrame}
            Value of object to store in file.
        format : 'fixed(f)|table(t)', default is 'fixed'
            Format to use when storing object in HDFStore. Value can be one of:

            ``'fixed'``
                Fixed format.  Fast writing/reading. Not-appendable, nor searchable.
            ``'table'``
                Table format.  Write as a PyTables Table structure which may perform
                worse but allow more flexible operations like searching / selecting
                subsets of the data.
        index : bool, default True
            Write DataFrame index as a column.
        append : bool, default False
            This will force Table format, append the input data to the existing.
        complib : default None
            This parameter is currently not accepted.
        complevel : int, 0-9, default None
            Specifies a compression level for data.
            A value of 0 or None disables compression.
        min_itemsize : int, dict, or None
            Dict of columns that specify minimum str sizes.
        nan_rep : str
            Str to use as str nan representation.
        data_columns : list of columns or True, default None
            List of columns to create as data columns, or True to use all columns.
            See `here
            <https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#query-via-data-columns>`__.
        encoding : str, default None
            Provide an encoding for strings.
        errors : str, default 'strict'
            The error handling scheme to use for encoding errors.
            The default is 'strict' meaning that encoding errors raise a
            UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
            'xmlcharrefreplace' as well as any other name registered with
            codecs.register_error that can handle UnicodeEncodeErrors.
        track_times : bool, default True
            Parameter is propagated to 'create_table' method of 'PyTables'.
            If set to False it enables to have the same h5 files (same hashes)
            independent on creation time.
        dropna : bool, default False, optional
            Remove missing values.

        See Also
        --------
        HDFStore.info : Prints detailed information on the store.
        HDFStore.get_storer : Returns the storer object for a key.

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        Núio.hdf.default_formatrz   )r˜   r™   r–   r•   r“   rš   r¤   rž   rW   r    rs  rœ   )r   Ú_validate_formatÚ_write_to_group)rä   r�   r�   r˜   r™   r–   r•   r“   rš   r¤   rž   rW   r    rs  rœ   s                  r_   rª   zHDFStore.putk  s�   € ðh ˆ>ÝÐ 7Ñ8Ô8ÐC¸GˆFØ×&Ò& vÑ.Ô.ˆØ×ÒØØØØØØØØ%ØØ%ØØØ#Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ra   c                óô  — t          |d¬¦  «        }	 |                      |¦  «        }np# t          $ r ‚ t          $ r ‚ t          $ rO}|�t          d¦  «        |‚|                      |¦  «        }|�|                     d¬¦  «         Y d}~dS Y d}~nd}~ww xY wt          j	        |||¦  «        r|j
                             d¬¦  «         dS |j        st          d¦  «        ‚|                     |||¬¦  «        S )	a:  
        Remove pandas object partially by specifying the where condition

        Parameters
        ----------
        key : str
            Node to remove or delete rows from
        where : list of Term (or convertible) objects, optional
        start : integer (defaults to None), row number to start selection
        stop  : integer (defaults to None), row number to stop selection

        Returns
        -------
        number of rows removed (or None if not a Table)

        Raises
        ------
        raises KeyError if key is not a valid store

        rk   rm   Nz5trying to remove a node with a non-None where clause!T©Ú	recursivez7can only remove with where on objects written as tablesrL  )rv   rM  rû   ÚAssertionErrorÚ	Exceptionr¹   r   Ú	_f_removeÚcomÚall_nonerÌ   rm  Údelete)rä   r�   ru   r°   r±   rB  Úerrr  s           r_   r÷   zHDFStore.removeÓ  sL  € õ* ˜U°Ð2Ñ2Ô2ˆð	Ø—’ Ñ$Ô$ˆAˆAøÝð 	ð 	ð 	àÝð 	ð 	ð 	àÝð 	ð 	ð 	ð Ð Ý ØKñô àðð
 —=’= Ñ%Ô%ˆDØÐØ—’¨�Ñ.Ô.Ð.Ø�t�t�t�t�tð  ÐÐÐÐøøøøð	øøøõ  Œ<˜˜u dÑ+Ô+ð 	ØŒG×Ò¨ÐÑ-Ô-Ð-Ø�4ð Œzð 	XÝÐVÑWÔWÐWØ�xŠx˜e¨5°tˆxÑ<Ô<Ð<s   “) ©BÁ?BÂBúbool | list[str]r�   c                óä   — |	�t          d¦  «        ‚|€t          d¦  «        }|€t          d¦  «        pd}|                      |¦  «        }|                      |||||||||
|||||||¬¦  «         dS )a»  
        Append to Table in file.

        Node must already exist and be Table format.

        Parameters
        ----------
        key : str
            Key of object to append.
        value : {Series, DataFrame}
            Value of object to append.
        format : 'table' is the default
            Format to use when storing object in HDFStore.  Value can be one of:

            ``'table'``
                Table format. Write as a PyTables Table structure which may perform
                worse but allow more flexible operations like searching / selecting
                subsets of the data.
        axes : default None
            This parameter is currently not accepted.
        index : bool, default True
            Write DataFrame index as a column.
        append : bool, default True
            Append the input data to the existing.
        complib : default None
            This parameter is currently not accepted.
        complevel : int, 0-9, default None
            Specifies a compression level for data.
            A value of 0 or None disables compression.
        columns : default None
            This parameter is currently not accepted, try data_columns.
        min_itemsize : int, dict, or None
            Dict of columns that specify minimum str sizes.
        nan_rep : str
            Str to use as str nan representation.
        chunksize : int or None
            Size to chunk the writing.
        expectedrows : int
            Expected TOTAL row size of this table.
        dropna : bool, default False, optional
            Do not write an ALL nan row to the store settable
            by the option 'io.hdf.dropna_table'.
        data_columns : list of columns, or True, default None
            List of columns to create as indexed data columns for on-disk
            queries, or True to use all columns. By default only the axes
            of the object are indexed. See `here
            <https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#query-via-data-columns>`__.
        encoding : default None
            Provide an encoding for str.
        errors : str, default 'strict'
            The error handling scheme to use for encoding errors.
            The default is 'strict' meaning that encoding errors raise a
            UnicodeEncodeError.  Other possible values are 'ignore', 'replace' and
            'xmlcharrefreplace' as well as any other name registered with
            codecs.register_error that can handle UnicodeEncodeErrors.

        See Also
        --------
        HDFStore.append_to_multiple : Append to multiple tables.

        Notes
        -----
        Does *not* check if data being appended overlaps with existing
        data in the table, so be careful

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df1, format="table")  # doctest: +SKIP
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
        >>> store.append("data", df2)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
           A  B
        0  1  2
        1  3  4
        0  5  6
        1  7  8
        Nz>columns is not a supported keyword in append, try data_columnszio.hdf.dropna_tableru  r{   )r˜   Úaxesr™   r–   r•   r“   rš   r¤   rµ   Úexpectedrowsrœ   rž   rW   r    )rÀ   r   rv  rw  )rä   r�   r�   r˜   r„  r™   r–   r•   r“   r²   rš   r¤   rµ   r…  rœ   rž   rW   r    s                     r_   r–   zHDFStore.append
  s·   € ðF ÐÝØPñô ð ð ˆ>ÝÐ 5Ñ6Ô6ˆFØˆ>ÝÐ 7Ñ8Ô8ÐC¸GˆFØ×&Ò& vÑ.Ô.ˆØ×ÒØØØØØØØØØ%ØØØ%ØØ%ØØð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
ra   ÚdÚdictc                óš  ‡‡— |�t          d¦  «        ‚t          |t          ¦  «        st          d¦  «        ‚||vrt          d¦  «        ‚t	          t          t          t          ‰j        ¦  «        ¦  «        t          t          t          ‰¦  «                 ¦  «        z
  ¦  «        ¦  «        }d}	g }
|                     ¦   «         D ]0\  }Š‰€|	�t          d¦  «        ‚|}	Œ|
                     ‰¦  «         Œ1|	�i‰j        |         }|                     t          |
¦  «        ¦  «        }t!          |                     |¦  «        ¦  «        }|                     |¦  «        ||	<   |€||         }|rVˆfd„|                     ¦   «         D ¦   «         }t	          |¦  «        }|D ]}|                     |¦  «        }Œ‰j        |         Š|                     dd¦  «        }|                     ¦   «         D ]\\  }Š||k    r|nd}‰                     ‰|¬¦  «        }|� ˆfd	„|                     ¦   «         D ¦   «         nd} | j        ||f||d
œ|¤Ž Œ]dS )a  
        Append to multiple tables

        Parameters
        ----------
        d : a dict of table_name to table_columns, None is acceptable as the
            values of one node (this will get all the remaining columns)
        value : a pandas object
        selector : a string that designates the indexable table; all of its
            columns will be designed as data_columns, unless data_columns is
            passed, in which case these are used
        data_columns : list of columns to create as data columns, or True to
            use all columns
        dropna : if evaluates to True, drop rows from all tables if any single
                 row in each table has all NaN. Default False.

        Notes
        -----
        axes parameter is currently not accepted

        Nztaxes is currently not accepted as a parameter to append_to_multiple; you can create the tables independently insteadzQappend_to_multiple must have a dictionary specified as the way to split the valuez=append_to_multiple requires a selector that is in passed dictz<append_to_multiple can only have one value in d that is Nonec              3  óZ   •K  — | ]%}‰|                               d ¬¦  «        j        V — Œ&dS )Úall)ÚhowN)rœ   r™   )rn   Úcolsr�   s     €r_   ú	<genexpr>z.HDFStore.append_to_multiple.<locals>.<genexpr>Õ  s;   øè è € ÐOÐO¸D�E˜$”K×&Ò&¨5Ð&Ñ1Ô1Ô7ÐOÐOÐOÐOÐOÐOra   rš   ©rd  c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS rÚ   rÚ   )rn   r�   r�   Úvs      €r_   ú
<dictcomp>z/HDFStore.append_to_multiple.<locals>.<dictcomp>å  s$   ø€ ÐQÐQÐQ¡  eÈÈqÈÈ��eÈÈÈra   )rž   rš   )rÀ   rc   r‡  r¹   Únextr$  ÚsetÚrangeÚndimÚ	_AXES_MAPrü   r)  Úextendr„  Ú
differencer/   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocro  Úreindexr–   )rä   r†  r�   rp  rž   r„  rœ   rÈ   rd  Ú
remain_keyÚremain_valuesrW  ÚorderedÚorddÚidxsÚvalid_indexr™   rš   ÚdcÚvalÚfilteredr�  s     `                  @r_   Úappend_to_multiplezHDFStore.append_to_multipleŠ  s´  øø€ ð> ÐÝðBñô ð õ
 ˜!�TÑ"Ô"ð 	Ýð)ñô ð ð
 ˜1ÐÐÝØOñô ð õ
 •D��U 5¤:Ñ.Ô.Ñ/Ô/µ#µiÅÀUÁÄÔ6LÑ2MÔ2MÑMÑNÔNÑOÔOˆð ˆ
Ø ˆØ—G’G‘I”Ið 	(ð 	(‰DˆAˆqØˆyØÐ)Ý$ØVñô ð ð �
�
à×$Ò$ QÑ'Ô'Ð'Ð'ØÐ!Ø”j Ô&ˆGØ×%Ò%¥e¨MÑ&:Ô&:Ñ;Ô;ˆDÝ˜'×-Ò-¨dÑ3Ô3Ñ4Ô4ˆDØ#ŸLšL¨Ñ.Ô.ˆAˆj‰Mð ÐØ˜Xœ;ˆLð ð 	+ØOÐOÐOÐOÀAÇHÂHÁJÄJÐOÑOÔOˆDÝ˜t™*œ*ˆKØð >ð >�Ø)×6Ò6°uÑ=Ô=��Ø”I˜kÔ*ˆEà—z’z .°$Ñ7Ô7ˆð —G’G‘I”Ið 	Rð 	R‰DˆAˆqØ!" h¢ ��°DˆBð —-’- ¨�-Ñ-Ô-ˆCð  Ð+ð RÐQÐQÐQ°×0BÒ0BÑ0DÔ0DÐQÑQÔQÐQàð ð
 ˆDŒK˜˜3ÐQ¨R¸hÐQÐQÈ&ÐQÐQÐQÐQð	Rð 	Rra   ÚoptlevelÚkindrX   c                óÌ   — t          ¦   «          |                      |¦  «        }|€dS t          |t          ¦  «        st	          d¦  «        ‚|                     |||¬¦  «         dS )aà  
        Create a pytables index on the table.

        Parameters
        ----------
        key : str
        columns : None, bool, or listlike[str]
            Indicate which columns to create an index on.

            * False : Do not create any indexes.
            * True : Create indexes on all columns.
            * None : Create indexes on all columns.
            * listlike : Create indexes on the given columns.

        optlevel : int or None, default None
            Optimization level, if None, pytables defaults to 6.
        kind : str or None, default None
            Kind of index, if None, pytables defaults to "medium".

        Raises
        ------
        TypeError: raises if the node is not a table
        Nz1cannot create table index on a Fixed format store)r²   rª  r«  )r‹   rM  rc   r  rÀ   Úcreate_index)rä   r�   r²   rª  r«  rB  s         r_   Úcreate_table_indexzHDFStore.create_table_indexë  sh   € õ> 	‰	Œ	ˆ	Ø�OŠO˜CÑ Ô ˆØˆ9ØˆFå˜!�UÑ#Ô#ð 	QÝÐOÑPÔPÐPØ	�Š˜w°ÀˆÑEÔEÐEÐEÐEra   rr   c                ó°   — t          ¦   «          |                      ¦   «          | j        €J ‚t          €J ‚d„ | j                             ¦   «         D ¦   «         S )aí  
        Return a list of all the top-level nodes.

        Each node returned is not a pandas storage object.

        Returns
        -------
        list
            List of objects.

        See Also
        --------
        HDFStore.get_node : Returns the node with the key.

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> print(store.groups())  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        [/data (Group) ''
          children := ['axis0' (Array), 'axis1' (Array), 'block0_values' (Array),
          'block0_items' (Array)]]
        Nc                óò   — g | ]t}t          |t          j        j        ¦  «        sSt	          |j        d d¦  «        s;t	          |dd¦  «        s*t          |t          j        j        ¦  «        r|j        dk    ¯r|‘ŒuS )Úpandas_typeNr{   )	rc   rƒ   ÚlinkÚLinkÚgetattrÚ_v_attrsr{   r  rÒ   )rn   r(  s     r_   rq   z#HDFStore.groups.<locals>.<listcomp>1  s–   € ð 
ð 
ð 
àå˜q¥*¤/Ô"6Ñ7Ô7ð	
õ ˜AœJ¨°tÑ<Ô<ð
õ ˜q '¨4Ñ0Ô0ð
õ # 1¥jÔ&6Ô&<Ñ=Ô=ð
ð CDÄ)ÈwÒBVÐBVð ð CWÐBVÐBVra   )r‹   rë   rÖ   rƒ   Úwalk_groupsrè   s    r_   rÂ   zHDFStore.groups  sh   € õ4 	‰	Œ	ˆ	Ø×ÒÑÔÐØŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%ð
ð 
à”\×-Ò-Ñ/Ô/ð
ñ 
ô 
ð 	
ra   r  ru   ú*Iterator[tuple[str, list[str], list[str]]]c              #  ó0  K  — t          ¦   «          |                      ¦   «          | j        €J ‚t          €J ‚| j                             |¦  «        D ]Ä}t          |j        dd¦  «        �Œg }g }|j                             ¦   «         D ]n}t          |j        dd¦  «        }|€:t          |t          j
        j        ¦  «        r|                     |j        ¦  «         ŒT|                     |j        ¦  «         Œo|j                             d¦  «        ||fV — ŒÅdS )aå  
        Walk the pytables group hierarchy for pandas objects.

        This generator will yield the group path, subgroups and pandas object
        names for each group.

        Any non-pandas PyTables objects that are not a group will be ignored.

        The `where` group itself is listed first (preorder), then each of its
        child groups (following an alphanumerical order) is also traversed,
        following the same procedure.

        Parameters
        ----------
        where : str, default "/"
            Group where to start walking.

        Yields
        ------
        path : str
            Full path to a group (without trailing '/').
        groups : list
            Names (strings) of the groups contained in `path`.
        leaves : list
            Names (strings) of the pandas objects contained in `path`.

        See Also
        --------
        HDFStore.info : Prints detailed information on the store.

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df1, format="table")  # doctest: +SKIP
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
        >>> store.append("data", df2)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        >>> for group in store.walk():  # doctest: +SKIP
        ...     print(group)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        Nr±  r  )r‹   rë   rÖ   rƒ   r¶  r´  rµ  Ú_v_childrenrœ  rc   rÌ   ÚGroupr–   rÒ   rÄ   Úrstrip)rä   ru   r(  rÂ   ÚleavesÚchildr±  s          r_   ÚwalkzHDFStore.walk>  s(  è è € õV 	‰	Œ	ˆ	Ø×ÒÑÔÐØŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%à”×)Ò)¨%Ñ0Ô0ð 	>ð 	>ˆAÝ�q”z =°$Ñ7Ô7ÐCØàˆFØˆFØœ×-Ò-Ñ/Ô/ð 1ð 1�Ý% e¤n°mÀTÑJÔJ�ØÐ&Ý! %­Ô)9Ô)?Ñ@Ô@ð 5ØŸš e¤mÑ4Ô4Ð4øà—M’M %¤-Ñ0Ô0Ð0Ð0à”=×'Ò'¨Ñ,Ô,¨f°fÐ=Ð=Ð=Ð=Ð=ð	>ð 	>ra   úNode | Nonec                ób  — |                       ¦   «          |                     d¦  «        sd|z   }| j        €J ‚t          €J ‚	 | j                             | j        |¦  «        }n# t          j        j        $ r Y dS w xY wt          |t          j	        ¦  «        sJ t          |¦  «        ¦   «         ‚|S )z9return the node with the key or None if it does not existr  N)rë   Ú
startswithrÖ   rƒ   r   rì   Ú
exceptionsÚNoSuchNodeErrorrc   rM   rü   )rä   r�   r  s      r_   r   zHDFStore.get_node~  sÀ   € à×ÒÑÔÐØ�~Š~˜cÑ"Ô"ð 	Ø˜‘)ˆCàŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%ð	Ø”<×(Ò(¨¬°CÑ8Ô8ˆDˆDøÝÔ$Ô4ð 	ð 	ð 	Ø�4�4ð	øøøõ ˜$¥
¤Ñ0Ô0Ð<Ð<µ$°t±*´*Ñ<Ô<Ð0Øˆs   Á A# Á#A;Á:A;úGenericFixed | Tablec                ó¬   — |                       |¦  «        }|€t          d|› d�¦  «        ‚|                      |¦  «        }|                     ¦   «          |S )z<return the storer object for a key, raise if not in the fileNr7  r8  )r   rû   rF  rG  )rä   r�   rÌ   rB  s       r_   rM  zHDFStore.get_storerŽ  sW   € à—’˜cÑ"Ô"ˆØˆ=ÝÐ?¨cÐ?Ð?Ð?Ñ@Ô@Ð@à×Ò Ñ&Ô&ˆØ	�Š‰ŒˆØˆra   r+  ÚpropindexesÚ	overwritec	                ó6  — t          |||||¬¦  «        }	|€!t          |                      ¦   «         ¦  «        }t          |t          t          f¦  «        s|g}|D ]¿}
|                      |
¦  «        }|�¦|
|	v r|r|	                     |
¦  «         |                      |
¦  «        }t          |t          ¦  «        rDd}|rd„ |j	        D ¦   «         }|	 
                    |
||t          |dd¦  «        |j        ¬¦  «         Œ¢|	                     |
||j        ¬¦  «         ŒÀ|	S )a;  
        Copy the existing store to a new file, updating in place.

        Parameters
        ----------
        propindexes : bool, default True
            Restore indexes in copied file.
        keys : list, optional
            List of keys to include in the copy (defaults to all).
        overwrite : bool, default True
            Whether to overwrite (remove and replace) existing nodes in the new store.
        mode, complib, complevel, fletcher32 same as in HDFStore.__init__

        Returns
        -------
        open file handle of the new store
        )r’   r•   r“   rØ   NFc                ó*   — g | ]}|j         ¯	|j        ‘ŒS rÚ   )Ú
is_indexedre   ©rn   rŒ   s     r_   rq   z!HDFStore.copy.<locals>.<listcomp>Æ  s!   € Ð HÐ HÐ H¨A¸1¼<Ð H ¤Ð HÐ HÐ Hra   rž   )r™   rž   rW   r^   )r«   rr   r!  rc   rs   rM  r÷   rÅ   r  r„  r–   r´  rW   rª   )rä   rˆ   r’   rÆ  r!  r•   r“   rØ   rÇ  Ú	new_storerW  rB  Údatar™   s                 r_   ÚcopyzHDFStore.copy˜  sO  € õ8 Ø�t W¸	Èjð
ñ 
ô 
ˆ	ð ˆ<Ý˜Ÿ	š	™œÑ$Ô$ˆDÝ˜$¥­ Ñ.Ô.ð 	Ø�6ˆDØð 	@ð 	@ˆAØ—’ Ñ"Ô"ˆAØˆ}Ø˜	�>�>Ø ð ,Ø!×(Ò(¨Ñ+Ô+Ð+à—{’{ 1‘~”~�Ý˜a¥Ñ'Ô'ð @Ø.3�EØ"ð IØ HÐ H°´Ð HÑ HÔ H˜Ø×$Ò$ØØØ#Ý%,¨Q°ÀÑ%EÔ%EØ!"¤ð %ñ ô ð ð ð —M’M ! T°A´J�MÑ?Ô?Ð?øàÐra   c                ó†  — t          | j        ¦  «        }t          | ¦  «        › d|› d�}| j        �r
t	          |                      ¦   «         ¦  «        }|rág }g }|D ]Å}	 |                      |¦  «        }|�M|                     t          |j        p|¦  «        ¦  «         |                     t          |pd¦  «        ¦  «         Œh# t          $ r ‚ t          $ rG}|                     |¦  «         t          |¦  «        }	|                     d|	› d�¦  «         Y d}~Œ¾d}~ww xY w|t          d||¦  «        z  }n|dz  }n|d	z  }|S )
aç  
        Print detailed information on the store.

        Returns
        -------
        str
            A String containing the python pandas class name, filepath to the HDF5
            file and all the object keys along with their respective dataframe shapes.

        See Also
        --------
        HDFStore.get_storer : Returns the storer object for a key.

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["C", "D"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data1", df1)  # doctest: +SKIP
        >>> store.put("data2", df2)  # doctest: +SKIP
        >>> print(store.info())  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        <class 'pandas.io.pytables.HDFStore'>
        File path: store.h5
        /data1            frame        (shape->[2,2])
        /data2            frame        (shape->[2,2])
        r  r  Nzinvalid_HDFStore nodez[invalid_HDFStore node: rY  é   ÚEmptyzFile is CLOSED)rD   rÞ   rü   rº   r™  r!  rM  r–   rn  r{  r|  rC   )
rä   r¾   ÚoutputÚlkeysr!  rœ  rW  rB  ÚdetailÚdstrs
             r_   ÚinfozHDFStore.infoÓ  s…  € õ8 ˜DœJÑ'Ô'ˆÝ˜‘J”JÐ5Ð5¨TÐ5Ð5Ð5ˆàŒ<ñ 	'Ý˜4Ÿ9š9™;œ;Ñ'Ô'ˆEØð "Ø�Ø�àð Jð J�AðJØ ŸOšO¨AÑ.Ô.˜Ø˜=Ø ŸKšK­°Q´Z°_À1Ñ(EÔ(EÑFÔFÐFØ"ŸMšM­,°qÐ7SÐ<SÑ*TÔ*TÑUÔUÐUøøÝ)ð ð ð àÝ$ð Jð Jð JØŸš A™œ˜Ý+¨FÑ3Ô3˜ØŸšÐ&HÀÐ&HÐ&HÐ&HÑIÔIÐIÐIÐIÐIÐIÐIøøøøðJøøøð
 �&  T¨6Ñ2Ô2Ñ2��à˜'Ñ!��àÐ&Ñ&ˆFàˆs   ÁA$CÃDÃ=DÄDc                óB   — | j         st          | j        › d�¦  «        ‚d S )Nz file is not open!)rº   r   rÞ   rè   s    r_   rë   zHDFStore._check_if_open  s2   € ØŒ|ð 	EÝ! T¤ZÐ"CÐ"CÐ"CÑDÔDÐDð	Eð 	Era   r˜   c                ó”   — 	 t           |                     ¦   «                  }n&# t          $ r}t          d|› d�¦  «        |‚d}~ww xY w|S )zvalidate / deprecate formatsz#invalid HDFStore format specified [rY  N)Ú_FORMAT_MAPÚlowerrû   rÀ   )rä   r˜   r�  s      r_   rv  zHDFStore._validate_format  sc   € ð	VÝ  §¢¡¤Ô0ˆFˆFøÝð 	Vð 	Vð 	VÝÐKÀ&ÐKÐKÐKÑLÔLÐRUÐUøøøøð	Vøøøð ˆs   ‚" ¢
A¬A Á ArV   úDataFrame | Series | NonerW   c           	     óN  — |�+t          |t          t          f¦  «        st          d¦  «        ‚t	          |j        dd¦  «        }t	          |j        dd¦  «        }|€‚|€[t          ¦   «          t          €J ‚t	          |dd¦  «        st          |t          j        j	        ¦  «        rd}d}n4t          d¦  «        ‚t          |t          ¦  «        rd	}nd
}|dk    r|dz  }d|vr`t          t          dœ}	 ||         }	n8# t          $ r+}
t          d|› dt          |¦  «        › d|› �¦  «        |
‚d}
~
ww xY w |	| |||¬¦  «        S |€k|�i|dk    r/t	          |dd¦  «        }|�|j        dk    rd}nB|j        dk    rd}n4|dk    r.t	          |dd¦  «        }|�|j        dk    rd}n|j        dk    rd}t          t           t"          t$          t&          t(          dœ}	 ||         }	n8# t          $ r+}
t          d|› dt          |¦  «        › d|› �¦  «        |
‚d}
~
ww xY w |	| |||¬¦  «        S )z"return a suitable class to operateNz(value must be None, Series, or DataFramer±  Ú
table_typer{   Úframe_tableÚgeneric_tablezKcannot create a storer if the object is not existing nor a value are passedÚseriesÚframeÚ_table)rà  rá  z=cannot properly create the storer for: [_STORER_MAP] [group->ú,value->z	,format->©rW   r    Úseries_tabler™   rk   Úappendable_seriesÚappendable_multiseriesÚappendable_frameÚappendable_multiframe)rß  ræ  rç  rè  ré  Úwormz<cannot properly create the storer for: [_TABLE_MAP] [group->)rc   r3   r-   rÀ   r´  rµ  r‹   rƒ   r{   r  ÚSeriesFixedÚ
FrameFixedrû   rü   ÚnlevelsÚGenericTableÚAppendableSeriesTableÚAppendableMultiSeriesTableÚAppendableFrameTableÚAppendableMultiFrameTableÚ	WORMTable)rä   rÌ   r˜   r�   rW   r    ÚptÚttÚ_STORER_MAPÚclsr�  r™   Ú
_TABLE_MAPs                r_   rF  zHDFStore._create_storer  s  € ð Ð¥Z°½Å	Ð7JÑ%KÔ%KÐÝÐFÑGÔGÐGå�U”^ ]°DÑ9Ô9ˆÝ�U”^ \°4Ñ8Ô8ˆð ˆ:Øˆ}Ý‘	”	�	Ý!Ð-Ð-Ð-Ý˜5 '¨4Ñ0Ô0ð 	µJØ�:Ô+Ô1ñ5ô 5ð 	ð '�BØ(�B�Bå#ð1ñô ð õ
 ˜e¥VÑ,Ô,ð !Ø!�B�Bà �Bð ˜WÒ$Ð$Ø˜(‘N�Bð ˜"ÐÐÝ%0½:ÐFÐFˆKðØ! "”o��øÝð ð ð ÝðEØðEð EÝ&*¨5¡k¤kðEð EØ<BðEð Eñô ð ðøøøøðøøøð
 �3�t˜U¨X¸fÐEÑEÔEÐEð ˆ:àÐ Ø˜Ò'Ð'Ý# E¨7°DÑ9Ô9�EØÐ(Ø œ=¨AÒ-Ð-Ø!4˜B˜BØ"œ]¨QÒ.Ð.Ø!9˜BøØ˜=Ò(Ð(Ý# E¨7°DÑ9Ô9�EØÐ(Ø œ=¨AÒ-Ð-Ø!3˜B˜BØ"œ]¨QÒ.Ð.Ø!8˜Bõ *Ý!6Ý&@Ý 4Ý%>Ýð
ð 
ˆ
ð	Ø˜R”.ˆCˆCøÝð 	ð 	ð 	ÝðAØðAð AÝ"& u¡+¤+ðAð AØ8>ðAð Añô ð ðøøøøð	øøøð ˆs�4˜¨¸&ÐAÑAÔAÐAs0   Ã2C; Ã;
D0Ä&D+Ä+D0ÇG  Ç 
HÇ*&HÈHc                ó*  — t          |dd ¦  «        r
|dk    s|rd S |                      ||¦  «        }|                      |||||¬¦  «        }|rF|j        r|j        r|dk    r|j        rt          d¦  «        ‚|j        s|                     ¦   «          n|                     ¦   «          |j        s|rt          d¦  «        ‚|                     ||||||	|
||||||¬¦  «         t          |t          ¦  «        r|r| 
                    |¬¦  «         d S d S d S )	NÚemptyr{   rä  rz   zCan only append to Tablesz0Compression not supported on Fixed format stores)Úobjr„  r–   r•   r“   rØ   rš   rµ   r…  rœ   r¤   rž   rs  ©r²   )r´  Ú_identify_grouprF  rm  Ú	is_existsr¹   Úset_object_infoÚwriterc   r  r­  )rä   r�   r�   r˜   r„  r™   r–   r•   r“   rØ   rš   rµ   r…  rœ   r¤   rž   rW   r    rs  rÌ   rB  s                        r_   rw  zHDFStore._write_to_groupz  s{  € õ. �5˜' 4Ñ(Ô(ð 	¨f¸Ò.?Ð.?À6Ð.?ØˆFà×$Ò$ S¨&Ñ1Ô1ˆà×Ò  v¨u¸xÐPVÐÑWÔWˆØð 	 ð ”:ð > !¤*ð >°¸7Ò1BÐ1BÀqÄ{Ð1BÝ Ð!<Ñ=Ô=Ð=Ø”;ð $Ø×!Ò!Ñ#Ô#Ð#øà×ÒÑÔÐàŒzð 	Q˜gð 	QÝÐOÑPÔPÐPð 	
�ŠØØØØØØ!Ø%ØØ%ØØØ%Ø#ð 	ñ 	
ô 	
ð 	
õ  �a�ÑÔð 	* Eð 	*Ø�NŠN 5ˆNÑ)Ô)Ð)Ð)Ð)ð	*ð 	*ð 	*ð 	*ra   rÌ   rM   c                ó|   — |                       |¦  «        }|                     ¦   «          |                     ¦   «         S r\   )rF  rG  r>  )rä   rÌ   rB  s      r_   r9  zHDFStore._read_group¸  s/   € Ø×Ò Ñ&Ô&ˆØ	�Š‰ŒˆØ�vŠv‰xŒxˆra   c                ó´   — |                       |¦  «        }| j        €J ‚|� |s| j                             |d¬¦  «         d}|€|                      |¦  «        }|S )z@Identify HDF5 group based on key, delete/create group if needed.NTry  )r   rÖ   Úremove_nodeÚ_create_nodes_and_group)rä   r�   r–   rÌ   s       r_   rý  zHDFStore._identify_group½  sm   € à—’˜cÑ"Ô"ˆð Œ|Ð'Ð'Ð'ð Ð VÐØŒL×$Ò$ U°dÐ$Ñ;Ô;Ð;ØˆEàˆ=Ø×0Ò0°Ñ5Ô5ˆEàˆra   c                ó  — | j         €J ‚|                     d¦  «        }d}|D ]g}t          |¦  «        sŒ|}|                     d¦  «        s|dz  }||z  }|                      |¦  «        }|€| j                              ||¦  «        }|}Œh|S )z,Create nodes from key and return group name.Nr  )rÖ   Úsplitrt   Úendswithr   Úcreate_group)rä   r�   Úpathsr¾   ÚpÚnew_pathrÌ   s          r_   r  z HDFStore._create_nodes_and_groupÏ  sª   € ð Œ|Ð'Ð'Ð'à—	’	˜#‘”ˆàˆØð 
	ð 
	ˆAÝ�q‘6”6ð ØØˆHØ—=’= Ñ%Ô%ð  Ø˜C‘�Ø˜‰MˆHØ—M’M (Ñ+Ô+ˆEØˆ}Øœ×1Ò1°$¸Ñ:Ô:�ØˆDˆDØˆra   )rŒ   NNF)r’   rZ   r“   r”   rØ   r—   rY   r¡   ©rY   rZ   ©r�   rZ   )r�   rZ   rY   r¡   )r�   rZ   rY   r”   )re   rZ   )r�   rZ   rY   r—   ©rY   ri   )rY   r   )r  r  r  r  r  r  rY   r¡   )r­   )r  rZ   rY   r  )rY   r"  )rY   r&  )rŒ   )r’   rZ   rY   r¡   ©rY   r¡   ©rY   r—   ©F)r2  r—   rY   r¡   )NNNNFNF)r�   rZ   r´   r—   rµ   r”   r¸   r—   ©NNN©r�   rZ   r°   r”   r±   r”   ©NN)r�   rZ   rQ  rZ   r°   r”   r±   r”   )NNNNNFNF)r´   r—   rµ   r”   r¸   r—   )NTFNNNNNNr…   TF)r�   rZ   r�   r‘   r™   r—   r–   r—   r“   r”   rš   r›   rž   rŸ   r    rZ   rs  r—   rœ   r—   rY   r¡   )NNTTNNNNNNNNNNr…   )r�   rZ   r�   r‘   r™   r‚  r–   r—   r“   r”   rš   r›   rµ   r”   rœ   r�   rž   rŸ   r    rZ   rY   r¡   )NNF)r†  r‡  rœ   r—   rY   r¡   )r�   rZ   rª  r”   r«  rX   rY   r¡   ©rY   rr   )r  )ru   rZ   rY   r·  )r�   rZ   rY   r¿  )r�   rZ   rY   rÄ  )r+  TNNNFT)r’   rZ   rÆ  r—   r“   r”   rØ   r—   rÇ  r—   rY   r«   )r˜   rZ   rY   rZ   )NNrV   r…   )r�   rÛ  rW   rZ   r    rZ   rY   rÄ  )NTFNNNNNNFNNNr…   T)r�   rZ   r�   r‘   r™   r‚  r–   r—   r“   r”   rš   r›   rµ   r”   rœ   r—   r    rZ   rs  r—   rY   r¡   )rÌ   rM   )r�   rZ   r–   r—   rY   rM   )r�   rZ   rY   rM   )1rý   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rå   ré   Úpropertyrì   rî   ró   rõ   rø   rþ   r  r  r	  r  r  r!  r%  r)  rã   rÇ   rº   r4  rñ   rÅ   rP  rT  rr  rª   r÷   r–   r©  r®  rÂ   r¾  r   rM  rÎ  rÖ  rë   rv  rF  rw  r9  rý  r  rÚ   ra   r_   r«   r«   ð  sl  € € € € € € ð?ð ?ðB ÐÐÑØ€J€J�Jð
 Ø $ØØ ð'ð 'ð 'ð 'ð 'ðBð ð ð ð ð!ð !ñ „Xð!ð ðð ð ñ „Xððð ð ð ðð ð ð ð ð  ð  ð  ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð"ð "ð "ð "ð4ð 4ð 4ð 4ðð ð ð ðð ð ð ð.
ð .
ð .
ð .
ð .
ð`!ð !ð !ð !ð#ð #ð #ð #ð+Jð +Jð +Jð +Jð +JðZð ð ð ð ð)ð )ð )ñ „Xð)ð4ð 4ð 4ð 4ð 4ð,!+ð !+ð !+ð !+ðL ØØØØØ $Ø ðað að að að aðL Ø ØðIð Ið Ið Ið IðH !Øð&Fð &Fð &Fð &Fð &FðV ØØØØØØ $Ø ðw/ð w/ð w/ð w/ð w/ðz ØØØØ $Ø48ØØ9=ØØØ Øðf
ð f
ð f
ð f
ð f
ðP5=ð 5=ð 5=ð 5=ð 5=ðv ØØ"&ØØØ $ØØ48ØØ $ØØ"Ø9=ØØð%~
ð ~
ð ~
ð ~
ð ~
ðJ ØØð_Rð _Rð _Rð _Rð _RðH Ø#Øð&Fð &Fð &Fð &Fð &FðP)
ð )
ð )
ð )
ðV>>ð >>ð >>ð >>ð >>ð@ð ð ð ð ð ð ð ð Ø ØØØ $Ø Øð9ð 9ð 9ð 9ð 9ðv9ð 9ð 9ð 9ð|Eð Eð Eð Eðð ð ð ð Ø+/ØØðYBð YBð YBð YBð YBð@ Ø"&ØØØ $ØØ48Ø $ØØØØØØØ ð'<*ð <*ð <*ð <*ð <*ð|ð ð ð ð
ð ð ð ð$ð ð ð ð ð ra   r«   c                  ó`   — e Zd ZU dZded<   ded<   ded<   	 	 	 	 	 ddd„Zdd„Zdd„Zddd„ZdS )rH  aa  
    Define the iteration interface on a table

    Parameters
    ----------
    store : HDFStore
    s     : the referred storer
    func  : the function to execute the query
    where : the where of the query
    nrows : the rows to iterate on
    start : the passed start value (default is None)
    stop  : the passed stop value (default is None)
    iterator : bool, default False
        Whether to use the default iterator.
    chunksize : the passed chunking value (default is 100000)
    auto_close : bool, default False
        Whether to automatically close the store at the end of iteration.
    r”   rµ   r«   r¦   rÄ  rB  NFr´   r—   r¸   rY   r¡   c                ó  — || _         || _        || _        || _        | j        j        r|€d}|€d}|€|}t          ||¦  «        }|| _        || _        || _        d | _	        |s|	�|	€d}	t          |	¦  «        | _        nd | _        |
| _        d S )Nr   é † )r¦   rB  rC  ru   rm  ÚminrE  r°   r±   ri  ri   rµ   r¸   )rä   r¦   rB  rC  ru   rE  r°   r±   r´   rµ   r¸   s              r_   rå   zTableIterator.__init__ý  s±   € ð ˆŒ
ØˆŒØˆŒ	ØˆŒ
ð Œ6Œ?ð 	$Øˆ}Ø�Øˆ}Ø�Øˆ|Ø�Ý�u˜dÑ#Ô#ˆDàˆŒ
ØˆŒ
ØˆŒ	àˆÔØð 	"�yÐ,ØÐ Ø"�	Ý  ™^œ^ˆDŒNˆNà!ˆDŒNà$ˆŒˆˆra   rG   c              #  óJ  K  — | j         }| j        €t          d¦  «        ‚|| j        k     rdt	          || j        z   | j        ¦  «        }|                      d d | j        ||…         ¦  «        }|}|�t          |¦  «        sŒ`|V — || j        k     °d|                      ¦   «          d S )Nz*Cannot iterate until get_result is called.)	r°   ri  r¹   r±   r  rµ   rC  rt   rÇ   )rä   rÓ   r±   r�   s       r_   r%  zTableIterator.__iter__'  s­   è è € à”*ˆØÔÐ#ÝÐIÑJÔJÐJØ˜œ	Ò!Ð!Ý�w ¤Ñ/°´Ñ;Ô;ˆDØ—I’I˜d D¨$Ô*:¸7À4¸<Ô*HÑIÔIˆEØˆGØˆ}¥C¨¡J¤Jˆ}ØàˆKˆKˆKð ˜œ	Ò!Ð!ð 	�
Š
‰Œˆˆˆra   c                óJ   — | j         r| j                             ¦   «          d S d S r\   )r¸   r¦   rÇ   rè   s    r_   rÇ   zTableIterator.close7  s0   € ØŒ?ð 	ØŒJ×ÒÑÔÐÐÐð	ð 	ra   ri  c                óÜ  — | j         �Pt          | j        t          ¦  «        st	          d¦  «        ‚| j                             | j        ¬¦  «        | _        | S |rVt          | j        t          ¦  «        st	          d¦  «        ‚| j                             | j        | j        | j	        ¬¦  «        }n| j        }|  
                    | j        | j	        |¦  «        }|                      ¦   «          |S )Nz0can only use an iterator or chunksize on a table)ru   z$can only read_coordinates on a tablerL  )rµ   rc   rB  r  rÀ   rN  ru   ri  r°   r±   rC  rÇ   )rä   ri  ru   Úresultss       r_   rI  zTableIterator.get_result;  sß   € àŒ>Ð%Ý˜dœf¥eÑ,Ô,ð TÝÐ RÑSÔSÐSà#œv×6Ò6¸T¼ZÐ6ÑHÔHˆDÔàˆKð ð 	Ý˜dœf¥eÑ,Ô,ð HÝÐ FÑGÔGÐGØ”F×+Ò+Ø”j¨¬
¸¼ð ,ñ ô ˆEˆEð ”JˆEð —)’)˜DœJ¨¬	°5Ñ9Ô9ˆØ�
Š
‰ŒˆØˆra   )NNFNF)r¦   r«   rB  rÄ  r´   r—   rµ   r”   r¸   r—   rY   r¡   ©rY   rG   r  r  )ri  r—   )	rý   r  r  r  r  rå   r%  rÇ   rI  rÚ   ra   r_   rH  rH  å  s¯   € € € € € € ðð ð& ÐÐÑØ€O€O�OØÐÐÑð ØØØ $Ø ð(%ð (%ð (%ð (%ð (%ðTð ð ð ð ð ð ð ðð ð ð ð ð ð ra   rH  c                  ó„  — e Zd ZU dZdZded<   dZded<   g d¢Z	 	 	 	 	 	 	 	 	 	 	 	 	 d4d5d„Ze	d6d„¦   «         Z
e	d7d„¦   «         Zd8d„Zd7d„Zd9d„Zd:d„Ze	d:d„¦   «         Zd;d„Zd „ Ze	d!„ ¦   «         Ze	d"„ ¦   «         Ze	d#„ ¦   «         Ze	d$„ ¦   «         Zd<d&„Zd=d>d'„Zd>d(„Zd?d,„Zd=d-„Zd@d.„Zd>d/„Zd>d0„Zd>d1„ZdAd2„Z dAd3„Z!dS )BÚIndexCola  
    an index column description class

    Parameters
    ----------
    axis   : axis which I reference
    values : the ndarray like converted values
    kind   : a string description of this type
    typ    : the pytables type
    pos    : the position in the pytables

    Tr—   Úis_an_indexableÚis_data_indexable)ÚfreqÚtzÚ
index_nameNre   rZ   ÚcnamerX   rY   r¡   c                ó´  — t          |t          ¦  «        st          d¦  «        ‚|| _        || _        || _        || _        |p|| _        || _        || _	        || _
        |	| _        |
| _        || _        || _        || _        || _        |�|                      |¦  «         t          | j        t          ¦  «        sJ ‚t          | j        t          ¦  «        sJ ‚d S )Nz`name` must be a str.)rc   rZ   r¹   rœ  r«  Útypre   r+  rd  Úposr(  r)  r*  r¢  r{   rÏ   ÚmetadataÚset_pos)rä   re   rœ  r«  r-  r+  rd  r.  r(  r)  r*  r¢  r{   rÏ   r/  s                  r_   rå   zIndexCol.__init__g  sÚ   € õ" ˜$¥Ñ$Ô$ð 	6ÝÐ4Ñ5Ô5Ð5àˆŒØˆŒ	ØˆŒØˆŒ	Ø�]˜dˆŒ
ØˆŒ	ØˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒØˆŒ
ØˆŒ	Ø ˆŒàˆ?Ø�LŠL˜ÑÔÐõ ˜$œ)¥SÑ)Ô)Ð)Ð)Ð)Ý˜$œ*¥cÑ*Ô*Ð*Ð*Ð*Ð*Ð*ra   ri   c                ó   — | j         j        S r\   )r-  Úitemsizerè   s    r_   r2  zIndexCol.itemsize’  s   € ð ŒxÔ Ð ra   c                ó   — | j         › d�S )NÚ_kindrd   rè   s    r_   Ú	kind_attrzIndexCol.kind_attr—  ó   € à”)Ð"Ð"Ð"Ð"ra   r.  c                óF   — || _         |�| j        �|| j        _        dS dS dS )z,set the position of this column in the TableN)r.  r-  Ú_v_pos)rä   r.  s     r_   r0  zIndexCol.set_pos›  s/   € àˆŒØˆ?˜tœxÐ3Ø!ˆDŒHŒOˆOˆOð ˆ?Ð3Ð3ra   c           
     óä   — t          t          t          | j        | j        | j        | j        | j        f¦  «        ¦  «        }d                     d„ t          g d¢|d¬¦  «        D ¦   «         ¦  «        S )Nú,c                ó"   — g | ]\  }}|› d |› �‘ŒS ©z->rÚ   ©rn   r�   r�   s      r_   rq   z%IndexCol.__repr__.<locals>.<listcomp>¦  ó:   € ð ð ð á�C˜ð Ð!Ð!˜%Ð!Ð!ðð ð ra   )re   r+  rd  r.  r«  TrX  )
rs   ÚmaprD   re   r+  rd  r.  r«  Újoinrl  ©rä   Útemps     r_   r	  zIndexCol.__repr__¡  sƒ   € ÝÝ•˜tœy¨$¬*°d´iÀÄÈ4Ì9ÐUÑVÔVñ
ô 
ˆð �xŠxðð å"%Ø<Ð<Ð<¸dÈ4ð#ñ #ô #ðñ ô ñ
ô 
ð 	
ra   ÚotherÚobjectc                ó>   ‡ ‡— t          ˆˆ fd„dD ¦   «         ¦  «        S )úcompare 2 col itemsc              3  ó`   •K  — | ](}t          ‰|d ¦  «        t          ‰|d ¦  «        k    V — Œ)d S r\   ©r´  ©rn   rŒ   rC  rä   s     €€r_   r�  z"IndexCol.__eq__.<locals>.<genexpr>°  óT   øè è € ð 
ð 
àõ �D˜!˜TÑ"Ô"¥g¨e°Q¸Ñ&=Ô&=Ò=ð
ð 
ð 
ð 
ð 
ð 
ra   )re   r+  rd  r.  ©rŠ  ©rä   rC  s   ``r_   Ú__eq__zIndexCol.__eq__®  sA   øø€ åð 
ð 
ð 
ð 
ð 
à5ð
ñ 
ô 
ñ 
ô 
ð 	
ra   c                ó.   — |                       |¦  «         S r\   )rM  rL  s     r_   Ú__ne__zIndexCol.__ne__µ  s   € Ø—;’;˜uÑ%Ô%Ð%Ð%ra   c                óx   — t          | j        d¦  «        sdS t          | j        j        | j        ¦  «        j        S )z%return whether I am an indexed columnrŒ  F)Úhasattrr{   r´  rŒ  r+  rÊ  rè   s    r_   rÊ  zIndexCol.is_indexed¸  s6   € õ �t”z 6Ñ*Ô*ð 	à�5Ý�t”z”¨¬
Ñ3Ô3Ô>Ð>ra   rœ  ú
np.ndarrayrW   r    ú3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]c           	     ó´  — t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|j        j        �|| j                                      ¦   «         }| j        }t          ||||¦  «        }i }| j
        |d<   | j        �
| j        |d<   t          }t          j        |j        d¦  «        st          |j        t          ¦  «        rt           }n|j        dk    rd|v rd„ }	  ||fi |¤Ž}n—# t"          $ rm}	|dk    r\t%          ¦   «         rNt'          |	¦  «                             d¦  «        r,t*          r% ||fd	t-          d
t          j        ¬¦  «        i|¤Ž}n‚ Y d}	~	n%d}	~	wt0          $ r d|v rd|d<    ||fi |¤Ž}Y nw xY w| j        �Ct          |t           ¦  «        r.|                     d¦  «                             | j        ¦  «        }
n|}
|
|
fS )zV
        Convert the data from this selection to the appropriate pandas type.
        Nre   r(  ÚMÚi8c                óˆ   — t          j        | |                     dd ¦  «        ¬¦  «                             |d         ¦  «        S )Nr(  )r(  re   )r1   Úfrom_ordinalsrñ   Ú_rename)r\  Úkwdss     r_   r§   z"IndexCol.convert.<locals>.<lambda>à  s?   € ­Ô(AØ˜Ÿš ¨Ñ.Ô.ð)ñ )ô )çŠg�d˜6”lÑ#Ô#ð ra   Úsurrogatepassúsurrogates not allowedÚdtypeÚpython©ÚstorageÚna_valueÚUTC)rc   ÚnpÚndarrayrü   r]  Úfieldsr+  rÎ  r«  Ú_maybe_convertr*  r(  r/   r   Úis_np_dtyper)   r.   ÚUnicodeEncodeErrorr   rZ   r  r   r4   Únanr¹   r)  Útz_localizeÚ
tz_convert)rä   rœ  r¤   rW   r    Úval_kindrÈ   ÚfactoryÚnew_pd_indexr�  Úfinal_pd_indexs              r_   ÚconvertzIndexCol.convertÀ  sM  € õ ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð-ð Œ<ÔÐ*ð ˜DœJÔ'×,Ò,Ñ.Ô.ˆFà”9ˆÝ ¨°(¸FÑCÔCˆØˆØœˆˆv‰àŒ9Ð Ø!œYˆF�6‰Nå/4ˆÝŒ?˜6œ<¨Ñ-Ô-ð 	$µØŒL�/ñ2
ô 2
ð 	$õ $ˆGˆGØŒ\˜TÒ!Ð! f°Ð&6Ð&6ð
$ð $ˆGð
	5Ø"˜7 6Ð4Ð4¨VÐ4Ð4ˆLˆLøÝ!ð 	ð 	ð 	à˜/Ò)Ð)Ý&Ñ(Ô(ð *å˜‘H”H×%Ò%Ð&>Ñ?Ô?ð *õ  ð *ð
  '˜wØð ð  å%¨hÅÄÐHÑHÔHð ð ð ð  ��ð ð ����øøøøõ ð 	5ð 	5ð 	5ð ˜ÐÐØ!%��v‘Ø"˜7 6Ð4Ð4¨VÐ4Ð4ˆLˆLˆLð	5øøøð Œ7Ð¥:¨l½MÑ#JÔ#JÐØ)×5Ò5°eÑ<Ô<×GÒGÈÌÑPÔPˆNˆNà)ˆNØ˜~Ð-Ð-s   Ã)	C3 Ã3
FÃ=A#E%Å%FÆFc                ó   — | j         S )zreturn the values©rœ  rè   s    r_   Ú	take_datazIndexCol.take_data	  s
   € àŒ{Ðra   c                ó   — | j         j        S r\   )r{   rµ  rè   s    r_   ÚattrszIndexCol.attrs	  ó   € àŒzÔ"Ð"ra   c                ó   — | j         j        S r\   ©r{   Údescriptionrè   s    r_   ry  zIndexCol.description	  ó   € àŒzÔ%Ð%ra   c                ó8   — t          | j        | j        d¦  «        S )z!return my current col descriptionN)r´  ry  r+  rè   s    r_   ÚcolzIndexCol.col	  s   € õ �tÔ'¨¬°TÑ:Ô:Ð:ra   c                ó   — | j         S ©zreturn my cython valuesrr  rè   s    r_   ÚcvalueszIndexCol.cvalues	  s   € ð Œ{Ðra   rG   c                ó*   — t          | j        ¦  «        S r\   )r$  rœ  rè   s    r_   r%  zIndexCol.__iter__	  s   € Ý�D”KÑ Ô Ð ra   c                ó  — | j         dk    rpt          |t          ¦  «        r|                     | j        ¦  «        }|�A| j        j        |k     r3t          ¦   «                              || j	        ¬¦  «        | _        dS dS dS dS )zŸ
        maybe set a string col itemsize:
            min_itemsize can be an integer or a dict with this columns name
            with an integer size
        ÚstringN)r2  r.  )
r«  rc   r‡  rñ   re   r-  r2  r‹   Ú	StringColr.  )rä   rš   s     r_   Úmaybe_set_sizezIndexCol.maybe_set_size	  s‡   € ð Œ9˜Ò Ð Ý˜,­Ñ-Ô-ð ;Ø+×/Ò/°´	Ñ:Ô:�àÐ'¨D¬HÔ,=ÀÒ,LÐ,LÝ"™9œ9×.Ò.¸È$Ì(Ð.ÑSÔS�”��ð !Ð ð (Ð'Ð,LÐ,Lra   c                ó   — d S r\   rÚ   rè   s    r_   Úvalidate_nameszIndexCol.validate_names)	  ó   € Øˆra   ÚhandlerÚAppendableTabler–   c                óì   — |j         | _         |                      ¦   «          |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      ¦   «          d S r\   )r{   Úvalidate_colÚvalidate_attrÚvalidate_metadataÚwrite_metadataÚset_attr)rä   rˆ  r–   s      r_   Úvalidate_and_setzIndexCol.validate_and_set,	  sj   € Ø”]ˆŒ
Ø×ÒÑÔÐØ×Ò˜6Ñ"Ô"Ð"Ø×Ò˜wÑ'Ô'Ð'Ø×Ò˜GÑ$Ô$Ð$Ø�Š‰Œˆˆˆra   c           	     óª   — | j         dk    rG| j        }|�>|€| j        }|j        |k     r#t          d|› d| j        › d|j        › d�¦  «        ‚|j        S dS )z:validate this column: return the compared against itemsizer‚  Nz#Trying to store a string with len [z] in [z)] column but
this column has a limit of [zC]!
Consider using min_itemsize to preset the sizes on these columns)r«  r|  r2  r¹   r+  )rä   r2  Úcs      r_   r‹  zIndexCol.validate_col4	  sŒ   € ð Œ9˜Ò Ð Ø”ˆAØˆ}ØÐ#Ø#œ}�HØ”: Ò(Ð(Ý$ð<¸hð <ð <Ø œJð<ð <àœJð<ð <ð <ñô ð ð ”zÐ!àˆtra   c                ó˜   — |rCt          | j        | j        d ¦  «        }|�(|| j        k    rt	          d|› d| j        › d�¦  «        ‚d S d S d S )Nzincompatible kind in col [ú - rY  )r´  ru  r5  r«  rÀ   )rä   r–   Úexisting_kinds      r_   rŒ  zIndexCol.validate_attrG	  sq   € àð 	Ý# D¤J°´ÀÑEÔEˆMØÐ(¨]¸d¼iÒ-GÐ-GÝØO°ÐOÐOÀ4Ä9ÐOÐOÐOñô ð ð	ð 	à(Ð(Ð-GÐ-Gra   c                ó¨  — | j         D ]É}t          | |d¦  «        }|                     | j        i ¦  «        }|                     |¦  «        }||v ry|�w||k    rq|dv rLt
          |||fz  }t          j        |t          t          ¦   «         ¬¦  «         d||<   t          | |d¦  «         ŒŸt          d| j        › d|› d|› d|› d�	¦  «        ‚|€|�|||<   ŒÊdS )	z
        set/update the info for this indexable with the key/value
        if there is a conflict raise/warn as needed
        N)r(  r*  ©Ú
stacklevelzinvalid info for [z] for [z], existing_value [z] conflicts with new value [rY  )Ú_info_fieldsr´  Ú
setdefaultre   rñ   rx   ÚwarningsÚwarnr   r!   Úsetattrr¹   )rä   rÖ  r�   r�   ÚidxÚexisting_valueÚwss          r_   Úupdate_infozIndexCol.update_infoP	  s;  € ð
 Ô$ð 	!ð 	!ˆCÝ˜D # tÑ,Ô,ˆEØ—/’/ $¤)¨RÑ0Ô0ˆCà ŸWšW S™\œ\ˆNØ�cˆzˆz˜eÐ/°NÀeÒ4KÐ4KàÐ0Ð0Ð0Ý/°3¸ÈÐ2NÑN�BÝ”MØÕ4ÕAQÑASÔASðñ ô ð ð
  $�C˜‘HÝ˜D # tÑ,Ô,Ð,Ð,õ %ð/¨T¬Yð /ð /¸sð /ð /Ø+9ð/ð /à&+ð/ð /ð /ñô ð ð
 Ð" nÐ&@Ø ��C‘øð1	!ð 	!ra   c                óv   — |                      | j        ¦  «        }|�| j                             |¦  «         dS dS )z!set my state from the passed infoN)rñ   re   Ú__dict__Úupdate)rä   rÖ  rž  s      r_   Úset_infozIndexCol.set_infoo	  s=   € à�hŠh�t”yÑ!Ô!ˆØˆ?ØŒM× Ò  Ñ%Ô%Ð%Ð%Ð%ð ˆ?ra   c                óF   — t          | j        | j        | j        ¦  «         dS )zset the kind for this columnN)r�  ru  r5  r«  rè   s    r_   r�  zIndexCol.set_attru	  s    € å�”
˜DœN¨D¬IÑ6Ô6Ð6Ð6Ð6ra   c                ó¶   — | j         dk    rG| j        }|                     | j        ¦  «        }|�&|�&t	          ||dd¬¦  «        st          d¦  «        ‚dS dS dS dS )z:validate that kind=category does not change the categoriesÚcategoryNT©Ú
strict_nanÚdtype_equalzEcannot append a categorical with different categories to the existing)rÏ   r/  Úread_metadatar+  r,   r¹   )rä   rˆ  Únew_metadataÚcur_metadatas       r_   r�  zIndexCol.validate_metadatay	  sŒ   € àŒ9˜
Ò"Ð"Øœ=ˆLØ"×0Ò0°´Ñ<Ô<ˆLàÐ(Ø Ð,Ý(Ø  ,¸4ÈTðñ ô ð -õ
 !ð;ñô ð ð #Ð"ð )Ð(Ø,Ð,Ð,Ð,ra   c                óX   — | j         �"|                     | j        | j         ¦  «         dS dS )zset the meta dataN)r/  rŽ  r+  )rä   rˆ  s     r_   rŽ  zIndexCol.write_metadataŠ	  s2   € àŒ=Ð$Ø×"Ò" 4¤:¨t¬}Ñ=Ô=Ð=Ð=Ð=ð %Ð$ra   )NNNNNNNNNNNNN)re   rZ   r+  rX   rY   r¡   r  r  )r.  ri   rY   r¡   ©rC  rD  rY   r—   r  )rœ  rR  rW   rZ   r    rZ   rY   rS  r#  r\   r  )rˆ  r‰  r–   r—   rY   r¡   )r–   r—   rY   r¡   )rˆ  r‰  rY   r¡   )"rý   r  r  r  r&  r  r'  r™  rå   r  r2  r5  r0  r	  rM  rO  rÊ  rp  rs  ru  ry  r|  r  r%  r„  r†  r�  r‹  rŒ  r¡  r¥  r�  r�  rŽ  rÚ   ra   r_   r%  r%  U  s½  € € € € € € ðð ð !€OÐ Ð Ð Ñ Ø"ÐÐ"Ð"Ð"Ñ"Ø/Ð/Ð/€Lð
 ØØØ ØØØØØØØØØð)+ð )+ð )+ð )+ð )+ðV ð!ð !ð !ñ „Xð!ð ð#ð #ð #ñ „Xð#ð"ð "ð "ð "ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð&ð &ð &ð &ð ð?ð ?ð ?ñ „Xð?ðA.ð A.ð A.ð A.ðFð ð ð ð#ð #ñ „Xð#ð ð&ð &ñ „Xð&ð ð;ð ;ñ „Xð;ð ðð ñ „Xðð!ð !ð !ð !ðTð Tð Tð Tð Tðð ð ð ðð ð ð ðð ð ð ð&ð ð ð ð!ð !ð !ð !ð>&ð &ð &ð &ð7ð 7ð 7ð 7ðð ð ð ð">ð >ð >ð >ð >ð >ra   r%  c                  ó:   — e Zd ZdZedd„¦   «         Zdd„Zdd„ZdS )ÚGenericIndexColz:an index which is not represented in the data of the tablerY   r—   c                ó   — dS ©NFrÚ   rè   s    r_   rÊ  zGenericIndexCol.is_indexed“	  ó   € àˆura   rœ  rR  rW   rZ   r    útuple[Index, Index]c                ó¤   — t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚t	          t          |¦  «        ¦  «        }||fS )zÛ
        Convert the data from this selection to the appropriate pandas type.

        Parameters
        ----------
        values : np.ndarray
        nan_rep : str
        encoding : str
        errors : str
        )rc   rc  rd  rü   r2   rt   )rä   rœ  r¤   rW   r    r™   s         r_   rp  zGenericIndexCol.convert—	  sG   € õ ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð-å�3˜v™;œ;Ñ'Ô'ˆØ�eˆ|Ðra   r¡   c                ó   — d S r\   rÚ   rè   s    r_   r�  zGenericIndexCol.set_attr©	  r‡  ra   Nr  )rœ  rR  rW   rZ   r    rZ   rY   r¶  r  )rý   r  r  r  r  rÊ  rp  r�  rÚ   ra   r_   r²  r²  �	  s`   € € € € € ØDÐDàðð ð ñ „Xððð ð ð ð$ð ð ð ð ð ra   r²  c                  ój  ‡ — e Zd ZdZdZdZddgZ	 	 	 	 	 	 	 	 	 	 	 	 d,d-ˆ fd„Zed.d„¦   «         Z	ed.d„¦   «         Z
d.d„Zd/d„Zd0d„Zd„ Zed1d„¦   «         Zed„ ¦   «         Zed2d „¦   «         Zed3d!„¦   «         Zed"„ ¦   «         Zed#„ ¦   «         Zed$„ ¦   «         Zed%„ ¦   «         Zd4d&„Zd5d*„Zd4d+„Zˆ xZS )6ÚDataCola3  
    a data holding column, by definition this is not indexable

    Parameters
    ----------
    data   : the actual data
    cname  : the column name in the table to hold the data (typically
                values)
    meta   : a string description of the metadata
    metadata : the actual metadata
    Fr)  r¢  Nre   rZ   r+  rX   r]  úDtypeArg | NonerY   r¡   c                ó|   •— t          ¦   «                              |||||||||	|
|¬¦  «         || _        || _        d S )N)re   rœ  r«  r-  r.  r+  r)  r¢  r{   rÏ   r/  )Úsuperrå   r]  rÍ  )rä   re   rœ  r«  r-  r+  r.  r)  r¢  r{   rÏ   r/  r]  rÍ  Ú	__class__s                 €r_   rå   zDataCol.__init__¾	  s[   ø€ õ  	‰Œ×ÒØØØØØØØØØØØð 	ñ 	
ô 	
ð 	
ð ˆŒ
ØˆŒ	ˆ	ˆ	ra   c                ó   — | j         › d�S )NÚ_dtyperd   rè   s    r_   Ú
dtype_attrzDataCol.dtype_attrÞ	  s   € à”)Ð#Ð#Ð#Ð#ra   c                ó   — | j         › d�S )NÚ_metard   rè   s    r_   Ú	meta_attrzDataCol.meta_attrâ	  r6  ra   c           
     óä   — t          t          t          | j        | j        | j        | j        | j        f¦  «        ¦  «        }d                     d„ t          g d¢|d¬¦  «        D ¦   «         ¦  «        S )Nr:  c                ó"   — g | ]\  }}|› d |› �‘ŒS r<  rÚ   r=  s      r_   rq   z$DataCol.__repr__.<locals>.<listcomp>í	  r>  ra   )re   r+  r]  r«  ÚshapeTrX  )
rs   r?  rD   re   r+  r]  r«  rÇ  r@  rl  rA  s     r_   r	  zDataCol.__repr__æ	  sˆ   € ÝÝÝ˜tœy¨$¬*°d´jÀ$Ä)ÈTÌZÐXñô ñ
ô 
ˆð
 �xŠxðð å"%Ø?Ð?Ð?ÀÈdð#ñ #ô #ðñ ô ñ
ô 
ð 	
ra   rC  rD  r—   c                ó>   ‡ ‡— t          ˆˆ fd„dD ¦   «         ¦  «        S )rF  c              3  ó`   •K  — | ](}t          ‰|d ¦  «        t          ‰|d ¦  «        k    V — Œ)d S r\   rH  rI  s     €€r_   r�  z!DataCol.__eq__.<locals>.<genexpr>÷	  rJ  ra   )re   r+  r]  r.  rK  rL  s   ``r_   rM  zDataCol.__eq__õ	  sA   øø€ åð 
ð 
ð 
ð 
ð 
à6ð
ñ 
ô 
ñ 
ô 
ð 	
ra   rÍ  rO   c                óˆ   — |€J ‚| j         �J ‚t          |¦  «        \  }}|| _        || _         t          |¦  «        | _        d S r\   )r]  Ú_get_data_and_dtype_namerÍ  Ú_dtype_to_kindr«  )rä   rÍ  Ú
dtype_names      r_   Úset_datazDataCol.set_dataü	  sO   € ØÐÐÐØŒzÐ!Ð!Ð!å3°DÑ9Ô9ÑˆˆjàˆŒ	ØˆŒ
Ý" :Ñ.Ô.ˆŒ	ˆ	ˆ	ra   c                ó   — | j         S )zreturn the data©rÍ  rè   s    r_   rs  zDataCol.take_data
  s
   € àŒyÐra   rœ  rK   c                ó   — |j         }|j        }|j        }|j        dk    r	d|j        f}t          |t          ¦  «        r)|j        }|                      ||j         j	        ¬¦  «        }næt          j        |d¦  «        st          |t          ¦  «        r|                      |¦  «        }n¦t          j        |d¦  «        r|                      |¦  «        }n{t          |¦  «        r*t!          ¦   «                              ||d         ¬¦  «        }nBt%          |¦  «        r|                      ||¦  «        }n|                      ||j	        ¬¦  «        }|S )zW
        Get an appropriately typed and shaped pytables.Col object for values.
        rk   ©r«  rU  Úmr   ©r2  rÇ  )r]  r2  rÇ  r•  Úsizerc   r8   ÚcodesÚget_atom_datare   r   rg  r)   Úget_atom_datetime64Úget_atom_timedelta64r$   r‹   Ú
ComplexColr&   Úget_atom_string)r÷  rœ  r]  r2  rÇ  rÖ  Úatoms          r_   Ú	_get_atomzDataCol._get_atom

  sI  € ð
 ”ˆð ”>ˆà”ˆØŒ;˜!ÒÐð ˜œÐ$ˆEå�f�kÑ*Ô*ð 	=Ø”LˆEØ×$Ò$ U°´Ô1AÐ$ÑBÔBˆDˆDÝŒ_˜U CÑ(Ô(ð 		=­J°u½oÑ,NÔ,Nð 		=Ø×*Ò*¨5Ñ1Ô1ˆDˆDÝŒ_˜U CÑ(Ô(ð 	=Ø×+Ò+¨EÑ2Ô2ˆDˆDÝ˜eÑ$Ô$ð 	=Ý‘9”9×'Ò'°ÀÀqÄÐ'ÑJÔJˆDˆDÝ˜UÑ#Ô#ð 	=Ø×&Ò& u¨hÑ7Ô7ˆDˆDà×$Ò$ U°´Ð$Ñ<Ô<ˆDàˆra   c                óT   — t          ¦   «                              ||d         ¬¦  «        S )Nr   rÔ  ©r‹   rƒ  ©r÷  rÇ  r2  s      r_   rÛ  zDataCol.get_atom_string*
  s#   € å‰yŒy×"Ò"¨H¸EÀ!¼HÐ"ÑEÔEÐEra   r«  ú	type[Col]c                óè   — |                      d¦  «        r|dd…         }d|› d�}n1|                      d¦  «        rd}n|                     ¦   «         }|› d�}t          t          ¦   «         |¦  «        S )z0return the PyTables column class for this columnÚuinté   NÚUIntrK   ÚperiodÚInt64Col)rÁ  Ú
capitalizer´  r‹   )r÷  r«  Úk4Úcol_nameÚkcaps        r_   Úget_atom_coltypezDataCol.get_atom_coltype.
  s}   € ð �?Š?˜6Ñ"Ô"ð 	$Ø�a�b�b”ˆBØ%˜b�~�~�~ˆHˆHØ�_Š_˜XÑ&Ô&ð 	$à!ˆHˆHà—?’?Ñ$Ô$ˆDØ�|�|�|ˆHå•w‘y”y (Ñ+Ô+Ð+ra   c                óN   —  |                       |¬¦  «        |d         ¬¦  «        S )NrÒ  r   ©rÇ  ©rì  ©r÷  rÇ  r«  s      r_   r×  zDataCol.get_atom_data=
  s*   € à.ˆs×#Ò#¨Ð#Ñ.Ô.°U¸1´XÐ>Ñ>Ô>Ð>ra   c                óR   — t          ¦   «                              |d         ¬¦  «        S ©Nr   rî  ©r‹   rç  ©r÷  rÇ  s     r_   rØ  zDataCol.get_atom_datetime64A
  ó!   € å‰yŒy×!Ò!¨¨a¬Ð!Ñ1Ô1Ð1ra   c                óR   — t          ¦   «                              |d         ¬¦  «        S rò  ró  rô  s     r_   rÙ  zDataCol.get_atom_timedelta64E
  rõ  ra   c                ó.   — t          | j        dd ¦  «        S )NrÇ  )r´  rÍ  rè   s    r_   rÇ  zDataCol.shapeI
  s   € å�t”y '¨4Ñ0Ô0Ð0ra   c                ó   — | j         S r~  rÐ  rè   s    r_   r  zDataCol.cvaluesM
  s   € ð ŒyÐra   c                ó  — |r{t          | j        | j        d¦  «        }|�'|t          | j        ¦  «        k    rt          d¦  «        ‚t          | j        | j        d¦  «        }|�|| j        k    rt          d¦  «        ‚dS dS dS )zAvalidate that we have the same order as the existing & same dtypeNz4appended items do not match existing items in table!z@appended items dtype do not match existing items dtype in table!)r´  ru  r5  rr   rœ  r¹   rÁ  r]  )rä   r–   Úexisting_fieldsÚexisting_dtypes       r_   rŒ  zDataCol.validate_attrR
  sœ   € àð 		Ý% d¤j°$´.À$ÑGÔGˆOØÐ*¨Å$ÀtÄ{ÑBSÔBSÒ/SÐ/SÝ Ð!WÑXÔXÐXå$ T¤Z°´À$ÑGÔGˆNØÐ)¨nÀÄ
Ò.JÐ.JÝ ØVñô ð ð		ð 		ð *Ð)Ð.JÐ.Jra   rR  rW   r    c                óœ  — t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|j        j        �|| j                 }| j        €J ‚| j        €"t          |¦  «        \  }}t          |¦  «        }n|}| j        }| j
        }t          |t          j        ¦  «        sJ ‚| j        }| j        }	| j        }
| j        }|€J ‚|}|                     d¦  «        r|dk    rd}t!          |||¦  «        }�n±|                     d¦  «        r6|dk    rt          j        |d¬¦  «        }�n~t          j        ||¬¦  «        }�nf|dk    r^	 t          j        d„ |D ¦   «         t$          ¬¦  «        }�n8# t&          $ r) t          j        d	„ |D ¦   «         t$          ¬¦  «        }Y �nw xY w|d
k    r¼|	}|                     ¦   «         }|€t+          g t          j        ¬¦  «        }not/          |¦  «        }|                     ¦   «         rL||          }||dk    xx         |                     t4          ¦  «                             ¦   «         j        z  cc<   t;          j        |||
d¬¦  «        }n@	 |                     |d¬¦  «        }n'# t>          $ r |                     dd¬¦  «        }Y nw xY w|dk    rtA          ||||¬¦  «        }| j!        |fS )aR  
        Convert the data from this selection to the appropriate pandas type.

        Parameters
        ----------
        values : np.ndarray
        nan_rep :
        encoding : str
        errors : str

        Returns
        -------
        index : listlike to become an Index
        data : ndarraylike to become a column
        NÚ
datetime64údatetime64[ns]Útimedelta64úm8[ns]©r]  r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   ©r   Úfromordinal©rn   r�  s     r_   rq   z#DataCol.convert.<locals>.<listcomp>œ
  s#   € Ð<Ð<Ð<¨Q•TÔ% aÑ(Ô(Ð<Ð<Ð<ra   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   ©r   Úfromtimestampr  s     r_   rq   z#DataCol.convert.<locals>.<listcomp> 
  s#   € Ð>Ð>Ð>¨q•TÔ'¨Ñ*Ô*Ð>Ð>Ð>ra   r¨  éÿÿÿÿF)Ú
categoriesr¢  Úvalidate©rÎ  ÚOr‚  ©r¤   rW   r    )"rc   rc  rd  rü   r]  re  r+  r-  rË  rÌ  r«  rÏ   r/  r¢  r)  rÁ  Ú_set_tzÚasarrayrD  r¹   Úravelr/   Úfloat64r7   ÚanyÚastyperi   ÚcumsumÚ_valuesr8   Ú
from_codesrÀ   Ú_unconvert_string_arrayrœ  )rä   rœ  r¤   rW   r    Ú	convertedrÍ  r«  rÏ   r/  r¢  r)  r]  r
  rÖ  Úmasks                   r_   rp  zDataCol.convert_
  s8  € õ  ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð-ð Œ<ÔÐ*Ø˜DœJÔ'ˆFàŒxÐ#Ð#Ð#ØŒ:Ðõ %=¸VÑ$DÔ$DÑ!ˆI�zÝ! *Ñ-Ô-ˆDˆDàˆIØœˆJØ”9ˆDå˜)¥R¤ZÑ0Ô0Ð0Ð0Ð0ð ŒyˆØ”=ˆØ”,ˆØŒWˆàÐ%Ð%Ð%àˆð ×Ò˜LÑ)Ô)ð 2	>à˜Ò$Ð$Ø(�Ý 	¨2¨uÑ5Ô5ˆI‰Ià×Ò˜mÑ,Ô,ð ,	>Ø˜Ò%Ð%åœJ y¸ÐAÑAÔA�	‘	åœJ y¸Ð>Ñ>Ô>�	‘	Ø�fŠ_ˆ_ðÝœJØ<Ð<°)Ð<Ñ<Ô<ÅFðñ ô �	‘	øõ ð ð ð ÝœJØ>Ð>°IÐ>Ñ>Ô>Åfðñ ô �	�	‘	ðøøøð
 �ZÒÐà!ˆJØ—O’OÑ%Ô%ˆEð
 Ð!õ
 # 2­R¬ZÐ8Ñ8Ô8�
�
å˜JÑ'Ô'�Ø—8’8‘:”:ð LØ!+¨T¨EÔ!2�JØ˜% 2š+Ð&Ð&Ô&¨$¯+ª+µcÑ*:Ô*:×*AÒ*AÑ*CÔ*CÔ*KÑKÐ&Ð&Ñ&å#Ô.Ø *°gÈðñ ô ˆIˆIð
>Ø%×,Ò,¨U¸Ð,Ñ?Ô?�	�	øÝð >ð >ð >Ø%×,Ò,¨S°uÐ,Ñ=Ô=�	�	�	ð>øøøð �8ÒÐÝ/Ø 7°XÀfðñ ô ˆIð Œ{˜IÐ%Ð%s$   Å%E4 Å4/F'Æ&F'É-J Ê!J)Ê(J)c                óØ   — t          | j        | j        | j        ¦  «         t          | j        | j        | j        ¦  «         | j        €J ‚t          | j        | j        | j        ¦  «         dS )zset the data for this columnN)r�  ru  r5  rœ  rÄ  rÏ   r]  rÁ  rè   s    r_   r�  zDataCol.set_attrÉ
  s^   € å�”
˜DœN¨D¬KÑ8Ô8Ð8Ý�”
˜DœN¨D¬IÑ6Ô6Ð6ØŒzÐ%Ð%Ð%Ý�”
˜DœO¨T¬ZÑ8Ô8Ð8Ð8Ð8ra   )NNNNNNNNNNNN)re   rZ   r+  rX   r]  r»  rY   r¡   r  r°  )rÍ  rO   rY   r¡   )rœ  rO   rY   rK   )r«  rZ   rY   rá  ©r«  rZ   rY   rK   r  )rœ  rR  rW   rZ   r    rZ   )rý   r  r  r  r&  r'  r™  rå   r  rÁ  rÄ  r	  rM  rÎ  rs  ÚclassmethodrÝ  rÛ  rì  r×  rØ  rÙ  rÇ  r  rŒ  rp  r�  Ú__classcell__©r¾  s   @r_   rº  rº  ­	  s@  ø€ € € € € ð
ð 
ð €OØÐØ˜)Ð$€Lð
 ØØØ ØØØØØØØ!%Øðð ð ð ð ð ð ð@ ð$ð $ð $ñ „Xð$ð ð#ð #ð #ñ „Xð#ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð/ð /ð /ð /ðð ð ð ðð ð ñ „[ðð> ðFð Fñ „[ðFð ð,ð ,ð ,ñ „[ð,ð ð?ð ?ð ?ñ „[ð?ð ð2ð 2ñ „[ð2ð ð2ð 2ñ „[ð2ð ð1ð 1ñ „Xð1ð ðð ñ „Xððð ð ð ðh&ð h&ð h&ð h&ðT9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ra   rº  c                  óx   — e Zd ZdZdZdd„Zed„ ¦   «         Zedd
„¦   «         Zed„ ¦   «         Z	ed„ ¦   «         Z
dS )ÚDataIndexableColz+represent a data column that can be indexedTrY   r¡   c                óp   — t          t          | j        ¦  «        j        ¦  «        st	          d¦  «        ‚d S )Nú-cannot have non-object label DataIndexableCol)r&   r/   rœ  r]  r¹   rè   s    r_   r†  zDataIndexableCol.validate_namesÖ
  s;   € Ý�u T¤[Ñ1Ô1Ô7Ñ8Ô8ð 	NåÐLÑMÔMÐMð	Nð 	Nra   c                óF   — t          ¦   «                              |¬¦  «        S )N)r2  rß  rà  s      r_   rÛ  z DataIndexableCol.get_atom_stringÛ
  s   € å‰yŒy×"Ò"¨HÐ"Ñ5Ô5Ð5ra   r«  rZ   rK   c                ó>   —  |                       |¬¦  «        ¦   «         S )NrÒ  rï  rð  s      r_   r×  zDataIndexableCol.get_atom_dataß
  s!   € à.ˆs×#Ò#¨Ð#Ñ.Ô.Ñ0Ô0Ð0ra   c                óB   — t          ¦   «                              ¦   «         S r\   ró  rô  s     r_   rØ  z$DataIndexableCol.get_atom_datetime64ã
  ó   € å‰yŒy×!Ò!Ñ#Ô#Ð#ra   c                óB   — t          ¦   «                              ¦   «         S r\   ró  rô  s     r_   rÙ  z%DataIndexableCol.get_atom_timedelta64ç
  r'  ra   Nr  r  )rý   r  r  r  r'  r†  r  rÛ  r×  rØ  rÙ  rÚ   ra   r_   r!  r!  Ñ
  s©   € € € € € Ø5Ð5àÐðNð Nð Nð Nð
 ð6ð 6ñ „[ð6ð ð1ð 1ð 1ñ „[ð1ð ð$ð $ñ „[ð$ð ð$ð $ñ „[ð$ð $ð $ra   r!  c                  ó   — e Zd ZdZdS )ÚGenericDataIndexableColz(represent a generic pytables data columnN)rý   r  r  r  rÚ   ra   r_   r*  r*  ì
  s   € € € € € Ø2Ð2Ð2Ð2ra   r*  c                  óö  — e Zd ZU dZded<   dZded<   ded<   ded	<   d
ed<   dZded<   	 	 d8d9d„Zed:d„¦   «         Z	ed;d„¦   «         Z
ed„ ¦   «         Zd<d„Zd=d„Zd>d„Zed „ ¦   «         Zed!„ ¦   «         Zed"„ ¦   «         Zed#„ ¦   «         Zed?d$„¦   «         Zed:d%„¦   «         Zed&„ ¦   «         Zd=d'„Zd=d(„Zed)„ ¦   «         Zed:d*„¦   «         Zed+„ ¦   «         Zd@d-„ZdAd=d/„Zd:d0„Z	 	 	 	 dBdCd5„Zd=d6„Z	 dDdEd7„Z d.S )FÚFixedzø
    represent an object in my store
    facilitate read/write of various types of objects
    this is an abstract base class

    Parameters
    ----------
    parent : HDFStore
    group : Node
        The group node where the table resides.
    rZ   Úpandas_kindrz   Úformat_typeútype[DataFrame | Series]Úobj_typeri   r•  r«   rÔ   Fr—   rm  rV   r…   rÌ   rM   rW   rX   r    rY   r¡   c                ó$  — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚t          €J ‚t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|| _        || _        t          |¦  «        | _        || _	        d S r\   )
rc   r«   rü   rƒ   rM   rÔ   rÌ   r`   rW   r    )rä   rÔ   rÌ   rW   r    s        r_   rå   zFixed.__init__  s‚   € õ ˜&¥(Ñ+Ô+Ð9Ð9­T°&©\¬\Ñ9Ô9Ð+ÝÐ%Ð%Ð%Ý˜%¥¤Ñ1Ô1Ð>Ð>µ4¸±;´;Ñ>Ô>Ð1ØˆŒØˆŒ
Ý(¨Ñ2Ô2ˆŒØˆŒˆˆra   c                óh   — | j         d         dk    o!| j         d         dk    o| j         d         dk     S )Nr   rk   é
   é   )Úversionrè   s    r_   Úis_old_versionzFixed.is_old_version  s4   € àŒ|˜AŒ !Ò#ÐU¨¬°Q¬¸2Ò(=ÐUÀ$Ä,ÈqÄ/ÐTUÒBUÐUra   útuple[int, int, int]c                ó   — t          | j        j        dd¦  «        }t          |t          ¦  «        r]t          d„ |                     d¦  «        D ¦   «         ¦  «        }t          |¦  «        dk    rg |¢d‘R }t          |¦  «        dk    sJ ‚|S dS )	zcompute and set our versionÚpandas_versionNc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r\   ©ri   r[  s     r_   r�  z Fixed.version.<locals>.<genexpr>  s(   è è € ÐCÐC¨1¥ A¡¤ÐCÐCÐCÐCÐCÐCra   ú.r4  r   é   )r   r   r   )r´  rÌ   rµ  rc   rZ   rs   r  rt   )rä   r5  Úversion_tups      r_   r5  zFixed.version  sž   € õ ˜$œ*Ô-Ð/?ÀÑFÔFˆÝ�g�sÑ#Ô#ð 	ÝÐCÐC°·²¸cÑ0BÔ0BÐCÑCÔCÑCÔCˆKÝ�;ÑÔ 1Ò$Ð$Ø/ Ð/¨QÐ/Ð/�Ý�{Ñ#Ô# qÒ(Ð(Ð(Ð(ØÐà�9ra   c                ó8   — t          | j        j        dd ¦  «        S )Nr±  )r´  rÌ   rµ  rè   s    r_   r±  zFixed.pandas_type$  s   € å�t”zÔ*¨M¸4Ñ@Ô@Ð@ra   c                óè   — |                       ¦   «          | j        }|�Ot          |t          t          f¦  «        r%d                     d„ |D ¦   «         ¦  «        }d|› d�}| j        d›d|› d�S | j        S )	ú(return a pretty representation of myselfNr:  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   ©rD   r[  s     r_   rq   z"Fixed.__repr__.<locals>.<listcomp>.  s   € Ð">Ð">Ð">°q¥<°¡?¤?Ð">Ð">Ð">ra   ú[rY  ú12.12z	 (shape->ú))rG  rÇ  rc   rr   rs   r@  r±  )rä   rB  Újshapes      r_   r	  zFixed.__repr__(  s‡   € à�ŠÑÔÐØŒJˆØˆ=Ý˜!�d¥E˜]Ñ+Ô+ð "ØŸšÐ">Ð">¸AÐ">Ñ">Ô">Ñ?Ô?�Ø!˜�M�M�M�ØÔ&Ð;Ð;Ð;°qÐ;Ð;Ð;Ð;ØÔÐra   c                ó~   — t          | j        ¦  «        | j        _        t          t          ¦  «        | j        _        dS )zset my pandas type & versionN)rZ   r-  ru  r±  Ú_versionr9  rè   s    r_   rÿ  zFixed.set_object_info3  s-   € å!$ TÔ%5Ñ!6Ô!6ˆŒ
ÔÝ$'­¡M¤MˆŒ
Ô!Ð!Ð!ra   c                ó.   — t          j         | ¦  «        }|S r\   r  )rä   Únew_selfs     r_   rÎ  z
Fixed.copy8  s   € Ý”9˜T‘?”?ˆØˆra   c                ó   — | j         S r\   )rE  rè   s    r_   rÇ  zFixed.shape<  rï   ra   c                ó   — | j         j        S r\   ©rÌ   rÄ   rè   s    r_   rn  zFixed.pathname@  rz  ra   c                ó   — | j         j        S r\   )rÔ   rÖ   rè   s    r_   rÖ   zFixed._handleD  s   € àŒ{Ô"Ð"ra   c                ó   — | j         j        S r\   )rÔ   râ   rè   s    r_   râ   zFixed._filtersH  s   € àŒ{Ô#Ð#ra   c                ó   — | j         j        S r\   )rÔ   rß   rè   s    r_   rß   zFixed._complevelL  s   € àŒ{Ô%Ð%ra   c                ó   — | j         j        S r\   )rÔ   rá   rè   s    r_   rá   zFixed._fletcher32P  s   € àŒ{Ô&Ð&ra   c                ó   — | j         j        S r\   )rÌ   rµ  rè   s    r_   ru  zFixed.attrsT  rv  ra   c                ó   — dS ©zset our object attributesNrÚ   rè   s    r_   Ú	set_attrszFixed.set_attrsX  ó   € € € ra   c                ó   — dS )zget our object attributesNrÚ   rè   s    r_   Ú	get_attrszFixed.get_attrs[  rW  ra   c                ó   — | j         S )zreturn my storable©rÌ   rè   s    r_   ÚstorablezFixed.storable^  s   € ð ŒzÐra   c                ó   — dS r´  rÚ   rè   s    r_   rþ  zFixed.is_existsc  rµ  ra   c                ó.   — t          | j        dd ¦  «        S )NrE  )r´  r\  rè   s    r_   rE  zFixed.nrowsg  s   € å�t”} g¨tÑ4Ô4Ð4ra   úLiteral[True] | Nonec                ó   — |€dS dS )z%validate against an existing storableNTrÚ   rL  s     r_   r  zFixed.validatek  s   € àˆ=Ø�4Øˆtra   Nc                ó   — dS )ú+are we trying to operate on an old version?NrÚ   ©rä   ru   s     r_   Úvalidate_versionzFixed.validate_versionq  rW  ra   c                óD   — | j         }|€dS |                      ¦   «          dS )zr
        infer the axes of my storer
        return a boolean indicating if we have a valid storer or not
        NFT)r\  rY  )rä   rB  s     r_   rG  zFixed.infer_axest  s*   € ð
 ŒMˆØˆ9Ø�5Ø�ŠÑÔÐØˆtra   r°   r”   r±   úSeries | DataFramec                ó    — t          d¦  «        ‚)Nz>cannot read on an abstract storer: subclasses should implement©r¼   ©rä   ru   r²   r°   r±   s        r_   r>  z
Fixed.read  s   € õ "ØLñ
ô 
ð 	
ra   c                ó    — t          d¦  «        ‚)Nz?cannot write on an abstract storer: subclasses should implementrh  ©rä   rû  rÈ   s      r_   r   zFixed.writeŠ  s   € Ý!ØMñ
ô 
ð 	
ra   c                ó’   — t          j        |||¦  «        r#| j                             | j        d¬¦  «         dS t          d¦  «        ‚)zs
        support fully deleting the node in its entirety (only) - where
        specification must be None
        Try  Nz#cannot delete on an abstract storer)r~  r  rÖ   r  rÌ   rÀ   )rä   ru   r°   r±   s       r_   r€  zFixed.delete�  sK   € õ Œ<˜˜u dÑ+Ô+ð 	ØŒL×$Ò$ T¤Z¸4Ð$Ñ@Ô@Ð@Ø�4åÐ=Ñ>Ô>Ð>ra   )rV   r…   )
rÔ   r«   rÌ   rM   rW   rX   r    rZ   rY   r¡   r  )rY   r7  r  r  )rY   r,  r  )rY   r_  r\   ©NNNN)r°   r”   r±   r”   rY   rf  r  ©r°   r”   r±   r”   rY   r”   )!rý   r  r  r  r  r.  rm  rå   r  r6  r5  r±  r	  rÿ  rÎ  rÇ  rn  rÖ   râ   rß   rá   ru  rV  rY  r\  rþ  rE  r  rd  rG  r>  r   r€  rÚ   ra   r_   r,  r,  ð
  s  € € € € € € ð
ð 
ð ÐÐÑØ€KÐÐÐÑØ&Ð&Ð&Ñ&Ø€I€I�IØÐÐÑØ€HÐÐÐÑð  'Øðð ð ð ð ð ðVð Vð Vñ „XðVð ð
ð 
ð 
ñ „Xð
ð ðAð Añ „XðAð	 ð 	 ð 	 ð 	 ð2ð 2ð 2ð 2ð
ð ð ð ð ðð ñ „Xðð ð&ð &ñ „Xð&ð ð#ð #ñ „Xð#ð ð$ð $ñ „Xð$ð ð&ð &ð &ñ „Xð&ð ð'ð 'ð 'ñ „Xð'ð ð#ð #ñ „Xð#ð(ð (ð (ð (ð(ð (ð (ð (ð ðð ñ „Xðð ðð ð ñ „Xðð ð5ð 5ñ „Xð5ðð ð ð ð:ð :ð :ð :ð :ð	ð 	ð 	ð 	ð ØØ Øð	
ð 	
ð 	
ð 	
ð 	
ð
ð 
ð 
ð 
ð HLð?ð ?ð ?ð ?ð ?ð ?ð ?ra   r,  c                  ó  — e Zd ZU dZedediZd„ e                     ¦   «         D ¦   «         Zg Z	de
d<   d+d	„Zd
„ Zd„ Zd,d„Zed-d„¦   «         Zd,d„Zd,d„Zd,d„Zd.d/d„Z	 d.d0d„Zd1d„Zd2d„Z	 d.d3d„Z	 d.d4d"„Zd5d%„Z	 d6d7d*„ZdS )8ÚGenericFixedza generified fixed versionÚdatetimeræ  c                ó   — i | ]\  }}||“Œ	S rÚ   rÚ   )rn   rW  r�  s      r_   r‘  zGenericFixed.<dictcomp>¡  s   € ÐCÐCÐC¡4 1 a˜!˜QÐCÐCÐCra   r  Ú
attributesrY   rZ   c                ó8   — | j                              |d¦  «        S )NÚ )Ú_index_type_maprñ   )rä   r÷  s     r_   Ú_class_to_aliaszGenericFixed._class_to_alias¥  s   € ØÔ#×'Ò'¨¨RÑ0Ô0Ð0ra   c                óp   — t          |t          ¦  «        r|S | j                             |t          ¦  «        S r\   )rc   rü   Ú_reverse_index_maprñ   r/   )rä   Úaliass     r_   Ú_alias_to_classzGenericFixed._alias_to_class¨  s2   € Ý�e�TÑ"Ô"ð 	àˆLØÔ&×*Ò*¨5µ%Ñ8Ô8Ð8ra   c                ó  — |                       t          |dd¦  «        ¦  «        }i }|t          k    rd	d„}|}n|t          k    rd	d„}|}n|}d|d<   d|v r|d         |d<   |t          u rt
          }d|v r|d         |d<   |t          u sJ ‚||fS )
NÚindex_classru  c                óÈ   — t          j        | j        | j        |¬¦  «        }t	          j        |d ¬¦  «        }|�(|                     d¦  «                             |¦  «        }|S )N)r]  r(  rd   rb  )r9   Ú_simple_newrœ  r]  r.   rj  rk  )rœ  r(  r)  ÚdtaÚresults        r_   r|   z*GenericFixed._get_index_factory.<locals>.f¶  sf   € å#Ô/Ø”M¨¬¸Dðñ ô �õ 'Ô2°3¸TÐBÑBÔB�Ø�>Ø#×/Ò/°Ñ6Ô6×AÒAÀ"ÑEÔE�FØ�ra   c                óx   — t          |¦  «        }t          j        | |¬¦  «        }t          j        |d ¬¦  «        S )Nr  rd   )r+   r:   r  r1   )rœ  r(  r)  r]  Úparrs        r_   r|   z*GenericFixed._get_index_factory.<locals>.fÃ  s:   € Ý# DÑ)Ô)�Ý"Ô.¨v¸UÐCÑCÔC�Ý"Ô.¨t¸$Ð?Ñ?Ô?Ð?ra   FrÎ  r(  r)  r  )r{  r´  r.   r1   r/   r5   )rä   ru  r}  rÈ   r|   rm  s         r_   Ú_get_index_factoryzGenericFixed._get_index_factory®  sá   € Ø×*Ò*­7°5¸-ÈÑ+LÔ+LÑMÔMˆð ˆØ�-Ò'Ð'ðð ð ð ð ˆGˆGØ�KÒ'Ð'ð@ð @ð @ð @ð
 ˆGˆGà!ˆGØ"ˆF�6‰Nà�Uˆ?ˆ?Ø" 6œ]ˆF�6‰NØ�eÐ#Ð#å(�à�5ˆ=ˆ=Ø  œ;ˆF�4‰LØ¥-Ð/Ð/Ð/Ð/à˜ˆÐra   r¡   c                óJ   — |�t          d¦  «        ‚|�t          d¦  «        ‚dS )zE
        raise if any keywords are passed which are not-None
        Nzqcannot pass a column specification when reading a Fixed format store. this store must be selected in its entiretyzucannot pass a where specification when reading from a Fixed format store. this store must be selected in its entirety)rÀ   )rä   r²   ru   s      r_   Úvalidate_readzGenericFixed.validate_readÙ  sJ   € ð ÐÝðTñô ð ð ÐÝðYñô ð ð Ðra   r—   c                ó   — dS )NTrÚ   rè   s    r_   rþ  zGenericFixed.is_existsè  s   € àˆtra   c                óJ   — | j         | j        _         | j        | j        _        dS rU  )rW   ru  r    rè   s    r_   rV  zGenericFixed.set_attrsì  s    € à"œmˆŒ
ÔØ œKˆŒ
ÔÐÐra   c           
     óê   — t          t          | j        dd¦  «        ¦  «        | _        t          | j        dd¦  «        | _        | j        D ]'}t          | |t          | j        |d¦  «        ¦  «         Œ(dS )úretrieve our attributesrW   Nr    r…   )r`   r´  ru  rW   r    rs  r�  )rä   r  s     r_   rY  zGenericFixed.get_attrsñ  sr   € å(­°´¸ZÈÑ)NÔ)NÑOÔOˆŒÝ˜dœj¨(°HÑ=Ô=ˆŒØ”ð 	;ð 	;ˆAÝ�D˜!�W T¤Z°°DÑ9Ô9Ñ:Ô:Ð:Ð:ð	;ð 	;ra   c                ó.   — |                       ¦   «          d S r\   )rV  rk  s      r_   r   zGenericFixed.writeø  s   € Ø�ŠÑÔÐÐÐra   Nr�   r°   r”   r±   c                ó°  — ddl }t          | j        |¦  «        }|j        }t          |dd¦  «        }t	          ||j        ¦  «        r5|d         ||…         }t          |dd¦  «        }	|	�t          ||	¬¦  «        }nÑt          |dd¦  «        }	t          |dd¦  «        }
|
�t          j        |
|	¬¦  «        }n
|||…         }|	r@|	 	                    d¦  «        r+|	dk    rd	}	t          |d
d¦  «        }t          |||	¦  «        }nJ|	rH|	 	                    d¦  «        r3|	dk    rt          j        |d¬¦  «        }nt          j        ||	¬¦  «        }|r|j        S |S )z2read an array for the specified node (off of groupr   NÚ
transposedFÚ
value_typer  rÇ  rý  rþ  r)  rÿ  r   )r†   r´  rÌ   rµ  rc   ÚVLArrayÚpd_arrayrc  rú  rÁ  r  r  ÚT)rä   r�   r°   r±   r†   r  ru  r�  Úretr]  rÇ  r)  s               r_   Ú
read_arrayzGenericFixed.read_arrayû  s‰  € àˆˆˆå�t”z 3Ñ'Ô'ˆØ”ˆå˜U L°%Ñ8Ô8ˆ
å�d˜FœNÑ+Ô+ð 	7Ø�q”'˜% ˜*Ô%ˆCÝ˜E <°Ñ6Ô6ˆEØÐ Ý˜s¨%Ð0Ñ0Ô0�øå˜E <°Ñ6Ô6ˆEÝ˜E 7¨DÑ1Ô1ˆEàÐ å”h˜u¨EÐ2Ñ2Ô2��à˜5 ˜:Ô&�àð 7˜×)Ò)¨,Ñ7Ô7ð 7à˜LÒ(Ð(Ø,�EÝ˜U D¨$Ñ/Ô/�Ý˜c 2 uÑ-Ô-��àð 7˜5×+Ò+¨MÑ:Ô:ð 7Ø˜MÒ)Ð)õ œ* S°Ð9Ñ9Ô9�C�Cåœ* S°Ð6Ñ6Ô6�Càð 	Ø”5ˆLàˆJra   r/   c                óü   — t          | j        |› d�¦  «        }|dk    r|                      |||¬¦  «        S |dk    r/t          | j        |¦  «        }|                      |||¬¦  «        }|S t          d|› �¦  «        ‚)NÚ_varietyÚmulti©r°   r±   Úregularzunrecognized index variety: )r´  ru  Úread_multi_indexrÌ   Úread_index_noderÀ   )rä   r�   r°   r±   Úvarietyr  r™   s          r_   Ú
read_indexzGenericFixed.read_index'  s–   € õ ˜$œ*¨Ð&6Ð&6Ð&6Ñ7Ô7ˆà�gÒÐØ×(Ò(¨°EÀÐ(ÑEÔEÐEØ˜	Ò!Ð!Ý˜4œ: sÑ+Ô+ˆDØ×(Ò(¨°UÀÐ(ÑFÔFˆEØˆLåÐD¸7ÐDÐDÑEÔEÐEra   r™   c                ó  — t          |t          ¦  «        r1t          | j        |› d�d¦  «         |                      ||¦  «         d S t          | j        |› d�d¦  «         t          d|| j        | j        ¦  «        }|                      ||j	        ¦  «         t          | j        |¦  «        }|j        |j        _        |j        |j        _        t          |t          t           f¦  «        r,|                      t%          |¦  «        ¦  «        |j        _        t          |t          t           t(          f¦  «        r|j        |j        _        t          |t          ¦  «        r'|j        �"t/          |j        ¦  «        |j        _        d S d S d S )Nr•  r–  r˜  r™   )rc   r0   r�  ru  Úwrite_multi_indexÚ_convert_indexrW   r    Úwrite_arrayrœ  r´  rÌ   r«  rµ  re   r.   r1   rw  rü   r}  r5   r(  r)  Ú_get_tz)rä   r�   r™   r  r  s        r_   Úwrite_indexzGenericFixed.write_index5  sa  € Ý�e�ZÑ(Ô(ð 	5Ý�D”J 3Ð 0Ð 0Ð 0°'Ñ:Ô:Ð:Ø×"Ò" 3¨Ñ.Ô.Ð.Ð.Ð.å�D”J 3Ð 0Ð 0Ð 0°)Ñ<Ô<Ð<Ý& w°°t´}ÀdÄkÑRÔRˆIà×Ò˜S )Ô"2Ñ3Ô3Ð3å˜4œ: sÑ+Ô+ˆDØ!*¤ˆDŒMÔØ!&¤ˆDŒMÔå˜%¥-µÐ!=Ñ>Ô>ð NØ,0×,@Ò,@ÅÀeÁÄÑ,MÔ,M�”Ô)å˜%¥-µ½nÐ!MÑNÔNð 0Ø%*¤Z�”Ô"å˜%¥Ñ/Ô/ð 5°E´HÐ4HÝ#*¨5¬8Ñ#4Ô#4�”Ô Ð Ð ð5ð 5Ð4HÐ4Hra   r0   c                óŠ  — t          | j        |› d�|j        ¦  «         t          t	          |j        |j        |j        d¬¦  «        ¦  «        D ]ô\  }\  }}}t          |j	        t          ¦  «        r)t          |j	        t          ¦  «        st          d¦  «        ‚|› d|› �}t          ||| j        | j        ¦  «        }|                      ||j        ¦  «         t%          | j        |¦  «        }	|j        |	j        _        ||	j        _        t          |	j        |› d|› �|¦  «         |› d|› �}
|                      |
|¦  «         Œõd S )NÚ_nlevelsTrX  z=Saving a MultiIndex with an extension dtype is not supported.Ú_levelÚ_nameÚ_label)r�  ru  rí  Ú	enumeraterl  ÚlevelsrÖ  Únamesrc   r]  r*   r4   r¼   rŸ  rW   r    r   rœ  r´  rÌ   r«  rµ  re   )rä   r�   r™   ÚiÚlevÚlevel_codesre   Ú	level_keyÚ
conv_levelr  Ú	label_keys              r_   rž  zGenericFixed.write_multi_indexL  sm  € Ý�”
˜sÐ,Ð,Ð,¨e¬mÑ<Ô<Ð<å+4Ý�”˜eœk¨5¬;¸tÐDÑDÔDñ,
ô ,
ð 	5ð 	5Ñ'ˆAÑ'��[ $õ ˜#œ)¥^Ñ4Ô4ð ½ZØ”	�;ñ>ô >ð õ *ØSñô ð ð Ð)Ð) aÐ)Ð)ˆIÝ'¨	°3¸¼ÀtÄ{ÑSÔSˆJØ×Ò˜Y¨
Ô(9Ñ:Ô:Ð:Ý˜4œ: yÑ1Ô1ˆDØ!+¤ˆDŒMÔØ!%ˆDŒMÔõ �D”M cÐ#6Ð#6°Ð#6Ð#6¸Ñ=Ô=Ð=ð Ð)Ð) aÐ)Ð)ˆIØ×Ò˜Y¨Ñ4Ô4Ð4Ð4ð-	5ð 	5ra   c                ó¶  — t          | j        |› d�¦  «        }g }g }g }t          |¦  «        D ]™}|› d|› �}	t          | j        |	¦  «        }
|                      |
||¬¦  «        }|                     |¦  «         |                     |j        ¦  «         |› d|› �}|                      |||¬¦  «        }|                     |¦  «         Œšt          |||d¬¦  «        S )Nr¤  r¥  r—  r§  T)r©  rÖ  rª  re  )	r´  ru  r”  rÌ   rš  r–   re   r“  r0   )rä   r�   r°   r±   rí  r©  rÖ  rª  r«  r®  r  r¬  r°  r­  s                 r_   r™  zGenericFixed.read_multi_indexg  s  € õ ˜$œ*¨Ð&6Ð&6Ð&6Ñ7Ô7ˆàˆØˆØ "ˆÝ�w‘”ð 		&ð 		&ˆAØÐ)Ð) aÐ)Ð)ˆIÝ˜4œ: yÑ1Ô1ˆDØ×&Ò& t°5¸tÐ&ÑDÔDˆCØ�MŠM˜#ÑÔÐØ�LŠL˜œÑ"Ô"Ð"àÐ)Ð) aÐ)Ð)ˆIØŸ/š/¨)¸5Àt˜/ÑLÔLˆKØ�LŠL˜Ñ%Ô%Ð%Ð%åØ ¨eÀdð
ñ 
ô 
ð 	
ra   r  rM   c           	     óP  — |||…         }d|j         v rLt          j        |j         j        ¦  «        dk    r*t          j        |j         j        |j         j        ¬¦  «        }|j         j        }d }d|j         v rt          |j         j        ¦  «        }|j         }|  	                    |¦  «        \  }}	|dv r, |t          ||| j        | j        ¬¦  «        fdt          i|	¤Ž}
nÀ	  |t          ||| j        | j        ¬¦  «        fi |	¤Ž}
nš# t          $ r�}| j        dk    rwt          ¦   «         rit!          |¦  «                             d	¦  «        rGt$          r@ |t          ||| j        | j        ¬¦  «        fdt'          d
t          j        ¬¦  «        i|	¤Ž}
n‚ Y d }~nd }~ww xY w||
_        |
S )NrÇ  r   r  re   )r   rD  rä  r]  r[  r\  r^  r_  )rµ  rc  ÚprodrÇ  rú  rŽ  r«  rf   re   r„  Ú_unconvert_indexrW   r    rD  rh  r   rZ   r  r   r4   ri  )rä   r  r°   r±   rÍ  r«  re   ru  rm  rÈ   r™   r�  s               r_   rš  zGenericFixed.read_index_node~  s   € ð �E˜$�JÔˆð �d”mÐ#Ð#­¬°´Ô0CÑ(DÔ(DÈÒ(IÐ(IÝ”8˜DœMÔ/°t´}Ô7OÐPÑPÔPˆDØŒ}Ô!ˆØˆà�T”]Ð"Ð"Ý˜tœ}Ô1Ñ2Ô2ˆDà”ˆØ×1Ò1°%Ñ8Ô8‰ˆ�àÐ%Ð%Ð%Ø�GÝ Ø˜$¨¬¸t¼{ðñ ô ðð õ ð	ð
 ðð ˆEˆEðØ˜Ý$Ø˜d¨T¬]À4Ä;ðñ ô ðð ð ð	ð ��øõ &ð ð ð à”K ?Ò2Ð2Ý*Ñ,Ô,ð 3å˜C™œ×)Ò)Ð*BÑCÔCð 3õ $ð 3ð
 $˜GÝ(Ø  $°´ÀtÄ{ðñ ô ðð õ *°(ÅRÄVÐLÑLÔLð	ð
 !ðð �E�Eð ð �E�E�E�Eøøøøðøøøð" ˆŒ
àˆs   Ã $D Ä
FÄBFÆFr�   rO   c                ó  — t          j        d|j        z  ¦  «        }| j                             | j        ||¦  «         t          | j        |¦  «        }t          |j        ¦  «        |j	        _
        |j        |j	        _        dS )zwrite a 0-len array©rk   N)rc  rú  r•  rÖ   Úcreate_arrayrÌ   r´  rZ   r]  rµ  rŽ  rÇ  )rä   r�   r�   Úarrr  s        r_   Úwrite_array_emptyzGenericFixed.write_array_empty´  sm   € õ Œh�t˜eœjÑ(Ñ)Ô)ˆØŒ×!Ò! $¤*¨c°3Ñ7Ô7Ð7Ý�t”z 3Ñ'Ô'ˆÝ#& u¤{Ñ#3Ô#3ˆŒÔ Ø#œkˆŒÔÐÐra   rû  rN   r)  úIndex | Nonec                óh	  — t          |d¬¦  «        }|| j        v r | j                             | j        |¦  «         |j        dk    }d}t          |j        t          ¦  «        rt          d¦  «        ‚|st          |d¦  «        r	|j
        }d}t          |t          ¦  «        r¢| j                             | j        |t          ¦   «                              ¦   «         | j        ¬¦  «        }|                     |                     ¦   «         ¦  «         t%          | j        |¦  «        }t'          |j        ¦  «        |j        _        �nPd }	| j        �Wt-          t.          ¦  «        5  t          ¦   «         j                             |j        ¦  «        }	d d d ¦  «         n# 1 swxY w Y   |	�Q|s7| j                             | j        ||	|j        | j        ¬¦  «        }
||
d d …<   �nµ|                      ||¦  «         �n�|j        j        t<          j        k    rºtA          j!        |d¬¦  «        }|rnK|d	k    rnDtE          d
¦  «        r5tF          |||fz  }tI          j%        |tL          tO          ¦   «         ¬¦  «         | j                             | j        |t          ¦   «                              ¦   «         ¦  «        }|                     |¦  «         �nÉtA          j(        |j        d¦  «        rg| j         )                    | j        || *                    d¦  «        ¦  «         t'          |j        ¦  «        t%          | j        |¦  «        j        _        �nHt          |j        tV          ¦  «        rt| j         )                    | j        ||j,        ¦  «         t%          | j        |¦  «        }t[          |j.        ¦  «        |j        _.        d|j        j/        › d�|j        _        nºtA          j(        |j        d¦  «        rf| j         )                    | j        || *                    d¦  «        ¦  «         t'          |j        ¦  «        t%          | j        |¦  «        j        _        n:|r|                      ||¦  «         n!| j         )                    | j        ||¦  «         |t%          | j        |¦  «        j        _0        d S )NT)Úextract_numpyr   Fz^Cannot store a category dtype in an HDF5 dataset that uses format="fixed". Use format="table".r‘  )rÛ   ©Úskipnar‚  Úperformance_warningsr—  rU  rV  údatetime64[rY  rÓ  )1r@   rÌ   rÖ   r  rÕ  rc   r]  r(   r¼   rQ  r‘  r<   Úcreate_vlarrayr‹   Ú
ObjectAtomrâ   r–   Úto_numpyr´  rZ   rµ  rŽ  r   r¹   ÚAtomÚ
from_dtypeÚcreate_carrayrÇ  r¹  rü   rc  Úobject_r   Úinfer_dtyper   ry   r›  rœ  r   r!   rg  r·  Úviewr)   Úasi8r¡  r)  Úunitr�  )rä   r�   rû  r)  r�   Úempty_arrayr�  Úvlarrr  rÜ  ÚcaÚinferred_typer   s                r_   r   zGenericFixed.write_array½  s¯  € õ ˜c°Ð6Ñ6Ô6ˆà�$”*ÐÐØŒL×$Ò$ T¤Z°Ñ5Ô5Ð5ð ”j A’oˆØˆ
å�e”kÕ#3Ñ4Ô4ð 	Ý%ð/ñô ð ð ð 	"Ý�u˜cÑ"Ô"ð "àœ�Ø!�
å�e�_Ñ-Ô-ð H	Bð ”L×/Ò/Ø”
˜C¥¡¤×!5Ò!5Ñ!7Ô!7ÀÄð 0ñ ô ˆEð �LŠL˜ŸšÑ)Ô)Ñ*Ô*Ð*Ý˜4œ: sÑ+Ô+ˆDÝ'*¨5¬;Ñ'7Ô'7ˆDŒMÔ$Ñ$ð ˆDØŒ}Ð(Ý�jÑ)Ô)ð Bð Bå"™9œ9œ>×4Ò4°U´[ÑAÔA�DðBð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð Ðð
 #ð 7Øœ×3Ò3Øœ
 C¨¨u¬{ÀDÄMð 4ñ ô �Bð "�B�q�q�q‘E‘Eð ×*Ò*¨3°Ñ6Ô6Ð6Ñ6à”Ô!¥R¤ZÒ/Ð/õ !$¤°¸eÐ DÑ DÔ D�Øð YØØ" hÒ.Ð.ØÝÐ 6Ñ7Ô7ð YÝ(¨M¸3ÀÐ+FÑF�BÝ”M "Õ&8ÕEUÑEWÔEWÐXÑXÔXÐXàœ×3Ò3Ø”J ¥W¡Y¤Y×%9Ò%9Ñ%;Ô%;ñô �ð —’˜UÑ#Ô#Ð#Ñ#å” ¤¨cÑ2Ô2ð BØ”×)Ò)¨$¬*°c¸5¿:º:ÀdÑ;KÔ;KÑLÔLÐLÝ?BÀ5Ä;Ñ?OÔ?O•˜œ
 CÑ(Ô(Ô1Ô<Ñ<Ý˜EœK­Ñ9Ô9ð Bð
 ”×)Ò)Ø”JØØ”Jñô ð õ ˜tœz¨3Ñ/Ô/�å#*¨5¬8Ñ#4Ô#4�”Ô Ø+L¸¼Ô9IÐ+LÐ+LÐ+L�”Ô(Ð(Ý” ¤¨cÑ2Ô2ð BØ”×)Ò)¨$¬*°c¸5¿:º:ÀdÑ;KÔ;KÑLÔLÐLÝ?BÀ5Ä;Ñ?OÔ?O•˜œ
 CÑ(Ô(Ô1Ô<Ð<Øð BØ×&Ò& s¨EÑ2Ô2Ð2Ð2à”×)Ò)¨$¬*°c¸5ÑAÔAÐAà7A��”
˜CÑ Ô Ô)Ô4Ð4Ð4s   Å ,FÆFÆFr  r  r  r  r  )r�   rZ   r°   r”   r±   r”   rY   r/   )r�   rZ   r™   r/   rY   r¡   )r�   rZ   r™   r0   rY   r¡   )r�   rZ   r°   r”   r±   r”   rY   r0   )r  rM   r°   r”   r±   r”   rY   r/   )r�   rZ   r�   rO   rY   r¡   r\   )r�   rZ   rû  rN   r)  rº  rY   r¡   )rý   r  r  r  r.   r1   rv  r)  ry  rs  r  rw  r{  r„  r†  r  rþ  rV  rY  r   r“  rœ  r¢  rž  r™  rš  r¹  r   rÚ   ra   r_   rp  rp  �  sè  € € € € € € Ø$Ð$à$ j°+¸xÐH€OØCÐC¨?×+@Ò+@Ñ+BÔ+BÐCÑCÔCÐØ€JÐÐÐÑð1ð 1ð 1ð 1ð9ð 9ð 9ð)ð )ð )ðVð ð ð ð ðð ð ñ „Xðð(ð (ð (ð (ð
;ð ;ð ;ð ;ðð ð ð ð*ð *ð *ð *ð *ðZ FJðFð Fð Fð Fð Fð5ð 5ð 5ð 5ð.5ð 5ð 5ð 5ð8 FJð
ð 
ð 
ð 
ð 
ð0 HLð4ð 4ð 4ð 4ð 4ðl*ð *ð *ð *ð BFðaBð aBð aBð aBð aBð aBð aBra   rp  c                  ó`   ‡ — e Zd ZU dZdgZded<   edd„¦   «         Z	 	 	 	 ddd„Zdˆ fd„Z	ˆ xZ
S )rë  rà  re   rF   rY   útuple[int] | Nonec                óh   — 	 t          | j        j        ¦  «        fS # t          t          f$ r Y d S w xY wr\   )rt   rÌ   rœ  rÀ   r‡   rè   s    r_   rÇ  zSeriesFixed.shape'  sD   € ð	Ý˜œ
Ô)Ñ*Ô*Ð,Ð,øÝ�>Ð*ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ œ1°1Nr°   r”   r±   r3   c                óà  — |                       ||¦  «         |                      d||¬¦  «        }|                      d||¬¦  «        }	 t          ||| j        d¬¦  «        }n�# t
          $ r€}| j        dk    rjt          ¦   «         r\t          |¦  «         	                    d¦  «        r:t          r3t          ||| j        dt          dt          j        ¬	¦  «        ¬
¦  «        }n‚ Y d }~nd }~ww xY w|S )Nr™   r—  rœ  F)r™   re   rÎ  r[  r\  r^  r_  )r™   re   rÎ  r]  )r†  rœ  r“  r3   re   rh  r    r   rZ   r  r   r4   rc  ri  )	rä   ru   r²   r°   r±   r™   rœ  r�  r�  s	            r_   r>  zSeriesFixed.read.  s  € ð 	×Ò˜7 EÑ*Ô*Ð*Ø—’ ¨u¸4�Ñ@Ô@ˆØ—’ °¸T�ÑBÔBˆð	Ý˜F¨%°d´iÀeÐLÑLÔLˆFˆFøÝ!ð 	ð 	ð 	à”˜Ò.Ð.Ý&Ñ(Ô(ð /å˜‘H”H×%Ò%Ð&>Ñ?Ô?ð /õ  ð /õ
  ØØØœØÝ%¨hÅÄÐHÑHÔHðñ ô ��ð ð ����øøøøð	øøøð  ˆs   ÁA! Á!
C+Á+A6C&Ã&C+r¡   c                óÀ   •—  t          ¦   «         j        |fi |¤Ž |                      d|j        ¦  «         |                      d|¦  «         |j        | j        _        d S )Nr™   rœ  )r½  r   r¢  r™   r   re   ru  )rä   rû  rÈ   r¾  s      €r_   r   zSeriesFixed.writeL  s^   ø€ Ø�‰ŒŒ�cÐ$Ð$˜VÐ$Ð$Ð$Ø×Ò˜ #¤)Ñ,Ô,Ð,Ø×Ò˜ 3Ñ'Ô'Ð'Øœ(ˆŒ
Œˆˆra   )rY   rÑ  rm  ©r°   r”   r±   r”   rY   r3   r  )rý   r  r  r-  rs  r  r  rÇ  r>  r   r  r  s   @r_   rë  rë  !  s™   ø€ € € € € € Ø€KØ�€Jà€N€N�Nàðð ð ñ „Xðð ØØ Øðð ð ð ð ð<#ð #ð #ð #ð #ð #ð #ð #ð #ð #ra   rë  c                  ó^   ‡ — e Zd ZU ddgZded<   edd„¦   «         Z	 	 	 	 ddd„Zdˆ fd„Zˆ xZ	S )ÚBlockManagerFixedr•  Únblocksri   rY   úlist[int] | Nonec                óz  — 	 | j         }d}t          | j        ¦  «        D ]9}t          | j        d|› d�¦  «        }t          |dd ¦  «        }|�||d         z  }Œ:| j        j        }t          |dd ¦  «        }|�t          |d|dz
  …         ¦  «        }ng }|                     |¦  «         |S # t          $ r Y d S w xY w)Nr   ÚblockÚ_itemsrÇ  rk   )	r•  r”  rØ  r´  rÌ   Úblock0_valuesrr   r–   r‡   )rä   r•  r)  r«  r  rÇ  s         r_   rÇ  zBlockManagerFixed.shapeX  sî   € ð	Ø”9ˆDð ˆEÝ˜4œ<Ñ(Ô(ð &ð &�Ý˜tœzÐ+<°1Ð+<Ð+<Ð+<Ñ=Ô=�Ý  g¨tÑ4Ô4�ØÐ$Ø˜U 1œXÑ%�Eøð ”:Ô+ˆDÝ˜D '¨4Ñ0Ô0ˆEØÐ Ý˜U 1¨¨q© >Ô2Ñ3Ô3��à�à�LŠL˜ÑÔÐàˆLøÝð 	ð 	ð 	Ø�4�4ð	øøøs   ‚B)B, Â,
B:Â9B:Nr°   r”   r±   r-   c                ó  — |                       ||¦  «         |                      ¦   «                              d¦  «        }g }t          | j        ¦  «        D ]A}||k    r||fnd\  }}	|                      d|› �||	¬¦  «        }
|                     |
¦  «         ŒB|d         }g }t          | j        ¦  «        D ]ë}|                      d|› d�¦  «        }|                      d|› d�||	¬¦  «        }|| 	                    |¦  «                 }t          |j        ||d         d	¬
¦  «        }t          ¦   «         rXt          |t          j        ¦  «        r>t!          |d¬¦  «        r-|                     t%          t          j        ¬¦  «        ¦  «        }|                     |¦  «         Œìt)          |¦  «        dk    r9t+          |d¬¦  «                             ¦   «         }|                     |¬¦  «        S t          |d         |d         ¬¦  «        S )Nr   r  rd  r—  rÛ  rÜ  r  rk   F©r²   r™   rÎ  Tr½  )ra  rŽ  rü  ©r²   r™   )r†  r0  Ú_get_block_manager_axisr”  r•  rœ  r–   rØ  r“  rš  r-   r‘  r   rc   rc  rd  r   r  r4   ri  rt   r6   rÎ  rŸ  )rä   ru   r²   r°   r±   Úselect_axisr„  r«  r?  r@  Úaxr)  ÚdfsÚ	blk_itemsrœ  ÚdfÚouts                    r_   r>  zBlockManagerFixed.reads  sý  € ð 	×Ò˜7 EÑ*Ô*Ð*Ø—m’m‘o”o×=Ò=¸aÑ@Ô@ˆàˆÝ�t”yÑ!Ô!ð 	ð 	ˆAØ-.°+Ò-=Ð-=˜U D˜M˜MÀ<‰MˆF�EØ—’ ¨  °6À�ÑFÔFˆBØ�KŠK˜‰OŒOˆOˆOà�Q”ˆØˆå�t”|Ñ$Ô$ð 	ð 	ˆAØŸšÐ(9°Ð(9Ð(9Ð(9Ñ:Ô:ˆIØ—_’_Ð%7¨QÐ%7Ð%7Ð%7¸vÈE�_ÑRÔRˆFà˜E×-Ò-¨iÑ8Ô8Ô9ˆGÝ˜6œ8¨W¸DÀ¼GÈ%ÐPÑPÔPˆBå"Ñ$Ô$ð=å˜v¥r¤zÑ2Ô2ð=õ $ F°4Ð8Ñ8Ô8ð=ð
 —Y’Y�{µB´FÐ;Ñ;Ô;Ñ<Ô<�Ø�JŠJ�r‰NŒNˆNˆNåˆs‰8Œ8�aŠ<ˆ<Ý˜ 1Ð%Ñ%Ô%×*Ò*Ñ,Ô,ˆCØ—;’; u�;Ñ-Ô-Ð-å  a¤°°Q´Ð8Ñ8Ô8Ð8ra   r¡   c                ó~  •—  t          ¦   «         j        |fi |¤Ž |j        }|                     ¦   «         s|                     ¦   «         }|j        | j        _        t          |j        ¦  «        D ]:\  }}|dk    r|j	        st          d¦  «        ‚|                      d|› �|¦  «         Œ;t          |j        ¦  «        | j        _        t          |j        ¦  «        D ]_\  }}|j                             |j        ¦  «        }|                      d|› d�|j        |¬¦  «         |                      d|› d�|¦  «         Œ`d S )Nr   z/Columns index has to be unique for fixed formatrd  rÛ  r  )r)  rÜ  )r½  r   Ú_mgrÚis_consolidatedÚconsolidater•  ru  r¨  r„  Ú	is_uniquer¹   r¢  rt   ÚblocksrØ  r)  r›  Úmgr_locsr   rœ  )	rä   rû  rÈ   rÍ  r«  rã  Úblkrå  r¾  s	           €r_   r   zBlockManagerFixed.write›  sR  ø€ Ø�‰ŒŒ�cÐ$Ð$˜VÐ$Ð$Ð$àŒxˆØ×#Ò#Ñ%Ô%ð 	&Ø×#Ò#Ñ%Ô%ˆDàœ)ˆŒ
ŒÝ˜tœyÑ)Ô)ð 	-ð 	-‰EˆAˆrØ�AŠvˆv˜rœ|ˆvÝ Ð!RÑSÔSÐSØ×Ò˜Z A˜Z˜Z¨Ñ,Ô,Ð,Ð,õ ! ¤Ñ-Ô-ˆŒ
ÔÝ ¤Ñ,Ô,ð 	;ð 	;‰FˆAˆsàœ
Ÿš¨¬Ñ5Ô5ˆIØ×ÒÐ/ QÐ/Ð/Ð/°´À9ÐÑMÔMÐMØ×ÒÐ. QÐ.Ð.Ð.°	Ñ:Ô:Ð:Ð:ð		;ð 	;ra   )rY   rÙ  rm  ©r°   r”   r±   r”   rY   r-   r  )
rý   r  r  rs  r  r  rÇ  r>  r   r  r  s   @r_   r×  r×  S  s˜   ø€ € € € € € Ø˜)Ð$€Jà€L€L�Làðð ð ñ „Xðð8 ØØ Øð&9ð &9ð &9ð &9ð &9ðP;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ra   r×  c                  ó   — e Zd ZdZeZdS )rì  rá  N)rý   r  r  r-  r-   r0  rÚ   ra   r_   rì  rì  ±  s   € € € € € Ø€KØ€H€H€Hra   rì  c                  ó   ‡ — e Zd ZU dZdZdZded<   ded<   dZded	<   d
Zded<   	 	 	 	 	 	 	 	 dfdgˆ fd"„Z	e
dhd#„¦   «         Zdhd$„Zdid&„Zdjd'„Ze
dkd)„¦   «         Zdld-„Ze
dmd/„¦   «         Ze
dkd0„¦   «         Ze
d1„ ¦   «         Ze
d2„ ¦   «         Ze
d3„ ¦   «         Ze
d4„ ¦   «         Ze
dnd6„¦   «         Ze
dmd7„¦   «         Ze
dkd8„¦   «         Ze
dod:„¦   «         Zdpd<„Zdqd>„Zdrd@„ZdsdB„ZdtdE„ZdudF„Z djdG„Z!djdH„Z"dvdjdI„Z#djdJ„Z$e%dK„ ¦   «         Z&	 dwdxdM„Z'	 dydzdR„Z(e)d{dT„¦   «         Z*d|dU„Z+	 	 	 	 d}d~dX„Z,e-dd[„¦   «         Z.dvd€d^„Z/d�db„Z0	 dwd‚dc„Z1	 	 	 dwdƒde„Z2ˆ xZ3S )„r  aa  
    represent a table:
        facilitate read/write of various types of tables

    Attrs in Table Node
    -------------------
    These are attributes that are store in the main table node, they are
    necessary to recreate these tables when read back in.

    index_axes    : a list of tuples of the (original indexing axis and
        index column)
    non_index_axes: a list of tuples of the (original index axis and
        columns on a non-indexing axis)
    values_axes   : a list of the columns which comprise the data of this
        table
    data_columns  : a list of the columns that we are allowing indexing
        (these become single columns in values_axes)
    nan_rep       : the string to use for nan representations for string
        objects
    levels        : the names of levels
    metadata      : the names of the metadata columns
    Ú
wide_tabler{   rZ   r.  rÝ  rk   zint | list[Hashable]r©  Trr   r/  Nr…   rÔ   r«   rÌ   rM   rW   rX   r    Ú
index_axesúlist[IndexCol] | Noner_  ú list[tuple[AxisInt, Any]] | NoneÚvalues_axesúlist[DataCol] | Nonerž   úlist | NonerÖ  údict | NonerY   r¡   c                óº   •— t          ¦   «                              ||||¬¦  «         |pg | _        |pg | _        |pg | _        |pg | _        |	pi | _        |
| _        d S )Nrä  )r½  rå   rô  r_  r÷  rž   rÖ  r¤   )rä   rÔ   rÌ   rW   r    rô  r_  r÷  rž   rÖ  r¤   r¾  s              €r_   rå   zTable.__init__Ö  so   ø€ õ 	‰Œ×Ò˜ °À&ÐÑIÔIÐIØ$Ð*¨ˆŒØ,Ð2°ˆÔØ&Ð,¨"ˆÔØ(Ð.¨BˆÔØ�J˜BˆŒ	ØˆŒˆˆra   c                óB   — | j                              d¦  «        d         S )NÚ_r   )rÝ  r  rè   s    r_   Útable_type_shortzTable.table_type_shortë  s   € àŒ×$Ò$ SÑ)Ô)¨!Ô,Ð,ra   c                óš  — |                       ¦   «          t          | j        ¦  «        rd                     | j        ¦  «        nd}d|› d�}d}| j        r*d                     d„ | j        D ¦   «         ¦  «        }d|› d�}d                     d„ | j        D ¦   «         ¦  «        }| j        d	›|› d
| j        › d| j	        › d| j
        › d|› d|› d�S )rA  r:  ru  z,dc->[rY  r<  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   ©rZ   r[  s     r_   rq   z"Table.__repr__.<locals>.<listcomp>÷  s   € Ð:Ð:Ð:¨�S ™VœVÐ:Ð:Ð:ra   rD  c                ó   — g | ]	}|j         ‘Œ
S rÚ   rd   rË  s     r_   rq   z"Table.__repr__.<locals>.<listcomp>ú  s   € Ð@Ð@Ð@¨1 ¤Ð@Ð@Ð@ra   rE  z (typ->z,nrows->z,ncols->z,indexers->[rF  )rG  rt   rž   r@  r6  r5  rô  r±  rþ  rE  Úncols)rä   Újdcr¦  ÚverÚjverÚjindex_axess         r_   r	  zTable.__repr__ï  s#  € à�ŠÑÔÐÝ-0°Ô1BÑ-CÔ-CÐKˆc�hŠh�tÔ(Ñ)Ô)Ð)ÈˆØ�cˆ_ˆ_ˆ_ˆàˆØÔð 	Ø—8’8Ð:Ð:¨T¬\Ð:Ñ:Ô:Ñ;Ô;ˆDØ�d�+�+�+ˆCà—h’hÐ@Ð@°´Ð@Ñ@Ô@ÑAÔAˆàÔÐ-ð B sð Bð BØÔ*ðBð BØ48´JðBð Bà”jðBð Bà.9ðBð Bà<>ðBð Bð Bð	
ra   r’  c                ó8   — | j         D ]}||j        k    r|c S ŒdS )zreturn the axis for cN)r„  re   )rä   r’  rŒ   s      r_   ró   zTable.__getitem__  s1   € à”ð 	ð 	ˆAØ�A”FŠ{ˆ{Ø���ð àˆtra   c                óú  — |€dS |j         | j         k    r t          d|j         › d| j         › d�¦  «        ‚dD ]Ã}t          | |d¦  «        }t          ||d¦  «        }||k    r™t          |¦  «        D ]p\  }}||         }||k    r]|dk    r>|j        |j        k    r.t          d|j        d         › d	|j        › d
|j        › d�¦  «        ‚t          d|› d|› d|› d�¦  «        ‚Œqt          d|› d|› d|› d�¦  «        ‚ŒÄdS )z"validate against an existing tableNz'incompatible table_type with existing [r”  rY  )rô  r_  r÷  r÷  úCannot serialize the column [r   z%] because its data contents are not [z] but [ú] object dtypezinvalid combination of [z] on appending data [z] vs current table [)rÝ  rÀ   r´  r¨  r«  r¹   rœ  r|  )rä   rC  r’  ÚsvÚovr«  ÚsaxÚoaxs           r_   r  zTable.validate  sÑ  € àˆ=ØˆFàÔ˜tœÒ.Ð.Ýð<ØÔ$ð<ð <Ø)-¬ð<ð <ð <ñô ð ð
 Að 	ð 	ˆAÝ˜˜q $Ñ'Ô'ˆBÝ˜  4Ñ(Ô(ˆBØ�RŠxˆxõ (¨™mœmð ð ‘F�A�sà˜Qœ%�CØ˜c’z�zØ Ò-Ð-°#´(¸c¼hÒ2FÐ2FÝ",ð!AÀÄ
È1Äð !Að !AØFIÄhð!Að !Aà(+¬ð!Að !Að !Añ#ô #ð õ
 )ð@°qð @ð @Ø #ð@ð @Ø9<ð@ð @ð @ñô ð ð "õ  ð,¨qð ,ð ,Àrð ,ð ,Ø&(ð,ð ,ð ,ñô ð ð) ð	ð 	ra   r—   c                ó6   — t          | j        t          ¦  «        S )z@the levels attribute is 1 or a list in the case of a multi-index)rc   r©  rr   rè   s    r_   Úis_multi_indexzTable.is_multi_index/  s   € õ ˜$œ+¥tÑ,Ô,Ð,ra   rû  r‘   ú tuple[DataFrame, list[Hashable]]c                óä   — t          j        |j        j        ¦  «        }	 |                     ¦   «         }n"# t
          $ r}t          d¦  «        |‚d}~ww xY wt          |t          ¦  «        sJ ‚||fS )ze
        validate that we can store the multi-index; reset and return the
        new object
        zBduplicate names/columns in the multi-index when storing as a tableN)r~  Úfill_missing_namesr™   rª  Úreset_indexr¹   rc   r-   )rä   rû  r©  Ú	reset_objr�  s        r_   Úvalidate_multiindexzTable.validate_multiindex4  sˆ   € õ Ô'¨¬	¬Ñ8Ô8ˆð	ØŸšÑ)Ô)ˆIˆIøÝð 	ð 	ð 	ÝØTñô àðøøøøð	øøøõ ˜)¥YÑ/Ô/Ð/Ð/Ð/Ø˜&Ð Ð s    5 µ
A¿AÁAri   c                óH   — t          j        d„ | j        D ¦   «         ¦  «        S )z-based on our axes, compute the expected nrowsc                ó2   — g | ]}|j         j        d          ‘ŒS r^  )r  rÇ  ©rn   r«  s     r_   rq   z(Table.nrows_expected.<locals>.<listcomp>H  s!   € ÐDÐDÐD¨q˜œ	œ¨Ô*ÐDÐDÐDra   )rc  r³  rô  rè   s    r_   Únrows_expectedzTable.nrows_expectedE  s%   € õ ŒwÐDÐD°D´OÐDÑDÔDÑEÔEÐEra   c                ó   — d| j         v S )zhas this table been createdr{   r[  rè   s    r_   rþ  zTable.is_existsJ  s   € ð ˜$œ*Ð$Ð$ra   c                ó.   — t          | j        dd ¦  «        S ©Nr{   ©r´  rÌ   rè   s    r_   r\  zTable.storableO  s   € å�t”z 7¨DÑ1Ô1Ð1ra   c                ó   — | j         S )z,return the table group (this is my storable))r\  rè   s    r_   r{   zTable.tableS  s   € ð Œ}Ðra   c                ó   — | j         j        S r\   )r{   r]  rè   s    r_   r]  zTable.dtypeX  s   € àŒzÔÐra   c                ó   — | j         j        S r\   rx  rè   s    r_   ry  zTable.description\  rz  ra   úitertools.chain[IndexCol]c                ó@   — t          j        | j        | j        ¦  «        S r\   )rj  rk  rô  r÷  rè   s    r_   r„  z
Table.axes`  s   € åŒ˜tœ°Ô0@ÑAÔAÐAra   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )z.the number of total columns in the values axesc              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r\   )rt   rœ  rË  s     r_   r�  zTable.ncols.<locals>.<genexpr>g  s*   è è € Ð;Ð; Q•3�q”x‘=”=Ð;Ð;Ð;Ð;Ð;Ð;ra   )Úsumr÷  rè   s    r_   r  zTable.ncolsd  s$   € õ Ð;Ð;¨$Ô*:Ð;Ñ;Ô;Ñ;Ô;Ð;ra   c                ó   — dS r´  rÚ   rè   s    r_   Úis_transposedzTable.is_transposedi  rµ  ra   útuple[int, ...]c                ó‚   — t          t          j        d„ | j        D ¦   «         d„ | j        D ¦   «         ¦  «        ¦  «        S )z@return a tuple of my permutated axes, non_indexable at the frontc                ó8   — g | ]}t          |d          ¦  «        ‘ŒS r^  r;  rË  s     r_   rq   z*Table.data_orientation.<locals>.<listcomp>r  s"   € Ð8Ð8Ð8˜q•�Q�q”T‘”Ð8Ð8Ð8ra   c                ó6   — g | ]}t          |j        ¦  «        ‘ŒS rÚ   )ri   rd  rË  s     r_   rq   z*Table.data_orientation.<locals>.<listcomp>s  s    € Ð6Ð6Ð6 •�Q”V‘”Ð6Ð6Ð6ra   )rs   rj  rk  r_  rô  rè   s    r_   Údata_orientationzTable.data_orientationm  sL   € õ ÝŒOØ8Ð8 DÔ$7Ð8Ñ8Ô8Ø6Ð6 d¤oÐ6Ñ6Ô6ñô ñ
ô 
ð 	
ra   údict[str, Any]c                ó¨   ‡ ‡— dddœŠd„ ‰ j         D ¦   «         }ˆfd„‰ j        D ¦   «         }ˆ fd„‰ j        D ¦   «         }t          ||z   |z   ¦  «        S )z<return a dict of the kinds allowable columns for this objectr™   r²   ©r   rk   c                ó    — g | ]}|j         |f‘ŒS rÚ   ©r+  rË  s     r_   rq   z$Table.queryables.<locals>.<listcomp>}  s   € Ð4Ð4Ð4˜qˆqŒw˜ˆlÐ4Ð4Ð4ra   c                ó*   •— g | ]\  }}‰|         d f‘ŒS r\   rÚ   )rn   rd  rœ  Ú
axis_namess      €r_   rq   z$Table.queryables.<locals>.<listcomp>~  s'   ø€ ÐOÐOÐO©<¨4°ˆz˜$Ô Ð&ÐOÐOÐOra   c                óX   •— g | ]&}|j         t          ‰j        ¦  «        v ¯|j        |f‘Œ'S rÚ   )re   r“  rž   r+  )rn   r�  rä   s     €r_   rq   z$Table.queryables.<locals>.<listcomp>  s=   ø€ ð 
ð 
ð 
Ø°a´fÅÀDÔDUÑ@VÔ@VÐ6VÐ6VˆQŒW�aˆLÐ6VÐ6VÐ6Vra   )rô  r_  r÷  r‡  )rä   Úd1Úd2Úd3r5  s   `   @r_   Ú
queryableszTable.queryablesw  s‰   øø€ ð ! YÐ/Ð/ˆ
ð 5Ð4 D¤OÐ4Ñ4Ô4ˆØOÐOÐOÐO¸4Ô;NÐOÑOÔOˆð
ð 
ð 
ð 
Ø"&Ô"2ð
ñ 
ô 
ˆõ �B˜‘G˜b‘LÑ!Ô!Ð!ra   úlist[tuple[Any, Any]]c                ó$   — d„ | j         D ¦   «         S )zreturn a list of my index colsc                ó*   — g | ]}|j         |j        f‘ŒS rÚ   )rd  r+  r  s     r_   rq   z$Table.index_cols.<locals>.<listcomp>ˆ  s!   € Ð;Ð;Ð; a�”˜œÐ!Ð;Ð;Ð;ra   ©rô  rè   s    r_   Ú
index_colszTable.index_cols…  s   € ð <Ð;¨4¬?Ð;Ñ;Ô;Ð;ra   r  c                ó$   — d„ | j         D ¦   «         S )zreturn a list of my values colsc                ó   — g | ]	}|j         ‘Œ
S rÚ   r3  r  s     r_   rq   z%Table.values_cols.<locals>.<listcomp>Œ  s   € Ð2Ð2Ð2˜A�”Ð2Ð2Ð2ra   )r÷  rè   s    r_   Úvalues_colszTable.values_colsŠ  s   € à2Ð2 Ô!1Ð2Ñ2Ô2Ð2ra   r�   c                ó*   — | j         j        }|› d|› d�S )z)return the metadata pathname for this keyz/meta/z/metarN  r:  s      r_   Ú_get_metadata_pathzTable._get_metadata_pathŽ  s#   € à”
Ô&ˆØÐ)Ð)˜sÐ)Ð)Ð)Ð)ra   rœ  rR  c                ó¨   — | j                              |                      |¦  «        t          |d¬¦  «        d| j        | j        | j        ¬¦  «         dS )z£
        Write out a metadata array to the key as a fixed-format Series.

        Parameters
        ----------
        key : str
        values : ndarray
        Fr  r{   )r˜   rW   r    r¤   N)rÔ   rª   rD  r3   rW   r    r¤   )rä   r�   rœ  s      r_   rŽ  zTable.write_metadata“  s^   € ð 	Œ�ŠØ×#Ò# CÑ(Ô(Ý�6 Ð&Ñ&Ô&ØØ”]Ø”;Ø”Lð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ra   c                óª   — t          t          | j        dd¦  «        |d¦  «        �-| j                             |                      |¦  «        ¦  «        S dS )z'return the meta data array for this keyrÏ   N)r´  rÌ   rÔ   rÅ   rD  rò   s     r_   r¬  zTable.read_metadata¥  sK   € å•7˜4œ: v¨tÑ4Ô4°c¸4Ñ@Ô@ÐLØ”;×%Ò% d×&=Ò&=¸cÑ&BÔ&BÑCÔCÐCØˆtra   c                ó¨  — t          | j        ¦  «        | j        _        |                      ¦   «         | j        _        |                      ¦   «         | j        _        | j        | j        _        | j        | j        _        | j        | j        _        | j        | j        _        | j	        | j        _	        | j
        | j        _
        | j        | j        _        dS )zset our table type & indexablesN)rZ   rÝ  ru  r?  rB  r_  rž   r¤   rW   r    r©  rÖ  rè   s    r_   rV  zTable.set_attrs«  s™   € å # D¤OÑ 4Ô 4ˆŒ
ÔØ $§¢Ñ 1Ô 1ˆŒ
ÔØ!%×!1Ò!1Ñ!3Ô!3ˆŒ
ÔØ$(Ô$7ˆŒ
Ô!Ø"&Ô"3ˆŒ
ÔØ!œ\ˆŒ
ÔØ"œmˆŒ
ÔØ œKˆŒ
ÔØ œKˆŒ
ÔØœ)ˆŒ
Œˆˆra   c                ó  — t          | j        dd¦  «        pg | _        t          | j        dd¦  «        pg | _        t          | j        dd¦  «        pi | _        t          | j        dd¦  «        | _        t          t          | j        dd¦  «        ¦  «        | _        t          | j        dd¦  «        | _        t          | j        d	d¦  «        pg | _	        d
„ | j
        D ¦   «         | _        d„ | j
        D ¦   «         | _        dS )rŠ  r_  Nrž   rÖ  r¤   rW   r    r…   r©  c                ó    — g | ]}|j         ¯	|‘ŒS rÚ   ©r&  rË  s     r_   rq   z#Table.get_attrs.<locals>.<listcomp>Á  ó    € ÐKÐKÐK ¸Ô9JÐK˜1ÐKÐKÐKra   c                ó    — g | ]}|j         °	|‘ŒS rÚ   rJ  rË  s     r_   rq   z#Table.get_attrs.<locals>.<listcomp>Â  ó    € ÐPÐPÐP !¸aÔ>OÐP˜AÐPÐPÐPra   )r´  ru  r_  rž   rÖ  r¤   r`   rW   r    r©  Ú
indexablesrô  r÷  rè   s    r_   rY  zTable.get_attrs¸  sé   € å% d¤jÐ2BÀDÑIÔIÐOÈRˆÔÝ# D¤J°ÀÑEÔEÐKÈˆÔÝ˜DœJ¨°Ñ5Ô5Ð;¸ˆŒ	Ý˜tœz¨9°dÑ;Ô;ˆŒÝ(­°´¸ZÈÑ)NÔ)NÑOÔOˆŒÝ˜dœj¨(°HÑ=Ô=ˆŒÝ&-¨d¬j¸(ÀDÑ&IÔ&IÐ&OÈRˆŒØKÐK d¤oÐKÑKÔKˆŒØPÐP t¤ÐPÑPÔPˆÔÐÐra   c                óÈ   — |�]| j         rXt          d                     d„ | j        D ¦   «         ¦  «        z  }t	          j        |t          t          ¦   «         ¬¦  «         dS dS dS )rb  Nr<  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   r  r[  s     r_   rq   z*Table.validate_version.<locals>.<listcomp>È  s   € Ð4RÐ4RÐ4RÀµS¸±V´VÐ4RÐ4RÐ4Rra   r—  )r6  rw   r@  r5  r›  rœ  r   r!   )rä   ru   r   s      r_   rd  zTable.validate_versionÄ  s~   € àÐØÔ"ð Ý(¨3¯8ª8Ð4RÐ4RÀTÄ\Ð4RÑ4RÔ4RÑ+SÔ+SÑS�Ý”ØÝ*Ý/Ñ1Ô1ðñ ô ð ð ð ð Ððð ra   c                óª   — |€dS t          |t          ¦  «        sdS |                      ¦   «         }|D ] }|dk    rŒ	||vrt          d|› d�¦  «        ‚Œ!dS )zˆ
        validate the min_itemsize doesn't contain items that are not in the
        axes this needs data_columns to be defined
        Nrœ  zmin_itemsize has the key [z%] which is not an axis or data_column)rc   r‡  r:  r¹   )rä   rš   ÚqrW  s       r_   Úvalidate_min_itemsizezTable.validate_min_itemsizeÏ  s�   € ð
 ÐØˆFÝ˜,­Ñ-Ô-ð 	ØˆFà�OŠOÑÔˆØð 	ð 	ˆAà�HŠ}ˆ}ØØ˜ˆzˆzÝ ð"°ð "ð "ð "ñô ð ð ð		ð 	ra   c                ó.  ‡ ‡‡‡‡‡— g }‰ j         Š‰ j        j        Št          ‰ j        j        ¦  «        D ]z\  }\  }}t          ‰|¦  «        }‰                      |¦  «        }|�dnd}|› d�}t          ‰|d¦  «        }	t          ||||	|‰ j        ||¬¦  «        }
|                     |
¦  «         Œ{t          ‰ j
        ¦  «        Št          |¦  «        Šdˆˆˆˆ ˆfd	„Š|                     ˆfd
„t          ‰ j        j        ¦  «        D ¦   «         ¦  «         |S )z/create/cache the indexables if they don't existNr¨  r4  )re   rd  r.  r«  r-  r{   rÏ   r/  r’  rZ   rY   rº  c                óž  •— t          |t          ¦  «        sJ ‚t          }|‰v rt          }t	          ‰|¦  «        }t          |‰j        ¦  «        }t	          ‰|› d�d ¦  «        }t	          ‰|› d�d ¦  «        }t          |¦  «        }‰                     |¦  «        }t	          ‰|› d�d ¦  «        }	 |||||‰| z   |‰j	        |	||¬¦
  «
        }
|
S )Nr4  rÀ  rÃ  )
re   r+  rœ  r«  r.  r-  r{   rÏ   r/  r]  )
rc   rZ   rº  r!  r´  Ú_maybe_adjust_namer5  rÌ  r¬  r{   )r«  r’  ÚklassrÜ  Úadj_namerœ  r]  r«  ÚmdrÏ   rû  Úbase_posr¦  Údescrä   Útable_attrss              €€€€€r_   r|   zTable.indexables.<locals>.f  s  ø€ Ý˜a¥Ñ%Ô%Ð%Ð%Ð%ÝˆEØ�BˆwˆwÝ(�å˜4 Ñ#Ô#ˆDÝ)¨!¨T¬\Ñ:Ô:ˆHõ ˜[¨XÐ*<Ð*<Ð*<¸dÑCÔCˆFÝ˜K¨HÐ)<Ð)<Ð)<¸dÑCÔCˆEõ " %Ñ(Ô(ˆDà×#Ò# AÑ&Ô&ˆBõ ˜;¨8Ð(:Ð(:Ð(:¸DÑAÔAˆDà�%ØØØØØ˜q‘LØØ”jØØØðñ ô ˆCð ˆJra   c                ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS rÚ   rÚ   )rn   r«  r’  r|   s      €r_   rq   z$Table.indexables.<locals>.<listcomp>,  s'   ø€ ÐRÐRÐR©¨¨1˜A˜A˜a ™GœGÐRÐRÐRra   )r’  rZ   rY   rº  )ry  r{   ru  r¨  r?  r´  r¬  r%  r–   r“  rž   rt   r—  rB  )rä   Ú_indexablesr«  rd  re   rÜ  rY  rÏ   r5  r«  Ú	index_colrZ  r¦  r[  r|   r\  s   `          @@@@@r_   rN  zTable.indexablesä  si  øøøøøø€ ð ˆàÔˆØ”jÔ&ˆõ
  )¨¬Ô)>Ñ?Ô?ð 	*ð 	*‰OˆA‰|��dÝ˜4 Ñ&Ô&ˆDØ×#Ò# DÑ)Ô)ˆBØ!# �:�:°TˆDà˜˜˜ˆIÝ˜;¨	°4Ñ8Ô8ˆDå ØØØØØØ”jØØð	ñ 	ô 	ˆIð ×Ò˜yÑ)Ô)Ð)Ð)õ �Ô"Ñ#Ô#ˆÝ�{Ñ#Ô#ˆð!	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ð !	ðJ 	×ÒÐRÐRÐRÐRµ	¸$¼*Ô:PÑ0QÔ0QÐRÑRÔRÑSÔSÐSàÐra   r«  c           
     óª  — |                       ¦   «         sdS |du rdS |�|du rd„ | j        D ¦   «         }t          |t          t          f¦  «        s|g}i }|�||d<   |�||d<   | j        }|D ]æ}t          |j        |d¦  «        }|�ž|j        rY|j	        }|j
        }	|j        }
|�|
|k    r|                     ¦   «          n|
|d<   |�|	|k    r|                     ¦   «          n|	|d<   |j        s6|j                             d¦  «        rt          d¦  «        ‚ |j        di |¤Ž Œ¸|| j        d	         d
         v rt%          d|› d|› d|› d�¦  «        ‚ŒçdS )aZ  
        Create a pytables index on the specified columns.

        Parameters
        ----------
        columns : None, bool, or listlike[str]
            Indicate which columns to create an index on.

            * False : Do not create any indexes.
            * True : Create indexes on all columns.
            * None : Create indexes on all columns.
            * listlike : Create indexes on the given columns.

        optlevel : int or None, default None
            Optimization level, if None, pytables defaults to 6.
        kind : str or None, default None
            Kind of index, if None, pytables defaults to "medium".

        Raises
        ------
        TypeError if trying to create an index on a complex-type column.

        Notes
        -----
        Cannot index Time64Col or ComplexCol.
        Pytables must be >= 3.0.
        NFTc                ó*   — g | ]}|j         ¯	|j        ‘ŒS rÚ   )r'  r+  rË  s     r_   rq   z&Table.create_index.<locals>.<listcomp>U  s"   € ÐIÐIÐI 1°QÔ5HÐI�q”wÐIÐIÐIra   rª  r«  ÚcomplexzíColumns containing complex values can be stored but cannot be indexed when using table format. Either use fixed format, set index=False, or do not include the columns containing complex values to data_columns when initializing the table.r   rk   zcolumn z/ is not a data_column.
In order to read column z: you must reload the dataframe 
into HDFStore and include z  with the data_columns argument.rÚ   )rG  r„  rc   rs   rr   r{   r´  rŒ  rÊ  r™   rª  r«  Úremove_indexrü   rÁ  rÀ   r­  r_  r‡   )rä   r²   rª  r«  Úkwr{   r’  r�  r™   Úcur_optlevelÚcur_kinds              r_   r­  zTable.create_index0  sü  € ð< �ŠÑ Ô ð 	ØˆFØ�eÐÐØˆFð ˆ?˜g¨˜o˜oØIÐI¨¬	ÐIÑIÔIˆGÝ˜'¥E­4 =Ñ1Ô1ð 	 Ø�iˆGàˆØÐØ%ˆBˆz‰NØÐØˆBˆv‰Jà”
ˆØð $	ð $	ˆAÝ˜œ
 A tÑ,Ô,ˆAØˆ}à”<ð 6ØœG�EØ#(¤>�LØ$œz�HàÐ'¨H¸Ò,<Ð,<ØŸšÑ(Ô(Ð(Ð(à%-˜˜6™
àÐ+°ÀÒ0HÐ0HØŸšÑ(Ô(Ð(Ð(à)5˜˜:™ð ”|ð 	)Ø”v×(Ò(¨Ñ3Ô3ð Ý'ðHñô ð ð #�A”NÐ(Ð( RÐ(Ð(Ð(øØ�dÔ)¨!Ô,¨QÔ/Ð/Ð/å$ðU˜að Uð UØ/0ðUð Uà12ðUð Uð Uñô ð ð 0ð=$	ð $	ra   r°   r”   r±   ú9list[tuple[np.ndarray, np.ndarray] | tuple[Index, Index]]c                ó  — t          | |||¬¦  «        }|                     ¦   «         }g }| j        D ]Y}|                     | j        ¦  «         |                     || j        | j        | j        ¬¦  «        }| 	                    |¦  «         ŒZ|S )a  
        Create the axes sniffed from the table.

        Parameters
        ----------
        where : ???
        start : int or None, default None
        stop : int or None, default None

        Returns
        -------
        List[Tuple[index_values, column_values]]
        rL  r  )
Ú	SelectionrÅ   r„  r¥  rÖ  rp  r¤   rW   r    r–   )	rä   ru   r°   r±   Ú	selectionrœ  r"  rŒ   Úress	            r_   Ú
_read_axeszTable._read_axes†  s›   € õ" ˜d¨%°uÀ4ÐHÑHÔHˆ	Ø×!Ò!Ñ#Ô#ˆàˆà”ð 	 ð 	 ˆAØ�JŠJ�t”yÑ!Ô!Ð!Ø—)’)ØØœØœØ”{ð	 ñ ô ˆCð �NŠN˜3ÑÔÐÐàˆra   r�  c                ó   — |S )zreturn the data for this objrÚ   ©r÷  rû  r�  s      r_   Ú
get_objectzTable.get_object¨  s	   € ð ˆ
ra   c                óì  ‡‡— t          |¦  «        sg S |d         \  }Š| j                             |i ¦  «        }|                     d¦  «        dk    r|rt          d|› d|› �¦  «        ‚|du rt	          ‰¦  «        }n|€g }t          |t          ¦  «        rQt          |¦  «        Št	          |¦  «        }|                     ˆfd„| 	                    ¦   «         D ¦   «         ¦  «         ˆfd	„|D ¦   «         S )
zd
        take the input data_columns and min_itemize and create a data
        columns spec
        r   rü   r0   z"cannot use a multi-index on axis [z] with data_columns TNc                ó(   •— g | ]}|d k    ¯|‰v¯|‘ŒS rr  rÚ   )rn   rW  Úexisting_data_columnss     €r_   rq   z/Table.validate_data_columns.<locals>.<listcomp>É  s7   ø€ ð ð ð àØ˜H’}�}¨Ð2GÐ)GÐ)Gð à)GÐ)GÐ)Gra   c                ó   •— g | ]}|‰v ¯|‘Œ	S rÚ   rÚ   )rn   r’  Úaxis_labelss     €r_   rq   z/Table.validate_data_columns.<locals>.<listcomp>Ñ  s#   ø€ Ð<Ð<Ð<�a¨1°Ð+;Ð+;�Ð+;Ð+;Ð+;ra   )
rt   rÖ  rñ   r¹   rr   rc   r‡  r“  r—  r!  )rä   rž   rš   r_  rd  rÖ  rt  rr  s         @@r_   Úvalidate_data_columnszTable.validate_data_columns­  sG  øø€ õ
 �>Ñ"Ô"ð 	ØˆIà*¨1Ô-ÑˆˆkØŒy�}Š}˜T 2Ñ&Ô&ˆØ�8Š8�FÑÔ˜|Ò+Ð+°Ð+Ýð/°Tð /ð /Ø ,ð/ð /ñô ð ð ˜4ÐÐÝ Ñ,Ô,ˆLˆLØÐ!ØˆLõ �l¥DÑ)Ô)ð 		Ý$'¨Ñ$5Ô$5Ð!Ý Ñ-Ô-ˆLØ×Òðð ð ð à)×.Ò.Ñ0Ô0ðñ ô ñô ð ð =Ð<Ð<Ð<˜<Ð<Ñ<Ô<Ð<ra   r-   r  c                ó–  ‡‡— t          ‰t          ¦  «        s/| j        j        }t	          d|› dt          ‰¦  «        › d�¦  «        ‚‰€dgŠˆfd„‰D ¦   «         Š|                      ¦   «         r/d}d„ | j        D ¦   «         Št          | j	        ¦  «        }| j
        }nd	}| j        }	| j        d
k    sJ ‚t          ‰¦  «        | j        dz
  k    rt          d¦  «        ‚g }
|€d}t          ˆfd„dD ¦   «         ¦  «        }‰j        |         }t          |¦  «        }|r¬t          |
¦  «        }| j        |         d         }t%          t'          j        |¦  «        t'          j        |¦  «        dd¬¦  «        sSt%          t'          j        t+          |¦  «        ¦  «        t'          j        t+          |¦  «        ¦  «        dd¬¦  «        r|}|	                     |i ¦  «        }t          |j        ¦  «        |d<   t          |¦  «        j        |d<   |
                     ||f¦  «         ‰d         }‰j        |         }‰                     |¦  «        }t7          ||| j        | j        ¦  «        }||_        |                     d¦  «         |                      |	¦  «         | !                    |¦  «         |g}t          |¦  «        }|dk    sJ ‚t          |
¦  «        dk    sJ ‚|
D ]}tE          ‰|d         |d         ¦  «        ŠŒ |j        dk    }|  #                    |||
¦  «        }|  $                    ‰|¦  «         %                    ¦   «         }|  &                    |||
| j'        |¦  «        \  }}g }tQ          tS          ||d¬¦  «        ¦  «        D �]/\  }\  }}tT          }d}|rRt          |¦  «        dk    r?|d         |v r5tV          }|d         }|�$t          |tX          ¦  «        st          d¦  «        ‚|rF|rD	 | j'        |         }n7# tZ          t\          f$ r!} t          d|› d| j'        › d�¦  «        | ‚d} ~ ww xY wd}|pd|› �}!t_          |!|j0        |||| j        | j        |¬¦  «        }"tc          |!| j2        ¦  «        }#| 3                    |"¦  «        }$ti          |"j5        j6        ¦  «        }%d}&to          |"dd¦  «        �tq          |"j9        ¦  «        }&dx}'x}(})t          |"j5        tt          ¦  «        r5|"j;        })d}'t'          j<        |"j=        ¦  «         >                    ¦   «         }(n.t          |j5        t~          ¦  «        rtY          |j5        ¦  «        }'t�          |"¦  «        \  }*}+ ||#|!t          |¦  «        |$||%|&|)|'|(|+|*¬¦  «        },|,                      |	¦  «         |                     |,¦  «         |dz  }�Œ1d„ |D ¦   «         }- t          | ¦  «        | jA        | j        | j        | j        ||
||-|	|¬¦
  «
        }.t…          | d¦  «        r| jC        |._C        |. D                    |¦  «         |r|r|. E                    | ¦  «         |.S )a0  
        Create and return the axes.

        Parameters
        ----------
        axes: list or None
            The names or numbers of the axes to create.
        obj : DataFrame
            The object to create axes on.
        validate: bool, default True
            Whether to validate the obj against an existing object already written.
        nan_rep :
            A value to use for string column nan_rep.
        data_columns : List[str], True, or None, default None
            Specify the columns that we want to create to allow indexing on.

            * True : Use all available columns.
            * None : Use no columns.
            * List[str] : Use the specified columns.

        min_itemsize: Dict[str, int] or None, default None
            The min itemsize for a column in bytes.
        z/cannot properly create the storer for: [group->rã  rY  Nr   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÚ   )Ú_get_axis_number)rn   rŒ   rû  s     €r_   rq   z&Table._create_axes.<locals>.<listcomp>ÿ  s'   ø€ Ð6Ð6Ð6¨A�×$Ò$ QÑ'Ô'Ð6Ð6Ð6ra   Tc                ó   — g | ]	}|j         ‘Œ
S rÚ   rŽ  rË  s     r_   rq   z&Table._create_axes.<locals>.<listcomp>  s   € Ð4Ð4Ð4˜q�A”FÐ4Ð4Ð4ra   Fr4  rk   z<currently only support ndim-1 indexers in an AppendableTableri  c              3  ó$   •K  — | ]
}|‰v¯|V — Œd S r\   rÚ   )rn   r\  r„  s     €r_   r�  z%Table._create_axes.<locals>.<genexpr>  s'   øè è € Ð6Ð6˜¨°¨¨�1¨¨¨¨Ð6Ð6ra   r1  r©  rª  rü   rX  r#  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colrš   r¤   rW   r    r²   r)  r¨  )re   r+  rœ  r-  r.  r«  r)  r¢  rÏ   r/  r]  rÍ  c                ó*   — g | ]}|j         ¯	|j        ‘ŒS rÚ   )r'  re   )rn   r|  s     r_   rq   z&Table._create_axes.<locals>.<listcomp>¬  s"   € ÐBÐBÐB˜C¨CÔ,AÐBˆsŒxÐBÐBÐBra   )
rÔ   rÌ   rW   r    rô  r_  r÷  rž   rÖ  r¤   r©  )Frc   r-   rÌ   rÒ   rÀ   rü   rG  rô  rr   rž   r¤   rÖ  r•  rt   r¹   r’  r„  r_  r,   rc  r?   r™  rš  rª  rý   r–   Ú_get_axis_namerŸ  rW   r    rd  r0  r¡  r„  Ú_reindex_axisru  ro  rf  Ú_get_blocks_and_itemsr÷  r¨  rl  rº  r!  rZ   Ú
IndexErrorrû   Ú_maybe_convert_for_string_atomrœ  rV  r5  rÝ  rÌ  r]  re   r´  r¡  r)  r(   r¢  r  r
  r  r4   rË  rÔ   rQ  r©  rS  r  )/rä   r„  rû  r  r¤   rž   rš   rÌ   Útable_existsÚnew_infoÚnew_non_index_axesrž  rŒ   Úappend_axisÚindexerÚ
exist_axisrÖ  Ú	axis_nameÚ	new_indexÚnew_index_axesÚjr�  rá  rí  rå  Úvaxesr«  rï  Úb_itemsrW  re   r|  r�  Únew_nameÚdata_convertedrX  r-  r«  r)  rÏ   r/  r¢  rÍ  rÍ  r|  ÚdcsÚ	new_tables/    ``                                            r_   Ú_create_axeszTable._create_axesÓ  s?  øø€ õ@ ˜#�yÑ)Ô)ð 	Ø”JÔ&ˆEÝð'À%ð 'ð 'Ý˜s™)œ)ð'ð 'ð 'ñô ð ð ˆ<Ø�3ˆDð 7Ð6Ð6Ð6°Ð6Ñ6Ô6ˆð �?Š?ÑÔð 	!ØˆLØ4Ð4 D¤OÐ4Ñ4Ô4ˆDÝ Ô 1Ñ2Ô2ˆLØ”lˆGˆGð !ˆLà”9ˆàŒy˜AŠ~ˆ~ˆ~ˆ~åˆt‰9Œ9˜œ	 A™Ò%Ð%ÝØNñô ð ð
 $&Ðð ˆ?ØˆGõ Ð6Ð6Ð6Ð6˜fÐ6Ñ6Ô6Ñ6Ô6ˆàŒH�SŒMˆå˜1‘g”gˆØð 	-ÝÐ,Ñ-Ô-ˆGØÔ,¨WÔ5°aÔ8ˆJÝ#Ý”˜Ñ%Ô%Ý”˜Ñ$Ô$ØØ ð	ñ ô ð -õ $Ý”H�V KÑ0Ô0Ñ1Ô1Ý”H�V JÑ/Ô/Ñ0Ô0Ø#Ø $ð	ñ ô ð -ð #-�Kð ×"Ò" 3¨Ñ+Ô+ˆÝ˜QœW™œˆˆW‰Ý˜A‘w”wÔ'ˆˆV‰à×!Ò! 3¨Ð"4Ñ5Ô5Ð5ð �1ŒgˆØŒH�SŒMˆØ×&Ò& sÑ+Ô+ˆ	Ý" 9¨a°´ÀÄÑLÔLˆ	Øˆ	Œð 	×Ò˜!ÑÔÐØ×Ò˜hÑ'Ô'Ð'Ø× Ò  Ñ.Ô.Ð.à#˜ˆÝ�ÑÔˆØ�AŠvˆvˆvˆvõ Ð%Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ø#ð 	1ð 	1ˆAÝ  Q q¤T¨1¨Q¬4Ñ0Ô0ˆCˆCà”^ qÒ(ˆ
ð ×1Ò1Ø˜,Ð(:ñ
ô 
ˆð —’  ZÑ0Ô0×=Ò=Ñ?Ô?ˆà ×6Ò6Ø�<Ð!3°TÔ5EÀ|ñ
ô 
Ñˆ�	ð
 ˆÝ!*­3¨v°yÈÐ+NÑ+NÔ+NÑ!OÔ!Oð K	ñ K	ÑˆA‰~��WåˆEØˆDð ð V¥ G¡¤°Ò 1Ð 1°g¸a´jÀLÐ6PÐ6PÝ(�Ø˜q”z�Ø˜­
°4½Ñ(=Ô(=˜å$Ð%TÑUÔUÐUð ð 	$ ð 	$ðØ#'Ô#3°AÔ#6�L�LøÝ"¥HÐ-ð ð ð Ý$ðD¸ð Dð DØ04Ô0@ðDð Dð Dñô ð ðøøøøðøøøð  $�àÐ2Ð2¨qÐ2Ð2ˆHÝ;ØØ”
Ø)Ø)ØØœØ”{Øð	ñ 	ô 	ˆNõ *¨(°D´LÑAÔAˆHà—/’/ .Ñ1Ô1ˆCÝ! .Ô"6Ô";Ñ<Ô<ˆDØˆBÝ�~ t¨TÑ2Ô2Ð>Ý˜^Ô.Ñ/Ô/�à(,Ð,ˆDÐ,�8˜gÝ˜.Ô.Õ0@ÑAÔAð &Ø(Ô0�Ø!�Ýœ: nÔ&?Ñ@Ô@×FÒFÑHÔH��Ý˜CœI¥{Ñ3Ô3ð &Ý˜3œ9‘~”~�å7¸ÑGÔGÑˆD�*à�%ØØÝ˜G‘}”}ØØØØØØØ!Ø Øðñ ô ˆCð �OŠO˜HÑ%Ô%Ð%à�LŠL˜ÑÔÐà�‰FˆA‰AàBÐB 5ÐBÑBÔBˆà•D˜‘J”JØ”;Ø”*Ø”]Ø”;Ø%Ø-ØØØØð
ñ 
ô 
ˆ	õ �4˜Ñ"Ô"ð 	+à#œ{ˆIÔà×'Ò'¨Ñ5Ô5Ð5àð 	%˜ð 	%Ø×Ò˜tÑ$Ô$Ð$àÐs   Ï7PÐP7ÐP2Ð2P7rá  rƒ  c                ó´  — d„ }| j         }t          |j        ¦  «        } ||¦  «        }t          |¦  «        rÏ|d         \  }	}
t	          |
¦  «                             t	          |¦  «        ¦  «        }|                      ||	¬¦  «        j         }t          |j        ¦  «        } ||¦  «        }|D ]W}|                      |g|	¬¦  «        j         }|                     |j        ¦  «         |                      ||¦  «        ¦  «         ŒX|rÌd„ t          ||d¬¦  «        D ¦   «         }g }g }|D ]¥}t          |j
        ¦  «        }	 |                     |¦  «        \  }}|                     |¦  «         |                     |¦  «         ŒZ# t          t          f$ r8}d                     d„ |D ¦   «         ¦  «        }t!          d	|› d
�¦  «        |‚d }~ww xY w|}|}||fS )Nc                ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                óN   •— g | ]!}‰j                              |j        ¦  «        ‘Œ"S rÚ   )r)  r›  rî  )rn   rï  Úmgrs     €r_   rq   zFTable._get_blocks_and_items.<locals>.get_blk_items.<locals>.<listcomp>Ï  s)   ø€ ÐGÐGÐG°S�C”I—N’N 3¤<Ñ0Ô0ÐGÐGÐGra   )rí  )r—  s   `r_   Úget_blk_itemsz2Table._get_blocks_and_items.<locals>.get_blk_itemsÎ  s   ø€ ØGÐGÐGÐG¸C¼JÐGÑGÔGÐGra   r   rŽ  c                ó\   — i | ])\  }}t          |                     ¦   «         ¦  «        ||f“Œ*S rÚ   )rs   Útolist)rn   ÚbrŽ  s      r_   r‘  z/Table._get_blocks_and_items.<locals>.<dictcomp>ê  sD   € ð ð ð á�A�wõ �g—n’nÑ&Ô&Ñ'Ô'¨!¨W¨ðð ð ra   TrX  r:  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   rC  )rn   Úitems     r_   rq   z/Table._get_blocks_and_items.<locals>.<listcomp>÷  s    € Ð&LÐ&LÐ&L¸d¥|°DÑ'9Ô'9Ð&LÐ&LÐ&Lra   z+cannot match existing table structure for [z] on appending data)ré  rr   rí  rt   r/   r˜  rŸ  r—  rl  rs   rœ  ro  r–   r�  rû   r@  r¹   )rá  rƒ  r…  r÷  rž   r˜  r—  rí  rå  rd  rt  Ú
new_labelsr’  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear)  r›  rŽ  r�  Újitemss                         r_   r€  zTable._get_blocks_and_itemsÅ  sC  € ð	Hð 	Hð 	Hð ŒjˆÝ" 3¤:Ñ.Ô.ˆØ!. ¨sÑ!3Ô!3ˆ	åˆ|ÑÔð 	5ð
 !3°1Ô 5ÑˆD�+Ý˜{Ñ+Ô+×6Ò6µu¸\Ñ7JÔ7JÑKÔKˆJØ—-’- 
°�-Ñ6Ô6Ô;ˆCå˜#œ*Ñ%Ô%ˆFØ%˜ cÑ*Ô*ˆIØ!ð 5ð 5�ð —m’m Q C¨d�mÑ3Ô3Ô8�Ø—’˜cœjÑ)Ô)Ð)Ø× Ò   ¨sÑ!3Ô!3Ñ4Ô4Ð4Ð4ð ð 	&ðð å"% f¨iÀÐ"EÑ"EÔ"Eðñ ô ˆHð ')ˆJØˆMØ!ð ð �Ý˜bœiÑ(Ô(�ð	Ø!)§¢¨eÑ!4Ô!4‘J�A�wØ×%Ò% aÑ(Ô(Ð(Ø!×(Ò(¨Ñ1Ô1Ð1Ð1øÝ"¥HÐ-ð ð ð Ø ŸXšXÐ&LÐ&LÀeÐ&LÑ&LÔ&LÑMÔM�FÝ$ð,Àfð ,ð ,ð ,ñô ð ðøøøøðøøøð  ˆFØ%ˆIà�yÐ Ð s   ÅAFÆGÆ3G
Ç
Grj  ri  c                óp  ‡ ‡— |�t          |¦  «        }|�G‰ j        r@t          ‰ j        t           ¦  «        sJ ‚‰ j        D ]}||vr|                     d|¦  «         Œ‰ j        D ]\  }}t          ‰|||¦  «        Šˆˆ fd„}Œ|j        �-|j                             ¦   «         D ]\  }}	}
 |||
|	¦  «        ŠŒ‰S )zprocess axes filtersNr   c                óL  •— ‰j         D �]}‰                     |¦  «        }‰                     |¦  «        }|€J ‚| |k    rX‰	j        r'|                     t          ‰	j        ¦  «        ¦  «        } |||¦  «        }‰                     |¬¦  «        |         c S | |v rut          t          ‰| ¦  «        j
        ¦  «        }t          |¦  «        }t          ‰t          ¦  «        rd|z
  } |||¦  «        }‰                     |¬¦  «        |         c S �Œ
t          d| › d�¦  «        ‚)NrŽ  rk   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSrx  Ú	_get_axisr  Úunionr/   r©  rž  rA   r´  rœ  rc   r-   r¹   )
ÚfieldÚfiltÚopr‰  Úaxis_numberÚaxis_valuesÚtakersrœ  rû  rä   s
           €€r_   Úprocess_filterz*Table.process_axes.<locals>.process_filter  sO  ø€ Ø!$Ô!1ð Añ A�IØ"%×"6Ò"6°yÑ"AÔ"A�KØ"%§-¢-°	Ñ":Ô":�KØ&Ð2Ð2Ð2ð  	Ò)Ð)ð  Ô.ð BØ#'§:¢:­e°D´KÑ.@Ô.@Ñ#AÔ#A˜Dà!#  K°Ñ!6Ô!6˜Ø"Ÿwšw¨K˜wÑ8Ô8¸Ô@Ð@Ð@Ð@ð  +Ð-Ð-å!-­g°c¸5Ñ.AÔ.AÔ.HÑ!IÔ!I˜Ý+¨DÑ1Ô1˜õ & c­9Ñ5Ô5ð :Ø*+¨k©/˜Kà!#  F¨DÑ!1Ô!1˜Ø"Ÿwšw¨K˜wÑ8Ô8¸Ô@Ð@Ð@Ð@ñ .õ !Ð!R¸5Ð!RÐ!RÐ!RÑSÔSÐSra   )	rr   r  rc   r©  Úinsertr_  r  Úfilterr˜   )rä   rû  rj  r²   r  rd  Úlabelsr¯  r©  r«  rª  s   ``         r_   Úprocess_axeszTable.process_axes  s  øø€ ð ÐÝ˜7‘m”mˆGð Ð 4Ô#6ÐÝ˜dœk­4Ñ0Ô0Ð0Ð0Ð0Ø”[ð )ð )�Ø˜GÐ#Ð#Ø—N’N 1 aÑ(Ô(Ð(øð !Ô/ð  	Tð  	T‰LˆD�&Ý  T¨6°7Ñ;Ô;ˆCðTð Tð Tð Tð Tð Tð Tð@ ÔÐ'Ø#,Ô#3×#:Ò#:Ñ#<Ô#<ð 6ð 6‘��r˜4Ø$�n U¨D°"Ñ5Ô5��àˆ
ra   r“   rØ   r…  c                ó  — |€t          | j        d¦  «        }d|dœ}d„ | j        D ¦   «         |d<   |r<|€	| j        pd}t	          ¦   «                              |||p| j        ¬¦  «        }||d	<   n| j        �
| j        |d	<   |S )
z:create the description of the table from the axes & valuesNi'  r{   )re   r…  c                ó(   — i | ]}|j         |j        “ŒS rÚ   )r+  r-  rË  s     r_   r‘  z,Table.create_description.<locals>.<dictcomp>G  s   € Ð>Ð>Ð>¨q˜AœG Q¤UÐ>Ð>Ð>ra   ry  é	   )r“   r•   rØ   rÛ   )Úmaxr  r„  rß   r‹   r,  rá   râ   )rä   r•   r“   rØ   r…  r†  rÛ   s          r_   Úcreate_descriptionzTable.create_description8  s³   € ð ÐÝ˜tÔ2°EÑ:Ô:ˆLà¨lÐ;Ð;ˆð ?Ð>°D´IÐ>Ñ>Ô>ˆˆ-Ñàð 
	)ØÐ Ø œOÐ0¨q�	Ý‘i”i×'Ò'Ø#ØØ%Ð9¨Ô)9ð (ñ ô ˆGð
 #ˆAˆi‰LˆLØŒ]Ð&Øœ=ˆAˆi‰Làˆra   c                ó  — |                       |¦  «         |                      ¦   «         sdS t          | |||¬¦  «        }|                     ¦   «         }|j        �–|j                             ¦   «         D ]|\  }}}|                      ||                     ¦   «         |                     ¦   «         dz   ¬¦  «        }	| ||	j	        ||                     ¦   «         z
           |¦  «        j
                 }Œ}t          |d¬¦  «        S )zf
        select coordinates (row numbers) from a table; return the
        coordinates object
        FrL  Nrk   r—  r  )rd  rG  ri  Úselect_coordsr±  r˜   rS  r  r·  Úilocrœ  r/   )
rä   ru   r°   r±   rj  Úcoordsr©  r«  rª  rÍ  s
             r_   rN  zTable.read_coordinatesW  s  € ð 	×Ò˜eÑ$Ô$Ð$ð �ŠÑ Ô ð 	Ø�5õ ˜d¨%°uÀ4ÐHÑHÔHˆ	Ø×(Ò(Ñ*Ô*ˆØÔÐ'Ø#,Ô#3×#:Ò#:Ñ#<Ô#<ð Sð S‘��r˜4Ø×'Ò'Ø §¢¡¤°F·J²J±L´LÀ1Ñ4Dð (ñ ô �ð     4¤9¨V°f·j²j±l´lÑ-BÔ#CÀTÑ JÔ JÔ QÔR��å�V %Ð(Ñ(Ô(Ð(ra   rQ  c                ó:  — |                       ¦   «          |                      ¦   «         sdS |�t          d¦  «        ‚| j        D ]Æ}||j        k    r¹|j        st          d|› d�¦  «        ‚t          | j        j	        |¦  «        }| 
                    | j        ¦  «         |                     |||…         | j        | j        | j        ¬¦  «        }|d         }t          | j        j        |› d�d¦  «        }	t#          ||d|	¬	¦  «        c S ŒÇt%          d|› d
�¦  «        ‚)zj
        return a single column from the table, generally only indexables
        are interesting
        FNz4read_column does not currently accept a where clausezcolumn [z=] can not be extracted individually; it is not data indexabler  rk   rÃ  )re   rÎ  r]  z] not found in the table)rd  rG  rÀ   r„  re   r'  r¹   r´  r{   rŒ  r¥  rÖ  rp  r¤   rW   r    ru  r3   rû   )
rä   rQ  ru   r°   r±   rŒ   r’  Ú
col_valuesÚcvsr]  s
             r_   rS  zTable.read_columnq  s\  € ð 	×ÒÑÔÐð �ŠÑ Ô ð 	Ø�5àÐÝÐRÑSÔSÐSð ”ð 	Ið 	IˆAØ˜œÒÐØÔ*ð Ý$ð3 6ð 3ð 3ð 3ñô ð õ ˜DœJœO¨VÑ4Ô4�Ø—
’
˜4œ9Ñ%Ô%Ð%ØŸYšYØ�e˜D�j”MØ œLØ!œ]Øœ;ð	 'ñ ô �
ð ! ”m�Ý ¤
Ô 0°VÐ2BÐ2BÐ2BÀDÑIÔI�Ý˜c¨°UÀ%ÐHÑHÔHÐHÐHÐHð%  õ( ÐB &ÐBÐBÐBÑCÔCÐCra   )Nr…   NNNNNN)rÔ   r«   rÌ   rM   rW   rX   r    rZ   rô  rõ  r_  rö  r÷  rø  rž   rù  rÖ  rú  rY   r¡   r  )r’  rZ   r  r  )rû  r‘   rY   r  r  )rY   r#  )rY   r*  )rY   r/  )rY   r;  )rY   r  )r�   rZ   rY   rZ   )r�   rZ   rœ  rR  rY   r¡   r  r\   r  )r«  rX   rY   r¡   r  )r°   r”   r±   r”   rY   rg  ©r�  r—   r  )TNNN)rû  r-   r  r—   )rá  r-   rƒ  r—   )rj  ri  rY   r-   )r“   r”   rØ   r—   r…  r”   rY   r/  ©r°   r”   r±   r”   )rQ  rZ   r°   r”   r±   r”   )4rý   r  r  r  r-  r.  r  r©  rm  rå   r  rþ  r	  ró   r  r  r  r  rþ  r\  r{   r]  ry  r„  r  r)  r.  r:  r?  rB  rD  rŽ  r¬  rV  rY  rd  rS  r   rN  r­  rl  r  ro  ru  r“  Ústaticmethodr€  r³  r¸  rN  rS  r  r  s   @r_   r  r  ¶  s¢  ø€ € € € € € ðð ð. €KØ€KÐÐÐÑØ€O€O�OØ#$€FÐ$Ð$Ð$Ñ$Ø€Hà€N€N�Nð  $ØØ,0Ø;?Ø,0Ø$(Ø Øðð ð ð ð ð ð ð* ð-ð -ð -ñ „Xð-ð
ð 
ð 
ð 
ð$ð ð ð ð%ð %ð %ð %ðN ð-ð -ð -ñ „Xð-ð!ð !ð !ð !ð" ðFð Fð Fñ „XðFð ð%ð %ð %ñ „Xð%ð ð2ð 2ñ „Xð2ð ðð ñ „Xðð ð ð  ñ „Xð ð ð&ð &ñ „Xð&ð ðBð Bð Bñ „XðBð ð<ð <ð <ñ „Xð<ð ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð"ð "ð "ð "ð<ð <ð <ð <ð
3ð 3ð 3ð 3ð*ð *ð *ð *ð

ð 
ð 
ð 
ð$ð ð ð ð$ð $ð $ð $ð
Qð 
Qð 
Qð 
Qð	ð 	ð 	ð 	ð 	ðð ð ð ð* ðIð Iñ „^ðIðX ?CðTð Tð Tð Tð Tðn CGð ð  ð  ð  ð  ðD ðð ð ñ „[ðð$=ð $=ð $=ð $=ðT ØØØðpð pð pð pð pðd ð9!ð 9!ð 9!ñ „\ð9!ðv5ð 5ð 5ð 5ð 5ðnð ð ð ð@ HLð)ð )ð )ð )ð )ð: Ø Øð+Dð +Dð +Dð +Dð +Dð +Dð +Dð +Dð +Dra   r  c                  ó0   — e Zd ZdZdZ	 	 	 	 ddd„Zdd
„ZdS )ró  zË
    a write-once read-many table: this format DOES NOT ALLOW appending to a
    table. writing is a one-time operation the data are stored in a format
    that allows for searching the data on disk
    rê  Nr°   r”   r±   c                ó    — t          d¦  «        ‚)z[
        read the indices and the indexing array, calculate offset rows and return
        z!WORMTable needs to implement readrh  ri  s        r_   r>  zWORMTable.read¨  s   € õ "Ð"EÑFÔFÐFra   rY   r¡   c                ó    — t          d¦  «        ‚)zÞ
        write in a format that we can search later on (but cannot append
        to): write out the indices and the values using _write_array
        (e.g. a CArray) create an indexing table so that we can search
        z"WORMTable needs to implement writerh  rk  s      r_   r   zWORMTable.write´  s   € õ "Ð"FÑGÔGÐGra   rm  rÁ  r  )rý   r  r  r  rÝ  r>  r   rÚ   ra   r_   ró  ró  Ÿ  sk   € € € € € ðð ð €Jð ØØ Øð
Gð 
Gð 
Gð 
Gð 
GðHð Hð Hð Hð Hð Hra   ró  c                  óV   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 ddd„Zddd„Zdd„Z	 d d!d„ZdS )"r‰  ú(support the new appendable table formatsÚ
appendableNFTr–   r—   rµ   r”   rœ   rs  rY   r¡   c                óü  — |s'| j         r | j                             | j        d¦  «         |                      ||||||¬¦  «        }|j        D ]}|                     ¦   «          Œ|j         sJ|                     ||||	¬¦  «        }|                     ¦   «          ||d<    |j        j	        |j        fi |¤Ž |j
        |j        _
        |j        D ]}|                     ||¦  «         Œ|                     ||
¬¦  «         d S )Nr{   )r„  rû  r  rš   r¤   rž   )r•   r“   rØ   r…  rs  )rœ   )rþ  rÖ   r  rÌ   r“  r„  r†  r¸  rV  Úcreate_tablerÖ  ru  r�  Ú
write_data)rä   rû  r„  r–   r•   r“   rØ   rš   rµ   r…  rœ   r¤   rž   rs  r{   rŒ   Úoptionss                    r_   r   zAppendableTable.writeÃ  sM  € ð  ð 	:˜$œ.ð 	:ØŒL×$Ò$ T¤Z°Ñ9Ô9Ð9ð ×!Ò!ØØØØ%ØØ%ð "ñ 
ô 
ˆð ”ð 	ð 	ˆAØ×ÒÑÔÐÐàŒð 	?à×.Ò.ØØ#Ø%Ø)ð	 /ñ ô ˆGð �OŠOÑÔÐà%0ˆG�MÑ"ð 'ˆEŒMÔ& u¤{Ð>Ð>°gÐ>Ð>Ð>ð !œ:ˆŒÔð ”ð 	.ð 	.ˆAØ×Ò˜u fÑ-Ô-Ð-Ð-ð 	×Ò˜¨6ÐÑ2Ô2Ð2Ð2Ð2ra   c                ó4  ‡‡— | j         j        }| j        }g }|rv| j        D ]n}t	          |j        ¦  «                             d¬¦  «        }t          |t          j	        ¦  «        r*| 
                    |                     dd¬¦  «        ¦  «         Œo|r/|d         }|dd…         D ]}||z  }Œ|                     ¦   «         }nd}d„ | j        D ¦   «         }	t          |	¦  «        }
|
dk    s
J |
¦   «         ‚d	„ | j        D ¦   «         }d
„ |D ¦   «         }g }t          |¦  «        D ]L\  }}|g| j         ||
|z                     j        ¢R }| 
                    |                     |¦  «        ¦  «         ŒM|€d}t          j        t'          ||¦  «        | j         ¬¦  «        }||z  dz   }t)          |¦  «        D ]e}||z  Št'          |dz   |z  |¦  «        Š‰‰k    r dS |                      |ˆˆfd„|	D ¦   «         |�
|‰‰…         ndˆˆfd„|D ¦   «         ¬¦  «         ŒfdS )z`
        we form the data into a 2-d including indexes,values,mask write chunk-by-chunk
        r   rŽ  Úu1Fr  rk   Nc                ó   — g | ]	}|j         ‘Œ
S rÚ   )r  rË  s     r_   rq   z.AppendableTable.write_data.<locals>.<listcomp>  s   € Ð6Ð6Ð6 �1”9Ð6Ð6Ð6ra   c                ó6   — g | ]}|                      ¦   «         ‘ŒS rÚ   )rs  rË  s     r_   rq   z.AppendableTable.write_data.<locals>.<listcomp>  s    € Ð:Ð:Ð: A�!—+’+‘-”-Ð:Ð:Ð:ra   c           	     óœ   — g | ]I}|                      t          j        t          j        |j        ¦  «        |j        d z
  ¦  «        ¦  «        ‘ŒJS r¶  )Ú	transposerc  ÚrollÚaranger•  r  s     r_   rq   z.AppendableTable.write_data.<locals>.<listcomp>   sB   € ÐVÐVÐVÈ!�!—+’+�bœg¥b¤i°´Ñ&7Ô&7¸¼À!¹ÑDÔDÑEÔEÐVÐVÐVra   r  r  c                ó$   •— g | ]}|‰‰…         ‘ŒS rÚ   rÚ   )rn   rŒ   Úend_iÚstart_is     €€r_   rq   z.AppendableTable.write_data.<locals>.<listcomp>4  s"   ø€ Ð;Ð;Ð;¨a˜˜7 5˜=Ô)Ð;Ð;Ð;ra   c                ó$   •— g | ]}|‰‰…         ‘ŒS rÚ   rÚ   )rn   r�  rÖ  r×  s     €€r_   rq   z.AppendableTable.write_data.<locals>.<listcomp>6  s"   ø€ Ð:Ð:Ð:¨Q˜˜' %˜-Ô(Ð:Ð:Ð:ra   )Úindexesr  rœ  )r]  rª  r  r÷  r7   rÍ  rŠ  rc   rc  rd  r–   r  r  rô  rt   r¨  rÇ  Úreshaperú  r  r”  Úwrite_data_chunk)rä   rµ   rœ   rª  rE  ÚmasksrŒ   r  rÓ  rÙ  Únindexesrœ  Úbvaluesr«  r�  Ú	new_shapeÚrowsÚchunksrÖ  r×  s                     @@r_   rË  zAppendableTable.write_dataþ  sž  øø€ ð ”
Ô ˆØÔ#ˆð ˆØð 	@ØÔ%ð @ð @�õ ˜AœF‘|”|×'Ò'¨QÐ'Ñ/Ô/�Ý˜d¥B¤JÑ/Ô/ð @Ø—L’L §¢¨T¸ Ñ!>Ô!>Ñ?Ô?Ð?øð ð 	Ø˜”8ˆDØ˜1˜2˜2”Yð  ð  �Ø˜a‘x��Ø—:’:‘<”<ˆDˆDàˆDð 7Ð6 d¤oÐ6Ñ6Ô6ˆÝ�w‘<”<ˆØ˜1Š}ˆ}ˆ}˜h‰}Œ}ˆ}ð ;Ð:¨Ô)9Ð:Ñ:Ô:ˆØVÐVÈvÐVÑVÔVˆØˆÝ˜fÑ%Ô%ð 	1ð 	1‰DˆAˆqØÐG ¤¨E°(¸Q±,Ô,?Ô!@Ô!FÐGÐGˆIØ�NŠN˜1Ÿ9š9 YÑ/Ô/Ñ0Ô0Ð0Ð0ð ÐØˆIåŒx�˜I uÑ-Ô-°T´ZÐ@Ñ@Ô@ˆØ˜)Ñ# aÑ'ˆÝ�v‘”ð 	ð 	ˆAØ˜)‘mˆGÝ˜˜Q™ )Ñ+¨UÑ3Ô3ˆEØ˜%ÒÐØ��à×!Ò!ØØ;Ð;Ð;Ð;Ð;°7Ð;Ñ;Ô;Ø,0Ð,<�T˜' %˜-Ô(Ð(À$Ø:Ð:Ð:Ð:Ð:°'Ð:Ñ:Ô:ð	 "ñ ô ð ð ð	ð 	ra   rà  rR  rÙ  úlist[np.ndarray]r  únpt.NDArray[np.bool_] | Nonerœ  c                ó¨  — |D ]}t          j        |j        ¦  «        s dS Œ|d         j        d         }|t          |¦  «        k    rt          j        || j        ¬¦  «        }| j        j        }t          |¦  «        }t          |¦  «        D ]\  }	}
|
|||	         <   Œt          |¦  «        D ]\  }	}||||	|z            <   Œ|�K|                     ¦   «          	                    t          d¬¦  «         }|                     ¦   «         s||         }t          |¦  «        r5| j                             |¦  «         | j                             ¦   «          dS dS )zê
        Parameters
        ----------
        rows : an empty memory space where we are putting the chunk
        indexes : an array of the indexes
        mask : an array of the masks
        values : an array of the values
        Nr   r  Fr  )rc  r³  rÇ  rt   rú  r]  rª  r¨  r  r  r—   rŠ  r{   r–   r4  )rä   rà  rÙ  r  rœ  r�  rE  rª  rÝ  r«  rž  rÓ  s               r_   rÛ  z AppendableTable.write_data_chunk9  sm  € ð  ð 	ð 	ˆAÝ”7˜1œ7Ñ#Ô#ð Ø��ðð ˜”
Ô  Ô#ˆØ•C˜‘I”IÒÐÝ”8˜E¨¬Ð4Ñ4Ô4ˆDØ”
Ô ˆÝ�w‘<”<ˆõ   Ñ(Ô(ð 	!ð 	!‰FˆAˆsØ ˆD��q”‰NˆNõ ˜fÑ%Ô%ð 	*ð 	*‰DˆAˆqØ()ˆD��q˜8‘|Ô$Ñ%Ð%ð ÐØ—’‘”×$Ò$¥T°Ð$Ñ6Ô6Ð6ˆAØ—5’5‘7”7ð Ø˜A”w�åˆt‰9Œ9ð 	ØŒJ×Ò˜dÑ#Ô#Ð#ØŒJ×ÒÑÔÐÐÐð	ð 	ra   r°   r±   c                ó(  — |�t          |¦  «        sm|€+|€)| j        }| j                             | j        d¬¦  «         n>|€| j        }| j                             ||¬¦  «        }| j                             ¦   «          |S |                      ¦   «         sd S | j        }t          | |||¬¦  «        }| 
                    ¦   «         }t          |d¬¦  «                             ¦   «         }t          |¦  «        }	|	�r|                     ¦   «         }
t          |
|
dk             j        ¦  «        }|sdg}|d         |	k    r|                     |	¦  «         |d         dk    r|                     dd¦  «         |                     ¦   «         }t'          |¦  «        D ]c}|                     t+          ||¦  «        ¦  «        }|                     ||j        d                  ||j        d                  dz   ¬¦  «         |}Œd| j                             ¦   «          |	S )	NTry  r—  Fr  rk   r   r	  )rt   rE  rÖ   r  rÌ   r{   Úremove_rowsr4  rG  ri  rº  r3   Úsort_valuesÚdiffrr   r™   r–   r°  ro  Úreversedr›  r”  )rä   ru   r°   r±   rE  r{   rj  rœ  Úsorted_seriesÚlnrè  rÂ   Úpgr(  rà  s                  r_   r€  zAppendableTable.deletee  s$  € ð ˆ=¥ E¡
¤
ˆ=Øˆ}  Øœ
�Ø”×(Ò(¨¬¸tÐ(ÑDÔDÐDÐDð �<Øœ:�DØœ
×.Ò.°UÀÐ.ÑFÔF�Ø”
× Ò Ñ"Ô"Ð"ØˆLð �ŠÑ Ô ð 	Ø�4ð ”
ˆÝ˜d E°¸TÐBÑBÔBˆ	Ø×(Ò(Ñ*Ô*ˆõ ˜v¨EÐ2Ñ2Ô2×>Ò>Ñ@Ô@ˆÝ�ÑÔˆàñ 	à ×%Ò%Ñ'Ô'ˆDÝ˜$˜t ašxœ.Ô.Ñ/Ô/ˆFð ð Ø˜�ð �bŒz˜RÒÐØ—’˜bÑ!Ô!Ð!ð �aŒy˜AŠ~ˆ~Ø—’˜a Ñ#Ô#Ð#ð —’‘”ˆBÝ˜fÑ%Ô%ð ð �Ø$×)Ò)­%°°2©,¬,Ñ7Ô7�Ø×!Ò!Ø˜tœz¨!œ}Ô-°D¸¼ÀB¼Ô4HÈ1Ñ4Lð "ñ ô ð ð ��àŒJ×ÒÑÔÐð ˆ	ra   )NFNNNNNNFNNT)
r–   r—   rµ   r”   rœ   r—   rs  r—   rY   r¡   r  )rµ   r”   rœ   r—   rY   r¡   )
rà  rR  rÙ  râ  r  rã  rœ  râ  rY   r¡   r  rn  )	rý   r  r  r  rÝ  r   rË  rÛ  r€  rÚ   ra   r_   r‰  r‰  ½  s®   € € € € € Ø2Ð2à€Jð ØØØØØØ $ØØØØØ ð93ð 93ð 93ð 93ð 93ðv9ð 9ð 9ð 9ð 9ðv*ð *ð *ð *ðZ HLð:ð :ð :ð :ð :ð :ð :ra   r‰  c                  óp   — e Zd ZU dZdZdZdZeZde	d<   e
dd	„¦   «         Zedd„¦   «         Z	 	 	 	 ddd„ZdS )rñ  rÇ  rÞ  rè  r4  r/  r0  rY   r—   c                ó.   — | j         d         j        dk    S )Nr   rk   )rô  rd  rè   s    r_   r)  z"AppendableFrameTable.is_transposedª  s   € àŒ˜qÔ!Ô&¨!Ò+Ð+ra   r�  c                ó   — |r|j         }|S )zthese are written transposed)r‘  rn  s      r_   ro  zAppendableFrameTable.get_object®  s   € ð ð 	Ø”%ˆCØˆ
ra   Nr°   r”   r±   c                ó<  ‡ — ‰                       |¦  «         ‰                      ¦   «         sd S ‰                      |||¬¦  «        }t          ‰ j        ¦  «        r,‰ j                             ‰ j        d         d         i ¦  «        ni }ˆ fd„t          ‰ j        ¦  «        D ¦   «         }t          |¦  «        dk    sJ ‚|d         }||         d         }	g }
t          ‰ j        ¦  «        D �]Ú\  }}|‰ j	        vrŒ||         \  }}|                     d¦  «        dk    rt          |¦  «        }nt          j        |¦  «        }|                     d¦  «        }|�|                     |d¬	¦  «         ‰ j        r%|}|}t          |	t          |	d
d ¦  «        ¬¦  «        }n)|j        }t          |	t          |	d
d ¦  «        ¬¦  «        }|}|j        dk    r<t%          |t&          j        ¦  «        r"|                     d|j        d         f¦  «        }t%          |t&          j        t.          f¦  «        r§	 t1          |j        ||d¬¦  «        }nÍ# t2          $ r€}‰ j        dk    rjt7          ¦   «         r\t9          |¦  «                             d¦  «        r:t<          r3t1          |j        ||dt?          dt&          j         ¬¦  «        ¬¦  «        }n‚ Y d }~nHd }~ww xY wt%          |t          ¦  «        rt1          |||¬¦  «        }nt1          j!        |g||¬¦  «        }t7          ¦   «         r|j"        j#        dk    s8|j$        |j"        k     %                    ¦   «         sJ |j$        |j"        f¦   «         ‚|D ]B}t          ‰ j&        j'        |› d�d ¦  «        }|dv r||          (                    |¦  «        ||<   ŒC|
 )                    |¦  «         �ŒÜt          |
¦  «        dk    r	|
d         }ntU          |
d¬¦  «        }tW          ‰ |||¬¦  «        }‰  ,                    |||¬¦  «        }|S )NrL  r   c                ó8   •— g | ]\  }}|‰j         d          u ¯|‘ŒS r^  r>  )rn   r«  rã  rä   s      €r_   rq   z-AppendableFrameTable.read.<locals>.<listcomp>Ë  s.   ø€ ÐPÐPÐP‘e�a˜°r¸T¼_ÈQÔ=OÐ7OÐ7O�Ð7OÐ7OÐ7Ora   rk   rü   r0   rª  T©Úinplacere   rd   Frß  r[  r\  r^  r_  )r²   r™   rÎ  r]  rà  r  rÃ  )rZ   r‚  rŽ  )rj  r²   )-rd  rG  rl  rt   r_  rÖ  rñ   r¨  r„  r÷  r/   r0   Úfrom_tuplesÚ	set_namesr)  r´  r‘  r•  rc   rc  rd  rÚ  rÇ  r9   r-   rh  r    r   rZ   r  r   r4   ri  Ú_from_arraysr]  r«  ÚdtypesrŠ  r{   ru  r  r–   r6   ri  r³  )rä   ru   r²   r°   r±   r�  rÖ  ÚindsÚindr™   Úframesr«  rŒ   Ú
index_valsr  rŒ  rª  rœ  Úindex_Úcols_ræ  r�  rQ  r]  rj  s   `                        r_   r>  zAppendableFrameTable.readµ  sb  ø€ ð 	×Ò˜eÑ$Ô$Ð$ð �ŠÑ Ô ð 	Ø�4à—’ u°EÀ�ÑEÔEˆõ �4Ô&Ñ'Ô'ðˆDŒI�MŠM˜$Ô-¨aÔ0°Ô3°RÑ8Ô8Ð8àð 	ð QÐPÐPÐP�y¨¬Ñ3Ô3ÐPÑPÔPˆÝ�4‰yŒy˜AŠ~ˆ~ˆ~ˆ~Ø�1Œgˆà�s”˜A”ˆàˆÝ˜dœiÑ(Ô(ð =	ñ =	‰DˆAˆqØ˜Ô(Ð(Ð(ØØ"(¨¤)ÑˆJ˜ð �xŠx˜ÑÔ <Ò/Ð/Ý˜ZÑ(Ô(��å!Ô-¨jÑ9Ô9�à—H’H˜WÑ%Ô%ˆEØÐ Ø—’˜u¨d�Ñ3Ô3Ð3àÔ!ð Ø �Ø�Ý˜e­'°%¸ÀÑ*FÔ*FÐGÑGÔG��à œ�Ý˜u­7°5¸&À$Ñ+GÔ+GÐHÑHÔH�Ø�ð Œ{˜aÒÐ¥J¨vµr´zÑ$BÔ$BÐØŸš¨¨F¬L¸¬OÐ(<Ñ=Ô=�å˜&¥2¤:­}Ð"=Ñ>Ô>ð SðÝ" 6¤8°UÀ&ÈuÐUÑUÔU�B�BøÝ)ð ð ð àœ Ò6Ð6Ý.Ñ0Ô0ð 7å ™HœH×-Ò-Ð.FÑGÔGð 7õ (ð 7õ
 'Ø"œHØ$)Ø"(Ø!&Ý"-°hÍÌÐ"PÑ"PÔ"Pðñ ô ˜˜ð ð ˜˜˜˜øøøøðøøøõ  ˜F¥EÑ*Ô*ð SÝ˜v¨u¸FÐCÑCÔC��õ Ô+¨V¨H¸eÈ6ÐRÑRÔR�Ý&Ñ(Ô(ð T¨V¬\Ô->À#Ò-EÐ-EØœ	 V¤\Ò1×6Ò6Ñ8Ô8ÐSÐS¸2¼9ÀfÄlÐ:SÑSÔSÐ8ð  ð :ð :�Ý ¤
Ô 0°VÐ2BÐ2BÐ2BÀDÑIÔI�ØÐ-Ð-Ð-Ø!# F¤×!2Ò!2°5Ñ!9Ô!9�B�v‘JøØ�MŠM˜"ÑÔÐÑåˆv‰;Œ;˜!ÒÐØ˜”ˆBˆBå˜ QÐ'Ñ'Ô'ˆBå˜d¨%°uÀ4ÐHÑHÔHˆ	à×Ò˜r¨YÀÐÑHÔHˆØˆ	s   È,IÉ
KÉA6K
Ë
Kr  rÀ  rm  rÁ  )rý   r  r  r  r-  rÝ  r•  r-   r0  r  r  r)  r  ro  r>  rÚ   ra   r_   rñ  rñ  ¢  s¨   € € € € € € Ø2Ð2à€KØ#€JØ€DØ)2€HÐ2Ð2Ð2Ñ2àð,ð ,ð ,ñ „Xð,ð ðð ð ñ „[ðð ØØ Øðdð dð dð dð dð dð dra   rñ  c                  ó|   ‡ — e Zd ZdZdZdZdZeZe	dd„¦   «         Z
edd	„¦   «         Zddˆ fd„Z	 	 	 	 ddˆ fd„Zˆ xZS )rï  rÇ  rå  ræ  r4  rY   r—   c                ó   — dS r´  rÚ   rè   s    r_   r)  z#AppendableSeriesTable.is_transposed$  rµ  ra   r�  c                ó   — |S r\   rÚ   rn  s      r_   ro  z AppendableSeriesTable.get_object(  s   € àˆ
ra   Nr¡   c                óÔ   •— t          |t          ¦  «        s|j        pd}|                     |¦  «        } t	          ¦   «         j        d||j                             ¦   «         dœ|¤Ž dS )ú+we are going to write this as a frame tablerœ  ©rû  rž   NrÚ   )rc   r-   re   Úto_framer½  r   r²   rš  )rä   rû  rž   rÈ   re   r¾  s        €r_   r   zAppendableSeriesTable.write-  si   ø€ å˜#�yÑ)Ô)ð 	%Ø”8Ð'˜xˆDØ—,’,˜tÑ$Ô$ˆCØ�‰ŒŒÐK˜#¨C¬K×,>Ò,>Ñ,@Ô,@ÐKÐKÀFÐKÐKÐKÐKÐKra   r°   r”   r±   r3   c                ój  •— | j         }|�B|r@t          | j        t          ¦  «        sJ ‚| j        D ]}||vr|                     d|¦  «         Œt          ¦   «                              ||||¬¦  «        }|r|                     | j        d¬¦  «         |j        d d …df         }|j	        dk    rd |_	        |S )Nr   rc  Trò  rœ  )
r  rc   r©  rr   r°  r½  r>  Ú	set_indexr»  re   )	rä   ru   r²   r°   r±   r  r  rB  r¾  s	           €r_   r>  zAppendableSeriesTable.read4  sÌ   ø€ ð Ô,ˆØÐ >ÐÝ˜dœk­4Ñ0Ô0Ð0Ð0Ð0Ø”[ð )ð )�Ø˜GÐ#Ð#Ø—N’N 1 aÑ(Ô(Ð(øÝ‰GŒG�LŠL˜u¨g¸UÈˆLÑNÔNˆØð 	3Ø�KŠK˜œ¨TˆKÑ2Ô2Ð2àŒF�1�1�1�a�4ŒLˆð Œ6�XÒÐØˆAŒFØˆra   r  rÀ  r\   r  rm  rÕ  )rý   r  r  r  r-  rÝ  r•  r3   r0  r  r)  r  ro  r   r>  r  r  s   @r_   rï  rï    sÒ   ø€ € € € € Ø2Ð2à €KØ$€JØ€DØ€Hàðð ð ñ „Xðð ðð ð ñ „[ððLð Lð Lð Lð Lð Lð Lð ØØ Øðð ð ð ð ð ð ð ð ð ð ra   rï  c                  ó,   ‡ — e Zd ZdZdZdZdˆ fd„Zˆ xZS )rð  rÇ  rå  rç  rY   r¡   c                ó<  •— |j         pd}|                      |¦  «        \  }| _        t          | j        t          ¦  «        sJ ‚t	          | j        ¦  «        }|                     |¦  «         t          |¦  «        |_         t          ¦   «         j	        dd|i|¤Ž dS )r  rœ  rû  NrÚ   )
re   r  r©  rc   rr   r–   r/   r²   r½  r   )rä   rû  rÈ   re   ÚnewobjrŒ  r¾  s         €r_   r   z AppendableMultiSeriesTable.writeT  s–   ø€ àŒxÐ#˜8ˆØ"×6Ò6°sÑ;Ô;Ñˆ�”Ý˜$œ+¥tÑ,Ô,Ð,Ð,Ð,Ý�D”KÑ Ô ˆØ�Š�DÑÔÐÝ˜t™œˆŒØ�‰ŒŒÐ+Ð+˜&Ð+ FÐ+Ð+Ð+Ð+Ð+ra   r  )rý   r  r  r  r-  rÝ  r   r  r  s   @r_   rð  rð  M  sM   ø€ € € € € Ø2Ð2à €KØ)€Jð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ra   rð  c                  ó‚   — e Zd ZU dZdZdZdZeZde	d<   e
dd	„¦   «         Ze
d
„ ¦   «         Zdd„Zed„ ¦   «         Zdd„ZdS )rî  z:a table that read/writes the generic pytables table formatrÞ  rß  r4  zlist[Hashable]r©  rY   rZ   c                ó   — | j         S r\   )r-  rè   s    r_   r±  zGenericTable.pandas_typeh  s   € àÔÐra   c                ó<   — t          | j        dd ¦  «        p| j        S r  r  rè   s    r_   r\  zGenericTable.storablel  s   € å�t”z 7¨DÑ1Ô1Ð?°T´ZÐ?ra   r¡   c                ó´   — g | _         d| _        g | _        d„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        dS )rŠ  Nc                ó    — g | ]}|j         ¯	|‘ŒS rÚ   rJ  rË  s     r_   rq   z*GenericTable.get_attrs.<locals>.<listcomp>v  rK  ra   c                ó    — g | ]}|j         °	|‘ŒS rÚ   rJ  rË  s     r_   rq   z*GenericTable.get_attrs.<locals>.<listcomp>w  rM  ra   c                ó   — g | ]	}|j         ‘Œ
S rÚ   rd   rË  s     r_   rq   z*GenericTable.get_attrs.<locals>.<listcomp>x  s   € Ð>Ð>Ð>¨˜QœVÐ>Ð>Ð>ra   )r_  r¤   r©  rN  rô  r÷  rž   rè   s    r_   rY  zGenericTable.get_attrsp  sf   € à ˆÔØˆŒØˆŒàKÐK d¤oÐKÑKÔKˆŒØPÐP t¤ÐPÑPÔPˆÔØ>Ð>¨TÔ-=Ð>Ñ>Ô>ˆÔÐÐra   c           
     óœ  — | j         }|                      d¦  «        }|�dnd}t          dd| j        ||¬¦  «        }|g}t	          |j        ¦  «        D ]x\  }}t          |t          ¦  «        sJ ‚t          ||¦  «        }|                      |¦  «        }|�dnd}t          |||g|| j        ||¬¦  «        }	| 
                    |	¦  «         Œy|S )z0create the indexables from the table descriptionr™   Nr¨  r   )re   rd  r{   rÏ   r/  )re   r.  rœ  r-  r{   rÏ   r/  )ry  r¬  r²  r{   r¨  Ú_v_namesrc   rZ   r´  r*  r–   )
rä   r†  rY  rÏ   r_  r^  r«  r  rÜ  r¦  s
             r_   rN  zGenericTable.indexablesz  s  € ð Ôˆð
 ×Ò Ñ(Ô(ˆØ˜^ˆzˆz°ˆÝ#Ø˜q¨¬
¸Èð
ñ 
ô 
ˆ	ð IRÀ{ˆå˜aœjÑ)Ô)ð 	#ð 	#‰DˆAˆqÝ˜a¥Ñ%Ô%Ð%Ð%Ð%å˜1˜a‘=”=ˆDØ×#Ò# AÑ&Ô&ˆBØ!# �:�:°TˆDÝ(ØØØ�sØØ”jØØðñ ô ˆBð ×Ò˜rÑ"Ô"Ð"Ð"àÐra   c                ó    — t          d¦  «        ‚)Nzcannot write on a generic tablerh  )rä   rÈ   s     r_   r   zGenericTable.writež  s   € Ý!Ð"CÑDÔDÐDra   Nr  r  )rý   r  r  r  r-  rÝ  r•  r-   r0  r  r  r±  r\  rY  r   rN  r   rÚ   ra   r_   rî  rî  _  sÂ   € € € € € € ØDÐDà€KØ €JØ€DØ€HØÐÐÑàð ð  ð  ñ „Xð ð ð@ð @ñ „Xð@ð?ð ?ð ?ð ?ð ð ð  ñ „^ð ðFEð Eð Eð Eð Eð Era   rî  c                  ó€   ‡ — e Zd ZdZdZeZdZ ej	        d¦  «        Z
edd„¦   «         Zddˆ fd
„Z	 	 	 	 ddˆ fd„Zˆ xZS )rò  za frame with a multi-indexré  r4  z^level_\d+$rY   rZ   c                ó   — dS )NÚappendable_multirÚ   rè   s    r_   rþ  z*AppendableMultiFrameTable.table_type_shortª  s   € à!Ð!ra   Nr¡   c                ó>  •— |€g }n|du r|j                              ¦   «         }|                      |¦  «        \  }| _        t	          | j        t
          ¦  «        sJ ‚| j        D ]}||vr|                     d|¦  «         Œ t          ¦   «         j        d||dœ|¤Ž d S )NTr   r  rÚ   )	r²   rš  r  r©  rc   rr   r°  r½  r   )rä   rû  rž   rÈ   r  r¾  s        €r_   r   zAppendableMultiFrameTable.write¯  s¼   ø€ ØÐØˆLˆLØ˜TÐ!Ð!Øœ;×-Ò-Ñ/Ô/ˆLØ×3Ò3°CÑ8Ô8ÑˆˆTŒ[Ý˜$œ+¥tÑ,Ô,Ð,Ð,Ð,Ø”ð 	*ð 	*ˆAØ˜Ð$Ð$Ø×#Ò# A qÑ)Ô)Ð)øØ�‰ŒŒÐC˜#¨LÐCÐC¸FÐCÐCÐCÐCÐCra   r°   r”   r±   r-   c                óò   •‡ — t          ¦   «                              ||||¬¦  «        }|                     ‰ j        ¦  «        }|j                             ˆ fd„|j        j        D ¦   «         ¦  «        |_        |S )Nrc  c                óL   •— g | ] }‰j                              |¦  «        rd n|‘Œ!S r\   )Ú
_re_levelsÚsearch)rn   re   rä   s     €r_   rq   z2AppendableMultiFrameTable.read.<locals>.<listcomp>Ç  s2   ø€ ÐWÐWÐWÀ�T”_×+Ò+¨DÑ1Ô1Ð;ˆTˆT°tÐWÐWÐWra   )r½  r>  r  r©  r™   rõ  rª  )rä   ru   r²   r°   r±   ræ  r¾  s   `     €r_   r>  zAppendableMultiFrameTable.read»  ss   øø€ õ ‰WŒW�\Š\ ¨w¸eÈ$ˆ\ÑOÔOˆØ�\Š\˜$œ+Ñ&Ô&ˆð ”8×%Ò%ØWÐWÐWÐWÈÌÌÐWÑWÔWñ
ô 
ˆŒð ˆ	ra   r  r\   r  rm  rð  )rý   r  r  r  rÝ  r-   r0  r•  ÚreÚcompiler  r  rþ  r   r>  r  r  s   @r_   rò  rò  ¢  s¾   ø€ € € € € Ø$Ð$à(€JØ€HØ€DØ�”˜NÑ+Ô+€Jàð"ð "ð "ñ „Xð"ð
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð ØØ Øðð ð ð ð ð ð ð ð ð ð ra   rò  rû  r-   rd  rP   r²  r/   c                ó  — |                       |¦  «        }t          |¦  «        }|�t          |¦  «        }|�|                     |¦  «        r|                     |¦  «        r| S t          |                     ¦   «         ¦  «        }|�6t          |                     ¦   «         ¦  «                             |d¬¦  «        }|                     |¦  «        s8t          d d ¦  «        g| j        z  }|||<   | j        t          |¦  «                 } | S )NF)Úsort)	r§  rA   ÚequalsÚuniquer�  Úslicer•  rž  rs   )rû  rd  r²  rC  rã  Úslicers         r_   r  r  Í  sñ   € ð 
�Š�tÑ	Ô	€BÝ˜&Ñ!Ô!€Fð ÐÝ˜UÑ#Ô#ˆØˆ˜Ÿš uÑ-Ô-ˆ°6·=²=ÀÑ3DÔ3DˆØˆ
å˜&Ÿ-š-™/œ/Ñ*Ô*€FØÐÝ˜eŸlšl™nœnÑ-Ô-×:Ò:¸6ÈÐ:ÑNÔNˆØ�=Š=˜ÑÔð %Ý',¨T°4Ñ'8Ô'8Ð&9¸C¼HÑ&DˆØˆˆt‰ØŒg•e˜F‘m”mÔ$ˆØ€Jra   r)  r   ústr | tzinfoc                ó.   — t          j        | ¦  «        }|S )z+for a tz-aware type, return an encoded zone)r   Úget_timezone)r)  Úzones     r_   r¡  r¡  ç  s   € åÔ! "Ñ%Ô%€DØ€Kra   rœ  únpt.NDArray[np.int64]ústr | tzinfo | NoneÚdatetime64_dtyper9   c                óÖ   — | j         dk    sJ | j         ¦   «         ‚t          j        |¦  «        \  }}t          d|¦  «        }t	          ||¬¦  «        }t          j        | |¬¦  «        }|S )zá
    Coerce the values to a DatetimeArray with appropriate tz.

    Parameters
    ----------
    values : ndarray[int64]
    tz : str, tzinfo, or None
    datetime64_dtype : str, e.g. "datetime64[ns]", "datetime64[25s]"
    rV  rS   )r)  rË  r  )r]  rc  Údatetime_datar   r;   r9   Ú_from_sequence)rœ  r)  r*  rË  rý  r]  r€  s          r_   r  r  í  su   € ð Œ<˜4ÒÐÐ ¤ÑÔÐõ ÔÐ/Ñ0Ô0�G€Dˆ!Ý�
˜DÑ!Ô!€Dõ ˜2 DÐ)Ñ)Ô)€EÝ
Ô
& v°UÐ
;Ñ
;Ô
;€CØ€Jra   re   c                ó¼  — t          | t          ¦  «        sJ ‚|j        }t          |¦  «        \  }}t	          |¦  «        }t
                               |¦  «        }t          j        |j	        d¦  «        s(t          |j	        ¦  «        st          |j	        ¦  «        r4t          | |||t          |dd ¦  «        t          |dd ¦  «        |¬¦  «        S t          |t          ¦  «        rt          d¦  «        ‚t          j        |d¬¦  «        }	t#          j        |¦  «        }
|	dk    r\t#          j        d	„ |
D ¦   «         t"          j        ¬
¦  «        }t          | |dt)          ¦   «                              ¦   «         |¬¦  «        S |	dk    rPt-          |
||¦  «        }|j	        j        }t          | |dt)          ¦   «                              |¦  «        |¬¦  «        S |	dv rt          | ||||¬¦  «        S t          |t"          j        ¦  «        r|j	        t4          k    sJ ‚|dk    s
J |¦   «         ‚t)          ¦   «                              ¦   «         }t          | ||||¬¦  «        S )NÚiur(  r)  )rœ  r«  r-  r(  r)  r*  zMultiIndex not supported here!Fr½  r   c                ó6   — g | ]}|                      ¦   «         ‘ŒS rÚ   )Ú	toordinalr  s     r_   rq   z"_convert_index.<locals>.<listcomp>+  s    € Ð>Ð>Ð>°! §¢¡¤Ð>Ð>Ð>ra   r  )r*  r‚  )ÚintegerÚfloating)rœ  r«  r-  r*  rD  )rc   rZ   re   rË  rÌ  r!  rÝ  r   rg  r]  r'   r#   r%  r´  r0   rÀ   rÈ  rc  r  Úint32r‹   Ú	Time32ColÚ_convert_string_arrayr2  rƒ  rd  rD  rÂ  )re   r™   rW   r    r*  r  rÍ  r«  rÜ  rÏ  rœ  r2  s               r_   rŸ  rŸ    s~  € Ý�d�CÑ Ô Ð Ð Ð à”€Jõ 5°UÑ;Ô;Ñ€IˆzÝ˜*Ñ%Ô%€DÝ×%Ò% iÑ0Ô0€Dõ 	Œ˜œ TÑ*Ô*ð
å˜uœ{Ñ+Ô+ð
õ ˜œÑ%Ô%ð
õ ØØØØÝ˜ ¨Ñ-Ô-Ý�u˜d DÑ)Ô)Ø!ð
ñ 
ô 
ð 	
õ �%�Ñ$Ô$ð :ÝÐ8Ñ9Ô9Ð9å”O E°%Ð8Ñ8Ô8€Mõ ŒZ˜ÑÔ€Fà˜ÒÐÝ”JÐ>Ð>°vÐ>Ñ>Ô>ÅbÄhÐOÑOÔOˆ	ÝØ�)˜V¥W¡Y¤Y×%8Ò%8Ñ%:Ô%:Àzð
ñ 
ô 
ð 	
ð 
˜(Ò	"Ð	"Ý)¨&°(¸FÑCÔCˆ	Ø”?Ô+ˆÝØØØÝ‰IŒI×Ò Ñ)Ô)Ø!ð
ñ 
ô 
ð 	
ð 
Ð1Ð	1Ð	1ÝØ˜¨°4ÀJð
ñ 
ô 
ð 	
õ ˜)¥R¤ZÑ0Ô0ÐN°Y´_ÍÒ5NÐ5NÐ5NÐNØ�xÒÐÐ ÑÔÐÝ‰yŒy×#Ò#Ñ%Ô%ˆÝ˜˜i¨¨tÀ
ÐKÑKÔKÐKra   r«  únp.ndarray | Indexc                óÞ  — |                      d¦  «        r?|dk    rt          | d¬¦  «        }�n>t          |                      |¦  «        d¬¦  «        }�n|                      d¦  «        r=|dk    rt          | d¬¦  «        }nët          |                      |¦  «        d¬¦  «        }nÆ|dk    r\	 t	          j        d„ | D ¦   «         t          ¬¦  «        }n™# t          $ r( t	          j        d„ | D ¦   «         t          ¬¦  «        }Y nhw xY w|d	v rt	          j        | ¦  «        }nK|d
v rt          | d ||¬¦  «        }n3|dk    rt	          j        | d         ¦  «        }nt          d|› �¦  «        ‚|S )Nrý  Fr  rÿ  r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   r  r  s     r_   rq   z$_unconvert_index.<locals>.<listcomp>V  s#   € ÐBÐBÐB¸¥Ô 0°Ñ 3Ô 3ÐBÐBÐBra   r  c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   r  r  s     r_   rq   z$_unconvert_index.<locals>.<listcomp>X  s#   € ÐDÐDÐD¸!¥Ô 2°1Ñ 5Ô 5ÐDÐDÐDra   )r2  Úfloatr—   r‚  r  rD  r   zunrecognized index type )	rÁ  r.   rÉ  r5   rc  r  rD  r¹   r  )rÍ  r«  rW   r    r™   s        r_   r´  r´  E  s¥  € ð ‡‚�|Ñ$Ô$ð <Ø�<ÒÐå! $¨UÐ3Ñ3Ô3ˆE‰Eå! $§)¢)¨D¡/¤/¸Ð>Ñ>Ô>ˆE‰EØ	�Š˜Ñ	'Ô	'ð <Ø�=Ò Ð å" 4¨eÐ4Ñ4Ô4ˆEˆEå" 4§9¢9¨T¡?¤?¸Ð?Ñ?Ô?ˆEˆEØ	�Šˆð	TÝ”JÐBÐB¸TÐBÑBÔBÍ&ÐQÑQÔQˆEˆEøÝð 	Tð 	Tð 	TÝ”JÐDÐD¸tÐDÑDÔDÍFÐSÑSÔSˆEˆEˆEð	Tøøøà	Ð-Ð	-Ð	-Ý”
˜4Ñ Ô ˆˆØ	�(Ð	Ð	Ý'Ø˜$¨¸&ð
ñ 
ô 
ˆˆð 
�Ò	Ð	Ý”
˜4 œ7Ñ#Ô#ˆˆåÐ:°DÐ:Ð:Ñ;Ô;Ð;Ø€Ls   Â.%C Ã/DÄDrÞ  rO   r  c                óô  — t          |j        t          ¦  «        r|                     ¦   «         }|j        t          k    r|S t          t          j        |¦  «        }|j        j        }t          j
        |d¬¦  «        }	|	dk    rt          d¦  «        ‚|	dk    rt          d¦  «        ‚|	dk    s|dk    s|S t          |¦  «        }
|                     ¦   «         }|||
<   |r;|
                     ¦   «         r't          |¦  «        |j        k    rt#          d	¦  «        ‚t          j
        |d¬¦  «        }	|	dk    rwt%          |j        d
         ¦  «        D ]\}||         }t          j
        |d¬¦  «        }	|	dk    r6t          |¦  «        |k    r||         nd|› �}t          d|› d|	› d�¦  «        ‚Œ]t)          |||¦  «                             |j        ¦  «        }|j        }t          |t,          ¦  «        r9t/          |                     | ¦  «        p|                     d¦  «        pd
¦  «        }t3          |pd
|¦  «        }|�|                     |¦  «        }|�||k    r|}|                     d|› �d¬¦  «        }|S )NFr½  r   z+[date] is not implemented as a table columnrq  z>too many timezones in this block, create separate data columnsr‚  rD  z8NaN representation is too large for existing column sizer   zNo.r
  z2]
because its data contents are not [string] but [r  rœ  z|Sr  )rc   r]  r4   rÃ  rD  r   rc  rd  re   r   rÈ  rÀ   r7   rÎ  r  rt   r2  r¹   r”  rÇ  r6  rÚ  r‡  ri   rñ   r·  r‹  r  )re   rÞ  r|  rš   r¤   rW   r    r²   rÍ  rÏ  r  rÍ  r«  r|  Úerror_column_labelr�  r2  Úecis                     r_   r‚  r‚  f  s¾  € õ �'”-¥Ñ-Ô-ð %Ø×"Ò"Ñ$Ô$ˆØ„}�ÒÐØˆå•2”:˜wÑ'Ô'€Gà”Ô#€JÝ”O G°EÐ:Ñ:Ô:€Mà˜ÒÐÝÐEÑFÔFÐFØ˜
Ò"Ð"õ ØLñ
ô 
ð 	
ð ˜XÒ%Ð%¨°xÒ)?Ð)?Øˆå�‰=Œ=€DØ�<Š<‰>Œ>€DØ€Dˆ�Jàð U˜Ÿš™
œ
ð U¥s¨7¡|¤|°lÔ6KÒ'KÐ'KÝÐSÑTÔTÐTõ ”O D°Ð7Ñ7Ô7€MØ˜Ò Ð õ �t”z !”}Ñ%Ô%ð 		ð 		ˆAØ�q”'ˆCÝœO¨C¸Ð>Ñ>Ô>ˆMØ Ò(Ð(Ý36°w±<´<À!Ò3CÐ3C W¨Q¤Z ZÈÈqÈÈÐ"Ýð6Ð4Fð 6ð 6à%ð6ð 6ð 6ñô ð ð )õ +¨4°¸6ÑBÔB×JÒJÈ4Ì:ÑVÔV€NØÔ&€Hõ �,¥Ñ%Ô%ð VÝ˜<×+Ò+¨DÑ1Ô1ÐT°\×5EÒ5EÀhÑ5OÔ5OÐTÐSTÑUÔUˆÝ�<Ð$ 1 hÑ/Ô/€Hð ÐØ×'Ò'¨Ñ1Ô1ˆØˆ?˜s Xš~˜~ØˆHà#×*Ò*¨?°¨?¨?ÀÐ*ÑGÔG€NØÐra   rÍ  rR  c                ó�  — t          | ¦  «        rZt          |                      ¦   «         dd¬¦  «        j                             ||¦  «        j                             | j        ¦  «        } t          |                      ¦   «         ¦  «        }t          dt          j        |¦  «        ¦  «        }t          j        | d|› �¬¦  «        } | S )a  
    Take a string-like that is object dtype and coerce to a fixed size string type.

    Parameters
    ----------
    data : np.ndarray[object]
    encoding : str
    errors : str
        Handler for encoding errors.

    Returns
    -------
    np.ndarray[fixed-length-string]
    FrD  )rÎ  r]  rk   ÚSr  )rt   r3   r  rZ   Úencoder  rÚ  rÇ  r"   r·  Ú
libwritersÚmax_len_string_arrayrc  r  )rÍ  rW   r    Úensuredr2  s        r_   r6  r6  ´  s£   € õ  ˆ4�y„yð 
å�4—:’:‘<”< e°8Ð<Ñ<Ô<Ü—’˜ &Ñ)Ô)Ü—W’W˜TœZÑ(Ô(ð 	õ ˜DŸJšJ™LœLÑ)Ô)€GÝ�1•jÔ5°gÑ>Ô>Ñ?Ô?€HåŒ:�d . h . .Ð1Ñ1Ô1€DØ€Kra   c                ób  — | j         }t          j        |                      ¦   «         t          ¬¦  «        } t          | ¦  «        r¿t          j        t          | ¦  «        ¦  «        }d|› �}t          | d         t          ¦  «        rMt          | d¬¦  «        j                             ||d¬¦  «        }|                     ¦   «         } d| j        _        n1|                      |d¬¦  «                             t          d¬¦  «        } |€d
}t          j        | |¦  «         |                      |¦  «        S )a*  
    Inverse of _convert_string_array.

    Parameters
    ----------
    data : np.ndarray[fixed-length-string]
    nan_rep : the storage repr of NaN
    encoding : str
    errors : str
        Handler for encoding errors.

    Returns
    -------
    np.ndarray[object]
        Decoded data.
    r  ÚUr   Fr  rD  )r    r]  TNri  )rÇ  rc  r  r  rD  rt   rB  rC  r"   rc   Úbytesr3   rZ   ÚdecoderÃ  ÚflagsÚ	writeabler  Ú!string_array_replace_from_nan_reprÚ  )rÍ  r¤   rW   r    rÇ  r2  r]  Úsers           r_   r  r  Ó  s  € ð& ŒJ€EÝŒ:�d—j’j‘l”l­&Ð1Ñ1Ô1€Då
ˆ4�y„yð MÝÔ2µ=ÀÑ3FÔ3FÑGÔGˆØ�H��ˆå�d˜1”g�uÑ%Ô%ð 	MÝ˜ EÐ*Ñ*Ô*Ô.×5Ò5Ø ¨xð 6ñ ô ˆCð —<’<‘>”>ˆDØ#'ˆDŒJÔ Ð à—;’;˜u¨5�;Ñ1Ô1×8Ò8½ÀeÐ8ÑLÔLˆDà€ØˆåÔ0°°wÑ?Ô?Ð?Ø�<Š<˜ÑÔÐra   rl  c                ó´   — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚t          |¦  «        rt	          |||¦  «        } || ¦  «        } | S r\   )rc   rZ   rü   Ú_need_convertÚ_get_converter)rœ  rl  rW   r    Úconvs        r_   rf  rf  ý  sY   € Ý�h¥Ñ$Ô$Ð4Ð4¥d¨8¡n¤nÑ4Ô4Ð$Ý�XÑÔð Ý˜h¨°&Ñ9Ô9ˆØ��f‘”ˆØ€Mra   c                óh   ‡ ‡‡— ‰ dk    rd„ S d‰ v rˆ fd„S ‰ dk    rˆˆfd„S t          d‰ › �¦  «        ‚)Nrý  c                ó.   — t          j        | d¬¦  «        S )NzM8[ns]r  ©rc  r  )r\  s    r_   r§   z _get_converter.<locals>.<lambda>  s   € �œ A¨XÐ6Ñ6Ô6€ ra   c                ó0   •— t          j        | ‰¬¦  «        S )Nr  rS  )r\  r«  s    €r_   r§   z _get_converter.<locals>.<lambda>	  s   ø€ �œ A¨TÐ2Ñ2Ô2€ ra   r‚  c                ó*   •— t          | d ‰‰¬¦  «        S )Nr  )r  )r\  rW   r    s    €€r_   r§   z _get_converter.<locals>.<lambda>  s    ø€ Õ0Ø�t h°vð
ñ 
ô 
€ ra   zinvalid kind )r¹   )r«  rW   r    s   ```r_   rO  rO    su   øøø€ Øˆ|ÒÐØ6Ð6Ð6Ø	˜Ð	Ð	Ø2Ð2Ð2Ð2Ð2Ø	�Ò	Ð	ð
ð 
ð 
ð 
ð 
ð 	
õ Ð/¨Ð/Ð/Ñ0Ô0Ð0ra   c                ó   — | dv sd| v rdS dS )N)rý  r‚  rý  TFrÚ   rÒ  s    r_   rN  rN    s"   € ØÐ'Ð'Ð'¨<¸4Ð+?Ð+?ØˆtØˆ5ra   r5  úSequence[int]c                ó(  — t          |t          ¦  «        st          |¦  «        dk     rt          d¦  «        ‚|d         dk    rN|d         dk    rB|d         dk    r6t	          j        d| ¦  «        }|r|                     ¦   «         d         }d|› �} | S )	z÷
    Prior to 0.10.1, we named values blocks like: values_block_0 and the
    name values_0, adjust the given name if necessary.

    Parameters
    ----------
    name : str
    version : Tuple[int, int, int]

    Returns
    -------
    str
    r=  z6Version is incorrect, expected sequence of 3 integers.r   rk   r3  r4  zvalues_block_(\d+)Úvalues_)rc   rZ   rt   r¹   r  r  rÂ   )re   r5  rÓ  Úgrps       r_   rV  rV    s˜   € õ �'�3ÑÔð S¥3 w¡<¤<°!Ò#3Ð#3ÝÐQÑRÔRÐRàˆq„z�Q‚€˜7 1œ:¨Ò+Ð+°¸´
¸a²°ÝŒIÐ+¨TÑ2Ô2ˆØð 	#Ø—(’(‘*”*˜Q”-ˆCØ"˜S�?�?ˆDØ€Kra   Ú	dtype_strc                ó   — |                       d¦  «        rd}nå|                       d¦  «        rd}nÍ|                       d¦  «        rd}nµ|                       d¦  «        rd}n�|                       d¦  «        r| }n…|                       d¦  «        r| }nm|                       d	¦  «        rd	}nU|                       d
¦  «        rd
}n=|                       d¦  «        rd}n%| dk    rd}n| dk    rd}nt          d| › d�¦  «        ‚|S )zA
    Find the "kind" string describing the given dtype name.
    )r‚  rG  r‚  r;  rb  )ri   rã  r2  rý  Ú	timedeltar—   r¨  ræ  rD  rZ   zcannot interpret dtype of [rY  )rÁ  r¹   )r[  r«  s     r_   rÌ  rÌ  1  sV  € ð ×ÒÐ/Ñ0Ô0ð EØˆˆØ	×	Ò	˜gÑ	&Ô	&ð EØˆˆØ	×	Ò	˜iÑ	(Ô	(ð EØˆˆØ	×	Ò	˜oÑ	.Ô	.ð EØˆˆØ	×	Ò	˜lÑ	+Ô	+ð EØˆˆØ	×	Ò	˜kÑ	*Ô	*ð EØˆˆØ	×	Ò	˜fÑ	%Ô	%ð EØˆˆØ	×	Ò	˜jÑ	)Ô	)ð 
EØˆˆØ	×	Ò	˜hÑ	'Ô	'ð EàˆˆØ	�hÒ	Ð	ØˆˆØ	�eÒ	Ð	ØˆˆåÐC°yÐCÐCÐCÑDÔDÐDà€Kra   c                ó|  — t          | t          ¦  «        r| j        } t          | j        t          ¦  «        rd| j        j        › d�}n| j        j        }| j        j        dv r(t          j	        |  
                    d¦  «        ¦  «        } nt          | t          ¦  «        r| j        } t          j	        | ¦  «        } | |fS )zJ
    Convert the passed data into a storable form and a dtype string.
    rÀ  rY  ÚmMrV  )rc   r8   rÖ  r]  r)   rË  re   r«  rc  r  rÉ  r1   rÊ  )rÍ  rÍ  s     r_   rË  rË  R  s¯   € õ �$�Ñ$Ô$ð ØŒzˆå�$”*�oÑ.Ô.ð %à5 4¤:¤?Ð5Ð5Ð5ˆ
ˆ
à”Z”_ˆ
à„z„˜$ÐÐÝŒz˜$Ÿ)š) D™/œ/Ñ*Ô*ˆˆõ 
�D�+Ñ	&Ô	&ð ØŒyˆåŒ:�dÑÔ€DØ�ÐÐra   c                  óf   — e Zd ZdZ	 	 	 ddd
„Zedd„¦   «         Zedd„¦   «         Zdd„Zd„ Zd„ ZdS )ri  zæ
    Carries out a selection operation on a tables.Table object.

    Parameters
    ----------
    table : a Table object
    where : list of Terms (or convertible to)
    start, stop: indices to start and/or stop selection

    Nr{   r  r°   r”   r±   rY   r¡   c                óž  — || _         || _        || _        || _        d | _        d | _        d | _        d | _        t          |¦  «        �r2t          t          ¦  «        5  t          j        |d¬¦  «        }|dv rìt          j        |¦  «        }|j        t          j        k    rA| j        | j        }}|€d}|€| j         j        }t          j        ||¦  «        |         | _        n‚t'          |j        j        t          j        ¦  «        r^| j        �|| j        k                          ¦   «         s$| j        �,|| j        k                         ¦   «         rt          d¦  «        ‚|| _        d d d ¦  «         n# 1 swxY w Y   | j        €I|                      |¦  «        | _        | j        �*| j                             ¦   «         \  | _        | _        d S d S d S )NFr½  )r2  Úbooleanr   z3where must have index locations >= start and < stop)r{   ru   r°   r±   Ú	conditionr±  Útermsri  r%   r   r¹   r   rÈ  rc  r  r]  Úbool_rE  rÔ  Ú
issubclassrü   r2  r  ÚgenerateÚevaluate)rä   r{   ru   r°   r±   Úinferreds         r_   rå   zSelection.__init__w  s   € ð ˆŒ
ØˆŒ
ØˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒ
ØˆÔå˜ÑÔñ 	1å�*Ñ%Ô%ð 1ð 1Ýœ?¨5¸Ð?Ñ?Ô?�ØÐ5Ð5Ð5ÝœJ uÑ-Ô-�EØ”{¥b¤hÒ.Ð.Ø&*¤j°$´)˜t˜Ø ˜=Ø$%˜EØ˜<Ø#'¤:Ô#3˜DÝ+-¬9°U¸DÑ+AÔ+AÀ%Ô+H˜Ô(Ð(Ý# E¤KÔ$4µb´jÑAÔAð 1Ø œJÐ2¸ÀÄ
Ò8J×7OÒ7OÑ7QÔ7QÐ2Ø œIÐ1°uÀÄ	Ò7I×6NÒ6NÑ6PÔ6PÐ1å",Ø Uñ#ô #ð ð ,1˜Ô(ð%1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð( ÔÐ#ØŸš uÑ-Ô-ˆDŒJð ŒzÐ%Ø.2¬j×.AÒ.AÑ.CÔ.CÑ+�” ¤  ð $Ð#ð &Ð%s   ÁDE0Å0E4Å7E4ru   údict | list | tuple | strr=   c                ó   — d S r\   rÚ   rc  s     r_   rg  zSelection.generate¤  s   € ØJMÈ#ra   c                ó   — d S r\   rÚ   rc  s     r_   rg  zSelection.generate§  s   € Ø-0¨Sra   ú dict | list | tuple | str | NoneúPyTablesExpr | Nonec                ó4  — |€dS | j                              ¦   «         }	 t          ||| j         j        ¬¦  «        S # t          $ rR}d                     |                     ¦   «         ¦  «        }t          d|› d|› d�¦  «        }t          |¦  «        |‚d}~ww xY w)z'where can be a : dict,list,tuple,stringN)r:  rW   r:  z-                The passed where expression: a*  
                            contains an invalid variable reference
                            all of the variable references must be a reference to
                            an axis (e.g. 'index' or 'columns'), or a data_column
                            The currently defined references are: z
                )	r{   r:  r=   rW   Ú	NameErrorr@  r!  r   r¹   )rä   ru   rR  r�  Úqkeysr.  s         r_   rg  zSelection.generateª  s¿   € àˆ=Ø�4àŒJ×!Ò!Ñ#Ô#ˆð	+Ý °!¸d¼jÔ>QÐRÑRÔRÐRøÝð 	+ð 	+ð 	+ð —H’H˜QŸVšV™XœXÑ&Ô&ˆEÝðØ.3ðð ð
 DIðð ð ñô ˆCõ ˜S‘/”/ sÐ*øøøøð	+øøøs   Ÿ; »
BÁABÂBc                óB  — | j         �C| j        j                             | j                              ¦   «         | j        | j        ¬¦  «        S | j        �$| j        j                             | j        ¦  «        S | j        j                             | j        | j        ¬¦  «        S )ú(
        generate the selection
        Nr—  )	rc  r{   Ú
read_wherer˜   r°   r±   ri  rN  r>  rè   s    r_   rÅ   zSelection.selectÁ  s�   € ð Œ>Ð%Ø”:Ô#×.Ò.Ø”×%Ò%Ñ'Ô'¨t¬zÀÄ	ð /ñ ô ð ð ÔÐ)Ø”:Ô#×4Ò4°TÔ5EÑFÔFÐFØŒzÔ×$Ò$¨4¬:¸D¼IÐ$ÑFÔFÐFra   c                ó>  — | j         | j        }}| j        j        }|€d}n|dk     r||z  }|€|}n|dk     r||z  }| j        �:| j        j                             | j                             ¦   «         ||d¬¦  «        S | j        �| j        S t          j	        ||¦  «        S )rs  Nr   T)r°   r±   r  )
r°   r±   r{   rE  rc  Úget_where_listr˜   ri  rc  rÔ  )rä   r°   r±   rE  s       r_   rº  zSelection.select_coordsÍ  s¾   € ð ”j $¤)ˆtˆØ”
Ô ˆØˆ=ØˆEˆEØ�QŠYˆYØ�U‰NˆEØˆ<ØˆDˆDØ�AŠXˆXØ�E‰MˆDàŒ>Ð%Ø”:Ô#×2Ò2Ø”×%Ò%Ñ'Ô'¨u¸4Àdð 3ñ ô ð ð ÔÐ)ØÔ#Ð#åŒy˜ Ñ%Ô%Ð%ra   r  )r{   r  r°   r”   r±   r”   rY   r¡   )ru   rj  rY   r=   )ru   r¡   rY   r¡   )ru   rm  rY   rn  )	rý   r  r  r  rå   r   rg  rÅ   rº  rÚ   ra   r_   ri  ri  k  s«   € € € € € ð	ð 	ð Ø Øð+Dð +Dð +Dð +Dð +DðZ ØMÐMÐMñ „XØMàØ0Ð0Ð0ñ „XØ0ð+ð +ð +ð +ð.
Gð 
Gð 
Gð&ð &ð &ð &ð &ra   ri  )rW   rX   rY   rZ   )rh   ri   )rŒ   NNFNTNNNNr…   rV   )r�   rŽ   r�   rZ   r�   r‘   r’   rZ   r“   r”   r•   rX   r–   r—   r˜   rX   r™   r—   rš   r›   rœ   r�   rž   rŸ   r    rZ   rW   rZ   rY   r¡   )	Nr®   r…   NNNNFN)r�   rŽ   r’   rZ   r    rZ   ru   r¯   r°   r”   r±   r”   r²   r³   r´   r—   rµ   r”   )rÌ   rM   rÍ   rM   rY   r—   r\   )rû  r-   rd  rP   r²  r/   rY   r-   )r)  r   rY   r$  )rœ  r(  r)  r)  r*  rZ   rY   r9   )
re   rZ   r™   r/   rW   rZ   r    rZ   rY   r%  )r«  rZ   rW   rZ   r    rZ   rY   r7  )re   rZ   rÞ  rO   r²   r  )rÍ  rR  rW   rZ   r    rZ   rY   rR  )rœ  rR  rl  rZ   rW   rZ   r    rZ   )r«  rZ   rW   rZ   r    rZ   )r«  rZ   rY   r—   )re   rZ   r5  rW  rY   rZ   )r[  rZ   rY   rZ   )rÍ  rO   )¼r  Ú
__future__r   Ú
contextlibr   rÎ  rq  r   r   rj  r½   r  Útextwrapr   Útypingr   r	   r
   r   r   r   r   r   r›  Únumpyrc  Úpandas._configr   r   r   Úpandas._libsr   r   rB  Úpandas._libs.libr   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandas.compat._optionalr   Úpandas.compat.pickle_compatr   Úpandas.errorsr   r   r   r   r   Úpandas.util._decoratorsr   r    Úpandas.util._exceptionsr!   Úpandas.core.dtypes.commonr"   r#   r$   r%   r&   r'   Úpandas.core.dtypes.dtypesr(   r)   r*   r+   Úpandas.core.dtypes.missingr,   r­   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úpandas.core.arraysr8   r9   r:   Úpandas.core.arrays.datetimesr;   Úpandas.core.arrays.string_r<   Úpandas.core.commonÚcoreÚcommonr~  Ú pandas.core.computation.pytablesr=   r>   Úpandas.core.constructionr?   r�  r@   Úpandas.core.indexes.apirA   Úpandas.io.commonrB   Úpandas.io.formats.printingrC   rD   Úcollections.abcrE   rF   rG   rH   ÚtypesrI   rJ   r†   rK   rL   rM   Úpandas._typingrN   rO   rP   rQ   rR   rS   rT   Úpandas.core.internalsrU   rI  r]   r`   rf   rg   r  rv   rw   rx   ry   rÙ  r–  r~   r   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryrƒ   rŠ   r‹   r¬   rË   rÃ   r«   rH  r%  r²  rº  r!  r*  r,  rp  rë  r×  rì  r  ró  r‰  rñ  rï  rð  rî  rò  r  r¡  r  rŸ  r´  r‚  r6  r  rf  rO  rN  rV  rÌ  rË  ri  rÚ   ra   r_   ú<module>rœ     su  ððð ð ð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ð Ð ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø %Ð %Ð %Ð %Ð %Ð %Ø >Ð >Ð >Ð >Ð >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 5Ð 4Ð 4Ð 4Ð 4Ð 4Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð 1Ð 0Ð 0Ð 0Ð 0Ð 0à +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð
 ð ,ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ,Ð+Ð+Ð+Ð+Ð+ð €ð Ð ðð ð ð ð	ð 	ð 	ð €Ð Ð Ð Ñ ð:ð :ð :ð :ð*Ð ð ð ð ñ ð!Ð ð ð ð ñ ð
€ð ð ð ñ ð  g°GÀgÐNÐN€ð ˜˜Ð€	ð€
ð ð ð ñ ð€
ð ð ð ñ ð €VÔ˜(Ñ#Ô#ð ð Ø€FÔ˜>¨5°*ÈÌÐWÑWÔWÐWØ€FÔØØØØ*�&Ô*Ð+CÐ+CÐ+CÑDÔDð	ñ ô ð ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð !%€
Ð $Ð $Ð $Ñ $Ø$)Ð !ðð ð ð4 Ø ØØØØØ04ØØØ59ØØð5ð 5ð 5ð 5ð 5ðp €ˆHÑÔð 	ØØØ#ØØØ $ØØ ð_ð _ð _ð _ñ Ôð_ðDð ð ð ð €ˆHÑÔðqð qð qð qð qñ qô qñ Ôðqðh/mð mð mð mð mñ mô mð mð`x>ð x>ð x>ð x>ð x>ñ x>ô x>ð x>ðv	ð ð ð ð �hñ ô ð ð:a9ð a9ð a9ð a9ð a9ˆhñ a9ô a9ð a9ðH	$ð $ð $ð $ð $�wñ $ô $ð $ð63ð 3ð 3ð 3ð 3Ð.ñ 3ô 3ð 3ðj?ð j?ð j?ð j?ð j?ñ j?ô j?ð j?ðZABð ABð ABð ABð AB�5ñ ABô ABð ABðH/#ð /#ð /#ð /#ð /#�,ñ /#ô /#ð /#ðd[;ð [;ð [;ð [;ð [;˜ñ [;ô [;ð [;ð|ð ð ð ð Ð"ñ ô ð ð
fDð fDð fDð fDð fDˆEñ fDô fDð fDðRHð Hð Hð Hð H�ñ Hô Hð Hð<bð bð bð bð b�eñ bô bð bðJwð wð wð wð w˜?ñ wô wð wðt.ð .ð .ð .ð .Ð0ñ .ô .ð .ðb,ð ,ð ,ð ,ð ,Ð!6ñ ,ô ,ð ,ð$@Eð @Eð @Eð @Eð @EÐ'ñ @Eô @Eð @EðF(ð (ð (ð (ð (Ð 4ñ (ô (ð (ðX 9=ðð ð ð ð ð4ð ð ð ðð ð ð ð0=Lð =Lð =Lð =Lð@ð ð ð ðBKð Kð Kð Kð\ð ð ð ð>'ð 'ð 'ð 'ðTð ð ð ð
1ð 
1ð 
1ð 
1ðð ð ð ðð ð ð ð2ð ð ð ðBð ð ð ð2x&ð x&ð x&ð x&ð x&ñ x&ô x&ð x&ð x&ð x&s   Æ">G,Ç,G0Ç3G0