Ë
    ômxiµÅ ã            
      ód  — U d Z ddlmZ ddlmZ ddlZddlmZmZ ddl	Z	ddl
Z
ddlZddlmZ ddlmZmZmZmZmZmZmZ ddlZddlZddlmZmZmZmZ dd	lmZm Z! dd
l"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZO ddlPmQZQmRZRmSZS ddlTmUZU ddlVmWc mXZY ddlZm[Z[m\Z\ ddl]m^Z_m`Z` ddlambZb ddlcmdZdmeZe ddlfmgZg ddlhmiZimjZj er4ddlkmlZlmmZmmnZn ddlompZp dd lqmrZrmsZsmtZt dd!lumvZvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z} dd"lcm~Z~ d#Zd$Z€d%„ Z�d{d&„Z‚d'„ Zƒe[Z„d|d(„Z…d)Z†d*e‡d+<   d,Zˆd*e‡d-<   d.Z‰d*e‡d/<   d0d0d1d1d2œZŠeEdgiZ‹d3ZŒd*e‡d4<   d5Z�d*e‡d6<    e�j                  d7«      5   e�j                  d8d9eŒe�j                   ¬:«        e�j                  d;de� e�j"                  g d<¢«      ¬:«       ddd«       da’d9a“d=„ Z”	 	 	 	 	 	 	 	 	 	 	 	 d}	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d~d>„Z•	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d€d?„Z–d�d@„Z— G dA„ dB«      Z˜ G dC„ dD«      Z™ G dE„ dF«      Zš G dG„ dHeš«      Z› G dI„ dJeš«      Zœ G dK„ dLeœ«      Z� G dM„ dNe�«      Zž G dO„ dP«      ZŸ G dQ„ dReŸ«      Z  G dS„ dTe «      Z¡ G dU„ dVe «      Z¢ G dW„ dXe¢«      Z£ G dY„ dZeŸ«      Z¤ G d[„ d\e¤«      Z¥ G d]„ d^e¤«      Z¦ G d_„ d`e¦«      Z§ G da„ dbe§«      Z¨ G dc„ dde¨«      Z© G de„ dfe§«      Zª G dg„ dhe§«      Z«	 d‚	 	 	 	 	 	 	 dƒdi„Z¬d„dj„Z­e	 d…	 	 	 	 	 	 	 d†dk„«       Z®ed…d‡dl„«       Z®	 d…	 	 	 	 	 	 	 dˆdm„Z®d‰dn„Z¯dŠdo„Z°	 	 	 	 	 	 d‹dp„Z±dŒdq„Z²	 	 	 	 	 	 	 	 dŒdr„Z³d�ds„Z´dŽdt„Zµd�du„Z¶d�dv„Z·d‘dw„Z¸d’dx„Z¹ G dy„ dz«      Zºy# 1 sw Y   �Œ¹xY w)“zY
High level interface to PyTables for reading and writing pandas data structures
to disk
é    )Úannotations)ÚsuppressN)ÚdateÚtzinfo)Údedent)ÚTYPE_CHECKINGÚAnyÚCallableÚFinalÚLiteralÚcastÚoverload)ÚconfigÚ
get_optionÚusing_copy_on_writeÚusing_string_dtype)ÚlibÚwriters)Úis_string_array)Ú	timezones)ÚHAS_PYARROW)Úimport_optional_dependency)Úpatch_pickle)ÚAttributeConflictWarningÚClosedFileErrorÚIncompatibilityWarningÚPerformanceWarningÚPossibleDataLossError)Úcache_readonly)Úfind_stack_level)Úensure_objectÚis_bool_dtypeÚis_complex_dtypeÚis_list_likeÚis_string_dtypeÚneeds_i8_conversion)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtypeÚPeriodDtype)Úarray_equivalent)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚStringDtypeÚTimedeltaIndexÚconcatÚisna)ÚCategoricalÚDatetimeArrayÚPeriodArray)ÚBaseStringArray)ÚPyTablesExprÚmaybe_expression)ÚarrayÚextract_array)Úensure_index)ÚArrayManagerÚBlockManager)Ústringify_path)ÚadjoinÚpprint_thing)ÚHashableÚIteratorÚSequence)ÚTracebackType)ÚColÚFileÚNode)ÚAnyArrayLikeÚ	ArrayLikeÚAxisIntÚDtypeArgÚFilePathÚSelfÚShapeÚnpt)ÚBlockz0.15.2úUTF-8c                ó\   — t        | t        j                  «      r| j                  d«      } | S )z(if we have bytes, decode them to unicoderU   )Ú
isinstanceÚnpÚbytes_Údecode)Úss    úI/home/htdocs/ttos/venv/lib/python3.12/site-packages/pandas/io/pytables.pyÚ_ensure_decodedr]   ’   s#   € ä�!”R—Y‘YÔØ�H‰H�WÓˆØ€Hó    c                ó   — | €t         } | S ©N)Ú_default_encoding©Úencodings    r\   Ú_ensure_encodingrd   ™   s   € àÐÜ$ˆà€Or^   c                ó<   — t        | t        «      rt        | «      } | S )zÓ
    Ensure that an index / column name is a str (python 3); otherwise they
    may be np.string dtype. Non-string dtypes are passed through unchanged.

    https://github.com/pandas-dev/pandas/issues/13492
    )rW   Ústr©Únames    r\   Ú_ensure_strri   ¡   s   € ô �$œÔÜ�4‹yˆØ€Kr^   c                óî   — |dz   }t        | t        t        f«      r-| D �cg c]!  }|�t        |«      rt	        ||dz   ¬«      n|‘Œ# } }nt        | «      rt	        | |¬«      } | �t        | «      r| S dS c c}w )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)
    é   N©Úscope_level)rW   ÚlistÚtupler<   ÚTermÚlen)Úwhererm   ÚlevelÚterms       r\   Ú_ensure_termru   °   sˆ   € ð ˜!‰O€EÜ�%œ$¤˜Ô'ð ö
àØÐô 2BÀ$Ô1GŒD� 5¨1¡9Õ-ÈTÑQð
ˆñ 
ô
 
˜%Ô	 Ü�U¨Ô.ˆØ�M¤S¨¤Zˆ5Ð9°TÐ9ùò
s    &A2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)Úfry   Útrz   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)ry   rz   Nc                 ó¶   — t         €=dd l} | a t        t        «      5  | j                  j
                  dk(  ad d d «       t         S t         S # 1 sw Y   t         S xY w)Nr   Ústrict)Ú
_table_modÚtablesr   ÚAttributeErrorÚfileÚ_FILE_OPEN_POLICYÚ!_table_file_open_policy_is_strict)r…   s    r\   Ú_tablesrŠ   ô   sX   € ô ÐÛàˆ
ô
 ”nÓ%ñ 	à—‘×-Ñ-°Ñ9ð .÷	ô
 ÐŒ:Ð÷	ô
 Ðús   œA
Á
Ac           
     óö   ‡‡‡‡‡	‡
‡‡‡‡— |rˆˆˆˆˆˆˆˆ	ˆ
ˆf
d„}nˆˆˆˆˆˆˆˆ	ˆ
ˆf
d„}t        | «      } t        | t        «      r!t        | |||¬«      5 } ||«       ddd«       y || «       y# 1 sw Y   yxY w)z+store this object, close it if we opened itc                ó:   •
— | j                  ‰‰
‰‰‰‰	‰‰‰‰¬«
      S )N)ÚformatÚindexÚmin_itemsizeÚnan_repÚdropnaÚdata_columnsÚerrorsrc   )Úappend©Ústorer’   r‘   rc   r“   r�   rŽ   Úkeyr�   r�   Úvalues    €€€€€€€€€€r\   ú<lambda>zto_hdf.<locals>.<lambda>  s3   ø€ ˜%Ÿ,™,ØØØØØ%ØØØ%ØØð 'ó 
€ r^   c                ó:   •
— | j                  ‰‰
‰‰‰‰	‰‰‰‰¬«
      S )N)r�   rŽ   r�   r�   r’   r“   rc   r‘   ©Úputr•   s    €€€€€€€€€€r\   r™   zto_hdf.<locals>.<lambda>+  s3   ø€ ˜%Ÿ)™)ØØØØØ%ØØ%ØØØð $ó 
€ r^   )ÚmodeÚ	complevelÚcomplibN)rB   rW   rf   ÚHDFStore)Úpath_or_bufr—   r˜   r�   rž   rŸ   r”   r�   rŽ   r�   r�   r‘   r’   r“   rc   r{   r–   s    ``    ````````  r\   Úto_hdfr¢   
  su   ÿù€ ñ$ ÷
ô 
‰÷
ô 
ˆô ! Ó-€KÜ�+œsÔ#ÜØ˜d¨iÀô
ð 	àÙˆeŒH÷	ð 	ñ
 	
ˆ+�÷	ð 	ús   Á	A/Á/A8c
           
     óF  — |dvrt        d|› d�«      ‚|�t        |d¬«      }t        | t        «      r| j                  st        d«      ‚| }d}nht        | «      } t        | t        «      st        d	«      ‚	 t        j                  j                  | «      }|st        d
| › d�«      ‚t        | f||dœ|
¤Ž}d}	 |€[|j                  «       }t        |«      dk(  rt        d«      ‚|d   }|dd D ]  }t!        ||«      rŒt        d«      ‚ |j"                  }|j%                  |||||||	|¬«      S # t        t         f$ r d}Y Œ¬w xY w# t         t        t&        f$ rG t        | t        «      s5t)        t*        «      5  |j-                  «        ddd«       ‚ # 1 sw Y   ‚ xY w‚ w xY w)a>
  
    Read from the store, close it if we opened it.

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

    .. warning::

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

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

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

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

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

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

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

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

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

    Examples
    --------
    >>> df = pd.DataFrame([[1, 1.0, 'a']], columns=['x', 'y', 'z'])  # doctest: +SKIP
    >>> df.to_hdf('./store.h5', 'data')  # doctest: +SKIP
    >>> reread = pd.read_hdf('./store.h5')  # doctest: +SKIP
    )Úrúr+Úazmode zG is not allowed while performing a read. Allowed modes are r, r+ and a.Nrk   rl   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.)rr   ÚstartÚstopÚcolumnsÚiteratorÚ	chunksizeÚ
auto_close)Ú
ValueErrorru   rW   r    Úis_openÚOSErrorrB   rf   ÚNotImplementedErrorÚosÚpathÚexistsÚ	TypeErrorÚFileNotFoundErrorÚgroupsrq   Ú_is_metadata_ofÚ_v_pathnameÚselectÚLookupErrorr   r†   Úclose)r¡   r—   r�   r“   rr   r§   r¨   r©   rª   r«   Úkwargsr–   r¬   r³   r¶   Úcandidate_only_groupÚgroup_to_checks                    r\   Úread_hdfr¿   B  sô  € ðl Ð#Ñ#ÜØ�D�6ð -ð .ó
ð 	
ð
 ÐÜ˜U°Ô2ˆä�+œxÔ(Ø×"Ò"ÜÐBÓCÐCàˆØ‰
ä$ [Ó1ˆÜ˜+¤sÔ+Ü%ØGóð ð	Ü—W‘W—^‘^ KÓ0ˆFñ Ü# e¨K¨=¸Ð$HÓIÐIä˜ÐI¨4¸ÑIÀ&ÑIˆð ˆ
ð%Øˆ;Ø—\‘\“^ˆFÜ�6‹{˜aÒÜ ðDóð ð $*¨!¡9Ð ð #)¨¨ *ò �Ü& ~Ð7KÕLÜ$ð;óð ðð '×2Ñ2ˆCØ�|‰|ØØØØØØØØ!ð ó 	
ð 		
øôA œ:Ð&ò 	ØŠFð	ûôT œ	¤;Ð/ò Ü˜+¤xÔ0äœ.Ó)ñ Ø—‘”÷ð 	÷ð 	úˆðús=   Á6D. Â8AE Ã=0E Ä.EÅEÅ3F Å8FÆ		F ÆF	Æ	F c                óÔ   — | j                   |j                   k  ry| }|j                   dkD  r=|j                  }||k(  r|j                  dk(  ry|j                  }|j                   dkD  rŒ=y)zDCheck if a given group is a metadata group for a given parent_group.Frk   ÚmetaT)Ú_v_depthÚ	_v_parentÚ_v_name)ÚgroupÚparent_groupÚcurrentÚparents       r\   r·   r·   ä  sk   € à‡~�~˜×.Ñ.Ò.Øà€GØ
×
Ñ
˜QÒ
Ø×"Ñ"ˆØ�\Ò! g§o¡o¸Ò&?ØØ×#Ñ#ˆð	 ×
Ñ
˜QÓ
ð
 r^   c                  ój  — e Zd ZU dZded<   ded<   	 	 	 	 d2	 	 	 	 	 	 	 d3d„Zd4d„Zed	„ «       Zed4d
„«       Z	d5d„Z
d6d„Zd6d„Zd7d„Zd8d„Zd9d„Zd4d„Zd:d„Z	 	 	 	 	 	 	 	 d;d„Zd<d=d„Zd>d„Zd?d„Zd@dAd„ZdBd„ZedCd„«       ZdDdEd„Zd5d„Z	 	 	 	 	 	 	 dF	 	 	 	 	 	 	 dGd„Z	 	 	 dH	 	 	 	 	 dId„Z	 	 dJ	 	 	 	 	 	 	 dKd„Z	 	 	 	 	 	 	 	 dL	 	 	 	 	 dMd„Z	 	 	 	 	 	 	 	 	 	 	 	 dN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dOd „ZdHd6d!„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dP	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQd"„Z!	 	 	 dR	 	 	 	 	 dSd#„Z"	 	 	 dH	 	 	 	 	 	 	 dTd$„Z#dUd%„Z$dVdWd&„Z%dXd'„Z&dYd(„Z'	 	 	 	 	 	 	 dZ	 	 	 	 	 	 	 	 	 	 	 d[d)„Z(d4d*„Z)dBd+„Z*d\d,„Z+	 	 	 	 d]	 	 	 	 	 	 	 d^d-„Z,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d_	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`d.„Z-dad/„Z.dbd0„Z/dcd1„Z0y)dr    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Ú_handlerf   Ú_modeNc                ó’  — 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|¤Ž y )
Nr�   z-format is not a defined argument for HDFStorer…   zcomplib only supports z compression.r¦   r   r�   © )r­   r   ÚfiltersÚall_complibsÚdefault_complibrB   Ú_pathrË   rÊ   Ú
_complevelÚ_complibÚ_fletcher32Ú_filtersÚopen)Úselfr²   r�   rž   rŸ   Ú
fletcher32r¼   r…   s           r\   Ú__init__zHDFStore.__init__7  sÓ   € ð �vÑÜÐLÓMÐMä+¨HÓ5ˆàÐ 7°&·.±.×2MÑ2MÑ#MÜØ(¨¯©×)DÑ)DÐ(EÀ]ÐSóð ð ˆ?˜yÐ4Ø—n‘n×4Ñ4ˆGä# DÓ)ˆŒ
Øˆ<ØˆDØˆŒ
ØˆŒÙ'0™)°aˆŒØˆŒØ%ˆÔØˆŒØˆ�	‰	Ñ&�tÐ&˜vÓ&r^   c                ó   — | j                   S r`   ©rÑ   ©r×   s    r\   Ú
__fspath__zHDFStore.__fspath__X  s   € Ø�z‰zÐr^   c                ój   — | j                  «        | j                  €J ‚| j                  j                  S )zreturn the root node)Ú_check_if_openrÊ   ÚrootrÜ   s    r\   rà   zHDFStore.root[  s0   € ð 	×ÑÔØ�|‰|Ð'Ð'Ð'Ø�|‰|× Ñ Ð r^   c                ó   — | j                   S r`   rÛ   rÜ   s    r\   ÚfilenamezHDFStore.filenameb  ó   € à�z‰zÐr^   c                ó$   — | j                  |«      S r`   )Úget©r×   r—   s     r\   Ú__getitem__zHDFStore.__getitem__f  s   € Ø�x‰x˜‹}Ðr^   c                ó(   — | j                  ||«       y r`   r›   )r×   r—   r˜   s      r\   Ú__setitem__zHDFStore.__setitem__i  s   € Ø�‰��eÕr^   c                ó$   — | j                  |«      S r`   )Úremoveræ   s     r\   Ú__delitem__zHDFStore.__delitem__l  s   € Ø�{‰{˜3ÓÐr^   c                óš   — 	 | j                  |«      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×   rh   s     r\   Ú__getattr__zHDFStore.__getattr__o  sW   € ð	Ø—8‘8˜D“>Ð!øÜœ/Ð*ò 	Ùð	úäØ”�T“
×#Ñ#Ð$Ð$?À¸vÀQÐGó
ð 	
s   ‚ “%¤%c                óV   — | j                  |«      }|�|j                  }|||dd fv ryy)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—   Únoderh   s       r\   Ú__contains__zHDFStore.__contains__y  s<   € ð
 �}‰}˜SÓ!ˆØÐØ×#Ñ#ˆDØ�t˜T ! "˜XÐ&Ñ&ØØr^   c                ó4   — t        | j                  «       «      S r`   )rq   r¶   rÜ   s    r\   Ú__len__zHDFStore.__len__…  s   € Ü�4—;‘;“=Ó!Ð!r^   c                óN   — t        | j                  «      }t        | «      › d|› d�S )Nú
File path: ú
)rD   rÑ   rð   )r×   Úpstrs     r\   Ú__repr__zHDFStore.__repr__ˆ  s'   € Ü˜DŸJ™JÓ'ˆÜ�t“*�˜]¨4¨&°Ð3Ð3r^   c                ó   — | S r`   rÍ   rÜ   s    r\   Ú	__enter__zHDFStore.__enter__Œ  s   € Øˆr^   c                ó$   — | j                  «        y r`   )r»   )r×   Úexc_typeÚ	exc_valueÚ	tracebacks       r\   Ú__exit__zHDFStore.__exit__�  s   € ð 	�
‰
�r^   c                ó  — |dk(  r(| j                  «       D �cg c]  }|j                  ‘Œ c}S |dk(  rC| j                  €J ‚| j                  j                  dd¬«      D �cg c]  }|j                  ‘Œ c}S t	        d|› d�«      ‚c c}w c c}w )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
        ÚpandasÚnativeú/ÚTable)Ú	classnamez8`include` should be either 'pandas' or 'native' but is 'rî   )r¶   r¸   rÊ   Ú
walk_nodesr­   )r×   ÚincludeÚns      r\   ÚkeyszHDFStore.keys—  s”   € ð< �hÒØ+/¯;©;«=Ö9 a�A—M“MÒ9Ð9à˜Ò Ø—<‘<Ð+Ð+Ð+à'+§|¡|×'>Ñ'>¸sÈgÐ'>Ó'VöØ"#�—“òð ô ØFÀwÀiÈqÐQó
ð 	
ùò :ùòs   ˜BÁ B
c                ó4   — t        | j                  «       «      S r`   )Úiterr  rÜ   s    r\   Ú__iter__zHDFStore.__iter__Á  s   € Ü�D—I‘I“KÓ Ð r^   c              #  óV   K  — | j                  «       D ]  }|j                  |f–— Œ y­w)z'
        iterate on key->group
        N)r¶   r¸   ©r×   Úgs     r\   ÚitemszHDFStore.itemsÄ  s,   è ø€ ð —‘“ò 	#ˆAØ—-‘- Ð"Ó"ñ	#ùs   ‚')c                óZ  — t        «       }| j                  |k7  rP| j                  dv r|dv rn6|dv r2| j                  r&t        d| j                  › d| j                  › d�«      ‚|| _        | j                  r| j                  «        | j                  rN| j                  dkD  r?t        «       j                  | j                  | j                  | j                  ¬«      | _
        t        r| j                  rd	}t        |«      ‚ |j                  | j                  | j                  fi |¤Ž| _        y
)a9  
        Open the file in the specified mode

        Parameters
        ----------
        mode : {'a', 'w', 'r', 'r+'}, default 'a'
            See HDFStore docstring or tables.open_file for info about modes
        **kwargs
            These parameters will be passed to the PyTables open_file method.
        )r¦   Úw)r¤   r¥   )r  zRe-opening the file [z] with mode [z] will delete the current file!r   )rØ   zGCannot open HDF5 file, which is already opened, even in read-only mode.N)rŠ   rË   r®   r   rÑ   r»   rÒ   ÚFiltersrÓ   rÔ   rÕ   r‰   r­   Ú	open_filerÊ   )r×   r�   r¼   r…   Úmsgs        r\   rÖ   zHDFStore.openË  s  € ô “ˆà�:‰:˜Òà�z‰z˜ZÑ'¨D°KÑ,?ØØ˜‘à—<’<Ü/Ø/°·
±
¨|¸=ÈÏÉÈð U8ð 8óð ð
 ˆDŒJð �<Š<Ø�J‰JŒLà�?Š?˜tŸ™°Ò2Ü#›I×-Ñ-Ø—‘ §¡¸4×;KÑ;Kð .ó ˆDŒMõ -°·²ð*ð ô ˜S“/Ð!à'�v×'Ñ'¨¯
©
°D·J±JÑIÀ&ÑIˆ�r^   c                ó^   — | j                   �| j                   j                  «        d| _         y)z0
        Close the PyTables file handle
        N)rÊ   r»   rÜ   s    r\   r»   zHDFStore.closeø  s%   € ð �<‰<Ð#Ø�L‰L×ÑÔ Øˆ�r^   c                óZ   — | j                   €yt        | j                   j                  «      S )zF
        return a boolean indicating whether the file is open
        F)rÊ   ÚboolÚisopenrÜ   s    r\   r®   zHDFStore.is_open   s&   € ð
 �<‰<ÐØÜ�D—L‘L×'Ñ'Ó(Ð(r^   c                óú   — | j                   �c| j                   j                  «        |rFt        t        «      5  t	        j
                  | j                   j                  «       «       ddd«       yyy# 1 sw Y   yxY w)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±   ÚfsyncÚfileno)r×   r!  s     r\   r   zHDFStore.flush	  sf   € ð  �<‰<Ð#Ø�L‰L×ÑÔ ÙÜœgÓ&ñ 4Ü—H‘H˜TŸ\™\×0Ñ0Ó2Ô3÷4ð 4ð ð $÷4ð 4ús   ¸.A1Á1A:c                ó¨   — t        «       5  | j                  |«      }|€t        d|› d�«      ‚| j                  |«      cddd«       S # 1 sw Y   yxY w)a  
        Retrieve pandas object stored in file.

        Parameters
        ----------
        key : str

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

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
        >>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
        >>> store.put('data', df)  # doctest: +SKIP
        >>> store.get('data')  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        NúNo object named ú in the file)r   rô   rï   Ú_read_group©r×   r—   rÅ   s      r\   rå   zHDFStore.get  sV   € ô* ‹^ñ 	+ð —M‘M #Ó&ˆEØˆ}ÜÐ!1°#°°lÐCÓDÐDØ×#Ñ# EÓ*÷	+÷ 	+ò 	+ús   ‹3AÁAc	                ó  ‡‡— | j                  |«      }	|	€t        d|› d�«      ‚t        |d¬«      }| j                  |	«      Š‰j	                  «        ˆˆfd„}
t        | ‰|
|‰j                  |||||¬«
      }|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
        r$  r%  rk   rl   c                ó.   •— ‰j                  | ||‰¬«      S )N)r§   r¨   rr   r©   )Úread)Ú_startÚ_stopÚ_wherer©   r[   s      €€r\   ÚfunczHDFStore.select.<locals>.func†  s   ø€ Ø—6‘6 ¨U¸&È'�6ÓRÐRr^   ©rr   Únrowsr§   r¨   rª   r«   r¬   )rô   rï   ru   Ú_create_storerÚ
infer_axesÚTableIteratorr0  Ú
get_result)r×   r—   rr   r§   r¨   r©   rª   r«   r¬   rÅ   r.  Úitr[   s        `      @r\   r¹   zHDFStore.select<  s—   ù€ ð@ —‘˜cÓ"ˆØˆ=ÜÐ-¨c¨U°,Ð?Ó@Ð@ô ˜U°Ô2ˆØ×Ñ Ó&ˆØ	�‰Œõ	Sô ØØØØØ—'‘'ØØØØØ!ô
ˆð �}‰}‹Ðr^   c                óœ   — t        |d¬«      }| j                  |«      }t        |t        «      st	        d«      ‚|j                  |||¬«      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   rl   z&can only read_coordinates with a table©rr   r§   r¨   )ru   Ú
get_storerrW   r	  r´   Úread_coordinates)r×   r—   rr   r§   r¨   Útbls         r\   Úselect_as_coordinateszHDFStore.select_as_coordinates™  sL   € ô4 ˜U°Ô2ˆØ�o‰o˜cÓ"ˆÜ˜#œuÔ%ÜÐDÓEÐEØ×#Ñ#¨%°uÀ4Ð#ÓHÐHr^   c                ó‚   — | j                  |«      }t        |t        «      st        d«      ‚|j	                  |||¬«      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)Úcolumnr§   r¨   )r8  rW   r	  r´   Úread_column)r×   r—   r=  r§   r¨   r:  s         r\   Úselect_columnzHDFStore.select_column¹  s>   € ðF �o‰o˜cÓ"ˆÜ˜#œuÔ%ÜÐ?Ó@Ð@Ø�‰ f°EÀˆÓEÐEr^   c
                óÐ  ‡‡‡— t        |d¬«      }t        |t        t        f«      rt	        |«      dk(  r|d   }t        |t
        «      r| j                  ||‰|||||	¬«      S t        |t        t        f«      st        d«      ‚t	        |«      st        d«      ‚|€|d   }|D �
cg c]  }
| j                  |
«      ‘Œ c}
Š| j                  |«      }d}t        j                  ||fgt        ‰|«      «      D ]d  \  }}
|€t        d|
› d	�«      ‚|j                  st        d
|j                  › d�«      ‚|€|j                   }ŒK|j                   |k7  sŒ[t        d«      ‚ ‰D �cg c]  }t        |t"        «      sŒ|‘Œ }}|D �ch c]  }|j$                  d   d   ’Œ c}j'                  «       Šˆˆˆfd„}t)        | |||||||||	¬«
      }|j+                  d¬«      S c c}
