§
    yhþhµÅ ã            
      ó.  — 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 ddlZddlZddlmZ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l2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO ddlPmQZQmRZRmSZS ddlTmUZU ddlVmWc mXZY ddlZm[Z[m\Z\ ddl]m^Z_m`Z` ddlambZb ddlcmdZdmeZe ddlfmgZg ddlhmiZimjZj er4ddlkmlZlmmZmmnZn ddlompZp dd lqmrZrmsZsmtZt dd!lumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z} dd"lcm~Z~ d#Zd$Z€d%„ Z�d¿d*„Z‚d+„ Zƒe[Z„dÀd.„Z…d/Z†d0e‡d1<   d2Zˆd0e‡d3<   d4Z‰d0e‡d5<   d6d6d7d7d8œZŠeEdgiZ‹d9ZŒd0e‡d:<   d;Z�d0e‡d<<    ejŽ        d=¦  «        5   ej�        d>d?eŒej�        ¬@¦  «          ej�        dAde� ej‘        g dB¢¦  «        ¬@¦  «         ddd¦  «         n# 1 swxY w Y   da’d?a“dC„ Z”	 	 	 	 	 	 	 	 	 	 	 	 dÁdÂd\„Z•	 	 	 	 	 	 	 	 	 dÃdÄdf„Z–dÅdj„Z— G dk„ dl¦  «        Z˜ G dm„ dn¦  «        Z™ G do„ dp¦  «        Zš G dq„ dreš¦  «        Z› G ds„ dteš¦  «        Zœ G du„ dveœ¦  «        Z� G dw„ dxe�¦  «        Zž G dy„ dz¦  «        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­e	 dÉdÊd¢„¦   «         Z®edÉdËd¤„¦   «         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¹ 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ÚCallableÚFinalÚLiteralÚcastÚoverload)ÚconfigÚ
get_optionÚusing_copy_on_writeÚusing_string_dtype)ÚlibÚwriters)Úis_string_array)Ú	timezones)ÚHAS_PYARROW)Úimport_optional_dependency)Úpatch_pickle)ÚAttributeConflictWarningÚClosedFileErrorÚIncompatibilityWarningÚPerformanceWarningÚPossibleDataLossError)Úcache_readonly)Ú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)ÚBaseStringArray)ÚPyTablesExprÚmaybe_expression)ÚarrayÚextract_array)Úensure_index)ÚArrayManagerÚBlockManager)Ústringify_path)ÚadjoinÚpprint_thing)ÚHashableÚIteratorÚSequence)ÚTracebackType)ÚColÚFileÚNode)ÚAnyArrayLikeÚ	ArrayLikeÚAxisIntÚDtypeArgÚFilePathÚSelfÚShapeÚnpt)ÚBlockz0.15.2úUTF-8c                ód   — t          | t          j        ¦  «        r|                      d¦  «        } | S )z(if we have bytes, decode them to unicoderU   )Ú
isinstanceÚnpÚbytes_Údecode)Úss    úI/var/www/histauto/venv/lib/python3.11/site-packages/pandas/io/pytables.pyÚ_ensure_decodedr]   ’   s,   € å�!•R”YÑÔð Ø�HŠH�WÑÔˆØ€Hó    Úencodingú
str | NoneÚreturnÚstrc                ó   — | €t           } | S ©N)Ú_default_encoding©r_   s    r\   Ú_ensure_encodingrg   ™   s   € àÐÝ$ˆà€Or^   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
    )rW   rb   ©Únames    r\   Ú_ensure_strrk   ¡   s&   € õ �$�ÑÔð Ý�4‰yŒyˆØ€Kr^   Ú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 )Nro   ©rl   )r<   ÚTerm)Ú.0ÚtermÚlevels     €r\   ú
<listcomp>z _ensure_term.<locals>.<listcomp>»   sM   ø€ ð 
ð 
ð 
àØÐõ 2BÀ$Ñ1GÔ1GÐQ�D� 5¨1¡9Ð-Ñ-Ô-Ð-ÈTàÐÐr^   rq   N)rW   ÚlistÚtupler<   rr   Úlen)Úwhererl   ru   s     @r\   Ú_ensure_termr{   °   sŠ   ø€ ð ˜!‰O€EÝ�%�$¥˜Ñ'Ô'ð /ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆˆõ
 
˜%Ñ	 Ô	 ð /Ý�U¨Ð.Ñ.Ô.ˆØ�M¥S¨¡Z¤Z�Mˆ5ˆ5°TÐ9r^   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)Úfr   Ú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)r   r€   Nc                 ó¢   — 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)Ú
_table_modÚ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          | t          ¦  «        r9t          | |||¬¦  «        5 } ||¦  «         ddd¦  «         dS # 1 swxY w Y   dS  || ¦  «         dS )z+store this object, close it if we opened itc                óB   •
— |                       ‰‰
‰‰‰‰	‰‰‰‰¬¦
  «
        S )N)r�   rž   rŸ   Únan_repr¡   r£   r¥   r_   )r›   ©Ústorer£   r¡   r_   r¥   r�   rž   r”   rŸ   r©   r•   s    €€€€€€€€€€r\   ú<lambda>zto_hdf.<locals>.<lambda>  s8   ø€ ˜%Ÿ,š,ØØØØØ%ØØØ%ØØð 'ñ 
ô 
€ r^   c                óB   •
— |                       ‰‰
‰‰‰‰	‰‰‰‰¬¦
  «
        S )N)r�   rž   rŸ   r©   r£   r¥   r_   r¡   ©Úputrª   s    €€€€€€€€€€r\   r¬   zto_hdf.<locals>.<lambda>+  s8   ø€ ˜%Ÿ)š)ØØØØØ%ØØ%ØØØð $ñ 
ô 
€ r^   )r—   r˜   rš   N)rB   rW   rb   ÚHDFStore)r’   r”   r•   r—   r˜   rš   r›   r�   rž   rŸ   r©   r¡   r£   r¥   r_   r�   r«   s    ``    ````````  r\   Úto_hdfr±   
  s_  øøøøøøøøøø€ ð$ ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆˆð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ ! Ñ-Ô-€KÝ�+�sÑ#Ô#ð ÝØ˜d¨iÀð
ñ 
ô 
ð 	àØˆAˆe‰HŒHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð
 	
ˆˆ+‰Œˆˆˆs   Á!A:Á:A>ÂA>Úrrz   ú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 a 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.Nro   rq   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.)rz   r´   rµ   r¶   r¸   r¹   Ú
auto_close)Ú
ValueErrorr{   rW   r°   Úis_openÚOSErrorrB   rb   ÚNotImplementedErrorÚosÚpathÚexistsÚ	TypeErrorÚFileNotFoundErrorÚgroupsry   Ú_is_metadata_ofÚ_v_pathnameÚselectÚLookupErrorr   rŒ   Úclose)r’   r”   r—   r¥   rz   r´   rµ   r¶   r¸   r¹   Úkwargsr«   r¼   rÃ   rÆ   Úcandidate_only_groupÚgroup_to_checks                    r\   Úread_hdfrÏ   B  sÉ  € ðl Ð#Ð#Ð#Ýð.�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.ÚgrouprK   Ú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.Fro   ÚmetaT)Ú_v_depthÚ	_v_parentÚ_v_name)rÐ   rÑ   ÚcurrentÚparents       r\   rÇ   rÇ   ä  sm   € à„~˜Ô.Ò.Ð.Øˆuà€GØ
Ô
˜QÒ
Ð
ØÔ"ˆØ�\Ò!Ð! g¤o¸Ò&?Ð&?Ø�4ØÔ#ˆð	 Ô
˜QÒ
Ð
ð
 ˆ5r^   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dxd„Zdyd„Zdzd„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ŠdxdM„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°   aS	  
    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Ú_handlerb   Ú_moder‘   NFr—   r˜   r™   Ú
fletcher32rœ   ra   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__7  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Ð&Ð&Ð&Ð&Ð&r^   c                ó   — | j         S rd   ©râ   ©rè   s    r\   Ú
__fspath__zHDFStore.__fspath__X  s
   € ØŒzÐr^   c                óT   — |                       ¦   «          | j        €J ‚| j        j        S )zreturn the root node)Ú_check_if_openrÚ   Úrootrì   s    r\   rð   zHDFStore.root[  s/   € ð 	×ÒÑÔÐØŒ|Ð'Ð'Ð'ØŒ|Ô Ð r^   c                ó   — | j         S rd   rë   rì   s    r\   ÚfilenamezHDFStore.filenameb  ó
   € àŒzÐr^   r”   c                ó,   — |                       |¦  «        S rd   )Úget©rè   r”   s     r\   Ú__getitem__zHDFStore.__getitem__f  s   € Ø�xŠx˜‰}Œ}Ðr^   c                ó2   — |                       ||¦  «         d S rd   r®   )rè   r”   r•   s      r\   Ú__setitem__zHDFStore.__setitem__i  s   € Ø�Š��eÑÔÐÐÐr^   c                ó,   — |                       |¦  «        S rd   )Úremoverö   s     r\   Ú__delitem__zHDFStore.__delitem__l  s   € Ø�{Š{˜3ÑÔÐr^   rj   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è   rj   s     r\   Ú__getattr__zHDFStore.__getattr__o  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 '/'
        Nro   TF)Úget_noderÈ   )rè   r”   Únoderj   s       r\   Ú__contains__zHDFStore.__contains__y  sE   € ð
 �}Š}˜SÑ!Ô!ˆØÐØÔ#ˆDØ�t˜T ! " "œXÐ&Ð&Ð&Ø�tØˆur^   rm   c                óD   — t          |                      ¦   «         ¦  «        S rd   )ry   rÆ   rì   s    r\   Ú__len__zHDFStore.__len__…  s   € Ý�4—;’;‘=”=Ñ!Ô!Ð!r^   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Ð3r^   rQ   c                ó   — | S rd   rÞ   rì   s    r\   Ú	__enter__zHDFStore.__enter__Œ  s   € Øˆr^   Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | Nonec                ó.   — |                       ¦   «          d S rd   )rË   )rè   r  r  r  s       r\   Ú__exit__zHDFStore.__exit__�  s   € ð 	�
Š
‰Œˆˆˆr^   ÚpandasÚincludeú	list[str]c                óÚ   — |dk    rd„ |                       ¦   «         D ¦   «         S |dk    r/| j        €J ‚d„ | j                             dd¬¦  «        D ¦   «         S t          d	|› d
�¦  «        ‚)aƒ  
        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

        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È   ©rs   Úns     r\   rv   z!HDFStore.keys.<locals>.<listcomp>¶  s   € Ð9Ð9Ð9 a�A”MÐ9Ð9Ð9r^   ÚnativeNc                ó   — g | ]	}|j         ‘Œ
S rÞ   r  r  s     r\   rv   z!HDFStore.keys.<locals>.<listcomp>º  s'   € ð ð ð Ø"#�”ðð ð r^   ú/Ú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ÒÐØ9Ð9¨4¯;ª;©=¬=Ð9Ñ9Ô9Ð9à˜Ò Ð Ø”<Ð+Ð+Ð+ðð Ø'+¤|×'>Ò'>¸sÈgÐ'>Ñ'VÔ'Vðñ ô ð õ ØQÀwÐQÐQÐQñ
ô 
ð 	
r^   úIterator[str]c                óD   — t          |                      ¦   «         ¦  «        S rd   )Úiterr&  rì   s    r\   Ú__iter__zHDFStore.__iter__Á  s   € Ý�D—I’I‘K”KÑ Ô Ð r^   ú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Ø”- Ð"Ð"Ð"Ð"Ð"ð	#ð 	#r^   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»   )r0  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ˆŒˆˆr^   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×ÒÑ Ô Ð ØˆŒˆˆr^   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Ô'Ñ(Ô(Ð(r^   Ú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Á   r7  Úfileno)rè   r7  s     r\   r9  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

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

        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µ   € õ* ‰^Œ^ð 	+ð 	+ð —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 )a6  
        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.

        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
        Nr<  r=  ro   rq   c                ó6   •— ‰                      | ||‰¬¦  «        S )N)r´   rµ   rz   r¶   ©Úread)Ú_startÚ_stopÚ_wherer¶   r[   s      €€r\   ÚfunczHDFStore.select.<locals>.func†  s   ø€ Ø—6’6 ¨U¸&È'�6ÑRÔRÐRr^   ©rz   Únrowsr´   rµ   r¸   r¹   r¼   )r  rÿ   r{   Ú_create_storerÚ
infer_axesÚTableIteratorrI  Ú
get_result)rè   r”   rz   r´   rµ   r¶   r¸   r¹   r¼   rÐ   rG  Úitr[   s        `      @r\   rÉ   zHDFStore.select<  sÕ   øø€ ð@ —’˜cÑ"Ô"ˆØˆ=ÝÐ?¨cÐ?Ð?Ð?Ñ@Ô@Ð@õ ˜U°Ð2Ñ2Ô2ˆØ×Ò Ñ&Ô&ˆØ	�Š‰Œˆð	Sð 	Sð 	Sð 	Sð 	Sð 	Sõ ØØØØØ”'ØØØØØ!ð
ñ 
ô 
ˆð �}Š}‰ŒÐr^   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
        ro   rq   z&can only read_coordinates with a table©rz   r´   rµ   )r{   Ú
get_storerrW   r#  rÄ   Úread_coordinates)rè   r”   rz   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ÐHr^   Ú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)rU  r´   rµ   )rQ  rW   r#  rÄ   Úread_column)rè   r”   rU  r´   rµ   rS  s         r\   Úselect_columnzHDFStore.select_column¹  sP   € ðF �oŠo˜cÑ"Ô"ˆÝ˜#�uÑ%Ô%ð 	AÝÐ?Ñ@Ô@Ð@Ø�Š f°EÀˆÑEÔEÐEr^   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 ]]\  }}|€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
        ro   rq   r   )r”   rz   r¶   r´   rµ   r¸   r¹   r¼   zkeys must be a list/tuplez keys must have a non-zero lengthNc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÞ   )rQ  )rs   Úkrè   s     €r\   rv   z/HDFStore.select_as_multiple.<locals>.<listcomp>%  s%   ø€ Ð1Ð1Ð1 q�—’ Ñ"Ô"Ð1Ð1Ð1r^   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Þ   )rW   r#  ©rs   Úxs     r\   rv   z/HDFStore.select_as_multiple.<locals>.<listcomp>:  s'   € Ð9Ð9Ð9�q¥J¨qµ%Ñ$8Ô$8Ð9�Ð9Ð9Ð9r^   c                ó4   — h | ]}|j         d          d          ’ŒS ©r   )Únon_index_axes)rs   r‚   s     r\   ú	<setcomp>z.HDFStore.select_as_multiple.<locals>.<setcomp>=  s%   € Ð6Ð6Ð6¨1�Ô  Ô# AÔ&Ð6Ð6Ð6r^   c                ót   •‡ ‡‡— ˆ ˆˆˆfd„‰D ¦   «         }t          |‰d¬¦  «                             ¦   «         S )Nc                óB   •— g | ]}|                      ‰‰‰‰¬ ¦  «        ‘ŒS )©rz   r¶   r´   rµ   rB  )rs   r‚   rD  rE  rF  r¶   s     €€€€r\   rv   z=HDFStore.select_as_multiple.<locals>.func.<locals>.<listcomp>B  s=   ø€ ð ð ð àð —’˜V¨W¸FÈ�ÑOÔOðð ð r^   F)ÚaxisÚverify_integrity)r5   Ú_consolidate)rD  rE  rF  Úobjsrg  r¶   Útblss   ``` €€€r\   rG  z)HDFStore.select_as_multiple.<locals>.func?  s`   øøøø€ ðð ð ð ð ð ð àðñ ô ˆDõ ˜$ T¸EÐBÑBÔB×OÒOÑQÔQÐQr^   rH  T)Úcoordinates)r{   rW   rw   rx   ry   rb   rÉ   rÄ   r½   rQ  Ú	itertoolsÚchainÚziprÿ   Úis_tableÚpathnamerI  ÚpoprL  rM  )rè   r&  rz   Úselectorr¶   r´   rµ   r¸   r¹   r¼   r[   rI  r‚   r[  Ú_tblsrG  rN  rg  rk  s   `   `            @@r\   Úselect_as_multiplezHDFStore.select_as_multipleá  sq  øøøø€ õ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±_´_ÑEÔEð 	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õ ØØØØØØØØØØ!ð
ñ 
ô 
ˆð �}Š}¨ˆ}Ñ.Ô.Ð.r^   Tr‰   r•   r–   rž   r›   rŸ   r    r£   r¤   r¥   Útrack_timesr¡   c                óœ   — |€t          d¦  «        pd}|                      |¦  «        }|                      |||||||||	|
||||¬¦  «         dS )a¬  
        Store object in HDFStore.

        Parameters
        ----------
        key : str
        value : {Series, DataFrame}
        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.
        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.
        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.

        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_formatr   )r�   rž   r›   rš   r˜   rŸ   r©   r£   r_   r¥   rv  r¡   )r   Ú_validate_formatÚ_write_to_group)rè   r”   r•   r�   rž   r›   rš   r˜   rŸ   r©   r£   r_   r¥   rv  r¡   s                  r\   r¯   zHDFStore.putZ  s�   € ðp ˆ>ÝÐ 7Ñ8Ô8ÐC¸GˆFØ×&Ò& vÑ.Ô.ˆØ×ÒØØØØØØØØ%ØØ%ØØØ#Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r^   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

        ro   rq   Nz5trying to remove a node with a non-None where clause!T©Ú	recursivez7can only remove with where on objects written as tablesrP  )r{   rQ  rÿ   ÚAssertionErrorÚ	Exceptionr½   r  Ú	_f_removeÚcomÚall_nonerÐ   rp  Údelete)rè   r”   rz   r´   rµ   r[   Úerrr  s           r\   rû   zHDFStore.remove¦  sU  € õ* ˜U°Ð2Ñ2Ô2ˆð	Ø—’ Ñ$Ô$ˆAˆAøÝð 	ð 	ð 	àÝð 	ð 	ð 	àÝð 	ð 	ð 	ð Ð Ý ØKñô àðð
 —=’= Ñ%Ô%ˆDØÐØ—’¨�Ñ.Ô.Ð.Ø�t�t�t�t�tð  ÐÐÐÐøøøøð	øøøõ  Œ<˜˜u dÑ+Ô+ð 		AØŒG×Ò¨ÐÑ-Ô-Ð-Ð-Ð-ð ”:ð Ý ØMñô ð ð —8’8 %¨u¸4�8Ñ@Ô@Ð@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
        value : {Series, DataFrame}
        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.
        index : bool, default True
            Write DataFrame index as a column.
        append       : bool, default True
            Append the input data to the existing.
        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>`__.
        min_itemsize : dict of columns that specify minimum str sizes
        nan_rep      : str to use as str nan representation
        chunksize    : size to chunk the writing
        expectedrows : expected TOTAL row size of this table
        encoding     : default None, provide an encoding for str
        dropna : bool, default False, optional
            Do not write an ALL nan row to the store settable
            by the option 'io.hdf.dropna_table'.

        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_tablerx  r€   )r�   Úaxesrž   r›   rš   r˜   rŸ   r©   r¹   Úexpectedrowsr¡   r£   r_   r¥   )rÄ   r   ry  rz  )rè   r”   r•   r�   r‡  rž   r›   rš   r˜   r¶   rŸ   r©   r¹   rˆ  r¡   r£   r_   r¥   s                     r\   r›   zHDFStore.appendß  s·   € ðR ÐÝØPñô ð ð ˆ>ÝÐ 5Ñ6Ô6ˆFØˆ>ÝÐ 7Ñ8Ô8ÐC¸GˆFØ×&Ò& vÑ.Ô.ˆØ×ÒØØØØØØØØØ%ØØØ%ØØ%ØØð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
