§
    Ò! hW´ ã            
      ó  — 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+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: ddl;m<Z<m=Z=m>Z>m?Z? ddl@mAZA ddlBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL ddlMmNZNmOZOmPZP ddlQmRc mSZT ddlUmVZVmWZW ddlXmYZY ddlZm[Z[ ddl\m]Z]m^Z^ ddl_m`Z` ddlambZbmcZc er4ddldmeZemfZfmgZg ddlhmiZi ddljmkZkmlZlmmZm ddlnmoZompZpmqZqmrZrmsZsmtZtmuZumvZv dd l\mwZw d!Zxd"Zyd#„ Zzd½d(„Z{d)„ Z|eVZ}d¾d,„Z~d-Zd.e€d/<   d0Z�d.e€d1<   d2Z‚d.e€d3<   d4d4d5d5d6œZƒeCdgiZ„d7Z…d.e€d8<   d9Z†d.e€d:<    ej‡        d;¦  «        5   ejˆ        d<d=e…ej‰        ¬>¦  «          ejˆ        d?de† ejŠ        g d@¢¦  «        ¬>¦  «         ddd¦  «         n# 1 swxY w Y   da‹d=aŒdA„ Z�	 	 	 	 	 	 	 	 	 	 	 	 d¿dÀdZ„ZŽ	 	 	 	 	 	 	 	 	 dÁdÂdd„Z�dÃdh„Z� G di„ dj¦  «        Z‘ G dk„ dl¦  «        Z’ G dm„ dn¦  «        Z“ G do„ dpe“¦  «        Z” G dq„ dre“¦  «        Z• G ds„ dte•¦  «        Z– G du„ dve–¦  «        Z— G dw„ dx¦  «        Z˜ G dy„ dze˜¦  «        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_pyarrow_string_dtype)ÚlibÚwriters)Úis_string_array)Ú	timezones)Ú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ÚTimedeltaIndexÚconcatÚisna)ÚCategoricalÚDatetimeArrayÚPeriodArray)ÚPyTablesExprÚmaybe_expression)Ú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 unicoderQ   )Ú
isinstanceÚnpÚbytes_Údecode)Úss    úLc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/io/pytables.pyÚ_ensure_decodedrY   Œ   s,   € å�!•R”YÑÔð Ø�HŠH�WÑÔˆØ€Hó    Úencodingú
str | NoneÚreturnÚstrc                ó   — | €t           } | S ©N)Ú_default_encoding©r[   s    rX   Ú_ensure_encodingrc   “   s   € àÐÝ$ˆà€OrZ   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
    )rS   r^   ©Únames    rX   Ú_ensure_strrg   ›   s&   € õ �$�ÑÔð Ý�4‰yŒyˆØ€KrZ   Úscope_levelÚintc                óÎ   ‡— |dz   Št          | t          t          f¦  «        rˆfd„| D ¦   «         } n t          | ¦  «        rt	          | ‰¬¦  «        } | �t          | ¦  «        r| ndS )zÔ
    Ensure that the where is a Term or a list of Term.

    This makes sure that we are capturing the scope of variables that are
    passed create the terms here with a frame_level=2 (we are 2 levels down)
    é   c                ó^   •— g | ])}|®t          |¦  «        rt          |‰dz   ¬¦  «        n|‘Œ*S )Nrk   ©rh   )r9   ÚTerm)Ú.0ÚtermÚlevels     €rX   ú
<listcomp>z _ensure_term.<locals>.<listcomp>µ   sM   ø€ ð 
ð 
ð 
àØÐõ 2BÀ$Ñ1GÔ1GÐQ�D� 5¨1¡9Ð-Ñ-Ô-Ð-ÈTàÐÐrZ   rm   N)rS   ÚlistÚtupler9   rn   Úlen)Úwhererh   rq   s     @rX   Ú_ensure_termrw   ª   sŠ   ø€ ð ˜!‰O€EÝ�%�$¥˜Ñ'Ô'ð /ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆˆõ
 
˜%Ñ	 Ô	 ð /Ý�U¨Ð.Ñ.Ô.ˆØ�M¥S¨¡Z¤Z�Mˆ5ˆ5°TÐ9rZ   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    rX   Ú_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    €€€€€€€€€€rX   ú<lambda>zto_hdf.<locals>.<lambda>  s8   ø€ ˜%Ÿ,š,ØØØØØ%ØØØ%ØØð 'ñ 
ô 
€ rZ   c                óB   •
— |                       ‰‰
‰‰‰‰	‰‰‰‰¬¦
  «
        S )N)r™   rš   r›   r¥   rŸ   r¡   r[   r�   ©Úputr¦   s    €€€€€€€€€€rX   r¨   zto_hdf.<locals>.<lambda>%  s8   ø€ ˜%Ÿ)š)ØØØØØ%ØØ%ØØØð $ñ 
ô 
€ rZ   )r“   r”   r–   N)r>   rS   r^   ÚHDFStore)rŽ   r�   r‘   r“   r”   r–   r—   r™   rš   r›   r¥   r�   rŸ   r¡   r[   r}   r§   s    ``    ````````  rX   Úto_hdfr­     s_  øøøøøøøøøø€ ð$ ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆˆð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ˆõ ! Ñ-Ô-€KÝ�+�sÑ#Ô#ð ÝØ˜d¨iÀð
ñ 
ô 
ð 	àØˆAˆe‰HŒHˆHð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð
 	
ˆˆ+‰Œˆˆˆs   Á!A:Á:A>ÂA>Úrrv   ú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.

    Examples
    --------
    >>> df = pd.DataFrame([[1, 1.0, 'a']], columns=['x', 'y', 'z'])  # doctest: +SKIP
    >>> df.to_hdf('./store.h5', 'data')  # doctest: +SKIP
    >>> reread = pd.read_hdf('./store.h5')  # doctest: +SKIP
    )r®   úr+r�   zmode zG is not allowed while performing a read. Allowed modes are r, r+ and a.Nrk   rm   z&The HDFStore must be open for reading.Fz5Support for generic buffers has not been implemented.zFile z does not exist)r“   r¡   Tr   z]Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.z?key must be provided when HDF5 file contains multiple datasets.)rv   r°   r±   r²   r´   rµ   Ú
auto_close)Ú
ValueErrorrw   rS   r¬   Úis_openÚOSErrorr>   r^   ÚNotImplementedErrorÚosÚpathÚexistsÚ	TypeErrorÚFileNotFoundErrorÚgroupsru   Ú_is_metadata_ofÚ_v_pathnameÚselectÚLookupErrorr   rˆ   Úclose)rŽ   r�   r“   r¡   rv   r°   r±   r²   r´   rµ   Úkwargsr§   r¸   r¿   rÂ   Úcandidate_only_groupÚgroup_to_checks                    rX   Úread_hdfrË   <  sÉ  € ð^ Ð#Ð#Ð#Ýð.�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.ÚgrouprG   Úparent_groupc                óœ   — | j         |j         k    rdS | }|j         dk    r,|j        }||k    r|j        dk    rdS |j        }|j         dk    °,dS )zDCheck if a given group is a metadata group for a given parent_group.Frk   ÚmetaT)Ú_v_depthÚ	_v_parentÚ_v_name)rÌ   rÍ   ÚcurrentÚparents       rX   rÃ   rÃ   ×  sm   € à„~˜Ô.Ò.Ð.Øˆuà€GØ
Ô
˜QÒ
Ð
ØÔ"ˆØ�\Ò!Ð! g¤o¸Ò&?Ð&?Ø�4ØÔ#ˆð	 Ô
˜QÒ
Ð
ð
 ˆ5rZ   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Ú_handler^   Ú_moder�   NFr“   r”   r•   Ú
fletcher32r˜   r]   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_complibr>   Ú_pathr×   rÖ   Ú
_complevelÚ_complibÚ_fletcher32Ú_filtersÚopen)Úselfr¾   r“   r”   r–   rØ   rÈ   r‡   s           rX   Ú__init__zHDFStore.__init__*  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Ð&Ð&Ð&Ð&Ð&rZ   c                ó   — | j         S r`   ©rÞ   ©rä   s    rX   Ú
__fspath__zHDFStore.__fspath__K  s
   € ØŒzÐrZ   c                óT   — |                       ¦   «          | j        €J ‚| j        j        S )zreturn the root node)Ú_check_if_openrÖ   Úrootrè   s    rX   rì   zHDFStore.rootN  s/   € ð 	×ÒÑÔÐØŒ|Ð'Ð'Ð'ØŒ|Ô Ð rZ   c                ó   — | j         S r`   rç   rè   s    rX   ÚfilenamezHDFStore.filenameU  ó
   € àŒzÐrZ   r�   c                ó,   — |                       |¦  «        S r`   )Úget©rä   r�   s     rX   Ú__getitem__zHDFStore.__getitem__Y  s   € Ø�xŠx˜‰}Œ}ÐrZ   c                ó2   — |                       ||¦  «         d S r`   rª   )rä   r�   r‘   s      rX   Ú__setitem__zHDFStore.__setitem__\  s   € Ø�Š��eÑÔÐÐÐrZ   c                ó,   — |                       |¦  «        S r`   )Úremoverò   s     rX   Ú__delitem__zHDFStore.__delitem___  s   € Ø�{Š{˜3ÑÔÐrZ   rf   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ä   rf   s     rX   Ú__getattr__zHDFStore.__getattr__b  sm   € ð	Ø—8’8˜D‘>”>Ð!øÝ�/Ð*ð 	ð 	ð 	ØˆDð	øøøåØG•�T‘
”
Ô#ÐGÐGÀÐGÐGÐGñ
ô 
ð 	
s   ‚ —+ª+c                ób   — |                       |¦  «        }|�|j        }|||dd…         fv rdS dS )zx
        check for existence of this key
        can match the exact pathname or the pathnm w/o the leading '/'
        Nrk   TF)Úget_noderÄ   )rä   r�   Únoderf   s       rX   Ú__contains__zHDFStore.__contains__l  sE   € ð
 �}Š}˜SÑ!Ô!ˆØÐØÔ#ˆDØ�t˜T ! " "œXÐ&Ð&Ð&Ø�tØˆurZ   ri   c                óD   — t          |                      ¦   «         ¦  «        S r`   )ru   rÂ   rè   s    rX   Ú__len__zHDFStore.__len__x  s   € Ý�4—;’;‘=”=Ñ!Ô!Ð!rZ   c                óT   — t          | j        ¦  «        }t          | ¦  «        › d|› d�S )Nú
File path: ú
)r@   rÞ   rü   )rä   Úpstrs     rX   Ú__repr__zHDFStore.__repr__{  s.   € Ý˜DœJÑ'Ô'ˆÝ�t‘*”*Ð3Ð3¨4Ð3Ð3Ð3Ð3rZ   rM   c                ó   — | S r`   rÚ   rè   s    rX   Ú	__enter__zHDFStore.__enter__  s   € ØˆrZ   Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | Nonec                ó.   — |                       ¦   «          d S r`   )rÇ   )rä   r  r  r  s       rX   Ú__exit__zHDFStore.__exit__‚  s   € ð 	�
Š
‰ŒˆˆˆrZ   Ú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Ä   ©ro   Úns     rX   rr   z!HDFStore.keys.<locals>.<listcomp>©  s   € Ð9Ð9Ð9 a�A”MÐ9Ð9Ð9rZ   ÚnativeNc                ó   — g | ]	}|j         ‘Œ
S rÚ   r  r  s     rX   rr   z!HDFStore.keys.<locals>.<listcomp>­  s'   € ð ð ð Ø"#�”ðð ð rZ   ú/ÚTable)Ú	classnamez8`include` should be either 'pandas' or 'native' but is 'rú   )rÂ   rÖ   Ú
walk_nodesr¹   )rä   r  s     rX   ÚkeyszHDFStore.keysŠ  sœ   € ð< �hÒÐØ9Ð9¨4¯;ª;©=¬=Ð9Ñ9Ô9Ð9à˜Ò Ð Ø”<Ð+Ð+Ð+ðð Ø'+¤|×'>Ò'>¸sÈgÐ'>Ñ'VÔ'Vðñ ô ð õ ØQÀwÐQÐQÐQñ
ô 
ð 	
rZ   úIterator[str]c                óD   — t          |                      ¦   «         ¦  «        S r`   )Úiterr"  rè   s    rX   Ú__iter__zHDFStore.__iter__´  s   € Ý�D—I’I‘K”KÑ Ô Ð rZ   úIterator[tuple[str, list]]c              #  óN   K  — |                       ¦   «         D ]}|j        |fV — ŒdS )z'
        iterate on key->group
        N)rÂ   rÄ   )rä   Úgs     rX   ÚitemszHDFStore.items·  s?   è è € ð —’‘”ð 	#ð 	#ˆAØ”- Ð"Ð"Ð"Ð"Ð"ð	#ð 	#rZ   c                óü  — t          ¦   «         }| j        |k    r@| j        dv r|dv rn+|dv r'| j        r t          d| j        › d| j        › d�¦  «        ‚|| _        | j        r|                      ¦   «          | j        rC| j        dk    r8t          ¦   «                              | j        | j        | j	        ¬¦  «        | _
        t          r| j        rd	}t          |¦  «        ‚ |j        | j        | j        fi |¤Ž| _        d
S )a9  
        Open the file in the specified mode

        Parameters
        ----------
        mode : {'a', 'w', 'r', 'r+'}, default 'a'
            See HDFStore docstring or tables.open_file for info about modes
        **kwargs
            These parameters will be passed to the PyTables open_file method.
        )r�   Úw)r®   r·   )r,  zRe-opening the file [z] with mode [z] will delete the current file!r   )rØ   zGCannot open HDF5 file, which is already opened, even in read-only mode.N)rŒ   r×   rº   r   rÞ   rÇ   rß   ÚFiltersrà   rá   râ   r‹   r¹   Ú	open_filerÖ   )rä   r“   rÈ   r‡   Úmsgs        rX   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ˆŒˆˆrZ   c                óT   — | j         �| j                              ¦   «          d| _         dS )z0
        Close the PyTables file handle
        N)rÖ   rÇ   rè   s    rX   rÇ   zHDFStore.closeë  s+   € ð Œ<Ð#ØŒL×ÒÑ Ô Ð ØˆŒˆˆrZ   c                óF   — | j         €dS t          | j         j        ¦  «        S )zF
        return a boolean indicating whether the file is open
        NF)rÖ   r˜   Úisopenrè   s    rX   rº   zHDFStore.is_openó  s$   € ð
 Œ<ÐØ�5Ý�D”LÔ'Ñ(Ô(Ð(rZ   Ú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½   r3  Úfileno)rä   r3  s     rX   r5  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      rX   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
        Nr8  r9  rk   rm   c                ó6   •— ‰                      | ||‰¬¦  «        S )N)r°   r±   rv   r²   ©Úread)Ú_startÚ_stopÚ_wherer²   rW   s      €€rX   ÚfunczHDFStore.select.<locals>.funcy  s   ø€ Ø—6’6 ¨U¸&È'�6ÑRÔRÐRrZ   ©rv   Únrowsr°   r±   r´   rµ   r¸   )r   rû   rw   Ú_create_storerÚ
infer_axesÚTableIteratorrE  Ú
get_result)rä   r�   rv   r°   r±   r²   r´   rµ   r¸   rÌ   rC  ÚitrW   s        `      @rX   rÅ   zHDFStore.select/  sÕ   øø€ ð@ —’˜cÑ"Ô"ˆØˆ=ÝÐ?¨cÐ?Ð?Ð?Ñ@Ô@Ð@õ ˜U°Ð2Ñ2Ô2ˆØ×Ò Ñ&Ô&ˆØ	�Š‰Œˆð	Sð 	Sð 	Sð 	Sð 	Sð 	Sõ ØØØØØ”'ØØØØØ!ð
ñ 
ô 
ˆð �}Š}‰ŒÐrZ   r°   r±   c                óÆ   — t          |d¬¦  «        }|                      |¦  «        }t          |t          ¦  «        st	          d¦  «        ‚|                     |||¬¦  «        S )a“  
        return the selection as an Index

        .. warning::

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

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


        Parameters
        ----------
        key : str
        where : list of Term (or convertible) objects, optional
        start : integer (defaults to None), row number to start selection
        stop  : integer (defaults to None), row number to stop selection
        rk   rm   z&can only read_coordinates with a table©rv   r°   r±   )rw   Ú
get_storerrS   r  rÀ   Úread_coordinates)rä   r�   rv   r°   r±   Útbls         rX   Ú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ÐHrZ   Úcolumnc                ó¤   — |                       |¦  «        }t          |t          ¦  «        st          d¦  «        ‚|                     |||¬¦  «        S )a~  
        return a single column from the table. This is generally only useful to
        select an indexable

        .. warning::

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

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

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

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

        z!can only read_column with a table)rQ  r°   r±   )rM  rS   r  rÀ   Úread_column)rä   r�   rQ  r°   r±   rO  s         rX   Úselect_columnzHDFStore.select_column¬  sP   € ðF �oŠo˜cÑ"Ô"ˆÝ˜#�uÑ%Ô%ð 	AÝÐ?Ñ@Ô@Ð@Ø�Š f°EÀˆÑEÔEÐErZ   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
        rk   rm   r   )r�   rv   r²   r°   r±   r´   rµ   r¸   zkeys must be a list/tuplez keys must have a non-zero lengthNc                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÚ   )rM  )ro   Úkrä   s     €rX   rr   z/HDFStore.select_as_multiple.<locals>.<listcomp>  s%   ø€ Ð1Ð1Ð1 q�—’ Ñ"Ô"Ð1Ð1Ð1rZ   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Ú   )rS   r  ©ro   Úxs     rX   rr   z/HDFStore.select_as_multiple.<locals>.<listcomp>-  s'   € Ð9Ð9Ð9�q¥J¨qµ%Ñ$8Ô$8Ð9�Ð9Ð9Ð9rZ   c                ó4   — h | ]}|j         d          d          ’ŒS ©r   )Únon_index_axes)ro   r~   s     rX   ú	<setcomp>z.HDFStore.select_as_multiple.<locals>.<setcomp>0  s%   € Ð6Ð6Ð6¨1�Ô  Ô# AÔ&Ð6Ð6Ð6rZ   c                ót   •‡ ‡‡— ˆ ˆˆˆfd„‰D ¦   «         }t          |‰d¬¦  «                             ¦   «         S )Nc                óB   •— g | ]}|                      ‰‰‰‰¬ ¦  «        ‘ŒS )©rv   r²   r°   r±   r>  )ro   r~   r@  rA  rB  r²   s     €€€€rX   rr   z=HDFStore.select_as_multiple.<locals>.func.<locals>.<listcomp>5  s=   ø€ ð ð ð àð —’˜V¨W¸FÈ�ÑOÔOðð ð rZ   F)ÚaxisÚverify_integrity)r3   Ú_consolidate)r@  rA  rB  Úobjsrc  r²   Útblss   ``` €€€rX   rC  z)HDFStore.select_as_multiple.<locals>.func2  s`   øøøø€ ðð ð ð ð ð ð àðñ ô ˆDõ ˜$ T¸EÐBÑBÔB×OÒOÑQÔQÐQrZ   rD  T)Úcoordinates)rw   rS   rs   rt   ru   r^   rÅ   rÀ   r¹   rM  Ú	itertoolsÚchainÚziprû   Úis_tableÚpathnamerE  ÚpoprH  rI  )rä   r"  rv   Úselectorr²   r°   r±   r´   rµ   r¸   rW   rE  r~   rW  Ú_tblsrC  rJ  rc  rg  s   `   `            @@rX   Ú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õ ØØØØØØØØØØ!ð