w c c}w c c}w )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   rl   r   )r—   rr   r©   r§   r¨   rª   r«   r¬   zkeys must be a list/tuplez keys must have a non-zero lengthNz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           	     óŠ   •— ‰D �cg c]  }|j                  |‰| |¬«      ‘Œ }}t        |‰d¬«      j                  «       S c c}w )N©rr   r©   r§   r¨   F)ÚaxisÚverify_integrity)r*  r5   Ú_consolidate)r+  r,  r-  r|   ÚobjsrD  r©   Útblss        €€€r\   r.  z)HDFStore.select_as_multiple.<locals>.func?  sR   ø€ ð
 öàð —‘˜V¨W¸FÈ�ÕOðˆDð ô ˜$ T¸EÔB×OÑOÓQÐQùòs   †A r/  T)Úcoordinates)ru   rW   rn   ro   rq   rf   r¹   r´   r­   r8  Ú	itertoolsÚchainÚziprï   Úis_tableÚpathnamer0  r	  Únon_index_axesÚpopr3  r4  )r×   r  rr   Úselectorr©   r§   r¨   rª   r«   r¬   Úkr[   r0  r|   ÚxÚ_tblsr.  r5  rD  rH  s       `             @@r\   Úselect_as_multiplezHDFStore.select_as_multipleá  s  ú€ ôV ˜U°Ô2ˆÜ�dœT¤5˜MÔ*¬s°4«y¸Aª~Ø˜‘7ˆDÜ�dœCÔ Ø—;‘;ØØØØØØ!Ø#Ø%ð ó 	ð 	ô ˜$¤¤u Ô.ÜÐ7Ó8Ð8ä�4ŒyÜÐ?Ó@Ð@àÐØ˜A‘wˆHð -1Ö1 q�—‘ Õ"Ò1ˆØ�O‰O˜HÓ%ˆð ˆÜ—O‘O a¨ ] O´S¸¸t³_ÓEò 	Q‰DˆAˆqØˆyÜ °°°1Ð5Ó6Ð6Ø—:’:ÜØ˜qŸz™z˜lð +)ð )óð ð
 ˆ}ØŸ™‘Ø—‘˜EÓ!Ü Ð!OÓPÐPð	Qð  !Ö9�q¤J¨q´%Õ$8’Ð9ˆÐ9ð 16Ö6¨1�× Ñ  Ñ# AÓ&Ò6×:Ñ:Ó<ˆö		Rô ØØØØØØØØØØ!ô
ˆð �}‰}¨ˆ}Ó.Ð.ùòg 2ùò* :ùò 7s   Â%GÅ!GÅ7GÆG#c                ó†   — |€t        d«      xs d}| j                  |«      }| j                  |||||||||	|
||||¬«       y)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_formatry   )r�   rŽ   r”   rŸ   rž   r�   r�   r’   rc   r“   Útrack_timesr‘   )r   Ú_validate_formatÚ_write_to_group)r×   r—   r˜   r�   rŽ   r”   rŸ   rž   r�   r�   r’   rc   r“   rX  r‘   s                  r\   rœ   zHDFStore.putZ  sg   € ðp ˆ>ÜÐ 7Ó8ÒC¸GˆFØ×&Ñ& vÓ.ˆØ×ÑØØØØØØØØ%ØØ%ØØØ#Øð 	õ 	
r^   c                ó¾  — t        |d¬«      }	 | j                  |«      }t        j                  |||«      rj                  j                  d¬«       yj                  st        d«      ‚|j                  |||¬«      S # t        $ r ‚ t        $ r ‚ t        $ rB}|�t        d«      |‚| j                  |«      }|�|j                  d¬«       Y d}~yY d}~Œ·d}~ww xY w)	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   rl   Nz5trying to remove a node with a non-None where clause!T©Ú	recursivez7can only remove with where on objects written as tablesr7  )ru   r8  rï   ÚAssertionErrorÚ	Exceptionr­   rô   Ú	_f_removeÚcomÚall_nonerÅ   rM  Údelete)r×   r—   rr   r§   r¨   r[   Úerrrõ   s           r\   rë   zHDFStore.remove¦  sé   € ô* ˜U°Ô2ˆð	Ø—‘ Ó$ˆAô. �<‰<˜˜u dÔ+Ø�G‰G×Ñ¨ÐÕ-ð —:’:Ü ØMóð ð —8‘8 %¨u¸4�8Ó@Ð@øô? ò 	àÜò 	àÜò 	ð Ð Ü ØKóàðð
 —=‘= Ó%ˆDØÐØ—‘¨�Ô.Üô  ûð	ús   �A? Á?CÂ3CÃCc                ó¾   — |	�t        d«      ‚|€t        d«      }|€t        d«      xs d}| j                  |«      }| j                  |||||||||
|||||||¬«       y)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_tablerW  rz   )r�   ÚaxesrŽ   r”   rŸ   rž   r�   r�   r«   Úexpectedrowsr‘   r’   rc   r“   )r´   r   rY  rZ  )r×   r—   r˜   r�   rf  rŽ   r”   rŸ   rž   r©   r�   r�   r«   rg  r‘   r’   rc   r“   s                     r\   r”   zHDFStore.appendß  s•   € ðR ÐÜØPóð ð ˆ>ÜÐ 5Ó6ˆFØˆ>ÜÐ 7Ó8ÒC¸GˆFØ×&Ñ& vÓ.ˆØ×ÑØØØØØØØØØ%ØØØ%ØØ%ØØð! 	õ 	
r^   c                ó  ‡— |�t        d«      ‚t        |t        «      st        d«      ‚||vrt        d«      ‚t	        t        t        t        ‰j                  «      «      t        t        t        ‰«         «      z
  «      «      }d}	g }
|j                  «       D ](  \  }}|€|	�t        d«      ‚|}	Œ|
j                  |«       Œ* |	�W‰j                  |   }|j                  t        |
«      «      }t!        |j#                  |«      «      }|j%                  |«      ||	<   |€||   }|rKˆfd„|j'                  «       D «       }t	        |«      }|D ]  }|j)                  |«      }Œ ‰j*                  |   Š|j-                  dd«      }|j                  «       D ]e  \  }}||k(  r|nd}‰j/                  ||¬«      }|�)|j                  «       D ��ci c]  \  }}||v sŒ||“Œ c}}nd} | j0                  ||f||d	œ|¤Ž Œg yc c}}w )
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  ó\   •K  — | ]#  }‰|   j                  d ¬«      j                  –— Œ% y­w)Úall)ÚhowN)r‘   rŽ   )Ú.0Úcolsr˜   s     €r\   ú	<genexpr>z.HDFStore.append_to_multiple.<locals>.<genexpr>�  s)   øè ø€ ÒO¸D�E˜$‘K×&Ñ&¨5Ð&Ó1×7Õ7ÑOùs   ƒ),r�   ©rD  )r’   r�   )r´   rW   Údictr­   Únextr  ÚsetÚrangeÚndimÚ	_AXES_MAPrð   r  Úextendrf  Ú
differencer.   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocrP  Úreindexr”   )r×   Údr˜   rQ  r’   rf  r‘   r¼   rD  Ú
remain_keyÚremain_valuesrR  ÚvÚorderedÚorddÚidxsÚvalid_indexrŽ   r�   ÚdcÚvalr—   Úfiltereds     `                    r\   Úappend_to_multiplezHDFStore.append_to_multipleE  s4  ø€ ð> ÐÜðBóð ô
 ˜!œTÔ"Üð)óð ð
 ˜1ÑÜØOóð ô
 ”DœœU 5§:¡:Ó.Ó/´#´iÄÀUÃÑ6LÓ2MÑMÓNÓOˆð ˆ
Ø ˆØ—G‘G“Iò 	(‰DˆAˆqØˆyØÐ)Ü$ØVóð ð ‘
à×$Ñ$ QÕ'ð	(ð Ð!Ø—j‘j Ñ&ˆGØ×%Ñ%¤e¨MÓ&:Ó;ˆDÜ˜'×-Ñ-¨dÓ3Ó4ˆDØ#ŸL™L¨Ó.ˆAˆj‰Mð ÐØ˜X™;ˆLñ ÛOÀAÇHÁHÃJÔOˆDÜ˜t›*ˆKØò >�Ø)×6Ñ6°uÓ=‘ð>à—I‘I˜kÑ*ˆEà—z‘z .°$Ó7ˆð —G‘G“Iò 	R‰DˆAˆqØ!" h¢‘°DˆBð —-‘- ¨�-Ó-ˆCð  Ð+ð 1=×0BÑ0BÓ0D×Q¡  eÈÈqÊ��e‘ÔQàð ð
 ˆD�K‰K˜˜3ÐQ¨R¸hÑQÈ&ÓQñ	Rùó Rs   Ç
G<ÇG<c                óž   — t        «        | j                  |«      }|€yt        |t        «      st	        d«      ‚|j                  |||¬«       y)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©   ÚoptlevelÚkind)rŠ   r8  rW   r	  r´   Úcreate_index)r×   r—   r©   rŒ  r�  r[   s         r\   Úcreate_table_indexzHDFStore.create_table_index¦  sG   € ô> 	Œ	Ø�O‰O˜CÓ ˆØˆ9Øä˜!œUÔ#ÜÐOÓPÐPØ	�‰˜w°ÀˆÕEr^   c                ó²  — t        «        | j                  «        | j                  €J ‚t        €J ‚| j                  j	                  «       D �cg c]  }t        |t        j                  j                  «      sYt        |j                  dd«      s@t        |dd«      s3t        |t        j                  j                  «      r|j                  dk7  r|‘Œ� c}S c c}w )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)]]
        NÚpandas_typerz   )rŠ   rß   rÊ   r„   Úwalk_groupsrW   ÚlinkÚLinkÚgetattrÚ_v_attrsrz   r	  rÄ   r  s     r\   r¶   zHDFStore.groupsÎ  s±   € ô, 	Œ	Ø×ÑÔØ�|‰|Ð'Ð'Ð'ÜÐ%Ð%Ð%ð —\‘\×-Ñ-Ó/ö
àä˜q¤*§/¡/×"6Ñ"6Ô7ä˜AŸJ™J¨°tÔ<Ü˜q '¨4Ô0Ü" 1¤j×&6Ñ&6×&<Ñ&<Ô=À!Ç)Á)ÈwÒBVò ò
ð 	
ùò 
s   ÁBCc              #  óL  K  — t        «        | j                  «        | j                  €J ‚t        €J ‚| j                  j	                  |«      D ]Ò  }t        |j                  dd«      �Œg }g }|j                  j                  «       D ]w  }t        |j                  dd«      }|€At        |t        j                  j                  «      sŒA|j                  |j                  «       Œ]|j                  |j                  «       Œy |j                  j                  d«      ||f–— ŒÔ y­w)a€  
        Walk the pytables group hierarchy for pandas objects.

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

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

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

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

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

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
        >>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
        >>> store.put('data', df1, format='table')  # doctest: +SKIP
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'])
        >>> store.append('data', df2)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        >>> for group in store.walk():  # doctest: +SKIP
        ...     print(group)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        Nr‘  r  )rŠ   rß   rÊ   r„   r’  r•  r–  Ú_v_childrenr{  rW   rÅ   ÚGroupr”   rÄ   r¸   Úrstrip)r×   rr   r  r¶   ÚleavesÚchildr‘  s          r\   ÚwalkzHDFStore.walkõ  sü   è ø€ ôN 	Œ	Ø×ÑÔØ�|‰|Ð'Ð'Ð'ÜÐ%Ð%Ð%à—‘×)Ñ)¨%Ó0ò 	>ˆAÜ�q—z‘z =°$Ó7ÐCØàˆFØˆFØŸ™×-Ñ-Ó/ò 1�Ü% e§n¡n°mÀTÓJ�ØÐ&Ü! %¬×)9Ñ)9×)?Ñ)?Õ@ØŸ™ e§m¡mÕ4à—M‘M %§-¡-Õ0ð1ð —=‘=×'Ñ'¨Ó,¨f°fÐ=Ó=ñ	>ùs   ‚CD$ÃAD$c                óf  — | j                  «        |j                  d«      sd|z   }| j                  €J ‚t        €J ‚	 | j                  j	                  | j
                  |«      }t        |t        j                  «      sJ t        |«      «       ‚|S # t        j                  j                  $ r Y yw xY w)z9return the node with the key or None if it does not existr  N)rß   Ú
startswithrÊ   r„   rô   rà   Ú
exceptionsÚNoSuchNodeErrorrW   rK   rð   )r×   r—   rõ   s      r\   rô   zHDFStore.get_node1  s¢   € à×ÑÔØ�~‰~˜cÔ"Ø˜‘)ˆCà�|‰|Ð'Ð'Ð'ÜÐ%Ð%Ð%ð	Ø—<‘<×(Ñ(¨¯©°CÓ8ˆDô ˜$¤
§¡Ô0Ð<´$°t³*Ó<Ð0Øˆøô	 ×$Ñ$×4Ñ4ò 	Ùð	ús   ¾&B ÂB0Â/B0c                óŒ   — | j                  |«      }|€t        d|› d�«      ‚| j                  |«      }|j                  «        |S )z<return the storer object for a key, raise if not in the filer$  r%  )rô   rï   r1  r2  )r×   r—   rÅ   r[   s       r\   r8  zHDFStore.get_storerA  sH   € à—‘˜cÓ"ˆØˆ=ÜÐ-¨c¨U°,Ð?Ó@Ð@à×Ñ Ó&ˆØ	�‰ŒØˆr^   c	                ó:  — t        |||||¬«      }	|€t        | j                  «       «      }t        |t        t        f«      s|g}|D ]Ì  }
| j                  |
«      }|€Œ|
|	v r|r|	j                  |
«       | j                  |
«      }t        |t        «      r`d}|r0|j                  D �cg c]  }|j                  sŒ|j                  ‘Œ }}|	j                  |
||t        |dd«      |j                  ¬«       Œ¯|	j                  |
||j                  ¬«       ŒÎ |	S c c}w )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Ø   NFr’   )rŽ   r’   rc   rb   )r    rn   r  rW   ro   r8  rë   r¹   r	  rf  Ú
is_indexedrh   r”   r•  rc   rœ   )r×   r‡   r�   Úpropindexesr  rŸ   rž   rØ   Ú	overwriteÚ	new_storerR  r[   ÚdatarŽ   r¦   s                  r\   ÚcopyzHDFStore.copyK  s  € ô8 Ø�t W¸	Èjô
ˆ	ð ˆ<Ü˜Ÿ	™	›Ó$ˆDÜ˜$¤¬ Ô.Ø�6ˆDØò 	@ˆAØ—‘ Ó"ˆAØ‰}Ø˜	‘>Ù Ø!×(Ñ(¨Ô+à—{‘{ 1“~�Ü˜a¤Ô'Ø.3�EÙ"Ø12·±Ö H¨A¸1¿<»< §£Ð H˜Ð HØ×$Ñ$ØØØ#Ü%,¨Q°ÀÓ%EØ!"§¡ð %õ ð —M‘M ! T°A·J±J�MÕ?ð)	@ð, Ðùò !Is   Â(DÂ:Dc                óX  — t        | j                  «      }t        | «      › d|› d�}| j                  r¢t	        | j                  «       «      }t        |«      rwg }g }|D ]\  }	 | j                  |«      }|�F|j                  t        |j                  xs |«      «       |j                  t        |xs d«      «       Œ^ |t        d||«      z  }|S |dz  }|S |d	z  }|S # t        $ r ‚ t        $ r;}|j                  |«       t        |«      }	|j                  d|	› d�«       Y d}~ŒÇd}~ww xY w)
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: rA  é   ÚEmptyzFile is CLOSED)rD   rÑ   rð   r®   rx  r  rq   r8  r”   rN  r^  r_  rC   )
r×   r²   ÚoutputÚlkeysr  r{  rR  r[   ÚdetailÚdstrs
             r\   ÚinfozHDFStore.info†  s9  € ô& ˜DŸJ™JÓ'ˆÜ˜“J�<˜}¨T¨F°"Ð5ˆà�<Š<Ü˜4Ÿ9™9›;Ó'ˆEÜ�5ŒzØ�Ø�àò J�AðJØ ŸO™O¨AÓ.˜Ø˜=Ø ŸK™K¬°Q·Z±Z²_À1Ó(EÔFØ"ŸM™M¬,°qÒ7SÐ<SÓ*TÔUøðJð œ&  T¨6Ó2Ñ2�ð ˆð	 ˜'Ñ!�ð ˆð Ð&Ñ&ˆFàˆøô *ò àÜ$ò JØŸ™ AœÜ+¨FÓ3˜ØŸ™Ð(@ÀÀÀaÐ&H×IÑIûðJús   Á!ACÃD)Ã.1D$Ä$D)c                óL   — | j                   st        | j                  › d�«      ‚y )Nz file is not open!)r®   r   rÑ   rÜ   s    r\   rß   zHDFStore._check_if_open»  s%   € Ø�|Š|Ü! T§Z¡Z LÐ0BÐ"CÓDÐDð r^   c                óx   — 	 t         |j                  «          }|S # t        $ r}t        d|› d�«      |‚d}~ww xY w)zvalidate / deprecate formatsz#invalid HDFStore format specified [rA  N)Ú_FORMAT_MAPÚlowerrï   r´   )r×   r�   rd  s      r\   rY  zHDFStore._validate_format¿  sK   € ð	VÜ  §¡£Ñ0ˆFð ˆøô ò 	VÜÐAÀ&ÀÈÐKÓLÐRUÐUûð	Vús   ‚ ›	9¤4´9c           	     ó  — |�!t        |t        t        f«      st        d«      ‚t	        t        |j                  dd«      «      }t	        t        |j                  dd«      «      }|€t|€St        «        t        €J ‚t        |dd«      s$t        |t        j                  j                  «      rd}d}n*t        d«      ‚t        |t        «      rd	}nd
}|dk(  r|dz  }d|vrt        t        dœ}	 ||   }	 |	| |||¬«      S |€q|�o|dk(  r3t        |dd«      }|�[|j                  dk(  rd}nI|j                  dkD  r:d}n7|dk(  r2t        |dd«      }|�#|j                  dk(  rd}n|j                  dkD  rd}t         t"        t$        t&        t(        t*        dœ}	 ||   }	 |	| |||¬«      S # t        $ r#}
t        d|› dt        |«      › d|› �«      |
‚d}
~
ww xY w# t        $ r#}
t        d|› dt        |«      › d|› �«      |
‚d}
~
ww xY w)z"return a suitable class to operateNz(value must be None, Series, or DataFramer‘  Ú
table_typerz   Ú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->©rc   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->)rW   r2   r,   r´   r]   r•  r–  rŠ   r„   rz   r	  ÚSeriesFixedÚ
FrameFixedrï   rð   ÚnlevelsÚGenericTableÚAppendableSeriesTableÚAppendableMultiSeriesTableÚAppendableFrameTableÚAppendableMultiFrameTableÚ	WORMTable)r×   rÅ   r�   r˜   rc   r“   ÚptÚttÚ_STORER_MAPÚclsrd  rŽ   Ú
_TABLE_MAPs                r\   r1  zHDFStore._create_storerÉ  sY  € ð Ð¤Z°¼Ä	Ð7JÔ%KÜÐFÓGÐGäœW U§^¡^°]ÀDÓIÓJˆÜœW U§^¡^°\À4ÓHÓIˆð ˆ:Øˆ}Ü”	Ü!Ð-Ð-Ð-Ü˜5 '¨4Ô0´JØœ:×+Ñ+×1Ñ1ô5ð '�BØ(‘Bä#ð1óð ô
 ˜e¤VÔ,Ø!‘Bà �Bð ˜WÒ$Ø˜(‘N�Bð ˜"ÑÜ%0¼:ÑFˆKðØ! "‘o�ñ �t˜U¨X¸fÔEÐEð ˆ:àÐ Ø˜Ò'Ü# E¨7°DÓ9�EØÐ(Ø Ÿ=™=¨AÒ-Ø!4™BØ"Ÿ]™]¨QÒ.Ø!9™BØ˜=Ò(Ü# E¨7°DÓ9�EØÐ(Ø Ÿ=™=¨AÒ-Ø!3™BØ"Ÿ]™]¨QÒ.Ø!8˜Bô *Ü!6Ü&@Ü 4Ü%>Üñ
ˆ
ð	Ø˜R‘.ˆCñ �4˜¨¸&ÔAÐAøôU ò ÜØSØ�g˜X¤d¨5£k ]°)¸F¸8ðEóð ðûðûôH ò 	ÜØNØ�'˜¤$ u£+ ¨i¸°xðAóð ðûð	ús0   Ã,F# ÆG Æ#	GÆ,G
Ç
GÇ	G>ÇG9Ç9G>c                óþ  — t        |dd «      r|dk(  s|ry | j                  ||«      }| j                  |||||¬«      }|rQ|j                  r|j                  r|dk(  r|j                  rt        d«      ‚|j                  s!|j                  «        n|j                  «        |j                  s|rt        d«      ‚|j                  ||||||	|
||||||¬«       t        |t        «      r|r|j                  |¬«       y y y )	NÚemptyrz   r¾  ry   zCan only append to Tablesz0Compression not supported on Fixed format stores)Úobjrf  r”   rŸ   rž   rØ   r�   r«   rg  r‘   r�   r’   rX  )r©   )r•  Ú_identify_groupr1  rM  Ú	is_existsr­   Úset_object_infoÚwriterW   r	  rŽ  )r×   r—   r˜   r�   rf  rŽ   r”   rŸ   rž   rØ   r�   r«   rg  r‘   r�   r’   rc   r“   rX  rÅ   r[   s                        r\   rZ  zHDFStore._write_to_group$  s  € ô. �5˜' 4Ô(¨f¸Ò.?Á6Øà×$Ñ$ S¨&Ó1ˆà×Ñ  v¨u¸xÐPVÐÓWˆÙð —:’: !§*¢*°¸7Ò1BÀqÇ{Â{Ü Ð!<Ó=Ð=Ø—;’;Ø×!Ñ!Õ#à×ÑÔà�zŠz™gÜÐOÓPÐPð 	
�‰ØØØØØØ!Ø%ØØ%ØØØ%Ø#ð 	ô 	
ô  �aœÔ¡EØ�N‰N 5ˆNÕ)ð %*Ðr^   c                ód   — | j                  |«      }|j                  «        |j                  «       S r`   )r1  r2  r*  )r×   rÅ   r[   s      r\   r&  zHDFStore._read_groupb  s&   € Ø×Ñ Ó&ˆØ	�‰ŒØ�v‰v‹xˆr^   c                ó°   — | j                  |«      }| j                  €J ‚|�!|s| j                  j                  |d¬«       d}|€| j                  |«      }|S )z@Identify HDF5 group based on key, delete/create group if needed.NTr\  )rô   rÊ   Úremove_nodeÚ_create_nodes_and_group)r×   r—   r”   rÅ   s       r\   rÖ  zHDFStore._identify_groupg  sb   € à—‘˜cÓ"ˆð �|‰|Ð'Ð'Ð'ð Ð¡VØ�L‰L×$Ñ$ U°dÐ$Ô;ØˆEàˆ=Ø×0Ñ0°Ó5ˆEàˆr^   c                ó
  — | j                   €J ‚|j                  d«      }d}|D ]\  }t        |«      sŒ|}|j                  d«      s|dz  }||z  }| j	                  |«      }|€| j                   j                  ||«      }|}Œ^ S )z,Create nodes from key and return group name.r  )rÊ   Úsplitrq   Úendswithrô   Úcreate_group)r×   r—   Úpathsr²   ÚpÚnew_pathrÅ   s          r\   rÝ  z HDFStore._create_nodes_and_groupy  s—   € ð �|‰|Ð'Ð'Ð'à—	‘	˜#“ˆàˆØò 
	ˆAÜ�q”6ØØˆHØ—=‘= Ô%Ø˜C‘�Ø˜‰MˆHØ—M‘M (Ó+ˆEØˆ}ØŸ™×1Ñ1°$¸Ó:�Ø‰Dð
	ð ˆr^   )r¦   NNF)r�   rf   rž   ú
int | NonerØ   r  ÚreturnÚNone©ræ  rf   ©r—   rf   )r—   rf   ræ  rç  )rh   rf   )r—   rf   ræ  r  ©ræ  Úint)ræ  rQ   )r  ztype[BaseException] | Noner  zBaseException | Noner  zTracebackType | Noneræ  rç  )r  )r  rf   ræ  ú	list[str])ræ  zIterator[str])ræ  zIterator[tuple[str, list]])r¦   )r�   rf   ræ  rç  ©ræ  rç  ©ræ  r  ©F)r!  r  ræ  rç  )NNNNFNF)r—   rf   rª   r  r«   rå  r¬   r  ©NNN©r—   rf   r§   rå  r¨   rå  ©NN)r—   rf   r=  rf   r§   rå  r¨   rå  )NNNNNFNF)rª   r  r«   rå  r¬   r  )NTFNNNNNNrƒ   TF)r—   rf   r˜   úDataFrame | SeriesrŽ   r  r”   r  rž   rå  r�   úint | dict[str, int] | Noner’   ú Literal[True] | list[str] | Noner“   rf   rX  r  r‘   r  ræ  rç  )NNTTNNNNNNNNNNrƒ   )r—   rf   r˜   ró  rŽ   úbool | list[str]r”   r  rž   rå  r�   rô  r«   rå  r‘   úbool | Noner’   rõ  r“   rf   ræ  rç  )NNF)r  rp  r‘   r  ræ  rç  )r—   rf   rŒ  rå  r�  ú
str | Noneræ  rç  )ræ  rn   )r  )rr   rf   ræ  z*Iterator[tuple[str, list[str], list[str]]])r—   rf   ræ  zNode | None)r—   rf   ræ  úGenericFixed | Table)r  TNNNFT)r�   rf   r¥  r  rž   rå  rØ   r  r¦  r  ræ  r    )r�   rf   ræ  rf   )NNrU   rƒ   )r˜   zDataFrame | Series | Nonerc   rf   r“   rf   ræ  rù  )NTFNNNNNNFNNNrƒ   T)r—   rf   r˜   ró  rŽ   rö  r”   r  rž   rå  r�   rô  r«   rå  r‘   r  r“   rf   rX  r  ræ  rç  )rÅ   rK   )r—   rf   r”   r  ræ  rK   )r—   rf   ræ  rK   )1rñ   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rÙ   rÝ   Úpropertyrà   râ   rç   ré   rì   rò   rö   rø   rý   rÿ   r  r  r  r  rÖ   r»   r®   r   rå   r¹   r;  r?  rU  rœ   rë   r”   rŠ  r�  r¶   r�  rô   r8  r©  r±  rß   rY  r1  rZ  r&  rÖ  rÝ  rÍ   r^   r\   r    r    ò  s?  … ñ?ðB ÓØƒJð
 Ø $ØØ ð'ð ð'ð ð	'ð ð'ð 
ó'óBð ñ!ó ð!ð òó ðóóó ó
ó
ó"ó4óðà,ðð (ðð (ð	ð
 
óô(
óT!ó#ô+JóZð ò)ó ð)ô4ó,+ð@ ØØØØØ $Ø ð[àð[ð ð[ð ð[ð ó[ð@ Ø ØðIàðIð ð	Ið
 óIðH !Øð&Fàð&Fð ð&Fð ð	&Fð
 ó&FðV ØØØØØØ $Ø ðw/ð ðw/ð ðw/ð ów/ðz ØØØØ $Ø48ØØ9=ØØØ ØðJ
àðJ
ð "ðJ
ð
 ðJ
ð ðJ
ð ðJ
ð 2ðJ
ð 7ðJ
ð ðJ
ð ðJ
ð ðJ
ð  
ó!J
ôX7Aðz ØØ"&ØØØ $ØØ48ØØ $ØØ"Ø9=ØØð%d
àðd
ð "ðd
ð  ðd
ð ðd
ð ðd
ð 2ðd
ð ðd
ð ðd
ð  7ð!d
ð$ ð%d
ð& 
ó'd
ðV ØØð_Ràð_Rð ð_Rð 
ó_RðH Ø#Øð&Fàð&Fð ð	&Fð
 ð&Fð 
ó&FóP%
ôN:>óxó ð Ø ØØØ $Ø Øð9ð ð9ð ð	9ð ð9ð ð9ð ð9ð 
ó9óv0ójEóð Ø+/ØØðYBð )ð	YBð
 ðYBð ðYBð 
óYBð@ Ø"&ØØØ $ØØ48Ø $ØØØØØØØ ð'<*àð<*ð "ð<*ð  ð<*ð ð<*ð ð<*ð 2ð<*ð ð<*ð ð<*ð$ ð%<*ð& ð'<*ð( 
ó)<*ó|ó
ô$r^   r    c                  ót   — 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y)r3  aa  
    Define the iteration interface on a table

    Parameters
    ----------
    store : HDFStore
    s     : the referred storer
    func  : the function to execute the query
    where : the where of the query
    nrows : the rows to iterate on
    start : the passed start value (default is None)
    stop  : the passed stop value (default is None)
    iterator : bool, default False
        Whether to use the default iterator.
    chunksize : the passed chunking value (default is 100000)
    auto_close : bool, default False
        Whether to automatically close the store at the end of iteration.
    rå  r«   r    r–   rù  r[   Nc                ó,  — || _         || _        || _        || _        | j                  j                  r|€d}|€d}|€|}t        ||«      }|| _        || _        || _        d | _	        |s|	�|	€d}	t        |	«      | _        |
| _        y d | _        |
| _        y )Nr   é † )r–   r[   r.  rr   rM  Úminr0  r§   r¨   rI  rë  r«   r¬   )r×   r–   r[   r.  rr   r0  r§   r¨   rª   r«   r¬   s              r\   rÙ   zTableIterator.__init__§  s«   € ð ˆŒ
ØˆŒØˆŒ	ØˆŒ
ð �6‰6�?Š?Øˆ}Ø�Øˆ}Ø�Øˆ|Ø�Ü�u˜dÓ#ˆDàˆŒ
ØˆŒ
ØˆŒ	àˆÔÙ�yÐ,ØÐ Ø"�	Ü  ›^ˆDŒNð %ˆ�ð "ˆDŒNà$ˆ�r^   c              #  ó^  K  — | j                   }| j                  €t        d«      ‚|| j                  k  rgt	        || j
                  z   | j                  «      }| j                  d d | j                  || «      }|}|�t        |«      sŒb|–— || j                  k  rŒg| j                  «        y ­w)Nz*Cannot iterate until get_result is called.)	r§   rI  r­   r¨   r  r«   r.  rq   r»   )r×   rÇ   r¨   r˜   s       r\   r  zTableIterator.__iter__Ñ  sœ   è ø€ à—*‘*ˆØ×ÑÐ#ÜÐIÓJÐJØ˜Ÿ	™	Ò!Ü�w §¡Ñ/°·±Ó;ˆDØ—I‘I˜d D¨$×*:Ñ*:¸7À4Ð*HÓIˆEØˆGØˆ}¤C¨¤JØàŠKð ˜Ÿ	™	Ó!ð 	�
‰
�ùs   ‚BB-ÂB-c                óR   — | j                   r| j                  j                  «        y y r`   )r¬   r–   r»   rÜ   s    r\   r»   zTableIterator.closeá  s   € Ø�?Š?Ø�J‰J×ÑÕð r^   c                ó  — | j                   �Rt        | j                  t        «      st	        d«      ‚| j                  j                  | j                  ¬«      | _        | S |rbt        | j                  t        «      st	        d«      ‚| j                  j                  | j                  | j                  | j                  ¬«      }n| j                  }| j                  | j                  | j                  |«      }| j                  «        |S )Nz0can only use an iterator or chunksize on a table)rr   z$can only read_coordinates on a tabler7  )r«   rW   r[   r	  r´   r9  rr   rI  r§   r¨   r.  r»   )r×   rI  rr   Úresultss       r\   r4  zTableIterator.get_resultå  sÉ   € à�>‰>Ð%Ü˜dŸf™f¤eÔ,ÜÐ RÓSÐSà#Ÿv™v×6Ñ6¸T¿Z¹ZÐ6ÓHˆDÔàˆKñ Ü˜dŸf™f¤eÔ,ÜÐ FÓGÐGØ—F‘F×+Ñ+Ø—j‘j¨¯
©
¸¿¹ð ,ó ‰Eð —J‘JˆEð —)‘)˜DŸJ™J¨¯	©	°5Ó9ˆØ�
‰
ŒØˆr^   )NNFNF)r–   r    r[   rù  rª   r  r«   rå  r¬   r  ræ  rç  ©ræ  rF   rí  rï  )rI  r  )	rñ   rú  rû  rü  rý  rÙ   r  r»   r4  rÍ   r^   r\   r3  r3  �  sz   … ñð& ÓØƒOØÓð ØØØ $Ø ð(%àð(%ð  ð(%ð ð(%ð ð(%ð ð(%ð 
ó(%óTó õr^   r3  c                  ór  — e Zd ZU dZdZded<   dZded<   g d¢Z	 	 	 	 	 	 	 	 	 	 	 	 	 d!	 	 	 	 	 d"d„Ze	d#d	„«       Z
e	d$d
„«       Zd%d„Zd$d„Zd&d„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+d„Zd+d„Zd.d„Z d.d „Z!y)/Ú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_nameNc                óœ  — t        |t        «      st        d«      ‚|| _        || _        || _        || _        |xs || _        || _        || _	        || _
        |	| _        |
| _        || _        || _        || _        || _        |�| j#                  |«       t        | j                  t        «      sJ ‚t        | j                  t        «      sJ ‚y )Nz`name` must be a str.)rW   rf   r­   r{  r�  Útyprh   ÚcnamerD  Úposr  r  r  rƒ  rz   rÁ   ÚmetadataÚset_pos)r×   rh   r{  r�  r  r  rD  r  r  r  r  rƒ  rz   rÁ   r  s                  r\   rÙ   zIndexCol.__init__  s»   € ô" ˜$¤Ô$ÜÐ4Ó5Ð5àˆŒØˆŒ	ØˆŒØˆŒ	Ø’]˜dˆŒ
ØˆŒ	ØˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒØˆŒ
ØˆŒ	Ø ˆŒàˆ?Ø�L‰L˜Ôô ˜$Ÿ)™)¤SÔ)Ð)Ð)Ü˜$Ÿ*™*¤cÔ*Ð*Ñ*r^   c                ó.   — | j                   j                  S r`   )r  ÚitemsizerÜ   s    r\   r  zIndexCol.itemsize<  s   € ð �x‰x× Ñ Ð r^   c                ó    — | j                   › d�S )NÚ_kindrg   rÜ   s    r\   Ú	kind_attrzIndexCol.kind_attrA  ó   € à—)‘)�˜EÐ"Ð"r^   c                óT   — || _         |�| j                  �|| j                  _        yyy)z,set the position of this column in the TableN)r  r  Ú_v_pos)r×   r  s     r\   r  zIndexCol.set_posE  s)   € àˆŒØˆ?˜tŸx™xÐ3Ø!ˆD�H‰H�Oð  4ˆ?r^   c           
     ó  — t        t        t        | j                  | j                  | j
                  | j                  | j                  f«      «      }dj                  t        g d¢|«      D ��cg c]  \  }}|› d|› �‘Œ c}}«      S c c}}w )Nú,)rh   r  rD  r  r�  ú->)
ro   ÚmaprD   rh   r  rD  r  r�  ÚjoinrL  ©r×   Útempr—   r˜   s       r\   rý   zIndexCol.__repr__K  s}   € ÜÜ”˜tŸy™y¨$¯*©*°d·i±iÀÇÁÈ4Ï9É9ÐUÓVó
ˆð �x‰xô #&Ò&NÐPTÓ"U÷á�C˜ð �%�r˜%˜Ò!óó
ð 	
ùóó   Á-B
c                ó0   ‡ ‡— t        ˆˆ fd„dD «       «      S )úcompare 2 col itemsc              3  óT   •K  — | ]  }t        ‰|d «      t        ‰|d «      k(  –— Œ! y ­wr`   ©r•  ©rl  r¦   Úotherr×   s     €€r\   rn  z"IndexCol.__eq__.<locals>.<genexpr>X  ó0   øè ø€ ò 
àô �D˜!˜TÓ"¤g¨e°Q¸Ó&=Õ=ñ
ùó   ƒ%()rh   r  rD  r  ©rj  ©r×   r*  s   ``r\   Ú__eq__zIndexCol.__eq__V  s   ù€ äô 
à5ô
ó 
ð 	
r^   c                ó&   — | j                  |«       S r`   )r/  r.  s     r\   Ú__ne__zIndexCol.__ne__]  s   € Ø—;‘;˜uÓ%Ð%Ð%r^   c                ó˜   — t        | j                  d«      syt        | j                  j                  | j                  «      j
                  S )z%return whether I am an indexed columnrm  F)Úhasattrrz   r•  rm  r  r¤  rÜ   s    r\   r¤  zIndexCol.is_indexed`  s4   € ô �t—z‘z 6Ô*àÜ�t—z‘z—‘¨¯
©
Ó3×>Ñ>Ð>r^   c           	     ó�  — t        |t        j                  «      sJ t        |«      «       ‚|j                  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 |¤Ž}t5        || j6                  «      }
|
|
fS # t$        $ r`}	|dk(  rPt'        d«      rEt)        |	«      j+                  d	«      r+t,        r% ||fd
t/        dt        j0                  ¬«      i|¤Ž}n‚ Y d}	~	Œ~d}	~	wt2        $ r d|v rd|d<    ||fi |¤Ž}Y Œžw xY w)zV
        Convert the data from this selection to the appropriate pandas type.
        Nrh   r  ÚMÚi8c                ót   — t        j                  | |j                  dd «      ¬«      j                  |d   «      S )Nr  )r  rh   )r0   Úfrom_ordinalsrå   Ú_rename)rS  Úkwdss     r\   r™   z"IndexCol.convert.<locals>.<lambda>ˆ  s5   € ¬×(AÑ(AØ˜Ÿ™ ¨Ó.ô)ç‰gØ�V‘óð r^   Úsurrogatepassúfuture.infer_stringúsurrogates not allowedÚdtypeÚpython©ÚstorageÚna_value)rW   rX   Úndarrayrð   r>  Úfieldsr  r©  r]   r�  Ú_maybe_convertr  r  r.   r   Úis_np_dtyper(   r-   ÚUnicodeEncodeErrorr   rf   rà  r   r3   Únanr­   Ú_set_tzr  )r×   r{  r�   rc   r“   Úval_kindr¼   ÚfactoryÚnew_pd_indexrd  Úfinal_pd_indexs              r\   ÚconvertzIndexCol.converth  s¯  € ô ˜&¤"§*¡*Ô-Ð;¬t°F«|Ó;Ð-ð �<‰<×ÑÐ*ð ˜DŸJ™JÑ'×,Ñ,Ó.ˆFä" 4§9¡9Ó-ˆÜ ¨°(¸FÓCˆØˆÜ(¨¯©Ó9ˆˆv‰à�9‰9Ð Ü,¨T¯Y©YÓ7ˆF�6‰Nä/4ˆÜ�?‰?˜6Ÿ<™<¨Ô-´Ø�L‰Lœ/ô2
ô $‰GØ�\‰\˜TÒ! f°Ñ&6ñ
ˆGð	5Ù" 6Ñ4¨VÑ4ˆLô* ! ¨t¯w©wÓ7ˆØ˜~Ð-Ð-øô+ "ò 	à˜/Ò)ÜÐ4Ô5Ü˜“H×%Ñ%Ð&>Ô?Ýá&Øñ ä%¨hÄÇÁÔHð ð ñ ‘ð ô ûô ò 	5ð ˜ÑØ!%��v‘Ù" 6Ñ4¨VÑ4ŠLð	5ús   Ä	E  Å 	GÅ	AF$Æ$GÇGc                ó   — | j                   S )zreturn the values©r{  rÜ   s    r\   Ú	take_datazIndexCol.take_data¨  s   € à�{‰{Ðr^   c                ó.   — | j                   j                  S r`   )rz   r–  rÜ   s    r\   ÚattrszIndexCol.attrs¬  ó   € à�z‰z×"Ñ"Ð"r^   c                ó.   — | j                   j                  S r`   ©rz   ÚdescriptionrÜ   s    r\   rW  zIndexCol.description°  ó   € à�z‰z×%Ñ%Ð%r^   c                óD   — t        | j                  | j                  d«      S )z!return my current col descriptionN)r•  rW  r  rÜ   s    r\   ÚcolzIndexCol.col´  s   € ô �t×'Ñ'¨¯©°TÓ:Ð:r^   c                ó   — | j                   S ©zreturn my cython valuesrP  rÜ   s    r\   ÚcvalueszIndexCol.cvalues¹  s   € ð �{‰{Ðr^   c                ó,   — t        | j                  «      S r`   )r  r{  rÜ   s    r\   r  zIndexCol.__iter__¾  s   € Ü�D—K‘KÓ Ð r^   c                ó  — t        | j                  «      dk(  rst        |t        «      r|j	                  | j
                  «      }|�E| j                  j                  |k  r+t        «       j                  || j                  ¬«      | _        yyyy)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  )r]   r�  rW   rp  rå   rh   r  r  rŠ   Ú	StringColr  )r×   r�   s     r\   Úmaybe_set_sizezIndexCol.maybe_set_sizeÁ  su   € ô ˜4Ÿ9™9Ó%¨Ò1Ü˜,¬Ô-Ø+×/Ñ/°·	±	Ó:�àÐ'¨D¯H©H×,=Ñ,=ÀÒ,LÜ"›9×.Ñ.¸È$Ï(É(Ð.ÓS�•ð -MÐ'ð	 2r^   c                 ó   — y r`   rÍ   rÜ   s    r\   Úvalidate_nameszIndexCol.validate_namesÎ  ó   € Ør^   c                óÌ   — |j                   | _         | j                  «        | j                  |«       | j                  |«       | j	                  |«       | j                  «        y r`   )rz   Úvalidate_colÚvalidate_attrÚvalidate_metadataÚwrite_metadataÚset_attr)r×   Úhandlerr”   s      r\   Úvalidate_and_setzIndexCol.validate_and_setÑ  sL   € Ø—]‘]ˆŒ
Ø×ÑÔØ×Ñ˜6Ô"Ø×Ñ˜wÔ'Ø×Ñ˜GÔ$Ø�‰�r^   c           	     óô   — t        | j                  «      dk(  r`| j                  }|�R|€| j                  }|j                  |k  r)t	        d|› d| j
                  › d|j                  › d�«      ‚|j                  S y)z:validate this column: return the compared against itemsizer`  Nz#Trying to store a string with len [z] in [z)] column but
this column has a limit of [zC]!
Consider using min_itemsize to preset the sizes on these columns)r]   r�  rZ  r  r­   r  )r×   r  Úcs      r\   rg  zIndexCol.validate_colÙ  sˆ   € ô ˜4Ÿ9™9Ó%¨Ò1Ø—‘ˆAØˆ}ØÐ#Ø#Ÿ}™}�HØ—:‘: Ò(Ü$Ø=¸h¸Zð HØ ŸJ™J˜<ð (ØŸJ™J˜<ð (<ð<óð ð —z‘zÐ!àr^   c                ó¨   — |rPt        | j                  | j                  d «      }|�,|| j                  k7  rt	        d|› d| j                  › d�«      ‚y y y )Nzincompatible kind in col [ú - rA  )r•  rS  r  r�  r´   )r×   r”   Úexisting_kinds      r\   rh  zIndexCol.validate_attrì  s]   € áÜ# D§J¡J°·±ÀÓEˆMØÐ(¨]¸d¿i¹iÒ-GÜØ0°°¸sÀ4Ç9Á9À+ÈQÐOóð ð .HÐ(ð r^   c                ó–  — | j                   D ]º  }t        | |d«      }|j                  | j                  i «      }|j	                  |«      }||v rp|�n||k7  ri|dv rCt
        |||fz  }t        j                  |t        t        «       ¬«       d||<   t        | |d«       Œ�t        d| j                  › d|› d|› d|› d�	«      ‚|€|€Œ¶|||<   Œ¼ y)	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 [rA  )Ú_info_fieldsr•  Ú
setdefaultrh   rå   rw   ÚwarningsÚwarnr   r    Úsetattrr­   )r×   r±  r—   r˜   ÚidxÚexisting_valueÚwss          r\   Úupdate_infozIndexCol.update_infoõ  s÷   € ð
 ×$Ñ$ò 	!ˆCÜ˜D # tÓ,ˆEØ—/‘/ $§)¡)¨RÓ0ˆCà ŸW™W S›\ˆNØ�c‰z˜eÐ/°NÀeÒ4KàÐ0Ñ0Ü/°3¸ÈÐ2NÑN�BÜ—M‘MØÔ4ÔAQÓASõð
  $�C˜‘HÜ˜D # tÕ,ô %Ø,¨T¯Y©Y¨K°w¸s¸eð D+Ø+9Ð*:ð ;&Ø&+ W¨Að/óð ð
 Ð" nÑ&@Ø ��C’ñ1	!r^   c                óv   — |j                  | j                  «      }|�| j                  j                  |«       yy)z!set my state from the passed infoN)rå   rh   Ú__dict__Úupdate)r×   r±  r{  s      r\   Úset_infozIndexCol.set_info	  s0   € à�h‰h�t—y‘yÓ!ˆØˆ?Ø�M‰M× Ñ  Õ%ð r^   c                óZ   — t        | j                  | j                  | j                  «       y)zset the kind for this columnN)rz  rS  r  r�  rÜ   s    r\   rk  zIndexCol.set_attr	  s   € ä�—
‘
˜DŸN™N¨D¯I©IÕ6r^   c                ó²   — | j                   dk(  rH| j                  }|j                  | j                  «      }|�|�t	        ||dd¬«      st        d«      ‚yyyy)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×   rl  Únew_metadataÚcur_metadatas       r\   ri  zIndexCol.validate_metadata	  sp   € à�9‰9˜
Ò"ØŸ=™=ˆLØ"×0Ñ0°·±Ó<ˆLàÐ(Ø Ð,Ü(Ø  ,¸4ÈTõô !ð;óð ð	ð -ð )ð	 #r^   c                ój   — | j                   �'|j                  | j                  | j                   «       yy)zset the meta dataN)r  rj  r  )r×   rl  s     r\   rj  zIndexCol.write_metadata/	  s)   € à�=‰=Ð$Ø×"Ñ" 4§:¡:¨t¯}©}Õ=ð %r^   )NNNNNNNNNNNNN)rh   rf   r  rø  ræ  rç  rê  rè  )r  rë  ræ  rç  ©r*  Úobjectræ  r  rî  )r{  ú
np.ndarrayrc   rf   r“   rf   ræ  z3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]r  r`   rí  )rl  ÚAppendableTabler”   r  ræ  rç  )r”   r  ræ  rç  )rl  r�  ræ  rç  )"rñ   rú  rû  rü  r
  rý  r  rv  rÙ   rþ  r  r  r  rý   r/  r1  r¤  rN  rQ  rS  rW  rZ  r]  r  rb  rd  rm  rg  rh  r~  r‚  rk  ri  rj  rÍ   r^   r\   r	  r	  ÿ  sq  … ñð !€O�TÓ Ø"Ð�tÓ"Ú/€Lð
 ØØØ ØØØØØØØØØð)+àð)+ð ð)+ð  
ó!)+ðV ò!ó ð!ð ò#ó ð#ó"ó	
ó
ó&ð ò?ó ð?ð>.Ø ð>.Ø58ð>.ØBEð>.à	<ó>.ò@ð ñ#ó ð#ð ñ&ó ð&ð ñ;ó ð;ð ñó ðó!ôTóóóó&ó!ó>&ó7óô">r^   r	  c                  óB   — e Zd ZdZedd„«       Z	 	 	 	 	 	 	 	 dd„Zdd„Zy)	ÚGenericIndexColz:an index which is not represented in the data of the tablec                 ó   — y©NFrÍ   rÜ   s    r\   r¤  zGenericIndexCol.is_indexed8	  ó   € àr^   c                ó†   — t        |t        j                  «      sJ t        |«      «       ‚t	        t        |«      «      }||fS )zÛ
        Convert the data from this selection to the appropriate pandas type.

        Parameters
        ----------
        values : np.ndarray
        nan_rep : str
        encoding : str
        errors : str
        )rW   rX   rC  rð   r1   rq   )r×   r{  r�   rc   r“   rŽ   s         r\   rN  zGenericIndexCol.convert<	  s9   € ô ˜&¤"§*¡*Ô-Ð;¬t°F«|Ó;Ð-äœ3˜v›;Ó'ˆØ�eˆ|Ðr^   c                 ó   — y r`   rÍ   rÜ   s    r\   rk  zGenericIndexCol.set_attrN	  re  r^   Nrî  )r{  r�  rc   rf   r“   rf   ræ  ztuple[Index, Index]rí  )rñ   rú  rû  rü  rþ  r¤  rN  rk  rÍ   r^   r\   r’  r’  5	  sA   „ ÙDàòó ððØ ðØ58ðØBEðà	óô$r^   r’  c                  ó<  ‡ — 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dd
„Zd„ Zedd„«       Zed„ «       Zedd„«       Zedd„«       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zdd„Zd d„Zdd„Zˆ xZS )!Ú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ƒ  c                óV   •— t         ‰| �  |||||||||	|
|¬«       || _        || _        y )N)rh   r{  r�  r  r  r  r  rƒ  rz   rÁ   r  )ÚsuperrÙ   r>  r¨  )r×   rh   r{  r�  r  r  r  r  rƒ  rz   rÁ   r  r>  r¨  Ú	__class__s                 €r\   rÙ   zDataCol.__init__c	  sH   ø€ ô  	‰ÑØØØØØØØØØØØð 	ô 	
ð ˆŒ
Øˆ�	r^   c                ó    — | j                   › d�S )NÚ_dtyperg   rÜ   s    r\   Ú
dtype_attrzDataCol.dtype_attrƒ	  s   € à—)‘)�˜FÐ#Ð#r^   c                ó    — | j                   › d�S )NÚ_metarg   rÜ   s    r\   Ú	meta_attrzDataCol.meta_attr‡	  r  r^   c           
     ó  — t        t        t        | j                  | j                  | j
                  | j                  | j                  f«      «      }dj                  t        g d¢|«      D ��cg c]  \  }}|› d|› �‘Œ c}}«      S c c}}w )Nr  )rh   r  r>  r�  Úshaper  )
ro   r   rD   rh   r  r>  r�  r¤  r!  rL  r"  s       r\   rý   zDataCol.__repr__‹	  s€   € ÜÜÜ˜tŸy™y¨$¯*©*°d·j±jÀ$Ç)Á)ÈTÏZÉZÐXóó
ˆð
 �x‰xô #&Ò&QÐSWÓ"X÷á�C˜ð �%�r˜%˜Ò!óó
ð 	
ùór$  c                ó0   ‡ ‡— t        ˆˆ fd„dD «       «      S )r&  c              3  óT   •K  — | ]  }t        ‰|d «      t        ‰|d «      k(  –— Œ! y ­wr`   r(  r)  s     €€r\   rn  z!DataCol.__eq__.<locals>.<genexpr>š	  r+  r,  )rh   r  r>  r  r-  r.  s   ``r\   r/  zDataCol.__eq__˜	  s   ù€ äô 
à6ô
ó 
ð 	
r^   c                ó€   — |€J ‚| j                   �J ‚t        |«      \  }}|| _        || _         t        |«      | _        y r`   )r>  Ú_get_data_and_dtype_namer¨  Ú_dtype_to_kindr�  )r×   r¨  Ú
dtype_names      r\   Úset_datazDataCol.set_dataŸ	  sG   € ØÐÐÐØ�z‰zÐ!Ð!Ð!ä3°DÓ9ÑˆˆjàˆŒ	ØˆŒ
Ü" :Ó.ˆ�	r^   c                ó   — | j                   S )zreturn the data©r¨  rÜ   s    r\   rQ  zDataCol.take_data©	  s   € à�y‰yÐr^   c                ó¤  — |j                   }|j                  }|j                  }|j                  dk(  rd|j                  f}t        |t        «      r5|j                  }| j                  ||j                   j                  ¬«      }|S t        j                  |d«      st        |t        «      r| j                  |«      }|S t        j                  |d«      r| j                  |«      }|S t        |«      r t!        «       j#                  ||d   ¬«      }|S t%        |«      r| j'                  ||«      }|S | j                  ||j                  ¬«      }|S )zW
        Get an appropriately typed and shaped pytables.Col object for values.
        rk   ©r�  r5  Úmr   ©r  r¤  )r>  r  r¤  rt  ÚsizerW   r7   ÚcodesÚget_atom_datarh   r   rF  r(   Úget_atom_datetime64Úget_atom_timedelta64r#   rŠ   Ú
ComplexColr%   Úget_atom_string)rÑ  r{  r>  r  r¤  r³  Úatoms          r\   Ú	_get_atomzDataCol._get_atom­	  s<  € ð
 —‘ˆð —>‘>ˆà—‘ˆØ�;‰;˜!Òð ˜Ÿ™Ð$ˆEä�fœkÔ*Ø—L‘LˆEØ×$Ñ$ U°·±×1AÑ1AÐ$ÓBˆDð ˆô �_‰_˜U CÔ(¬J°u¼oÔ,NØ×*Ñ*¨5Ó1ˆDð ˆô �_‰_˜U CÔ(Ø×+Ñ+¨EÓ2ˆDð ˆô ˜eÔ$Ü“9×'Ñ'°ÀÀqÁÐ'ÓJˆDð ˆô ˜UÔ#Ø×&Ñ& u¨hÓ7ˆDð ˆð ×$Ñ$ U°·±Ð$Ó<ˆDàˆr^   c                ó>   — t        «       j                  ||d   ¬«      S )Nr   r±  ©rŠ   ra  ©rÑ  r¤  r  s      r\   r¸  zDataCol.get_atom_stringÍ	  s   € ä‹y×"Ñ"¨H¸EÀ!¹HÐ"ÓEÐEr^   c                ó¶   — |j                  d«      r|dd }d|› d�}n)|j                  d«      rd}n|j                  «       }|› d�}t        t        «       |«      S )z0return the PyTables column class for this columnÚuinté   NÚUIntrI   ÚperiodÚInt64Col)rŸ  Ú
capitalizer•  rŠ   )rÑ  r�  Úk4Úcol_nameÚkcaps        r\   Úget_atom_coltypezDataCol.get_atom_coltypeÑ	  s_   € ð �?‰?˜6Ô"Ø�a�b�ˆBØ˜b˜T �~‰HØ�_‰_˜XÔ&à!‰Hà—?‘?Ó$ˆDØ˜˜s�|ˆHä”w“y (Ó+Ð+r^   c                ó:   —  | j                  |¬«      |d   ¬«      S )Nr¯  r   ©r¤  ©rÈ  ©rÑ  r¤  r�  s      r\   r´  zDataCol.get_atom_dataà	  s!   € à.ˆs×#Ñ#¨Ð#Ó.°U¸1±XÔ>Ð>r^   c                ó<   — t        «       j                  |d   ¬«      S ©Nr   rÊ  ©rŠ   rÃ  ©rÑ  r¤  s     r\   rµ  zDataCol.get_atom_datetime64ä	  ó   € ä‹y×!Ñ!¨¨a©Ð!Ó1Ð1r^   c                ó<   — t        «       j                  |d   ¬«      S rÎ  rÏ  rÐ  s     r\   r¶  zDataCol.get_atom_timedelta64è	  rÑ  r^   c                ó0   — t        | j                  dd «      S )Nr¤  )r•  r¨  rÜ   s    r\   r¤  zDataCol.shapeì	  s   € ä�t—y‘y '¨4Ó0Ð0r^   c                ó   — | j                   S r\  r­  rÜ   s    r\   r]  zDataCol.cvaluesð	  s   € ð �y‰yÐr^   c                ó  — |r…t        | j                  | j                  d«      }|�#|t        | j                  «      k7  rt        d«      ‚t        | j                  | j                  d«      }|�|| j                  k7  rt        d«      ‚yyy)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•  rS  r  rn   r{  r­   rŸ  r>  )r×   r”   Úexisting_fieldsÚexisting_dtypes       r\   rh  zDataCol.validate_attrõ	  s‚   € áÜ% d§j¡j°$·.±.À$ÓGˆOØÐ*¨Ä$ÀtÇ{Á{ÓBSÒ/SÜ Ð!WÓXÐXä$ T§Z¡Z°·±À$ÓGˆNØÐ)¨nÀÇ
Á
Ò.JÜ ØVóð ð /KÐ)ð 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        |«      }|j!                  d«      rt#        ||d¬«      }�n |dk(  rt        j$                  |d¬«      }�n|dk(  r>	 t        j$                  |D �cg c]  }t'        j(                  |«      ‘Œ c}t*        ¬«      }n¿|dk(  r¦|	}|j1                  «       }|€t3        g t        j4                  ¬«      }n\t7        |«      }|j9                  «       rA||    }||d	k7  xx   |j;                  t<        «      j?                  «       j@                  z  cc<   tC        jD                  |||
d
¬«      }n	 |j;                  |d
¬«      }t        |«      dk(  rtI        ||||¬«      }| jJ                  |fS c c}w # t,        $ rE t        j$                  |D �cg c]  }t'        j.                  |«      ‘Œ nc c}w c}t*        ¬«      }Y Œ}w xY w# tF        $ r |j;                  dd
¬«      }Y ŒŸw xY w)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
        Ú
datetime64T©ÚcoerceÚtimedelta64úm8[ns]©r>  r   r…  éÿÿÿÿF)Ú
categoriesrƒ  Úvalidate©r©  ÚOr`  ©r�   rc   r“   )&rW   rX   rC  rð   r>  rD  r  r  r¨  r©  r�  r]   rÁ   r  rƒ  r  rŸ  rI  Úasarrayr   ÚfromordinalrŽ  r­   ÚfromtimestampÚravelr.   Úfloat64r6   ÚanyÚastyperë  ÚcumsumÚ_valuesr7   Ú
from_codesr´   Ú_unconvert_string_arrayr{  )r×   r{  r�   rc   r“   Ú	convertedrª  r�  rÁ   r  rƒ  r  r>  r‚  rà  r³  Úmasks                    r\   rN  zDataCol.convert
  sš  € ô  ˜&¤"§*¡*Ô-Ð;¬t°F«|Ó;Ð-ð �<‰<×ÑÐ*Ø˜DŸJ™JÑ'ˆFà�x‰xÐ#Ð#Ð#Ø�:‰:Ðô %=¸VÓ$DÑ!ˆI�zÜ! *Ó-‰DàˆIØŸ™ˆJØ—9‘9ˆDä˜)¤R§Z¡ZÔ0Ð0Ð0ô ˜tŸy™yÓ)ˆØ—=‘=ˆØ—,‘,ˆØ�W‰WˆàÐ%Ð%Ð%ä 
Ó+ˆð ×Ñ˜LÔ)ä 	¨2°dÔ;ŠIà�mÒ#ÜŸ
™
 9°HÔ=ŠIØ�fŠ_ðÜŸJ™JØ2;Ö<¨Q”T×%Ñ% aÕ(Ò<ÄFô‘	ð �ZÒà!ˆJØ—O‘OÓ%ˆEð
 Ð!ô
 # 2¬R¯Z©ZÔ8‘
ä˜JÓ'�Ø—8‘8”:Ø!+¨T¨EÑ!2�JØ˜% 2™+Ó&¨$¯+©+´cÓ*:×*AÑ*AÓ*C×*KÑ*KÑKÓ&ä#×.Ñ.Ø *°gÈô‰Ið
>Ø%×,Ñ,¨U¸Ð,Ó?�	ô
 ˜4Ó  HÒ,Ü/Ø 7°XÀfôˆIð �{‰{˜IÐ%Ð%ùòW =øäò ÜŸJ™JØ4=Ö>¨q”T×'Ñ'¨Õ*Ñ>ùÔ>Äfô’	ðûô@ ò >Ø%×,Ñ,¨S°uÐ,Ó=’	ð>úsB   ÅI3 ÅI.Å6I3 È0K É.I3 É3KÊJ,
Ê+KË KËK#Ë"K#c                ó"  — t        | j                  | j                  | j                  «       t        | j                  | j                  | j
                  «       | j                  €J ‚t        | j                  | j                  | j                  «       y)zset the data for this columnN)rz  rS  r  r{  r¢  rÁ   r>  rŸ  rÜ   s    r\   rk  zDataCol.set_attrf
  sZ   € ä�—
‘
˜DŸN™N¨D¯K©KÔ8Ü�—
‘
˜DŸN™N¨D¯I©IÔ6Ø�z‰zÐ%Ð%Ð%Ü�—
‘
˜DŸO™O¨T¯Z©ZÕ8r^   )NNNNNNNNNNNN)rh   rf   r  rø  r>  zDtypeArg | Noneræ  rç  rè  r�  )r¨  rM   ræ  rç  )r{  rM   ræ  rI   )r�  rf   ræ  z	type[Col]©r�  rf   ræ  rI   rí  )r{  r�  rc   rf   r“   rf   )rñ   rú  rû  rü  r
  r  rv  rÙ   rþ  rŸ  r¢  rý   r/  r«  rQ  Úclassmethodrº  r¸  rÈ  r´  rµ  r¶  r¤  r]  rh  rN  rk  Ú__classcell__©rœ  s   @r\   r™  r™  R	  s`  ø„ ñ