r^   Ú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ž   )rs   Ú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ÐOr^   rŸ   ©rg  c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS rÞ   rÞ   )rs   r”   r•   Úvs      €r\   ú
<dictcomp>z/HDFStore.append_to_multiple.<locals>.<dictcomp>   s$   ø€ ÐQÐQÐQ¡  eÈÈqÈÈ��eÈÈÈr^   )r£   rŸ   )rÄ   rW   rŠ  r½   Únextr)  ÚsetÚrangeÚndimÚ	_AXES_MAPr   r.  Úextendr‡  Ú
differencer.   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocrr  Úreindexr›   )rè   r‰  r•   rs  r£   r‡  r¡   rÌ   rg  Ú
remain_keyÚremain_valuesr[  ÚorderedÚorddÚidxsÚvalid_indexrž   rŸ   ÚdcÚvalÚfilteredr“  s     `                  @r\   Úappend_to_multiplezHDFStore.append_to_multipleE  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r^   ÚoptlevelÚkindr`   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�   rQ  rW   r#  rÄ   Úcreate_index)rè   r”   r¶   r­  r®  r[   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ÐEr^   rw   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.

        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€   )	rW   rŠ   ÚlinkÚLinkÚgetattrÚ_v_attrsr€   r#  rÖ   )rs   r-  s     r\   rv   z#HDFStore.groups.<locals>.<listcomp>è  s–   € ð 
ð 
ð 
àå˜q¥*¤/Ô"6Ñ7Ô7ð	
õ ˜AœJ¨°tÑ<Ô<ð
õ ˜q '¨4Ñ0Ô0ð
õ # 1¥jÔ&6Ô&<Ñ=Ô=ð
ð CDÄ)ÈwÒBVÐBVð ð CWÐBVÐBVr^   )r�   rï   rÚ   rŠ   Úwalk_groupsrì   s    r\   rÆ   zHDFStore.groupsÎ  sh   € õ, 	‰	Œ	ˆ	Ø×ÒÑÔÐØŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%ð
ð 
à”\×-Ò-Ñ/Ô/ð
ñ 
ô 
ð 	
r^   r"  rz   ú*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`.

        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Ÿ  rW   rÐ   ÚGroupr›   rÖ   rÈ   Úrstrip)rè   rz   r-  rÆ   ÚleavesÚchildr´  s          r\   ÚwalkzHDFStore.walkõ  s(  è è € õN 	‰	Œ	ˆ	Ø×ÒÑÔÐØŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%à”×)Ò)¨%Ñ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Ð=Ð=Ð=Ð=Ð=ð	>ð 	>r^   ú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ÚNoSuchNodeErrorrW   rK   r   )rè   r”   r  s      r\   r  zHDFStore.get_node1  sÀ   € à×ÒÑÔÐØ�~Š~˜cÑ"Ô"ð 	Ø˜‘)ˆCàŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%ð	Ø”<×(Ò(¨¬°CÑ8Ô8ˆDˆDøÝÔ$Ô4ð 	ð 	ð 	Ø�4�4ð	øøøõ ˜$¥
¤Ñ0Ô0Ð<Ð<µ$°t±*´*Ñ<Ô<Ð<Øˆs   Á A# Á#A;Á:A;úGenericFixed | Tablec                ó¬   — |                       |¦  «        }|€t          d|› d�¦  «        ‚|                      |¦  «        }|                     ¦   «          |S )z<return the storer object for a key, raise if not in the fileNr<  r=  )r  rÿ   rJ  rK  )rè   r”   rÐ   r[   s       r\   rQ  zHDFStore.get_storerA  sW   € à—’˜cÑ"Ô"ˆØˆ=ÝÐ?¨cÐ?Ð?Ð?Ñ@Ô@Ð@à×Ò Ñ&Ô&ˆØ	�Š‰ŒˆØˆr^   r0  Ú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_indexedrj   ©rs   r‘   s     r\   rv   z!HDFStore.copy.<locals>.<listcomp>y  s!   € Ð HÐ HÐ H¨A¸1¼<Ð H ¤Ð HÐ HÐ Hr^   r£   )rž   r£   r_   rf   )r°   rw   r&  rW   rx   rQ  rû   rÉ   r#  r‡  r›   r·  r_   r¯   )rè   r�   r—   rÉ  r&  rš   r˜   rÜ   rÊ  Ú	new_storer[  r[   Údatarž   s                 r\   ÚcopyzHDFStore.copyK  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Ñ?Ô?Ð?øàÐr^   c                ó   — t          | j        ¦  «        }t          | ¦  «        › d|› d�}| j        �rt	          |                      ¦   «         ¦  «        }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

        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.info())  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        <class 'pandas.io.pytables.HDFStore'>
        File path: store.h5
        /data    frame    (shape->[2,2])
        r
  r  Nzinvalid_HDFStore nodez[invalid_HDFStore node: r\  é   ÚEmptyzFile is CLOSED)rD   râ   r   r¾   rœ  r&  ry   rQ  r›   rq  r~  r  rC   )
rè   rÂ   ÚoutputÚlkeysr&  rŸ  r[  r[   ÚdetailÚdstrs
             r\   ÚinfozHDFStore.info†  s‹  € õ& ˜DœJÑ'Ô'ˆÝ˜‘J”JÐ5Ð5¨TÐ5Ð5Ð5ˆàŒ<ñ 	'Ý˜4Ÿ9š9™;œ;Ñ'Ô'ˆEÝ�5‰zŒzð "Ø�Ø�àð 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r^   r�   c                ó”   — 	 t           |                     ¦   «                  }n&# t          $ r}t          d|› d�¦  «        |‚d}~ww xY w|S )zvalidate / deprecate formatsz#invalid HDFStore format specified [r\  N)Ú_FORMAT_MAPÚlowerrÿ   rÄ   )rè   r�   r„  s      r\   ry  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rU   úDataFrame | Series | Noner_   c           	     ó‚  — |�+t          |t          t          f¦  «        st          d¦  «        ‚t	          t          |j        dd¦  «        ¦  «        }t	          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->©r_   r¥   Úseries_tablerž   ro   Úappendable_seriesÚappendable_multiseriesÚappendable_frameÚappendable_multiframe)râ  ré  rê  rë  rì  Úwormz<cannot properly create the storer for: [_TABLE_MAP] [group->)rW   r2   r,   rÄ   r]   r·  r¸  r�   rŠ   r€   r#  ÚSeriesFixedÚ
FrameFixedrÿ   r   ÚnlevelsÚGenericTableÚAppendableSeriesTableÚAppendableMultiSeriesTableÚAppendableFrameTableÚAppendableMultiFrameTableÚ	WORMTable)rè   rÐ   r�   r•   r_   r¥   ÚptÚttÚ_STORER_MAPÚclsr„  rž   Ú
_TABLE_MAPs                r\   rJ  zHDFStore._create_storerÉ  s  € ð Ð¥Z°½Å	Ð7JÑ%KÔ%KÐÝÐFÑGÔGÐGå�W U¤^°]ÀDÑIÔIÑJÔJˆÝ�W U¤^°\À4ÑHÔHÑIÔIˆð ˆ:Øˆ}Ý‘	”	�	Ý!Ð-Ð-Ð-Ý˜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   ÄD Ä
E
Ä&EÅE
Ç1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ç  r   zCan only append to Tablesz0Compression not supported on Fixed format stores)Úobjr‡  r›   rš   r˜   rÜ   rŸ   r¹   rˆ  r¡   r©   r£   rv  )r¶   )r·  Ú_identify_grouprJ  rp  Ú	is_existsr½   Úset_object_infoÚwriterW   r#  r°  )rè   r”   r•   r�   r‡  rž   r›   rš   r˜   rÜ   rŸ   r¹   rˆ  r¡   r©   r£   r_   r¥   rv  rÐ   r[   s                        r\   rz  zHDFStore._write_to_group$  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Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*ð 	*ð 	*r^   rÐ   rK   c                ó|   — |                       |¦  «        }|                     ¦   «          |                     ¦   «         S rd   )rJ  rK  rC  )rè   rÐ   r[   s      r\   r>  zHDFStore._read_groupb  s/   € Ø×Ò Ñ&Ô&ˆØ	�Š‰ŒˆØ�vŠv‰xŒxˆr^   c                ó´   — |                       |¦  «        }| j        €J ‚|� |s| j                             |d¬¦  «         d}|€|                      |¦  «        }|S )z@Identify HDF5 group based on key, delete/create group if needed.NTr|  )r  rÚ   Úremove_nodeÚ_create_nodes_and_group)rè   r”   r›   rÐ   s       r\   rÿ  zHDFStore._identify_groupg  sm   € à—’˜cÑ"Ô"ˆð Œ|Ð'Ð'Ð'ð Ð VÐØŒL×$Ò$ U°dÐ$Ñ;Ô;Ð;ØˆEàˆ=Ø×0Ò0°Ñ5Ô5ˆEàˆr^   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Ú   Úsplitry   Úendswithr  Úcreate_group)rè   r”   ÚpathsrÂ   ÚpÚnew_pathrÐ   s          r\   r  z HDFStore._create_nodes_and_groupy  sª   € ð Œ|Ð'Ð'Ð'à—	’	˜#‘”ˆàˆØð 
	ð 
	ˆAÝ�q‘6”6ð ØØˆHØ—=’= Ñ%Ô%ð  Ø˜C‘�Ø˜‰MˆHØ—M’M (Ñ+Ô+ˆEØˆ}Øœ×1Ò1°$¸Ñ:Ô:�ØˆDˆDØˆr^   )r‘   NNF)r—   rb   r˜   r™   rÜ   rœ   ra   r¦   ©ra   rb   ©r”   rb   )r”   rb   ra   r¦   )rj   rb   )r”   rb   ra   rœ   ©ra   rm   )ra   rQ   )r  r  r  r  r  r  ra   r¦   )r  )r  rb   ra   r  )ra   r'  )ra   r+  )r‘   )r—   rb   ra   r¦   ©ra   r¦   ©ra   rœ   ©F)r7  rœ   ra   r¦   )NNNNFNF)r”   rb   r¸   rœ   r¹   r™   r¼   rœ   ©NNN©r”   rb   r´   r™   rµ   r™   ©NN)r”   rb   rU  rb   r´   r™   rµ   r™   )NNNNNFNF)r¸   rœ   r¹   r™   r¼   rœ   )NTFNNNNNNr‰   TF)r”   rb   r•   r–   rž   rœ   r›   rœ   r˜   r™   rŸ   r    r£   r¤   r¥   rb   rv  rœ   r¡   rœ   ra   r¦   )NNTTNNNNNNNNNNr‰   )r”   rb   r•   r–   rž   r…  r›   rœ   r˜   r™   rŸ   r    r¹   r™   r¡   r¢   r£   r¤   r¥   rb   ra   r¦   )NNF)r‰  rŠ  r¡   rœ   ra   r¦   )r”   rb   r­  r™   r®  r`   ra   r¦   )ra   rw   )r"  )rz   rb   ra   rº  )r”   rb   ra   rÂ  )r”   rb   ra   rÇ  )r0  TNNNFT)r—   rb   rÉ  rœ   r˜   r™   rÜ   rœ   rÊ  rœ   ra   r°   )r�   rb   ra   rb   )NNrU   r‰   )r•   rÞ  r_   rb   r¥   rb   ra   rÇ  )NTFNNNNNNFNNNr‰   T)r”   rb   r•   r–   rž   r…  r›   rœ   r˜   r™   rŸ   r    r¹   r™   r¡   rœ   r¥   rb   rv  rœ   ra   r¦   )rÐ   rK   )r”   rb   r›   rœ   ra   rK   )r”   rb   ra   rK   )1r  Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__ré   rí   Úpropertyrð   rò   r÷   rù   rü   r  r  r  r  r  r  r&  r*  r.  rç   rË   r¾   r9  rõ   rÉ   rT  rX  ru  r¯   rû   r›   r¬  r±  rÆ   rÁ  r  rQ  rÑ  rÙ  rï   ry  rJ  rz  r>  rÿ  r  rÞ   r^   r\   r°   r°   ò  sq  € € € € € € ð?ð ?ðB ÐÐÑØ€J€J�Jð
 Ø $ØØ ð'ð 'ð 'ð 'ð 'ðBð ð ð ð ð!ð !ñ „Xð!ð ðð ð ñ „Xððð ð ð ðð ð ð ð ð  ð  ð  ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð"ð "ð "ð "ð4ð 4ð 4ð 4ðð ð ð ðð ð ð ð(
ð (
ð (
ð (
ð (
ðT!ð !ð !ð !ð#ð #ð #ð #ð+Jð +Jð +Jð +Jð +JðZð ð ð ð ð)ð )ð )ñ „Xð)ð4ð 4ð 4ð 4ð 4ð,+ð +ð +ð +ð@ ØØØØØ $Ø ð[ð [ð [ð [ð [ð@ Ø ØðIð Ið Ið Ið IðH !Øð&Fð &Fð &Fð &Fð &FðV ØØØØØØ $Ø ðw/ð w/ð w/ð w/ð w/ðz ØØØØ $Ø48ØØ9=ØØØ ØðJ
ð J
ð J
ð J
ð J
ðX7Að 7Að 7Að 7Að 7Aðz ØØ"&ØØØ $ØØ48ØØ $ØØ"Ø9=ØØð%d
ð d
ð d
ð d
ð d
ðV ØØð_Rð _Rð _Rð _Rð _RðH Ø#Øð&Fð &Fð &Fð &Fð &FðP%
ð %
ð %
ð %
ðN:>ð :>ð :>ð :>ð :>ðxð ð ð ð ð ð ð ð Ø ØØØ $Ø Øð9ð 9ð 9ð 9ð 9ðv0ð 0ð 0ð 0ðjEð Eð Eð Eðð ð ð ð Ø+/ØØðYBð YBð YBð YBð YBð@ Ø"&ØØØ $ØØ48Ø $ØØØØØØØ ð'<*ð <*ð <*ð <*ð <*ð|ð ð ð ð
ð ð ð ð$ð ð ð ð ð r^   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 )rL  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Ç  r[   NFr¸   rœ   r¼   ra   r¦   c                ó  — || _         || _        || _        || _        | j        j        r|€d}|€d}|€|}t          ||¦  «        }|| _        || _        || _        d | _	        |s|	�|	€d}	t          |	¦  «        | _        nd | _        |
| _        d S )Nr   é † )r«   r[   rG  rz   rp  ÚminrI  r´   rµ   rl  rm   r¹   r¼   )rè   r«   r[   rG  rz   rI  r´   rµ   r¸   r¹   r¼   s              r\   ré   zTableIterator.__init__§  s±   € ð ˆŒ
ØˆŒØˆŒ	ØˆŒ
ð Œ6Œ?ð 	$Øˆ}Ø�Øˆ}Ø�Øˆ|Ø�Ý�u˜dÑ#Ô#ˆDàˆŒ
ØˆŒ
ØˆŒ	àˆÔØð 	"�yÐ,ØÐ Ø"�	Ý  ™^œ^ˆDŒNˆNà!ˆDŒNà$ˆŒˆˆr^   rF   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´   rl  r½   rµ   r  r¹   rG  ry   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ð ˜œ	Ò!Ð!ð 	�
Š
‰Œˆˆˆr^   c                óJ   — | j         r| j                             ¦   «          d S d S rd   )r¼   r«   rË   rì   s    r\   rË   zTableIterator.closeá  s0   € ØŒ?ð 	ØŒJ×ÒÑÔÐÐÐð	ð 	r^   rl  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)rz   z$can only read_coordinates on a tablerP  )r¹   rW   r[   r#  rÄ   rR  rz   rl  r´   rµ   rG  rË   )rè   rl  rz   Úresultss       r\   rM  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ˆØ�
Š
‰ŒˆØˆr^   )NNFNF)r«   r°   r[   rÇ  r¸   rœ   r¹   r™   r¼   rœ   ra   r¦   ©ra   rF   r  r  )rl  rœ   )	r  r  r  r  r  ré   r*  rË   rM  rÞ   r^   r\   rL  rL  �  s¯   € € € € € € ðð ð& ÐÐÑØ€O€O�OØÐÐÑð ØØØ $Ø ð(%ð (%ð (%ð (%ð (%ðTð ð ð ð ð ð ð ðð ð ð ð ð ð r^   rL  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_nameNrj   rb   Úcnamer`   ra   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.)rW   rb   r½   rŸ  r®  Útyprj   r,  rg  Úposr)  r*  r+  r¥  r€   rÓ   ÚmetadataÚset_pos)rè   rj   rŸ  r®  r.  r,  rg  r/  r)  r*  r+  r¥  r€   rÓ   r0  s                  r\   ré   zIndexCol.__init__  sÚ   € õ" ˜$¥Ñ$Ô$ð 	6ÝÐ4Ñ5Ô5Ð5àˆŒØˆŒ	ØˆŒØˆŒ	Ø�]˜dˆŒ
ØˆŒ	ØˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒØˆŒ
ØˆŒ	Ø ˆŒàˆ?Ø�LŠL˜ÑÔÐõ ˜$œ)¥SÑ)Ô)Ð)Ð)Ð)Ý˜$œ*¥cÑ*Ô*Ð*Ð*Ð*Ð*Ð*r^   rm   c                ó   — | j         j        S rd   )r.  Úitemsizerì   s    r\   r3  zIndexCol.itemsize<  s   € ð ŒxÔ Ð r^   c                ó   — | j         › d�S )NÚ_kindri   rì   s    r\   Ú	kind_attrzIndexCol.kind_attrA  ó   € à”)Ð"Ð"Ð"Ð"r^   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\   r1  zIndexCol.set_posE  s/   € àˆŒØˆ?˜tœxÐ3Ø!ˆDŒHŒOˆOˆOð ˆ?Ð3Ð3r^   c           
     óà   — t          t          t          | j        | j        | j        | j        | j        f¦  «        ¦  «        }d                     d„ t          g d¢|¦  «        D ¦   «         ¦  «        S )Nú,c                ó"   — g | ]\  }}|› d |› �‘ŒS ©z->rÞ   ©rs   r”   r•   s      r\   rv   z%IndexCol.__repr__.<locals>.<listcomp>P  ó:   € ð ð ð á�C˜ð Ð!Ð!˜%Ð!Ð!ðð ð r^   )rj   r,  rg  r/  r®  )
rx   ÚmaprD   rj   r,  rg  r/  r®  Újoinro  ©rè   Útemps     r\   r  zIndexCol.__repr__K  sy   € ÝÝ•˜tœy¨$¬*°d´iÀÄÈ4Ì9ÐUÑVÔVñ
ô 
ˆð �xŠxðð å"%Ð&NÐ&NÐ&NÐPTÑ"UÔ"Uðñ ô ñ
ô 
ð 	
r^   ÚotherÚobjectc                ó>   ‡ ‡— t          ˆˆ fd„dD ¦   «         ¦  «        S )úcompare 2 col itemsc              3  ó`   •K  — | ](}t          ‰|d ¦  «        t          ‰|d ¦  «        k    V — Œ)d S rd   ©r·  ©rs   r‘   rD  rè   s     €€r\   r�  z"IndexCol.__eq__.<locals>.<genexpr>X  óT   øè è € ð 
ð 
àõ �D˜!˜TÑ"Ô"¥g¨e°Q¸Ñ&=Ô&=Ò=ð
ð 
ð 
ð 
ð 
ð 
r^   )rj   r,  rg  r/  ©r�  ©rè   rD  s   ``r\   Ú__eq__zIndexCol.__eq__V  sA   øø€ åð 
ð 
ð 
ð 
ð 
à5ð
ñ 
ô 
ñ 
ô 
ð 	
r^   c                ó.   — |                       |¦  «         S rd   )rN  rM  s     r\   Ú__ne__zIndexCol.__ne__]  s   € Ø—;’;˜uÑ%Ô%Ð%Ð%r^   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Ô>Ð>r^   rŸ  ú
np.ndarrayr_   r¥   ú3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]c           	     ó–  — t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|j        j        �|| j                                      ¦   «         }t          | j	        ¦  «        }t          ||||¦  «        }i }t          | j        ¦  «        |d<   | j        �t          | 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$          $ rn}	|dk    r]t'          d¦  «        rNt)          |	¦  «                             d	¦  «        r,t,          r% ||fd
t/          dt          j        ¬¦  «        i|¤Ž}n‚ Y d}	~	n%d}	~	wt2          $ r d|v rd|d<    ||fi |¤Ž}Y nw xY wt5          || j        ¦  «        }
|
|
fS )zV
        Convert the data from this selection to the appropriate pandas type.
        Nrj   r)  ÚMÚi8c                óˆ   — t          j        | |                     dd ¦  «        ¬¦  «                             |d         ¦  «        S )Nr)  )r)  rj   )r0   Úfrom_ordinalsrõ   Ú_rename)r_  Úkwdss     r\   r¬   z"IndexCol.convert.<locals>.<lambda>ˆ  sD   € ­Ô(AØ˜Ÿš ¨Ñ.Ô.ð)ñ )ô )çŠgØ�V”ñô ð r^   Úsurrogatepassúfuture.infer_stringúsurrogates not allowedÚdtypeÚpython©ÚstorageÚna_value)rW   rX   Úndarrayr   r_  Úfieldsr,  rÑ  r]   r®  Ú_maybe_convertr+  r)  r.   r   Úis_np_dtyper(   r-   ÚUnicodeEncodeErrorr   rb   r	  r   r3   Únanr½   Ú_set_tzr*  )rè   rŸ  r©   r_   r¥   Úval_kindrÌ   ÚfactoryÚnew_pd_indexr„  Úfinal_pd_indexs              r\   ÚconvertzIndexCol.converth  s8  € õ ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð;ð Œ<ÔÐ*ð ˜DœJÔ'×,Ò,Ñ.Ô.ˆFå" 4¤9Ñ-Ô-ˆÝ ¨°(¸FÑCÔCˆØˆÝ(¨¬Ñ9Ô9ˆˆv‰àŒ9Ð Ý,¨T¬YÑ7Ô7ˆ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øÝ!ð 	ð 	ð 	à˜/Ò)Ð)ÝÐ4Ñ5Ô5ð *å˜‘H”H×%Ò%Ð&>Ñ?Ô?ð *õ  ð *ð
  '˜wØð ð  å%¨hÅÄÐHÑHÔHð ð ð ð  ��ð ð ����øøøøõ ð 	5ð 	5ð 	5ð ˜ÐÐØ!%��v‘Ø"˜7 6Ð4Ð4¨VÐ4Ð4ˆLˆLˆLð	5øøøõ ! ¨t¬wÑ7Ô7ˆØ˜~Ð-Ð-s   Ä	D Ä