ñ 
ô 
ˆð �}Š}¨ˆ}Ñ.Ô.Ð.rZ   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¡   rr  r�   )r   Ú_validate_formatÚ_write_to_group)rä   r�   r‘   r™   rš   r—   r–   r”   r›   r¥   rŸ   r[   r¡   rr  r�   s                  rX   r«   zHDFStore.putM  s�   € ðp ˆ>ÝÐ 7Ñ8Ô8ÐC¸GˆFØ×&Ò& vÑ.Ô.ˆØ×ÒØØØØØØØØ%ØØ%ØØØ#Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rZ   c                óô  — t          |d¬¦  «        }	 |                      |¦  «        }np# t          $ r ‚ t          $ r ‚ t          $ rO}|�t          d¦  «        |‚|                      |¦  «        }|�|                     d¬¦  «         Y d}~dS Y d}~nd}~ww xY wt          j	        |||¦  «        r|j
                             d¬¦  «         dS |j        st          d¦  «        ‚|                     |||¬¦  «        S )	a:  
        Remove pandas object partially by specifying the where condition

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

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

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

        rk   rm   Nz5trying to remove a node with a non-None where clause!T©Ú	recursivez7can only remove with where on objects written as tablesrL  )rw   rM  rû   ÚAssertionErrorÚ	Exceptionr¹   r   Ú	_f_removeÚcomÚall_nonerÌ   rl  Údelete)rä   r�   rv   r°   r±   rW   Úerrr  s           rX   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_tablert  r|   )r™   Úaxesrš   r—   r–   r”   r›   r¥   rµ   Úexpectedrowsr�   rŸ   r[   r¡   )rÀ   r   ru  rv  )rä   r�   r‘   r™   rƒ  rš   r—   r–   r”   r²   r›   r¥   rµ   r„  r�   rŸ   r[   r¡   s                     rX   r—   zHDFStore.appendÒ  s·   € ðR ÐÝØPñô ð ð ˆ>ÝÐ 5Ñ6Ô6ˆFØˆ>ÝÐ 7Ñ8Ô8ÐC¸GˆFØ×&Ò& vÑ.Ô.ˆØ×ÒØØØØØØØØØ%ØØØ%ØØ%ØØð! 	ñ 	
ô 	
ð 	
ð 	
ð 	
rZ   Ú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š   )ro   Úcolsr‘   s     €rX   ú	<genexpr>z.HDFStore.append_to_multiple.<locals>.<genexpr>ƒ  s;   øè è € ÐOÐO¸D�E˜$”K×&Ò&¨5Ð&Ñ1Ô1Ô7ÐOÐOÐOÐOÐOÐOrZ   r›   ©rc  c                ó$   •— i | ]\  }}|‰v ¯	||“ŒS rÚ   rÚ   )ro   r�   r‘   Úvs      €rX   ú
<dictcomp>z/HDFStore.append_to_multiple.<locals>.<dictcomp>“  s$   ø€ ÐQÐQÐQ¡  eÈÈqÈÈ��eÈÈÈrZ   )rŸ   r›   )rÀ   rS   r†  r¹   Únextr%  ÚsetÚrangeÚndimÚ	_AXES_MAPrü   r*  Úextendrƒ  Ú
differencer-   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocrn  Úreindexr—   )rä   r…  r‘   ro  rŸ   rƒ  r�   rÈ   rc  Ú
remain_keyÚremain_valuesrW  ÚorderedÚorddÚidxsÚvalid_indexrš   r›   ÚdcÚvalÚfilteredr�  s     `                  @rX   Úappend_to_multiplezHDFStore.append_to_multiple8  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rZ   Ú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Œ   rM  rS   r  rÀ   Úcreate_index)rä   r�   r²   r©  rª  rW   s         rX   Úcreate_table_indexzHDFStore.create_table_index™  sh   € õ> 	‰	Œ	ˆ	Ø�OŠO˜CÑ Ô ˆØˆ9ØˆFå˜!�UÑ#Ô#ð 	QÝÐOÑPÔPÐPØ	�Š˜w°ÀˆÑEÔEÐEÐEÐErZ   rs   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|   )	rS   r†   ÚlinkÚLinkÚgetattrÚ_v_attrsr|   r  rÒ   )ro   r)  s     rX   rr   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ÐBVrZ   )rŒ   rë   rÖ   r†   Úwalk_groupsrè   s    rX   rÂ   zHDFStore.groupsÁ  sh   € õ, 	‰	Œ	ˆ	Ø×ÒÑÔÐØŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%ð
ð 
à”\×-Ò-Ñ/Ô/ð
ñ 
ô 
ð 	
rZ   r  rv   ú*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›  rS   rÌ   ÚGroupr—   rÒ   rÄ   Úrstrip)rä   rv   r)  rÂ   ÚleavesÚchildr°  s          rX   Ú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Ð=Ð=Ð=Ð=Ð=ð	>ð 	>rZ   ú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ÚNoSuchNodeErrorrS   rG   rü   )rä   r�   r  s      rX   r   zHDFStore.get_node$  sÀ   € à×ÒÑÔÐØ�~Š~˜cÑ"Ô"ð 	Ø˜‘)ˆCàŒ|Ð'Ð'Ð'ÝÐ%Ð%Ð%ð	Ø”<×(Ò(¨¬°CÑ8Ô8ˆDˆDøÝÔ$Ô4ð 	ð 	ð 	Ø�4�4ð	øøøõ ˜$¥
¤Ñ0Ô0Ð<Ð<µ$°t±*´*Ñ<Ô<Ð0Øˆs   Á A# Á#A;Á:A;úGenericFixed | Tablec                ó¬   — |                       |¦  «        }|€t          d|› d�¦  «        ‚|                      |¦  «        }|                     ¦   «          |S )z<return the storer object for a key, raise if not in the fileNr8  r9  )r   rû   rF  rG  )rä   r�   rÌ   rW   s       rX   rM  zHDFStore.get_storer4  sW   € à—’˜cÑ"Ô"ˆØˆ=ÝÐ?¨cÐ?Ð?Ð?Ñ@Ô@Ð@à×Ò Ñ&Ô&ˆØ	�Š‰ŒˆØˆrZ   r,  ÚpropindexesÚ	overwritec	                ó6  — t          |||||¬¦  «        }	|€!t          |                      ¦   «         ¦  «        }t          |t          t          f¦  «        s|g}|D ]¿}
|                      |
¦  «        }|�¦|
|	v r|r|	                     |
¦  «         |                      |
¦  «        }t          |t          ¦  «        rDd}|rd„ |j	        D ¦   «         }|	 
                    |
||t          |dd¦  «        |j        ¬¦  «         Œ¢|	                     |
||j        ¬¦  «         ŒÀ|	S )a;  
        Copy the existing store to a new file, updating in place.

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

        Returns
        -------
        open file handle of the new store
        )r“   r–   r”   rØ   NFc                ó*   — g | ]}|j         ¯	|j        ‘ŒS rÚ   )Ú
is_indexedrf   ©ro   r�   s     rX   rr   z!HDFStore.copy.<locals>.<listcomp>l  s!   € Ð HÐ HÐ H¨A¸1¼<Ð H ¤Ð HÐ HÐ HrZ   rŸ   )rš   rŸ   r[   rb   )r¬   rs   r"  rS   rt   rM  r÷   rÅ   r  rƒ  r—   r³  r[   r«   )rä   r‰   r“   rÅ  r"  r–   r”   rØ   rÆ  Ú	new_storerW  rW   Údatarš   s                 rX   ÚcopyzHDFStore.copy>  sO  € õ8 Ø�t W¸	Èjð
ñ 
ô 
ˆ	ð ˆ<Ý˜Ÿ	š	™œÑ$Ô$ˆDÝ˜$¥­ Ñ.Ô.ð 	Ø�6ˆDØð 	@ð 	@ˆAØ—’ Ñ"Ô"ˆAØˆ}Ø˜	�>�>Ø ð ,Ø!×(Ò(¨Ñ+Ô+Ð+à—{’{ 1‘~”~�Ý˜a¥Ñ'Ô'ð @Ø.3�EØ"ð IØ HÐ H°´Ð HÑ HÔ H˜Ø×$Ò$ØØØ#Ý%,¨Q°ÀÑ%EÔ%EØ!"¤ð %ñ ô ð ð ð —M’M ! T°A´J�MÑ?Ô?Ð?øàÐrZ   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: rX  é   ÚEmptyzFile is CLOSED)r@   rÞ   rü   rº   r˜  r"  ru   rM  r—   rm  rz  r{  r?   )
rä   r¾   ÚoutputÚlkeysr"  r›  rW  rW   ÚdetailÚdstrs
             rX   ÚinfozHDFStore.infoy  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    rX   rë   zHDFStore._check_if_open®  s2   € ØŒ|ð 	EÝ! T¤ZÐ"CÐ"CÐ"CÑDÔDÐDð	Eð 	ErZ   r™   c                ó”   — 	 t           |                     ¦   «                  }n&# t          $ r}t          d|› d�¦  «        |‚d}~ww xY w|S )zvalidate / deprecate formatsz#invalid HDFStore format specified [rX  N)Ú_FORMAT_MAPÚlowerrû   rÀ   )rä   r™   r€  s      rX   ru  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rQ   ú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š   rk   Úappendable_seriesÚappendable_multiseriesÚappendable_frameÚappendable_multiframe)rÞ  rå  ræ  rç  rè  Úwormz<cannot properly create the storer for: [_TABLE_MAP] [group->)rS   r1   r+   rÀ   rY   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                rX   rF  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Ÿ   rr  )r²   )r³  Ú_identify_grouprF  rl  Ú	is_existsr¹   Úset_object_infoÚwriterS   r  r¬  )rä   r�   r‘   r™   rƒ  rš   r—   r–   r”   rØ   r›   rµ   r„  r�   r¥   rŸ   r[   r¡   rr  rÌ   rW   s                        rX   rv  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Ñ)Ô)Ð)Ð)Ð)ð	*ð 	*ð 	*ð 	*rZ   rÌ   rG   c                ó|   — |                       |¦  «        }|                     ¦   «          |                     ¦   «         S r`   )rF  rG  r?  )rä   rÌ   rW   s      rX   r:  zHDFStore._read_groupU  s/   € Ø×Ò Ñ&Ô&ˆØ	�Š‰ŒˆØ�vŠv‰xŒxˆrZ   c                ó´   — |                       |¦  «        }| j        €J ‚|� |s| j                             |d¬¦  «         d}|€|                      |¦  «        }|S )z@Identify HDF5 group based on key, delete/create group if needed.NTrx  )r   rÖ   Úremove_nodeÚ_create_nodes_and_group)rä   r�   r—   rÌ   s       rX   rû  zHDFStore._identify_groupZ  sm   € à—’˜cÑ"Ô"ˆð Œ|Ð'Ð'Ð'ð Ð VÐØŒL×$Ò$ U°dÐ$Ñ;Ô;Ð;ØˆEàˆ=Ø×0Ò0°Ñ5Ô5ˆEàˆrZ   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Ö   Úsplitru   Úendswithr   Úcreate_group)rä   r�   Úpathsr¾   ÚpÚnew_pathrÌ   s          rX   r  z HDFStore._create_nodes_and_groupl  sª   € ð Œ|Ð'Ð'Ð'à—	’	˜#‘”ˆàˆØð 
	ð 
	ˆAÝ�q‘6”6ð ØØˆHØ—=’= Ñ%Ô%ð  Ø˜C‘�Ø˜‰MˆHØ—M’M (Ñ+Ô+ˆEØˆ}Øœ×1Ò1°$¸Ñ:Ô:�ØˆDˆDØˆrZ   )r�   NNF)r“   r^   r”   r•   rØ   r˜   r]   r¢   ©r]   r^   ©r�   r^   )r�   r^   r]   r¢   )rf   r^   )r�   r^   r]   r˜   ©r]   ri   )r]   rM   )r  r  r  r  r  r  r]   r¢   )r  )r  r^   r]   r  )r]   r#  )r]   r'  )r�   )r“   r^   r]   r¢   ©r]   r¢   ©r]   r˜   ©F)r3  r˜   r]   r¢   )NNNNFNF)r�   r^   r´   r˜   rµ   r•   r¸   r˜   ©NNN©r�   r^   r°   r•   r±   r•   ©NN)r�   r^   rQ  r^   r°   r•   r±   r•   )NNNNNFNF)r´   r˜   rµ   r•   r¸   r˜   )NTFNNNNNNr…   TF)r�   r^   r‘   r’   rš   r˜   r—   r˜   r”   r•   r›   rœ   rŸ   r    r¡   r^   rr  r˜   r�   r˜   r]   r¢   )NNTTNNNNNNNNNNr…   )r�   r^   r‘   r’   rš   r�  r—   r˜   r”   r•   r›   rœ   rµ   r•   r�   rž   rŸ   r    r¡   r^   r]   r¢   )NNF)r…  r†  r�   r˜   r]   r¢   )r�   r^   r©  r•   rª  r\   r]   r¢   )r]   rs   )r  )rv   r^   r]   r¶  )r�   r^   r]   r¾  )r�   r^   r]   rÃ  )r,  TNNNFT)r“   r^   rÅ  r˜   r”   r•   rØ   r˜   rÆ  r˜   r]   r¬   )r™   r^   r]   r^   )NNrQ   r…   )r‘   rÚ  r[   r^   r¡   r^   r]   rÃ  )NTFNNNNNNFNNNr…   T)r�   r^   r‘   r’   rš   r�  r—   r˜   r”   r•   r›   rœ   rµ   r•   r�   r˜   r¡   r^   rr  r˜   r]   r¢   )rÌ   rG   )r�   r^   r—   r˜   r]   rG   )r�   r^   r]   rG   )1rý   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rå   ré   Úpropertyrì   rî   ró   rõ   rø   rþ   r  r  r	  r  r  r"  r&  r*  rã   rÇ   rº   r5  rñ   rÅ   rP  rT  rq  r«   r÷   r—   r¨  r­  rÂ   r½  r   rM  rÍ  rÕ  rë   ru  rF  rv  r:  rû  r  rÚ   rZ   rX   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Ø $ØØØØØØØ ð'<*ð <*ð <*ð <*ð <*ð|ð ð ð ð
ð ð ð ð$ð ð ð ð ð rZ   r¬   c                  ó`   — e Zd ZU dZded<   ded<   ded<   	 	 	 	 	 ddd„Zdd„Zdd„Zddd„ZdS )rH  aa  
    Define the iteration interface on a table

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

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

    Tr˜   Úis_an_indexableÚis_data_indexable)ÚfreqÚtzÚ
index_nameNrf   r^   Úcnamer\   r]   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.)rS   r^   r¹   r›  rª  Útyprf   r(  rc  Úposr%  r&  r'  r¡  r|   rÏ   ÚmetadataÚset_pos)rä   rf   r›  rª  r*  r(  rc  r+  r%  r&  r'  r¡  r|   rÏ   r,  s                  rX   rå   zIndexCol.__init__  sÚ   € õ" ˜$¥Ñ$Ô$ð 	6ÝÐ4Ñ5Ô5Ð5àˆŒØˆŒ	ØˆŒØˆŒ	Ø�]˜dˆŒ
ØˆŒ	ØˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒØˆŒ
ØˆŒ	Ø ˆŒàˆ?Ø�LŠL˜ÑÔÐõ ˜$œ)¥SÑ)Ô)Ð)Ð)Ð)Ý˜$œ*¥cÑ*Ô*Ð*Ð*Ð*Ð*Ð*rZ   ri   c                ó   — | j         j        S r`   )r*  Úitemsizerè   s    rX   r/  zIndexCol.itemsize/  s   € ð ŒxÔ Ð rZ   c                ó   — | j         › d�S )NÚ_kindre   rè   s    rX   Ú	kind_attrzIndexCol.kind_attr4  ó   € à”)Ð"Ð"Ð"Ð"rZ   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     rX   r-  zIndexCol.set_pos8  s/   € àˆŒØˆ?˜tœxÐ3Ø!ˆDŒHŒOˆOˆOð ˆ?Ð3Ð3rZ   c           
     óà   — t          t          t          | j        | j        | j        | j        | j        f¦  «        ¦  «        }d                     d„ t          g d¢|¦  «        D ¦   «         ¦  «        S )Nú,c                ó"   — g | ]\  }}|› d |› �‘ŒS ©z->rÚ   ©ro   r�   r‘   s      rX   rr   z%IndexCol.__repr__.<locals>.<listcomp>C  ó:   € ð ð ð á�C˜ð Ð!Ð!˜%Ð!Ð!ðð ð rZ   )rf   r(  rc  r+  rª  )