ð €OØÐØ˜)Ð$€Lð
 ØØØ ØØØØØØØ!%Øðàðð ðð ðð 
õð@ ò$ó ð$ð ò#ó ð#ó
ó
ó/òð òó ðð> ñFó ðFð ò,ó ð,ð ò?ó ð?ð ñ2ó ð2ð ñ2ó ð2ð ñ1ó ð1ð ñó ðóób&÷H9r^   r™  c                  ó^   — e Zd ZdZdZd	d„Zed„ «       Zed
d„«       Zed„ «       Z	ed„ «       Z
y)ÚDataIndexableColz+represent a data column that can be indexedTc                ój   — t        t        | j                  «      j                  «      st	        d«      ‚y )Nú-cannot have non-object label DataIndexableCol)r%   r.   r{  r>  r­   rÜ   s    r\   rd  zDataIndexableCol.validate_namess
  s*   € Üœu T§[¡[Ó1×7Ñ7Ô8äÐLÓMÐMð 9r^   c                ó6   — t        «       j                  |¬«      S )N)r  r¼  r½  s      r\   r¸  z DataIndexableCol.get_atom_stringx
  s   € ä‹y×"Ñ"¨HÐ"Ó5Ð5r^   c                ó0   —  | j                  |¬«      «       S )Nr¯  rË  rÌ  s      r\   r´  zDataIndexableCol.get_atom_data|
  s   € à.ˆs×#Ñ#¨Ð#Ó.Ó0Ð0r^   c                ó2   — t        «       j                  «       S r`   rÏ  rÐ  s     r\   rµ  z$DataIndexableCol.get_atom_datetime64€
  ó   € ä‹y×!Ñ!Ó#Ð#r^   c                ó2   — t        «       j                  «       S r`   rÏ  rÐ  s     r\   r¶  z%DataIndexableCol.get_atom_timedelta64„
  rþ  r^   Nrí  ró  )rñ   rú  rû  rü  r  rd  rô  r¸  r´  rµ  r¶  rÍ   r^   r\   rø  rø  n
  sa   „ Ù5àÐóNð
 ñ6ó ð6ð ò1ó ð1ð ñ$ó ð$ð ñ$ó ñ$r^   rø  c                  ó   — e Zd ZdZy)ÚGenericDataIndexableColz(represent a generic pytables data columnN)rñ   rú  rû  rü  rÍ   r^   r\   r  r  ‰
  s   „ Ú2r^   r  c                  óÈ  — e Zd ZU dZded<   dZded<   ded<   ded	<   d
ed<   dZded<   	 	 d)	 	 	 	 	 	 	 	 	 d*d„Zed+d„«       Z	ed,d„«       Z
ed„ «       Zd-d„Zd.d„Zd/d„Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed0d„«       Zed+d„«       Zed„ «       Zd.d„Zd.d„Zed„ «       Zed+d „«       Zed!„ «       Zd1d"„Zd2d.d$„Zd+d%„Z	 	 	 	 d3	 	 	 d4d&„Zd.d'„Z	 d5	 	 	 	 	 d6d(„Z y#)7Ú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.
    rf   Úpandas_kindry   Úformat_typeútype[DataFrame | Series]Úobj_typerë  rt  r    rÈ   Fr  rM  c                óò   — t        |t        «      sJ t        |«      «       ‚t        €J ‚t        |t        j                  «      sJ t        |«      «       ‚|| _        || _        t        |«      | _        || _	        y r`   )
rW   r    rð   r„   rK   rÈ   rÅ   rd   rc   r“   )r×   rÈ   rÅ   rc   r“   s        r\   rÙ   zFixed.__init__¡
  sg   € ô ˜&¤(Ô+Ð9¬T°&«\Ó9Ð+ÜÐ%Ð%Ð%Ü˜%¤§¡Ô1Ð>´4¸³;Ó>Ð1ØˆŒØˆŒ
Ü(¨Ó2ˆŒØˆ�r^   c                óv   — | j                   d   dk  xr& | j                   d   dk  xr | j                   d   dk  S )Nr   rk   é
   é   )ÚversionrÜ   s    r\   Úis_old_versionzFixed.is_old_version°
  s:   € à�|‰|˜A‰ !Ñ#ÒU¨¯©°Q©¸2Ñ(=ÒUÀ$Ç,Á,ÈqÁ/ÐTUÑBUÐUr^   c                óè   — t        t        | j                  j                  dd«      «      }	 t	        d„ |j                  d«      D «       «      }t        |«      dk(  r|dz   }|S # t        $ r d}Y |S w xY w)zcompute and set our versionÚpandas_versionNc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr`   )rë  )rl  rS  s     r\   rn  z Fixed.version.<locals>.<genexpr>¹
  s   è ø€ Ò? qœC ŸFÑ?ùs   ‚ú.r  )r   )r   r   r   )r]   r•  rÅ   r–  ro   rß  rq   r†   )r×   r  s     r\   r  zFixed.version´
  sx   € ô "¤'¨$¯*©*×*=Ñ*=Ð?OÐQUÓ"VÓWˆð	 ÜÑ?¨G¯M©M¸#Ó,>Ô?Ó?ˆGÜ�7‹|˜qÒ Ø! D™.�ð ˆøô ò 	 Ø‰GØˆð	 ús   ¬4A" Á"A1Á0A1c                óV   — t        t        | j                  j                  dd «      «      S )Nr‘  )r]   r•  rÅ   r–  rÜ   s    r\   r‘  zFixed.pandas_typeÀ
  s    € äœw t§z¡z×':Ñ':¸MÈ4ÓPÓQÐQr^   c                ó  — | j                  «        | j                  }|�Wt        |t        t        f«      r.dj                  |D �cg c]  }t        |«      ‘Œ c}«      }d|› d�}| j                  d›d|› d�S | j                  S c c}w )ú(return a pretty representation of myselfr  ú[rA  ú12.12z	 (shape->ú))r2  r¤  rW   rn   ro   r!  rD   r‘  )r×   r[   rS  Újshapes       r\   rý   zFixed.__repr__Ä
  s   € à�‰ÔØ�J‰JˆØˆ=Ü˜!œd¤E˜]Ô+ØŸ™¸AÖ">°q¤<°¥?Ò">Ó?�Ø˜�x˜q�M�Ø×&Ñ& uÐ-¨Y°q°c¸Ð;Ð;Ø×ÑÐùò #?s   ÁBc                óˆ   — t        | j                  «      | j                  _        t        t        «      | j                  _        y)zset my pandas type & versionN)rf   r  rS  r‘  Ú_versionr  rÜ   s    r\   rØ  zFixed.set_object_infoÏ
  s)   € ä!$ T×%5Ñ%5Ó!6ˆ�
‰
ÔÜ$'¬£Mˆ�
‰
Õ!r^   c                ó0   — t        j                   | «      }|S r`   râ  )r×   Únew_selfs     r\   r©  z
Fixed.copyÔ
  s   € Ü—9‘9˜T“?ˆØˆr^   c                ó   — | j                   S r`   )r0  rÜ   s    r\   r¤  zFixed.shapeØ
  rã   r^   c                ó.   — | j                   j                  S r`   ©rÅ   r¸   rÜ   s    r\   rN  zFixed.pathnameÜ
  rX  r^   c                ó.   — | j                   j                  S r`   )rÈ   rÊ   rÜ   s    r\   rÊ   zFixed._handleà
  s   € à�{‰{×"Ñ"Ð"r^   c                ó.   — | j                   j                  S r`   )rÈ   rÕ   rÜ   s    r\   rÕ   zFixed._filtersä
  s   € à�{‰{×#Ñ#Ð#r^   c                ó.   — | j                   j                  S r`   )rÈ   rÒ   rÜ   s    r\   rÒ   zFixed._complevelè
  s   € à�{‰{×%Ñ%Ð%r^   c                ó.   — | j                   j                  S r`   )rÈ   rÔ   rÜ   s    r\   rÔ   zFixed._fletcher32ì
  s   € à�{‰{×&Ñ&Ð&r^   c                ó.   — | j                   j                  S r`   )rÅ   r–  rÜ   s    r\   rS  zFixed.attrsð
  rT  r^   c                 ó   — y©zset our object attributesNrÍ   rÜ   s    r\   Ú	set_attrszFixed.set_attrsô
  ó   � r^   c                 ó   — y)zget our object attributesNrÍ   rÜ   s    r\   Ú	get_attrszFixed.get_attrs÷
  r(  r^   c                ó   — | j                   S )zreturn my storable©rÅ   rÜ   s    r\   ÚstorablezFixed.storableú
  s   € ð �z‰zÐr^   c                 ó   — yr”  rÍ   rÜ   s    r\   r×  zFixed.is_existsÿ
  r•  r^   c                ó0   — t        | j                  dd «      S )Nr0  )r•  r-  rÜ   s    r\   r0  zFixed.nrows  s   € ä�t—}‘} g¨tÓ4Ð4r^   c                ó
   — |€yy)z%validate against an existing storableNTrÍ   r.  s     r\   rá  zFixed.validate  s   € àˆ=ØØr^   Nc                 ó   — y)ú+are we trying to operate on an old version?NrÍ   )r×   rr   s     r\   Úvalidate_versionzFixed.validate_version  r(  r^   c                óB   — | j                   }|€y| j                  «        y)zr
        infer the axes of my storer
        return a boolean indicating if we have a valid storer or not
        FT)r-  r*  )r×   r[   s     r\   r2  zFixed.infer_axes  s"   € ð
 �M‰MˆØˆ9ØØ�‰ÔØr^   c                ó   — t        d«      ‚)Nz>cannot read on an abstract storer: subclasses should implement©r°   ©r×   rr   r©   r§   r¨   s        r\   r*  z
Fixed.read  s   € ô "ØLó
ð 	
r^   c                ó   — t        d«      ‚)Nz?cannot write on an abstract storer: subclasses should implementr6  ©r×   rÕ  r¼   s      r\   rÙ  zFixed.write&  s   € Ü!ØMó
ð 	
r^   c                ó–   — t        j                  |||«      r(| j                  j                  | j                  d¬«       yt        d«      ‚)zs
        support fully deleting the node in its entirety (only) - where
        specification must be None
        Tr\  Nz#cannot delete on an abstract storer)ra  rb  rÊ   rÜ  rÅ   r´   )r×   rr   r§   r¨   s       r\   rc  zFixed.delete+  s>   € ô �<‰<˜˜u dÔ+Ø�L‰L×$Ñ$ T§Z¡Z¸4Ð$Ô@ØäÐ=Ó>Ð>r^   )rU   rƒ   )
rÈ   r    rÅ   rK   rc   rø  r“   rf   ræ  rç  rî  )ræ  ztuple[int, int, int]rè  rí  )ræ  r  rê  )ræ  zLiteral[True] | Noner`   ©NNNN©r§   rå  r¨   rå  rð  )r§   rå  r¨   rå  ræ  rç  )!rñ   rú  rû  rü  rý  r  rM  rÙ   rþ  r  r  r‘  rý   rØ  r©  r¤  rN  rÊ   rÕ   rÒ   rÔ   rS  r'  r*  r-  r×  r0  rá  r3  r2  r*  rÙ  rc  rÍ   r^   r\   r  r  �
  sñ  … ñ
ð ÓØ€K�ÓØ&Ó&Ø
ƒIØÓØ€HˆdÓð  'Øðàðð ðð ð	ð
 ðð 
óð òVó ðVð ò	ó ð	ð ñRó ðRó	 ó2ó
ð ñó ðð ñ&ó ð&ð ñ#ó ð#ð ñ$ó ð$ð ò&ó ð&ð ò'ó ð'ð ñ#ó ð#ó(ó(ð ñó ðð òó ðð ñ5ó ð5óô:ó	ð ØØ Øð	
ð ð		
ð
 ó	
ó
ð HLð?Ø!+ð?Ø:Dð?à	ô?r^   r  c                  óV  — e Zd ZU dZedediZej                  «       D � ��ci c]  \  }}||“Œ
 c}}} 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	 	 	 	 	 	 	 dd„Zdd„Zdd„Z	 d	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 d d„Zd!d„Z	 d"	 	 	 	 	 	 	 d#d„Zyc c}}} w )$ÚGenericFixedza generified fixed versionÚdatetimerÂ  rì  Ú
attributesc                ó:   — | j                   j                  |d«      S )NÚ )Ú_index_type_maprå   )r×   rÑ  s     r\   Ú_class_to_aliaszGenericFixed._class_to_aliasA  s   € Ø×#Ñ#×'Ñ'¨¨RÓ0Ð0r^   c                óf   — t        |t        «      r|S | j                  j                  |t        «      S r`   )rW   rð   Ú_reverse_index_maprå   r.   )r×   Úaliass     r\   Ú_alias_to_classzGenericFixed._alias_to_classD  s*   € Ü�eœTÔ"àˆLØ×&Ñ&×*Ñ*¨5´%Ó8Ð8r^   c           	     óR  — | j                  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 r=t        |d   t        «      r|d   j                  d«      |d<   n|d   |d<   |t        u sJ ‚||fS )	NÚindex_classrB  c                óÐ   — t        j                  | j                  | j                  |¬«      }t	        j                  |d ¬«      }|� |j                  d«      j                  |«      }|S )N)r>  r  rg   ÚUTC)r8   Ú_simple_newr{  r>  r-   Útz_localizeÚ
tz_convert)r{  r  r  ÚdtaÚresults        r\   r{   z*GenericFixed._get_index_factory.<locals>.fS  sZ   € ä#×/Ñ/Ø—M‘M¨¯©¸Dô�ô '×2Ñ2°3¸TÔB�Ø�>Ø#×/Ñ/°Ó6×AÑAÀ"ÓE�FØ�r^   c                ót   — t        |«      }t        j                  | |¬«      }t        j                  |d ¬«      S )NrÞ  rg   )r*   r9   rM  r0   )r{  r  r  r>  Úparrs        r\   r{   z*GenericFixed._get_index_factory.<locals>.f`  s1   € Ü# DÓ)�Ü"×.Ñ.¨v¸UÔC�Ü"×.Ñ.¨t¸$Ô?Ð?r^   r  r  zutf-8rò  )
rH  r]   r•  r-   r0   r.   r4   rW   ÚbytesrZ   )r×   rS  rJ  r{   rK  r¼   s         r\   Ú_get_index_factoryzGenericFixed._get_index_factoryJ  sÍ   € Ø×*Ñ*ÜœG E¨=¸"Ó=Ó>ó
ˆð œ-Ò'óð ‰GØœKÒ'ó@ð
 ‰Gà!ˆGàˆØ�U‰?Ø" 6™]ˆF�6‰NØœeÑ#ä(�à�5‰=Ü˜% ™+¤uÔ-à$ T™{×1Ñ1°'Ó:��t’ð  % T™{��t‘Ø¤-Ñ/Ð/Ð/à˜ˆÐr^   c                ó8   — |�t        d«      ‚|�t        d«      ‚y)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©   rr   s      r\   Úvalidate_readzGenericFixed.validate_read{  s=   € ð ÐÜðTóð ð ÐÜðYóð ð r^   c                 ó   — y)NTrÍ   rÜ   s    r\   r×  zGenericFixed.is_existsŠ  s   € àr^   c                óp   — | j                   | j                  _         | j                  | j                  _        yr&  )rc   rS  r“   rÜ   s    r\   r'  zGenericFixed.set_attrsŽ  s"   € à"Ÿm™mˆ�
‰
ÔØ ŸK™Kˆ�
‰
Õr^   c                ó  — t        t        | j                  dd«      «      | _        t	        t        | j                  dd«      «      | _        | j                  D ]-  }t        | |t	        t        | j                  |d«      «      «       Œ/ y)úretrieve our attributesrc   Nr“   rƒ   )rd   r•  rS  rc   r]   r“   r@  rz  )r×   r  s     r\   r*  zGenericFixed.get_attrs“  sg   € ä(¬°·±¸ZÈÓ)NÓOˆŒÜ%¤g¨d¯j©j¸(ÀHÓ&MÓNˆŒØ—‘ò 	LˆAÜ�D˜!œ_¬W°T·Z±ZÀÀDÓ-IÓJÕKñ	Lr^   c                ó$   — | j                  «        y r`   )r'  r9  s      r\   rÙ  zGenericFixed.writeš  s   € Ø�‰Õr^   Nc                ó  — ddl }t        | j                  |«      }|j                  }t        |dd«      }t	        ||j
                  «      r%|d   || }t        |dd«      }	|	�›t        ||	¬«      }n�t        t        |dd«      «      }	t        |dd«      }
|
�t        j                  |
|	¬«      }n||| }|	r-|	j                  d«      rt        |d	d«      }t        ||d
¬«      }n|	dk(  rt        j                  |d¬«      }|r|j                  S |S )z2read an array for the specified node (off of groupr   NÚ
transposedFÚ
value_typerÞ  r¤  rÙ  r  TrÚ  rÜ  rÝ  )r…   r•  rÅ   r–  rW   ÚVLArrayÚpd_arrayr]   rX   rÔ  rŸ  rI  rå  ÚT)r×   r—   r§   r¨   r…   rõ   rS  r^  Úretr>  r¤  r  s               r\   Ú
read_arrayzGenericFixed.read_array�  s  € ãä�t—z‘z 3Ó'ˆØ—‘ˆä˜U L°%Ó8ˆ
ä�d˜FŸN™NÔ+Ø�q‘'˜% Ð%ˆCÜ˜E <°Ó6ˆEØÐ Ü˜s¨%Ô0‘ä#¤G¨E°<ÀÓ$FÓGˆEÜ˜E 7¨DÓ1ˆEàÐ ä—h‘h˜u¨EÔ2‘à˜5 Ð&�á˜×)Ñ)¨,Ô7ä˜U D¨$Ó/�Ü˜c 2¨dÔ3‘à˜-Ò'Ü—j‘j ¨HÔ5�áØ—5‘5ˆLàˆJr^   c                óö   — t        t        | j                  |› d�«      «      }|dk(  r| j                  |||¬«      S |dk(  r,t        | j                  |«      }| j                  |||¬«      }|S t        d|› �«      ‚)NÚ_varietyÚmulti©r§   r¨   Úregularzunrecognized index variety: )r]   r•  rS  Úread_multi_indexrÅ   Úread_index_noder´   )r×   r—   r§   r¨   Úvarietyrõ   rŽ   s          r\   Ú
read_indexzGenericFixed.read_indexÂ  s‡   € ô "¤'¨$¯*©*¸¸¸XÐ6FÓ"GÓHˆà�gÒØ×(Ñ(¨°EÀÐ(ÓEÐEØ˜	Ò!Ü˜4Ÿ:™: sÓ+ˆDØ×(Ñ(¨°UÀÐ(ÓFˆEØˆLäÐ:¸7¸)ÐDÓEÐEr^   c                ó4  — t        |t        «      r-t        | j                  |› d�d«       | j	                  ||«       y t        | j                  |› d�d«       t        d|| j                  | j                  «      }| j                  ||j                  «       t        | j                  |«      }|j                  |j                  _        |j                  |j                  _        t        |t        t         f«      r)| j#                  t%        |«      «      |j                  _        t        |t        t         t(        f«      r|j*                  |j                  _        t        |t        «      r2|j,                  �%t/        |j,                  «      |j                  _        y y y )Nrf  rg  ri  rŽ   )rW   r/   rz  rS  Úwrite_multi_indexÚ_convert_indexrc   r“   Úwrite_arrayr{  r•  rÅ   r�  r–  rh   r-   r0   rD  rð   rJ  r4   r  r  Ú_get_tz)r×   r—   rŽ   rð  rõ   s        r\   Úwrite_indexzGenericFixed.write_indexÐ  s$  € Ü�eœZÔ(Ü�D—J‘J 3 % xÐ 0°'Ô:Ø×"Ñ" 3¨Õ.ä�D—J‘J 3 % xÐ 0°)Ô<Ü& w°°t·}±}ÀdÇkÁkÓRˆIà×Ñ˜S )×"2Ñ"2Ô3ä˜4Ÿ:™: sÓ+ˆDØ!*§¡ˆD�M‰MÔØ!&§¡ˆD�M‰MÔä˜%¤-´Ð!=Ô>Ø,0×,@Ñ,@ÄÀeÃÓ,M�—‘Ô)ä˜%¤-´¼nÐ!MÔNØ%*§Z¡Z�—‘Ô"ä˜%¤Ô/°E·H±HÐ4HÜ#*¨5¯8©8Ó#4�—‘Õ ð 5IÐ/r^   c                óŽ  — t        | j                  |› d�|j                  «       t        t	        |j
                  |j                  |j                  «      «      D ]ê  \  }\  }}}t        |j                  t        «      rt        d«      ‚|› d|› �}t        ||| j                  | j                  «      }| j                  ||j                   «       t#        | j$                  |«      }	|j&                  |	j(                  _        ||	j(                  _        t        |	j(                  |› d|› �|«       |› d|› �}
| j                  |
|«       Œì y )NÚ_nlevelsz=Saving a MultiIndex with an extension dtype is not supported.Ú_levelÚ_nameÚ_label)rz  rS  rÇ  Ú	enumeraterL  Úlevelsr³  ÚnamesrW   r>  r)   r°   rp  rc   r“   rq  r{  r•  rÅ   r�  r–  rh   )r×   r—   rŽ   ÚiÚlevÚlevel_codesrh   Ú	level_keyÚ
conv_levelrõ   Ú	label_keys              r\   ro  zGenericFixed.write_multi_indexç  s   € Ü�—
‘
˜s˜e 8Ð,¨e¯m©mÔ<ä+4Ü�—‘˜eŸk™k¨5¯;©;Ó7ó,
ò 	5Ñ'ˆAÑ'��[ $ô ˜#Ÿ)™)¤^Ô4Ü)ØSóð ð ˜%˜v a SÐ)ˆIÜ'¨	°3¸¿¹ÀtÇ{Á{ÓSˆJØ×Ñ˜Y¨
×(9Ñ(9Ô:Ü˜4Ÿ:™: yÓ1ˆDØ!+§¡ˆD�M‰MÔØ!%ˆD�M‰MÔô �D—M‘M c U¨%°¨vÐ#6¸Ô=ð ˜%˜v a SÐ)ˆIØ×Ñ˜Y¨Õ4ñ)	5r^   c                ó�  — t        | j                  |› d�«      }g }g }g }t        |«      D ]‹  }|› d|› �}	t        | j                  |	«      }
| j	                  |
||¬«      }|j                  |«       |j                  |j                  «       |› d|› �}| j                  |||¬«      }|j                  |«       Œ� t        |||d¬«      S )Nru  rv  rh  rx  T)rz  r³  r{  rE  )	r•  rS  rs  rÅ   rk  r”   rh   rd  r/   )r×   r—   r§   r¨   rÇ  rz  r³  r{  r|  r  rõ   r}  r�  r~  s                 r\   rj  zGenericFixed.read_multi_index   sØ   € ô ˜$Ÿ*™*¨¨¨XÐ&6Ó7ˆàˆØˆØ "ˆÜ�w“ò 		&ˆAØ˜%˜v a SÐ)ˆIÜ˜4Ÿ:™: yÓ1ˆDØ×&Ñ& t°5¸tÐ&ÓDˆCØ�M‰M˜#ÔØ�L‰L˜Ÿ™Ô"à˜%˜v a SÐ)ˆIØŸ/™/¨)¸5Àt˜/ÓLˆKØ�L‰L˜Õ%ð		&ô Ø ¨eÀdô
ð 	
r^   c           	     óð  — ||| }d|j                   v rkt        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                   }| j                  |«      \  }}	|dv r1 |t        ||| j                  | j                  ¬«      fdt        i|	¤Ž}
n+	  |t        ||| j                  | j                  ¬«      fi |	¤Ž}
||
_	        |
S # t        $ r‹}| j                  dk(  rqt!        d	«      rft#        |«      j%                  d
«      rLt&        rF |t        ||| j                  | j                  ¬«      fdt)        dt        j*                  ¬«      i|	¤Ž}
n‚ Y d }~Œ˜d }~ww xY w)Nr¤  r   rÞ  rh   )r   rŽ  r¾  r>  r;  r<  r=  r?  r@  )r–  rX   Úprodr¤  rÔ  r_  r]   r�  ri   rh   rU  Ú_unconvert_indexrc   r“   rŽ  rG  r   rf   rà  r   r3   rH  )r×   rõ   r§   r¨   r¨  r�  rh   rS  rK  r¼   rŽ   rd  s               r\   rk  zGenericFixed.read_index_node  sÅ  € ð �E˜$Ðˆð �d—m‘mÑ#¬¯©°·±×0CÑ0CÓ(DÈÒ(IÜ—8‘8˜DŸM™M×/Ñ/°t·}±}×7OÑ7OÔPˆDÜ˜tŸ}™}×1Ñ1Ó2ˆØˆà�T—]‘]Ñ"Ü˜tŸ}™}×1Ñ1Ó2ˆDÜ" 4Ó(ˆDà—‘ˆØ×1Ñ1°%Ó8‰ˆ�àÐ%Ñ%ÙÜ Ø˜$¨¯©¸t¿{¹{ôñô ð	ð
 ñ‰EðÙÜ$Ø˜d¨T¯]©]À4Ç;Á;ôñð ñ	�ð. ˆŒ
àˆøô' &ò à—K‘K ?Ò2Ü"Ð#8Ô9Ü˜C›×)Ñ)Ð*BÔCÝ#á#Ü(Ø  $°·±ÀtÇ{Á{ôñô *°(ÄRÇVÁVÔLð	ð
 !ñ‘Eð ô ûðús   Ä.*E! Å!	G5Å*BG0Ç0G5c                ó@  — t        j                  d|j                  z  «      }| j                  j	                  | j
                  ||«       t        | j
                  |«      }t        |j                  «      |j                  _
        |j                  |j                  _        y)zwrite a 0-len array)rk   N)rX   rÔ  rt  rÊ   Úcreate_arrayrÅ   r•  rf   r>  r–  r_  r¤  )r×   r—   r˜   Úarrrõ   s        r\   Úwrite_array_emptyzGenericFixed.write_array_emptyN  sj   € ô �h‰h�t˜eŸj™jÑ(Ó)ˆØ�‰×!Ñ! $§*¡*¨c°3Ô7Ü�t—z‘z 3Ó'ˆÜ#& u§{¡{Ó#3ˆ�‰Ô Ø#Ÿk™kˆ�‰Õr^   c                óº	  — t        |d¬«      }|| j                  v r&| j                  j                  | j                  |«       |j                  dk(  }d}t        |j                  t        «      rt        d«      ‚|st        |d«      r|j                  }d}d }| j                  �Et        t        «      5  t        «       j                  j!                  |j                  «      }d d d «       |�[|sE| j                  j#                  | j                  |||j$                  | j                  ¬«      }||d d  �nz| j'                  ||«       �nf|j                  j(                  t*        j,                  k(  r t/        j0                  |d¬«      }	|rn6|	d	k(  rn0t2        |	||fz  }
t5        j6                  |
t8        t;        «       ¬
«       | j                  j=                  | j                  |t        «       j?                  «       «      }|jA                  |«       �nŸt/        jB                  |j                  d«      rp| j                  jE                  | j                  ||jG                  d«      «       tI        |j                  «      tK        | j                  |«      jL                  _'        �nt        |j                  tP        «      r–| j                  jE                  | j                  ||jR                  «       tK        | j                  |«      }tU        |jV                  «      |jL                  _+        d|j                  jX                  › d�|jL                  _'        �n_t/        jB                  |j                  d«      r\| j                  jE                  | j                  ||jG                  d«      «       dtK        | j                  |«      jL                  _'        nãt        |tZ        «      r—| j                  j=                  | j                  |t        «       j?                  «       «      }|jA                  |j]                  «       «       tK        | j                  |«      }tI        |j                  «      |jL                  _'        n<|r| j'                  ||«       n'| j                  jE                  | j                  ||«       |tK        | j                  |«      jL                  _/        y # 1 sw Y   �ŒóxY w)NT)Úextract_numpyr   Fz]Cannot store a category dtype in a HDF5 dataset that uses format="fixed". Use format="table".rb  )rÎ   ©Úskipnar`  rt  r5  r6  údatetime64[rA  r°  rÜ  )0r>   rÅ   rÊ   rÜ  r²  rW   r>  r'   r°   r3  rb  rÕ   r   r­   rŠ   ÚAtomÚ
from_dtypeÚcreate_carrayr¤  r‰  rð   rX   Úobject_r   Úinfer_dtyperx   rx  ry  r   r    Úcreate_vlarrayÚ
ObjectAtomr”   rF  r‡  Úviewrf   r•  r–  r_  r(   Úasi8rr  r  Úunitr:   Úto_numpyr^  )r×   r—   rÕ  r  r˜   Úempty_arrayr^  r¹  ÚcaÚinferred_typer}  Úvlarrrõ   s                r\   rq  zGenericFixed.write_arrayW  s‡  € ô ˜c°Ô6ˆà�$—*‘*ÑØ�L‰L×$Ñ$ T§Z¡Z°Ô5ð —j‘j A‘oˆØˆ
ä�e—k‘kÔ#3Ô4Ü%ð/óð ñ Ü�u˜cÔ"àŸ™�Ø!�
àˆØ�=‰=Ð$Üœ*Ó%ñ >ä“y—~‘~×0Ñ0°·±Ó=�÷>ð Ðñ
 Ø—\‘\×/Ñ/Ø—J‘J  T¨5¯;©;ÀÇÁð 0ó �ð �‘1’ð ×&Ñ& s¨EÖ2à�[‰[×Ñ¤§¡Ò+ô  ŸO™O¨E¸%Ô@ˆMÙØØ (Ò*Øä$¨°s¸EÐ'BÑB�Ü—‘˜bÔ"4ÔAQÓASÕTà—L‘L×/Ñ/°·
±
¸CÄÃ×AUÑAUÓAWÓXˆEØ�L‰L˜Öä�_‰_˜UŸ[™[¨#Ô.Ø�L‰L×%Ñ% d§j¡j°#°u·z±zÀ$Ó7GÔHÜ;>¸u¿{¹{Ó;KŒG�D—J‘J Ó$×-Ñ-Ö8Ü˜Ÿ™¤_Ô5ð �L‰L×%Ñ%Ø—
‘
˜C §¡ôô ˜4Ÿ:™: sÓ+ˆDô  ' u§x¡xÓ0ˆD�M‰MÔØ)4°U·[±[×5EÑ5EÐ4FÀaÐ'HˆD�M‰MÖ$Ü�_‰_˜UŸ[™[¨#Ô.Ø�L‰L×%Ñ% d§j¡j°#°u·z±zÀ$Ó7GÔHØ;HŒG�D—J‘J Ó$×-Ñ-Õ8Ü˜œÔ/Ø—L‘L×/Ñ/°·
±
¸CÄÃ×AUÑAUÓAWÓXˆEØ�L‰L˜Ÿ™Ó)Ô*Ü˜4Ÿ:™: sÓ+ˆDÜ'*¨5¯;©;Ó'7ˆD�M‰MÕ$ÙØ×"Ñ" 3¨Õ.à�L‰L×%Ñ% d§j¡j°#°uÔ=à7AŒ�—
‘
˜CÓ ×)Ñ)Õ4÷A>ñ >ús   Â1.SÓSrè  rí  rî  rò  rñ  )r—   rf   r§   rå  r¨   rå  ræ  r.   )r—   rf   rŽ   r.   ræ  rç  )r—   rf   rŽ   r/   ræ  rç  )r—   rf   r§   rå  r¨   rå  ræ  r/   )rõ   rK   r§   rå  r¨   rå  ræ  r.   )r—   rf   r˜   rM   ræ  rç  r`   )r—   rf   rÕ  rL   r  zIndex | Noneræ  rç  )rñ   rú  rû  rü  r-   r0   rC  r  rF  r@  rý  rD  rH  rU  rW  rþ  r×  r'  r*  rÙ  rd  rm  rs  ro  rj  rk  r‰  rq  )rl  rR  r‚  s   000r\   r>  r>  9  sW  … Ù$à$ j°+¸xÐH€OØ+:×+@Ñ+@Ó+B×CÐC¡4 1 a˜!˜Q™$ÔCÐØ€J�	Óó1ò9ò/óbð òó ðó(ó
Lóô#ðL FJðFØðFØ)ðFØ8BðFà	óFó5ó.5ð4 FJð
Øð
Ø)ð
Ø8Bð
à	ó
ð0 HLð5Øð5Ø!+ð5Ø:Dð5à	ó5ón*ð BFð]BØð]BØ)ð]BØ2>ð]Bà	ô]Bùôu Ds   ¢B$r>  c                  ób   ‡ — 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º  rh   rE   c                ón   — 	 t        | j                  j                  «      fS # t        t        f$ r Y y w xY wr`   )rq   rÅ   r{  r´   r†   rÜ   s    r\   r¤  zSeriesFixed.shape½  s6   € ð	Ü˜Ÿ
™
×)Ñ)Ó*Ð,Ð,øÜœ>Ð*ò 	Ùð	ús   ‚" ¢4³4c                óº  — | j                  ||«       | j                  d||¬«      }| j                  d||¬«      }	 t        ||| j                  d¬«      }|S # t
        $ rz}| j                  dk(  r_t        d«      rTt        |«      j                  d«      r:t        r4t        ||| j                  dt        d	t        j                  ¬
«      ¬«      }n‚ Y d }~|S d }~ww xY w)NrŽ   rh  r{  F)rŽ   rh   r©  r;  r<  r=  r?  r@  )rŽ   rh   r©  r>  )rW  rm  rd  r2   rh   rG  r“   r   rf   rà  r   r3   rX   rH  )	r×   rr   r©   r§   r¨   rŽ   r{  rQ  rd  s	            r\   r*  zSeriesFixed.readÄ  sÒ   € ð 	×Ñ˜7 EÔ*Ø—‘ ¨u¸4�Ó@ˆØ—‘ °¸T�ÓBˆð	Ü˜F¨%°d·i±iÀeÔLˆFð" ˆøô! "ò 	à—‘˜Ò.ÜÐ4Ô5Ü˜“H×%Ñ%Ð&>Ô?ÝäØØØŸ™ØÜ%¨hÄÇÁÔHô‘ð ó ð ˆûð!	ús   ¼A Á	CÁ A/CÃCc                ó¸   •— t        ‰| �  |fi |¤Ž | j                  d|j                  «       | j	                  d|«       |j
                  | j                  _        y )NrŽ   r{  )r›  rÙ  rs  rŽ   rq  rh   rS  )r×   rÕ  r¼   rœ  s      €r\   rÙ  zSeriesFixed.writeâ  sG   ø€ Ü‰‰�cÑ$˜VÒ$Ø×Ñ˜ #§)¡)Ô,Ø×Ñ˜ 3Ô'ØŸ(™(ˆ�
‰
�r^   r;  ©r§   rå  r¨   rå  ræ  r2   rí  )rñ   rú  rû  r  r@  rý  rþ  r¤  r*  rÙ  rõ  rö  s   @r\   rÅ  rÅ  ·  sa   ø… Ø€KØ�€Jà
ƒNàñó ðð ØØ Øðð ð	ð
 ðð 
ó÷<#ñ #r^   rÅ  c                  ób   ‡ — 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 )ÚBlockManagerFixedrt  Únblocksrë  c                ón  — 	 | j                   }d}t        | j                  «      D ]4  }t        | j                  d|› d�«      }t        |dd «      }|€Œ-||d   z  }Œ6 | j                  j
                  }t        |dd «      }|�t        |d|dz
   «      }ng }|j                  |«       |S # t        $ r Y y w xY w)Nr   ÚblockÚ_itemsr¤  rk   )	rt  rs  r¥  r•  rÅ   Úblock0_valuesrn   r”   r†   )r×   rt  r  r|  rõ   r¤  s         r\   r¤  zBlockManagerFixed.shapeî  sÌ   € ð	Ø—9‘9ˆDð ˆEÜ˜4Ÿ<™<Ó(ò &�Ü˜tŸz™z¨U°1°#°VÐ+<Ó=�Ü  g¨tÓ4�ØÑ$Ø˜U 1™XÑ%‘Eð	&ð —:‘:×+Ñ+ˆDÜ˜D '¨4Ó0ˆEØÐ Ü˜U 1¨¨q©Ð2Ó3‘à�à�L‰L˜ÔàˆLøÜò 	Ùð	ús   ‚AB( ÁAB( Â(	B4Â3B4c                ó–  — | j                  ||«       | j                  «       j                  d«      }g }t        | j                  «      D ]8  }||k(  r||fnd\  }}	| j                  d|› �||	¬«      }
|j                  |
«       Œ: |d   }g }t        | j                  «      D ]Ê  }| j                  d|› d�«      }| j                  d|› d�	¬«      }||j                  |«         }t        |j                  ||d   d	¬
«      }t        «       rPt        |t        j                  «      r6t!        |d¬«      r)|j#                  t%        t        j&                  ¬«      «      }|j                  |«       ŒÌ t)        |«      dkD  r=t+        |dd¬«      }t-        «       r|j/                  «       }|j1                  |d	¬«      }|S t        |d   |d   ¬«      S )Nr   rò  rD  rh  r§  r¨  rí  rk   F©r©   rŽ   r©  TrŒ  )rB  )rD  r©  )r©   r©  ©r©   rŽ   )rW  r  Ú_get_block_manager_axisrs  rt  rm  r”   r¥  rd  ry  r,   rb  r   rW   rX   rC  r   rë  r3   rH  rq   r5   r   r©  r~  )r×   rr   r©   r§   r¨   Úselect_axisrf  r|  r+  r,  Úaxr  ÚdfsÚ	blk_itemsr{  ÚdfÚouts                    r\   r*  zBlockManagerFixed.read	  s¥  € ð 	×Ñ˜7 EÔ*Ø—m‘m“o×=Ñ=¸aÓ@ˆàˆÜ�t—y‘yÓ!ò 	ˆAØ-.°+Ò-=˜U D™MÀ<‰MˆF�EØ—‘ 4¨ s °6À�ÓFˆBØ�K‰K˜�Oð	ð
 �Q‘ˆØˆä�t—|‘|Ó$ò 	ˆAØŸ™¨%°¨s°&Ð(9Ó:ˆIØ—_‘_ u¨Q¨C¨wÐ%7¸vÈE�_ÓRˆFà˜E×-Ñ-¨iÓ8Ñ9ˆGÜ˜6Ÿ8™8¨W¸DÀ¹GÈ%ÔPˆBä"Ô$Ü˜v¤r§z¡zÔ2Ü# F°4Õ8à—Y‘Yœ{´B·F±FÔ;Ó<�Ø�J‰J�r�Nð	ô ˆs‹8�aŠ<Ü˜ 1¨4Ô0ˆCÜ"Ô$ð —h‘h“j�Ø—+‘+ e°%�+Ó8ˆCØˆJä  a¡°°Q±Ô8Ð8r^   c                óâ  •— t        ‰| �  |fi |¤Ž t        |j                  t        «      r|j                  d«      }|j                  }|j                  «       s|j                  «       }|j                  | j                  _        t        |j                  «      D ]6  \  }}|dk(  r|j                  st        d«      ‚| j                  d|› �|«       Œ8 t        |j                   «      | j                  _        t        |j                   «      D ]b  \  }}|j$                  j'                  |j(                  «      }| j+                  d|› d�|j,                  |¬«       | j                  d|› d�|«       Œd y )Nr§  r   z/Columns index has to be unique for fixed formatrD  rí  )r  r¨  )r›  rÙ  rW   Ú_mgrr@   Ú_as_managerÚis_consolidatedÚconsolidatert  rS  ry  rf  Ú	is_uniquer­   rs  rq   Úblocksr¥  r  rz  Úmgr_locsrq  r{  )	r×   rÕ  r¼   r¨  r|  r¯  Úblkr±  rœ  s	           €r\   rÙ  zBlockManagerFixed.write6  s3  ø€ Ü‰‰�cÑ$˜VÒ$ô �c—h‘h¤Ô-Ø—/‘/ 'Ó*ˆCà�x‰xˆØ×#Ñ#Ô%Ø×#Ñ#Ó%ˆDàŸ)™)ˆ�
‰
ŒÜ˜tŸy™yÓ)ò 	-‰EˆAˆrØ�AŠv˜rŸ|š|Ü Ð!RÓSÐSØ×Ñ˜t A 3˜Z¨Õ,ð	-ô ! §¡Ó-ˆ�
‰
ÔÜ §¡Ó,ò 	;‰FˆAˆsàŸ
™
Ÿ™¨¯©Ó5ˆIØ×Ñ˜u Q C wÐ/°·±À9ÐÔMØ×Ñ˜u Q C vÐ.°	Õ:ñ		;r^   )ræ  zShape | Noner;  )r§   rå  r¨   rå  ræ  r,   rí  )
rñ   rú  rû  r@  rý  rþ  r¤  r*  rÙ  rõ  rö  s   @r\   r¤  r¤  é  s`   ø… Ø˜)Ð$€JàƒLàòó ðð8 ØØ Øð+9ð ð	+9ð
 ð+9ð 
ó+9÷Z;ñ ;r^   r¤  c                  ó   — e Zd ZdZeZy)rÆ  r»  N)rñ   rú  rû  r  r,   r  rÍ   r^   r\   rÆ  rÆ  P  s   „ Ø€KØ�Hr^   rÆ  c                  ó®  ‡ — e Zd ZU dZdZdZded<   ded<   dZded	<   d
Zded<   	 	 	 	 	 	 	 	 d3	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d4ˆ fd„Z	e
d5d„«       Zd5d„Zd6d„Zd7d„Ze
d8d„«       Z	 	 	 	 d9d„Ze
d:d„«       Ze
d8d„«       Ze
d„ «       Ze
d„ «       Ze
d„ «       Ze
d„ «       Ze
d;d„«       Ze
d:d„«       Ze
d8d„«       Ze
d<d„«       Zd=d„Zd„ Zd>d „Zd?d!„Zd@d"„ZdAd#„Z d7d$„Z!d7d%„Z"dBd7d&„Z#d7d'„Z$e%d(„ «       Z&	 dC	 	 	 dDd)„Z'	 dE	 	 	 	 	 dFd*„Z(e)dGd+„«       Z*d,„ Z+	 	 	 	 dH	 	 	 dId-„Z,e-	 	 	 	 dJd.„«       Z.dBdKd/„Z/	 	 	 	 	 	 	 	 dLd0„Z0	 dC	 	 	 dMd1„Z1	 	 	 dC	 	 	 	 	 dNd2„Z2ˆ xZ3S )Or	  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_tablerz   rf   r  r·  rk   zint | list[Hashable]rz  Trn   r  c                ó¨   •— t         ‰| �  ||||¬«       |xs g | _        |xs g | _        |xs g | _        |xs g | _        |	xs i | _        |
| _        y )Nr¾  )r›  rÙ   Ú
index_axesrO  Úvalues_axesr’   r±  r�   )r×   rÈ   rÅ   rc   r“   rÁ  rO  rÂ  r’   r±  r�   rœ  s              €r\   rÙ   zTable.__init__u  s`   ø€ ô 	‰Ñ˜ °À&ÐÔIØ$Ò*¨ˆŒØ,Ò2°ˆÔØ&Ò,¨"ˆÔØ(Ò.¨BˆÔØ’J˜BˆŒ	Øˆ�r^   c                ó>   — | j                   j                  d«      d   S )NÚ_r   )r·  rß  rÜ   s    r\   Útable_type_shortzTable.table_type_shortŠ  s   € à�‰×$Ñ$ SÓ)¨!Ñ,Ð,r^   c                ó  — | j                  «        t        | j                  «      rdj                  | j                  «      nd}d|› d�}d}| j                  r8dj                  | j
                  D �cg c]  }t        |«      ‘Œ c}«      }d|› d�}dj                  | j                  D �cg c]  }|j                  ‘Œ c}«      }| j                  d›|› d| j                  › d	| j                  › d
| j                  › d|› d|› d�S c c}w c c}w )r  r  rB  z,dc->[rA  r  r  r  z (typ->z,nrows->z,ncols->z,indexers->[r  )r2  rq   r’   r!  r  r  rf   rÁ  rh   r‘  rÅ  r0  Úncols)r×   Újdcr‡  ÚverrS  Újverr¦   Újindex_axess           r\   rý   zTable.__repr__Ž  sù   € à�‰ÔÜ-0°×1BÑ1BÔ-Cˆc�h‰h�t×(Ñ(Ô)ÈˆØ�c�U˜!ˆ_ˆàˆØ×ÒØ—8‘8¨T¯\©\Ö:¨œS �VÒ:Ó;ˆDØ�d�V˜1�+ˆCà—h‘h°·±Ö@¨1 §£Ò@ÓAˆà×Ñ Ð& s eð ,Ø×*Ñ*Ð+¨8°D·J±J°<ð @Ø—j‘j�\ ¨k¨]¸!¸B¸4¸qðBð	
ùò	 ;ùò  As   Á0DÂ(Dc                óL   — | j                   D ]  }||j                  k(  sŒ|c S  y)zreturn the axis for cN)rf  rh   )r×   ro  r¦   s      r\   rç   zTable.__getitem__   s*   € à—‘ò 	ˆAØ�A—F‘F‹{Ø’ð	ð r^   c                ó
  — |€y|j                   | j                   k7  r&t        d|j                   › d| j                   › d�«      ‚dD ]¼  }t        | |d«      }t        ||d«      }||k7  sŒ#t        |«      D ]x  \  }}||   }||k7  sŒ|dk(  rO|j                  |j                  k7  r6t        d|j                  d   › d	|j                  › d
|j                  › d�«      ‚t        d|› d|› d|› d�«      ‚ t        d|› d|› d|› d�«      ‚ y)z"validate against an existing tableNz'incompatible table_type with existing [rq  rA  )rÁ  rO  rÂ  rÂ  úCannot serialize the column [r   z%] because its data contents are not [z] but [ú] object dtypezinvalid combination of [z] on appending data [z] vs current table [)r·  r´   r•  ry  r�  r­   r{  r_  )r×   r*  ro  ÚsvÚovr|  ÚsaxÚoaxs           r\   rá  zTable.validate§  sb  € àˆ=Øà×Ñ˜tŸ™Ò.ÜðØ×$Ñ$Ð% S¨¯©Ð(9¸ð<óð ð
 Aò 	ˆAÜ˜˜q $Ó'ˆBÜ˜  4Ó(ˆBØ�R‹xô (¨›mò ‘F�A�sà˜Q™%�CØ˜c“zØ Ò-°#·(±(¸c¿h¹hÒ2FÜ",Ø"?ÀÇ
Á
È1Á¸ð OFØFIÇhÁhÀZð P(Ø(+¯© z°ð!Aó#ð ô
 )Ø6°q°cð : Ø #˜uÐ$8¸¸¸Qð@óð ðô   Ø.¨q¨cÐ1FÀrÀdð K&Ø&( T¨ð,óð ñ/	r^   c                ó6   — t        | j                  t        «      S )z@the levels attribute is 1 or a list in the case of a multi-index)rW   rz  rn   rÜ   s    r\   Úis_multi_indexzTable.is_multi_indexÎ  s   € ô ˜$Ÿ+™+¤tÓ,Ð,r^   c                óÜ   — t        j                  |j                  j                  «      }	 |j	                  «       }t        |t        «      sJ ‚||fS # t
        $ r}t        d«      |‚d}~ww xY w)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)ra  Úfill_missing_namesrŽ   r{  Úreset_indexr­   rW   r,   )r×   rÕ  rz  Ú	reset_objrd  s        r\   Úvalidate_multiindexzTable.validate_multiindexÓ  so   € ô ×'Ñ'¨¯	©	¯©Ó8ˆð	ØŸ™Ó)ˆIô
 ˜)¤YÔ/Ð/Ð/Ø˜&Ð Ð øô ò 	ÜØTóàðûð	ús   «A Á	A+ÁA&Á&A+c                ó”   — t        j                  | j                  D �cg c]  }|j                  j                  d   ‘Œ c}«      S c c}w )z-based on our axes, compute the expected nrowsr   )rX   r„  rÁ  r]  r¤  ©r×   r|  s     r\   Únrows_expectedzTable.nrows_expectedä  s2   € ô �w‰w°D·O±OÖD¨q˜Ÿ	™	Ÿ™¨Ó*ÒDÓEÐEùÒDs   ž Ac                ó   — d| j                   v S )zhas this table been createdrz   r,  rÜ   s    r\   r×  zTable.is_existsé  s   € ð ˜$Ÿ*™*Ð$Ð$r^   c                ó0   — t        | j                  dd «      S ©Nrz   ©r•  rÅ   rÜ   s    r\   r-  zTable.storableî  s   € ä�t—z‘z 7¨DÓ1Ð1r^   c                ó   — | j                   S )z,return the table group (this is my storable))r-  rÜ   s    r\   rz   zTable.tableò  s   € ð �}‰}Ðr^   c                ó.   — | j                   j                  S r`   )rz   r>  rÜ   s    r\   r>  zTable.dtype÷  s   € à�z‰z×ÑÐr^   c                ó.   — | j                   j                  S r`   rV  rÜ   s    r\   rW  zTable.descriptionû  rX  r^   c                óV   — t        j                  | j                  | j                  «      S r`   )rJ  rK  rÁ  rÂ  rÜ   s    r\   rf  z
Table.axesÿ  s   € ä�‰˜tŸ™°×0@Ñ0@ÓAÐAr^   c                ó:   — t        d„ | j                  D «       «      S )z.the number of total columns in the values axesc              3  óF   K  — | ]  }t        |j                  «      –— Œ y ­wr`   )rq   r{  )rl  r¦   s     r\   rn  zTable.ncols.<locals>.<genexpr>  s   è ø€ Ò; Q”3�q—x‘x—=Ñ;ùs   ‚!)ÚsumrÂ  rÜ   s    r\   rÇ  zTable.ncols  s   € ô Ñ;¨$×*:Ñ*:Ô;Ó;Ð;r^   c                 ó   — yr”  rÍ   rÜ   s    r\   Úis_transposedzTable.is_transposed  r•  r^   c                óò   — t        t        j                  | j                  D �cg c]  }t	        |d   «      ‘Œ c}| j
                  D �cg c]  }t	        |j                  «      ‘Œ c}«      «      S c c}w c c}w )z@return a tuple of my permutated axes, non_indexable at the frontr   )ro   rJ  rK  rO  rë  rÁ  rD  ©r×   r¦   s     r\   Údata_orientationzTable.data_orientation  sY   € ô Ü�O‰OØ$(×$7Ñ$7Ö8˜q”�Q�q‘T•Ò8Ø&*§o¡oÖ6 ”�Q—V‘V•Ò6óó
ð 	
ùâ8ùÚ6s   £A/ÁA4c                ól  — dddœ}| j                   D �cg c]  }|j                  |f‘Œ }}| j                  D ��cg c]  \  }}||   df‘Œ }}}| j                  D �cg c]2  }|j                  t        | j                  «      v sŒ%|j                  |f‘Œ4 }}t        ||z   |z   «      S c c}w c c}}w c c}w )z<return a dict of the kinds allowable columns for this objectrŽ   r©   ©r   rk   N)rÁ  r  rO  rÂ  rh   rr  r’   rp  )	r×   Ú
axis_namesr¦   Úd1rD  r{  Úd2r‚  Úd3s	            r\   Ú
queryableszTable.queryables  s¶   € ð ! YÑ/ˆ
ð %)§O¡OÖ4˜qˆq�w‰w˜ŠlÐ4ˆÐ4Ø;?×;NÑ;N×O©<¨4°ˆz˜$Ñ Ò&ÐOˆÑOà"&×"2Ñ"2ö
Ø°a·f±fÄÀD×DUÑDUÓ@VÒ6VˆQ�W‰W�aŠLð
ˆð 
ô �B˜‘G˜b‘LÓ!Ð!ùò 5ùÛOùò
s   ”B&ºB+Á&B1ÂB1c                ól   — | j                   D �cg c]  }|j                  |j                  f‘Œ c}S c c}w )zreturn a list of my index cols)rÁ  rD  r  rÜ  s     r\   Ú
index_colszTable.index_cols$  s)   € ð ,0¯?©?Ö; a�—‘˜Ÿ™Ò!Ò;Ð;ùÒ;s   �1c                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w )zreturn a list of my values cols)rÂ  r  rÜ  s     r\   Úvalues_colszTable.values_cols)  s    € à!%×!1Ñ!1Ö2˜A�—“Ò2Ð2ùÒ2s   �%c                ó>   — | j                   j                  }|› d|› d�S )z)return the metadata pathname for this keyz/meta/z/metar  r'  s      r\   Ú_get_metadata_pathzTable._get_metadata_path-  s$   € à—
‘
×&Ñ&ˆØ�˜˜s˜e 5Ð)Ð)r^   c                ó¶   — | j                   j                  | j                  |«      t        |d¬«      d| j                  | j
                  | j                  ¬«       y)z£
        Write out a metadata array to the key as a fixed-format Series.

        Parameters
        ----------
        key : str
        values : ndarray
        Frâ  rz   )r�   rc   r“   r�   N)rÈ   rœ   rú  r2   rc   r“   r�   )r×   r—   r{  s      r\   rj  zTable.write_metadata2  sI   € ð 	�‰�‰Ø×#Ñ# CÓ(Ü�6 Ô&ØØ—]‘]Ø—;‘;Ø—L‘Lð 	õ 	
r^   c                óœ   — t        t        | j                  dd«      |d«      �*| j                  j                  | j	                  |«      «      S y)z'return the meta data array for this keyrÁ   N)r•  rÅ   rÈ   r¹   rú  ræ   s     r\   r‰  zTable.read_metadataD  sA   € ä”7˜4Ÿ:™: v¨tÓ4°c¸4Ó@ÐLØ—;‘;×%Ñ% d×&=Ñ&=¸cÓ&BÓCÐCØr^   c                óB  — t        | j                  «      | j                  _        | j                  «       | j                  _        | j	                  «       | j                  _        | j
                  | j                  _        | j                  | j                  _        | j                  | j                  _        | j                  | j                  _        | j                  | j                  _	        | j                  | j                  _
        | j                  | j                  _        y)zset our table type & indexablesN)rf   r·  rS  rö  rø  rO  r’   r�   rc   r“   rz  r±  rÜ   s    r\   r'  zTable.set_attrsJ  s²   € ä # D§O¡OÓ 4ˆ�
‰
ÔØ $§¡Ó 1ˆ�
‰
ÔØ!%×!1Ñ!1Ó!3ˆ�
‰
ÔØ$(×$7Ñ$7ˆ�
‰
Ô!Ø"&×"3Ñ"3ˆ�
‰
ÔØ!Ÿ\™\ˆ�
‰
ÔØ"Ÿm™mˆ�
‰
ÔØ ŸK™Kˆ�
‰
ÔØ ŸK™Kˆ�
‰
ÔØŸ)™)ˆ�
‰
�r^   c                ó”  — t        | j                  dd«      xs g | _        t        | j                  dd«      xs g | _        t        | j                  dd«      xs i | _        t        | j                  dd«      | _        t        t        | j                  dd«      «      | _        t        t        | j                  dd«      «      | _	        t        | j                  d	d«      xs g | _
        | j                  D �cg c]  }|j                  sŒ|‘Œ c}| _        | j                  D �cg c]  }|j                  rŒ|‘Œ c}| _        yc c}w c c}w )