F/Ä$A$FÆF/Æ.F/c                ó   — | j         S )zreturn the values©rŸ  rì   s    r\   Ú	take_datazIndexCol.take_data¨  s
   € àŒ{Ðr^   c                ó   — | j         j        S rd   )r€   r¸  rì   s    r\   ÚattrszIndexCol.attrs¬  ó   € àŒzÔ"Ð"r^   c                ó   — | j         j        S rd   ©r€   Údescriptionrì   s    r\   rx  zIndexCol.description°  ó   € àŒzÔ%Ð%r^   c                ó8   — t          | j        | j        d¦  «        S )z!return my current col descriptionN)r·  rx  r,  rì   s    r\   ÚcolzIndexCol.col´  s   € õ �tÔ'¨¬°TÑ:Ô:Ð:r^   c                ó   — | j         S ©zreturn my cython valuesrq  rì   s    r\   ÚcvalueszIndexCol.cvalues¹  s   € ð Œ{Ðr^   rF   c                ó*   — t          | j        ¦  «        S rd   )r)  rŸ  rì   s    r\   r*  zIndexCol.__iter__¾  s   € Ý�D”KÑ Ô Ð r^   c                ó  — t          | 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)r3  r/  )r]   r®  rW   rŠ  rõ   rj   r.  r3  r�   Ú	StringColr/  )rè   rŸ   s     r\   Úmaybe_set_sizezIndexCol.maybe_set_sizeÁ  s�   € õ ˜4œ9Ñ%Ô%¨Ò1Ð1Ý˜,­Ñ-Ô-ð ;Ø+×/Ò/°´	Ñ:Ô:�àÐ'¨D¬HÔ,=ÀÒ,LÐ,LÝ"™9œ9×.Ò.¸È$Ì(Ð.ÑSÔS�”��ð 2Ð1ð (Ð'Ð,LÐ,Lr^   c                ó   — d S rd   rÞ   rì   s    r\   Úvalidate_nameszIndexCol.validate_namesÎ  ó   € Øˆr^   ÚhandlerÚAppendableTabler›   c                óì   — |j         | _         |                      ¦   «          |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      ¦   «          d S rd   )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Ñ$Ô$Ð$Ø�Š‰Œˆˆˆr^   c           	     óÄ   — t          | 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®  r{  r3  r½   r,  )rè   r3  Úcs      r\   rŠ  zIndexCol.validate_colÙ  s”   € õ ˜4œ9Ñ%Ô%¨Ò1Ð1Ø”ˆAØˆ}ØÐ#Ø#œ}�HØ”: Ò(Ð(Ý$ð<¸hð <ð <Ø œJð<ð <àœJð<ð <ð <ñô ð ð ”zÐ!àˆtr^   c                ó˜   — |rCt          | j        | j        d ¦  «        }|�(|| j        k    rt	          d|› d| j        › d�¦  «        ‚d S d S d S )Nzincompatible kind in col [ú - r\  )r·  rt  r6  r®  rÄ   )rè   r›   Úexisting_kinds      r\   r‹  zIndexCol.validate_attrì  sq   € àð 	Ý# D¤J°´ÀÑEÔEˆMØÐ(¨]¸d¼iÒ-GÐ-GÝØO°ÐOÐOÀ4Ä9ÐOÐOÐOñô ð ð	ð 	à(Ð(Ð-GÐ-Gr^   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 [r\  )Ú_info_fieldsr·  Ú
setdefaultrj   rõ   r}   ÚwarningsÚwarnr   r    Úsetattrr½   )rè   rÙ  r”   r•   ÚidxÚexisting_valueÚwss          r\   Úupdate_infozIndexCol.update_infoõ  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	!ð 	!r^   c                óv   — |                      | j        ¦  «        }|�| j                             |¦  «         dS dS )z!set my state from the passed infoN)rõ   rj   Ú__dict__Úupdate)rè   rÙ  r�  s      r\   Úset_infozIndexCol.set_info	  s=   € à�hŠh�t”yÑ!Ô!ˆØˆ?ØŒM× Ò  Ñ%Ô%Ð%Ð%Ð%ð ˆ?r^   c                óF   — t          | j        | j        | j        ¦  «         dS )zset the kind for this columnN)rœ  rt  r6  r®  rì   s    r\   rŽ  zIndexCol.set_attr	  s    € å�”
˜DœN¨D¬IÑ6Ô6Ð6Ð6Ð6r^   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Ó   r0  Úread_metadatar,  r+   r½   )rè   r‡  Únew_metadataÚcur_metadatas       r\   rŒ  zIndexCol.validate_metadata	  sŒ   € àŒ9˜
Ò"Ð"Øœ=ˆLØ"×0Ò0°´Ñ<Ô<ˆLàÐ(Ø Ð,Ý(Ø  ,¸4ÈTðñ ô ð -õ
 !ð;ñô ð ð #Ð"ð )Ð(Ø,Ð,Ð,Ð,r^   c                óX   — | j         �"|                     | j        | j         ¦  «         dS dS )zset the meta dataN)r0  r�  r,  )rè   r‡  s     r\   r�  zIndexCol.write_metadata/	  s2   € àŒ=Ð$Ø×"Ò" 4¤:¨t¬}Ñ=Ô=Ð=Ð=Ð=ð %Ð$r^   )NNNNNNNNNNNNN)rj   rb   r,  r`   ra   r¦   r  r  )r/  rm   ra   r¦   ©rD  rE  ra   rœ   r  )rŸ  rS  r_   rb   r¥   rb   ra   rT  r$  rd   r  )r‡  rˆ  r›   rœ   ra   r¦   )r›   rœ   ra   r¦   )r‡  rˆ  ra   r¦   )"r  r  r  r  r'  r  r(  r˜  ré   r  r3  r6  r1  r  rN  rP  rÍ  ro  rr  rt  rx  r{  r~  r*  rƒ  r…  r�  rŠ  r‹  r   r¤  rŽ  rŒ  r�  rÞ   r^   r\   r&  r&  ÿ  s¹  € € € € € € ðð ð !€OÐ Ð Ð Ñ Ø"ÐÐ"Ð"Ð"Ñ"Ø/Ð/Ð/€Lð
 ØØØ ØØØØØØØØØð)+ð )+ð )+ð )+ð )+ðV ð!ð !ð !ñ „Xð!ð ð#ð #ð #ñ „Xð#ð"ð "ð "ð "ð	
ð 	
ð 	
ð 	
ð
ð 
ð 
ð 
ð&ð &ð &ð &ð ð?ð ?ð ?ñ „Xð?ð>.ð >.ð >.ð >.ð@ð ð ð ð#ð #ñ „Xð#ð ð&ð &ñ „Xð&ð ð;ð ;ñ „Xð;ð ðð ñ „Xðð!ð !ð !ð !ðTð Tð Tð Tð Tðð ð ð ðð ð ð ðð ð ð ð&ð ð ð ð!ð !ð !ð !ð>&ð &ð &ð &ð7ð 7ð 7ð 7ðð ð ð ð">ð >ð >ð >ð >ð >r^   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 tablera   rœ   c                ó   — dS ©NFrÞ   rì   s    r\   rÍ  zGenericIndexCol.is_indexed8	  ó   € àˆur^   rŸ  rS  r_   rb   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
        )rW   rX   rd  r   r1   ry   )rè   rŸ  r©   r_   r¥   rž   s         r\   ro  zGenericIndexCol.convert<	  sG   € õ ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð;å�3˜v™;œ;Ñ'Ô'ˆØ�eˆ|Ðr^   r¦   c                ó   — d S rd   rÞ   rì   s    r\   rŽ  zGenericIndexCol.set_attrN	  r†  r^   Nr  )rŸ  rS  r_   rb   r¥   rb   ra   rµ  r  )r  r  r  r  r  rÍ  ro  rŽ  rÞ   r^   r\   r±  r±  5	  s`   € € € € € ØDÐDàðð ð ñ „Xððð ð ð ð$ð ð ð ð ð r^   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¥  Nrj   rb   r,  r`   r_  úDtypeArg | Nonera   r¦   c                ó|   •— t          ¦   «                              |||||||||	|
|¬¦  «         || _        || _        d S )N)rj   rŸ  r®  r.  r/  r,  r*  r¥  r€   rÓ   r0  )Úsuperré   r_  rÐ  )rè   rj   rŸ  r®  r.  r,  r/  r*  r¥  r€   rÓ   r0  r_  rÐ  Ú	__class__s                 €r\   ré   zDataCol.__init__c	  s[   ø€ õ  	‰Œ×ÒØØØØØØØØØØØð 	ñ 	
ô 	
ð 	
ð ˆŒ
ØˆŒ	ˆ	ˆ	r^   c                ó   — | j         › d�S )NÚ_dtyperi   rì   s    r\   Ú
dtype_attrzDataCol.dtype_attrƒ	  s   € à”)Ð#Ð#Ð#Ð#r^   c                ó   — | j         › d�S )NÚ_metari   rì   s    r\   Ú	meta_attrzDataCol.meta_attr‡	  r7  r^   c           
     óà   — t          t          t          | j        | j        | j        | j        | j        f¦  «        ¦  «        }d                     d„ t          g d¢|¦  «        D ¦   «         ¦  «        S )Nr;  c                ó"   — g | ]\  }}|› d |› �‘ŒS r=  rÞ   r>  s      r\   rv   z$DataCol.__repr__.<locals>.<listcomp>’	  r?  r^   )rj   r,  r_  r®  Úshape)
rx   r@  rD   rj   r,  r_  r®  rÆ  rA  ro  rB  s     r\   r  zDataCol.__repr__‹	  s~   € ÝÝÝ˜tœy¨$¬*°d´jÀ$Ä)ÈTÌZÐXñô ñ
ô 
ˆð
 �xŠxðð å"%Ð&QÐ&QÐ&QÐSWÑ"XÔ"Xðñ ô ñ