rt   Úmapr@   rf   r(  rc  r+  rª  Újoinrk  ©rä   Útemps     rX   r	  zIndexCol.__repr__>  sy   € ÝÝ•˜tœy¨$¬*°d´iÀÄÈ4Ì9ÐUÑVÔVñ
ô 
ˆð �xŠxðð å"%Ð&NÐ&NÐ&NÐPTÑ"UÔ"Uðñ ô ñ
ô 
ð 	
rZ   ÚotherÚobjectc                ó>   ‡ ‡— t          ˆˆ fd„dD ¦   «         ¦  «        S )úcompare 2 col itemsc              3  ó`   •K  — | ](}t          ‰|d ¦  «        t          ‰|d ¦  «        k    V — Œ)d S r`   ©r³  ©ro   r�   r@  rä   s     €€rX   rŒ  z"IndexCol.__eq__.<locals>.<genexpr>K  óT   øè è € ð 
ð 
àõ �D˜!˜TÑ"Ô"¥g¨e°Q¸Ñ&=Ô&=Ò=ð
ð 
ð 
ð 
ð 
ð 
rZ   )rf   r(  rc  r+  ©r‰  ©rä   r@  s   ``rX   Ú__eq__zIndexCol.__eq__I  sA   øø€ åð 
ð 
ð 
ð 
ð 
à5ð
ñ 
ô 
ñ 
ô 
ð 	
rZ   c                ó.   — |                       |¦  «         S r`   )rJ  rI  s     rX   Ú__ne__zIndexCol.__ne__P  s   € Ø—;’;˜uÑ%Ô%Ð%Ð%rZ   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    rX   rÉ  zIndexCol.is_indexedS  s6   € õ �t”z 6Ñ*Ô*ð 	à�5Ý�t”z”¨¬
Ñ3Ô3Ô>Ð>rZ   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$          $ r d|v rd|d<    ||fi |¤Ž}Y nw xY wt'          || j        ¦  «        }	|	|	fS )zV
        Convert the data from this selection to the appropriate pandas type.
        Nrf   r%  ÚMÚi8c                óˆ   — t          j        | |                     dd ¦  «        ¬¦  «                             |d         ¦  «        S )Nr%  )r%  rf   )r/   Úfrom_ordinalsrñ   Ú_rename)r[  Úkwdss     rX   r¨   z"IndexCol.convert.<locals>.<lambda>{  sD   € ­Ô(AØ˜Ÿš ¨Ñ.Ô.ð)ñ )ô )çŠgØ�V”ñô ð rZ   )rS   rT   Úndarrayrü   ÚdtypeÚfieldsr(  rÍ  rY   rª  Ú_maybe_convertr'  r%  r-   r   Úis_np_dtyper'   r,   r¹   Ú_set_tzr&  )
rä   r›  r¥   r[   r¡   Úval_kindrÈ   ÚfactoryÚnew_pd_indexÚfinal_pd_indexs
             rX   ÚconvertzIndexCol.convert[  s�  € õ ˜&¥"¤*Ñ-Ô-Ð;Ð;­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øÝð 	5ð 	5ð 	5ð ˜ÐÐØ!%��v‘Ø"˜7 6Ð4Ð4¨VÐ4Ð4ˆLˆLˆLð	5øøøõ ! ¨t¬wÑ7Ô7ˆØ˜~Ð-Ð-s   Ä	D ÄD9Ä8D9c                ó   — | j         S )zreturn the values©r›  rè   s    rX   Ú	take_datazIndexCol.take_data�  s
   € àŒ{ÐrZ   c                ó   — | j         j        S r`   )r|   r´  rè   s    rX   ÚattrszIndexCol.attrs‘  ó   € àŒzÔ"Ð"rZ   c                ó   — | j         j        S r`   ©r|   Údescriptionrè   s    rX   rk  zIndexCol.description•  ó   € àŒzÔ%Ð%rZ   c                ó8   — t          | j        | j        d¦  «        S )z!return my current col descriptionN)r³  rk  r(  rè   s    rX   ÚcolzIndexCol.col™  s   € õ �tÔ'¨¬°TÑ:Ô:Ð:rZ   c                ó   — | j         S ©zreturn my cython valuesrd  rè   s    rX   ÚcvalueszIndexCol.cvaluesž  s   € ð Œ{ÐrZ   rB   c                ó*   — t          | j        ¦  «        S r`   )r%  r›  rè   s    rX   r&  zIndexCol.__iter__£  s   € Ý�D”KÑ Ô Ð rZ   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)r/  r+  )rY   rª  rS   r†  rñ   rf   r*  r/  rŒ   Ú	StringColr+  )rä   r›   s     rX   Úmaybe_set_sizezIndexCol.maybe_set_size¦  s�   € õ ˜4œ9Ñ%Ô%¨Ò1Ð1Ý˜,­Ñ-Ô-ð ;Ø+×/Ò/°´	Ñ:Ô:�àÐ'¨D¬HÔ,=ÀÒ,LÐ,LÝ"™9œ9×.Ò.¸È$Ì(Ð.ÑSÔS�”��ð 2Ð1ð (Ð'Ð,LÐ,LrZ   c                ó   — d S r`   rÚ   rè   s    rX   Úvalidate_nameszIndexCol.validate_names³  ó   € ØˆrZ   ÚhandlerÚAppendableTabler—   c                óì   — |j         | _         |                      ¦   «          |                      |¦  «         |                      |¦  «         |                      |¦  «         |                      ¦   «          d S r`   )r|   Úvalidate_colÚvalidate_attrÚvalidate_metadataÚwrite_metadataÚset_attr)rä   rz  r—   s      rX   Úvalidate_and_setzIndexCol.validate_and_set¶  sj   € Ø”]ˆŒ
Ø×ÒÑÔÐØ×Ò˜6Ñ"Ô"Ð"Ø×Ò˜wÑ'Ô'Ð'Ø×Ò˜GÑ$Ô$Ð$Ø�Š‰ŒˆˆˆrZ   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 itemsizert  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)rY   rª  rn  r/  r¹   r(  )rä   r/  Úcs      rX   r}  zIndexCol.validate_col¾  s”   € õ ˜4œ9Ñ%Ô%¨Ò1Ð1Ø”ˆAØˆ}ØÐ#Ø#œ}�HØ”: Ò(Ð(Ý$ð<¸hð <ð <Ø œJð<ð <àœJð<ð <ð <ñô ð ð ”zÐ!àˆtrZ   c                ó˜   — |rCt          | j        | j        d ¦  «        }|�(|| j        k    rt	          d|› d| j        › d�¦  «        ‚d S d S d S )Nzincompatible kind in col [ú - rX  )r³  rg  r2  rª  rÀ   )rä   r—   Úexisting_kinds      rX   r~  zIndexCol.validate_attrÑ  sq   € àð 	Ý# D¤J°´ÀÑEÔEˆMØÐ(¨]¸d¼iÒ-GÐ-GÝØO°ÐOÐOÀ4Ä9ÐOÐOÐOñô ð ð	ð 	à(Ð(Ð-GÐ-GrZ   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 [rX  )Ú_info_fieldsr³  Ú
setdefaultrf   rñ   ry   ÚwarningsÚwarnr   r   Úsetattrr¹   )rä   rÕ  r�   r‘   ÚidxÚexisting_valueÚwss          rX   Ú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	!ð 	!rZ   c                óv   — |                      | j        ¦  «        }|�| j                             |¦  «         dS dS )z!set my state from the passed infoN)rñ   rf   Ú__dict__Úupdate)rä   rÕ  r�  s      rX   Úset_infozIndexCol.set_infoù  s=   € à�hŠh�t”yÑ!Ô!ˆØˆ?ØŒM× Ò  Ñ%Ô%Ð%Ð%Ð%ð ˆ?rZ   c                óF   — t          | j        | j        | j        ¦  «         dS )zset the kind for this columnN)r�  rg  r2  rª  rè   s    rX   r�  zIndexCol.set_attrÿ  s    € å�”
˜DœN¨D¬IÑ6Ô6Ð6Ð6Ð6rZ   c                ó¶   — | j         dk    rG| j        }|                     | j        ¦  «        }|�&|�&t	          ||dd¬¦  «        st          d¦  «        ‚dS dS dS dS )z:validate that kind=category does not change the categoriesÚcategoryNT©Ú
strict_nanÚdtype_equalzEcannot append a categorical with different categories to the existing)rÏ   r,  Úread_metadatar(  r*   r¹   )rä   rz  Únew_metadataÚcur_metadatas       rX   r  zIndexCol.validate_metadata	  sŒ   € àŒ9˜
Ò"Ð"Øœ=ˆLØ"×0Ò0°´Ñ<Ô<ˆLàÐ(Ø Ð,Ý(Ø  ,¸4ÈTðñ ô ð -õ
 !ð;ñô ð ð #Ð"ð )Ð(Ø,Ð,Ð,Ð,rZ   c                óX   — | j         �"|                     | j        | j         ¦  «         dS dS )zset the meta dataN)r,  r€  r(  )rä   rz  s     rX   r€  zIndexCol.write_metadata	  s2   € àŒ=Ð$Ø×"Ò" 4¤:¨t¬}Ñ=Ô=Ð=Ð=Ð=ð %Ð$rZ   )NNNNNNNNNNNNN)rf   r^   r(  r\   r]   r¢   r  r
  )r+  ri   r]   r¢   ©r@  rA  r]   r˜   r  )r›  rO  r[   r^   r¡   r^   r]   rP  r   r`   r  )rz  r{  r—   r˜   r]   r¢   )r—   r˜   r]   r¢   )rz  r{  r]   r¢   )"rý   r  r  r  r#  r  r$  r‹  rå   r  r/  r2  r-  r	  rJ  rL  rÉ  rb  re  rg  rk  rn  rq  r&  rv  rx  r‚  r}  r~  r“  r—  r�  r  r€  rÚ   rZ   rX   r"  r"  ò  s¹  € € € € € € ðð ð !€OÐ Ð Ð Ñ Ø"ÐÐ"Ð"Ð"Ñ"Ø/Ð/Ð/€Lð
 ØØØ ØØØØØØØØØð)+ð )+ð )+ð )+ð )+ðV ð!ð !ð !ñ „Xð!ð ð#ð #ð #ñ „Xð#ð"ð "ð "ð "ð	
ð 	
ð 	
ð 	
ð
ð 
ð 
ð 
ð&ð &ð &ð &ð ð?ð ?ð ?ñ „Xð?ð0.ð 0.ð 0.ð 0.ðdð ð ð ð#ð #ñ „Xð#ð ð&ð &ñ „Xð&ð ð;ð ;ñ „Xð;ð ðð ñ „Xðð!ð !ð !ð !ðTð Tð Tð Tð Tðð ð ð ðð ð ð ðð ð ð ð&ð ð ð ð!ð !ð !ð !ð>&ð &ð &ð &ð7ð 7ð 7ð 7ðð ð ð ð">ð >ð >ð >ð >ð >rZ   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 tabler]   r˜   c                ó   — dS ©NFrÚ   rè   s    rX   rÉ  zGenericIndexCol.is_indexed	  ó   € àˆurZ   r›  rO  r[   r^   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
        )rS   rT   rX  rü   r0   ru   )rä   r›  r¥   r[   r¡   rš   s         rX   rb  zGenericIndexCol.convert!	  sG   € õ ˜&¥"¤*Ñ-Ô-Ð;Ð;­t°F©|¬|Ñ;Ô;Ð-å�3˜v™;œ;Ñ'Ô'ˆØ�eˆ|ÐrZ   r¢   c                ó   — d S r`   rÚ   rè   s    rX   r�  zGenericIndexCol.set_attr3	  ry  rZ   Nr  )r›  rO  r[   r^   r¡   r^   r]   r¨  r  )rý   r  r  r  r  rÉ  rb  r�  rÚ   rZ   rX   r¤  r¤  	  s`   € € € € € ØDÐDàðð ð ñ „Xððð ð ð ð$ð ð ð ð ð rZ   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¡  Nrf   r^   r(  r\   rY  úDtypeArg | Noner]   r¢   c                ó|   •— t          ¦   «                              |||||||||	|
|¬¦  «         || _        || _        d S )N)rf   r›  rª  r*  r+  r(  r&  r¡  r|   rÏ   r,  )Úsuperrå   rY  rÌ  )rä   rf   r›  rª  r*  r(  r+  r&  r¡  r|   rÏ   r,  rY  rÌ  Ú	__class__s                 €rX   rå   zDataCol.__init__H	  s[   ø€ õ  	‰Œ×ÒØØØØØØØØØØØð 	ñ 	
ô 	
ð 	
ð ˆŒ
ØˆŒ	ˆ	ˆ	rZ   c                ó   — | j         › d�S )NÚ_dtypere   rè   s    rX   Ú
dtype_attrzDataCol.dtype_attrh	  s   € à”)Ð#Ð#Ð#Ð#rZ   c                ó   — | j         › d�S )NÚ_metare   rè   s    rX   Ú	meta_attrzDataCol.meta_attrl	  r3  rZ   c           
     óà   — t          t          t          | j        | j        | j        | j        | j        f¦  «        ¦  «        }d                     d„ t          g d¢|¦  «        D ¦   «         ¦  «        S )Nr7  c                ó"   — g | ]\  }}|› d |› �‘ŒS r9  rÚ   r:  s      rX   rr   z$DataCol.__repr__.<locals>.<listcomp>w	  r;  rZ   )rf   r(  rY  rª  Úshape)
rt   r<  r@   rf   r(  rY  rª  r¹  r=  rk  r>  s     rX   r	  zDataCol.__repr__p	  s~   € ÝÝÝ˜tœy¨$¬*°d´jÀ$Ä)ÈTÌZÐXñô ñ
ô 
ˆð
 �xŠxðð å"%Ð&QÐ&QÐ&QÐSWÑ"XÔ"Xðñ ô ñ
ô 
ð 	
rZ   r@  rA  r˜   c                ó>   ‡ ‡— t          ˆˆ fd„dD ¦   «         ¦  «        S )rC  c              3  ó`   •K  — | ](}t          ‰|d ¦  «        t          ‰|d ¦  «        k    V — Œ)d S r`   rE  rF  s     €€rX   rŒ  z!DataCol.__eq__.<locals>.<genexpr>	  rG  rZ   )rf   r(  rY  r+  rH  rI  s   ``rX   rJ  zDataCol.__eq__}	  sA   øø€ åð 
ð 
ð 
ð 
ð 
à6ð
ñ 
ô 
ñ 
ô 
ð 	
rZ   rÌ  rI   c                óˆ   — |€J ‚| j         �J ‚t          |¦  «        \  }}|| _        || _         t          |¦  «        | _        d S r`   )rY  Ú_get_data_and_dtype_namerÌ  Ú_dtype_to_kindrª  )rä   rÌ  Ú
dtype_names      rX   Úset_datazDataCol.set_data„	  sO   € ØÐÐÐØŒzÐ!Ð!Ð!å3°DÑ9Ô9ÑˆˆjàˆŒ	ØˆŒ
Ý" :Ñ.Ô.ˆŒ	ˆ	ˆ	rZ   c                ó   — | j         S )zreturn the data©rÌ  rè   s    rX   re  zDataCol.take_dataŽ	  s
   € àŒyÐrZ   r›  rE   c                ó   — |j         }|j        }|j        }|j        dk    r	d|j        f}t          |t          ¦  «        r)|j        }|                      ||j         j	        ¬¦  «        }næt          j        |d¦  «        st          |t          ¦  «        r|                      |¦  «        }n¦t          j        |d¦  «        r|                      |¦  «        }n{t          |¦  «        r*t!          ¦   «                              ||d         ¬¦  «        }nBt%          |¦  «        r|                      ||¦  «        }n|                      ||j	        ¬¦  «        }|S )zW
        Get an appropriately typed and shaped pytables.Col object for values.
        rk   ©rª  rR  Úmr   ©r/  r¹  )rY  r/  r¹  r”  ÚsizerS   r5   ÚcodesÚget_atom_datarf   r   r\  r'   Úget_atom_datetime64Úget_atom_timedelta64r"   rŒ   Ú
ComplexColr$   Úget_atom_string)rö  r›  rY  r/  r¹  rÈ  Úatoms          rX   Ú	_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àˆrZ   c                óT   — t          ¦   «                              ||d         ¬¦  «        S )Nr   rÆ  ©rŒ   ru  ©rö  r¹  r/  s      rX   rÍ  zDataCol.get_atom_string²	  s#   € å‰yŒy×"Ò"¨H¸EÀ!¼HÐ"ÑEÔEÐErZ   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ÚUIntrE   ÚperiodÚInt64Col)rÀ  Ú
capitalizer³  rŒ   )rö  rª  Úk4Úcol_nameÚkcaps        rX   Úget_atom_coltypezDataCol.get_atom_coltype¶	  s}   € ð �?Š?˜6Ñ"Ô"ð 	$Ø�a�b�b”ˆBØ%˜b�~�~�~ˆHˆHØ�_Š_˜XÑ&Ô&ð 	$à!ˆHˆHà—?’?Ñ$Ô$ˆDØ�|�|�|ˆHå•w‘y”y (Ñ+Ô+Ð+rZ   c                óN   —  |                       |¬¦  «        |d         ¬¦  «        S )NrÄ  r   ©r¹  ©rÞ  ©rö  r¹  rª  s      rX   rÉ  zDataCol.get_atom_dataÅ	  s*   € à.ˆs×#Ò#¨Ð#Ñ.Ô.°U¸1´XÐ>Ñ>Ô>Ð>rZ   c                óR   — t          ¦   «                              |d         ¬¦  «        S ©Nr   rà  ©rŒ   rÙ  ©rö  r¹  s     rX   rÊ  zDataCol.get_atom_datetime64É	  ó!   € å‰yŒy×!Ò!¨¨a¬Ð!Ñ1Ô1Ð1rZ   c                óR   — t          ¦   «                              |d         ¬¦  «        S rä  rå  ræ  s     rX   rË  zDataCol.get_atom_timedelta64Í	  rç  rZ   c                ó.   — t          | j        dd ¦  «        S )Nr¹  )r³  rÌ  rè   s    rX   r¹  zDataCol.shapeÑ	  s   € å�t”y '¨4Ñ0Ô0Ð0rZ   c                ó   — | j         S rp  rÂ  rè   s    rX   rq  zDataCol.cvaluesÕ	  s   € ð ŒyÐrZ   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³  rg  r2  rs   r›  r¹   r³  rY  )rä   r—   Úexisting_fieldsÚexisting_dtypes       rX   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Ð.JrZ   rO  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]©rY  r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   ©r   Úfromordinal©ro   r�  s     rX   rr   z#DataCol.convert.<locals>.<listcomp>
  s#   € Ð<Ð<Ð<¨Q•TÔ% aÑ(Ô(Ð<Ð<Ð<rZ   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   ©r   Úfromtimestamprø  s     rX   rr   z#DataCol.convert.<locals>.<listcomp>"
  s#   € Ð>Ð>Ð>¨q•TÔ'¨Ñ*Ô*Ð>Ð>Ð>rZ   rš  éÿÿÿÿF)Ú