r[  rO  Nr’   r±  r�   rc   r“   rƒ   rz  )r•  rS  rO  r’   r±  r�   rd   rc   r]   r“   rz  Ú
indexablesr
  rÁ  rÂ  rì  s     r\   r*  zTable.get_attrsW  sõ   € ä% d§j¡jÐ2BÀDÓIÒOÈRˆÔÜ# D§J¡J°ÀÓEÒKÈˆÔÜ˜DŸJ™J¨°Ó5Ò;¸ˆŒ	Ü˜tŸz™z¨9°dÓ;ˆŒÜ(¬°·±¸ZÈÓ)NÓOˆŒÜ%¤g¨d¯j©j¸(ÀHÓ&MÓNˆŒÜ&-¨d¯j©j¸(ÀDÓ&IÒ&OÈRˆŒØ&*§o¡oÖK ¸×9JÓ9Jš1ÒKˆŒØ'+§¡ÖP !¸a×>OÓ>OšAÒPˆÕùò LùÚPs   Ã5E ÄE Ä!EÄ3Ec           	     óè   — |�k| j                   r^t        dj                  | j                  D �cg c]  }t	        |«      ‘Œ c}«      z  }t        j                  |t        t        «       ¬«       yyyc c}w )r2  Nr  rt  )	r  rv   r!  r  rf   rx  ry  r   r    )r×   rr   rS  r}  s       r\   r3  zTable.validate_versionc  s\   € àÐØ×"Ò"Ü(¨3¯8©8ÀTÇ\Á\Ö4RÀ´S¸µVÒ4RÓ+SÑS�Ü—‘ØÜ*Ü/Ó1öð #ð ùâ4Rs   ­A/
c                óŒ   — |€yt        |t        «      sy| j                  «       }|D ]  }|dk(  rŒ	||vsŒt        d|› d�«      ‚ y)zˆ
        validate the min_itemsize doesn't contain items that are not in the
        axes this needs data_columns to be defined
        Nr{  zmin_itemsize has the key [z%] which is not an axis or data_column)rW   rp  rô  r­   )r×   r�   ÚqrR  s       r\   Úvalidate_min_itemsizezTable.validate_min_itemsizen  sd   € ð
 ÐØÜ˜,¬Ô-Øà�O‰OÓˆØò 	ˆAà�HŠ}ØØ˜ŠzÜ Ø0°°ð 4"ð "óð ñ	r^   c                ó`  ‡ ‡‡‡‡— g }‰ j                   Š‰ j                  j                  Št        ‰ j                  j                  «      D ]k  \  }\  }}t        ‰|«      }‰ j                  |«      }|�dnd}|› d�}t        ‰|d«      }	t        ||||	|‰ j                  ||¬«      }
|j                  |
«       Œm t        ‰ j                  «      Št        |«      Šˆˆˆˆ ˆfd„}|j                  t        ‰ j                  j                  «      D ��cg c]  \  }} |||«      ‘Œ c}}«       |S c c}}w )z/create/cache the indexables if they don't existNr…  r  )rh   rD  r  r�  r  rz   rÁ   r  c                óf  •— t        |t        «      sJ ‚t        }|‰v rt        }t	        ‰|«      }t        |‰j                  «      }t	        ‰|› d�d «      }t	        ‰|› d�d «      }t        |«      }‰j                  |«      }t	        ‰|› d�d «      }	 |||||‰| z   |‰j                  |	||¬«
      }
|
S )Nr  rž  r¡  )
rh   r  r{  r�  r  r  rz   rÁ   r  r>  )
rW   rf   r™  rø  r•  Ú_maybe_adjust_namer  r©  r‰  rz   )r|  ro  Úklassr¹  Úadj_namer{  r>  r�  ÚmdrÁ   rÕ  Úbase_posr‡  Údescr×   Útable_attrss              €€€€€r\   r{   zTable.indexables.<locals>.f¦  sÖ   ø€ Ü˜a¤Ô%Ð%Ð%ÜˆEØ�B‰wÜ(�ä˜4 Ó#ˆDÜ)¨!¨T¯\©\Ó:ˆHô ˜[¨X¨J°eÐ*<¸dÓCˆFÜ˜K¨H¨:°VÐ)<¸dÓCˆEô " %Ó(ˆDà×#Ñ# AÓ&ˆBô ˜;¨8¨*°EÐ(:¸DÓAˆDáØØØØØ˜q‘LØØ—j‘jØØØôˆCð ˆJr^   )rW  rz   rS  ry  rö  r•  r‰  r	  r”   rr  r’   rq   rv  rø  )r×   Ú_indexablesr|  rD  rh   r¹  r	  rÁ   r  r�  Ú	index_colr{   ro  r
  r‡  r  r  s   `            @@@@r\   rÿ  zTable.indexablesƒ  s)  ü€ ð ˆà×ÑˆØ—j‘j×&Ñ&ˆô
  )¨¯©×)>Ñ)>Ó?ò 	*‰OˆA‰|��dÜ˜4 Ó&ˆDØ×#Ñ# DÓ)ˆBØ!# ‘:°TˆDà˜& ˜ˆIÜ˜;¨	°4Ó8ˆDä ØØØØØØ—j‘jØØô	ˆIð ×Ñ˜yÕ)ð%	*ô* �×"Ñ"Ó#ˆÜ�{Ó#ˆ÷!	ð !	ðJ 	×Ñ´	¸$¿*¹*×:PÑ:PÓ0Q×R©¨¨1™A˜a �GÓRÔSàÐùó Ss   ÄD*
c           
     ó  — | j                  «       sy|du ry|�|du r0| j                  D �cg c]  }|j                  sŒ|j                  ‘Œ }}t	        |t
        t        f«      s|g}i }|�||d<   |�||d<   | j                  }|D ]ô  }t        |j                  |d«      }|�°|j                  r^|j                  }	|	j                  }
|	j                  }|�||k7  r|j                  «        n||d<   |�|
|k7  r|j                  «        n|
|d<   |j                  rŒ“|j                  j!                  d«      rt#        d«      ‚ |j$                  di |¤Ž ŒÌ|| j&                  d   d	   v sŒát)        d
|› d|› d|› d�«      ‚ yc c}w )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.
        NFTrŒ  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Í   )r2  rf  r  r  rW   ro   rn   rz   r•  rm  r¤  rŽ   rŒ  r�  Úremove_indexrð   rŸ  r´   rŽ  rO  r†   )r×   r©   rŒ  r�  r¦   Úkwrz   ro  r‚  rŽ   Úcur_optlevelÚcur_kinds               r\   rŽ  zTable.create_indexÏ  s¦  € ð< �‰Ô ØØ�eÑØð ˆ?˜g¨™oØ(,¯	©	ÖI 1°Q×5HÓ5H�q—w“wÐIˆGÐIÜ˜'¤E¬4 =Ô1Ø�iˆGàˆØÐØ%ˆBˆz‰NØÐØˆBˆv‰Jà—
‘
ˆØò $	ˆAÜ˜Ÿ
™
 A tÓ,ˆAØˆ}à—<’<ØŸG™G�EØ#(§>¡>�LØ$Ÿz™z�HàÐ'¨H¸Ò,<ØŸ™Õ(à%-˜˜6™
àÐ+°ÀÒ0HØŸ™Õ(à)5˜˜:™ð —|“|Ø—v‘v×(Ñ(¨Ô3Ü'ðHóð ð #�A—N‘NÑ( RÓ(Ø�d×)Ñ)¨!Ñ,¨QÑ/Ò/ä$Ø˜a˜Sð !/Ø/0¨cð 21Ø12°Ð3SðUóð ñA$	ùò Js
   «E<½E<c                ó(  — t        | |||¬«      }|j                  «       }g }| j                  D ]a  }|j                  | j                  «       |j                  || j                  | j                  | j                  ¬«      }|j                  |«       Œc |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]]
        r7  rä  )
Ú	Selectionr¹   rf  r‚  r±  rN  r�   rc   r“   r”   )	r×   rr   r§   r¨   Ú	selectionr{  r  r¦   Úress	            r\   Ú
_read_axeszTable._read_axes%  sŠ   € ô" ˜d¨%°uÀ4ÔHˆ	Ø×!Ñ!Ó#ˆàˆà—‘ò 	 ˆAØ�J‰J�t—y‘yÔ!Ø—)‘)ØØŸ™ØŸ™Ø—{‘{ð	 ó ˆCð �N‰N˜3Õð	 ð ˆr^   c                ó   — |S )zreturn the data for this objrÍ   ©rÑ  rÕ  r^  s      r\   Ú
get_objectzTable.get_objectG  s	   € ð ˆ
r^   c                óÐ  — t        |«      sg S |d   \  }}| j                  j                  |i «      }|j                  d«      dk(  r|rt        d|› d|› �«      ‚|du rt	        |«      }n|€g }t        |t        «      rLt        |«      }t	        |«      }|j                  |j                  «       D �cg c]  }|dk7  r||vr|‘Œ c}«       |D �	cg c]	  }	|	|v sŒ|	‘Œ c}	S c c}w c c}	w )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 Tr{  )
rq   r±  rå   r­   rn   rW   rp  rr  rv  r  )
r×   r’   r�   rO  rD  Úaxis_labelsr±  Úexisting_data_columnsrR  ro  s
             r\   Úvalidate_data_columnszTable.validate_data_columnsL  s  € ô
 �>Ô"ØˆIà*¨1Ñ-ÑˆˆkØ�y‰y�}‰}˜T 2Ó&ˆØ�8‰8�FÓ˜|Ò+±ÜØ4°T°Fð ; Ø ,˜~ð/óð ð ˜4ÑÜ Ó,‰LØÐ!ØˆLô �l¤DÔ)Ü$'¨Ó$5Ð!Ü Ó-ˆLØ×Ñð *×.Ñ.Ó0öàØ˜H’}¨Ð2GÑ)Gò òôð (Ö<�a¨1°Ò+;’Ò<Ð<ùòùò =s   Â0CÃ	C#ÃC#c                ó„  ‡— t        |t        «      s1| j                  j                  }t	        d|› dt        |«      › d�«      ‚‰€dgŠ‰D �cg c]  }|j                  |«      ‘Œ c}Š| j                  «       rHd}	| j                  D �cg c]  }|j                  ‘Œ c}Št        | j                  «      }| j                  }nd}	| j                  }
| j                  dk(  sJ ‚t        ‰«      | j                  d	z
  k7  rt!        d
«      ‚g }|€d}t#        ˆfd„dD «       «      }|j$                  |   }t        |«      }|	r›t        |«      }| j&                  |   d	   }t)        t+        j,                  |«      t+        j,                  |«      dd¬«      sIt)        t+        j,                  t/        |«      «      t+        j,                  t/        |«      «      dd¬«      r|}|
j1                  |i «      }t        |j2                  «      |d<   t        |«      j4                  |d<   |j7                  ||f«       ‰d   }|j$                  |   }|j9                  |«      }t;        ||| j<                  | j>                  «      }||_	        |jA                  d«       |jC                  |
«       |jE                  |«       |g}t        |«      }|d	k(  sJ ‚t        |«      d	k(  sJ ‚|D ]  }tG        ||d   |d	   «      }Œ |j                  d	k(  }| jI                  |||«      }| jK                  ||«      jM                  «       }| jO                  ||	|| jP                  |«      \  }}g }tS        tU        ||«      «      D �]è  \  }\  }}tV        }d}|r=t        |«      d	k(  r/|d   |v r(tX        }|d   }|�t        |tZ        «      st!        d«      ‚|	r|r	 | jP                  |   }nd}|xs d|› �}!ta        |!|jb                  |||| j<                  | j>                  |¬«      }"te        |!| jf                  «      }#|ji                  |"«      }$tk        |"jl                  jn                  «      }%d}&tq        |"dd«      �ts        |"jt                  «      }&dx}'x}(})t        |"jl                  tv        «      r<|"jx                  })d}'t+        jz                  |"j|                  «      j                  «       }(n/t        |jl                  t€        «      rt[        |jl                  «      }'tƒ        |"«      \  }*}+ ||#|!t        |«      |$||%|&|)|'|(|+|*¬«      },|,jC                  |
«       |j7                  |,«       |d	z  }�Œë |D �,cg c]  },|,j„                  sŒ|,jn                  ‘Œ }-}, t        | «      | j†                  | j                  | j<                  | j>                  ||||-|
|¬«
      }.t‰        | d«      r| jŠ                  |._E        |.j�                  |«       |r|	r|.j�                  | «       |.S c c}w c c}w # t\        t^        f$ r"} t!        d|› d| jP                  › d�«      | ‚d} ~ ww xY wc c},w )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½  rA  Nr   TFr  rk   z<currently only support ndim-1 indexers in an AppendableTablerH  c              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wr`   rÍ   )rl  rS  rf  s     €r\   rn  z%Table._create_axes.<locals>.<genexpr>»  s   øè ø€ Ò6˜¨°ª”1Ñ6ùs   ƒ	�rï  r†  r{  rð   rú  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colr�   r�   rc   r“   r©   r  r…  )rh   r  r{  r  r  r�  r  rƒ  rÁ   r  r>  r¨  )
rÈ   rÅ   rc   r“   rÁ  rO  rÂ  r’   r±  r�   rz  )HrW   r,   rÅ   rÄ   r´   rð   Ú_get_axis_numberr2  rÁ  rD  rn   r’   r�   r±  rt  rq   r­   rq  rf  rO  r+   rX   r=   rx  rw  r{  rñ   r”   Ú_get_axis_namerp  rc   r“   r  r~  rb  Ú_reindex_axisr   r  rF  Ú_get_blocks_and_itemsrÂ  ry  rL  r™  rø  rf   Ú
IndexErrorrï   Ú_maybe_convert_for_string_atomr{  r  r  rº  r©  r>  rh   r•  rr  r  r'   rƒ  rå  rà  rè  r3   r¨  r  rÈ   r3  rz  r  rá  )/r×   rf  rÕ  rá  r�   r’   r�   rÅ   r¦   Útable_existsÚnew_infoÚnew_non_index_axesr{  Úappend_axisÚindexerÚ
exist_axisr±  Ú	axis_nameÚ	new_indexÚnew_index_axesÚjr^  r»  rº  r±  Úvaxesr|  r¼  Úb_itemsr  rh   r$  rd  Únew_nameÚdata_convertedr  r  r�  r  rÁ   r  rƒ  r¨  rª  rZ  ÚdcsÚ	new_tables/    `                                             r\   Ú_create_axeszTable._create_axesr  s7  ø€ ô@ ˜#œyÔ)Ø—J‘J×&Ñ&ˆEÜØAÀ%Àð IÜ˜s›)˜ Að'óð ð ˆ<Ø�3ˆDð 26Ö6¨A�×$Ñ$ QÕ'Ò6ˆð �?‰?ÔØˆLØ$(§O¡OÖ4˜q�A—F“FÒ4ˆDÜ × 1Ñ 1Ó2ˆLØ—l‘l‰Gð !ˆLà—9‘9ˆà�y‰y˜AŠ~Ðˆ~äˆt‹9˜Ÿ	™	 A™Ò%ÜØNóð ð
 $&Ðð ˆ?ØˆGô Ó6˜fÔ6Ó6ˆà�H‰H�S‰Mˆä˜1“gˆÙÜÐ,Ó-ˆGØ×,Ñ,¨WÑ5°aÑ8ˆJÜ#Ü—‘˜Ó%Ü—‘˜Ó$ØØ õ	ô $Ü—H‘HœV KÓ0Ó1Ü—H‘HœV JÓ/Ó0Ø#Ø $õ	ð #-�Kð ×"Ñ" 3¨Ó+ˆÜ˜QŸW™W›ˆˆW‰Ü˜A“w×'Ñ'ˆˆV‰à×!Ñ! 3¨Ð"4Ô5ð �1‰gˆØ�H‰H�S‰MˆØ×&Ñ& sÓ+ˆ	Ü" 9¨a°·±ÀÇÁÓLˆ	Øˆ	Œð 	×Ñ˜!ÔØ×Ñ˜hÔ'Ø× Ñ  Ô.à#˜ˆÜ�ÓˆØ�AŠvˆˆvô Ð%Ó&¨!Ò+Ð+Ð+Ø#ò 	1ˆAÜ  Q q¡T¨1¨Q©4Ó0‰Cð	1ð —^‘^ qÑ(ˆ
ð ×1Ñ1Ø˜,Ð(:ó
ˆð —‘  ZÓ0×=Ñ=Ó?ˆà ×6Ñ6Ø�<Ð!3°T×5EÑ5EÀ|ó
Ñˆ�	ð
 ˆÜ!*¬3¨v°yÓ+AÓ!Bó K	ÑˆA‰~��WäˆEØˆDñ ¤ G£°Ò 1°g¸a±jÀLÑ6PÜ(�Ø˜q‘z�Ø˜¬
°4¼Ô(=ä$Ð%TÓUÐUñ ¡ðØ#'×#3Ñ#3°AÑ#6‘Lð  $�àÒ2 ¨q¨cÐ2ˆHÜ;ØØ—
‘
Ø)Ø)ØØŸ™Ø—{‘{Øô	ˆNô *¨(°D·L±LÓAˆHà—/‘/ .Ó1ˆCÜ! .×"6Ñ"6×";Ñ";Ó<ˆDØˆBÜ�~ t¨TÓ2Ð>Ü˜^×.Ñ.Ó/�à(,Ð,ˆDÐ,�8˜gÜ˜.×.Ñ.Ô0@ÔAØ(×0Ñ0�Ø!�ÜŸ:™: n×&?Ñ&?Ó@×FÑFÓH‘Ü˜CŸI™I¤{Ô3Ü˜3Ÿ9™9“~�ä7¸ÓGÑˆD�*áØØÜ˜G“}ØØØØØØØ!Ø ØôˆCð �O‰O˜HÔ%à�L‰L˜Ôà�‰FŠAðWK	ðZ $)ÖB˜C¨C×,AÓ,Aˆs�x‹xÐBˆÐBà”D˜“JØ—;‘;Ø—*‘*Ø—]‘]Ø—;‘;Ø%Ø-ØØØØô
ˆ	ô �4˜Ô"à#Ÿ{™{ˆIÔà×'Ñ'¨Ô5á™Ø×Ñ˜tÔ$àÐùòI 7ùò
 5øô^ #¤HÐ-ò Ü$Ø7¸°xð @0Ø04×0@Ñ0@Ð/AÀðDóð ðûðüòr Cs0   ÁW?ÂXÎ;X	ÕX=Õ'X=Ø	X:ØX5Ø5X:c           
     ó†  — t        | j                  t        «      r| j                  d«      } d„ }| j                  }t	        t
        |«      }t        |j                  «      } ||«      }t        |«      rÜ|d   \  }	}
t        |
«      j                  t        |«      «      }| j                  ||	¬«      j                  }t	        t
        |«      }t        |j                  «      } ||«      }|D ]b  }| j                  |g|	¬«      j                  }t	        t
        |«      }|j                  |j                  «       |j                   ||«      «       Œd |r“t        ||«      D ��ci c]!  \  }}t        |j                  «       «      ||f“Œ# }}}g }g }|D ]N  }t        |j                   «      }	 |j#                  |«      \  }}|j%                  |«       |j%                  |«       ŒP |}|}||fS c c}}w # t&        t(        f$ rC}dj+                  |D �cg c]  }t-        |«      ‘Œ nc c}w c}«      }t/        d|› d�«      |‚d }~ww xY w)Nr§  c                ó†   — | j                   D �cg c]'  }| j                  j                  |j                  «      ‘Œ) c}S c c}w r`   )rº  r  rz  r»  )Úmgrr¼  s     r\   Úget_blk_itemsz2Table._get_blocks_and_items.<locals>.get_blk_itemsr  s+   € Ø<?¿J¹JÖG°S�C—I‘I—N‘N 3§<¡<Õ0ÒGÐGùÒGs   �,>r   ro  r  z+cannot match existing table structure for [z] on appending data)rW   rµ  r@   r¶  r   rA   rn   rº  rq   r.   rw  r~  rv  rL  ro   Útolistr{  rP  r”   r)  rï   r!  rD   r­   )r»  r+  r-  rÂ  r’   r?  r>  rº  r±  rD  r  Ú
new_labelsro  Úbr6  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear  rd  ÚitemÚjitemss                          r\   r(  zTable._get_blocks_and_itemsd  s8  € ô �e—j‘j¤,Ô/Ø×%Ñ% gÓ.ˆEò	Hð �j‰jˆÜ”< Ó%ˆÜ" 3§:¡:Ó.ˆÙ!.¨sÓ!3ˆ	äˆ|Ôð
 !3°1Ñ 5ÑˆD�+Ü˜{Ó+×6Ñ6´u¸\Ó7JÓKˆJØ—-‘- 
°�-Ó6×;Ñ;ˆCÜ”| SÓ)ˆCä˜#Ÿ*™*Ó%ˆFÙ% cÓ*ˆIØ!ò 5�ð —m‘m Q C¨d�mÓ3×8Ñ8�Üœ<¨Ó-�Ø—‘˜cŸj™jÔ)Ø× Ñ ¡¨sÓ!3Õ4ð5ñ ô #& f¨iÓ"8÷á�A�wô �g—n‘nÓ&Ó'¨!¨W¨Ñ5ðˆHñ ð ')ˆJØˆMØ!ò �Ü˜bŸi™iÓ(�ð	Ø!)§¡¨eÓ!4‘J�A�wØ×%Ñ% aÔ(Ø!×(Ñ(¨Õ1ðð  ˆFØ%ˆIà�yÐ Ð ùó+øô #¤HÐ-ò Ø ŸX™XÀeÖ&L¸d¤|°DÕ'9Ñ&LùÔ&LÓM�FÜ$ØEÀfÀXð N,ð ,óð ðûðús*   Å &G(Æ(6G.Ç.I Ç=H;ÈHÈH;È;I c                óŠ  ‡ ‡— |�t        |«      }|�P‰ j                  rDt        ‰ j                  t         «      sJ ‚‰ j                  D ]  }||vsŒ|j	                  d|«       Œ ‰ j
                  D ]  \  }}t        ‰|||«      Šˆˆ fd„}Œ |j                  �-|j                  j                  «       D ]  \  }}	}
 ||
|	«      ŠŒ ‰S )zprocess axes filtersr   c                ó   •— ‰j                   D ]à  }‰j                  |«      }‰j                  |«      }|€J ‚| |k(  rP‰	j                  r$|j	                  t        ‰	j                  «      «      } |||«      }‰j                  |¬«      |   c S | |v sŒƒt        t        ‰| «      j                  «      }t        |«      }t        ‰t        «      rd|z
  } |||«      }‰j                  |¬«      |   c S  t        d| › d�«      ‚)Nro  rk   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSr%  Ú	_get_axisrÕ  Úunionr.   rz  r}  r?   r•  r{  rW   r,   r­   )
ÚfieldÚfiltÚopr1  Úaxis_numberÚaxis_valuesÚtakersr{  rÕ  r×   s
           €€r\   Úprocess_filterz*Table.process_axes.<locals>.process_filter¹  s  ø€ Ø!$×!1Ñ!1ò A�IØ"%×"6Ñ"6°yÓ"A�KØ"%§-¡-°	Ó":�KØ&Ð2Ð2Ð2ð  	Ò)ð  ×.Ò.Ø#'§:¡:¬e°D·K±KÓ.@Ó#A˜Dá!# K°Ó!6˜Ø"Ÿw™w¨K˜wÓ8¸Ñ@Ò@ð  +Ò-ä!-¬g°c¸5Ó.A×.HÑ.HÓ!I˜Ü+¨DÓ1˜ô & c¬9Ô5Ø*+¨k©/˜Ká!# F¨DÓ!1˜Ø"Ÿw™w¨K˜wÓ8¸Ñ@Ò@ð5Aô8 !Ð#:¸5¸'ÐAQÐ!RÓSÐSr^   )	rn   rÕ  rW   rz  ÚinsertrO  r'  Úfilterr�   )r×   rÕ  r  r©   r  rD  ÚlabelsrT  rN  rP  rO  s   ``         r\   Úprocess_axeszTable.process_axes¨  sÜ   ù€ ð ÐÜ˜7“mˆGð Ð 4×#6Ò#6Ü˜dŸk™k¬4Ô0Ð0Ð0Ø—[‘[ò )�Ø˜GÒ#Ø—N‘N 1 aÕ(ð)ð
 !×/Ñ/ò  	T‰LˆD�&Ü  T¨6°7Ó;ˆCöTð 	TðF ×ÑÐ'Ø#,×#3Ñ#3×#:Ñ#:Ó#<ò 6‘��r˜4Ù$ U¨D°"Ó5‘ð6ð ˆ
r^   c                ón  — |€t        | j                  d«      }d|dœ}| j                  D �ci c]  }|j                  |j                  “Œ c}|d<   |rC|€| j
                  xs d}t        «       j                  |||xs | j                  ¬«      }||d<   |S | j                  �| j                  |d<   |S c c}w )z:create the description of the table from the axes & valuesi'  rz   )rh   rg  rW  é	   )rž   rŸ   rØ   rÎ   )
ÚmaxrÝ  rf  r  r  rÒ   rŠ   r  rÔ   rÕ   )r×   rŸ   rž   rØ   rg  r  r¦   rÎ   s           r\   Úcreate_descriptionzTable.create_descriptionß  sÄ   € ð ÐÜ˜t×2Ñ2°EÓ:ˆLà¨lÑ;ˆð 59·I±IÖ>¨q˜AŸG™G Q§U¡U™NÒ>ˆˆ-ÑáØÐ Ø ŸO™OÒ0¨q�	Ü“i×'Ñ'Ø#ØØ%Ò9¨×)9Ñ)9ð (ó ˆGð
 #ˆAˆi‰Lð ˆð �]‰]Ð&ØŸ=™=ˆAˆi‰Làˆùò ?s   ¬B2c                óÆ  — | j                  |«       | j                  «       syt        | |||¬«      }|j                  «       }|j                  �Š|j                  j                  «       D ]m  \  }}}| j                  ||j                  «       |j                  «       dz   ¬«      }	| ||	j                  ||j                  «       z
     |«      j                     }Œo t        |«      S )zf
        select coordinates (row numbers) from a table; return the
        coordinates object
        Fr7  rk   rh  )r3  r2  r  Úselect_coordsrV  r�   r>  r  r[  Úilocr{  r.   )
r×   rr   r§   r¨   r  ÚcoordsrN  rP  rO  r¨  s
             r\   r9  zTable.read_coordinatesþ  sÙ   € ð 	×Ñ˜eÔ$ð �‰Ô Øô ˜d¨%°uÀ4ÔHˆ	Ø×(Ñ(Ó*ˆØ×ÑÐ'Ø#,×#3Ñ#3×#:Ñ#:Ó#<ò S‘��r˜4Ø×'Ñ'Ø §¡£°F·J±J³LÀ1Ñ4Dð (ó �ð  ¡ 4§9¡9¨V°f·j±j³lÑ-BÑ#CÀTÓ J× QÑ QÑR‘ð	Sô �V‹}Ðr^   c                óp  — | j                  «        | j                  «       sy|�t        d«      ‚| j                  D ]ë  }||j                  k(  sŒ|j
                  st        d|› d�«      ‚t        | j                  j                  |«      }|j                  | j                  «       |j                  ||| | j                  | j                  | j                  ¬«      }t!        |d   |j"                  «      }t        | j                  j$                  |› d�d«      }	t'        ||d|	¬	«      c S  t)        d|› d
�«      ‚)zj
        return a single column from the table, generally only indexables
        are interesting
        FNz4read_column does not currently accept a where clausezcolumn [z=] can not be extracted individually; it is not data indexablerä  rk   r¡  )rh   r©  r>  z] not found in the table)r3  r2  r´   rf  rh   r  r­   r•  rz   rm  r‚  r±  rN  r�   rc   r“   rI  r  rS  r2   rï   )
r×   r=  rr   r§   r¨   r¦   ro  Ú
col_valuesÚcvsr>  s
             r\   r>  zTable.read_column  s/  € ð 	×ÑÔð �‰Ô ØàÐÜÐRÓSÐSð —‘ò 	IˆAØ˜Ÿ™ÓØ×*Ò*Ü$Ø" 6 (ð +3ð 3óð ô ˜DŸJ™JŸO™O¨VÓ4�Ø—