ô 
ð 	
r^   rD  rE  rœ   c                ó>   ‡ ‡— t          ˆˆ fd„dD ¦   «         ¦  «        S )rG  c              3  ó`   •K  — | ](}t          ‰|d ¦  «        t          ‰|d ¦  «        k    V — Œ)d S rd   rI  rJ  s     €€r\   r�  z!DataCol.__eq__.<locals>.<genexpr>š	  rK  r^   )rj   r,  r_  r/  rL  rM  s   ``r\   rN  zDataCol.__eq__˜	  sA   øø€ åð 
ð 
ð 
ð 
ð 
à6ð
ñ 
ô 
ñ 
ô 
ð 	
r^   rÐ  rM   c                óˆ   — |€J ‚| j         �J ‚t          |¦  «        \  }}|| _        || _         t          |¦  «        | _        d S rd   )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àˆŒ	ØˆŒ
Ý" :Ñ.Ô.ˆŒ	ˆ	ˆ	r^   c                ó   — | j         S )zreturn the data©rÐ  rì   s    r\   rr  zDataCol.take_data©	  s
   € àŒyÐr^   rŸ  rI   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.
        ro   ©r®  rV  Úmr   ©r3  rÆ  )r_  r3  rÆ  r˜  ÚsizerW   r7   ÚcodesÚget_atom_datarj   r   rg  r(   Úget_atom_datetime64Úget_atom_timedelta64r#   r�   Ú
ComplexColr%   Úget_atom_string)rú  rŸ  r_  r3  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àˆr^   c                óT   — t          ¦   «                              ||d         ¬¦  «        S )Nr   rÓ  ©r�   r‚  ©rú  rÆ  r3  s      r\   rÚ  zDataCol.get_atom_stringÍ	  s#   € å‰yŒy×"Ò"¨H¸EÀ!¼HÐ"ÑEÔEÐEr^   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ÚUIntrI   Ú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 (Ñ+Ô+Ð+r^   c                óN   —  |                       |¬¦  «        |d         ¬¦  «        S )NrÑ  r   ©rÆ  ©rë  ©rú  rÆ  r®  s      r\   rÖ  zDataCol.get_atom_dataà	  s*   € à.ˆs×#Ò#¨Ð#Ñ.Ô.°U¸1´XÐ>Ñ>Ô>Ð>r^   c                óR   — t          ¦   «                              |d         ¬¦  «        S ©Nr   rí  ©r�   ræ  ©rú  rÆ  s     r\   r×  zDataCol.get_atom_datetime64ä	  ó!   € å‰yŒy×!Ò!¨¨a¬Ð!Ñ1Ô1Ð1r^   c                óR   — t          ¦   «                              |d         ¬¦  «        S rñ  rò  ró  s     r\   rØ  zDataCol.get_atom_timedelta64è	  rô  r^   c                ó.   — t          | j        dd ¦  «        S )NrÆ  )r·  rÐ  rì   s    r\   rÆ  zDataCol.shapeì	  s   € å�t”y '¨4Ñ0Ô0Ð0r^   c                ó   — | j         S r}  rÏ  rì   s    r\   r~  zDataCol.cvaluesð	  s   € ð ŒyÐr^   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·  rt  r6  rw   rŸ  r½   rÀ  r_  )rè   r›   Úexisting_fieldsÚexisting_dtypes       r\   r‹  zDataCol.validate_attrõ	  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Ð.Jr^   rS  r_   r¥   c                ó‚  — t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|j        j        �|| j                 }| j        €J ‚| j        €"t          |¦  «        \  }}t          |¦  «        }n|}| j        }| j
        }t          |t          j        ¦  «        sJ ‚t          | j        ¦  «        }| j        }	| j        }
| j        }|€J ‚t          |¦  «        }|                     d¦  «        rt#          ||d¬¦  «        }�n„|dk    rt          j        |d¬¦  «        }�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        ¬¦  «        }not1          |¦  «        }|                     ¦   «         rL||          }||dk    xx         |                     t6          ¦  «                             ¦   «         j        z  cc<   t=          j        |||
d¬¦  «        }n@	 |                     |d¬¦  «        }n'# t@          $ r |                     dd¬¦  «        }Y nw xY wt          |¦  «        dk    rtC          ||||¬¦  «        }| 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Ú
datetime64T©ÚcoerceÚtimedelta64úm8[ns]©r_  r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÞ   ©r   Úfromordinal©rs   r“  s     r\   rv   z#DataCol.convert.<locals>.<listcomp>9
  s#   € Ð<Ð<Ð<¨Q•TÔ% aÑ(Ô(Ð<Ð<Ð<r^   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÞ   ©r   Úfromtimestampr  s     r\   rv   z#DataCol.convert.<locals>.<listcomp>=
  s#   € Ð>Ð>Ð>¨q•TÔ'¨Ñ*Ô*Ð>Ð>Ð>r^   r§  éÿÿÿÿF)Ú
categoriesr¥  Úvalidate©rÑ  ÚOr�  ©r©   r_   r¥   )#rW   rX   rd  r   r_  re  r,  r.  rÊ  rË  r®  r]   rÓ   r0  r¥  r*  rÄ  rj  ÚasarrayrE  r½   Úravelr.   Úfloat64r6   ÚanyÚastyperm   ÚcumsumÚ_valuesr7   Ú
from_codesrÄ   Ú_unconvert_string_arrayrŸ  )rè   rŸ  r©   r_   r¥   Ú	convertedrÌ  r®  rÓ   r0  r¥  r*  r_  r
  rÕ  Úmasks                   r\   ro  zDataCol.convert
  s  € õ  ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð;ð Œ<ÔÐ*Ø˜DœJÔ'ˆFàŒxÐ#Ð#Ð#ØŒ:Ðõ %=¸VÑ$DÔ$DÑ!ˆI�zÝ! *Ñ-Ô-ˆDˆDàˆIØœˆJØ”9ˆDå˜)¥R¤ZÑ0Ô0Ð0Ð0Ð0õ ˜tœyÑ)Ô)ˆØ”=ˆØ”,ˆØŒWˆàÐ%Ð%Ð%å 
Ñ+Ô+ˆð ×Ò˜LÑ)Ô)ð ,	>å 	¨2°dÐ;Ñ;Ô;ˆI‰Ià�mÒ#Ð#Ýœ
 9°HÐ=Ñ=Ô=ˆI‰IØ�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Ð,Ñ=Ô=�	�	�	ð>øøøõ ˜4Ñ Ô  HÒ,Ð,Ý/Ø 7°XÀfðñ ô ˆIð Œ{˜IÐ%Ð%s$   Ä3%E Å/FÆFÉI+ É+!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œ  rt  r6  rŸ  rÃ  rÓ   r_  rÀ  rì   s    r\   rŽ  zDataCol.set_attrf
  s^   € å�”
˜DœN¨D¬KÑ8Ô8Ð8Ý�”
˜DœN¨D¬IÑ6Ô6Ð6ØŒzÐ%Ð%Ð%Ý�”
˜DœO¨T¬ZÑ8Ô8Ð8Ð8Ð8r^   )NNNNNNNNNNNN)rj   rb   r,  r`   r_  rº  ra   r¦   r  r¯  )rÐ  rM   ra   r¦   )rŸ  rM   ra   rI   )r®  rb   ra   rà  ©r®  rb   ra   rI   r  )rŸ  rS  r_   rb   r¥   rb   )r  r  r  r  r'  r(  r˜  ré   r  rÀ  rÃ  r  rN  rÍ  rr  ÚclassmethodrÜ  rÚ  rë  rÖ  r×  rØ  rÆ  r~  r‹  ro  rŽ  Ú__classcell__©r½  s   @r\   r¹  r¹  R	  s@  ø€ € € € € ð
ð 
ð €OØÐØ˜)Ð$€Lð
 ØØØ ØØØØØØØ!%Øðð ð ð ð ð ð ð@ ð$ð $ð $ñ „Xð$ð ð#ð #ð #ñ „Xð#ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ð/ð /ð /ð /ðð ð ð ðð ð ñ „[ðð> ðFð Fñ „[ðFð ð,ð ,ð ,ñ „[ð,ð ð?ð ?ð ?ñ „[ð?ð ð2ð 2ñ „[ð2ð ð2ð 2ñ „[ð2ð ð1ð 1ñ „Xð1ð ðð ñ „Xððð ð ð ðb&ð b&ð b&ð b&ðH9ð 9ð 9ð 9ð 9ð 9ð 9ð 9r^   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 indexedTra   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_namess
  s;   € Ý�u T¤[Ñ1Ô1Ô7Ñ8Ô8ð 	NåÐLÑMÔMÐMð	Nð 	Nr^   c                óF   — t          ¦   «                              |¬¦  «        S )N)r3  rÞ  rß  s      r\   rÚ  z DataIndexableCol.get_atom_stringx
  s   € å‰yŒy×"Ò"¨HÐ"Ñ5Ô5Ð5r^   r®  rb   rI   c                ó>   —  |                       |¬¦  «        ¦   «         S )NrÑ  rî  rï  s      r\   rÖ  zDataIndexableCol.get_atom_data|
  s!   € à.ˆs×#Ò#¨Ð#Ñ.Ô.Ñ0Ô0Ð0r^   c                óB   — t          ¦   «                              ¦   «         S rd   rò  ró  s     r\   r×  z$DataIndexableCol.get_atom_datetime64€
  ó   € å‰yŒy×!Ò!Ñ#Ô#Ð#r^   c                óB   — t          ¦   «                              ¦   «         S rd   rò  ró  s     r\   rØ  z%DataIndexableCol.get_atom_timedelta64„
  r&  r^   Nr  r  )r  r  r  r  r(  r…  r  rÚ  rÖ  r×  rØ  rÞ   r^   r\   r   r   n
  s©   € € € € € Ø5Ð5àÐðNð Nð Nð Nð
 ð6ð 6ñ „[ð6ð ð1ð 1ð 1ñ „[ð1ð ð$ð $ñ „[ð$ð ð$ð $ñ „[ð$ð $ð $r^   r   c                  ó   — e Zd ZdZdS )ÚGenericDataIndexableColz(represent a generic pytables data columnN)r  r  r  r  rÞ   r^   r\   r)  r)  ‰
  s   € € € € € Ø2Ð2Ð2Ð2r^   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<   	 	 d7d8d„Zed9d„¦   «         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d9d%„¦   «         Zed&„ ¦   «         Zd<d'„Zd<d(„Zed)„ ¦   «         Zed9d*„¦   «         Zed+„ ¦   «         Zd?d-„Zd@d<d/„Zd9d0„Z	 	 	 	 dAdBd4„Zd<d5„Z	 dCdDd6„Z d.S )EÚ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.
    rb   Úpandas_kindr   Úformat_typeútype[DataFrame | Series]Úobj_typerm   r˜  r°   rØ   Frœ   rp  rU   r‰   rÐ   rK   r_   r`   r¥   ra   r¦   c                ó$  — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚t          €J ‚t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|| _        || _        t          |¦  «        | _        || _	        d S rd   )
rW   r°   r   rŠ   rK   rØ   rÐ   rg   r_   r¥   )rè   rØ   rÐ   r_   r¥   s        r\   ré   zFixed.__init__¡
  s‚   € õ ˜&¥(Ñ+Ô+Ð9Ð9­T°&©\¬\Ñ9Ô9Ð9ÝÐ%Ð%Ð%Ý˜%¥¤Ñ1Ô1Ð>Ð>µ4¸±;´;Ñ>Ô>Ð>ØˆŒØˆŒ
Ý(¨Ñ2Ô2ˆŒØˆŒˆˆr^   c                óh   — | j         d         dk    o!| j         d         dk    o| j         d         dk     S )Nr   ro   é
   é   )Úversionrì   s    r\   Úis_old_versionzFixed.is_old_version°
  s4   € àŒ|˜AŒ !Ò#ÐU¨¬°Q¬¸2Ò(=ÐUÀ$Ä,ÈqÄ/ÐTUÒBUÐUr^   útuple[int, int, int]c                ó  — t          t          | j        j        dd¦  «        ¦  «        }	 t	          d„ |                     d¦  «        D ¦   «         ¦  «        }t          |¦  «        dk    r|dz   }n# t          $ r d}Y nw xY w|S )zcompute and set our versionÚpandas_versionNc              3  ó4   K  — | ]}t          |¦  «        V — Œd S rd   ©rm   r^  s     r\   r�  z Fixed.version.<locals>.<genexpr>¹
  s(   è è € Ð?Ð? q�C ™FœFÐ?Ð?Ð?Ð?Ð?Ð?r^   ú.r3  ra  )r   r   r   )r]   r·  rÐ   r¸  rx   r  ry   rŒ   )rè   r4  s     r\   r4  zFixed.version´
  s•   € õ "¥'¨$¬*Ô*=Ð?OÐQUÑ"VÔ"VÑWÔWˆð	 ÝÐ?Ð?¨G¯MªM¸#Ñ,>Ô,>Ð?Ñ?Ô?Ñ?Ô?ˆGÝ�7‰|Œ|˜qÒ Ð Ø! D™.�øøÝð 	 ð 	 ð 	 ØˆGˆGˆGð	 øøøàˆs   ªAA/ Á/A>Á=A>c                óR   — t          t          | j        j        dd ¦  «        ¦  «        S )Nr´  )r]   r·  rÐ   r¸  rì   s    r\   r´  zFixed.pandas_typeÀ
  s!   € å�w t¤zÔ':¸MÈ4ÑPÔPÑQÔQÐQr^   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\   rv   z"Fixed.__repr__.<locals>.<listcomp>Ê
  s   € Ð">Ð">Ð">°q¥<°¡?¤?Ð">Ð">Ð">r^   ú[r\  ú12.12z	 (shape->ú))rK  rÆ  rW   rw   rx   rA  r´  )rè   r[   Újshapes      r\   r  zFixed.__repr__Ä
  s‡   € à�ŠÑÔÐØŒJˆØˆ=Ý˜!�d¥E˜]Ñ+Ô+ð "ØŸšÐ">Ð">¸AÐ">Ñ">Ô">Ñ?Ô?�Ø!˜�M�M�M�ØÔ&Ð;Ð;Ð;°qÐ;Ð;Ð;Ð;ØÔÐr^   c                ó~   — t          | j        ¦  «        | j        _        t          t          ¦  «        | j        _        dS )zset my pandas type & versionN)rb   r,  rt  r´  Ú_versionr8  rì   s    r\   r  zFixed.set_object_infoÏ
  s-   € å!$ TÔ%5Ñ!6Ô!6ˆŒ
ÔÝ$'­¡M¤MˆŒ
Ô!Ð!Ð!r^   c                ó.   — t          j         | ¦  «        }|S rd   r  )rè   Únew_selfs     r\   rÑ  z
Fixed.copyÔ
  s   € Ý”9˜T‘?”?ˆØˆr^   c                ó   — | j         S rd   )rI  rì   s    r\   rÆ  zFixed.shapeØ
  ró   r^   c                ó   — | j         j        S rd   ©rÐ   rÈ   rì   s    r\   rq  zFixed.pathnameÜ
  ry  r^   c                ó   — | j         j        S rd   )rØ   rÚ   rì   s    r\   rÚ   zFixed._handleà
  s   € àŒ{Ô"Ð"r^   c                ó   — | j         j        S rd   )rØ   ræ   rì   s    r\   ræ   zFixed._filtersä
  s   € àŒ{Ô#Ð#r^   c                ó   — | j         j        S rd   )rØ   rã   rì   s    r\   rã   zFixed._complevelè
  s   € àŒ{Ô%Ð%r^   c                ó   — | j         j        S rd   )rØ   rå   rì   s    r\   rå   zFixed._fletcher32ì
  s   € àŒ{Ô&Ð&r^   c                ó   — | j         j        S rd   )rÐ   r¸  rì   s    r\   rt  zFixed.attrsð
  ru  r^   c                ó   — dS ©zset our object attributesNrÞ   rì   s    r\   Ú	set_attrszFixed.set_attrsô
  ó   € € € r^   c                ó   — dS )zget our object attributesNrÞ   rì   s    r\   Ú	get_attrszFixed.get_attrs÷
  rT  r^   c                ó   — | j         S )zreturn my storable©rÐ   rì   s    r\   ÚstorablezFixed.storableú
  s   € ð ŒzÐr^   c                ó   — dS r³  rÞ   rì   s    r\   r   zFixed.is_existsÿ
  r´  r^   c                ó.   — t          | j        dd ¦  «        S )NrI  )r·  rY  rì   s    r\   rI  zFixed.nrows  s   € å�t”} g¨tÑ4Ô4Ð4r^   úLiteral[True] | Nonec                ó   — |€dS dS )z%validate against an existing storableNTrÞ   rM  s     r\   r  zFixed.validate  s   € àˆ=Ø�4Øˆtr^   Nc                ó   — dS )ú+are we trying to operate on an old version?NrÞ   )rè   rz   s     r\   Úvalidate_versionzFixed.validate_version  rT  r^   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)rY  rV  )rè   r[   s     r\   rK  zFixed.infer_axes  s*   € ð
 ŒMˆØˆ9Ø�5Ø�ŠÑÔÐØˆtr^   r´   r™   rµ   c                ó    — t          d¦  «        ‚)Nz>cannot read on an abstract storer: subclasses should implement©rÀ   ©rè   rz   r¶   r´   rµ   s        r\   rC  z
Fixed.read  s   € õ "ØLñ
ô 
ð 	
r^   c                ó    — t          d¦  «        ‚)Nz?cannot write on an abstract storer: subclasses should implementrc  ©rè   rþ  rÌ   s      r\   r  zFixed.write&  s   € Ý!ØMñ
ô 
ð 	
r^   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
        Tr|  Nz#cannot delete on an abstract storer)r�  r‚  rÚ   r  rÐ   rÄ   )rè   rz   r´   rµ   s       r\   rƒ  zFixed.delete+  sK   € õ Œ<˜˜u dÑ+Ô+ð 	ØŒL×$Ò$ T¤Z¸4Ð$Ñ@Ô@Ð@Ø�4åÐ=Ñ>Ô>Ð>r^   )rU   r‰   )
rØ   r°   rÐ   rK   r_   r`   r¥   rb   ra   r¦   r  )ra   r6  r  r  )ra   r+  r  )ra   r\  rd   ©NNNN©r´   r™   rµ   r™   r  )r´   r™   rµ   r™   ra   r¦   )!r  r  r  r  r  r-  rp  ré   r  r5  r4  r´  r  r  rÑ  rÆ  rq  rÚ   ræ   rã   rå   rt  rS  rV  rY  r   rI  r  r`  rK  rC  r  rƒ  rÞ   r^   r\   r+  r+  �
  s  € € € € € € ð
ð 
ð ÐÐÑØ€KÐÐÐÑØ&Ð&Ð&Ñ&Ø€I€I�IØÐÐÑØ€HÐÐÐÑð  'Øðð ð ð ð ð ðVð Vð Vñ „XðVð ð	ð 	ð 	ñ „Xð	ð ðRð Rñ „XðRð	 ð 	 ð 	 ð 	 ð2ð 2ð 2ð 2ð
ð ð ð ð ðð ñ „Xðð ð&ð &ñ „Xð&ð ð#ð #ñ „Xð#ð ð$ð $ñ „Xð$ð ð&ð &ð &ñ „Xð&ð ð'ð 'ð 'ñ „Xð'ð ð#ð #ñ „Xð#ð(ð (ð (ð (ð(ð (ð (ð (ð ðð ñ „Xðð ðð ð ñ „Xðð ð5ð 5ñ „Xð5ðð ð ð ð:ð :ð :ð :ð :ð	ð 	ð 	ð 	ð ØØ Øð	
ð 	
ð 	
ð 	
ð 	
ð
ð 
ð 
ð 
ð HLð?ð ?ð ?ð ?ð ?ð ?ð ?r^   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Þ   )rs   r[  r“  s      r\   r”  zGenericFixed.<dictcomp>=  s   € ÐCÐCÐC¡4 1 a˜!˜QÐCÐCÐCr^   r  Ú
attributesra   rb   c                ó8   — | j                              |d¦  «        S )NÚ )Ú_index_type_maprõ   )rè   rú  s     r\   Ú_class_to_aliaszGenericFixed._class_to_aliasA  s   € ØÔ#×'Ò'¨¨RÑ0Ô0Ð0r^   c                óp   — t          |t          ¦  «        r|S | j                             |t          ¦  «        S rd   )rW   r   Ú_reverse_index_maprõ   r.   )rè   Úaliass     r\   Ú_alias_to_classzGenericFixed._alias_to_classD  s2   € Ý�e�TÑ"Ô"ð 	àˆLØÔ&×*Ò*¨5µ%Ñ8Ô8Ð8r^   c           	     ó¢  — |                       t          t          |dd¦  «        ¦  «        ¦  «        }|t          k    rdd„}|}n|t          k    rdd„}|}n|}i }d|v r|d         |d<   |t
          u rt          }d|v rPt          |d         t          ¦  «        r|d          	                    d¦  «        |d<   n|d         |d<   |t          u sJ ‚||fS )	NÚindex_classrp  c                óÈ   — t          j        | j        | j        |¬¦  «        }t	          j        |d ¬¦  «        }|�(|                     d¦  «                             |¦  «        }|S )N)r_  r)  ri   ÚUTC)r8   Ú_simple_newrŸ  r_  r-   Útz_localizeÚ
tz_convert)rŸ  r)  r*  ÚdtaÚresults        r\   r�   z*GenericFixed._get_index_factory.<locals>.fS  sf   € å#Ô/Ø”M¨¬¸Dðñ ô �õ 'Ô2°3¸TÐBÑBÔB�Ø�>Ø#×/Ò/°Ñ6Ô6×AÒAÀ"ÑEÔE�FØ�r^   c                óx   — t          |¦  «        }t          j        | |¬¦  «        }t          j        |d ¬¦  «        S )Nr  ri   )r*   r9   r{  r0   )rŸ  r)  r*  r_  Úparrs        r\   r�   z*GenericFixed._get_index_factory.<locals>.f`  s:   € Ý# DÑ)Ô)�Ý"Ô.¨v¸UÐCÑCÔC�Ý"Ô.¨t¸$Ð?Ñ?Ô?Ð?r^   r)  r*  zutf-8r  )
rv  r]   r·  r-   r0   r.   r4   rW   ÚbytesrZ   )rè   rt  rx  r�   rl  rÌ   s         r\   Ú_get_index_factoryzGenericFixed._get_index_factoryJ  s  € Ø×*Ò*Ý�G E¨=¸"Ñ=Ô=Ñ>Ô>ñ
ô 
ˆð �-Ò'Ð'ðð ð ð ð ˆGˆGØ�KÒ'Ð'ð@ð @ð @ð @ð
 ˆGˆGà!ˆGàˆØ�Uˆ?ˆ?Ø" 6œ]ˆF�6‰NØ�eÐ#Ð#å(�à�5ˆ=ˆ=Ý˜% œ+¥uÑ-Ô-ð +à$ Tœ{×1Ò1°'Ñ:Ô:��t‘�ð  % Tœ{��t‘Ø¥-Ð/Ð/Ð/Ð/à˜ˆÐr^   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¶   rz   s      r\   Úvalidate_readzGenericFixed.validate_read{  sJ   € ð ÐÝðTñô ð ð ÐÝðYñô ð ð Ðr^   rœ   c                ó   — dS )NTrÞ   rì   s    r\   r   zGenericFixed.is_existsŠ  s   € àˆtr^   c                óJ   — | j         | j        _         | j        | j        _        dS rR  )r_   rt  r¥   rì   s    r\   rS  zGenericFixed.set_attrsŽ  s    € à"œmˆŒ
ÔØ œKˆŒ
ÔÐÐr^   c                ó  — t          t          | j        dd¦  «        ¦  «        | _        t	          t          | j        dd¦  «        ¦  «        | _        | j        D ]4}t          | |t	          t          | j        |d¦  «        ¦  «        ¦  «         Œ5dS )úretrieve our attributesr_   Nr¥   r‰   )rg   r·  rt  r_   r]   r¥   rn  rœ  )rè   r  s     r\   rV  zGenericFixed.get_attrs“  s†   € å(­°´¸ZÈÑ)NÔ)NÑOÔOˆŒÝ%¥g¨d¬j¸(ÀHÑ&MÔ&MÑNÔNˆŒØ”ð 	Lð 	LˆAÝ�D˜!�_­W°T´ZÀÀDÑ-IÔ-IÑJÔJÑKÔKÐKÐKð	Lð 	Lr^   c                ó.   — |                       ¦   «          d S rd   )rS  rf  s      r\   r  zGenericFixed.writeš  s   € Ø�ŠÑÔÐÐÐr^   Nr”   r´   r™   rµ   c                ó`  — ddl }t          | j        |¦  «        }|j        }t          |dd¦  «        }t	          ||j        ¦  «        r5|d         ||…         }t          |dd¦  «        }	|	�t          ||	¬¦  «        }n©t          t          |dd¦  «        ¦  «        }	t          |dd¦  «        }
|
�t          j	        |
|	¬¦  «        }n
|||…         }|	r9|	 
                    d¦  «        r$t          |d	d¦  «        }t          ||d
¬¦  «        }n|	dk    rt          j        |d¬¦  «        }|r|j        S |S )z2read an array for the specified node (off of groupr   NÚ
transposedFÚ
value_typer  rÆ  rü  r*  Trý  rÿ  r   )r‹   r·  rÐ   r¸  rW   ÚVLArrayÚpd_arrayr]   rX   rý  rÄ  rj  r  ÚT)rè   r”   r´   rµ   r‹   r  rt  rŒ  Úretr_  rÆ  r*  s               r\   Ú
read_arrayzGenericFixed.read_array�  sO  € àˆˆˆå�t”z 3Ñ'Ô'ˆØ”ˆå˜U L°%Ñ8Ô8ˆ
å�d˜FœNÑ+Ô+ð 	6Ø�q”'˜% ˜*Ô%ˆCÝ˜E <°Ñ6Ô6ˆEØÐ Ý˜s¨%Ð0Ñ0Ô0�øå#¥G¨E°<ÀÑ$FÔ$FÑGÔGˆEÝ˜E 7¨DÑ1Ô1ˆEàÐ å”h˜u¨EÐ2Ñ2Ô2��à˜5 ˜:Ô&�àð 6˜×)Ò)¨,Ñ7Ô7ð 6å˜U D¨$Ñ/Ô/�Ý˜c 2¨dÐ3Ñ3Ô3��à˜-Ò'Ð'Ý”j ¨HÐ5Ñ5Ô5�àð 	Ø”5ˆLàˆJr^   r.   c                ó  — t          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]   r·  rt  Úread_multi_indexrÐ   Úread_index_noderÄ   )rè   r”   r´   rµ   Úvarietyr  rž   s          r\   Ú
read_indexzGenericFixed.read_indexÂ  sž   € õ "¥'¨$¬*¸Ð6FÐ6FÐ6FÑ"GÔ"GÑHÔHˆà�gÒÐØ×(Ò(¨°EÀÐ(ÑEÔEÐEØ˜	Ò!Ð!Ý˜4œ: sÑ+Ô+ˆDØ×(Ò(¨°UÀÐ(ÑFÔFˆEØˆLåÐD¸7ÐDÐDÑEÔEÐEr^   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ž   )rW   r/   rœ  rt  Úwrite_multi_indexÚ_convert_indexr_   r¥   Úwrite_arrayrŸ  r·  rÐ   r®  r¸  rj   r-   r0   rr  r   rx  r4   r)  r*  Ú_get_tz)rè   r”   rž   r  r  s        r\   Úwrite_indexzGenericFixed.write_indexÐ  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Ð4Hr^   r/   c                óR  — t          | j        |› d�|j        ¦  «         t          t	          |j        |j        |j        ¦  «        ¦  «        D ]Ú\  }\  }}}t          |j	        t          ¦  «        rt          d¦  «        ‚|› d|› �}t          ||| j        | j        ¦  «        }|                      ||j        ¦  «         t#          | j        |¦  «        }	|j        |	j        _        ||	j        _        t          |	j        |› d|› �|¦  «         |› d|› �}
|                      |
|¦  «         ŒÛd S )NÚ_nlevelsz=Saving a MultiIndex with an extension dtype is not supported.Ú_levelÚ_nameÚ_label)rœ  rt  rð  Ú	enumeratero  ÚlevelsrÕ  ÚnamesrW   r_  r)   rÀ   rž  r_   r¥   rŸ  rŸ  r·  rÐ   r®  r¸  rj   )rè   r”   rž   ÚiÚlevÚlevel_codesrj   Ú	level_keyÚ
conv_levelr  Ú	label_keys              r\   r�  zGenericFixed.write_multi_indexç  sN  € Ý�”
˜sÐ,Ð,Ð,¨e¬mÑ<Ô<Ð<å+4Ý�”˜eœk¨5¬;Ñ7Ô7ñ,
ô ,
ð 	5ð 	5Ñ'ˆAÑ'��[ $õ ˜#œ)¥^Ñ4Ô4ð Ý)Ø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ð 	5r^   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©  rh  )	r·  rt  r—  rÐ   r™  r›   rj   r’  r/   )rè   r”   r´   rµ   rð  r¨  rÕ  r©  rª  r­  r  r«  r¯  r¬  s                 r\   r˜  zGenericFixed.read_multi_index   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ð
ñ 
ô 
ð 	
r^   r  rK   c           	     óŠ  — |||…         }d|j         v rLt          j        |j         j        ¦  «        dk    r*t          j        |j         j        |j         j        ¬¦  «        }t          |j         j        ¦  «        }d }d|j         v r(t          |j         j	        ¦  «        }t          |¦  «        }|j         }|  
                    |¦  «        \  }}	|dv r, |t          ||| j        | j        ¬¦  «        fdt          i|	¤Ž}
nÁ	  |t          ||| j        | j        ¬¦  «        fi |	¤Ž}
n›# t          $ rŽ}| j        dk    rxt!          d	¦  «        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  rj   )r   rE  rç  r_  r\  r]  r^  r`  ra  )r¸  rX   ÚprodrÆ  rý  r�  r]   r®  rk   rj   rƒ  Ú_unconvert_indexr_   r¥   rE  rh  r   rb   r	  r   r3   ri  )rè   r  r´   rµ   rÐ  r®  rj   rt  rl  rÌ   rž   r„  s               r\   r™  zGenericFixed.read_index_node  s8  € ð �E˜$�JÔˆð �d”mÐ#Ð#­¬°´Ô0CÑ(DÔ(DÈÒ(IÐ(IÝ”8˜DœMÔ/°t´}Ô7OÐPÑPÔPˆDÝ˜tœ}Ô1Ñ2Ô2ˆØˆà�T”]Ð"Ð"Ý˜tœ}Ô1Ñ2Ô2ˆDÝ" 4Ñ(Ô(ˆDà”ˆØ×1Ò1°%Ñ8Ô8‰ˆ�àÐ%Ð%Ð%Ø�GÝ Ø˜$¨¬¸t¼{ðñ ô ðð õ ð	ð
 ðð ˆEˆEðØ˜Ý$Ø˜d¨T¬]À4Ä;ðñ ô ðð ð ð	ð ��øõ &ð ð ð à”K ?Ò2Ð2Ý"Ð#8Ñ9Ô9ð 3å˜C™œ×)Ò)Ð*BÑCÔCð 3õ $ð 3ð
 $˜GÝ(Ø  $°´ÀtÄ{ðñ ô ðð õ *°(ÅRÄVÐLÑLÔLð	ð
 !ðð �E�Eð ð �E�E�E�Eøøøøðøøøð" ˆŒ
àˆs   Ã<$D! Ä!
F9Ä+BF4Æ4F9r•   rM   c                ó  — t          j        d|j        z  ¦  «        }| j                             | j        ||¦  «         t          | j        |¦  «        }t          |j        ¦  «        |j	        _
        |j        |j	        _        dS )zwrite a 0-len array©ro   N)rX   rý  r˜  rÚ   Úcreate_arrayrÐ   r·  rb   r_  r¸  r�  rÆ  )rè   r”   r•   Úarrr  s        r\   Úwrite_array_emptyzGenericFixed.write_array_emptyN  sm   € õ Œh�t˜eœjÑ(Ñ)Ô)ˆØŒ×!Ò! $¤*¨c°3Ñ7Ô7Ð7Ý�t”z 3Ñ'Ô'ˆÝ#& u¤{Ñ#3Ô#3ˆŒÔ Ø#œkˆŒÔÐÐr^   rþ  rL   r.  úIndex | Nonec                ó	  — t          |d¬¦  «        }|| j        v r | j                             | j        |¦  «         |j        dk    }d}t          |j        t          ¦  «        rt          d¦  «        ‚|st          |d¦  «        r	|j
        }d}d }| 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 …<   �nD|                      ||¦  «         �n,|j        j        t*          j        k    r«t/          j        |d¬¦  «        }	|rn<|	d	k    rn5t2          |	||fz  }