categoriesr¡  Úvalidate©rÍ  ÚOrt  ©r¥   r[   r¡   )#rS   rT   rX  rü   rY  rZ  r(  r*  r½  r¾  rª  rY   rÏ   r,  r¡  r&  rÀ  r]  ÚasarrayrA  r¹   Úravelr-   Úfloat64r4   ÚanyÚastyperi   ÚcumsumÚ_valuesr5   Ú
from_codesrÀ   Ú_unconvert_string_arrayr›  )rä   r›  r¥   r[   r¡   Ú	convertedr¿  rª  rÏ   r,  r¡  r&  rY  rý  rÈ  Úmasks                   rX   rb  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�  rg  r2  r›  r¶  rÏ   rY  r³  rè   s    rX   r�  zDataCol.set_attrK
  s^   € å�”
˜DœN¨D¬KÑ8Ô8Ð8Ý�”
˜DœN¨D¬IÑ6Ô6Ð6ØŒzÐ%Ð%Ð%Ý�”
˜DœO¨T¬ZÑ8Ô8Ð8Ð8Ð8rZ   )NNNNNNNNNNNN)rf   r^   r(  r\   rY  r­  r]   r¢   r
  r¢  )rÌ  rI   r]   r¢   )r›  rI   r]   rE   )rª  r^   r]   rÓ  ©rª  r^   r]   rE   r  )r›  rO  r[   r^   r¡   r^   )rý   r  r  r  r#  r$  r‹  rå   r  r³  r¶  r	  rJ  rÀ  re  ÚclassmethodrÏ  rÍ  rÞ  rÉ  rÊ  rË  r¹  rq  r~  rb  r�  Ú__classcell__©r°  s   @rX   r¬  r¬  7	  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ð 9rZ   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 indexedTr]   r¢   c                óp   — t          t          | j        ¦  «        j        ¦  «        st	          d¦  «        ‚d S )Nú-cannot have non-object label DataIndexableCol)r$   r-   r›  rY  r¹   rè   s    rX   rx  zDataIndexableCol.validate_namesX
  s;   € Ý�u T¤[Ñ1Ô1Ô7Ñ8Ô8ð 	NåÐLÑMÔMÐMð	Nð 	NrZ   c                óF   — t          ¦   «                              |¬¦  «        S )N)r/  rÑ  rÒ  s      rX   rÍ  z DataIndexableCol.get_atom_string]
  s   € å‰yŒy×"Ò"¨HÐ"Ñ5Ô5Ð5rZ   rª  r^   rE   c                ó>   —  |                       |¬¦  «        ¦   «         S )NrÄ  rá  râ  s      rX   rÉ  zDataIndexableCol.get_atom_dataa
  s!   € à.ˆs×#Ò#¨Ð#Ñ.Ô.Ñ0Ô0Ð0rZ   c                óB   — t          ¦   «                              ¦   «         S r`   rå  ræ  s     rX   rÊ  z$DataIndexableCol.get_atom_datetime64e
  ó   € å‰yŒy×!Ò!Ñ#Ô#Ð#rZ   c                óB   — t          ¦   «                              ¦   «         S r`   rå  ræ  s     rX   rË  z%DataIndexableCol.get_atom_timedelta64i
  r  rZ   Nr  r  )rý   r  r  r  r$  rx  r  rÍ  rÉ  rÊ  rË  rÚ   rZ   rX   r  r  S
  s©   € € € € € Ø5Ð5àÐðNð Nð Nð Nð
 ð6ð 6ñ „[ð6ð ð1ð 1ð 1ñ „[ð1ð ð$ð $ñ „[ð$ð ð$ð $ñ „[ð$ð $ð $rZ   r  c                  ó   — e Zd ZdZdS )ÚGenericDataIndexableColz(represent a generic pytables data columnN)rý   r  r  r  rÚ   rZ   rX   r  r  n
  s   € € € € € Ø2Ð2Ð2Ð2rZ   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.
    r^   Úpandas_kindr{   Úformat_typeútype[DataFrame | Series]Úobj_typeri   r”  r¬   rÔ   Fr˜   rl  rQ   r…   rÌ   rG   r[   r\   r¡   r]   r¢   c                ó$  — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚t          €J ‚t          |t          j        ¦  «        sJ t          |¦  «        ¦   «         ‚|| _        || _        t          |¦  «        | _        || _	        d S r`   )
rS   r¬   rü   r†   rG   rÔ   rÌ   rc   r[   r¡   )rä   rÔ   rÌ   r[   r¡   s        rX   rå   zFixed.__init__†
  s‚   € õ ˜&¥(Ñ+Ô+Ð9Ð9­T°&©\¬\Ñ9Ô9Ð+ÝÐ%Ð%Ð%Ý˜%¥¤Ñ1Ô1Ð>Ð>µ4¸±;´;Ñ>Ô>Ð1ØˆŒØˆŒ
Ý(¨Ñ2Ô2ˆŒØˆŒˆˆrZ   c                óh   — | j         d         dk    o!| j         d         dk    o| j         d         dk     S )Nr   rk   é
   é   )Úversionrè   s    rX   Úis_old_versionzFixed.is_old_version•
  s4   € àŒ|˜AŒ !Ò#ÐU¨¬°Q¬¸2Ò(=ÐUÀ$Ä,ÈqÄ/ÐTUÒBUÐUrZ   ú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 r`   ©ri   rZ  s     rX   rŒ  z Fixed.version.<locals>.<genexpr>ž
  s(   è è € Ð?Ð? q�C ™FœFÐ?Ð?Ð?Ð?Ð?Ð?rZ   ú.r&  r]  )r   r   r   )rY   r³  rÌ   r´  rt   r  ru   rˆ   )rä   r'  s     rX   r'  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°  )rY   r³  rÌ   r´  rè   s    rX   r°  zFixed.pandas_type¥
  s!   € å�w t¤zÔ':¸MÈ4ÑPÔPÑQÔQÐQrZ   c                óè   — |                       ¦   «          | j        }|�Ot          |t          t          f¦  «        r%d                     d„ |D ¦   «         ¦  «        }d|› d�}| j        d›d|› d�S | j        S )	ú(return a pretty representation of myselfNr7  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   ©r@   rZ  s     rX   rr   z"Fixed.__repr__.<locals>.<listcomp>¯
  s   € Ð">Ð">Ð">°q¥<°¡?¤?Ð">Ð">Ð">rZ   ú[rX  ú12.12z	 (shape->ú))rG  r¹  rS   rs   rt   r=  r°  )rä   rW   Újshapes      rX   r	  zFixed.__repr__©
  s‡   € à�ŠÑÔÐØŒJˆØˆ=Ý˜!�d¥E˜]Ñ+Ô+ð "ØŸšÐ">Ð">¸AÐ">Ñ">Ô">Ñ?Ô?�Ø!˜�M�M�M�ØÔ&Ð;Ð;Ð;°qÐ;Ð;Ð;Ð;ØÔÐrZ   c                ó~   — t          | j        ¦  «        | j        _        t          t          ¦  «        | j        _        dS )zset my pandas type & versionN)r^   r  rg  r°  Ú_versionr+  rè   s    rX   rý  zFixed.set_object_info´
  s-   € å!$ TÔ%5Ñ!6Ô!6ˆŒ
ÔÝ$'­¡M¤MˆŒ
Ô!Ð!Ð!rZ   c                ó.   — t          j         | ¦  «        }|S r`   rÿ  )rä   Únew_selfs     rX   rÍ  z
Fixed.copy¹
  s   € Ý”9˜T‘?”?ˆØˆrZ   c                ó   — | j         S r`   )rE  rè   s    rX   r¹  zFixed.shape½
  rï   rZ   c                ó   — | j         j        S r`   ©rÌ   rÄ   rè   s    rX   rm  zFixed.pathnameÁ
  rl  rZ   c                ó   — | j         j        S r`   )rÔ   rÖ   rè   s    rX   rÖ   zFixed._handleÅ
  s   € àŒ{Ô"Ð"rZ   c                ó   — | j         j        S r`   )rÔ   râ   rè   s    rX   râ   zFixed._filtersÉ
  s   € àŒ{Ô#Ð#rZ   c                ó   — | j         j        S r`   )rÔ   rß   rè   s    rX   rß   zFixed._complevelÍ
  s   € àŒ{Ô%Ð%rZ   c                ó   — | j         j        S r`   )rÔ   rá   rè   s    rX   rá   zFixed._fletcher32Ñ
  s   € àŒ{Ô&Ð&rZ   c                ó   — | j         j        S r`   )rÌ   r´  rè   s    rX   rg  zFixed.attrsÕ
  rh  rZ   c                ó   — dS ©zset our object attributesNrÚ   rè   s    rX   Ú	set_attrszFixed.set_attrsÙ
  ó   € € € rZ   c                ó   — dS )zget our object attributesNrÚ   rè   s    rX   Ú	get_attrszFixed.get_attrsÜ
  rG  rZ   c                ó   — | j         S )zreturn my storable©rÌ   rè   s    rX   ÚstorablezFixed.storableß
  s   € ð ŒzÐrZ   c                ó   — dS r¦  rÚ   rè   s    rX   rü  zFixed.is_existsä
  r§  rZ   c                ó.   — t          | j        dd ¦  «        S )NrE  )r³  rL  rè   s    rX   rE  zFixed.nrowsè
  s   € å�t”} g¨tÑ4Ô4Ð4rZ   úLiteral[True] | Nonec                ó   — |€dS dS )z%validate against an existing storableNTrÚ   rI  s     rX   rþ  zFixed.validateì
  s   € àˆ=Ø�4ØˆtrZ   Nc                ó   — dS )ú+are we trying to operate on an old version?NrÚ   )rä   rv   s     rX   Úvalidate_versionzFixed.validate_versionò
  rG  rZ   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)rL  rI  )rä   rW   s     rX   rG  zFixed.infer_axesõ
  s*   € ð
 ŒMˆØˆ9Ø�5Ø�ŠÑÔÐØˆtrZ   r°   r•   r±   c                ó    — t          d¦  «        ‚)Nz>cannot read on an abstract storer: subclasses should implement©r¼   ©rä   rv   r²   r°   r±   s        rX   r?  z
Fixed.read   s   € õ "ØLñ
ô 
ð 	
rZ   c                ó    — t          d¦  «        ‚)Nz?cannot write on an abstract storer: subclasses should implementrV  ©rä   rú  rÈ   s      rX   rþ  zFixed.write  s   € Ý!ØMñ
ô 
ð 	
rZ   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
        Trx  Nz#cannot delete on an abstract storer)r}  r~  rÖ   r  rÌ   rÀ   )rä   rv   r°   r±   s       rX   r  zFixed.delete  sK   € õ Œ<˜˜u dÑ+Ô+ð 	ØŒL×$Ò$ T¤Z¸4Ð$Ñ@Ô@Ð@Ø�4åÐ=Ñ>Ô>Ð>rZ   )rQ   r…   )
rÔ   r¬   rÌ   rG   r[   r\   r¡   r^   r]   r¢   r  )r]   r)  r
  r  )r]   r  r  )r]   rO  r`   ©NNNN©r°   r•   r±   r•   r  )r°   r•   r±   r•   r]   r¢   )!rý   r  r  r  r  r   rl  rå   r  r(  r'  r°  r	  rý  rÍ  r¹  rm  rÖ   râ   rß   rá   rg  rF  rI  rL  rü  rE  rþ  rS  rG  r?  rþ  r  rÚ   rZ   rX   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ð?ð ?ð ?ð ?ð ?ð ?ð ?rZ   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Ú   )ro   rW  r�  s      rX   r�  zGenericFixed.<dictcomp>"  s   € ÐCÐCÐC¡4 1 a˜!˜QÐCÐCÐCrZ   r  Ú
attributesr]   r^   c                ó8   — | j                              |d¦  «        S )NÚ )Ú_index_type_maprñ   )rä   rö  s     rX   Ú_class_to_aliaszGenericFixed._class_to_alias&  s   € ØÔ#×'Ò'¨¨RÑ0Ô0Ð0rZ   c                óp   — t          |t          ¦  «        r|S | j                             |t          ¦  «        S r`   )rS   rü   Ú_reverse_index_maprñ   r-   )rä   Úaliass     rX   Ú_alias_to_classzGenericFixed._alias_to_class)  s2   € Ý�e�TÑ"Ô"ð 	àˆLØÔ&×*Ò*¨5µ%Ñ8Ô8Ð8rZ   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_classrc  c                óÈ   — t          j        | j        | j        |¬¦  «        }t	          j        |d ¬¦  «        }|�(|                     d¦  «                             |¦  «        }|S )N)rY  r%  re   ÚUTC)r6   Ú_simple_newr›  rY  r,   Útz_localizeÚ
tz_convert)r›  r%  r&  ÚdtaÚresults        rX   r}   z*GenericFixed._get_index_factory.<locals>.f8  sf   € å#Ô/Ø”M¨¬¸Dðñ ô �õ 'Ô2°3¸TÐBÑBÔB�Ø�>Ø#×/Ò/°Ñ6Ô6×AÒAÀ"ÑEÔE�FØ�rZ   c                óx   — t          |¦  «        }t          j        | |¬¦  «        }t          j        |d ¬¦  «        S )Nrô  re   )r)   r7   rn  r/   )r›  r%  r&  rY  Úparrs        rX   r}   z*GenericFixed._get_index_factory.<locals>.fE  s:   € Ý# DÑ)Ô)�Ý"Ô.¨v¸UÐCÑCÔC�Ý"Ô.¨t¸$Ð?Ñ?Ô?Ð?rZ   r%  r&  zutf-8r  )
ri  rY   r³  r,   r/   r-   r2   rS   ÚbytesrV   )rä   rg  rk  r}   r_  rÈ   s         rX   Ú_get_index_factoryzGenericFixed._get_index_factory/  s  € Ø×*Ò*Ý�G E¨=¸"Ñ=Ô=Ñ>Ô>ñ
ô 
ˆð �-Ò'Ð'ðð ð ð ð ˆGˆGØ�KÒ'Ð'ð@ð @ð @ð @ð
 ˆGˆGà!ˆGàˆØ�Uˆ?ˆ?Ø" 6œ]ˆF�6‰NØ�eÐ#Ð#å(�à�5ˆ=ˆ=Ý˜% œ+¥uÑ-Ô-ð +à$ Tœ{×1Ò1°'Ñ:Ô:��t‘�ð  % Tœ{��t‘Ø¥-Ð/Ð/Ð/Ð/à˜ˆÐrZ   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²   rv   s      rX   Úvalidate_readzGenericFixed.validate_read`  sJ   € ð ÐÝðTñô ð ð ÐÝðYñô ð ð ÐrZ   r˜   c                ó   — dS )NTrÚ   rè   s    rX   rü  zGenericFixed.is_existso  s   € àˆtrZ   c                óJ   — | j         | j        _         | j        | j        _        dS rE  )r[   rg  r¡   rè   s    rX   rF  zGenericFixed.set_attrss  s    € à"œmˆŒ
ÔØ œKˆŒ
ÔÐÐrZ   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…   )rc   r³  rg  r[   rY   r¡   ra  r�  )rä   r  s     rX   rI  zGenericFixed.get_attrsx  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rZ   c                ó.   — |                       ¦   «          d S r`   )rF  rY  s      rX   rþ  zGenericFixed.write  s   € Ø�ŠÑÔÐÐÐrZ   Nr�   r°   r•   r±   c                ó  — ddl }t          | j        |¦  «        }|j        }t          |dd¦  «        }t	          ||j        ¦  «        r|d         ||…         }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´  rS   ÚVLArrayrY   rT   rù  rÀ  r]  r  ÚT)rä   r�   r°   r±   r‡   r  rg  r  ÚretrY  r¹  r&  s               rX   Ú
read_arrayzGenericFixed.read_array‚  s'  € àˆˆˆå�t”z 3Ñ'Ô'ˆØ”ˆå˜U L°%Ñ8Ô8ˆ
å�d˜FœNÑ+Ô+ð 	6Ø�q”'˜% ˜*Ô%ˆCˆCå#¥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àˆJrZ   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: )rY   r³  rg  Úread_multi_indexrÌ   Úread_index_noderÀ   )rä   r�   r°   r±   Úvarietyr  rš   s          rX   Ú
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ÐErZ   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š   )rS   r.   r�  rg  Úwrite_multi_indexÚ_convert_indexr[   r¡   Úwrite_arrayr›  r³  rÌ   rª  r´  rf   r,   r/   re  rü   rk  r2   r%  r&  Ú_get_tz)rä   r�   rš   r  r  s        rX   Ú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Ð4HrZ   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�  rg  rì  Ú	enumeraterk  ÚlevelsrÈ  ÚnamesrS   rY  r(   r¼   r�  r[   r¡   r‘  r›  r³  rÌ   rª  r´  rf   )rä   r�   rš   ÚiÚlevÚlevel_codesrf   Ú	level_keyÚ
conv_levelr  Ú	label_keys              rX   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ð 	5rZ   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›  rd  )	r³  rg  r“  rÌ   r‹  r—   rf   r„  r.   )rä   r�   r°   r±   rì  rš  rÈ  r›  rœ  rŸ  r  r�  r¡  rž  s                 rX   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ð
ñ 
ô 
ð 	
rZ   r  rG   c                óP  — |||…         }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 |	¤Ž}
||
_	        |
S )Nr¹  r   rô  rf   )r   rA  rã  rY  )r´  rT   Úprodr¹  rù  r€  rY   rª  rg   rf   rv  Ú_unconvert_indexr[   r¡   rA  )rä   r  r°   r±   rÌ  rª  rf   rg  r_  rÈ   rš   s              rX   r‹  zGenericFixed.read_index_nodeù  s_  € ð �E˜$�JÔˆð �d”mÐ#Ð#­¬°´Ô0CÑ(DÔ(DÈÒ(IÐ(IÝ”8˜DœMÔ/°t´}Ô7OÐPÑPÔPˆDÝ˜tœ}Ô1Ñ2Ô2ˆØˆà�T”]Ð"Ð"Ý˜tœ}Ô1Ñ2Ô2ˆDÝ" 4Ñ(Ô(ˆDà”ˆØ×1Ò1°%Ñ8Ô8‰ˆ�àÐ%Ð%Ð%Ø�GÝ Ø˜$¨¬¸t¼{ðñ ô ðð õ ð	ð
 ðð ˆEˆEð �GÝ Ø˜$¨¬¸t¼{ðñ ô ðð ð ð	ð ˆEð ˆŒ
àˆrZ   r‘   rI   c                ó  — t          j        d|j        z  ¦  «        }| j                             | j        ||¦  «         t          | j        |¦  «        }t          |j        ¦  «        |j	        _
        |j        |j	        _        dS )zwrite a 0-len array©rk   N)rT   rù  r”  rÖ   Úcreate_arrayrÌ   r³  r^   rY  r´  r€  r¹  )rä   r�   r‘   Úarrr  s        rX   Úwrite_array_emptyzGenericFixed.write_array_empty  sm   € õ Œh�t˜eœjÑ(Ñ)Ô)ˆØŒ×!Ò! $¤*¨c°3Ñ7Ô7Ð7Ý�t”z 3Ñ'Ô'ˆÝ#& u¤{Ñ#3Ô#3ˆŒÔ Ø#œkˆŒÔÐÐrZ   rú  rH   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 …<   �n”|                      ||¦  «         �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          ¦   «                              ¦   «         ¦  «        }|                      |¦  «         �n·t/          j!        |j        d¦  «        rg| j         "                    | j        || #                    d¦  «        ¦  «         tI          |j        ¦  «        tK          | j        |¦  «        j&        _'        �n6t          |j        tP          ¦  «        rt| j         "                    | j        ||j)        ¦  «         tK          | j        |¦  «        }tU          |j+        ¦  «        |j&        _+        d|j        j,        › d�|j&        _'        n¨t/          j!        |j        d¦  «        rT| j         "                    | j        || #                    d¦  «        ¦  «         dtK          | 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Û   ©Úskipnart  r‰  rR  rS  údatetime64[rX  rÅ  rò  ).r:   rÌ   rÖ   r  rÇ  rS   rY  r&   r¼   rN  r‚  râ   r   r¹   rŒ   ÚAtomÚ
from_dtypeÚcreate_carrayr¹  rª  rü   rT   Úobject_r   Úinfer_dtyperz   r�  rŽ  r   r   Úcreate_vlarrayÚ
ObjectAtomr—   r\  r¨  Úviewr^   r³  r´  r€  r'   Úasi8r’  r&  Úunitr  )rä   r�   rú  r*  r‘   Úempty_arrayr  rÎ  ÚcaÚinferred_typer’  Úvlarrr  s                rX   r‘  zGenericFixed.write_array(  sà  € õ ˜c°Ð6Ñ6Ô6ˆà�$”*ÐÐØŒL×$Ò$ T¤Z°Ñ5Ô5Ð5ð ”j A’oˆØˆ
å�e”kÕ#3Ñ4Ô4ð 	Ý%ð/ñô ð ð ð 	"Ý�u˜cÑ"Ô"ð "àœ�Ø!�
àˆØŒ=Ð$Ý�*Ñ%Ô%ð >ð >å‘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Øð 	>Ø×"Ò" 3¨Ñ.Ô.Ð.Ð.àŒL×%Ò% d¤j°#°uÑ=Ô=Ð=à7A��”
˜CÑ Ô Ô)Ô4Ð4Ð4s   Â),C!Ã!C%Ã(C%r
  r  r  r  r  )r�   r^   r°   r•   r±   r•   r]   r-   )r�   r^   rš   r-   r]   r¢   )r�   r^   rš   r.   r]   r¢   )r�   r^   r°   r•   r±   r•   r]   r.   )r  rG   r°   r•   r±   r•   r]   r-   )r�   r^   r‘   rI   r]   r¢   r`   )r�   r^   rú  rH   r*  r«  r]   r¢   )rý   r  r  r  r,   r/   rd  r*  rg  ra  r  re  ri  rv  rx  r  rü  rF  rI  rþ  r„  r�  r“  r�  rŠ  r‹  rª  r‘  rÚ   rZ   rX   r^  r^    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ðð ð ð ð ð  ð  ð  ð  ðF FJðFð Fð Fð Fð Fð5ð 5ð 5ð 5ð.5ð 5ð 5ð 5ð4 FJð