‘
˜4Ÿ9™9Ô%ØŸY™YØ�e˜D�MØ ŸL™LØ!Ÿ]™]ØŸ;™;ð	 'ó �
ô ˜j¨™m¨Q¯T©TÓ2�Ü §
¡
× 0Ñ 0°V°H¸EÐ2BÀDÓI�Ü˜c¨°UÀ%ÔHÒHð'	Iô* ˜ & Ð)AÐBÓCÐCr^   )Nrƒ   NNNNNN)rÈ   r    rÅ   rK   rc   rø  r“   rf   rÁ  zlist[IndexCol] | NonerO  z list[tuple[AxisInt, Any]] | NonerÂ  zlist[DataCol] | Noner’   zlist | Noner±  zdict | Noneræ  rç  rè  )ro  rf   rí  rî  )rÕ  ró  ræ  z tuple[DataFrame, list[Hashable]]rê  )ræ  zitertools.chain[IndexCol])ræ  ztuple[int, ...])ræ  údict[str, Any])ræ  rì  )r—   rf   ræ  rf   )r—   rf   r{  r�  ræ  rç  ré  r`   rð  )r�  rø  ræ  rç  rò  )r§   rå  r¨   rå  ræ  z9list[tuple[np.ndarray, np.ndarray] | tuple[Index, Index]]©r^  r  )TNNN)rÕ  r,   rá  r  )r»  r,   r+  r  )r  r  ræ  r,   )rž   rå  rØ   r  rg  rå  ræ  rd  r<  )r=  rf   r§   rå  r¨   rå  )4rñ   rú  rû  rü  r  r  rý  rz  rM  rÙ   rþ  rÅ  rý   rç   rá  rÕ  rÚ  rÝ  r×  r-  rz   r>  rW  rf  rÇ  rê  rí  rô  rö  rø  rú  rj  r‰  r'  r*  r3  r  r   rÿ  rŽ  r  rô  r  r   r;  Ústaticmethodr(  rX  r\  r9  r>  rõ  rö  s   @r\   r	  r	  U  sI  ø… ñð. €KØ€K�ÓØƒOØ#$€FÐ Ó$Ø€HàƒNð  $ØØ,0Ø;?Ø,0Ø$(Ø Øðàðð ðð ð	ð
 ðð *ðð 9ðð *ðð "ðð ðð 
õð* ò-ó ð-ó
ó$ó%ðN ò-ó ð-ð!Ø%ð!à	)ó!ð" òFó ðFð ò%ó ð%ð ñ2ó ð2ð ñó ðð ñ ó ð ð ñ&ó ð&ð òBó ðBð ò<ó ð<ð òó ðð ò
ó ð
ó"ò<ó
3ó*ó

ó$ó$ó
Qô	óð* ñIó ðIðX ?CðTØ1;ðTà	óTðn CGð Ø&ð Ø5?ð à	Bó ðD òó ðò$=ðT ØØØðpð ðpð ó	pðd ðA!ØðA!àòA!ó ðA!ôF5ðnð ðð ð	ð
 !ðð 
óð@ HLðØ!+ðØ:Dóð: Ø Øð+Dàð+Dð ð	+Dð
 ÷+Dr^   r	  c                  ó4   — e Zd ZdZdZ	 	 	 	 d	 	 	 dd„Zdd„Zy)	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Ä  Nc                ó   — t        d«      ‚)z[
        read the indices and the indexing array, calculate offset rows and return
        z!WORMTable needs to implement readr6  r7  s        r\   r*  zWORMTable.readO  s   € ô "Ð"EÓFÐFr^   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 writer6  r9  s      r\   rÙ  zWORMTable.write[  s   € ô "Ð"FÓGÐGr^   r;  r<  rí  )rñ   rú  rû  rü  r·  r*  rÙ  rÍ   r^   r\   rÍ  rÍ  F  s>   „ ñð €Jð ØØ Øð
Gð ð	
Gð
 ó
GôHr^   rÍ  c                  óx   — e Zd ZdZdZ	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 d	d„Zd
dd„Z	 	 	 	 	 	 	 	 	 	 dd„Zddd„Zy)r�  ú(support the new appendable table formatsÚ
appendableNc                ó8  — |s2| j                   r&| j                  j                  | j                  d«       | j	                  ||||||¬«      }|j
                  D ]  }|j                  «        Œ |j                   sQ|j                  ||||	¬«      }|j                  «        ||d<    |j                  j                  |j                  fi |¤Ž |j                  |j                  _
        |j
                  D ]  }|j                  ||«       Œ |j                  ||
¬«       y )Nrz   )rf  rÕ  rá  r�   r�   r’   )rŸ   rž   rØ   rg  rX  )r‘   )r×  rÊ   rÜ  rÅ   r;  rf  rd  r\  r'  Úcreate_tabler±  rS  rm  Ú
write_data)r×   rÕ  rf  r”   rŸ   rž   rØ   r�   r«   rg  r‘   r�   r’   rX  rz   r¦   Úoptionss                    r\   rÙ  zAppendableTable.writej  s  € ñ  ˜$Ÿ.š.Ø�L‰L×$Ñ$ T§Z¡Z°Ô9ð ×!Ñ!ØØØØ%ØØ%ð "ó 
ˆð —‘ò 	ˆAØ×ÑÕð	ð �Šà×.Ñ.ØØ#Ø%Ø)ð	 /ó ˆGð �O‰OÔà%0ˆG�MÑ"ð 'ˆE�M‰M×&Ñ& u§{¡{Ñ>°gÒ>ð !Ÿ:™:ˆ�‰Ôð —‘ò 	.ˆAØ×Ñ˜u fÕ-ð	.ð 	×Ñ˜¨6ÐÕ2r^   c                ó<  — | j                   j                  }| j                  }g }|rs| j                  D ]d  }t	        |j
                  «      j                  d¬«      }t        |t        j                  «      sŒC|j                  |j                  dd¬«      «       Œf t        |«      r%|d   }|dd D ]  }||z  }Œ	 |j                  «       }nd}| j                  D �cg c]  }|j                  ‘Œ }	}t        |	«      }
|
dk(  sJ |
«       ‚| j                  D �cg c]  }|j!                  «       ‘Œ }}|D �cg c]Q  }|j#                  t        j$                  t        j&                  |j(                  «      |j(                  dz
  «      «      ‘ŒS }}g }t+        |«      D ]H  \  }}|f| j                   ||
|z         j,                  z   }|j                  |j/                  |«      «       ŒJ |€d}t        j0                  t3        ||«      | j                   ¬	«      }||z  dz   }t5        |«      D ]^  }||z  }t3        |dz   |z  |«      }||k\  r y| j7                  ||	D �cg c]  }||| ‘Œ	 c}|�||| nd|D �cg c]  }||| ‘Œ	 c}¬
«       Œ` yc c}w c c}w c c}w c c}w c c}w )z`
        we form the data into a 2-d including indexes,values,mask write chunk-by-chunk
        r   ro  Úu1Frâ  rk   Nr  rÞ  )Úindexesrñ  r{  )r>  r{  rÝ  rÂ  r6   r¨  rj  rW   rX   rC  r”   rë  rq   rè  rÁ  r]  rQ  Ú	transposeÚrollÚarangert  ry  r¤  ÚreshaperÔ  r  rs  Úwrite_data_chunk)r×   r«   r‘   r{  r0  Úmasksr¦   rñ  r°  rs  Únindexesr{  r‚  Úbvaluesr|  Ú	new_shapeÚrowsÚchunksÚstart_iÚend_is                       r\   ro  zAppendableTable.write_data¥  s†  € ð —
‘
× Ñ ˆØ×#Ñ#ˆð ˆÙØ×%Ñ%ò @�ô ˜AŸF™F“|×'Ñ'¨QÐ'Ó/�Ü˜d¤B§J¡JÕ/Ø—L‘L §¡¨T¸ Ó!>Õ?ð@ô ˆuŒ:Ø˜‘8ˆDØ˜1˜2�Yò  �Ø˜a‘x‘ð à—:‘:“<‰DàˆDð '+§o¡oÖ6 �1—9“9Ð6ˆÐ6Ü�w“<ˆØ˜1Š}Ð&˜hÓ&ˆ}ð *.×)9Ñ)9Ö: A�!—+‘+•-Ð:ˆÐ:ØOUÖVÈ!�!—+‘+œbŸg™g¤b§i¡i°·±Ó&7¸¿¹À!¹ÓDÕEÐVˆÐVØˆÜ˜fÓ%ò 	1‰DˆAˆqØ˜ 4§:¡:¨e°H¸q±LÑ.AÑ#B×#HÑ#HÑHˆIØ�N‰N˜1Ÿ9™9 YÓ/Õ0ð	1ð
 ÐØˆIä�x‰xœ˜I uÓ-°T·Z±ZÔ@ˆØ˜)Ñ# aÑ'ˆÜ�v“ò 	ˆAØ˜)‘mˆGÜ˜˜Q™ )Ñ+¨UÓ3ˆEØ˜%ÒÙà×!Ñ!ØØ3:Ö;¨a˜˜7 5Ò)Ò;Ø,0Ð,<�T˜' %Ñ(À$Ø29Ö:¨Q˜˜' %Ò(Ò:ð	 "õ ñ	ùò' 7ùò ;ùÚVùò( <ùâ:s   ÃJÄJ
Ä1AJÉJÉ.Jc                ó†  — |D ]#  }t        j                  |j                  «      rŒ# y |d   j                  d   }|t        |«      k7  r!t        j                  || j
                  ¬«      }| j
                  j                  }t        |«      }t        |«      D ]  \  }	}
|
|||	   <   Œ t        |«      D ]  \  }	}||||	|z      <   Œ |�;|j                  «       j                  t        d¬«       }|j                  «       s||   }t        |«      r6| j                  j                  |«       | j                  j                  «        yy)zê
        Parameters
        ----------
        rows : an empty memory space where we are putting the chunk
        indexes : an array of the indexes
        mask : an array of the masks
        values : an array of the values
        Nr   rÞ  Frâ  )rX   r„  r¤  rq   rÔ  r>  r{  ry  rè  rë  r  rj  rz   r”   r   )r×   r}  rs  rñ  r{  r‚  r0  r{  rz  r|  r{  r°  s               r\   rx  z AppendableTable.write_data_chunkà  s.  € ð  ò 	ˆAÜ—7‘7˜1Ÿ7™7Õ#Ùð	ð ˜‘
× Ñ  Ñ#ˆØ”C˜“IÒÜ—8‘8˜E¨¯©Ô4ˆDØ—
‘
× Ñ ˆÜ�w“<ˆô   Ó(ò 	!‰FˆAˆsØ ˆD��q‘ŠNð	!ô ˜fÓ%ò 	*‰DˆAˆqØ()ˆD��q˜8‘|Ñ$Ò%ð	*ð ÐØ—‘“×$Ñ$¤T°Ð$Ó6Ð6ˆAØ—5‘5”7Ø˜A‘w�äˆtŒ9Ø�J‰J×Ñ˜dÔ#Ø�J‰J×ÑÕð r^   c                óÚ  — |�t        |«      s€|€7|€5| j                  }| j                  j                  | j                  d¬«       |S |€| j                  }| j
                  j                  ||¬«      }| j
                  j                  «        |S | j                  «       sy | j
                  }t        | |||¬«      }|j                  «       }t        |d¬«      j                  «       }t        |«      }	|	rù|j                  «       }
t        |
|
dkD     j                  «      }t        |«      sdg}|d   |	k7  r|j!                  |	«       |d   dk7  r|j#                  dd«       |j%                  «       }t'        |«      D ]U  }|j)                  t+        ||«      «      }|j                  ||j                  d      ||j                  d      dz   ¬«       |}ŒW | j
                  j                  «        |	S )	NTr\  rh  Frâ  rk   r   rß  )rq   r0  rÊ   rÜ  rÅ   rz   Úremove_rowsr   r2  r  r^  r2   Úsort_valuesÚdiffrn   rŽ   r”   rU  rP  Úreversedrz  rs  )r×   rr   r§   r¨   r0  rz   r  r{  Úsorted_seriesÚlnr…  r¶   Úpgr  r}  s                  r\   rc  zAppendableTable.delete  sÔ  € àˆ=¤ E¤
Øˆ}  ØŸ
™
�Ø—‘×(Ñ(¨¯©¸tÐ(ÔDð ˆLð	 �<ØŸ:™:�DØŸ
™
×.Ñ.°UÀÐ.ÓF�Ø—
‘
× Ñ Ô"ØˆLð �‰Ô Øð —
‘
ˆÜ˜d E°¸TÔBˆ	Ø×(Ñ(Ó*ˆô ˜v¨EÔ2×>Ñ>Ó@ˆÜ�Óˆáà ×%Ñ%Ó'ˆDÜ˜$˜t a™x™.×.Ñ.Ó/ˆFô �v”;Ø˜�ð �b‰z˜RÒØ—‘˜bÔ!ð �a‰y˜AŠ~Ø—‘˜a Ô#ð —‘“ˆBÜ˜fÓ%ò �Ø$×)Ñ)¬%°°2«,Ó7�Ø×!Ñ!Ø˜tŸz™z¨!™}Ñ-°D¸¿¹ÀB¹Ñ4HÈ1Ñ4Lð "ô ð ‘ðð �J‰J×ÑÔð ˆ	r^   )NFNNNNNNFNNT)
r”   r  r«   rå  r‘   r  rX  r  ræ  rç  rï  )r«   rå  r‘   r  ræ  rç  )
r}  r�  rs  úlist[np.ndarray]rñ  znpt.NDArray[np.bool_] | Noner{  rŠ  ræ  rç  rð  r<  )	rñ   rú  rû  rü  r·  rÙ  ro  rx  rc  rÍ   r^   r\   r�  r�  d  s©   „ Ù2à€Jð ØØØØØØ $ØØØØØ ð93ð ð	93ð ð93ð ð93ð ð93ð 
ó93ôv9ðv*àð*ð "ð*ð +ð	*ð
 !ð*ð 
ó*õX8r^   r�  c                  óh   — 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y	)rË  rk  r¸  rÂ  r  r  r  c                ó:   — | j                   d   j                  dk(  S )Nr   rk   )rÁ  rD  rÜ   s    r\   rê  z"AppendableFrameTable.is_transposedO  s   € à�‰˜qÑ!×&Ñ&¨!Ñ+Ð+r^   c                ó"   — |r|j                   }|S )zthese are written transposed)rb  r  s      r\   r  zAppendableFrameTable.get_objectS  s   € ñ Ø—%‘%ˆCØˆ
r^   Nc                óò  — | j                  |«       | j                  «       sy | j                  |||¬«      }t        | j                  «      r,| j
                  j                  | j                  d   d   i «      ni }t        | j                  «      D ��cg c]  \  }}|| j                  d   u sŒ|‘Œ }	}}t        |	«      dk(  sJ ‚|	d   }
||
   d   }g }t        | j                  «      D �]<  \  }}|| j                  vrŒ||   \  }}|j                  d«      dk7  rt        |«      }nt        j                  |«      }|j                  d«      }|�|j                  |d¬«       | j                  r|}|}t        |t!        |d	d «      ¬
«      }n&|j"                  }t        |t!        |d	d «      ¬
«      }|}|j$                  dk(  r:t'        |t(        j*                  «      r |j-                  d|j.                  d   f«      }t'        |t(        j*                  «      r	 t1        |j"                  ||d¬«      }n8t'        |t        «      rt1        |||¬«      }nt1        jB                  |g||¬«      }tE        «       r|jF                  jH                  dk(  sD|jJ                  |jF                  k(  jM                  «       sJ |jJ                  |jF                  f«       ‚|D ]B  }t!        | jN                  jP                  |› d�d «      }|dv sŒ,||   jS                  |«      ||<   ŒD |jU                  |«       �Œ? t        |«      dk(  r|d   }ntW        |d¬«      }tY        | |||¬«      }| j[                  |||¬«      }|S c c}}w # t2        $ rz}| j4                  dk(  r_t7        d«      rTt9        |«      j;                  d«      r:t<        r4t1        |j"                  ||dt?        dt(        j@                  ¬«      ¬«      }n‚ Y d }~�ŒŒd }~ww xY w)Nr7  r   rk   rð   r/   r{  T©Úinplacerh   rg   Fr«  r;  r<  r=  r?  r@  )r©   rŽ   r©  r>  r¬  rã  r¡  )rf   r`  ro  )r  r©   ).r3  r2  r  rq   rO  r±  rå   ry  rf  rÁ  rÂ  r.   r/   Úfrom_tuplesÚ	set_namesrê  r•  rb  rt  rW   rX   rC  rw  r¤  r,   rG  r“   r   rf   rà  r   r3   rH  Ú_from_arraysr   r>  r�  Údtypesrj  rz   rS  rë  r”   r5   r  rX  )r×   rr   r©   r§   r¨   rQ  r±  r|  r¯  ÚindsÚindrŽ   Úframesr¦   Ú
index_valsr]  rm  r{  r{  Úindex_Úcols_r²  rd  r=  r>  r  s                             r\   r*  zAppendableFrameTable.readZ  s£  € ð 	×Ñ˜eÔ$ð �‰Ô Øà—‘ u°EÀ�ÓEˆô �4×&Ñ&Ô'ð �I‰I�M‰M˜$×-Ñ-¨aÑ0°Ñ3°RÔ8àð 	ô  )¨¯©Ó3×P‘e�a˜°r¸T¿_¹_ÈQÑ=OÒ7O’ÐPˆÑPÜ�4‹y˜AŠ~Ðˆ~Ø�1‰gˆà�s‘˜A‘ˆàˆÜ˜dŸi™iÓ(ó =	‰DˆAˆqØ˜×(Ñ(Ñ(ØØ"(¨¡)ÑˆJ˜ð �x‰x˜Ó <Ò/Ü˜ZÓ(‘ä!×-Ñ-¨jÓ9�à—H‘H˜WÓ%ˆEØÐ Ø—‘˜u¨d�Ô3à×!Ò!Ø �Ø�Ü˜e¬'°%¸ÀÓ*FÔG‘à Ÿ™�Ü˜u¬7°5¸&À$Ó+GÔH�Ø�ð �{‰{˜aÒ¤J¨v´r·z±zÔ$BØŸ™¨¨F¯L©L¸©OÐ(<Ó=�ä˜&¤"§*¡*Ô-ðÜ" 6§8¡8°UÀ&ÈuÔU‘Bô" ˜F¤EÔ*Ü˜v¨u¸FÔC‘ô ×+Ñ+¨V¨H¸eÈ6ÔR�Ü&Ô(¨V¯\©\×->Ñ->À#Ò-EØŸ	™	 V§\¡\Ñ1×6Ñ6Ô8ÐS¸2¿9¹9ÀfÇlÁlÐ:SÓSÐ8ð  ò :�Ü §
¡
× 0Ñ 0°V°H¸EÐ2BÀDÓI�ØÐ-Ò-Ø!# F¡×!2Ñ!2°5Ó!9�B�v’Jð:ð �M‰M˜"Öð{=	ô~ ˆv‹;˜!ÒØ˜‘‰Bä˜ QÔ'ˆBä˜d¨%°uÀ4ÔHˆ	à×Ñ˜r¨YÀÐÓHˆØˆ	ùó] QøôN *ò àŸ™ Ò6Ü&Ð'<Ô=Ü ›H×-Ñ-Ð.FÔGÝ'ä&Ø"ŸH™HØ$)Ø"(Ø!&Ü"-°hÌÏÉÔ"Pô™ð õ ûðús%   ÂM-Â,M-ÈM3Í3	O6Í<A/O1Ï1O6rî  re  r;  r<  )rñ   rú  rû  rü  r  r·  rt  r,   r  rý  rþ  rê  rô  r  r*  rÍ   r^   r\   rË  rË  G  so   … Ù2à€KØ#€JØ€DØ)2€HÐ&Ó2àò,ó ð,ð òó ðð ØØ Øðdð ð	dð
 ôdr^   rË  c                  óz   ‡ — 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É  rk  r¿  rÀ  r  c                 ó   — yr”  rÍ   rÜ   s    r\   rê  z#AppendableSeriesTable.is_transposedÉ  r•  r^   c                ó   — |S r`   rÍ   r  s      r\   r  z AppendableSeriesTable.get_objectÍ  s   € àˆ
r^   c                ó¼   •— t        |t        «      s!|j                  xs d}|j                  |«      }t	        ‰| �  d||j                  j                  «       dœ|¤Ž y)ú+we are going to write this as a frame tabler{  ©rÕ  r’   NrÍ   )rW   r,   rh   Úto_framer›  rÙ  r©   r@  )r×   rÕ  r’   r¼   rh   rœ  s        €r\   rÙ  zAppendableSeriesTable.writeÒ  sL   ø€ ä˜#œyÔ)Ø—8‘8Ò'˜xˆDØ—,‘,˜tÓ$ˆCÜ‰‰ÐK˜#¨C¯K©K×,>Ñ,>Ó,@ÑKÀFÓKr^   c                óf  •— | j                   }|�F|rDt        | j                  t        «      sJ ‚| j                  D ]  }||vsŒ|j	                  d|«       Œ t
        ‰| �  ||||¬«      }|r|j                  | j                  d¬«       |j                  d d …df   }|j                  dk(  rd |_	        |S )Nr   rC  Tr�  r{  )
rÕ  rW   rz  rn   rU  r›  r*  Ú	set_indexr_  rh   )	r×   rr   r©   r§   r¨   rÕ  r  r[   rœ  s	           €r\   r*  zAppendableSeriesTable.readÙ  s¯   ø€ ð ×,Ñ,ˆØÐ¡>Ü˜dŸk™k¬4Ô0Ð0Ð0Ø—[‘[ò )�Ø˜GÒ#Ø—N‘N 1 aÕ(ð)ô ‰G‰L˜u¨g¸UÈˆLÓNˆÙØ�K‰K˜Ÿ™¨TˆKÔ2à�F‰F’1�a�4‰Lˆð �6‰6�XÒØˆAŒFØˆr^   rî  re  r`   rí  r;  r¢  )rñ   rú  rû  rü  r  r·  rt  r2   r  rþ  rê  rô  r  rÙ  r*  rõ  rö  s   @r\   rÉ  rÉ  Á  s|   ø„ Ù2à €KØ$€JØ€DØ€Hàòó ðð òó ðöLð ØØ Øðð ð	ð
 ðð 
÷ñ r^   rÉ  c                  ó,   ‡ — e Zd ZdZdZdZdˆ fd„Zˆ xZS )rÊ  rk  r¿  rÁ  c                ó  •— |j                   xs d}| j                  |«      \  }| _        t        | j                  t        «      sJ ‚t	        | j                  «      }|j                  |«       t        |«      |_        t        ‰| �$  dd|i|¤Ž y)rŸ  r{  rÕ  NrÍ   )
rh   rÚ  rz  rW   rn   r”   r.   r©   r›  rÙ  )r×   rÕ  r¼   rh   Únewobjrm  rœ  s         €r\   rÙ  z AppendableMultiSeriesTable.writeù  su   ø€ à�x‰xÒ#˜8ˆØ"×6Ñ6°sÓ;Ñˆ�”Ü˜$Ÿ+™+¤tÔ,Ð,Ð,Ü�D—K‘KÓ ˆØ�‰�DÔÜ˜t›ˆŒÜ‰‰Ñ+˜&Ð+ FÓ+r^   rí  )rñ   rú  rû  rü  r  r·  rÙ  rõ  rö  s   @r\   rÊ  rÊ  ò  s   ø„ Ù2à €KØ)€J÷,ñ ,r^   rÊ  c                  ón   — 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y)rÈ  z:a table that read/writes the generic pytables table formatr¸  r¹  r  zlist[Hashable]rz  c                ó   — | j                   S r`   )r  rÜ   s    r\   r‘  zGenericTable.pandas_type  s   € à×ÑÐr^   c                óL   — t        | j                  dd «      xs | j                  S rà  rá  rÜ   s    r\   r-  zGenericTable.storable  s   € ä�t—z‘z 7¨DÓ1Ò?°T·Z±ZÐ?r^   c                óN  — g | _         d| _        g | _        | j                  D �cg c]  }|j                  sŒ|‘Œ c}| _        | j                  D �cg c]  }|j                  rŒ|‘Œ c}| _        | j                  D �cg c]  }|j                  ‘Œ c}| _        yc c}w c c}w c c}w )r[  N)	rO  r�   rz  rÿ  r
  rÁ  rÂ  rh   r’   rì  s     r\   r*  zGenericTable.get_attrs  s~   € à ˆÔØˆŒØˆŒà&*§o¡oÖK ¸×9JÓ9Jš1ÒKˆŒØ'+§¡ÖP !¸a×>OÓ>OšAÒPˆÔØ-1×-=Ñ-=Ö>¨˜QŸV›VÒ>ˆÕùò LùÚPùÚ>s   ¤B¶BÁBÁ"BÁ<B"c           
     ó†  — | j                   }| j                  d«      }|�dnd}t        dd| j                  ||¬«      }|g}t	        |j
                  «      D ]h  \  }}t        |t        «      sJ ‚t        ||«      }| j                  |«      }|�dnd}t        |||g|| j                  ||¬«      }	|j                  |	«       Œj |S )z0create the indexables from the table descriptionrŽ   Nr…  r   )rh   rD  rz   rÁ   r  )rh   r  r{  r  rz   rÁ   r  )rW  r‰  r’  rz   ry  Ú_v_namesrW   rf   r•  r  r”   )
r×   r  r	  rÁ   r  r  r|  r  r¹  r‡  s
             r\   rÿ  zGenericTable.indexables  sß   € ð ×Ñˆð
 ×Ñ Ó(ˆØ˜^‰z°ˆÜ#Ø˜q¨¯
©
¸Èô
ˆ	ð IRÀ{ˆä˜aŸj™jÓ)ò 	#‰DˆAˆqÜ˜a¤Ô%Ð%Ð%ä˜1˜a“=ˆDØ×#Ñ# AÓ&ˆBØ!# ‘:°TˆDÜ(ØØØ�sØØ—j‘jØØôˆBð ×Ñ˜rÕ"ð	#ð" Ðr^   c                ó   — t        d«      ‚)Nz cannot write on an generic tabler6  )r×   r¼   s     r\   rÙ  zGenericTable.writeC  s   € Ü!Ð"DÓEÐEr^   Nrè  rí  )rñ   rú  rû  rü  r  r·  rt  r,   r  rý  rþ  r‘  r-  r*  r   rÿ  rÙ  rÍ   r^   r\   rÈ  rÈ    sg   … ÙDà€KØ €JØ€DØ€HØÓàò ó ð ð ñ@ó ð@ó?ð ñ ó ð ôFFr^   rÈ  c                  ó„   ‡ — e Zd ZdZdZeZdZ ej                  d«      Z
edd„«       Zd	d
ˆ fd„Z	 	 	 	 d	 	 	 dˆ fd„Zˆ xZS )rÌ  za frame with a multi-indexrÃ  r  z^level_\d+$c                 ó   — y)NÚappendable_multirÍ   rÜ   s    r\   rÅ  z*AppendableMultiFrameTable.table_type_shortO  s   € à!r^   c                ó*  •— |€g }n|du r|j                   j                  «       }| j                  |«      \  }| _        t	        | j                  t
        «      sJ ‚| j                  D ]  }||vsŒ|j                  d|«       Œ t        ‰| �   d||dœ|¤Ž y )NTr   r   rÍ   )	r©   r@  rÚ  rz  rW   rn   rU  r›  rÙ  )r×   rÕ  r’   r¼   r  rœ  s        €r\   rÙ  zAppendableMultiFrameTable.writeT  s–   ø€ ØÐØ‰LØ˜TÑ!ØŸ;™;×-Ñ-Ó/ˆLØ×3Ñ3°CÓ8ÑˆˆTŒ[Ü˜$Ÿ+™+¤tÔ,Ð,Ð,Ø—‘ò 	*ˆAØ˜Ò$Ø×#Ñ# A qÕ)ð	*ô 	‰‰ÐC˜#¨LÑC¸FÓCr^   c                ó,  •— t         ‰| �  ||||¬«      }|j                  | j                  «      }|j                  j                  |j                  j                  D �cg c]!  }| j                  j                  |«      rd n|‘Œ# c}«      |_        |S c c}w )NrC  )	r›  r*  r£  rz  rŽ   r’  r{  Ú
_re_levelsÚsearch)r×   rr   r©   r§   r¨   r²  rh   rœ  s          €r\   r*  zAppendableMultiFrameTable.read`  s~   ø€ ô ‰W‰\ ¨w¸eÈ$ˆ\ÓOˆØ�\‰\˜$Ÿ+™+Ó&ˆð —8‘8×%Ñ%ØHJÏÉÏÉÖWÀ�T—_‘_×+Ñ+¨DÔ1‰T°tÑ;ÒWó
ˆŒð ˆ	ùò Xs   Á&Brè  r`   rí  r;  r<  )rñ   rú  rû  rü  r·  r,   r  rt  ÚreÚcompiler³  rþ  rÅ  rÙ  r*  rõ  rö  s   @r\   rÌ  rÌ  G  si   ø„ Ù$à(€JØ€HØ€DØ�—‘˜NÓ+€Jàò"ó ð"ö
Dð ØØ Øðð ð	ð
 ÷ñ r^   rÌ  c                ó¾  — | j                  |«      }t        |«      }|�t        |«      }|�|j                  |«      r|j                  |«      r| S t        |j                  «       «      }|�*t        |j                  «       «      j	                  |d¬«      }|j                  |«      s7t        d d «      g| j                  z  }|||<   | j                  t        |«         } | S )NF)Úsort)	rL  r?   ÚequalsÚuniquer|  Úslicert  r}  ro   )rÕ  rD  rW  r*  r¯  Úslicers         r\   r'  r'  r  sÈ   € ð 