t5          j        |
t8          t;          ¦   «         ¬
¦  «         | j                             | j        |t          ¦   «                              ¦   «         ¦  «        }|                      |¦  «         �ngt/          j!        |j        d¦  «        rg| j         "                    | j        || #                    d¦  «        ¦  «         tI          |j        ¦  «        tK          | j        |¦  «        j&        _'        �næt          |j        tP          ¦  «        ru| j         "                    | j        ||j)        ¦  «         tK          | j        |¦  «        }tU          |j+        ¦  «        |j&        _+        d|j        j,        › d�|j&        _'        �nWt/          j!        |j        d¦  «        rT| j         "                    | j        || #                    d¦  «        ¦  «         dtK          | j        |¦  «        j&        _'        nét          |tZ          ¦  «        rš| j                             | j        |t          ¦   «                              ¦   «         ¦  «        }|                      | .                    ¦   «         ¦  «         tK          | j        |¦  «        }tI          |j        ¦  «        |j&        _'        n:|r|                      ||¦  «         n!| j         "                    | j        ||¦  «         |tK          | j        |¦  «        j&        _/        d S )NT)Úextract_numpyr   Fz]Cannot store a category dtype in a HDF5 dataset that uses format="fixed". Use format="table".r�  )rß   ©Úskipnar�  r–  rV  rW  údatetime64[r\  rÒ  rÿ  )0r>   rÐ   rÚ   r  rÔ  rW   r_  r'   rÀ   rR  r�  ræ   r   r½   r�   ÚAtomÚ
from_dtypeÚcreate_carrayrÆ  r¸  r   rX   Úobject_r   Úinfer_dtyper~   rš  r›  r   r    Úcreate_vlarrayÚ
ObjectAtomr›   rg  r¶  Úviewrb   r·  r¸  r�  r(   Úasi8r   r*  Úunitr:   Úto_numpyrŒ  )rè   r”   rþ  r.  r•   Úempty_arrayrŒ  rÛ  ÚcaÚinferred_typerŸ  Úvlarrr  s                r\   rŸ  zGenericFixed.write_arrayW  sa  € õ ˜c°Ð6Ñ6Ô6ˆà�$”*ÐÐØŒL×$Ò$ T¤Z°Ñ5Ô5Ð5ð ”j A’oˆØˆ
å�e”kÕ#3Ñ4Ô4ð 	Ý%ð/ñô ð ð ð 	"Ý�u˜cÑ"Ô"ð "àœ�Ø!�
àˆØŒ=Ð$Ý�*Ñ%Ô%ð >ð >å‘y”y”~×0Ò0°´Ñ=Ô=�ð>ð >ð >ñ >ô >ð >ð >ð >ð >ð >ð >øøøð >ð >ð >ð >ð Ðð
 ð 3Ø”\×/Ò/Ø”J  T¨5¬;ÀÄð 0ñ ô �ð ��1�1�1‘‘ð ×&Ò& s¨EÑ2Ô2Ð2Ñ2àŒ[Ô¥¤Ò+Ð+õ  œO¨E¸%Ð@Ñ@Ô@ˆMØð UØØ (Ò*Ð*Øå$¨°s¸EÐ'BÑB�Ý”˜bÕ"4ÕAQÑASÔASÐTÑTÔTÐTà”L×/Ò/°´
¸CÅÁÄ×AUÒAUÑAWÔAWÑXÔXˆEØ�LŠL˜ÑÔÐÑåŒ_˜Uœ[¨#Ñ.Ô.ð 	>ØŒL×%Ò% d¤j°#°u·z²zÀ$Ñ7GÔ7GÑHÔHÐHÝ;>¸u¼{Ñ;KÔ;K�G�D”J Ñ$Ô$Ô-Ô8Ñ8Ý˜œ¥_Ñ5Ô5ð 	>ð ŒL×%Ò%Ø”
˜C ¤ñô ð õ ˜4œ: sÑ+Ô+ˆDõ  ' u¤xÑ0Ô0ˆDŒMÔØ'H°U´[Ô5EÐ'HÐ'HÐ'HˆDŒMÔ$Ñ$ÝŒ_˜Uœ[¨#Ñ.Ô.ð 	>ØŒL×%Ò% d¤j°#°u·z²zÀ$Ñ7GÔ7GÑHÔHÐHØ;H�G�D”J Ñ$Ô$Ô-Ô8Ð8Ý˜�Ñ/Ô/ð 	>Ø”L×/Ò/°´
¸CÅÁÄ×AUÒAUÑAWÔAWÑXÔXˆEØ�LŠL˜ŸšÑ)Ô)Ñ*Ô*Ð*Ý˜4œ: sÑ+Ô+ˆDÝ'*¨5¬;Ñ'7Ô'7ˆDŒMÔ$Ð$Øð 	>Ø×"Ò" 3¨Ñ.Ô.Ð.Ð.àŒL×%Ò% d¤j°#°uÑ=Ô=Ð=à7A��”
˜CÑ Ô Ô)Ô4Ð4Ð4s   Â),C!Ã!C%Ã(C%r  r  r  r  r  )r”   rb   r´   r™   rµ   r™   ra   r.   )r”   rb   rž   r.   ra   r¦   )r”   rb   rž   r/   ra   r¦   )r”   rb   r´   r™   rµ   r™   ra   r/   )r  rK   r´   r™   rµ   r™   ra   r.   )r”   rb   r•   rM   ra   r¦   rd   )r”   rb   rþ  rL   r.  r¹  ra   r¦   )r  r  r  r  r-   r0   rq  r.  rt  rn  r  rr  rv  rƒ  r…  r  r   rS  rV  r  r’  r›  r¡  r�  r˜  r™  r¸  rŸ  rÞ   r^   r\   rk  rk  9  sì  € € € € € € Ø$Ð$à$ j°+¸xÐH€OØCÐC¨?×+@Ò+@Ñ+BÔ+BÐCÑCÔCÐØ€JÐÐÐÑð1ð 1ð 1ð 1ð9ð 9ð 9ð/ð /ð /ðbð ð ð ð ðð ð ñ „Xðð(ð (ð (ð (ð
Lð Lð Lð Lðð ð ð ð#ð #ð #ð #ð #ðL FJðFð Fð Fð Fð Fð5ð 5ð 5ð 5ð.5ð 5ð 5ð 5ð4 FJð
ð 
ð 
ð 
ð 
ð0 HLð5ð 5ð 5ð 5ð 5ðn*ð *ð *ð *ð BFð]Bð ]Bð ]Bð ]Bð ]Bð ]Bð ]Br^   rk  c                  ó^   ‡ — e Zd ZU dZdgZded<   ed„ ¦   «         Z	 	 	 	 ddd„Zdˆ fd„Z	ˆ xZ
S )rî  rã  rj   rE   c                óh   — 	 t          | j        j        ¦  «        fS # t          t          f$ r Y d S w xY wrd   )ry   rÐ   rŸ  rÄ   rŒ   rì   s    r\   rÆ  zSeriesFixed.shape½  sD   € ð	Ý˜œ
Ô)Ñ*Ô*Ð,Ð,øÝ�>Ð*ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ œ1°1Nr´   r™   rµ   ra   r2   c                óâ  — |                       ||¦  «         |                      d||¬¦  «        }|                      d||¬¦  «        }	 t          ||| j        d¬¦  «        }nŽ# t
          $ r�}| j        dk    rkt          d¦  «        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ž   rj   rÑ  r\  r]  r^  r`  ra  )rž   rj   rÑ  r_  )r…  r›  r’  r2   rj   rh  r¥   r   rb   r	  r   r3   rX   ri  )	rè   rz   r¶   r´   rµ   rž   rŸ  r  r„  s	            r\   rC  zSeriesFixed.readÄ  s  € ð 	×Ò˜7 EÑ*Ô*Ð*Ø—’ ¨u¸4�Ñ@Ô@ˆØ—’ °¸T�ÑBÔBˆð	Ý˜F¨%°d´iÀeÐLÑLÔLˆFˆFøÝ!ð 	ð 	ð 	à”˜Ò.Ð.ÝÐ4Ñ5Ô5ð /å˜‘H”H×%Ò%Ð&>Ñ?Ô?ð /õ  ð /õ
  ØØØœØÝ%¨hÅÄÐHÑHÔHðñ ô ��ð ð ����øøøøð	øøøð  ˆs   ÁA! Á!
C,Á+A7C'Ã'C,r¦   c                óÀ   •—  t          ¦   «         j        |fi |¤Ž |                      d|j        ¦  «         |                      d|¦  «         |j        | j        _        d S )Nrž   rŸ  )r¼  r  r¡  rž   rŸ  rj   rt  )rè   rþ  rÌ   r½  s      €r\   r  zSeriesFixed.writeâ  s^   ø€ Ø�‰ŒŒ�cÐ$Ð$˜VÐ$Ð$Ð$Ø×Ò˜ #¤)Ñ,Ô,Ð,Ø×Ò˜ 3Ñ'Ô'Ð'Øœ(ˆŒ
Œˆˆr^   rh  ©r´   r™   rµ   r™   ra   r2   r  )r  r  r  r,  rn  r  r  rÆ  rC  r  r  r  s   @r\   rî  rî  ·  s”   ø€ € € € € € Ø€KØ�€Jà€N€N�Nàðð ñ „Xðð ØØ Øðð ð ð ð ð<#ð #ð #ð #ð #ð #ð #ð #ð #ð #r^   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˜  Únblocksrm   ra   úShape | 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Æ  ro   )	r˜  r—  rÕ  r·  rÐ   Úblock0_valuesrw   r›   rŒ   )rè   r˜  r.  rª  r  rÆ  s         r\   rÆ  zBlockManagerFixed.shapeî  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    rMt+          |dd¬¦  «        }t-          ¦   «         r|                     ¦   «         }|                     |d	¬¦  «        }|S t          |d         |d         ¬¦  «        S )Nr   r  rg  r–  rØ  rÙ  r  ro   F©r¶   rž   rÑ  Tr¼  )rc  )rg  rÑ  )r¶   rÑ  ©r¶   rž   )r…  r/  Ú_get_block_manager_axisr—  r˜  r›  r›   rÕ  r’  r�  r,   r�  r   rW   rX   rd  r   r  r3   ri  ry   r5   r   rÑ  r¢  )rè   rz   r¶   r´   rµ   Úselect_axisr‡  rª  rD  rE  Úaxr.  ÚdfsÚ	blk_itemsrŸ  ÚdfÚouts                    r\   rC  zBlockManagerFixed.read	  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¨4Ð0Ñ0Ô0ˆCÝ"Ñ$Ô$ð !ð —h’h‘j”j�Ø—+’+ e°%�+Ñ8Ô8ˆCØˆJå  a¤°°Q´Ð8Ñ8Ô8Ð8r^   r¦   c                óÜ  •—  t          ¦   «         j        |fi |¤Ž t          |j        t          ¦  «        r|                     d¦  «        }|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Ø  r   z/Columns index has to be unique for fixed formatrg  r  )r.  rÙ  )r¼  r  rW   Ú_mgrr@   Ú_as_managerÚis_consolidatedÚconsolidater˜  rt  r§  r‡  Ú	is_uniquer½   r¡  ry   ÚblocksrÕ  r.  rž  Úmgr_locsrŸ  rŸ  )	rè   rþ  rÌ   rÐ  rª  rà  Úblkrâ  r½  s	           €r\   r  zBlockManagerFixed.write6  sy  ø€ Ø�‰ŒŒ�cÐ$Ð$˜VÐ$Ð$Ð$õ �c”h¥Ñ-Ô-ð 	+Ø—/’/ 'Ñ*Ô*ˆCàŒ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Ð.Ð.Ð.°	Ñ:Ô:Ð:Ð:ð		;ð 	;r^   )ra   rÖ  rh  )r´   r™   rµ   r™   ra   r,   r  )
r  r  r  rn  r  r  rÆ  rC  r  r  r  s   @r\   rÔ  rÔ  é  s˜   ø€ € € € € € Ø˜)Ð$€Jà€L€L�Làðð ð ñ „Xðð8 ØØ Øð+9ð +9ð +9ð +9ð +9ðZ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;r^   rÔ  c                  ó   — e Zd ZdZeZdS )rï  rä  N)r  r  r  r,  r,   r/  rÞ   r^   r\   rï  rï  P  s   € € € € € Ø€KØ€H€H€Hr^   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<   	 	 	 	 	 	 	 	 dedfˆ fd"„Z	e
dgd#„¦   «         Zdgd$„Zdhd&„Zdid'„Ze
djd)„¦   «         Zdkd-„Ze
dld/„¦   «         Ze
djd0„¦   «         Ze
d1„ ¦   «         Ze
d2„ ¦   «         Ze
d3„ ¦   «         Ze
d4„ ¦   «         Ze
dmd6„¦   «         Ze
dld7„¦   «         Ze
djd8„¦   «         Ze
dnd:„¦   «         Zdod<„Zd=„ Zdpd?„ZdqdA„ZdrdD„ZdsdE„Z didF„Z!didG„Z"dtdidH„Z#didI„Z$e%dJ„ ¦   «         Z&	 dudvdL„Z'	 dwdxdQ„Z(e)dydS„¦   «         Z*dT„ Z+	 	 	 	 dzd{dW„Z,e-d|dZ„¦   «         Z.dtd}d]„Z/d~da„Z0	 duddb„Z1	 	 	 dud€dd„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€   rb   r-  rà  ro   zint | list[Hashable]r¨  Trw   r0  Nr‰   rØ   r°   rÐ   rK   r_   r`   r¥   Ú
index_axesúlist[IndexCol] | Nonerb  ú list[tuple[AxisInt, Any]] | NoneÚvalues_axesúlist[DataCol] | Noner£   úlist | NonerÙ  údict | Nonera   r¦   c                óº   •— t          ¦   «                              ||||¬¦  «         |pg | _        |pg | _        |pg | _        |pg | _        |	pi | _        |
| _        d S )Nrç  )r¼  ré   rñ  rb  rô  r£   rÙ  r©   )rè   rØ   rÐ   r_   r¥   rñ  rb  rô  r£   rÙ  r©   r½  s              €r\   ré   zTable.__init__u  so   ø€ õ 	‰Œ×Ò˜ °À&ÐÑIÔIÐIØ$Ð*¨ˆŒØ,Ð2°ˆÔØ&Ð,¨"ˆÔØ(Ð.¨BˆÔØ�J˜BˆŒ	ØˆŒˆˆr^   c                óB   — | j                              d¦  «        d         S )NÚ_r   )rà  r  rì   s    r\   Útable_type_shortzTable.table_type_shortŠ  s   € àŒ×$Ò$ SÑ)Ô)¨!Ô,Ð,r^   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 )r>  r;  rp  z,dc->[r\  r;  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÞ   ©rb   r^  s     r\   rv   z"Table.__repr__.<locals>.<listcomp>–  s   € Ð:Ð:Ð:¨�S ™VœVÐ:Ð:Ð:r^   rA  c                ó   — g | ]	}|j         ‘Œ
S rÞ   ri   rÎ  s     r\   rv   z"Table.__repr__.<locals>.<listcomp>™  s   € Ð@Ð@Ð@¨1 ¤Ð@Ð@Ð@r^   rB  z (typ->z,nrows->z,ncols->z,indexers->[rC  )rK  ry   r£   rA  r5  r4  rñ  r´  rû  rI  Ú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ð	
r^   r‘  c                ó8   — | j         D ]}||j        k    r|c S ŒdS )zreturn the axis for cN)r‡  rj   )rè   r‘  r‘   s      r\   r÷   zTable.__getitem__   s1   € à”ð 	ð 	ˆAØ�A”FŠ{ˆ{Ø���ð àˆtr^   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“  r\  )rñ  rb  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è   rD  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ð ,ð ,Ø&(ð,ð ,ð ,ñô ð ð) ð	ð 	r^   rœ   c                ó6   — t          | j        t          ¦  «        S )z@the levels attribute is 1 or a list in the case of a multi-index)rW   r¨  rw   rì   s    r\   Úis_multi_indexzTable.is_multi_indexÎ  s   € õ ˜$œ+¥tÑ,Ô,Ð,r^   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½   rW   r,   )rè   rþ  r¨  Ú	reset_objr„  s        r\   Úvalidate_multiindexzTable.validate_multiindexÓ  sˆ   € õ Ô'¨¬	¬Ñ8Ô8ˆð	ØŸšÑ)Ô)ˆIˆIøÝð 	ð 	ð 	ÝØTñô àðøøøøð	øøøõ ˜)¥YÑ/Ô/Ð/Ð/Ð/Ø˜&Ð Ð s    5 µ
A¿AÁArm   c                óH   — t          j        d„ | j        D ¦   «         ¦  «        S )z-based on our axes, compute the expected nrowsc                ó2   — g | ]}|j         j        d          ‘ŒS ra  )r~  rÆ  ©rs   rª  s     r\   rv   z(Table.nrows_expected.<locals>.<listcomp>ç  s!   € ÐDÐDÐD¨q˜œ	œ¨Ô*ÐDÐDÐDr^   )rX   r²  rñ  rì   s    r\   Únrows_expectedzTable.nrows_expectedä  s%   € õ ŒwÐDÐD°D´OÐDÑDÔDÑEÔEÐEr^   c                ó   — d| j         v S )zhas this table been createdr€   rX  rì   s    r\   r   zTable.is_existsé  s   € ð ˜$œ*Ð$Ð$r^   c                ó.   — t          | j        dd ¦  «        S ©Nr€   ©r·  rÐ   rì   s    r\   rY  zTable.storableî  s   € å�t”z 7¨DÑ1Ô1Ð1r^   c                ó   — | j         S )z,return the table group (this is my storable))rY  rì   s    r\   r€   zTable.tableò  s   € ð Œ}Ðr^   c                ó   — | j         j        S rd   )r€   r_  rì   s    r\   r_  zTable.dtype÷  s   € àŒzÔÐr^   c                ó   — | j         j        S rd   rw  rì   s    r\   rx  zTable.descriptionû  ry  r^   úitertools.chain[IndexCol]c                ó@   — t          j        | j        | j        ¦  «        S rd   )rm  rn  rñ  rô  rì   s    r\   r‡  z
Table.axesÿ  s   € åŒ˜tœ°Ô0@ÑAÔAÐAr^   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )z.the number of total columns in the values axesc              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S rd   )ry   rŸ  rÎ  s     r\   r�  zTable.ncols.<locals>.<genexpr>  s*   è è € Ð;Ð; Q•3�q”x‘=”=Ð;Ð;Ð;Ð;Ð;Ð;r^   )Úsumrô  rì   s    r\   r   zTable.ncols  s$   € õ Ð;Ð;¨$Ô*:Ð;Ñ;Ô;Ñ;Ô;Ð;r^   c                ó   — dS r³  rÞ   rì   s    r\   Úis_transposedzTable.is_transposed  r´  r^   ú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 ra  r:  rÎ  s     r\   rv   z*Table.data_orientation.<locals>.<listcomp>  s"   € Ð8Ð8Ð8˜q•�Q�q”T‘”Ð8Ð8Ð8r^   c                ó6   — g | ]}t          |j        ¦  «        ‘ŒS rÞ   )rm   rg  rÎ  s     r\   rv   z*Table.data_orientation.<locals>.<listcomp>  s    € Ð6Ð6Ð6 •�Q”V‘”Ð6Ð6Ð6r^   )rx   rm  rn  rb  rñ  rì   s    r\   Údata_orientationzTable.data_orientation  sL   € õ ÝŒOØ8Ð8 DÔ$7Ð8Ñ8Ô8Ø6Ð6 d¤oÐ6Ñ6Ô6ñô ñ
ô 
ð 	
r^   ú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   ro   c                ó    — g | ]}|j         |f‘ŒS rÞ   ©r,  rÎ  s     r\   rv   z$Table.queryables.<locals>.<listcomp>  s   € Ð4Ð4Ð4˜qˆqŒw˜ˆlÐ4Ð4Ð4r^   c                ó*   •— g | ]\  }}‰|         d f‘ŒS rd   rÞ   )rs   rg  rŸ  Ú
axis_namess      €r\   rv   z$Table.queryables.<locals>.<listcomp>  s'   ø€ ÐOÐOÐO©<¨4°ˆz˜$Ô Ð&ÐOÐOÐOr^   c                óX   •— g | ]&}|j         t          ‰j        ¦  «        v ¯|j        |f‘Œ'S rÞ   )rj   r–  r£   r,  )rs   r“  rè   s     €r\   rv   z$Table.queryables.<locals>.<listcomp>  s=   ø€ ð 
ð 
ð 
Ø°a´fÅÀDÔDUÑ@VÔ@VÐ6VÐ6VˆQŒW�aˆLÐ6VÐ6VÐ6Vr^   )rñ  rb  rô  rŠ  )rè   Úd1Úd2Úd3r2  s   `   @r\   Ú
queryableszTable.queryables  s‰   øø€ ð ! YÐ/Ð/ˆ
ð 5Ð4 D¤OÐ4Ñ4Ô4ˆØOÐOÐOÐO¸4Ô;NÐOÑOÔOˆð
ð 
ð 
ð 
Ø"&Ô"2ð
ñ 
ô 
ˆõ �B˜‘G˜b‘LÑ!Ô!Ð!r^   c                ó$   — d„ | j         D ¦   «         S )zreturn a list of my index colsc                ó*   — g | ]}|j         |j        f‘ŒS rÞ   )rg  r,  r  s     r\   rv   z$Table.index_cols.<locals>.<listcomp>'  s!   € Ð;Ð;Ð; a�”˜œÐ!Ð;Ð;Ð;r^   ©rñ  rì   s    r\   Ú
index_colszTable.index_cols$  s   € ð <Ð;¨4¬?Ð;Ñ;Ô;Ð;r^   r  c                ó$   — d„ | j         D ¦   «         S )zreturn a list of my values colsc                ó   — g | ]	}|j         ‘Œ
S rÞ   r0  r  s     r\   rv   z%Table.values_cols.<locals>.<listcomp>+  s   € Ð2Ð2Ð2˜A�”Ð2Ð2Ð2r^   )rô  rì   s    r\   Úvalues_colszTable.values_cols)  s   € à2Ð2 Ô!1Ð2Ñ2Ô2Ð2r^   r”   c                ó*   — | j         j        }|› d|› d�S )z)return the metadata pathname for this keyz/meta/z/metarK  r?  s      r\   Ú_get_metadata_pathzTable._get_metadata_path-  s#   € à”
Ô&ˆØÐ)Ð)˜sÐ)Ð)Ð)Ð)r^   rŸ  rS  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�   r_   r¥   r©   N)rØ   r¯   r@  r2   r_   r¥   r©   )rè   r”   rŸ  s      r\   r�  zTable.write_metadata2  s^   € ð 	Œ�ŠØ×#Ò# CÑ(Ô(Ý�6 Ð&Ñ&Ô&ØØ”]Ø”;Ø”Lð 	ñ 	
ô 	
ð 	
ð 	
ð 	
r^   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É   r@  rö   s     r\   r«  zTable.read_metadataD  sK   € å•7˜4œ: v¨tÑ4Ô4°c¸4Ñ@Ô@ÐLØ”;×%Ò% d×&=Ò&=¸cÑ&BÔ&BÑCÔCÐCØˆtr^   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)rb   rà  rt  r;  r>  rb  r£   r©   r_   r¥   r¨  rÙ  rì   s    r\   rS  zTable.set_attrsJ  s™   € å # D¤OÑ 4Ô 4ˆŒ
ÔØ $§¢Ñ 1Ô 1ˆŒ
ÔØ!%×!1Ò!1Ñ!3Ô!3ˆŒ
ÔØ$(Ô$7ˆŒ
Ô!Ø"&Ô"3ˆŒ
ÔØ!œ\ˆŒ
ÔØ"œmˆŒ
ÔØ œKˆŒ
ÔØ œKˆŒ
ÔØœ)ˆŒ
Œˆˆr^   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          t          | j        dd¦  «        ¦  «        | _	        t          | j        d	d¦  «        pg | _
        d
„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        dS )r‰  rb  Nr£   rÙ  r©   r_   r¥   r‰   r¨  c                ó    — g | ]}|j         ¯	|‘ŒS rÞ   ©r'  rÎ  s     r\   rv   z#Table.get_attrs.<locals>.<listcomp>`  ó    € ÐKÐKÐK ¸Ô9JÐK˜1ÐKÐKÐKr^   c                ó    — g | ]}|j         °	|‘ŒS rÞ   rF  rÎ  s     r\   rv   z#Table.get_attrs.<locals>.<listcomp>a  ó    € ÐPÐPÐP !¸aÔ>OÐP˜AÐPÐPÐPr^   )r·  rt  rb  r£   rÙ  r©   rg   r_   r]   r¥   r¨  Ú
indexablesrñ  rô  rì   s    r\   rV  zTable.get_attrsW  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ˆŒÝ%¥g¨d¬j¸(ÀHÑ&MÔ&MÑNÔNˆŒÝ&-¨d¬j¸(ÀDÑ&IÔ&IÐ&OÈRˆŒØKÐK d¤oÐKÑKÔKˆŒØPÐP t¤ÐPÑPÔPˆÔÐÐr^   c                óÈ   — |�]| j         rXt          d                     d„ | j        D ¦   «         ¦  «        z  }t	          j        |t          t          ¦   «         ¬¦  «         dS dS dS )r_  Nr;  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÞ   rþ  r^  s     r\   rv   z*Table.validate_version.<locals>.<listcomp>g  s   € Ð4RÐ4RÐ4RÀµS¸±V´VÐ4RÐ4RÐ4Rr^   r–  )r5  r|   rA  r4  rš  r›  r   r    )rè   rz   rŸ  s      r\   r`  zTable.validate_versionc  s~   € àÐØÔ"ð Ý(¨3¯8ª8Ð4RÐ4RÀTÄ\Ð4RÑ4RÔ4RÑ+SÔ+SÑS�Ý”ØÝ*Ý/Ñ1Ô1ðñ ô ð ð ð ð Ððð r^   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)rW   rŠ  r7  r½   )rè   rŸ   Úqr[  s       r\   Úvalidate_min_itemsizezTable.validate_min_itemsizen  s�   € ð
 ÐØˆFÝ˜,­Ñ-Ô-ð 	ØˆFà�OŠOÑÔˆØð 	ð 	ˆAà�HŠ}ˆ}ØØ˜ˆzˆzÝ ð"°ð "ð "ð "ñô ð ð ð		ð 	r^   c                ó,  ‡ ‡‡‡‡‡— g }‰ j         Š‰ j        j        Št          ‰ j        j        ¦  «        D ]z\  }\  }}t          ‰|¦  «        }‰                      |¦  «        }|�dnd}|› d�}t          ‰|d¦  «        }	t          ||||	|‰ j        ||¬¦  «        }
|                     |
¦  «         Œ{t          ‰ j
        ¦  «        Št          |¦  «        Šˆˆˆˆ ˆfd„Š|                     ˆfd„t          ‰ j        j        ¦  «        D ¦   «         ¦  «         |S )z/create/cache the indexables if they don't existNr§  r5  )rj   rg  r/  r®  r.  r€   rÓ   r0  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 )Nr5  r¿  rÂ  )
rj   r,  rŸ  r®  r/  r.  r€   rÓ   r0  r_  )
rW   rb   r¹  r   r·  Ú_maybe_adjust_namer4  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ð ˆJr^   c                ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS rÞ   rÞ   )rs   rª  r‘  r�   s      €r\   rv   z$Table.indexables.<locals>.<listcomp>Ë  s'   ø€ ÐRÐRÐR©¨¨1˜A˜A˜a ™GœGÐRÐRÐRr^   )rx  r€   rt  r§  r;  r·  r«  r&  r›   r–  r£   ry   rš  r>  )rè   Ú_indexablesrª  rg  rj   rÛ  rU  rÓ   r6  r®  Ú	index_colrV  r©  rW  r�   rX  s   `          @@@@@r\   rJ  zTable.indexablesƒ  sd  øøøøøø€ ð ˆàÔˆØ”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àÐr^   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\   rv   z&Table.create_index.<locals>.<listcomp>ô  s"   € ÐIÐIÐI 1°QÔ5HÐI�q”wÐIÐIÐIr^   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   ro   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Þ   )rK  r‡  rW   rx   rw   r€   r·  r�  rÍ  rž   r­  r®  Úremove_indexr   rÄ  rÄ   r°  rb  rŒ   )rè   r¶   r­  r®  Úkwr€   r‘  r“  rž   Úcur_optlevelÚcur_kinds              r\   r°  zTable.create_indexÏ  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ð=$	ð $	r^   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]]
        rP  r  )