ð 
ð 
ð 
ð 
ð0 HLð$ð $ð $ð $ð $ðL*ð *ð *ð *ð BFðXBð XBð XBð XBð XBð XBð XBrZ   r^  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ß  rf   rA   c                óh   — 	 t          | j        j        ¦  «        fS # t          t          f$ r Y d S w xY wr`   )ru   rÌ   r›  rÀ   rˆ   rè   s    rX   r¹  zSeriesFixed.shape‰  sD   € ð	Ý˜œ
Ô)Ñ*Ô*Ð,Ð,øÝ�>Ð*ð 	ð 	ð 	Ø�4�4ð	øøøs   ‚ œ1°1Nr°   r•   r±   r]   r1   c                ó*  — |                       ||¦  «         |                      d||¬¦  «        }|                      d||¬¦  «        }t          ||| j        d¬¦  «        }t          ¦   «         r&t          |d¬¦  «        r|                     d¦  «        }|S )	Nrš   rˆ  r›  F)rš   rf   rÍ  Tr®  ústring[pyarrow_numpy])rx  r�  r„  r1   rf   r   r   r  )rä   rv   r²   r°   r±   rš   r›  rr  s           rX   r?  zSeriesFixed.read�  s™   € ð 	×Ò˜7 EÑ*Ô*Ð*Ø—’ ¨u¸4�Ñ@Ô@ˆØ—’ °¸T�ÑBÔBˆÝ˜ e°$´)À%ÐHÑHÔHˆÝ%Ñ'Ô'ð 	<­O¸FÈ4Ð,PÑ,PÔ,Pð 	<Ø—]’]Ð#:Ñ;Ô;ˆFØˆrZ   r¢   c                óÀ   •—  t          ¦   «         j        |fi |¤Ž |                      d|j        ¦  «         |                      d|¦  «         |j        | j        _        d S )Nrš   r›  )r¯  rþ  r“  rš   r‘  rf   rg  )rä   rú  rÈ   r°  s      €rX   rþ  zSeriesFixed.writeŸ  s^   ø€ Ø�‰ŒŒ�cÐ$Ð$˜VÐ$Ð$Ð$Ø×Ò˜ #¤)Ñ,Ô,Ð,Ø×Ò˜ 3Ñ'Ô'Ð'Øœ(ˆŒ
ŒˆˆrZ   r[  ©r°   r•   r±   r•   r]   r1   r  )rý   r  r  r  ra  r  r  r¹  r?  rþ  r  r  s   @rX   rê  rê  ƒ  s”   ø€ € € € € € Ø€KØ�€Jà€N€N�Nàðð ñ „Xðð ØØ Øðð ð ð ð ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #rZ   rê  c                  ó^   ‡ — e Zd ZU ddgZded<   edd„¦   «         Z	 	 	 	 ddd„Zdˆ fd„Zˆ xZ	S )ÚBlockManagerFixedr”  Únblocksri   r]   ú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¹  rk   )	r”  r“  rÇ  r³  rÌ   Úblock0_valuesrs   r—   rˆ   )rä   r”  r*  rœ  r  r¹  s         rX   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          ¦   «         r&t          |d¬¦  «        r|                     d¦  «        }|                     |¦  «         Œºt          |¦  «        dk    rMt!          |dd¬¦  «        }t#          ¦   «         r|                     ¦   «         }|                     |d	¬¦  «        }|S t          |d         |d         ¬¦  «        S )Nr   r  rc  rˆ  rÊ  rË  r  rk   F©r²   rš   rÍ  Tr®  rÂ  )rc  rÍ  )r²   rÍ  ©r²   rš   )rx  r"  Ú_get_block_manager_axisr“  r”  r�  r—   rÇ  r„  r™  r+   r‚  r   r   r  ru   r3   r   rÍ  rž  )rä   rv   r²   r°   r±   Úselect_axisrƒ  rœ  r@  rA  Úaxr*  ÚdfsÚ	blk_itemsr›  ÚdfÚouts                    rX   r?  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Ý)Ñ+Ô+ð 8µÀÈtÐ0TÑ0TÔ0Tð 8Ø—Y’YÐ6Ñ7Ô7�Ø�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Ð8rZ   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 formatrc  r  )r*  rË  )r¯  rþ  rS   Ú_mgrr<   Ú_as_managerÚis_consolidatedÚconsolidater”  rg  r™  rƒ  Ú	is_uniquer¹   r“  ru   ÚblocksrÇ  r*  rš  Úmgr_locsr‘  r›  )	rä   rú  rÈ   rÌ  rœ  rÒ  ÚblkrÔ  r°  s	           €rX   rþ  zBlockManagerFixed.writeï  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Ð.Ð.Ð.°	Ñ:Ô:Ð:Ð:ð		;ð 	;rZ   )r]   rÈ  r[  )r°   r•   r±   r•   r]   r+   r  )
rý   r  r  ra  r  r  r¹  r?  rþ  r  r  s   @rX   rÆ  rÆ  ¦  s˜   ø€ € € € € € Ø˜)Ð$€Jà€L€L�Làðð ð ñ „Xðð8 ØØ Øð'9ð '9ð '9ð '9ð '9ðR;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;rZ   rÆ  c                  ó   — e Zd ZdZeZdS )rë  rà  N)rý   r  r  r  r+   r"  rÚ   rZ   rX   rë  rë  	  s   € € € € € Ø€KØ€H€H€HrZ   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|   r^   r   rÜ  rk   zint | list[Hashable]rš  Trs   r,  Nr…   rÔ   r¬   rÌ   rG   r[   r\   r¡   Ú
index_axesúlist[IndexCol] | Noner^  ú list[tuple[AxisInt, Any]] | NoneÚvalues_axesúlist[DataCol] | NonerŸ   úlist | NonerÕ  údict | Noner]   r¢   c                óº   •— t          ¦   «                              ||||¬¦  «         |pg | _        |pg | _        |pg | _        |pg | _        |	pi | _        |
| _        d S )Nrã  )r¯  rå   rã  r^  ræ  rŸ   rÕ  r¥   )rä   rÔ   rÌ   r[   r¡   rã  r^  ræ  rŸ   rÕ  r¥   r°  s              €rX   rå   zTable.__init__.  so   ø€ õ 	‰Œ×Ò˜ °À&ÐÑIÔIÐIØ$Ð*¨ˆŒØ,Ð2°ˆÔØ&Ð,¨"ˆÔØ(Ð.¨BˆÔØ�J˜BˆŒ	ØˆŒˆˆrZ   c                óB   — | j                              d¦  «        d         S )NÚ_r   )rÜ  r  rè   s    rX   Útable_type_shortzTable.table_type_shortC  s   € àŒ×$Ò$ SÑ)Ô)¨!Ô,Ð,rZ   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 )r1  r7  rc  z,dc->[rX  r.  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   ©r^   rZ  s     rX   rr   z"Table.__repr__.<locals>.<listcomp>O  s   € Ð:Ð:Ð:¨�S ™VœVÐ:Ð:Ð:rZ   r4  c                ó   — g | ]	}|j         ‘Œ
S rÚ   re   rÊ  s     rX   rr   z"Table.__repr__.<locals>.<listcomp>R  s   € Ð@Ð@Ð@¨1 ¤Ð@Ð@Ð@rZ   r5  z (typ->z,nrows->z,ncols->z,indexers->[r6  )rG  ru   rŸ   r=  r(  r'  rã  r°  rí  rE  Úncols)rä   Újdcr¥  ÚverÚjverÚjindex_axess         rX   r	  zTable.__repr__G  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ð	
rZ   r„  c                ó8   — | j         D ]}||j        k    r|c S ŒdS )zreturn the axis for cN)rƒ  rf   )rä   r„  r�   s      rX   ró   zTable.__getitem__Y  s1   € à”ð 	ð 	ˆAØ�A”FŠ{ˆ{Ø���ð àˆtrZ   c                ór  — |€dS |j         | j         k    r t          d|j         › d| j         › d�¦  «        ‚dD ]}t          | |d¦  «        }t          ||d¦  «        }||k    rUt          |¦  «        D ],\  }}||         }||k    rt	          d|› d|› d|› d�¦  «        ‚Œ-t          d|› d|› d|› d�¦  «        ‚Œ€dS )	z"validate against an existing tableNz'incompatible table_type with existing [r†  rX  )rã  r^  ræ  zinvalid combination of [z] on appending data [z] vs current table [)rÜ  rÀ   r³  r™  r¹   r{  )rä   r@  r„  ÚsvÚovrœ  ÚsaxÚoaxs           rX   rþ  zTable.validate`  sb  € àˆ=ØˆFàÔ˜tœÒ.Ð.Ýð<ØÔ$ð<ð <Ø)-¬ð<ð <ð <ñô ð ð
 Að 	ð 	ˆAÝ˜˜q $Ñ'Ô'ˆBÝ˜  4Ñ(Ô(ˆBØ�RŠxˆxõ (¨™mœmð ð ‘F�A�sà˜Qœ%�CØ˜c’z�zÝ(ð@°qð @ð @Ø #ð@ð @Ø9<ð@ð @ð @ñô ð ð "õ  ð,¨qð ,ð ,Àrð ,ð ,Ø&(ð,ð ,ð ,ñô ð ð ð	ð 	rZ   r˜   c                ó6   — t          | j        t          ¦  «        S )z@the levels attribute is 1 or a list in the case of a multi-index)rS   rš  rs   rè   s    rX   Úis_multi_indexzTable.is_multi_index�  s   € õ ˜$œ+¥tÑ,Ô,Ð,rZ   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¹   rS   r+   )rä   rú  rš  Ú	reset_objr€  s        rX   Úvalidate_multiindexzTable.validate_multiindex†  sˆ   € õ Ô'¨¬	¬Ñ8Ô8ˆð	ØŸšÑ)Ô)ˆIˆIøÝð 	ð 	ð 	ÝØTñô àðøøøøð	øøøõ ˜)¥YÑ/Ô/Ð/Ð/Ð/Ø˜&Ð Ð s    5 µ
A¿AÁAri   c                óH   — t          j        d„ | j        D ¦   «         ¦  «        S )z-based on our axes, compute the expected nrowsc                ó2   — g | ]}|j         j        d          ‘ŒS r]  )rq  r¹  ©ro   rœ  s     rX   rr   z(Table.nrows_expected.<locals>.<listcomp>š  s!   € ÐDÐDÐD¨q˜œ	œ¨Ô*ÐDÐDÐDrZ   )rT   r¤  rã  rè   s    rX   Únrows_expectedzTable.nrows_expected—  s%   € õ ŒwÐDÐD°D´OÐDÑDÔDÑEÔEÐErZ   c                ó   — d| j         v S )zhas this table been createdr|   rK  rè   s    rX   rü  zTable.is_existsœ  s   € ð ˜$œ*Ð$Ð$rZ   c                ó.   — t          | j        dd ¦  «        S ©Nr|   ©r³  rÌ   rè   s    rX   rL  zTable.storable¡  s   € å�t”z 7¨DÑ1Ô1Ð1rZ   c                ó   — | j         S )z,return the table group (this is my storable))rL  rè   s    rX   r|   zTable.table¥  s   € ð Œ}ÐrZ   c                ó   — | j         j        S r`   )r|   rY  rè   s    rX   rY  zTable.dtypeª  s   € àŒzÔÐrZ   c                ó   — | j         j        S r`   rj  rè   s    rX   rk  zTable.description®  rl  rZ   úitertools.chain[IndexCol]c                ó@   — t          j        | j        | j        ¦  «        S r`   )ri  rj  rã  ræ  rè   s    rX   rƒ  z
Table.axes²  s   € åŒ˜tœ°Ô0@ÑAÔAÐArZ   c                ó>   — t          d„ | j        D ¦   «         ¦  «        S )z.the number of total columns in the values axesc              3  ó>   K  — | ]}t          |j        ¦  «        V — Œd S r`   )ru   r›  rÊ  s     rX   rŒ  zTable.ncols.<locals>.<genexpr>¹  s*   è è € Ð;Ð; Q•3�q”x‘=”=Ð;Ð;Ð;Ð;Ð;Ð;rZ   )Úsumræ  rè   s    rX   rò  zTable.ncols¶  s$   € õ Ð;Ð;¨$Ô*:Ð;Ñ;Ô;Ñ;Ô;Ð;rZ   c                ó   — dS r¦  rÚ   rè   s    rX   Úis_transposedzTable.is_transposed»  r§  rZ   útuple[int, ...]c                ó‚   — t          t          j        d„ | j        D ¦   «         d„ | j        D ¦   «         ¦  «        ¦  «        S )z@return a tuple of my permutated axes, non_indexable at the frontc                ó8   — g | ]}t          |d          ¦  «        ‘ŒS r]  r-  rÊ  s     rX   rr   z*Table.data_orientation.<locals>.<listcomp>Ä  s"   € Ð8Ð8Ð8˜q•�Q�q”T‘”Ð8Ð8Ð8rZ   c                ó6   — g | ]}t          |j        ¦  «        ‘ŒS rÚ   )ri   rc  rÊ  s     rX   rr   z*Table.data_orientation.<locals>.<listcomp>Å  s    € Ð6Ð6Ð6 •�Q”V‘”Ð6Ð6Ð6rZ   )rt   ri  rj  r^  rã  rè   s    rX   Údata_orientationzTable.data_orientation¿  sL   € õ ÝŒOØ8Ð8 DÔ$7Ð8Ñ8Ô8Ø6Ð6 d¤oÐ6Ñ6Ô6ñô ñ
ô 
ð 	
rZ   údict[str, Any]c                ó¨   ‡ ‡— dddœŠd„ ‰ j         D ¦   «         }ˆfd„‰ j        D ¦   «         }ˆ fd„‰ j        D ¦   «         }t          ||z   |z   ¦  «        S )z<return a dict of the kinds allowable columns for this objectrš   r²   ©r   rk   c                ó    — g | ]}|j         |f‘ŒS rÚ   ©r(  rÊ  s     rX   rr   z$Table.queryables.<locals>.<listcomp>Ï  s   € Ð4Ð4Ð4˜qˆqŒw˜ˆlÐ4Ð4Ð4rZ   c                ó*   •— g | ]\  }}‰|         d f‘ŒS r`   rÚ   )ro   rc  r›  Ú
axis_namess      €rX   rr   z$Table.queryables.<locals>.<listcomp>Ð  s'   ø€ ÐOÐOÐO©<¨4°ˆz˜$Ô Ð&ÐOÐOÐOrZ   c                óX   •— g | ]&}|j         t          ‰j        ¦  «        v ¯|j        |f‘Œ'S rÚ   )rf   r’  rŸ   r(  )ro   r�  rä   s     €rX   rr   z$Table.queryables.<locals>.<listcomp>Ñ  s=   ø€ ð 
ð 
ð 
Ø°a´fÅÀDÔDUÑ@VÔ@VÐ6VÐ6VˆQŒW�aˆLÐ6VÐ6VÐ6VrZ   )rã  r^  ræ  r†  )rä   Úd1Úd2Úd3r"  s   `   @rX   Ú
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Ñ!Ô!Ð!rZ   c                ó$   — d„ | j         D ¦   «         S )zreturn a list of my index colsc                ó*   — g | ]}|j         |j        f‘ŒS rÚ   )rc  r(  r  s     rX   rr   z$Table.index_cols.<locals>.<listcomp>Ú  s!   € Ð;Ð;Ð; a�”˜œÐ!Ð;Ð;Ð;rZ   ©rã  rè   s    rX   Ú
index_colszTable.index_cols×  s   € ð <Ð;¨4¬?Ð;Ñ;Ô;Ð;rZ   r  c                ó$   — d„ | j         D ¦   «         S )zreturn a list of my values colsc                ó   — g | ]	}|j         ‘Œ
S rÚ   r   r  s     rX   rr   z%Table.values_cols.<locals>.<listcomp>Þ  s   € Ð2Ð2Ð2˜A�”Ð2Ð2Ð2rZ   )ræ  rè   s    rX   Úvalues_colszTable.values_colsÜ  s   € à2Ð2 Ô!1Ð2Ñ2Ô2Ð2rZ   r�   c                ó*   — | j         j        }|› d|› d�S )z)return the metadata pathname for this keyz/meta/z/metar>  r;  s      rX   Ú_get_metadata_pathzTable._get_metadata_pathà  s#   € à”
Ô&ˆØÐ)Ð)˜sÐ)Ð)Ð)Ð)rZ   r›  rO  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«   r0  r1   r[   r¡   r¥   )rä   r�   r›  s      rX   r€  zTable.write_metadataå  s^   € ð 	Œ�ŠØ×#Ò# CÑ(Ô(Ý�6 Ð&Ñ&Ô&ØØ”]Ø”;Ø”Lð 	ñ 	
ô 	
ð 	
ð 	
ð 	
rZ   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Å   r0  rò   s     rX   rž  zTable.read_metadata÷  sK   € å•7˜4œ: v¨tÑ4Ô4°c¸4Ñ@Ô@ÐLØ”;×%Ò% d×&=Ò&=¸cÑ&BÔ&BÑCÔCÐCØˆtrZ   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)r^   rÜ  rg  r+  r.  r^  rŸ   r¥   r[   r¡   rš  rÕ  rè   s    rX   rF  zTable.set_attrsý  s™   € å # D¤OÑ 4Ô 4ˆŒ
ÔØ $§¢Ñ 1Ô 1ˆŒ
ÔØ!%×!1Ò!1Ñ!3Ô!3ˆŒ
ÔØ$(Ô$7ˆŒ
Ô!Ø"&Ô"3ˆŒ
ÔØ!œ\ˆŒ
ÔØ"œmˆŒ
ÔØ œKˆŒ
ÔØ œKˆŒ
ÔØœ)ˆŒ
ŒˆˆrZ   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|  r^  NrŸ   rÕ  r¥   r[   r¡   r…   rš  c                ó    — g | ]}|j         ¯	|‘ŒS rÚ   ©r#  rÊ  s     rX   rr   z#Table.get_attrs.<locals>.<listcomp>  ó    € ÐKÐKÐK ¸Ô9JÐK˜1ÐKÐKÐKrZ   c                ó    — g | ]}|j         °	|‘ŒS rÚ   r6  rÊ  s     rX   rr   z#Table.get_attrs.<locals>.<listcomp>  ó    € ÐPÐPÐP !¸aÔ>OÐP˜AÐPÐPÐPrZ   )r³  rg  r^  rŸ   rÕ  r¥   rc   r[   rY   r¡   rš  Ú
indexablesrã  ræ  rè   s    rX   rI  zTable.get_attrs
  sñ   € å% d¤jÐ2BÀDÑIÔIÐOÈRˆÔÝ# D¤J°ÀÑEÔEÐKÈˆÔÝ˜DœJ¨°Ñ5Ô5Ð;¸ˆŒ	Ý˜tœz¨9°dÑ;Ô;ˆŒÝ(­°´¸ZÈÑ)NÔ)NÑOÔOˆŒÝ%¥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ˆÔÐÐrZ   c                óÈ   — |�]| j         rXt          d                     d„ | j        D ¦   «         ¦  «        z  }t	          j        |t          t          ¦   «         ¬¦  «         dS dS dS )rR  Nr.  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   rð  rZ  s     rX   rr   z*Table.validate_version.<locals>.<listcomp>  s   € Ð4RÐ4RÐ4RÀµS¸±V´VÐ4RÐ4RÐ4RrZ   r‰  )r(  rx   r=  r'  r�  rŽ  r   r   )rä   rv   r’  s      rX   rS  zTable.validate_version  s~   € àÐØÔ"ð Ý(¨3¯8ª8Ð4RÐ4RÀTÄ\Ð4RÑ4RÔ4RÑ+SÔ+SÑS�Ý”ØÝ*Ý/Ñ1Ô1ðñ ô ð ð ð ð Ððð rZ   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)rS   r†  r'  r¹   )rä   r›   ÚqrW  s       rX   Úvalidate_min_itemsizezTable.validate_min_itemsize!  s�   € ð
 ÐØˆFÝ˜,­Ñ-Ô-ð 	ØˆFà�OŠOÑÔˆØð 	ð 	ˆAà�HŠ}ˆ}ØØ˜ˆzˆzÝ ð"°ð "ð "ð "ñô ð ð ð		ð 	rZ   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š  r1  )rf   rc  r+  rª  r*  r|   rÏ   r,  c                óž  •— t          |t          ¦  «        sJ ‚t          }|‰v rt          }t	          ‰|¦  «        }t          |‰j        ¦  «        }t	          ‰|› d�d ¦  «        }t	          ‰|› d�d ¦  «        }t          |¦  «        }‰                     |¦  «        }t	          ‰|› d�d ¦  «        }	 |||||‰| z   |‰j	        |	||¬¦
  «
        }