�‰�tÓ	€BÜ˜&Ó!€Fð ÐÜ˜UÓ#ˆØˆ˜Ÿ™ uÔ-°6·=±=ÀÔ3DØˆ
ä˜&Ÿ-™-›/Ó*€FØÐÜ˜eŸl™l›nÓ-×:Ñ:¸6ÈÐ:ÓNˆØ�=‰=˜ÔÜ',¨T°4Ó'8Ð&9¸C¿H¹HÑ&DˆØˆˆt‰Ø�g‰g”e˜F“mÑ$ˆØ€Jr^   c                ó0   — t        j                  | «      }|S )z+for a tz-aware type, return an encoded zone)r   Úget_timezone)r  Úzones     r\   rr  rr  Œ  s   € ä×!Ñ! "Ó%€DØ€Kr^   c                 ó   — y r`   rÍ   ©r{  r  rÛ  s      r\   rI  rI  ’  s   € ð r^   c                 ó   — y r`   rÍ   rÁ  s      r\   rI  rI  ™  s   € àr^   c                ó„  — t        | t        «      r+| j                  �| j                  |k(  sJ ‚| j                  �| S |�it        | t        «      r| j                  }nd}| j	                  «       } t        |«      }t        | |¬«      } | j                  d«      j                  |«      } | S |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
    Nrg   rL  úM8[ns]rÞ  )
rW   r-   r  rh   rè  r]   rN  rO  rX   rå  )r{  r  rÛ  rh   s       r\   rI  rI  ž  sµ   € ô �&œ-Ô(ð �y‰yÐ  F§I¡I°¢OÐ3Ð3Ø�9‰9Ð ØˆMà	€~Ü�fœmÔ,Ø—;‘;‰DàˆDØ—\‘\“^ˆFä˜RÓ ˆÜ˜v¨DÔ1ˆØ×#Ñ# EÓ*×5Ñ5°bÓ9ˆð €Mñ 
Ü—‘˜F¨(Ô3ˆð €Mr^   c                óz  — t        | t        «      sJ ‚|j                  }t        |«      \  }}t	        |«      }t
        j                  |«      }t        j                  |j                  d«      s*t        |j                  «      st        |j                  «      r(t        | |||t        |dd «      t        |dd «      |¬«      S t        |t        «      rt        d«      ‚t        j                   |d¬«      }	t#        j$                  |«      }
|	dk(  rgt#        j$                  |
D �cg c]  }|j'                  «       ‘Œ c}t"        j(                  ¬	«      }t        | |dt+        «       j-                  «       |¬
«      S |	dk(  rJt/        |
||«      }|j                  j0                  }t        | |dt+        «       j3                  |«      |¬
«      S |	dv rt        | ||||¬«      S t        |t"        j4                  «      r|j                  t6        k(  sJ ‚|dk(  sJ |«       ‚t+        «       j9                  «       }t        | ||||¬
«      S c c}w )NÚiur  r  )r{  r�  r  r  r  r  zMultiIndex not supported here!FrŒ  r   rÞ  )r  r`  )ÚintegerÚfloating)r{  r�  r  r  rŽ  )rW   rf   rh   r¨  r©  rø  rº  r   rF  r>  r&   r"   r	  r•  r/   r´   r“  rX   rå  Ú	toordinalÚint32rŠ   Ú	Time32ColÚ_convert_string_arrayr  ra  rC  rŽ  r•  )rh   rŽ   rc   r“   r  rð  rª  r�  r¹  rœ  r{  r‚  r  s                r\   rp  rp  Å  sÿ  € Ü�dœCÔ Ð Ð à—‘€Jô 5°UÓ;Ñ€IˆzÜ˜*Ó%€DÜ×%Ñ% iÓ0€Dô 	�‰˜Ÿ™ TÔ*Ü˜uŸ{™{Ô+Ü˜Ÿ™Ô%ô
 ØØØØÜ˜ ¨Ó-Ü�u˜d DÓ)Ø!ô
ð 	
ô �%œÔ$ÜÐ8Ó9Ð9ä—O‘O E°%Ô8€Mô �Z‰Z˜Ó€Fà˜ÒÜ—J‘J°vÖ>°! §¡¥Ò>ÄbÇhÁhÔOˆ	ÜØ�)˜V¤W£Y×%8Ñ%8Ó%:Àzô
ð 	
ð 
˜(Ò	"Ü)¨&°(¸FÓCˆ	Ø—?‘?×+Ñ+ˆÜØØØÜ‹I×Ñ Ó)Ø!ô
ð 	
ð 
Ð1Ñ	1ÜØ˜¨°4ÀJô
ð 	
ô ˜)¤R§Z¡ZÔ0°Y·_±_ÌÒ5NÐNÐNØ�xÒÐ% Ó%ÐÜ‹y×#Ñ#Ó%ˆÜ˜˜i¨¨tÀ
ÔKÐKùò/  ?s   ÄH8c           	     ó”  — |j                  d«      r.|dk(  rt        | «      }|S t        | j                  |«      «      }|S |dk(  rt        | «      }|S |dk(  r?	 t	        j
                  | D �cg c]  }t        j                  |«      ‘Œ c}t        ¬«      }|S |dv rt	        j
                  | «      }|S |dv rt        | d ||¬«      }|S |dk(  rt	        j
                  | d	   «      }|S t        d
|› �«      ‚c c}w # t        $ rF t	        j
                  | D �cg c]  }t        j                  |«      ‘Œ nc c}w c}t        ¬«      }Y |S w xY w)NrÙ  rÜ  r   rÞ  )rÇ  Úfloatr  r`  rä  rŽ  r   zunrecognized index type )rŸ  r-   r–  r4   rX   rå  r   ræ  rŽ  r­   rç  rï  )r¨  r�  rc   r“   rŽ   r‚  s         r\   r…  r…    s^  € ð ‡��|Ô$Ø�<Òä! $Ó'ˆEð( €Lô% " $§)¡)¨D£/Ó2ˆEð$ €Lð# 
�Ò	Ü˜tÓ$ˆð  €Lð 
�Šð	TÜ—J‘J¸TÖB¸¤× 0Ñ 0°Õ 3ÒBÌ&ÔQˆEð €Lð 
Ð-Ñ	-Ü—
‘
˜4Ó ˆð €Lð 
�(Ñ	Ü'Ø˜$¨¸&ô
ˆð €Lð	 
�Ò	Ü—
‘
˜4 ™7Ó#ˆð €Lô Ð3°D°6Ð:Ó;Ð;ùò  CøÜò 	TÜ—J‘J¸tÖD¸!¤× 2Ñ 2°1Õ 5ÑDùÔDÌFÔS‰Eð €Lð	Tús0   ÁC8 Á+C3ÂC8 Ã3C8 Ã8EÄD1
Ä0EÅEc                ó†  — t        |j                  t        «      r|j                  «       }|j                  t        k7  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        |«      }
|j                  «       }|||
<   |r3|
j                  «       r#t        |«      |j                   kD  rt#        d	«      ‚t        j                  |d¬«      }	|	dk7  rht%        |j&                  d
   «      D ]M  }||   }t        j                  |d¬«      }	|	dk7  sŒ%t        |«      |kD  r||   nd|› �}t        d|› d|	› d�«      ‚ t)        |||«      j+                  |j&                  «      }|j                   }t        |t,        «      r1t/        |j1                  | «      xs |j1                  d«      xs d
«      }t3        |xs d
|«      }|�|j5                  |«      }|�||kD  r|}|j7                  d|› �d¬«      }|S )NFrŒ  r   z+[date] is not implemented as a table columnr?  z>too many timezones in this block, create separate data columnsr`  rŽ  z8NaN representation is too large for existing column sizer   zNo.rÎ  z2]
because its data contents are not [string] but [rÏ  r{  z|Srâ  )rW   r>  r3   r™  rŽ  r   rX   rC  rh   r   r“  r´   r6   r©  rê  rq   r  r­   rs  r¤  rÌ  rw  rp  rë  rå   r[  rg  rë  )rh   r{  r$  r�   r�   rc   r“   r©   rª  rœ  rñ  r¨  r|  rZ  Úerror_column_labelr8  r  Úecis                     r\   r*  r*  "  sB  € ô �'—-‘-¤Ô-à×"Ñ"Ó$ˆØ‡}�}œÒØˆä”2—:‘:˜wÓ'€Gà—‘×#Ñ#€JÜ—O‘O G°EÔ:€Mà˜ÒÜÐEÓFÐFØ˜
Ò"ô ØLó
ð 	
ð ˜XÒ%¨°xÒ)?Øˆä�‹=€DØ�<‰<‹>€DØ€Dˆ�Já˜Ÿ™œ
¤s¨7£|°l×6KÑ6KÒ'KÜÐSÓTÐTô —O‘O D°Ô7€MØ˜Ò ô �t—z‘z !‘}Ó%ò 		ˆAØ�q‘'ˆCÜŸO™O¨C¸Ô>ˆMØ Ó(Ü36°w³<À!Ò3C W¨Q¢ZÈ3ÈqÈcÈÐ"ÜØ3Ð4FÐ3Gð Hà%� nð6óð ð		ô +¨4°¸6ÓB×JÑJÈ4Ï:É:ÓV€NØ×&Ñ&€Hô �,¤Ô%Ü˜<×+Ñ+¨DÓ1ÒT°\×5EÑ5EÀhÓ5OÒTÐSTÓUˆÜ�<Ò$ 1 hÓ/€Hð ÐØ×'Ñ'¨Ó1ˆØˆ?˜s Xš~ØˆHà#×*Ñ*¨R°¨z¨?ÀÐ*ÓG€NØÐr^   c                ór  — t        | «      rYt        | j                  «       dd¬«      j                  j	                  ||«      j
                  j                  | j                  «      } t        | j                  «       «      }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Ž  )r©  r>  rk   ÚSrÞ  )rq   r2   rè  rf   Úencoderí  rw  r¤  r!   r[  Ú
libwritersÚmax_len_string_arrayrX   rå  )r¨  rc   r“   Úensuredr  s        r\   rÌ  rÌ  q  sˆ   € ô  ˆ4„yä�4—:‘:“< e°8Ô<ß‰S—‘˜ &Ó)ß‰W—W‘W˜TŸZ™ZÓ(ð 	ô ˜DŸJ™J›LÓ)€GÜ�1”j×5Ñ5°gÓ>Ó?€Hä�:‰:�d A h Z .Ô1€DØ€Kr^   c                ó*  — | j                   }t        j                  | j                  «       t        ¬«      } t        | «      r©t        j                  t        | «      «      }d|› �}t        | d   t        «      rKt        | d¬«      j                  j                  ||d¬«      }|j                  «       } d| j                  _        n(| j#                  |d¬«      j#                  t        d¬«      } |€d	}t        j$                  | |«       | 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Ž  )r“   r>  TrH  )r¤  rX   rå  rè  rŽ  rq   rÕ  rÖ  r!   rW   rT  r2   rf   rZ   r™  ÚflagsÚ	writeablerë  Ú!string_array_replace_from_nan_reprw  )r¨  r�   rc   r“   r¤  r  r>  Úsers           r\   rï  rï  �  så   € ð& �J‰J€EÜ�:‰:�d—j‘j“l¬&Ô1€Dä
ˆ4„yÜ×2Ñ2´=ÀÓ3FÓGˆØ�H�:�ˆä�d˜1‘gœuÔ%Ü˜ EÔ*×.Ñ.×5Ñ5Ø ¨xð 6ó ˆCð —<‘<“>ˆDØ#'ˆD�J‰JÕ à—;‘;˜u¨5�;Ó1×8Ñ8¼ÀeÐ8ÓLˆDà€Øˆä×0Ñ0°°wÔ?Ø�<‰<˜ÓÐr^   c                ó†   — t        |t        «      sJ t        |«      «       ‚t        |«      rt	        |||«      } || «      } | S r`   )rW   rf   rð   Ú_need_convertÚ_get_converter)r{  rJ  rc   r“   Úconvs        r\   rE  rE  º  s?   € Ü�h¤Ô$Ð4¤d¨8£nÓ4Ð$Ü�XÔÜ˜h¨°&Ó9ˆÙ�f“ˆØ€Mr^   c                ó\   ‡ ‡‡— ‰ dk(  rd„ S d‰ v rˆ fd„S ‰ dk(  rˆˆfd„S t        d‰ › �«      ‚)NrÙ  c                ó0   — t        j                  | d¬«      S )NrÄ  rÞ  ©rX   rå  )rS  s    r\   r™   z _get_converter.<locals>.<lambda>Ä  s   € œŸ™ A¨XÔ6€ r^   c                ó2   •— t        j                  | ‰¬«      S )NrÞ  rä  )rS  r�  s    €r\   r™   z _get_converter.<locals>.<lambda>Æ  s   ø€ œŸ™ A¨TÔ2€ r^   r`  c                ó"   •— t        | d ‰‰¬«      S )Nrä  )rï  )rS  rc   r“   s    €€r\   r™   z _get_converter.<locals>.<lambda>È  s   ø€ Ô0Ø�t h°vô
€ r^   zinvalid kind )r­   )r�  rc   r“   s   ```r\   rà  rà  Â  sE   ú€ Øˆ|ÒÙ6Ð6Ø	˜Ñ	Û2Ð2Ø	�Ò	ô
ð 	
ô ˜=¨¨Ð/Ó0Ð0r^   c                ó   — | dv sd| v ryy)N)rÙ  r`  rÙ  TFrÍ   r¯  s    r\   rß  rß  Ï  s   € ØÐ'Ñ'¨<¸4Ñ+?ØØr^   c                óè   — t        |t        «      st        |«      dk  rt        d«      ‚|d   dk(  r@|d   dk  r8|d   dk(  r0t	        j
                  d| «      }|r|j                  «       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_)rW   rf   rq   r­   rµ  r´  r¶   )rh   r  r°  Úgrps       r\   r  r  Õ  sx   € ô �'œ3Ô¤3 w£<°!Ò#3ÜÐQÓRÐRàˆq�z�Q‚˜7 1™:¨Ò+°¸±
¸a²Ü�I‰IÐ+¨TÓ2ˆÙØ—(‘(“*˜Q‘-ˆCØ˜S˜E�?ˆDØ€Kr^   c                óÔ  — t        | «      } | j                  d«      rd}|S | j                  d«      rd}|S | j                  d«      rd}|S | j                  d«      rd}|S | j                  d«      r| }|S | j                  d«      rd	}|S | j                  d
«      rd
}|S | j                  d«      rd}|S | j                  d«      rd}|S | dk(  rd}|S | dk(  rd}|S t        d| › d�«      ‚)zA
    Find the "kind" string describing the given dtype name.
    )r`  rT  r`  rÎ  r  )rë  r¿  rÇ  rÙ  Ú	timedeltarÜ  r  r…  rÂ  rŽ  rf   zcannot interpret dtype of [rA  )r]   rŸ  r­   )Ú	dtype_strr�  s     r\   r©  r©  î  sL  € ô   	Ó*€Ià×ÑÐ/Ô0Øˆð2 €Kð1 
×	Ñ	˜gÔ	&Øˆð. €Kð- 
×	Ñ	˜iÔ	(Øˆð* €Kð) 
×	Ñ	˜oÔ	.Øˆð& €Kð% 
×	Ñ	˜lÔ	+Øˆð" €Kð! 
×	Ñ	˜kÔ	*Øˆð €Kð 
×	Ñ	˜fÔ	%Øˆð €Kð 
×	Ñ	˜jÔ	)Øˆð €Kð 
×	Ñ	˜hÔ	'àˆð €Kð 
�hÒ	Øˆð €Kð 
�eÒ	Øˆð €Kô Ð6°y°kÀÐCÓDÐDr^   c                ó´  — t        | t        «      r| j                  } t        | j                  t        «      rd| j                  j
                  › d�}n| j                  j                  }| j                  j                  dv r%t        j                  | 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Ž  rA  ÚmMr6  )rW   r7   r³  r>  r(   r˜  rh   r�  rX   rå  r–  r0   r—  )r¨  rª  s     r\   r¨  r¨    s�   € ô �$œÔ$Ø�z‰zˆä�$—*‘*œoÔ.à" 4§:¡:§?¡?Ð"3°1Ð5‰
à—Z‘Z—_‘_ˆ
à‡z�z‡�˜$ÑÜ�z‰z˜$Ÿ)™) D›/Ó*‰ô 
�Dœ+Ô	&Ø�y‰yˆä�:‰:�dÓ€DØ�ÐÐr^   c                  ó@   — e Zd ZdZ	 	 	 d	 	 	 	 	 	 	 dd„Zd„ Zd„ Zd„ Zy)	r  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

    Nc                óè  — || _         || _        || _        || _        d | _        d | _        d | _        d | _        t        |«      �rKt        t        «      5  t        j                  |d¬«      }|dv �rt        j                  |«      }|j                  t        j                   k(  rS| j                  | j                  }}|€d}|€| j                   j"                  }t        j$                  ||«      |   | _        n’t'        |j                  j(                  t        j*                  «      rd| j                  �|| j                  k  j-                  «       s)| j                  �(|| j                  k\  j-                  «       rt        d«      ‚|| _        d d d «       | j                  €K| j/                  |«      | _        | j                  �(| j                  j1                  «       \  | _        | _        y y y # 1 sw Y   ŒaxY w)NFrŒ  )rÇ  Úbooleanr   z3where must have index locations >= start and < stop)rz   rr   r§   r¨   Ú	conditionrV  ÚtermsrI  r$   r   r­   r   r“  rX   rå  r>  Úbool_r0  rv  Ú
issubclassrð   rÇ  rê  ÚgenerateÚevaluate)r×   rz   rr   r§   r¨   Úinferreds         r\   rÙ   zSelection.__init__6  s�  € ð ˆŒ
ØˆŒ
ØˆŒ
ØˆŒ	ØˆŒØˆŒØˆŒ
ØˆÔä˜Õäœ*Ó%ñ 1ÜŸ?™?¨5¸Ô?�ØÐ5Ò5ÜŸJ™J uÓ-�EØ—{‘{¤b§h¡hÒ.Ø&*§j¡j°$·)±)˜t˜Ø ˜=Ø$%˜EØ˜<Ø#'§:¡:×#3Ñ#3˜DÜ+-¯9©9°U¸DÓ+AÀ%Ñ+H˜Õ(Ü# E§K¡K×$4Ñ$4´b·j±jÔAØ ŸJ™JÐ2¸ÀÇ
Á
Ñ8J×7OÑ7OÔ7QØ ŸI™IÐ1°uÀÇ	Á	Ñ7I×6NÑ6NÔ6Pä",Ø Uó#ð ð ,1˜Ô(÷%1ð( ×ÑÐ#ØŸ™ uÓ-ˆDŒJð �z‰zÐ%Ø.2¯j©j×.AÑ.AÓ.CÑ+�” ¥ð &ð	 $÷)1ð 1ús   ÁD4G(Ç(G1c                ó  — |€y| j                   j                  «       }	 t        ||| j                   j                  ¬«      S # t        $ rB}dj                  |j                  «       «      }t        d|› d|› d�«      }t        |«      |‚d}~ww xY w)z'where can be a : dict,list,tuple,stringN)rô  rc   r  z-                The passed where expression: a*  
                            contains an invalid variable reference
                            all of the variable references must be a reference to
                            an axis (e.g. 'index' or 'columns'), or a data_column
                            The currently defined references are: z
                )	rz   rô  r;   rc   Ú	NameErrorr!  r  r   r­   )r×   rr   r  rd  Úqkeysr  s         r\   rø  zSelection.generatec  sœ   € àˆ=Øà�J‰J×!Ñ!Ó#ˆð	+Ü °!¸d¿j¹j×>QÑ>QÔRÐRøÜò 	+ð —H‘H˜QŸV™V›XÓ&ˆEÜð.Ø.3¨Wð 5Cð DIÀ'ð JðóˆCô ˜S“/ sÐ*ûð	+ús   Ÿ!A Á	BÁ
=BÂBc                ó®  — | j                   �T| j                  j                  j                  | j                   j                  «       | j                  | j
                  ¬«      S | j                  �/| j                  j                  j                  | j                  «      S | j                  j                  j                  | j                  | j
                  ¬«      S )ú(
        generate the selection
        rh  )	rô  rz   Ú
read_wherer�   r§   r¨   rI  r9  r*  rÜ   s    r\   r¹   zSelection.selectz  s£   € ð �>‰>Ð%Ø—:‘:×#Ñ#×.Ñ.Ø—‘×%Ñ%Ó'¨t¯z©zÀÇ	Á	ð /ó ð ð ×ÑÐ)Ø—:‘:×#Ñ#×4Ñ4°T×5EÑ5EÓFÐFØ�z‰z×Ñ×$Ñ$¨4¯:©:¸D¿I¹IÐ$ÓFÐFr^   c                ó�  — | j                   | j                  }}| j                  j                  }|€d}n
|dk  r||z  }|€|}n
|dk  r||z  }| j                  �A| j                  j                  j                  | j                  j                  «       ||d¬«      S | j                  �| j                  S t        j                  ||«      S )rÿ  r   T)r§   r¨   r¸  )
r§   r¨   rz   r0  rô  Úget_where_listr�   rI  rX   rv  )r×   r§   r¨   r0  s       r\   r^  zSelection.select_coords†  sÅ   € ð —j‘j $§)¡)ˆtˆØ—
‘
× Ñ ˆØˆ=Ø‰EØ�QŠYØ�U‰NˆEØˆ<Ø‰DØ�AŠXØ�E‰MˆDà�>‰>Ð%Ø—:‘:×#Ñ#×2Ñ2Ø—‘×%Ñ%Ó'¨u¸4Àdð 3ó ð ð ×ÑÐ)Ø×#Ñ#Ð#ä�y‰y˜ Ó%Ð%r^   rð  )rz   r	  r§   rå  r¨   rå  ræ  rç  )rñ   rú  rû  rü  rÙ   rø  r¹   r^  rÍ   r^   r\   r  r  *  sS   „ ñ	ð Ø Øð+Dàð+Dð ð	+Dð
 ð+Dð 
ó+DòZ+ò.
Gó&r^   r  )rc   rø  ræ  rf   )rm   rë  )r¦   NNFNTNNNNrƒ   rU   )r¡   úFilePath | HDFStorer—   rf   r˜   ró  r�   rf   rž   rå  rŸ   rø  r”   r  r�   rø  rŽ   r  r�   rô  r‘   r÷  r’   rõ  r“   rf   rc   rf   ræ  rç  )	Nr¤   rƒ   NNNNFN)r¡   r  r�   rf   r“   rf   rr   zstr | list | Noner§   rå  r¨   rå  r©   zlist[str] | Nonerª   r  r«   rå  )rÅ   rK   rÆ   rK   ræ  r  r`   )rÕ  r,   rD  rN   rW  r.   ræ  r,   )r  r   ræ  ústr | tzinforï  )r{  únp.ndarray | Indexr  r  rÛ  r  ræ  r-   )r{  r  r  rç  rÛ  r  ræ  r�  )r{  r  r  zstr | tzinfo | NonerÛ  r  ræ  znp.ndarray | DatetimeIndex)
rh   rf   rŽ   r.   rc   rf   r“   rf   ræ  r	  )r�  rf   rc   rf   r“   rf   ræ  r  )rh   rf   r{  rM   r©   rì  )r¨  r�  rc   rf   r“   rf   ræ  r�  )r{  r�  rJ  rf   rc   rf   r“   rf   )r�  rf   rc   rf   r“   rf   )r�  rf   ræ  r  )rh   rf   r  zSequence[int]ræ  rf   )rî  rf   ræ  rf   )r¨  rM   )»rü  Ú
__future__r   Ú
contextlibr   r©  r?  r   r   rJ  r±   rµ  Útextwrapr   Útypingr   r	   r
   r   r   r   r   rx  ÚnumpyrX   Úpandas._configr   r   r   r   Úpandas._libsr   r   rÕ  Úpandas._libs.libr   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandas.compat._optionalr   Úpandas.compat.pickle_compatr   Úpandas.errorsr   r   r   r   r   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr    Úpandas.core.dtypes.commonr!   r"   r#   r$   r%   r&   Úpandas.core.dtypes.dtypesr'   r(   r)   r*   Úpandas.core.dtypes.missingr+   r  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Úpandas.core.arraysr7   r8   r9   Úpandas.core.arrays.string_r:   Úpandas.core.commonÚcoreÚcommonra  Ú pandas.core.computation.pytablesr;   r<   Úpandas.core.constructionr=   ra  r>   Úpandas.core.indexes.apir?   Úpandas.core.internalsr@   rA   Úpandas.io.commonrB   Úpandas.io.formats.printingrC   rD   Úcollections.abcrE   rF   rG   ÚtypesrH   r…   rI   rJ   rK   Úpandas._typingrL   rM   rN   rO   rP   rQ   rR   rS   rT   r  ra   r]   rd   ri   rp   ru   rv   rý  rw   rx   r´  ru  r}   r~   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryr„   r‰   rŠ   r¢   r¿   r·   r    r3  r	  r’  r™  rø  r  r  r>  rÅ  r¤  rÆ  r	  rÍ  r�  rË  rÉ  rÊ  rÈ  rÌ  r'  rr  rI  rp  r…  r*  rÌ  rï  rE  rà  rß  r  r©  r¨  r  rÍ   r^   r\   ú<module>r*     s¡  ðòõ #å Û ÷ó Û 	Û 	Ý ÷÷ ñ ó ã ÷ó ÷õ -Ý )Ý %Ý >Ý 4÷õ õ 3Ý 4÷÷ ÷ó õ 8÷÷ ÷ ñ ÷ñ õ
 7ß  Ð  ÷÷õ 1÷õ
 ,÷ñ
 ÷ñ õ
 $÷ñ ÷	÷ 	ó 	õ ,ð €ð Ð òóò	ð €ó:ð*Ð �Uó ð!Ð ˜ó ð
€�ó ð  g°GÀgÑN€ð ˜˜Ð€	ð€
ˆEó ð€
ˆEó ð €V×Ò˜(Ó#ñ Ø€F×Ò˜>¨5°*ÈÏÊÕWØ€F×ÒØØØØ*�&×*Ò*Ò+CÓDõ	÷ð €
Ø$)Ð !òð4 Ø ØØØØØ04ØØØ59ØØð5Ø$ð5à	ð5ð ð5ð ð	5ð
 ð5ð ð5ð ð5ð ð5ð ð5ð .ð5ð ð5ð 3ð5ð ð5ð ð5ð  
ó!5ðt 	ØØØ#ØØØ $ØØ ð_Ø$ð_ð ð_ð ð	_ð
 ð_ð ð_ð ð_ð ð_ð ð_ð ó_óD÷Zñ Z÷z,mñ m÷`s>ñ s>ôl	�hô ô:Y9ˆhô Y9ôx$�wô $ô63Ð.ô 3÷i?ñ i?ôX{B�5ô {Bô|/#�,ô /#ôdd;˜ô d;ôNÐ"ô ô
nDˆEô nDôbH�ô Hô<`�eô `ôFw˜?ô wôt.Ð0ô .ôb,Ð!6ô ,ô$@FÐ'ô @FôF(Ð 4ô (ðX 9=ðØ	ðØ!ðØ+0ðàóó4ð 
àAFðØðØ$0ðØ:>ðàòó 
ðð 
óó 
ðð
 INð$Øð$Ø$7ð$ØAEð$àó$óN=Ló@ð:LØ
ðLàðLð óLó^ð>'Ø
ð'Ø),ð'Ø69ð'àó'óTó
1óóó2 óF÷2r&ò r&÷Ibñ ús   Æ!AN%Î%N/