Ú	SelectionrÉ   r‡  r¤  rÙ  ro  r©   r_   r¥   r›   )	rè   rz   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ÑÔÐÐàˆr^   rŒ  c                ó   — |S )zreturn the data for this objrÞ   ©rú  rþ  rŒ  s      r\   Ú
get_objectzTable.get_objectG  s	   € ð ˆ
r^   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   r/   z"cannot use a multi-index on axis [z] with data_columns TNc                ó(   •— g | ]}|d k    ¯|‰v¯|‘ŒS rq  rÞ   )rs   r[  Úexisting_data_columnss     €r\   rv   z/Table.validate_data_columns.<locals>.<listcomp>h  s7   ø€ ð ð ð àØ˜H’}�}¨Ð2GÐ)GÐ)Gð à)GÐ)GÐ)Gr^   c                ó   •— g | ]}|‰v ¯|‘Œ	S rÞ   rÞ   )rs   r‘  Úaxis_labelss     €r\   rv   z/Table.validate_data_columns.<locals>.<listcomp>p  s#   ø€ Ð<Ð<Ð<�a¨1°Ð+;Ð+;�Ð+;Ð+;Ð+;r^   )
ry   rÙ  rõ   r½   rw   rW   rŠ  r–  rš  r&  )rè   r£   rŸ   rb  rg  rÙ  rp  rn  s         @@r\   Úvalidate_data_columnszTable.validate_data_columnsL  sG  øø€ õ
 �>Ñ"Ô"ð 	ØˆIà*¨1Ô-ÑˆˆkØŒy�}Š}˜T 2Ñ&Ô&ˆØ�8Š8�FÑÔ˜|Ò+Ð+°Ð+Ýð/°Tð /ð /Ø ,ð/ð /ñô ð ð ˜4ÐÐÝ Ñ,Ô,ˆLˆLØÐ!ØˆLõ �l¥DÑ)Ô)ð 		Ý$'¨Ñ$5Ô$5Ð!Ý Ñ-Ô-ˆLØ×Òðð ð ð à)×.Ò.Ñ0Ô0ðñ ô ñô ð ð =Ð<Ð<Ð<˜<Ð<Ñ<Ô<Ð<r^   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 �]/\  }\  }}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æ  r\  Nr   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÞ   )Ú_get_axis_number)rs   r‘   rþ  s     €r\   rv   z&Table._create_axes.<locals>.<listcomp>ž  s'   ø€ Ð6Ð6Ð6¨A�×$Ò$ QÑ'Ô'Ð6Ð6Ð6r^   Tc                ó   — g | ]	}|j         ‘Œ
S rÞ   r‘  rÎ  s     r\   rv   z&Table._create_axes.<locals>.<listcomp>£  s   € Ð4Ð4Ð4˜q�A”FÐ4Ð4Ð4r^   Fr3  ro   z<currently only support ndim-1 indexers in an AppendableTableri  c              3  ó$   •K  — | ]
}|‰v¯|V — Œd S rd   rÞ   )rs   r_  r‡  s     €r\   r�  z%Table._create_axes.<locals>.<genexpr>»  s'   øè è € Ð6Ð6˜¨°¨¨�1¨¨¨¨Ð6Ð6r^   r.  r¨  r©  r   r"  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colrŸ   r©   r_   r¥   r¶   r*  r§  )rj   r,  rŸ  r.  r/  r®  r*  r¥  rÓ   r0  r_  rÐ  c                ó*   — g | ]}|j         ¯	|j        ‘ŒS rÞ   )r(  rj   )rs   r{  s     r\   rv   z&Table._create_axes.<locals>.<listcomp>K  s"   € ÐBÐBÐB˜C¨CÔ,AÐBˆsŒxÐBÐBÐBr^   )
rØ   rÐ   r_   r¥   rñ  rb  rô  r£   rÙ  r©   r¨  )FrW   r,   rÐ   rÖ   rÄ   r   rK  rñ  rw   r£   r©   rÙ  r˜  ry   r½   r•  r‡  rb  r+   rX   r=   rœ  r™  r©  r  r›   Ú_get_axis_namerž  r_   r¥   rg  r1  r   rƒ  Ú_reindex_axisrq  rk  ri  Ú_get_blocks_and_itemsrô  r§  ro  r¹  r   rb   Ú
IndexErrorrÿ   Ú_maybe_convert_for_string_atomrŸ  rR  r4  rÜ  rË  r_  rj   r·  r   r*  r'   r¥  r  r
  r  r3   rÊ  rØ   rR  r¨  rO  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_itemsrS  rj   rx  r„  Únew_nameÚdata_convertedrT  r.  r®  r*  rÓ   r0  r¥  rÐ  rÌ  r{  ÚdcsÚ	new_tables/    ``                                            r\   Ú_create_axeszTable._create_axesr  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Ñ+AÔ+AÑ!BÔ!Bð 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   Ï5PÐP5ÐP0Ð0P5rä  r  c                óŒ  — t          | j        t          ¦  «        r|                      d¦  «        } d„ }| j        }t	          t
          |¦  «        }t          |j        ¦  «        } ||¦  «        }t          |¦  «        rù|d         \  }	}
t          |
¦  «         
                    t          |¦  «        ¦  «        }|                      ||	¬¦  «        j        }t	          t
          |¦  «        }t          |j        ¦  «        } ||¦  «        }|D ]l}|                      |g|	¬¦  «        j        }t	          t
          |¦  «        }|                     |j        ¦  «         |                      ||¦  «        ¦  «         Œm|rÊd„ t          ||¦  «        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 )