|
S )Nr1  r²  rµ  )
rf   r(  r›  rª  r+  r*  r|   rÏ   r,  rY  )
rS   r^   r¬  r  r³  Ú_maybe_adjust_namer'  r¾  rž  r|   )rœ  r„  ÚklassrÎ  Úadj_namer›  rY  rª  ÚmdrÏ   rú  Úbase_posr¥  Údescrä   Útable_attrss              €€€€€rX   r}   zTable.indexables.<locals>.fY  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ð ˆJrZ   c                ó.   •— g | ]\  }} ‰||¦  «        ‘ŒS rÚ   rÚ   )ro   rœ  r„  r}   s      €rX   rr   z$Table.indexables.<locals>.<listcomp>~  s'   ø€ ÐRÐRÐR©¨¨1˜A˜A˜a ™GœGÐRÐRÐRrZ   )rk  r|   rg  r™  r+  r³  rž  r"  r—   r’  rŸ   ru   r–  r.  )rä   Ú_indexablesrœ  rc  rf   rÎ  rE  rÏ   r2  rª  Ú	index_colrF  r¥  rG  r}   rH  s   `          @@@@@rX   r:  zTable.indexables6  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àÐrZ   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     rX   rr   z&Table.create_index.<locals>.<listcomp>§  s"   € ÐIÐIÐI 1°QÔ5HÐI�q”wÐIÐIÐIrZ   r©  rª  ÚcomplexzíColumns containing complex values can be stored but cannot be indexed when using table format. Either use fixed format, set index=False, or do not include the columns containing complex values to data_columns when initializing the table.r   rk   zcolumn z/ is not a data_column.
In order to read column z: you must reload the dataframe 
into HDFStore and include z  with the data_columns argument.rÚ   )rG  rƒ  rS   rt   rs   r|   r³  r‹  rÉ  rš   r©  rª  Úremove_indexrü   rÀ  rÀ   r¬  r^  rˆ   )rä   r²   r©  rª  Úkwr|   r„  r�  rš   Úcur_optlevelÚcur_kinds              rX   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ð=$	ð $	rZ   r°   r•   r±   ú9list[tuple[np.ndarray, np.ndarray] | tuple[Index, Index]]c                ó  — t          | |||¬¦  «        }|                     ¦   «         }g }| j        D ]Y}|                     | j        ¦  «         |                     || j        | j        | j        ¬¦  «        }| 	                    |¦  «         ŒZ|S )a  
        Create the axes sniffed from the table.

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

        Returns
        -------
        List[Tuple[index_values, column_values]]
        rL  r  )
Ú	SelectionrÅ   rƒ  r—  rÕ  rb  r¥   r[   r¡   r—   )	rä   rv   r°   r±   Ú	selectionr›  r  r�   Úress	            rX   Ú
_read_axeszTable._read_axesØ  s›   € õ" ˜d¨%°uÀ4ÐHÑHÔHˆ	Ø×!Ò!Ñ#Ô#ˆàˆà”ð 	 ð 	 ˆAØ�JŠJ�t”yÑ!Ô!Ð!Ø—)’)ØØœØœØ”{ð	 ñ ô ˆCð �NŠN˜3ÑÔÐÐàˆrZ   r  c                ó   — |S )zreturn the data for this objrÚ   ©rö  rú  r  s      rX   Ú
get_objectzTable.get_objectú  s	   € ð ˆ
rZ   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 rd  rÚ   )ro   rW  Úexisting_data_columnss     €rX   rr   z/Table.validate_data_columns.<locals>.<listcomp>  s7   ø€ ð ð ð àØ˜H’}�}¨Ð2GÐ)GÐ)Gð à)GÐ)GÐ)GrZ   c                ó   •— g | ]}|‰v ¯|‘Œ	S rÚ   rÚ   )ro   r„  Úaxis_labelss     €rX   rr   z/Table.validate_data_columns.<locals>.<listcomp>#  s#   ø€ Ð<Ð<Ð<�a¨1°Ð+;Ð+;�Ð+;Ð+;Ð+;rZ   )
ru   rÕ  rñ   r¹   rs   rS   r†  r’  r–  r"  )rä   rŸ   r›   r^  rc  rÕ  r`  r^  s         @@rX   Úvalidate_data_columnszTable.validate_data_columnsÿ  sG  øø€ õ
 �>Ñ"Ô"ð 	ØˆIà*¨1Ô-ÑˆˆkØŒy�}Š}˜T 2Ñ&Ô&ˆØ�8Š8�FÑÔ˜|Ò+Ð+°Ð+Ýð/°Tð /ð /Ø ,ð/ð /ñô ð ð ˜4ÐÐÝ Ñ,Ô,ˆLˆLØÐ!ØˆLõ �l¥DÑ)Ô)ð 		Ý$'¨Ñ$5Ô$5Ð!Ý Ñ-Ô-ˆLØ×Òðð ð ð à)×.Ò.Ñ0Ô0ðñ ô ñô ð ð =Ð<Ð<Ð<˜<Ð<Ñ<Ô<Ð<rZ   r+   rþ  c                ó4  ‡‡— 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          ¦  «        r4|"j;        })d}'t'          j<        |"j=        ¦  «         >                    ¦   «         }(t          |"¦  «        \  }*}+ ||#|!t          |¦  «        |$||%|&|)|'|(|+|*¬¦  «        },|,                      |	¦  «         |                     |,¦  «         |dz  }�Œd„ |D ¦   «         }- t          | ¦  «        | j@        | j        | j        | j        ||
||-|	|¬¦
  «
        }.tƒ          | d¦  «        r| jB        |._B        |. C                    |¦  «         |r|r|. D                    | ¦  «         |.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â  rX  Nr   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rÚ   )Ú_get_axis_number)ro   r�   rú  s     €rX   rr   z&Table._create_axes.<locals>.<listcomp>Q  s'   ø€ Ð6Ð6Ð6¨A�×$Ò$ QÑ'Ô'Ð6Ð6Ð6rZ   Tc                ó   — g | ]	}|j         ‘Œ
S rÚ   r�  rÊ  s     rX   rr   z&Table._create_axes.<locals>.<listcomp>V  s   € Ð4Ð4Ð4˜q�A”FÐ4Ð4Ð4rZ   Fr&  rk   z<currently only support ndim-1 indexers in an AppendableTableÚnanc              3  ó$   •K  — | ]
}|‰v¯|V — Œd S r`   rÚ   )ro   r[  rƒ  s     €rX   rŒ  z%Table._create_axes.<locals>.<genexpr>n  s'   øè è € Ð6Ð6˜¨°¨¨�1¨¨¨¨Ð6Ð6rZ   r  r›  r›  rü   r  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colr›   r¥   r[   r¡   r²   r&  rš  )rf   r(  r›  r*  r+  rª  r&  r¡  rÏ   r,  rY  rÌ  c                ó*   — g | ]}|j         ¯	|j        ‘ŒS rÚ   )r$  rf   )ro   rn  s     rX   rr   z&Table._create_axes.<locals>.<listcomp>ü  s"   € ÐBÐBÐB˜C¨CÔ,AÐBˆsŒxÐBÐBÐBrZ   )
rÔ   rÌ   r[   r¡   rã  r^  ræ  rŸ   rÕ  r¥   rš  )ErS   r+   rÌ   rÒ   rÀ   rü   rG  rã  rs   rŸ   r¥   rÕ  r”  ru   r¹   r‘  rƒ  r^  r*   rT   Úarrayr˜  rŒ  r›  rý   r—   Ú_get_axis_namer�  r[   r¡   rc  r-  r“  rv  Ú_reindex_axisra  r[  re  Ú_get_blocks_and_itemsræ  r™  rk  r¬  r  r^   Ú
IndexErrorrû   Ú_maybe_convert_for_string_atomr›  rB  r'  rÏ  r¾  rY  rf   r³  r’  r&  r&   r¡  r  rý  r  r½  rÔ   rN  rš  r?  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_itemsrC  rf   ri  r€  Únew_nameÚdata_convertedrD  r*  rª  r&  rÏ   r,  r¡  rÌ  r¿  rn  ÚdcsÚ	new_tables/    ``                                            rX   Ú_create_axeszTable._create_axes%  s  øø€ õ@ ˜#�yÑ)Ô)ð 	Ø”JÔ&ˆEÝð'À%ð 'ð 'Ý˜s™)œ)ð'ð 'ð 'ñô ð ð ˆ<Ø�3ˆDð 7Ð6Ð6Ð6°Ð6Ñ6Ô6ˆð �?Š?ÑÔð 	!ØˆLØ4Ð4 D¤OÐ4Ñ4Ô4ˆDÝ Ô 1Ñ2Ô2ˆLØ”lˆGˆGð !ˆLà”9ˆàŒy˜AŠ~ˆ~ˆ~ˆ~åˆt‰9Œ9˜œ	 A™Ò%Ð%ÝØNñô ð ð
 $&Ðð ˆ?ØˆGõ Ð6Ð6Ð6Ð6˜fÐ6Ñ6Ô6Ñ6Ô6ˆàŒH�SŒMˆå˜1‘g”gˆØð 	-ÝÐ,Ñ-Ô-ˆGØÔ,¨WÔ5°aÔ8ˆJÝ#Ý”˜Ñ%Ô%Ý”˜Ñ$Ô$ØØ ð	ñ ô ð -õ $Ý”H�V KÑ0Ô0Ñ1Ô1Ý”H�V JÑ/Ô/Ñ0Ô0Ø#Ø $ð	ñ ô ð -ð #-�Kð ×"Ò" 3¨Ñ+Ô+ˆÝ˜QœW™œˆˆW‰Ý˜A‘w”wÔ'ˆˆV‰à×!Ò! 3¨Ð"4Ñ5Ô5Ð5ð �1ŒgˆØŒH�SŒMˆØ×&Ò& sÑ+Ô+ˆ	Ý" 9¨a°´ÀÄÑLÔLˆ	Øˆ	Œð 	×Ò˜!ÑÔÐØ×Ò˜hÑ'Ô'Ð'Ø× Ò  Ñ.Ô.Ð.à#˜ˆÝ�ÑÔˆØ�AŠvˆvˆvˆvõ Ð%Ñ&Ô&¨!Ò+Ð+Ð+Ð+Ø#ð 	1ð 	1ˆAÝ  Q q¤T¨1¨Q¬4Ñ0Ô0ˆCˆCà”^ qÒ(ˆ
ð ×1Ò1Ø˜,Ð(:ñ
ô 
ˆð —’  ZÑ0Ô0×=Ò=Ñ?Ô?ˆà ×6Ò6Ø�<Ð!3°TÔ5EÀ|ñ
ô 
Ñˆ�	ð
 ˆÝ!*­3¨v°yÑ+AÔ+AÑ!BÔ!Bð I	ñ I	Ñˆ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ð IØ(Ô0�Ø!�Ýœ: nÔ&?Ñ@Ô@×FÒFÑHÔH�å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à  rq  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Þ  )ro   rß  Úmgrs     €rX   rr   zFTable._get_blocks_and_items.<locals>.get_blk_items.<locals>.<listcomp>$  s)   ø€ ÐGÐGÐG°S�C”I—N’N 3¤<Ñ0Ô0ÐGÐGÐGrZ   )rÝ  )r…  s   `rX   Úget_blk_itemsz2Table._get_blocks_and_items.<locals>.get_blk_items#  s   ø€ ØGÐGÐGÐG¸C¼JÐGÑGÔGÐGrZ   r   r�  c                ó\   — i | ])\  }}t          |                     ¦   «         ¦  «        ||f“Œ*S rÚ   )rt   Útolist)ro   Úbr|  s      rX   r�  z/Table._get_blocks_and_items.<locals>.<dictcomp>B  sD   € ð ð ð á�A�wõ �g—n’nÑ&Ô&Ñ'Ô'¨!¨W¨ðð ð rZ   r7  c                ó,   — g | ]}t          |¦  «        ‘ŒS rÚ   r3  )ro   Úitems     rX   rr   z/Table._get_blocks_and_items.<locals>.<listcomp>O  s    € Ð&LÐ&LÐ&L¸d¥|°DÑ'9Ô'9Ð&LÐ&LÐ&LrZ   z+cannot match existing table structure for [z] on appending data)rS   rØ  r<   rÙ  r   r=   rs   rÝ  ru   r-   r—  rž  r–  rk  rt   r›  rn  r—   ro  rû   r=  r¹   )rà  rq  rs  ræ  rŸ   r†  r…  rÝ  rÔ  rc  r`  Ú
new_labelsr„  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear*  r‰  r|  r€  Újitemss                         rX   rn  zTable._get_blocks_and_items  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;rV  rU  c                óp  ‡ ‡— |�t          |¦  «        }|�G‰ j        r@t          ‰ j        t           ¦  «        sJ ‚‰ j        D ]}||vr|                     d|¦  «         Œ‰ j        D ]\  }}t          ‰|||¦  «        Šˆˆ fd„}Œ|j        �-|j                             ¦   «         D ]\  }}	}
 |||
|	¦  «        ŠŒ‰S )zprocess axes filtersNr   c                óL  •— ‰j         D �]}‰                     |¦  «        }‰                     |¦  «        }|€J ‚| |k    rX‰	j        r'|                     t          ‰	j        ¦  «        ¦  «        } |||¦  «        }‰                     |¬¦  «        |         c S | |v rut          t          ‰| ¦  «        j
        ¦  «        }t          |¦  «        }t          ‰t          ¦  «        rd|z
  } |||¦  «        }‰                     |¬¦  «        |         c S �Œ
t          d| › d�¦  «        ‚)Nr�  rk   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSrd  Ú	_get_axisrþ  Úunionr-   rš  r�  r;   r³  r›  rS   r+   r¹   )
ÚfieldÚfiltÚoprw  Úaxis_numberÚaxis_valuesÚtakersr›  rú  rä   s
           €€rX   Úprocess_filterz*Table.process_axes.<locals>.process_filterj  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ÐSrZ   )	rs   rþ  rS   rš  Úinsertr^  rm  Úfilterr™   )rä   rú  rV  r²   r  rc  Úlabelsr�  r—  r™  r˜  s   ``         rX   Úprocess_axeszTable.process_axesY  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��àˆ
rZ   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|   )rf   r„  c                ó(   — i | ]}|j         |j        “ŒS rÚ   )r(  r*  rÊ  s     rX   r�  z,Table.create_description.<locals>.<dictcomp>Ÿ  s   € Ð>Ð>Ð>¨q˜AœG Q¤UÐ>Ð>Ð>rZ   rk  é	   )r”   r–   rØ   rÛ   )Úmaxr  rƒ  rß   rŒ   r-  rá   râ   )rä   r–   r”   rØ   r„  r…  rÛ   s          rX   Ú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àˆrZ   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
        FrL  Nrk   rˆ  )rS  rG  rU  Úselect_coordsrŸ  r™   rS  r  r¥  Úilocr›  r-   )
rä   rv   r°   r±   rV  Úcoordsr—  r™  r˜  rÌ  s
             rX   rN  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‰}Œ}ÐrZ   rQ  c                ó  — |                       ¦   «          |                      ¦   «         sdS |�t          d¦  «        ‚| j        D ]¸}||j        k    r«|j        st          d|› d�¦  «        ‚t          | j        j	        |¦  «        }| 
                    | j        ¦  «         |                     |||…         | j        | j        | j        ¬¦  «        }t!          t#          |d         |j        ¦  «        |d¬¦  «        c S Œ¹t'          d|› d	�¦  «        ‚)
zj
        return a single column from the table, generally only indexables
        are interesting
        FNz4read_column does not currently accept a where clausezcolumn [z=] can not be extracted individually; it is not data indexabler  rk   )rf   rÍ  z] not found in the table)rS  rG  rÀ   rƒ  rf   r$  r¹   r³  r|   r‹  r—  rÕ  rb  r¥   r[   r¡   r1   r]  r&  rû   )rä   rQ  rv   r°   r±   r�   r„  Ú
col_valuess           rX   rS  zTable.read_columnÉ  sB  € ð 	×ÒÑÔÐð �ŠÑ Ô ð 	Ø�5àÐÝÐRÑSÔSÐSð ”ð 	Uð 	UˆAØ˜œÒÐØÔ*ð Ý$ð3 6ð 3ð 3ð 3ñô ð õ ˜DœJœO¨VÑ4Ô4�Ø—
’
˜4œ9Ñ%Ô%Ð%ØŸYšYØ�e˜D�j”MØ œLØ!œ]Øœ;ð	 'ñ ô �
õ �g j°¤m°Q´TÑ:Ô:ÀÈeÐTÑTÔTÐTÐTÐTð!  õ$ ÐB &ÐBÐBÐBÑCÔCÐCrZ   )Nr…   NNNNNN)rÔ   r¬   rÌ   rG   r[   r\   r¡   r^   rã  rä  r^  rå  ræ  rç  rŸ   rè  rÕ  ré  r]   r¢   r
  )r„  r^   r  r  )rú  r’   r]   rÿ  r  )r]   r  )r]   r  )r]   r  )r]   r  )r�   r^   r]   r^   )r�   r^   r›  rO  r]   r¢   r  r`   r  )rª  r\   r]   r¢   r  )r°   r•   r±   r•   r]   rS  ©r  r˜   )TNNN)rú  r+   rþ  r˜   )rà  r+   rq  r˜   )rV  rU  r]   r+   )r”   r•   rØ   r˜   r„  r•   r]   r  r\  )rQ  r^   r°   r•   r±   r•   )4rý   r  r  r  r  r   r  rš  rl  rå   r  rí  r	  ró   rþ  rþ  r  r  rü  rL  r|   rY  rk  rƒ  rò  r  r  r'  r+  r.  r0  r€  rž  rF  rI  rS  r?  r   r:  r¬  rX  r  r[  ra  r�  Ústaticmethodrn  r¡  r¦  rN  rS  r  r  s   @rX   r  r    sœ  ø€ € € € € € ðð ð. €KØ€KÐÐÐÑØ€O€O�OØ#$€FÐ$Ð$Ð$Ñ$Ø€Hà€N€N�Nð  $ØØ,0Ø;?Ø,0Ø$(Ø Øðð ð ð ð ð ð ð* ð-ð -ð -ñ „Xð-ð
ð 
ð 
ð 
ð$ð ð ð ðð ð ð ðB ð-ð -ð -ñ „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 ØØØðnð nð nð nð nð` ðA!ð A!ð A!ñ „\ðA!ðF5ð 5ð 5ð 5ð 5ðnð ð ð ð@ HLðð ð ð ð ð: Ø Øð)Dð )Dð )Dð )Dð )Dð )Dð )Dð )Dð )DrZ   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 readrV  rW  s        rX   r?  zWORMTable.readþ  s   € õ "Ð"EÑFÔFÐFrZ   r]   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 writerV  rY  s      rX   rþ  zWORMTable.write
  s   € õ "Ð"FÑGÔGÐGrZ   r[  r\  r  )rý   r  r  r  rÜ  r?  rþ  rÚ   rZ   rX   rò  rò  õ  sk   € € € € € ðð ð €Jð ØØ Øð
Gð 
Gð 
Gð 
Gð 
GðHð Hð Hð Hð Hð HrZ   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�   rr  r]   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„  rr  )r�   )rü  rÖ   r  rÌ   r�  rƒ  rx  r¦  rF  Úcreate_tablerÕ  rg  r‚  Ú
write_data)rä   rú  rƒ  r—   r–   r”   rØ   r›   rµ   r„  r�   r¥   rŸ   rr  r|   r�   Úoptionss                    rX   rþ  zAppendableTable.write  sM  € ð  ð 	:˜$œ.ð 	:ØŒL×$Ò$ T¤Z°Ñ9Ô9Ð9ð ×!Ò!ØØØØ%ØØ%ð "ñ 
ô 
ˆð ”ð 	ð 	ˆAØ×ÒÑÔÐÐàŒð 	?à×.Ò.ØØ#Ø%Ø)ð	 /ñ ô ˆGð �OŠOÑÔÐà%0ˆG�MÑ"ð 'ˆEŒMÔ& u¤{Ð>Ð>°gÐ>Ð>Ð>ð !œ:ˆŒÔð ”ð 	.ð 	.ˆAØ×Ò˜u fÑ-Ô-Ð-Ð-ð 	×Ò˜¨6ÐÑ2Ô2Ð2Ð2Ð2rZ   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ÿ  rk   Nc                ó   — g | ]	}|j         ‘Œ
S rÚ   )rq  rÊ  s     rX   rr   z.AppendableTable.write_data.<locals>.<listcomp>o  s   € Ð6Ð6Ð6 �1”9Ð6Ð6Ð6rZ   c                ó6   — g | ]}|                      ¦   «         ‘ŒS rÚ   )re  rÊ  s     rX   rr   z.AppendableTable.write_data.<locals>.<listcomp>u  s    € Ð:Ð:Ð: A�!—+’+‘-”-Ð:Ð:Ð:rZ   c           	     óœ   — g | ]I}|                      t          j        t          j        |j        ¦  «        |j        d z
  ¦  «        ¦  «        ‘ŒJS r§  )Ú	transposerT   ÚrollÚaranger”  rø  s     rX   rr   z.AppendableTable.write_data.<locals>.<listcomp>v  sB   € ÐVÐVÐVÈ!�!—+’+�bœg¥b¤i°´Ñ&7Ô&7¸¼À!¹ÑDÔDÑEÔEÐVÐVÐVrZ   r  rô  c                ó$   •— g | ]}|‰‰…         ‘ŒS rÚ   rÚ   )ro   r�   Úend_iÚstart_is     €€rX   rr   z.AppendableTable.write_data.<locals>.<listcomp>Š  s"   ø€ Ð;Ð;Ð;¨a˜˜7 5˜=Ô)Ð;Ð;Ð;rZ   c                ó$   •— g | ]}|‰‰…         ‘ŒS rÚ   rÚ   )ro   r�  rÂ  rÃ  s     €€rX   rr   z.AppendableTable.write_data.<locals>.<listcomp>Œ  s"   ø€ Ð:Ð:Ð:¨Q˜˜' %˜-Ô(Ð:Ð:Ð:rZ   )Úindexesr  r›  )rY  r›  r  ræ  r4   rÌ  r‰  rS   rT   rX  r—   r  ru   r  rã  r™  r¹  Úreshaperù  r  r“  Úwrite_data_chunk)rä   rµ   r�   r›  rE  Úmasksr�   r  rÅ  rÅ  Únindexesr›  Úbvaluesrœ  r�  Ú	new_shapeÚrowsÚchunksrÂ  rÃ  s                     @@rX   r·  zAppendableTable.write_dataT  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˜' %˜-Ô(Ð(À$Ø:Ð:Ð:Ð:Ð:°'Ð:Ñ:Ô:ð	 "ñ ô ð ð ð	ð 	rZ   rÌ  rO  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ÿ  )rT   r¤  r¹  ru   rù  rY  r›  r™  r  r  r˜   r‰  r|   r—   r5  )rä   rÌ  rÅ  r  r›  r�  rE  r›  rÉ  rœ  r�  rÅ  s               rX   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×ÒÑÔÐÐÐð	ð 	rZ   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 )	NTrx  rˆ  Frÿ  rk   r   rü  )ru   rE  rÖ   r  rÌ   r|   Úremove_rowsr5  rG  rU  r¨  r1   Úsort_valuesÚdiffrs   rš   r—   rž  rn  Úreversedrš  r“  )rä   rv   r°   r±   rE  r|   rV  r›  Úsorted_seriesÚlnrÔ  rÂ   Úpgr)  rÌ  s                  rX   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×ÒÑÔÐð ˆ	rZ   )NFNNNNNNFNNT)
r—   r˜   rµ   r•   r�   r˜   rr  r˜   r]   r¢   r  )rµ   r•   r�   r˜   r]   r¢   )
rÌ  rO  rÅ  rÎ  r  rÏ  r›  rÎ  r]   r¢   r  r\  )	rý   r  r  r  rÜ  rþ  r·  rÇ  r  rÚ   rZ   rX   r{  r{    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rZ   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ç  r&  r!  r"  r]   r˜   c                ó.   — | j         d         j        dk    S )Nr   rk   )rã  rc  rè   s    rX   r  z"AppendableFrameTable.is_transposedþ  s   € àŒ˜qÔ!Ô&¨!Ò+Ð+rZ   r  c                ó   — |r|j         }|S )zthese are written transposed)r‚  rZ  s      rX   r[  zAppendableFrameTable.get_object  s   € ð ð 	Ø”%ˆCØˆ
rZ   Nr°   r•   r±   c           	     óð  ‡ — ‰                       |¦  «         ‰                      ¦   «         sd S ‰                      |||¬¦  «        }t          ‰ j        ¦  «        r,‰ j                             ‰ j        d         d         i ¦  «        ni }ˆ fd„t          ‰ j        ¦  «        D ¦   «         }t          |¦  «        dk    sJ ‚|d         }||         d         }	g }
t          ‰ j        ¦  «        D �]4\  }}|‰ 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@t%          |t          ¦  «        rt/          |||¬¦  «        }nt/          j        |g||¬¦  «        }t3          ¦   «         r|j        j        dk    s8|j        |j        k                         ¦   «         sJ |j        |j        f¦   «         ‚t3          ¦   «         r&t=          |d¬¦  «        r|                     d¦  «        }|
                      |¦  «         �Œ6t          |
¦  «        dk    r	|
d         }ntC          |
d¬¦  «        }tE          ‰ |||¬¦  «        }‰  #                    |||¬¦  «        }|S )NrL  r   c                ó8   •— g | ]\  }}|‰j         d          u ¯|‘ŒS r]  r*  )ro   rœ  rÒ  rä   s      €rX   rr   z-AppendableFrameTable.read.<locals>.<listcomp>  s.   ø€ ÐPÐPÐP‘e�a˜°r¸T¼_ÈQÔ=OÐ7OÐ7O�Ð7OÐ7OÐ7OrZ   rk   rü   r.   r›  T©Úinplacerf   re   FrÎ  rÏ  r   r®  rÂ  r�  )rV  r²   )$rS  rG  rX  ru   r^  rÕ  rñ   r™  rƒ  ræ  r-   r.   Úfrom_tuplesÚ	set_namesr  r³  r‚  r”  rS   rT   rX  rÆ  r¹  r+   Ú_from_arraysr   rY  rª  Údtypesr‰  r   r  r—   r3   rU  r¡  )rä   rv   r²   r°   r±   rr  rÕ  ÚindsÚindrš   Úframesrœ  r�   Ú
index_valsrq  r‹  r›  r›  Úindex_Úcols_rÕ  rV  s   `                     rX   r?  zAppendableFrameTable.read	  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Ý˜vœx°¸fÈ5ÐQÑQÔQ��Ý˜F¥EÑ*Ô*ð SÝ˜v¨u¸FÐCÑCÔC��õ Ô+¨V¨H¸eÈ6ÐRÑRÔR�Ý.Ñ0Ô0ð T°V´\Ô5FÈ#Ò5MÐ5MØœ	 V¤\Ò1×6Ò6Ñ8Ô8ÐSÐS¸2¼9ÀfÄlÐ:SÑSÔSÐ8Ý)Ñ+Ô+ð 8µØØð1ñ 1ô 1ð 8ð —Y’YÐ6Ñ7Ô7�Ø�MŠM˜"ÑÔÐÑåˆv‰;Œ;˜!ÒÐØ˜”ˆBˆBå˜ QÐ'Ñ'Ô'ˆBå˜d¨%°uÀ4ÐHÑHÔHˆ	à×Ò˜r¨YÀÐÑHÔHˆØˆ	rZ   r  r­  r[  r\  )rý   r  r  r  r  rÜ  r”  r+   r"  r  r  r  r  r[  r?  rÚ   rZ   rX   rð  rð  ö  s¨   € € € € € € Ø2Ð2à€KØ#€JØ€DØ)2€HÐ2Ð2Ð2Ñ2àð,ð ,ð ,ñ „Xð,ð ðð ð ñ „[ðð ØØ ØðRð Rð Rð Rð Rð Rð RrZ   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å  r&  r]   r˜   c                ó   — dS r¦  rÚ   rè   s    rX   r  z#AppendableSeriesTable.is_transposedf  r§  rZ   r  c                ó   — |S r`   rÚ   rZ  s      rX   r[  z AppendableSeriesTable.get_objectj  s   € àˆ
rZ   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Ú   )rS   r+   rf   Úto_framer¯  rþ  r²   rˆ  )rä   rú  rŸ   rÈ   rf   r°  s        €rX   rþ  zAppendableSeriesTable.writeo  si   ø€ å˜#�yÑ)Ô)ð 	%Ø”8Ð'˜xˆDØ—,’,˜tÑ$Ô$ˆCØ�‰ŒŒÐK˜#¨C¬K×,>Ò,>Ñ,@Ô,@ÐKÐKÀFÐKÐKÐKÐKÐKrZ   r°   r•   r±   r1   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   rb  TrÞ  r›  )
rþ  rS   rš  rs   rž  r¯  r?  Ú	set_indexr©  rf   )	rä   rv   r²   r°   r±   rþ  r  rW   r°  s	           €rX   r?  zAppendableSeriesTable.readv  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ØˆrZ   r  r­  r`   r  r[  rÄ  )rý   r  r  r  r  rÜ  r”  r1   r"  r  r  r  r[  rþ  r?  r  r  s   @rX   rî  rî  ^  sÒ   ø€ € € € € Ø2Ð2à €KØ$€JØ€DØ€Hàðð ð ñ „Xðð ðð ð ñ „[ððLð Lð Lð Lð Lð Lð Lð ØØ Øðð ð ð ð ð ð ð ð ð ð rZ   rî  c                  ó,   ‡ — e Zd ZdZdZdZdˆ fd„Zˆ xZS )rï  r³  rä  ræ  r]   r¢   c                ó<  •— |j         pd}|                      |¦  «        \  }| _        t          | j        t          ¦  «        sJ ‚t	          | j        ¦  «        }|                     |¦  «         t          |¦  «        |_         t          ¦   «         j	        dd|i|¤Ž dS )rî  r›  rú  NrÚ   )
rf   r  rš  rS   rs   r—   r-   r²   r¯  rþ  )rä   rú  rÈ   rf   Únewobjr‹  r°  s         €rX   rþ  z AppendableMultiSeriesTable.write–  s–   ø€ àŒxÐ#˜8ˆØ"×6Ò6°sÑ;Ô;Ñˆ�”Ý˜$œ+¥tÑ,Ô,Ð,Ð,Ð,Ý�D”KÑ Ô ˆØ�Š�DÑÔÐÝ˜t™œˆŒØ�‰ŒŒÐ+Ð+˜&Ð+ FÐ+Ð+Ð+Ð+Ð+rZ   r  )rý   r  r  r  r  rÜ  rþ  r  r  s   @rX   rï  rï  �  sM   ø€ € € € € Ø2Ð2à €KØ)€Jð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,rZ   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Þ  r&  zlist[Hashable]rš  r]   r^   c                ó   — | j         S r`   )r  rè   s    rX   r°  zGenericTable.pandas_typeª  s   € àÔÐrZ   c                ó<   — t          | j        dd ¦  «        p| j        S r  r  rè   s    rX   rL  zGenericTable.storable®  s   € å�t”z 7¨DÑ1Ô1Ð?°T´ZÐ?rZ   r¢   c                ó´   — g | _         d| _        g | _        d„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        d„ | j        D ¦   «         | _        dS )r|  Nc                ó    — g | ]}|j         ¯	|‘ŒS rÚ   r6  rÊ  s     rX   rr   z*GenericTable.get_attrs.<locals>.<listcomp>¸  r7  rZ   c                ó    — g | ]}|j         °	|‘ŒS rÚ   r6  rÊ  s     rX   rr   z*GenericTable.get_attrs.<locals>.<listcomp>¹  r9  rZ   c                ó   — g | ]	}|j         ‘Œ
S rÚ   re   rÊ  s     rX   rr   z*GenericTable.get_attrs.<locals>.<listcomp>º  s   € Ð>Ð>Ð>¨˜QœVÐ>Ð>Ð>rZ   )r^  r¥   rš  r:  rã  ræ  rŸ   rè   s    rX   rI  zGenericTable.get_attrs²  sf   € à ˆÔØˆŒØˆŒàKÐK d¤oÐKÑKÔKˆŒØPÐP t¤ÐPÑPÔPˆÔØ>Ð>¨TÔ-=Ð>Ñ>Ô>ˆÔÐÐrZ   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   )rf   rc  r|   rÏ   r,  )rf   r+  r›  r*  r|   rÏ   r,  )rk  rž  r¤  r|   r™  Ú_v_namesrS   r^   r³  r  r—   )
rä   r…  rE  rÏ   rK  rJ  rœ  r  rÎ  r¥  s
             rX   r:  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Ñ"Ô"Ð"Ð"àÐrZ   c                ó    — t          d¦  «        ‚)Nz cannot write on an generic tablerV  )rä   rÈ   s     rX   rþ  zGenericTable.writeà  s   € Ý!Ð"DÑEÔEÐErZ   Nr
  r  )rý   r  r  r  r  rÜ  r”  r+   r"  r  r  r°  rL  rI  r   r:  rþ  rÚ   rZ   rX   rí  rí  ¡  sÂ   € € € € € € ØDÐDà€KØ €JØ€DØ€HØÐÐÑàð ð  ð  ñ „Xð ð ð@ð @ñ „Xð@ð?ð ?ð ?ð ?ð ð ð  ñ „^ð ðFFð Fð Fð Fð Fð FrZ   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è  r&  z^level_\d+$r]   r^   c                ó   — dS )NÚappendable_multirÚ   rè   s    rX   rí  z*AppendableMultiFrameTable.table_type_shortì  s   € à!Ð!rZ   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š  rS   rs   rž  r¯  rþ  )rä   rú  rŸ   rÈ   r  r°  s        €rX   rþ  zAppendableMultiFrameTable.writeñ  s¼   ø€ ØÐØˆLˆLØ˜TÐ!Ð!Øœ;×-Ò-Ñ/Ô/ˆLØ×3Ò3°CÑ8Ô8ÑˆˆTŒ[Ý˜$œ+¥tÑ,Ô,Ð,Ð,Ð,Ø”ð 	*ð 	*ˆAØ˜Ð$Ð$Ø×#Ò# A qÑ)Ô)Ð)øØ�‰ŒŒÐC˜#¨LÐCÐC¸FÐCÐCÐCÐCÐCrZ   r°   r•   r±   c                óò   •‡ — t          ¦   «                              ||||¬¦  «        }|                     ‰ j        ¦  «        }|j                             ˆ fd„|j        j        D ¦   «         ¦  «        |_        |S )Nrb  c                óL   •— g | ] }‰j                              |¦  «        rd n|‘Œ!S r`   )Ú
_re_levelsÚsearch)ro   rf   rä   s     €rX   rr   z2AppendableMultiFrameTable.read.<locals>.<listcomp>	  s2   ø€ ÐWÐWÐWÀ�T”_×+Ò+¨DÑ1Ô1Ð;ˆTˆT°tÐWÐWÐWrZ   )r¯  r?  rò  rš  rš   rá  r›  )rä   rv   r²   r°   r±   rÕ  r°  s   `     €rX   r?  zAppendableMultiFrameTable.readý  ss   øø€ õ ‰WŒW�\Š\ ¨w¸eÈ$ˆ\ÑOÔOˆØ�\Š\˜$œ+Ñ&Ô&ˆð ”8×%Ò%ØWÐWÐWÐWÈÌÌÐWÑWÔWñ
ô 
ˆŒð ˆ	rZ   r
  r`   r  r[  r\  )rý   r  r  r  rÜ  r+   r"  r”  ÚreÚcompiler  r  rí  rþ  r?  r  r  s   @rX   rñ  rñ  ä  s¾   ø€ € € € € Ø$Ð$à(€JØ€HØ€DØ�”˜NÑ+Ô+€Jàð"ð "ð "ñ „Xð"ð