NrØ  c                ó*   ‡ — ˆ fd„‰ j         D ¦   «         S )Nc                óN   •— g | ]!}‰j                              |j        ¦  «        ‘Œ"S rÞ   )r.  rž  rì  )rs   rí  Úmgrs     €r\   rv   zFTable._get_blocks_and_items.<locals>.get_blk_items.<locals>.<listcomp>s  s)   ø€ ÐGÐGÐG°S�C”I—N’N 3¤<Ñ0Ô0ÐGÐGÐGr^   )rë  )r“  s   `r\   Úget_blk_itemsz2Table._get_blocks_and_items.<locals>.get_blk_itemsr  s   ø€ ØGÐGÐGÐG¸C¼JÐGÑGÔGÐGr^   r   r‘  c                ó\   — i | ])\  }}t          |                     ¦   «         ¦  «        ||f“Œ*S rÞ   )rx   Útolist)rs   ÚbrŠ  s      r\   r”  z/Table._get_blocks_and_items.<locals>.<dictcomp>‘  sD   € ð ð ð á�A�wõ �g—n’nÑ&Ô&Ñ'Ô'¨!¨W¨ðð ð r^   r;  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÞ   r@  )rs   Úitems     r\   rv   z/Table._get_blocks_and_items.<locals>.<listcomp>ž  s    € Ð&LÐ&LÐ&L¸d¥|°DÑ'9Ô'9Ð&LÐ&LÐ&Lr^   z+cannot match existing table structure for [z] on appending data)rW   ræ  r@   rç  r   rA   rw   rë  ry   r.   r›  r¢  rš  ro  rx   rŸ  rr  r›   r}  rÿ   rA  r½   )rä  r  r�  rô  r£   r”  r“  rë  râ  rg  rp  Ú
new_labelsr‘  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear.  r—  rŠ  r„  Újitemss                         r\   r|  zTable._get_blocks_and_itemsd  s”  € õ �e”j¥,Ñ/Ô/ð 	/Ø×%Ò% gÑ.Ô.ˆEð	Hð 	Hð 	Hð ŒjˆÝ•< Ñ%Ô%ˆÝ" 3¤:Ñ.Ô.ˆØ!. ¨sÑ!3Ô!3ˆ	åˆ|ÑÔð 	5ð
 !3°1Ô 5ÑˆD�+Ý˜{Ñ+Ô+×6Ò6µu¸\Ñ7JÔ7JÑKÔKˆJØ—-’- 
°�-Ñ6Ô6Ô;ˆCÝ•| SÑ)Ô)ˆ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Ñ"8Ô"8ðñ ô ˆ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G2Ç2H;È3H6È6H;rf  re  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‘  ro   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSrt  Ú	_get_axisr  Úunionr.   r¨  r¡  r?   r·  rŸ  rW   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ÐSr^   )	rw   r  rW   r¨  Úinsertrb  r{  Úfilterr�   )rè   rþ  rf  r¶   r  rg  Ú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��àˆ
r^   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€   )rj   rˆ  c                ó(   — i | ]}|j         |j        “ŒS rÞ   )r,  r.  rÎ  s     r\   r”  z,Table.create_description.<locals>.<dictcomp>î  s   € Ð>Ð>Ð>¨q˜AœG Q¤UÐ>Ð>Ð>r^   rx  é	   )r˜   rš   rÜ   rß   )Úmaxr  r‡  rã   r�   r1  rå   ræ   )rè   rš   r˜   rÜ   rˆ  r‰  rß   s          r\   Úcreate_descriptionzTable.create_descriptionß  s³   € ð ÐÝ˜tÔ2°EÑ:Ô:ˆLà¨lÐ;Ð;ˆð ?Ð>°D´IÐ>Ñ>Ô>ˆˆ-Ñàð 
	)ØÐ Ø œOÐ0¨q�	Ý‘i”i×'Ò'Ø#ØØ%Ð9¨Ô)9ð (ñ ô ˆGð
 #ˆAˆi‰LˆLØŒ]Ð&Øœ=ˆAˆi‰Làˆr^   c                óþ  — |                       |¦  «         |                      ¦   «         sdS t          | |||¬¦  «        }|                     ¦   «         }|j        �–|j                             ¦   «         D ]|\  }}}|                      ||                     ¦   «         |                     ¦   «         dz   ¬¦  «        }	| ||	j	        ||                     ¦   «         z
           |¦  «        j
                 }Œ}t          |¦  «        S )zf
        select coordinates (row numbers) from a table; return the
        coordinates object
        FrP  Nro   r–  )r`  rK  re  Úselect_coordsr­  r�   rW  r  r³  ÚilocrŸ  r.   )
rè   rz   r´   rµ   rf  Úcoordsr¥  r§  r¦  rÐ  s
             r\   rR  zTable.read_coordinatesþ  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‰}Œ}Ðr^   rU  c                ó`  — |                       ¦   «          |                      ¦   «         sdS |�t          d¦  «        ‚| j        D ]Ù}||j        k    rÌ|j        st          d|› d�¦  «        ‚t          | j        j	        |¦  «        }| 
                    | j        ¦  «         |                     |||…         | j        | j        | j        ¬¦  «        }t!          |d         |j        ¦  «        }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  ro   rÂ  )rj   rÑ  r_  z] not found in the table)r`  rK  rÄ   r‡  rj   r(  r½   r·  r€   r�  r¤  rÙ  ro  r©   r_   r¥   rj  r*  rt  r2   rÿ   )
rè   rU  rz   r´   rµ   r‘   r‘  Ú
col_valuesÚcvsr_  s
             r\   rW  zTable.read_column  sh  € ð 	×ÒÑÔÐð �ŠÑ Ô ð 	Ø�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Ø!œ]Øœ;ð	 'ñ ô �
õ ˜j¨œm¨Q¬TÑ2Ô2�Ý ¤
Ô 0°VÐ2BÐ2BÐ2BÀDÑIÔI�Ý˜c¨°UÀ%ÐHÑHÔHÐHÐHÐHð%  õ( ÐB &ÐBÐBÐBÑCÔCÐCr^   )Nr‰   NNNNNN)rØ   r°   rÐ   rK   r_   r`   r¥   rb   rñ  rò  rb  ró  rô  rõ  r£   rö  rÙ  r÷  ra   r¦   r  )r‘  rb   r  r  )rþ  r–   ra   r  r  )ra   r   )ra   r'  )ra   r,  )ra   r  )r”   rb   ra   rb   )r”   rb   rŸ  rS  ra   r¦   r  rd   r  )r®  r`   ra   r¦   r  )r´   r™   rµ   r™   ra   rc  ©rŒ  rœ   )TNNN)rþ  r,   r  rœ   )rä  r,   r  rœ   )rf  re  ra   r,   )r˜   r™   rÜ   rœ   rˆ  r™   ra   r,  ri  )rU  rb   r´   r™   rµ   r™   )4r  r  r  r  r,  r-  r  r¨  rp  ré   r  rû  r  r÷   r  r  r  r  r   rY  r€   r_  rx  r‡  r   r&  r+  r7  r;  r>  r@  r�  r«  rS  rV  r`  rO  r   rJ  r°  rh  r  rk  rq  r�  Ústaticmethodr|  r¯  r´  rR  rW  r  r  s   @r\   r#  r#  U  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 ðA!ð A!ð A!ñ „\ðA!ðF5ð 5ð 5ð 5ð 5ðnð ð ð ð@ HLðð ð ð ð ð: Ø Øð+Dð +Dð +Dð +Dð +Dð +Dð +Dð +Dð +Dr^   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 readrc  rd  s        r\   rC  zWORMTable.readO  s   € õ "Ð"EÑFÔFÐFr^   ra   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 writerc  rf  s      r\   r  zWORMTable.write[  s   € õ "Ð"FÑGÔGÐGr^   rh  ri  r  )r  r  r  r  rà  rC  r  rÞ   r^   r\   rö  rö  F  sk   € € € € € ðð ð €Jð ØØ Øð
Gð 
Gð 
Gð 
Gð 
GðHð Hð Hð Hð Hð Hr^   rö  c                  óT   — 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¡   rv  ra   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ˆ  rv  )r¡   )r   rÚ   r  rÐ   r�  r‡  r…  r´  rS  Úcreate_tablerÙ  rt  r�  Ú
write_data)rè   rþ  r‡  r›   rš   r˜   rÜ   rŸ   r¹   rˆ  r¡   r©   r£   rv  r€   r‘   Úoptionss                    r\   r  zAppendableTable.writej  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Ð2r^   c                óN  ‡‡— | j         j        }| j        }g }|rv| j        D ]n}t	          |j        ¦  «                             d¬¦  «        }t          |t          j	        ¦  «        r*| 
                    |                     dd¬¦  «        ¦  «         Œot          |¦  «        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\  }}|f| j         ||
|z                     j        z   }| 
                    |                     |¦  «        ¦  «         Œ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  ro   Nc                ó   — g | ]	}|j         ‘Œ
S rÞ   )r~  rÎ  s     r\   rv   z.AppendableTable.write_data.<locals>.<listcomp>À  s   € Ð6Ð6Ð6 �1”9Ð6Ð6Ð6r^   c                ó6   — g | ]}|                      ¦   «         ‘ŒS rÞ   )rr  rÎ  s     r\   rv   z.AppendableTable.write_data.<locals>.<listcomp>Æ  s    € Ð:Ð:Ð: A�!—+’+‘-”-Ð:Ð:Ð:r^   c           	     óœ   — g | ]I}|                      t          j        t          j        |j        ¦  «        |j        d z
  ¦  «        ¦  «        ‘ŒJS rµ  )Ú	transposerX   ÚrollÚaranger˜  r  s     r\   rv   z.AppendableTable.write_data.<locals>.<listcomp>Ç  sB   € ÐVÐVÐVÈ!�!—+’+�bœg¥b¤i°´Ñ&7Ô&7¸¼À!¹ÑDÔDÑEÔEÐVÐVÐVr^   r  r  c                ó$   •— g | ]}|‰‰…         ‘ŒS rÞ   rÞ   )rs   r‘   Úend_iÚstart_is     €€r\   rv   z.AppendableTable.write_data.<locals>.<listcomp>Û  s"   ø€ Ð;Ð;Ð;¨a˜˜7 5˜=Ô)Ð;Ð;Ð;r^   c                ó$   •— g | ]}|‰‰…         ‘ŒS rÞ   rÞ   )rs   r“  rÑ  rÒ  s     €€r\   rv   z.AppendableTable.write_data.<locals>.<listcomp>Ý  s"   ø€ Ð:Ð:Ð:¨Q˜˜' %˜-Ô(Ð:Ð:Ð:r^   )Úindexesr  rŸ  )r_  r©  r  rô  r6   rÐ  r�  rW   rX   rd  r›   r  ry   r  rñ  r§  rÆ  Úreshaperý  r  r—  Úwrite_data_chunk)rè   r¹   r¡   r©  rI  Ú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¸ Ñ!>Ô!>Ñ?Ô?Ð?øõ ˆu‰:Œ:ð 	Ø˜”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Ø˜ 4¤:¨e°H¸q±LÔ.AÔ#BÔ#HÑHˆ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˜' %˜-Ô(Ð(À$Ø:Ð:Ð:Ð:Ð:°'Ð:Ñ:Ô:ð	 "ñ ô ð ð ð	ð 	r^   rÛ  rS  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  )rX   r²  rÆ  ry   rý  r_  r©  r§  r  r  rœ   r�  r€   r›   r9  )rè   rÛ  rÔ  r  rŸ  r“  rI  r©  rØ  rª  r�  rÒ  s               r\   rÖ  z AppendableTable.write_data_chunkà  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×ÒÑÔÐÐÐð	ð 	r^   r´   rµ   c                óB  — |�t          |¦  «        sm|€+|€)| j        }| j                             | j        d¬¦  «         n>|€| j        }| j                             ||¬¦  «        }| j                             ¦   «          |S |                      ¦   «         sd S | j        }t          | |||¬¦  «        }| 
                    ¦   «         }t          |d¬¦  «                             ¦   «         }t          |¦  «        }	|	�r'|                     ¦   «         }
t          |
|
dk             j        ¦  «        }t          |¦  «        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 )	NTr|  r–  Fr  ro   r   r	  )ry   rI  rÚ   r  rÐ   r€   Úremove_rowsr9  rK  re  r¶  r2   Úsort_valuesÚdiffrw   rž   r›   r¬  rr  Úreversedrž  r—  )rè   rz   r´   rµ   rI  r€   rf  rŸ  Úsorted_seriesÚlnrã  rÆ   Úpgr-  rÛ  s                  r\   rƒ  zAppendableTable.delete  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õ �v‘;”;ð Ø˜�ð �bŒz˜RÒÐØ—’˜bÑ!Ô!Ð!ð �aŒy˜AŠ~ˆ~Ø—’˜a Ñ#Ô#Ð#ð —’‘”ˆBÝ˜fÑ%Ô%ð ð �Ø$×)Ò)­%°°2©,¬,Ñ7Ô7�Ø×!Ò!Ø˜tœz¨!œ}Ô-°D¸¼ÀB¼Ô4HÈ1Ñ4Lð "ñ ô ð ð ��àŒJ×ÒÑÔÐð ˆ	r^   )NFNNNNNNFNNT)
r›   rœ   r¹   r™   r¡   rœ   rv  rœ   ra   r¦   r  )r¹   r™   r¡   rœ   ra   r¦   )
rÛ  rS  rÔ  rÝ  r  rÞ  rŸ  rÝ  ra   r¦   r  ri  )	r  r  r  r  rà  r  rÆ  rÖ  rƒ  rÞ   r^   r\   rˆ  rˆ  d  s§   € € € € € Ø2Ð2à€Jð ØØØØØØ $ØØØØØ ð93ð 93ð 93ð 93ð 93ðv9ð 9ð 9ð 9ð 9ðv*ð *ð *ð *ðX8ð 8ð 8ð 8ð 8ð 8ð 8r^   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ë  r3  r.  r/  ra   rœ   c                ó.   — | j         d         j        dk    S )Nr   ro   )rñ  rg  rì   s    r\   r&  z"AppendableFrameTable.is_transposedO  s   € àŒ˜qÔ!Ô&¨!Ò+Ð+r^   rŒ  c                ó   — |r|j         }|S )zthese are written transposed)r�  rj  s      r\   rk  zAppendableFrameTable.get_objectS  s   € ð ð 	Ø”%ˆCØˆ
r^   Nr´   r™   rµ   c                ó0  ‡ — ‰                       |¦  «         ‰                      ¦   «         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        ¦  «        r¨	 t/          |j        ||d¬¦  «        }nÎ# t0          $ r�}‰ j        dk    rkt5          d¦  «        r\t7          |¦  «                             d¦  «        r:t:          r3t/          |j        ||dt=          dt&          j        ¬¦  «        ¬¦  «        }n‚ Y d }~nHd }~ww xY wt%          |t          ¦  «        rt/          |||¬¦  «        }nt/          j         |g||¬¦  «        }tC          ¦   «         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 )NrP  r   c                ó8   •— g | ]\  }}|‰j         d          u ¯|‘ŒS ra  r:  )rs   rª  rà  rè   s      €r\   rv   z-AppendableFrameTable.read.<locals>.<listcomp>p  s.   ø€ ÐPÐPÐP‘e�a˜°r¸T¼_ÈQÔ=OÐ7OÐ7O�Ð7OÐ7OÐ7Or^   ro   r   r/   r©  T©Úinplacerj   ri   FrÜ  r\  r]  r^  r`  ra  )r¶   rž   rÑ  r_  rÝ  r  rÂ  )rb   r�  r‘  )rf  r¶   )-r`  rK  rh  ry   rb  rÙ  rõ   r§  r‡  rô  r.   r/   Úfrom_tuplesÚ	set_namesr&  r·  r�  r˜  rW   rX   rd  rÕ  rÆ  r,   rh  r¥   r   rb   r	  r   r3   ri  Ú_from_arraysr   r_  r®  Údtypesr�  r€   rt  r  r›   r5   re  r¯  )rè   rz   r¶   r´   rµ   r  rÙ  ÚindsÚindrž   Úframesrª  r‘   Ú
index_valsr~  r�  r©  rŸ  Úindex_Úcols_rã  r„  rU  r_  rf  s   `                        r\   rC  zAppendableFrameTable.readZ  s`  ø€ ð 	×Ò˜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Ð(<Ñ=Ô=�å˜&¥"¤*Ñ-Ô-ð SðÝ" 6¤8°UÀ&ÈuÐUÑUÔU�B�BøÝ)ð ð ð àœ Ò6Ð6Ý&Ð'<Ñ=Ô=ð 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ÐSð  ð :ð :�Ý ¤
Ô 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   È%H>È>
K	ÉA7KËK	r  r¼  rh  ri  )r  r  r  r  r,  rà  r˜  r,   r/  r  r  r&  r  rk  rC  rÞ   r^   r\   rô  rô  G  s¨   € € € € € € Ø2Ð2à€KØ#€JØ€DØ)2€HÐ2Ð2Ð2Ñ2àð,ð ,ð ,ñ „Xð,ð ðð ð ñ „[ðð ØØ Øðdð dð dð dð dð dð dr^   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é  r3  ra   rœ   c                ó   — dS r³  rÞ   rì   s    r\   r&  z#AppendableSeriesTable.is_transposedÉ  r´  r^   rŒ  c                ó   — |S rd   rÞ   rj  s      r\   rk  z AppendableSeriesTable.get_objectÍ  s   € àˆ
r^   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Þ   )rW   r,   rj   Úto_framer¼  r  r¶   r–  )rè   rþ  r£   rÌ   rj   r½  s        €r\   r  zAppendableSeriesTable.writeÒ  si   ø€ å˜#�yÑ)Ô)ð 	%Ø”8Ð'˜xˆDØ—,’,˜tÑ$Ô$ˆCØ�‰ŒŒÐK˜#¨C¬K×,>Ò,>Ñ,@Ô,@ÐKÐKÀFÐKÐKÐKÐKÐKr^   r´   r™   rµ   r2   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   rf  Trí  rŸ  )
r  rW   r¨  rw   r¬  r¼  rC  Ú	set_indexr·  rj   )	rè   rz   r¶   r´   rµ   r  r  r[   r½  s	           €r\   rC  zAppendableSeriesTable.readÙ  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Øˆr^   r  r¼  rd   r  rh  rÒ  )r  r  r  r  r,  rà  r˜  r2   r/  r  r&  r  rk  r  rC  r  r  s   @r\   rò  rò  Á  sÒ   ø€ € € € € Ø2Ð2à €KØ$€JØ€DØ€Hàðð ð ñ „Xðð ðð ð ñ „[ððLð Lð Lð Lð Lð Lð Lð ØØ Øðð ð ð ð ð ð ð ð ð ð r^   rò  c                  ó,   ‡ — e Zd ZdZdZdZdˆ fd„Zˆ xZS )ró  rÂ  rè  rê  ra   r¦   c                ó<  •— |j         pd}|                      |¦  «        \  }| _        t          | j        t          ¦  «        sJ ‚t	          | j        ¦  «        }|                     |¦  «         t          |¦  «        |_         t          ¦   «         j	        dd|i|¤Ž dS )rý  rŸ  rþ  NrÞ   )
rj   r  r¨  rW   rw   r›   r.   r¶   r¼  r  )rè   rþ  rÌ   rj   Únewobjr�  r½  s         €r\   r  z AppendableMultiSeriesTable.writeù  s–   ø€ àŒxÐ#˜8ˆØ"×6Ò6°sÑ;Ô;Ñˆ�”Ý˜$œ+¥tÑ,Ô,Ð,Ð,Ð,Ý�D”KÑ Ô ˆØ�Š�DÑÔÐÝ˜t™œˆŒØ�‰ŒŒÐ+Ð+˜&Ð+ FÐ+Ð+Ð+Ð+Ð+r^   r  )r  r  r  r  r,  rà  r  r  r  s   @r\   ró  ró  ò  sM   ø€ € € € € Ø2Ð2à €KØ)€Jð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,r^   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â  r3  zlist[Hashable]r¨  ra   rb   c                ó   — | j         S rd   )r,  rì   s    r\   r´  zGenericTable.pandas_type  s   € àÔÐr^   c                ó<   — t          | j        dd ¦  «        p| j        S r  r  rì   s    r\   rY  zGenericTable.storable  s   € å�t”z 7¨DÑ1Ô1Ð?°T´ZÐ?r^   r¦   c                ó´   — g | _         d| _        g | _        d„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        dS )r‰  Nc                ó    — g | ]}|j         ¯	|‘ŒS rÞ   rF  rÎ  s     r\   rv   z*GenericTable.get_attrs.<locals>.<listcomp>  rG  r^   c                ó    — g | ]}|j         °	|‘ŒS rÞ   rF  rÎ  s     r\   rv   z*GenericTable.get_attrs.<locals>.<listcomp>  rI  r^   c                ó   — g | ]	}|j         ‘Œ
S rÞ   ri   rÎ  s     r\   rv   z*GenericTable.get_attrs.<locals>.<listcomp>  s   € Ð>Ð>Ð>¨˜QœVÐ>Ð>Ð>r^   )rb  r©   r¨  rJ  rñ  rô  r£   rì   s    r\   rV  zGenericTable.get_attrs  sf   € à ˆÔØˆŒØˆŒàKÐK d¤oÐKÑKÔKˆŒØPÐP t¤ÐPÑPÔPˆÔØ>Ð>¨TÔ-=Ð>Ñ>Ô>ˆÔÐÐr^   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   )rj   rg  r€   rÓ   r0  )rj   r/  rŸ  r.  r€   rÓ   r0  )rx  r«  r±  r€   r§  Ú_v_namesrW   rb   r·  r)  r›   )
rè   r‰  rU  rÓ   r[  rZ  rª  r  rÛ  r©  s
             r\   rJ  zGenericTable.indexables  s  € ð Ôˆð
 ×Ò Ñ(Ô(ˆØ˜^ˆzˆz°ˆÝ#Ø˜q¨¬
¸Èð
ñ 
ô 
ˆ	ð IRÀ{ˆå˜aœjÑ)Ô)ð 	#ð 	#‰DˆAˆqÝ˜a¥Ñ%Ô%Ð%Ð%Ð%å˜1˜a‘=”=ˆDØ×#Ò# AÑ&Ô&ˆBØ!# �:�:°TˆDÝ(ØØØ�sØØ”jØØðñ ô ˆBð ×Ò˜rÑ"Ô"Ð"Ð"àÐr^   c                ó    — t          d¦  «        ‚)Nz cannot write on an generic tablerc  )rè   rÌ   s     r\   r  zGenericTable.writeC  s   € Ý!Ð"DÑEÔEÐEr^   Nr  r  )r  r  r  r  r,  rà  r˜  r,   r/  r  r  r´  rY  rV  r   rJ  r  rÞ   r^   r\   rñ  rñ    sÂ   € € € € € € ØDÐDà€KØ €JØ€DØ€HØÐÐÑàð ð  ð  ñ „Xð ð ð@ð @ñ „Xð@ð?ð ?ð ?ð ?ð ð ð  ñ „^ð ðFFð Fð Fð Fð Fð Fr^   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ì  r3  z^level_\d+$ra   rb   c                ó   — dS )NÚappendable_multirÞ   rì   s    r\   rû  z*AppendableMultiFrameTable.table_type_shortO  s   € à!Ð!r^   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¨  rW   rw   r¬  r¼  r  )rè   rþ  r£   rÌ   r  r½  s        €r\   r  zAppendableMultiFrameTable.writeT  s¼   ø€ ØÐØˆLˆLØ˜TÐ!Ð!Øœ;×-Ò-Ñ/Ô/ˆLØ×3Ò3°CÑ8Ô8ÑˆˆTŒ[Ý˜$œ+¥tÑ,Ô,Ð,Ð,Ð,Ø”ð 	*ð 	*ˆAØ˜Ð$Ð$Ø×#Ò# A qÑ)Ô)Ð)øØ�‰ŒŒÐC˜#¨LÐCÐC¸FÐCÐCÐCÐCÐCr^   r´   r™   rµ   c                óò   •‡ — t          ¦   «                              ||||¬¦  «        }|                     ‰ j        ¦  «        }|j                             ˆ fd„|j        j        D ¦   «         ¦  «        |_        |S )Nrf  c                óL   •— g | ] }‰j                              |¦  «        rd n|‘Œ!S rd   )Ú
_re_levelsÚsearch)rs   rj   rè   s     €r\   rv   z2AppendableMultiFrameTable.read.<locals>.<listcomp>l  s2   ø€ ÐWÐWÐWÀ�T”_×+Ò+¨DÑ1Ô1Ð;ˆTˆT°tÐWÐWÐWr^   )r¼  rC  r  r¨  rž   rð  r©  )rè   rz   r¶   r´   rµ   rã  r½  s   `     €r\   rC  zAppendableMultiFrameTable.read`  ss   øø€ õ ‰WŒW�\Š\ ¨w¸eÈ$ˆ\ÑOÔOˆØ�\Š\˜$œ+Ñ&Ô&ˆð ”8×%Ò%ØWÐWÐWÐWÈÌÌÐWÑWÔWñ
ô 
ˆŒð ˆ	r^   r  rd   r  rh  ri  )r  r  r  r  rà  r,   r/  r˜  ÚreÚcompiler  r  rû  r  rC  r  r  s   @r\   rõ  rõ  G  s¾   ø€ € € € € Ø$Ð$à(€JØ€HØ€DØ�”˜NÑ+Ô+€Jàð"ð "ð "ñ „Xð"ð
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð ØØ Øðð ð ð ð ð ð ð ð ð ð r^   rõ  rþ  r,   rg  rN   r®  r.   c                ó  — |                       |¦  «        }t          |¦  «        }|�t          |¦  «        }|�|                     |¦  «        r|                     |¦  «        r| S t          |                     ¦   «         ¦  «        }|�6t          |                     ¦   «         ¦  «                             |d¬¦  «        }|                     |¦  «        s8t          d d ¦  «        g| j        z  }|||<   | j        t          |¦  «                 } | S )NF)Úsort)	r£  r?   ÚequalsÚuniquer   Úslicer˜  r¡  rx   )rþ  rg  r®  rD  rà  Úslicers         r\   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Ô$ˆØ€Jr^   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Ø€Kr^   rŸ  únp.ndarray | Indexrþ  r-   c                ó   — d S rd   rÞ   ©rŸ  r*  rþ  s      r\   rj  rj  ’  s	   € ð €Cr^   rS  c                ó   — d S rd   rÞ   r%  s      r\   rj  rj  ™  s   € à€Cr^   ústr | tzinfo | Noneúnp.ndarray | DatetimeIndexc                ó–  — t          | t          ¦  «        r| j        �| j        |k    sJ ‚| j        �| S |�|t          | t          ¦  «        r| j        }nd}|                      ¦   «         } t          |¦  «        }t          | |¬¦  «        } |                      d¦  «                             |¦  «        } n|rt          j	        | d¬¦  «        } | S )a  
    coerce the values to a DatetimeIndex if tz is set
    preserve the input shape if possible

    Parameters
    ----------
    values : ndarray or Index
    tz : str or tzinfo
    coerce : if we do not have a passed timezone, coerce to M8[ns] ndarray
    Nri   rz  úM8[ns]r  )