Dð 
Dð 
Dð 
Dð 
Dð 
Dð 
Dð ØØ Øðð ð ð ð ð ð ð ð ð ð rZ   rñ  rú  r+   rc  rJ   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�  rt   )rú  rc  r   r@  rÒ  Úslicers         rX   rm  rm    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Ô$ˆØ€JrZ   r&  r   ústr | tzinfoc                ó.   — t          j        | ¦  «        }|S )z+for a tz-aware type, return an encoded zone)r   Úget_timezone)r&  Úzones     rX   r’  r’  )  s   € åÔ! "Ñ%Ô%€DØ€KrZ   r›  únp.ndarray | Indexrñ  r,   c                ó   — d S r`   rÚ   ©r›  r&  rñ  s      rX   r]  r]  /  s	   € ð €CrZ   rO  c                ó   — d S r`   rÚ   r  s      rX   r]  r]  6  s   € à€CrZ   ú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
    Nre   rm  úM8[ns]rô  )
rS   r,   r&  rf   r  rY   ro  rp  rT   r  )r›  r&  rñ  rf   s       rX   r]  r]  ;  sÓ   € õ �&�-Ñ(Ô(ð ð ŒyÐ  F¤I°¢O O OÐ3ØŒ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ˆð €MrZ   rf   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     rX   rr   z"_convert_index.<locals>.<listcomp>ˆ  s    € Ð>Ð>Ð>°! §¢¡¤Ð>Ð>Ð>rZ   rô  )r'  rt  )ÚintegerÚfloating)r›  rª  r*  r'  rA  )rS   r^   rf   r½  r¾  r  rÏ  r   r\  rY  r%   r!   r"  r³  r.   rÀ   rµ  rT   r  Úint32rŒ   Ú	Time32ColÚ_convert_string_arrayr/  ru  rX  rA  r·  )rf   rš   r[   r¡   r'  r  r¿  rª  rÎ  r½  r›  r/  s               rX   r�  r�  b  s~  € Ý�d�CÑ Ô Ð Ð Ð à”€Jõ 5°UÑ;Ô;Ñ€IˆzÝ˜*Ñ%Ô%€DÝ×%Ò% iÑ0Ô0€Dõ 	Œ˜œ TÑ*Ô*ð
å˜uœ{Ñ+Ô+ð
õ ˜œÑ%Ô%ð
õ ØØØØÝ˜ ¨Ñ-Ô-Ý�u˜d DÑ)Ô)Ø!ð
ñ 
ô 
ð 	
õ �%�Ñ$Ô$ð :ÝÐ8Ñ9Ô9Ð9å”O E°%Ð8Ñ8Ô8€Mõ ŒZ˜ÑÔ€Fà˜ÒÐÝ”JÐ>Ð>°vÐ>Ñ>Ô>ÅbÄhÐOÑOÔOˆ	ÝØ�)˜V¥W¡Y¤Y×%8Ò%8Ñ%:Ô%:Àzð
ñ 
ô 
ð 	
ð 
˜(Ò	"Ð	"Ý)¨&°(¸FÑCÔCˆ	Ø”?Ô+ˆÝØØØÝ‰IŒI×Ò Ñ)Ô)Ø!ð
ñ 
ô 
ð 	
ð 
Ð1Ð	1Ð	1ÝØ˜¨°4ÀJð
ñ 
ô 
ð 	
õ ˜)¥R¤ZÑ0Ô0ÐN°Y´_ÍÒ5NÐ5NÐ5NÐNØ�xÒÐÐ ÑÔÐÝ‰yŒy×#Ò#Ñ%Ô%ˆÝ˜˜i¨¨tÀ
ÐKÑKÔKÐKrZ   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     rX   rr   z$_unconvert_index.<locals>.<listcomp>¯  s#   € ÐBÐBÐB¸¥Ô 0°Ñ 3Ô 3ÐBÐBÐBrZ   rô  c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rÚ   rú  rø  s     rX   rr   z$_unconvert_index.<locals>.<listcomp>±  s#   € ÐDÐDÐD¸!¥Ô 2°1Ñ 5Ô 5ÐDÐDÐDrZ   )r   Úfloatr˜   rt  r  rA  r   zunrecognized index type )	rÀ  r,   r¸  r2   rT   r  rA  r¹   r
  )rÌ  rª  r[   r¡   rš   s        rX   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Ê  rI   r  c                ó  — |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          |¦  «        }
| 
                    ¦   «         }|||
<   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	¦  «        }t+          |pd	|¦  «        }|�|                     |¦  «        }|�||k    r|}|                     d|› �d¬¦  «        }|S )NFr®  r   z+[date] is not implemented as a table columnr_  z>too many timezones in this block, create separate data columnsrt  rA  r   zNo.zCannot serialize the column [z2]
because its data contents are not [string] but [z] object dtyper›  z|Srÿ  )rY  rA  r   rT   rX  rf   r   rµ  rÀ   r4   rÍ  r“  r¹  ru   r$  rÆ  r/  rS   r†  ri   rñ   r¥  r}  r  )rf   rÊ  ri  r›   r¥   r[   r¡   r²   r¿  r½  r  rÌ  rœ  rn  Úerror_column_labelr~  r/  Úecis                     rX   rp  rp  ¿  s^  € ð „}�ÒÐØˆå•2”:˜wÑ'Ô'€Gà”Ô#€JÝ”O G°EÐ:Ñ:Ô:€Mà˜ÒÐÝÐEÑFÔFÐFØ˜
Ò"Ð"õ ØLñ
ô 
ð 	
ð ˜XÒ%Ð%¨°xÒ)?Ð)?Øˆå�‰=Œ=€DØ�<Š<‰>Œ>€DØ€Dˆ�Jõ ”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ØÐrZ   rÌ  c                óŽ  — t          | ¦  «        rYt          |                      ¦   «         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]
    Frÿ  rk   ÚSrô  )ru   r1   r  r^   Úencoder  rÆ  r¹  r    r¥  Ú
libwritersÚmax_len_string_arrayrT   r  )rÌ  r[   r¡   Úensuredr/  s        rX   r$  r$    s¡   € õ  ˆ4�y„yð 
å�4—:’:‘<”< eÐ,Ñ,Ô,Ü—’˜ &Ñ)Ô)Ü—W’W˜TœZÑ(Ô(ð 	õ ˜DŸJšJ™LœLÑ)Ô)€GÝ�1•jÔ5°gÑ>Ô>Ñ?Ô?€HåŒ:�d . h . .Ð1Ñ1Ô1€DØ€KrZ   c                ó*  — | j         }t          j        |                      ¦   «         t          ¬¦  «        } t          | ¦  «        r£t          j        t          | ¦  «        ¦  «        }d|› �}t          | d         t          ¦  «        r1t          | d¬¦  «        j                             ||¬¦  «        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ÿ  )r¡   Nrf  )r¹  rT   r  r  rA  ru   r/  r0  r    rS   ru  r1   r^   rV   r  r  Ú!string_array_replace_from_nan_reprÆ  )rÌ  r¥   r[   r¡   r¹  r/  rY  s          rX   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Ý˜$ UÐ+Ñ+Ô+Ô/×6Ò6°xÈÐ6ÑOÔOÔWˆDˆDà—;’;˜u¨5�;Ñ1Ô1×8Ò8½ÀeÐ8ÑLÔLˆDà€ØˆåÔ0°°wÑ?Ô?Ð?Ø�<Š<˜ÑÔÐrZ   r^  c                ó´   — t          |t          ¦  «        sJ t          |¦  «        ¦   «         ‚t          |¦  «        rt	          |||¦  «        } || ¦  «        } | S r`   )rS   r^   rü   Ú_need_convertÚ_get_converter)r›  r^  r[   r¡   Úconvs        rX   r[  r[  M  sY   € Ý�h¥Ñ$Ô$Ð4Ð4¥d¨8¡n¤nÑ4Ô4Ð$Ý�XÑÔð Ý˜h¨°&Ñ9Ô9ˆØ��f‘”ˆØ€MrZ   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ô  ©rT   r  )r[  s    rX   r¨   z _get_converter.<locals>.<lambda>W  s   € �œ A¨XÐ6Ñ6Ô6€ rZ   c                ó0   •— t          j        | ‰¬¦  «        S )Nrô  r;  )r[  rª  s    €rX   r¨   z _get_converter.<locals>.<lambda>Y  s   ø€ �œ A¨TÐ2Ñ2Ô2€ rZ   rt  c                ó*   •— t          | d ‰‰¬¦  «        S )Nr  )r
  )r[  r[   r¡   s    €€rX   r¨   z _get_converter.<locals>.<lambda>[  s    ø€ Õ0Ø�t h°vð
ñ 
ô 
€ rZ   zinvalid kind )r¹   )rª  r[   r¡   s   ```rX   r7  r7  U  su   øøø€ Øˆ|ÒÐØ6Ð6Ð6Ø	˜Ð	Ð	Ø2Ð2Ð2Ð2Ð2Ø	�Ò	Ð	ð
ð 
ð 
ð 
ð 
ð 	
õ Ð/¨Ð/Ð/Ñ0Ô0Ð0rZ   c                ó   — | dv sd| v rdS dS )N)rï  rt  rï  TFrÚ   rÄ  s    rX   r6  r6  b  s"   € ØÐ'Ð'Ð'¨<¸4Ð+?Ð+?ØˆtØˆ5rZ   r'  ú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   rk   r%  r&  zvalues_block_(\d+)Úvalues_)rS   r^   ru   r¹   r  r  rÂ   )rf   r'  rÅ  Úgrps       rX   rB  rB  h  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Ø€KrZ   Ú	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	}nd|                      d
¦  «        rd
}nL|                      d¦  «        rd}n4|                      d¦  «        rd}n| dk    rd}nt          d| › d�¦  «        ‚|S )zA
    Find the "kind" string describing the given dtype name.
    )rt  ru  rt  r(  rN  )ri   rÕ  r   rï  Ú	timedeltarò  r˜   rš  rØ  rA  zcannot interpret dtype of [rX  )rY   rÀ  r¹   )rD  rª  s     rX   r¾  r¾  �  sQ  € õ   	Ñ*Ô*€Ià×ÒÐ/Ñ0Ô0ð EØˆˆØ	×	Ò	˜gÑ	&Ô	&ð EØˆˆØ	×	Ò	˜iÑ	(Ô	(ð EØˆˆØ	×	Ò	˜oÑ	.Ô	.ð EØˆˆØ	×	Ò	˜lÑ	+Ô	+ð EØˆˆØ	×	Ò	˜kÑ	*Ô	*ð EØˆˆØ	×	Ò	˜fÑ	%Ô	%ð 
EØˆˆØ	×	Ò	˜jÑ	)Ô	)ð EØˆˆØ	×	Ò	˜hÑ	'Ô	'ð EàˆˆØ	�hÒ	Ð	ØˆˆåÐC°yÐCÐCÐCÑDÔDÐDà€KrZ   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°  rX  ÚmMrS  )rS   r5   rÈ  rY  r'   rº  rf   rª  rT   r  r¸  r/   r¹  )rÌ  r¿  s     rX   r½  r½  ¢  s¯   € õ �$�Ñ$Ô$ð ØŒzˆå�$”*�oÑ.Ô.ð %à5 4¤:¤?Ð5Ð5Ð5ˆ
ˆ
à”Z”_ˆ
à„z„˜$ÐÐÝŒz˜$Ÿ)š) D™/œ/Ñ*Ô*ˆˆõ 
�D�+Ñ	&Ô	&ð ØŒyˆåŒ:�dÑÔ€DØ�ÐÐrZ   c                  ó4   — e Zd ZdZ	 	 	 ddd
„Zd„ Zd„ Zd„ ZdS )rU  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±   r]   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|   rv   r°   r±   Ú	conditionrŸ  Útermsrh  r#   r   r¹   r   rµ  rT   r  rY  Úbool_rE  rÀ  Ú
issubclassrü   r   r  ÚgenerateÚevaluate)rä   r|   rv   r°   r±   Úinferreds         rX   rå   zSelection.__init__Ç  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)r'  r[   r7  z-                The passed where expression: a*  
                            contains an invalid variable reference
                            all of the variable references must be a reference to
                            an axis (e.g. 'index' or 'columns'), or a data_column
                            The currently defined references are: z
                )	r|   r'  r8   r[   Ú	NameErrorr=  r"  r   r¹   )rä   rv   r>  r€  Úqkeysr/  s         rX   rP  zSelection.generateô  s¿   € àˆ=Ø�4àŒJ×!Ò!Ñ#Ô#ˆð	+Ý °!¸d¼jÔ>QÐRÑRÔRÐRøÝð 	+ð 	+ð 	+ð —H’H˜QŸVšV™XœXÑ&Ô&ˆEÝðØ.3ðð ð
 DIðð ð ñô ˆCõ ˜S‘/”/ sÐ*øøøøð	+øøøs   Ÿ; »
BÁABÂBc                óB  — | j         �C| j        j                             | j                              ¦   «         | j        | j        ¬¦  «        S | j        �$| j        j                             | j        ¦  «        S | j        j                             | j        | j        ¬¦  «        S )ú(
        generate the selection
        Nrˆ  )	rL  r|   Ú
read_wherer™   r°   r±   rh  rN  r?  rè   s    rX   rÅ   zSelection.select  s�   € ð Œ>Ð%Ø”:Ô#×.Ò.Ø”×%Ò%Ñ'Ô'¨t¬zÀÄ	ð /ñ ô ð ð ÔÐ)Ø”:Ô#×4Ò4°TÔ5EÑFÔFÐFØŒzÔ×$Ò$¨4¬:¸D¼IÐ$ÑFÔFÐFrZ   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 )rW  Nr   T)r°   r±   r  )
r°   r±   r|   rE  rL  Úget_where_listr™   rh  rT   rÀ  )rä   r°   r±   rE  s       rX   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˜ Ñ%Ô%Ð%rZ   r  )r|   r  r°   r•   r±   r•   r]   r¢   )rý   r  r  r  rå   rP  rÅ   r¨  rÚ   rZ   rX   rU  rU  »  sx   € € € € € ð	ð 	ð Ø Øð+Dð +Dð +Dð +Dð +DðZ+ð +ð +ð.
Gð 
Gð 
Gð&ð &ð &ð &ð &rZ   rU  )r[   r\   r]   r^   )rh   ri   )r�   NNFNTNNNNr…   rQ   )rŽ   r�   r�   r^   r‘   r’   r“   r^   r”   r•   r–   r\   r—   r˜   r™   r\   rš   r˜   r›   rœ   r�   rž   rŸ   r    r¡   r^   r[   r^   r]   r¢   )	Nr®   r…   NNNNFN)rŽ   r�   r“   r^   r¡   r^   rv   r¯   r°   r•   r±   r•   r²   r³   r´   r˜   rµ   r•   )rÌ   rG   rÍ   rG   r]   r˜   r`   )rú  r+   rc  rJ   r   r-   r]   r+   )r&  r   r]   r  r  )r›  r  r&  r  rñ  r˜   r]   r,   )r›  r  r&  r¢   rñ  r˜   r]   rO  )r›  r  r&  r  rñ  r˜   r]   r  )
rf   r^   rš   r-   r[   r^   r¡   r^   r]   r"  )rª  r^   r[   r^   r¡   r^   r]   r  )rf   r^   rÊ  rI   r²   r  )rÌ  rO  r[   r^   r¡   r^   r]   rO  )r›  rO  r^  r^   r[   r^   r¡   r^   )rª  r^   r[   r^   r¡   r^   )rª  r^   r]   r˜   )rf   r^   r'  r?  r]   r^   )rD  r^   r]   r^   )rÌ  rI   )´r  Ú
__future__r   Ú
contextlibr   rÍ  r_  r   r   ri  r½   r  Útextwrapr   Útypingr   r	   r
   r   r   r   r   r�  ÚnumpyrT   Úpandas._configr   r   r   r   Úpandas._libsr   r   r/  Úpandas._libs.libr   Úpandas._libs.tslibsr   Ú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.   r/   r0   r1   r2   r3   r4   Úpandas.core.arraysr5   r6   r7   Úpandas.core.commonÚcoreÚcommonr}  Ú pandas.core.computation.pytablesr8   r9   Úpandas.core.constructionr:   Úpandas.core.indexes.apir;   Úpandas.core.internalsr<   r=   Úpandas.io.commonr>   Úpandas.io.formats.printingr?   r@   Úcollections.abcrA   rB   rC   ÚtypesrD   r‡   rE   rF   rG   Úpandas._typingrH   rI   rJ   rK   rL   rM   rN   rO   rP   r9  ra   rY   rc   rg   rn   rw   rx   r  ry   rz   rØ  r•  r   r€   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryr†   r‹   rŒ   r­   rË   rÃ   r¬   rH  r"  r¤  r¬  r  r  r  r^  rê  rÆ  rë  r  rò  r{  rð  rî  rï  rí  rñ  rm  r’  r]  r�  r¥  rp  r$  r
  r[  r7  r6  rB  r¾  r½  rU  rÚ   rZ   rX   ú<module>r}     sA  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø €€€ðð ð ð ð ð ð ð ð Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø )Ð )Ð )Ð )Ð )Ð )Ø >Ð >Ð >Ð >Ð >Ð >Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð 8Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 !Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø 0Ð 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 	ØØØ#ØØØ $ØØ ðXð Xð Xð Xð Xðvð ð ð ðZð Zð Zð Zð Zñ Zô Zð Zðz,mð mð mð mð mñ mô mð mð`e>ð e>ð e>ð e>ð e>ñ e>ô e>ð e>ðP	ð ð ð ð �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Bð bBð bB�5ñ bBô bBð bBðJ #ð  #ð  #ð  #ð  #�,ñ  #ô  #ð  #ðF`;ð `;ð `;ð `;ð `;˜ñ `;ô `;ð `;ðFð ð ð ð Ð"ñ ô ð ð
dDð dDð dDð dDð dDˆEñ dDô dDð dDðNHð Hð Hð Hð H�ñ Hô Hð Hð<`ð `ð `ð `ð `�eñ `ô `ð `ðFeð eð eð eð e˜?ñ eô eð eðP.ð .ð .ð .ð .Ð0ñ .ô .ð .ðb,ð ,ð ,ð ,ð ,Ð!6ñ ,ô ,ð ,ð$@Fð @Fð @Fð @Fð @FÐ'ñ @Fô @Fð @FðF(ð (ð (ð (ð (Ð 4ñ (ô (ð (ðX 9=ðð ð ð ð ð4ð ð ð ð 
àAFðð ð ð ñ 
„ðð 
ðð ð ð ñ 
„ðð
 INð$ð $ð $ð $ð $ðN=Lð =Lð =Lð =Lð@ð ð ð ð:Fð Fð Fð FðRð ð ð ð>#ð #ð #ð #ðLð ð ð ð
1ð 
1ð 
1ð 
1ðð ð ð ðð ð ð ð2ð ð ð ðBð ð ð ð2r&ð r&ð r&ð r&ð r&ñ r&ô r&ð r&ð r&ð r&s   Æ>GÇGÇG