rW   r-   r*  rj   r  r]   r|  r}  rX   r  )rŸ  r*  rþ  rj   s       r\   rj  rj  ž  sÒ   € õ �&�-Ñ(Ô(ð ð ŒyÐ  F¤I°¢O O O OØŒ9Ð ØˆMà	€~Ý�f�mÑ,Ô,ð 	$Ø”;ˆDˆDàˆDØ—\’\‘^”^ˆFå˜RÑ Ô ˆÝ˜v¨DÐ1Ñ1Ô1ˆØ×#Ò# EÑ*Ô*×5Ò5°bÑ9Ô9ˆˆØ	ð 4Ý”˜F¨(Ð3Ñ3Ô3ˆð €Mr^   rj   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\   rv   z"_convert_index.<locals>.<listcomp>ë  s    € Ð>Ð>Ð>°! §¢¡¤Ð>Ð>Ð>r^   r  )r+  r�  )ÚintegerÚfloating)rŸ  r®  r.  r+  rE  )rW   rb   rj   rÊ  rË  r   rÜ  r   rg  r_  r&   r"   r&  r·  r/   rÄ   rÃ  rX   r  Úint32r�   Ú	Time32ColÚ_convert_string_arrayr3  r‚  rd  rE  rÅ  )rj   rž   r_   r¥   r+  r  rÌ  r®  rÛ  rÌ  rŸ  r3  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Ð5NØ�xÒÐÐ ÑÔÐÝ‰yŒy×#Ò#Ñ%Ô%ˆÝ˜˜i¨¨tÀ
ÐKÑKÔKÐKr^   r®  c                óZ  — |                      d¦  «        r9|dk    rt          | ¦  «        }nÿt          |                      |¦  «        ¦  «        }nÜ|dk    rt          | ¦  «        }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ü  rÿ  r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÞ   r  r  s     r\   rv   z$_unconvert_index.<locals>.<listcomp>  s#   € ÐBÐBÐB¸¥Ô 0°Ñ 3Ô 3ÐBÐBÐBr^   r  c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÞ   r  r  s     r\   rv   z$_unconvert_index.<locals>.<listcomp>  s#   € ÐDÐDÐD¸!¥Ô 2°1Ñ 5Ô 5ÐDÐDÐDr^   )r/  Úfloatrœ   r�  r  rE  r   zunrecognized index type )	rÄ  r-   rÆ  r4   rX   r  rE  r½   r  )rÐ  r®  r_   r¥   rž   s        r\   r³  r³    sd  € ð ‡‚�|Ñ$Ô$ð <Ø�<ÒÐå! $Ñ'Ô'ˆEˆEå! $§)¢)¨D¡/¤/Ñ2Ô2ˆEˆEØ	�Ò	Ð	Ý˜tÑ$Ô$ˆˆØ	�Šˆð	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   Á,%B Â/CÃCrÙ  rM   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 columnrl  z>too many timezones in this block, create separate data columnsr�  rE  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  )rW   r_  r3   rÉ  rE  r   rX   rd  rj   r   rÃ  rÄ   r6   rÑ  r  ry   r3  r½   r—  rÆ  r3  rÕ  rŠ  rm   rõ   r³  rŠ  r  )rj   rÙ  rx  rŸ   r©   r_   r¥   r¶   rÌ  rÌ  r  rÐ  rª  r{  Úerror_column_labelrŒ  r3  Úecis                     r\   r~  r~  "  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ØÐr^   rÐ  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]
    FrE  )rÑ  r_  ro   ÚSr  )ry   r2   r  rb   Úencoder  rÕ  rÆ  r!   r³  Ú
libwritersÚmax_len_string_arrayrX   r  )rÐ  r_   r¥   Úensuredr3  s        r\   r3  r3  q  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Ø€Kr^   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  rE  )r¥   r_  TNri  )rÆ  rX   r  r  rE  ry   r>  r?  r!   rW   r‚  r2   rb   rZ   rÉ  ÚflagsÚ	writeabler  Ú!string_array_replace_from_nan_reprÕ  )rÐ  r©   r_   r¥   rÆ  r3  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Ñ?Ô?Ð?Ø�<Š<˜ÑÔÐr^   rk  c                ó´   — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚t          |¦  «        rt	          |||¦  «        } || ¦  «        } | S rd   )rW   rb   r   Ú_need_convertÚ_get_converter)rŸ  rk  r_   r¥   Úconvs        r\   rf  rf  º  sY   € Ý�h¥Ñ$Ô$Ð4Ð4¥d¨8¡n¤nÑ4Ô4Ð4Ý�XÑÔð Ý˜h¨°&Ñ9Ô9ˆØ��f‘”ˆØ€Mr^   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 )Nr*  r  ©rX   r  )r_  s    r\   r¬   z _get_converter.<locals>.<lambda>Ä  s   € �œ A¨XÐ6Ñ6Ô6€ r^   c                ó0   •— t          j        | ‰¬¦  «        S )Nr  rM  )r_  r®  s    €r\   r¬   z _get_converter.<locals>.<lambda>Æ  s   ø€ �œ A¨TÐ2Ñ2Ô2€ r^   r�  c                ó*   •— t          | d ‰‰¬¦  «        S )Nr  )r  )r_  r_   r¥   s    €€r\   r¬   z _get_converter.<locals>.<lambda>È  s    ø€ Õ0Ø�t h°vð
ñ 
ô 
€ r^   zinvalid kind )r½   )r®  r_   r¥   s   ```r\   rI  rI  Â  su   øøø€ Øˆ|ÒÐØ6Ð6Ð6Ø	˜Ð	Ð	Ø2Ð2Ð2Ð2Ð2Ø	�Ò	Ð	ð
ð 
ð 
ð 
ð 
ð 	
õ Ð/¨Ð/Ð/Ñ0Ô0Ð0r^   c                ó   — | dv sd| v rdS dS )N)rü  r�  rü  TFrÞ   rÑ  s    r\   rH  rH  Ï  s"   € ØÐ'Ð'Ð'¨<¸4Ð+?Ð+?ØˆtØˆ5r^   r4  ú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 an the
    name values_0, adjust the given name if necessary.

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

    Returns
    -------
    str
    é   z6Version is incorrect, expected sequence of 3 integers.r   ro   r2  r3  zvalues_block_(\d+)Úvalues_)rW   rb   ry   r½   r  r  rÆ   )rj   r4  rÒ  Úgrps       r\   rR  rR  Õ  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Ø€Kr^   Ú	dtype_strc                ó  — t          | ¦  «        } |                      d¦  «        rd}nå|                      d¦  «        rd}nÍ|                      d¦  «        rd}nµ|                      d¦  «        rd}n�|                      d¦  «        r| }n…|                      d¦  «        rd	}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�  r‚  r�  r7  r^  )rm   râ  r/  rü  Ú	timedeltarÿ  rœ   r§  rå  rE  rb   zcannot interpret dtype of [r\  )r]   rÄ  r½   )rV  r®  s     r\   rË  rË  î  sc  € õ   	Ñ*Ô*€Ià×ÒÐ/Ñ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à€Kr^   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¾  r\  ÚmMrW  )rW   r7   rÕ  r_  r(   rÈ  rj   r®  rX   r  rÆ  r0   rÇ  )rÐ  rÌ  s     r\   rÊ  rÊ    s¯   € õ �$�Ñ$Ô$ð ØŒzˆå�$”*�oÑ.Ô.ð %à5 4¤:¤?Ð5Ð5Ð5ˆ
ˆ
à”Z”_ˆ
à„z„˜$ÐÐÝŒz˜$Ÿ)š) D™/œ/Ñ*Ô*ˆˆõ 
�D�+Ñ	&Ô	&ð ØŒyˆåŒ:�dÑÔ€DØ�ÐÐr^   c                  ó4   — e Zd ZdZ	 	 	 ddd
„Zd„ Zd„ Zd„ ZdS )re  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µ   ra   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¼  )r/  Úbooleanr   z3where must have index locations >= start and < stop)r€   rz   r´   rµ   Ú	conditionr­  Útermsrl  r$   r   r½   r   rÃ  rX   r  r_  Úbool_rI  rÏ  Ú
issubclassr   r/  r  ÚgenerateÚevaluate)rè   r€   rz   r´   rµ   Úinferreds         r\   ré   zSelection.__init__6  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c                ó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)r7  r_   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€   r7  r;   r_   Ú	NameErrorrA  r&  r   r½   )rè   rz   rN  r„  Úqkeysr3  s         r\   rb  zSelection.generatec  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–  )	r^  r€   Ú
read_wherer�   r´   rµ   rl  rR  rC  rì   s    r\   rÉ   zSelection.selectz  s�   € ð Œ>Ð%Ø”:Ô#×.Ò.Ø”×%Ò%Ñ'Ô'¨t¬zÀÄ	ð /ñ ô ð ð ÔÐ)Ø”:Ô#×4Ò4°TÔ5EÑFÔFÐFØŒzÔ×$Ò$¨4¬:¸D¼IÐ$ÑFÔFÐFr^   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 )ri  Nr   T)r´   rµ   r  )
r´   rµ   r€   rI  r^  Úget_where_listr�   rl  rX   rÏ  )rè   r´   rµ   rI  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˜ Ñ%Ô%Ð%r^   r  )r€   r#  r´   r™   rµ   r™   ra   r¦   )r  r  r  r  ré   rb  rÉ   r¶  rÞ   r^   r\   re  re  *  sx   € € € € € ð	ð 	ð Ø Øð+Dð +Dð +Dð +Dð +DðZ+ð +ð +ð.
Gð 
Gð 
Gð&ð &ð &ð &ð &r^   re  )r_   r`   ra   rb   )rl   rm   )r‘   NNFNTNNNNr‰   rU   )r’   r“   r”   rb   r•   r–   r—   rb   r˜   r™   rš   r`   r›   rœ   r�   r`   rž   rœ   rŸ   r    r¡   r¢   r£   r¤   r¥   rb   r_   rb   ra   r¦   )	Nr²   r‰   NNNNFN)r’   r“   r—   rb   r¥   rb   rz   r³   r´   r™   rµ   r™   r¶   r·   r¸   rœ   r¹   r™   )rÐ   rK   rÑ   rK   ra   rœ   rd   )rþ  r,   rg  rN   r®  r.   ra   r,   )r*  r   ra   r  r  )rŸ  r#  r*  r  rþ  rœ   ra   r-   )rŸ  r#  r*  r¦   rþ  rœ   ra   rS  )rŸ  r#  r*  r'  rþ  rœ   ra   r(  )
rj   rb   rž   r.   r_   rb   r¥   rb   ra   r&  )r®  rb   r_   rb   r¥   rb   ra   r#  )rj   rb   rÙ  rM   r¶   r  )rÐ  rS  r_   rb   r¥   rb   ra   rS  )rŸ  rS  rk  rb   r_   rb   r¥   rb   )r®  rb   r_   rb   r¥   rb   )r®  rb   ra   rœ   )rj   rb   r4  rQ  ra   rb   )rV  rb   ra   rb   )rÐ  rM   )»r  Ú
__future__r   Ú
contextlibr   rÑ  rl  r   r   rm  rÁ   r  Útextwrapr   Útypingr   r	   r
   r   r   r   r   rš  ÚnumpyrX   Úpandas._configr   r   r   r   Úpandas._libsr   r   r>  Úpandas._libs.libr   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandas.compat._optionalr   Úpandas.compat.pickle_compatr   Úpandas.errorsr   r   r   r   r   Úpandas.util._decoratorsr   Ú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.   r/   r0   r1   r2   r3   r4   r5   r6   Úpandas.core.arraysr7   r8   r9   Úpandas.core.arrays.string_r:   Úpandas.core.commonÚcoreÚcommonr�  Ú pandas.core.computation.pytablesr;   r<   Úpandas.core.constructionr=   r�  r>   Úpandas.core.indexes.apir?   Úpandas.core.internalsr@   rA   Úpandas.io.commonrB   Úpandas.io.formats.printingrC   rD   Úcollections.abcrE   rF   rG   ÚtypesrH   r‹   rI   rJ   rK   Úpandas._typingrL   rM   rN   rO   rP   rQ   rR   rS   rT   rF  re   r]   rg   rk   rr   r{   r|   r  r}   r~   rÜ  r™  rƒ   r„   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryrŠ   r�   r�   r±   rÏ   rÇ   r°   rL  r&  r±  r¹  r   r)  r+  rk  rî  rÔ  rï  r#  rö  rˆ  rô  rò  ró  rñ  rõ  r{  r   rj  rž  r³  r~  r3  r  rf  rI  rH  rR  rË  rÊ  re  rÞ   r^   r\   ú<module>r‘     s…  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø %Ð %Ð %Ð %Ð %Ð %Ø >Ð >Ð >Ð >Ð >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 7Ð 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ðt 	ØØØ#ØØØ $ØØ ð_ð _ð _ð _ð _ðDð ð ð ðZð Zð Zð Zð Zñ Zô Zð Zðz,mð mð mð mð mñ mô mð mð`s>ð s>ð s>ð s>ð s>ñ s>ô s>ð s>ðl	ð ð ð ð �hñ ô ð ð:Y9ð Y9ð Y9ð Y9ð Y9ˆhñ Y9ô Y9ð Y9ðx$ð $ð $ð $ð $�wñ $ô $ð $ð63ð 3ð 3ð 3ð 3Ð.ñ 3ô 3ð 3ði?ð i?ð i?ð i?ð i?ñ i?ô i?ð i?ðX{Bð {Bð {Bð {Bð {B�5ñ {Bô {Bð {Bð|/#ð /#ð /#ð /#ð /#�,ñ /#ô /#ð /#ðdd;ð d;ð d;ð d;ð d;˜ñ d;ô d;ð d;ðNð ð ð ð Ð"ñ ô ð ð
nDð nDð nDð nDð nDˆEñ nDô nDð nDðbHð Hð Hð Hð H�ñ Hô Hð Hð<`ð `ð `ð `ð `�eñ `ô `ð `ðFwð wð wð wð w˜?ñ wô wð wðt.ð .ð .ð .ð .Ð0ñ .ô .ð .ðb,ð ,ð ,ð ,ð ,Ð!6ñ ,ô ,ð ,ð$@Fð @Fð @Fð @Fð @FÐ'ñ @Fô @Fð @FðF(ð (ð (ð (ð (Ð 4ñ (ô (ð (ðX 9=ðð ð ð ð ð4ð ð ð ð 
àAFðð ð ð ñ 
„ðð 
ðð ð ð ñ 
„ðð
 INð$ð $ð $ð $ð $ðN=Lð =Lð =Lð =Lð@ð ð ð ð:Lð Lð Lð Lð^ð ð ð ð>'ð 'ð 'ð 'ðTð ð ð ð
1ð 
1ð 
1ð 
1ðð ð ð ðð ð ð ð2 ð  ð  ð  ðFð ð ð ð2r&ð r&ð r&ð r&ð r&ñ r&ô r&ð r&ð r&ð r&s   Æ>G(Ç(G,Ç/G,