Ë
    êñiÔ ã            
      óh  — U d Z ddlmZ ddlmZ ddlZddlmZmZ ddl	Z	ddl
Z
ddlZddlmZ ddlmZmZmZmZmZmZmZmZ ddlZddlZddlmZmZmZ dd	lmZm Z! dd
l"m#Z# ddl$m%Z% ddl&m'Z' ddl(m)Z) ddl*m+Z+ ddl,m-Z-m.Z.m/Z/m0Z0m1Z1 ddl2m3Z3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlQmRZRmSZSmTZT ddlUmVZV ddlWmXZX ddlYmZc m[Z\ ddl]m^Z^m_Z_ ddl`maZbmcZc ddldmeZe ddlfmgZg ddlhmiZimjZj er6ddlkmlZlmmZmmnZnmoZo ddlpmqZqmrZr dd lsmtZtmuZumvZv dd!lwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~ dd"lm€Z€ d#Z�d$Z‚d}d%„Zƒd&„ Z„e^Z…d'e†d(<   d~d)„Z‡d*Zˆd+e†d,<   d-Z‰d+e†d.<   d/ZŠd+e†d0<   d1d1d2d2d3œZ‹eFdgiZŒd4Z�d+e†d5<   d6ZŽd+e†d7<    e�j                  d8«      5   e�j                   d9d:e�e�j"                  ¬;«        e�j                   d<deŽ e�j$                  g d=¢«      ¬;«       ddd«       da“d>e†d?<   d:a”d@„ Z•	 	 	 	 	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d€dA„Z– e4dB«      	 	 	 	 	 	 	 	 	 d�	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d‚dC„«       Z—dƒdD„Z˜ e4dB«       G dE„ dF«      «       Z™ G dG„ dH«      Zš G dI„ dJ«      Z› G dK„ dLe›«      Zœ G dM„ dNe›«      Z� G dO„ dPe�«      Zž G dQ„ dRež«      ZŸ G dS„ dT«      Z  G dU„ dVe «      Z¡ G dW„ dXe¡«      Z¢ G dY„ dZe¡«      Z£ G d[„ d\e£«      Z¤ G d]„ d^e «      Z¥ G d_„ d`e¥«      Z¦ G da„ dbe¥«      Z§ G dc„ dde§«      Z¨ G de„ dfe¨«      Z© G dg„ dhe©«      Zª G di„ dje¨«      Z« G dk„ dle¨«      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¸d�dy„Z¹d‘dz„Zº G d{„ d|«      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ÚFinalÚLiteralÚSelfÚ	TypeAliasÚcastÚoverload)ÚconfigÚ
get_optionÚusing_string_dtype)ÚlibÚwriters)Úis_string_array)Ú	timezones)ÚHAS_PYARROW)Úimport_optional_dependency)Úpatch_pickle)ÚAttributeConflictWarningÚClosedFileErrorÚIncompatibilityWarningÚPerformanceWarningÚPossibleDataLossError)Úcache_readonlyÚ
set_module)Úfind_stack_level)Úensure_objectÚis_bool_dtypeÚis_complex_dtypeÚis_list_likeÚis_string_dtypeÚneeds_i8_conversion)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtypeÚPeriodDtype)Úarray_equivalent)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚStringDtypeÚTimedeltaIndexÚconcatÚisna)ÚCategoricalÚDatetimeArrayÚPeriodArray)Útz_to_dtype)ÚBaseStringArray)ÚPyTablesExprÚmaybe_expression)ÚarrayÚextract_array)Úensure_index)Ústringify_path)ÚadjoinÚpprint_thing)ÚCallableÚHashableÚIteratorÚSequence)Ú
ModuleTypeÚTracebackType)ÚColÚFileÚNode)ÚAnyArrayLikeÚ	ArrayLikeÚAxisIntÚDtypeArgÚFilePathÚTimeUnitÚnpt)ÚBlockz0.15.2úUTF-8c                ó   — | €t         } | S ©N)Ú_default_encoding©Úencodings    úT/var/www/pod-logistic/pod-ai/venv/lib/python3.12/site-packages/pandas/io/pytables.pyÚ_ensure_encodingr]   –   s   € àÐÜ$ˆà€Oó    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
    )Ú
isinstanceÚstr©Únames    r\   Ú_ensure_strrd   ž   s   € ô �$œÔÜ�4‹yˆØ€Kr^   r   ÚTermc                óî   — |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)r`   ÚlistÚtupler>   re   Úlen)Úwhereri   ÚlevelÚterms       r\   Ú_ensure_termrp   ­   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)Úfrt   Útru   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)rt   ru   NzModuleType | NoneÚ
_table_modc                 ó¶   — 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)r}   Ú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        «      r	 || «       yt        | «      } t        | |||¬«      5 } ||«       ddd«       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Úerrorsr[   )Úappend©Ústorer�   rŒ   r[   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Ž   r[   rŒ   ©Úputr�   s    €€€€€€€€€€r\   r”   zto_hdf.<locals>.<lambda>(  s3   ø€ ˜%Ÿ)™)ØØØØØ%ØØ%ØØØð $ó 
€ r^   )ÚmodeÚ	complevelÚcomplibN)r`   ÚHDFStorerB   )Úpath_or_bufr’   r“   r˜   r™   rš   r�   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r[   rv   r‘   s    ``    ````````  r\   Úto_hdfr�     sn   ÿù€ ñ$ ÷
ô 
‰÷
ô 
ˆô �+œxÔ(Ù	ˆ+�ä$ [Ó1ˆÜØ˜d¨iÀô
ð 	àÙˆeŒH÷	÷ 	ñ 	ús   Á	A/Á/A8Úpandasc
           
     ó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 an HDF file from a DataFrame.
    HDFStore : Low-level access to HDF files.

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

    Examples
    --------
    >>> df = pd.DataFrame([[1, 1.0, "a"]], columns=["x", "y", "z"])  # doctest: +SKIP
    >>> df.to_hdf("./store.h5", "data")  # doctest: +SKIP
    >>> reread = pd.read_hdf("./store.h5")  # doctest: +SKIP
    )Úrúr+Úazmode zG is not allowed while performing a read. Allowed modes are r, r+ and a.Nrg   rh   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.)rm   ÚstartÚstopÚcolumnsÚiteratorÚ	chunksizeÚ
auto_close)Ú
ValueErrorrp   r`   r›   Úis_openÚOSErrorrB   ra   ÚNotImplementedErrorÚosÚpathÚexistsÚ	TypeErrorÚFileNotFoundErrorÚgroupsrl   Ú_is_metadata_ofÚ_v_pathnameÚselectÚLookupErrorr   r�   Úclose)rœ   r’   r˜   rŽ   rm   r£   r¤   r¥   r¦   r§   Úkwargsr‘   r¨   r¯   r²   Úcandidate_only_groupÚgroup_to_checks                    r\   Úread_hdfr»   ?  sô  € ðn Ð#Ñ#ÜØ�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.Frg   Ú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d7d„Zd8d„Zd9d„Zd:d„Zd4d„Zd;d„Z	 	 	 	 	 	 	 	 d<d„Zd=d>d„Zd?d„Zd@d„ZdAdBd„ZdCd„ZedDd„«       ZdEdFd„Zd5d„Z	 	 	 	 	 	 	 dG	 	 	 	 	 	 	 dHd„Z	 	 	 dI	 	 	 	 	 dJd„Z	 	 dK	 	 	 	 	 	 	 dLd„Z	 	 	 	 	 	 	 	 dM	 	 	 	 	 dNd„Z	 	 	 	 	 	 	 	 	 	 	 	 dO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dPd „ZdId7d!„Z 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dQ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dRd"„Z!	 	 	 dS	 	 	 	 	 dTd#„Z"	 	 	 dI	 	 	 	 	 	 	 dUd$„Z#dVd%„Z$dWdXd&„Z%dYd'„Z&dZd(„Z'	 	 	 	 	 	 	 d[	 	 	 	 	 	 	 	 	 	 	 d\d)„Z(d4d*„Z)dCd+„Z*d]d,„Z+	 	 	 	 d^	 	 	 	 	 	 	 d_d-„Z,	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d`	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dad.„Z-dbd/„Z.dcd0„Z/ddd1„Z0y)er›   aP	  
    Dict-like IO interface for storing pandas objects in PyTables.

    Either Fixed or Table format.

    .. warning::

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

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

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

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

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

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

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

    >>> bar = pd.DataFrame(np.random.randn(10, 4))
    >>> store = pd.HDFStore("test.h5", driver="H5FD_CORE")
    >>> store["foo"] = bar
    >>> store.close()  # only now, data is written to disk
    zFile | NoneÚ_handlera   Ú_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__6  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 rX   ©rÍ   ©rÓ   s    r\   Ú
__fspath__zHDFStore.__fspath__W  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.rootZ  s0   € ð 	×ÑÔØ�|‰|Ð'Ð'Ð'Ø�|‰|× Ñ Ð r^   c                ó   — | j                   S rX   r×   rØ   s    r\   ÚfilenamezHDFStore.filenamea  ó   € à�z‰zÐr^   c                ó$   — | j                  |«      S rX   )Úget©rÓ   r’   s     r\   Ú__getitem__zHDFStore.__getitem__e  s   € Ø�x‰x˜‹}Ðr^   c                ó(   — | j                  ||«       y rX   r–   )rÓ   r’   r“   s      r\   Ú__setitem__zHDFStore.__setitem__h  s   € Ø�‰��eÕr^   c                ó$   — | j                  |«      S rX   )Úremoverâ   s     r\   Ú__delitem__zHDFStore.__delitem__k  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Ó   rc   s     r\   Ú__getattr__zHDFStore.__getattr__n  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 '/'
        Nrg   TF)Úget_noder´   )rÓ   r’   Únoderc   s       r\   Ú__contains__zHDFStore.__contains__x  s<   € ð
 �}‰}˜SÓ!ˆØÐØ×#Ñ#ˆDØ�t˜T ! "˜XÐ&Ñ&ØØr^   c                ó4   — t        | j                  «       «      S rX   )rl   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 rX   rÉ   rØ   s    r\   Ú	__enter__zHDFStore.__enter__‹  s   € Øˆr^   c                ó$   — | j                  «        y rX   )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 )af  
        Return a list of keys corresponding to objects stored in HDFStore.

        Parameters
        ----------

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

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

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

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

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> store.get("data")  # doctest: +SKIP
        >>> print(store.keys())  # doctest: +SKIP
        ['/data1', '/data2']
        >>> store.close()  # doctest: +SKIP
        rž   Ú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 �hÒØ+/¯;©;«=Ö9 a�A—M“MÒ9Ð9à˜Ò Ø—<‘<Ð+Ð+Ð+à'+§|¡|×'>Ñ'>¸sÈgÐ'>Ó'VöØ"#�—“òð ô ØFÀwÀiÈqÐQó
ð 	
ùò :ùòs   ˜BÁ B
c                ó4   — t        | j                  «       «      S rX   )Ú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
            Object to retrieve from file. Raises KeyError if not found.

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

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

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> store.get("data")  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        NúNo object named ú in the file)r   rð   rë   Ú_read_group©rÓ   r’   rÁ   s      r\   rá   zHDFStore.get$  sV   € ô6 ‹^ñ 	+ð —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 )aC  
        Retrieve pandas object stored in file, optionally based on where criteria.

        .. warning::

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

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

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

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

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

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> store.get("data")  # doctest: +SKIP
        >>> print(store.keys())  # doctest: +SKIP
        ['/data1', '/data2']
        >>> store.select("/data1")  # doctest: +SKIP
           A  B
        0  1  2
        1  3  4
        >>> store.select("/data1", where="columns == A")  # doctest: +SKIP
           A
        0  1
        1  3
        >>> store.close()  # doctest: +SKIP
        r  r   rg   rh   c                ó.   •— ‰j                  | ||‰¬«      S )N)r£   r¤   rm   r¥   )Úread)Ú_startÚ_stopÚ_wherer¥   Úss      €€r\   ÚfunczHDFStore.select.<locals>.func—  s   ø€ Ø—6‘6 ¨U¸&È'�6ÓRÐRr^   ©rm   Únrowsr£   r¤   r¦   r§   r¨   )rð   rë   rp   Ú_create_storerÚ
infer_axesÚTableIteratorr,  Ú
get_result)rÓ   r’   rm   r£   r¤   r¥   r¦   r§   r¨   rÁ   r*  Úitr)  s        `      @r\   rµ   zHDFStore.selectG  s—   ù€ ðL —‘˜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
        rg   rh   z&can only read_coordinates with a table©rm   r£   r¤   )rp   Ú
get_storerr`   r  r°   Úread_coordinates)rÓ   r’   rm   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¤   )r4  r`   r  r°   Úread_column)rÓ   r’   r9  r£   r¤   r6  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 ]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
        rg   rh   r   )r’   rm   r¥   r£   r¤   r¦   r§   r¨   zkeys must be a list/tuplez keys must have a non-zero lengthNT©r   zInvalid table [ú]zobject [z>] is not a table, and cannot be used in all select as multiplez,all tables must have exactly the same nrows!c           	     óŠ   •— ‰D �cg c]  }|j                  |‰| |¬«      ‘Œ }}t        |‰d¬«      j                  «       S c c}w )N©rm   r¥   r£   r¤   F)ÚaxisÚverify_integrity)r%  r6   Ú_consolidate)r&  r'  r(  rw   ÚobjsrA  r¥   Útblss        €€€r\   r*  z)HDFStore.select_as_multiple.<locals>.funcP  sR   ø€ ð
 öàð —‘˜V¨W¸FÈ�ÕOðˆDð ô ˜$ T¸EÔB×OÑOÓQÐQùòs   †A r+  )Úcoordinates)rp   r`   rj   rk   rl   ra   rµ   r°   r©   r4  Ú	itertoolsÚchainÚziprë   Úis_tableÚpathnamer,  r  Únon_index_axesÚpopr/  r0  )rÓ   r	  rm   Úselectorr¥   r£   r¤   r¦   r§   r¨   Úkr)  r,  rw   ÚxÚ_tblsr*  r1  rA  rE  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ÈDÔ5QÓRò 	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 Å9G ÆG%c                ó†   — |€t        d«      xs d}| j                  |«      }| j                  |||||||||	|
||||¬«       y)aL  
        Store object in HDFStore.

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

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

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

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

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        Núio.hdf.default_formatrt   )rˆ   r‰   r�   rš   r™   rŠ   r‹   r�   r[   rŽ   Útrack_timesrŒ   )r   Ú_validate_formatÚ_write_to_group)rÓ   r’   r“   rˆ   r‰   r�   rš   r™   rŠ   r‹   r�   r[   rŽ   rU  rŒ   s                  r\   r—   zHDFStore.putk  sg   € ðh ˆ>ÜÐ 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

        rg   rh   Nz5trying to remove a node with a non-None where clause!T©Ú	recursivez7can only remove with where on objects written as tablesr3  )rp   r4  rë   ÚAssertionErrorÚ	Exceptionr©   rð   Ú	_f_removeÚcomÚall_nonerÁ   rJ  Údelete)rÓ   r’   rm   r£   r¤   r)  Úerrrñ   s           r\   rç   zHDFStore.removeÓ  sæ   € ô* ˜U°Ô2ˆð	Ø—‘ Ó$ˆAô. �<‰<˜˜u dÔ+Ø�G‰G×Ñ¨ÐÔ-Øð �zŠzÜÐVÓWÐWØ�x‰x˜e¨5°tˆxÓ<Ð<øô; ò 	àÜò 	àÜò 	ð Ð Ü Ø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
            Key of object to append.
        value : {Series, DataFrame}
            Value of object to append.
        format : 'table' is the default
            Format to use when storing object in HDFStore.  Value can be one of:

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

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

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

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df1, format="table")  # doctest: +SKIP
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
        >>> store.append("data", df2)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
           A  B
        0  1  2
        1  3  4
        0  5  6
        1  7  8
        Nz>columns is not a supported keyword in append, try data_columnszio.hdf.dropna_tablerT  ru   )rˆ   Úaxesr‰   r�   rš   r™   rŠ   r‹   r§   ÚexpectedrowsrŒ   r�   r[   rŽ   )r°   r   rV  rW  )rÓ   r’   r“   rˆ   rc  r‰   r�   rš   r™   r¥   rŠ   r‹   r§   rd  rŒ   r�   r[   rŽ   s                     r\   r�   zHDFStore.append
  s•   € ðF ÐÜØ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Š   ©rA  )r�   rŠ   )r°   r`   Údictr©   Únextr  ÚsetÚrangeÚndimÚ	_AXES_MAPrì   r  Úextendrc  Ú
differencer/   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocrM  Úreindexr�   )rÓ   Údr“   rN  r�   rc  rŒ   r¸   rA  Ú
remain_keyÚremain_valuesrO  ÚvÚorderedÚorddÚidxsÚvalid_indexr‰   rŠ   ÚdcÚvalr’   Úfiltereds     `                    r\   Úappend_to_multiplezHDFStore.append_to_multipleŠ  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…   r4  r`   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.

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

        Examples
        --------
        >>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df)  # doctest: +SKIP
        >>> print(store.groups())  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        [/data (Group) ''
          children := ['axis0' (Array), 'axis1' (Array), 'block0_values' (Array),
          'block0_items' (Array)]]
        NÚpandas_typeru   )r…   rÛ   rÆ   r}   Úwalk_groupsr`   ÚlinkÚLinkÚgetattrÚ_v_attrsru   r  rÀ   r  s     r\   r²   zHDFStore.groups  s±   € ô4 	Œ	Ø×ÑÔØ�|‰|Ð'Ð'Ð'ÜÐ%Ð%Ð%ð —\‘\×-Ñ-Ó/ö
àä˜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`.

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

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data", df1, format="table")  # doctest: +SKIP
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
        >>> store.append("data", df2)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        >>> for group in store.walk():  # doctest: +SKIP
        ...     print(group)  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        NrŽ  r  )r…   rÛ   rÆ   r}   r�  r’  r“  Ú_v_childrenrx  r`   rÁ   ÚGroupr�   rÀ   r´   Úrstrip)rÓ   rm   r  r²   ÚleavesÚchildrŽ  s          r\   ÚwalkzHDFStore.walk>  sü   è ø€ ôV 	Œ	Ø×ÑÔØ�|‰|Ð'Ð'Ð'ÜÐ%Ð%Ð%à—‘×)Ñ)¨%Ó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ÚNoSuchNodeErrorr`   rM   rì   )rÓ   r’   rñ   s      r\   rð   zHDFStore.get_node~  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ë   r-  r.  )rÓ   r’   rÁ   r)  s       r\   r4  zHDFStore.get_storerŽ  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�   r[   rZ   )r›   rj   r	  r`   rk   r4  rç   rµ   r  rc  Ú
is_indexedrc   r�   r’  r[   r—   )rÓ   r‚   r˜   Úpropindexesr	  rš   r™   rÔ   Ú	overwriteÚ	new_storerO  r)  Údatar‰   r¢   s                  r\   ÚcopyzHDFStore.copy˜  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                óF  — t        | j                  «      }t        | «      › d|› d�}| j                  r™t	        | j                  «       «      }|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
            A String containing the python pandas class name, filepath to the HDF5
            file and all the object keys along with their respective dataframe shapes.

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

        Examples
        --------
        >>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
        >>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["C", "D"])
        >>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
        >>> store.put("data1", df1)  # doctest: +SKIP
        >>> store.put("data2", df2)  # doctest: +SKIP
        >>> print(store.info())  # doctest: +SKIP
        >>> store.close()  # doctest: +SKIP
        <class 'pandas.io.pytables.HDFStore'>
        File path: store.h5
        /data1            frame        (shape->[2,2])
        /data2            frame        (shape->[2,2])
        rö   r÷   Nzinvalid_HDFStore nodez[invalid_HDFStore node: r>  é   ÚEmptyzFile is CLOSED)rD   rÍ   rì   rª   ru  r	  r4  r�   rK  r[  r\  rC   )
rÓ   r®   ÚoutputÚlkeysr	  rx  rO  r)  ÚdetailÚdstrs
             r\   ÚinfozHDFStore.infoÓ  s5  € ô8 ˜DŸJ™JÓ'ˆÜ˜“J�<˜}¨T¨F°"Ð5ˆà�<Š<Ü˜4Ÿ9™9›;Ó'ˆEÙØ�Ø�àò 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 [r>  N)Ú_FORMAT_MAPÚlowerrë   r°   )rÓ   rˆ   ra  s      r\   rV  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	        |j
                  dd«      }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_typeru   Úframe_tableÚgeneric_tablezKcannot create a storer if the object is not existing nor a value are passedÚseriesÚframeÚ_table)r·  r¸  z=cannot properly create the storer for: [_STORER_MAP] [group->ú,value->z	,format->©r[   rŽ   Úseries_tabler‰   rg   Úappendable_seriesÚappendable_multiseriesÚappendable_frameÚappendable_multiframe)r¶  r½  r¾  r¿  rÀ  Úwormz<cannot properly create the storer for: [_TABLE_MAP] [group->)r`   r3   r-   r°   r’  r“  r…   r}   ru   r  ÚSeriesFixedÚ
FrameFixedrë   rì   ÚnlevelsÚGenericTableÚAppendableSeriesTableÚAppendableMultiSeriesTableÚAppendableFrameTableÚAppendableMultiFrameTableÚ	WORMTable)rÓ   rÁ   rˆ   r“   r[   rŽ   ÚptÚttÚ_STORER_MAPÚclsra  r‰   Ú
_TABLE_MAPs                r\   r-  zHDFStore._create_storer  sO  € ð Ð¤Z°¼Ä	Ð7JÔ%KÜÐFÓGÐGä�U—^‘^ ]°DÓ9ˆÜ�U—^‘^ \°4Ó8ˆð ˆ:Øˆ}Ü”	Ü!Ð-Ð-Ð-Ü˜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  Æ	F=ÆF8Æ8F=Ç 	G,Ç	G'Ç'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Úemptyru   r»  rt   zCan only append to Tablesz0Compression not supported on Fixed format stores)Úobjrc  r�   rš   r™   rÔ   rŠ   r§   rd  rŒ   r‹   r�   rU  ©r¥   )r’  Ú_identify_groupr-  rJ  Ú	is_existsr©   Úset_object_infoÚwriter`   r  r‹  )rÓ   r’   r“   rˆ   rc  r‰   r�   rš   r™   rÔ   rŠ   r§   rd  rŒ   r‹   r�   r[   rŽ   rU  rÁ   r)  s                        r\   rW  zHDFStore._write_to_groupz  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 rX   )r-  r.  r%  )rÓ   rÁ   r)  s      r\   r!  zHDFStore._read_group¸  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.NTrY  )rð   rÆ   Úremove_nodeÚ_create_nodes_and_group)rÓ   r’   r�   rÁ   s       r\   rÔ  zHDFStore._identify_group½  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Æ   Úsplitrl   Úendswithrð   Úcreate_group)rÓ   r’   Úpathsr®   ÚpÚnew_pathrÁ   s          r\   rÛ  z HDFStore._create_nodes_and_groupÏ  s—   € ð �|‰|Ð'Ð'Ð'à—	‘	˜#“ˆàˆØò 
	ˆAÜ�q”6ØØˆHØ—=‘= Ô%Ø˜C‘�Ø˜‰MˆHØ—M‘M (Ó+ˆEØˆ}ØŸ™×1Ñ1°$¸Ó:�Ø‰Dð
	ð ˆr^   )r¢   NNF)r˜   ra   r™   ú
int | NonerÔ   r  ÚreturnÚNone©rä  ra   ©r’   ra   )r’   ra   rä  rå  )r’   ra   rä  rã  )rc   ra   )r’   ra   rä  r  ©rä  Úint)rä  r   )rý   ztype[BaseException] | Nonerþ   zBaseException | Nonerÿ   zTracebackType | Nonerä  rå  )rž   )r  ra   rä  ú	list[str])rä  zIterator[str])rä  zIterator[tuple[str, list]])r¢   )r˜   ra   rä  rå  ©rä  rå  ©rä  r  ©F)r  r  rä  rå  )NNNNFNF)r’   ra   r¦   r  r§   rã  r¨   r  ©NNN©r’   ra   r£   rã  r¤   rã  ©NN)r’   ra   r9  ra   r£   rã  r¤   rã  )NNNNNFNF)r¦   r  r§   rã  r¨   r  )NTFNNNNNNr   TF)r’   ra   r“   úDataFrame | Seriesr‰   r  r�   r  r™   rã  rŠ   úint | dict[str, int] | Noner�   ú Literal[True] | list[str] | NonerŽ   ra   rU  r  rŒ   r  rä  rå  )NNTTNNNNNNNNNNr   )r’   ra   r“   rñ  r‰   úbool | list[str]r�   r  r™   rã  rŠ   rò  r§   rã  rŒ   úbool | Noner�   ró  rŽ   ra   rä  rå  )NNF)r|  rm  rŒ   r  rä  rå  )r’   ra   r‰  rã  rŠ  ú
str | Nonerä  rå  ©rä  rj   )r  )rm   ra   rä  z*Iterator[tuple[str, list[str], list[str]]])r’   ra   rä  zNode | None)r’   ra   rä  úGenericFixed | Table)r  TNNNFT)r˜   ra   r¢  r  r™   rã  rÔ   r  r£  r  rä  r›   )rˆ   ra   rä  ra   )NNrV   r   )r“   zDataFrame | Series | Noner[   ra   rŽ   ra   rä  rø  )NTFNNNNNNFNNNr   T)r’   ra   r“   rñ  r‰   rô  r�   r  r™   rã  rŠ   rò  r§   rã  rŒ   r  rŽ   ra   rU  r  rä  rå  )rÁ   rM   )r’   ra   r�   r  rä  rM   )r’   ra   rä  rM   )1rí   Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rÕ   rÙ   ÚpropertyrÜ   rÞ   rã   rå   rè   rî   rò   rô   rù   rû   r   r	  r  r  rÒ   r·   rª   r  rá   rµ   r7  r;  rR  r—   rç   r�   r‡  rŒ  r²   rš  rð   r4  r¦  r®  rÛ   rV  r-  rW  r!  rÔ  rÛ  rÉ   r^   r\   r›   r›   ð  s>  … ñ?ðB ÓØƒJð
 Ø $ØØ ð'ð ð'ð ð	'ð ð'ð 
ó'óBð ñ!ó ð!ð òó ðóóó ó
ó
ó"ó4óðà,ðð (ðð (ð	ð
 
óô.
ó`!ó#ô+JóZð ò)ó ð)ô4ó,!+ðL ØØØØØ $Ø ðaàðað ðað ðað óaðL Ø ØðIàðIð ð	Ið
 óIðH !Øð&Fàð&Fð ð&Fð ð	&Fð
 ó&FðV ØØØØØØ $Ø ðw/ð ðw/ð ðw/ð ów/ðz ØØØØ $Ø48ØØ9=ØØØ Øðf
àðf
ð "ðf
ð
 ðf
ð ðf
ð ðf
ð 2ðf
ð 7ðf
ð ðf
ð ðf
ð ðf
ð  
ó!f
ôP5=ðv ØØ"&ØØØ $ØØ48ØØ $ØØ"Ø9=ØØð%~
àð~
ð "ð~
ð  ð~
ð ð~
ð ð~
ð 2ð~
ð ð~
ð ð~
ð  7ð!~
ð$ ð%~
ð& 
ó'~
ðJ ØØð_Ràð_Rð ð_Rð 
ó_RðH Ø#Øð&Fàð&Fð ð	&Fð
 ð&Fð 
ó&FóP)
ôV>>ó@ó ð Ø ØØØ $Ø Øð9ð ð9ð ð	9ð ð9ð ð9ð ð9ð 
ó9óv9ó|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)r/  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*  rm   rJ  Úminr,  r£   r¤   rF  ré  r§   r¨   )rÓ   r‘   r)  r*  rm   r,  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£   rF  r©   r¤   r  r§   r*  rl   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 rX   )r¨   r‘   r·   rØ   s    r\   r·   zTableIterator.close7  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)rm   z$can only read_coordinates on a tabler3  )r§   r`   r)  r  r°   r5  rm   rF  r£   r¤   r*  r·   )rÓ   rF  rm   Úresultss       r\   r0  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ä  rG   rë  rí  )rF  r  )	rí   rù  rú  rû  rü  rÕ   r  r·   r0  rÉ   r^   r\   r/  r/  å  sz   … ñð& ÓØƒOØÓð ØØØ $Ø ð(%àð(%ð  ð(%ð ð(%ð ð(%ð ð(%ð 
ó(%óTó õr^   r/  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.)r`   ra   r©   rx  rŠ  Útyprc   ÚcnamerA  Úposr  r  r  r€  ru   r½   ÚmetadataÚset_pos)rÓ   rc   rx  rŠ  r  r  rA  r  r  r  r  r€  ru   r½   r  s                  r\   rÕ   zIndexCol.__init__g  s»   € ô" ˜$¤Ô$ÜÐ4Ó5Ð5àˆŒØˆŒ	ØˆŒØˆŒ	Ø’]˜dˆŒ
ØˆŒ	ØˆŒØˆŒ	ØˆŒØ$ˆŒØˆŒØˆŒ
ØˆŒ	Ø ˆŒàˆ?Ø�L‰L˜Ôô ˜$Ÿ)™)¤SÔ)Ð)Ð)Ü˜$Ÿ*™*¤cÔ*Ð*Ñ*r^   c                ó.   — | j                   j                  S rX   )r  ÚitemsizerØ   s    r\   r  zIndexCol.itemsize’  s   € ð �x‰x× Ñ Ð r^   c                ó    — | j                   › d�S )NÚ_kindrb   rØ   s    r\   Ú	kind_attrzIndexCol.kind_attr—  ó   € à—)‘)�˜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_pos›  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¬«      D ��cg c]  \  }}|› d|› �‘Œ c}}«      S c c}}w )Nú,)rc   r  rA  r  rŠ  Tr=  ú->)
rk   ÚmaprD   rc   r  rA  r  rŠ  ÚjoinrI  ©rÓ   Útempr’   r“   s       r\   rù   zIndexCol.__repr__¡  s€   € ÜÜ”˜tŸy™y¨$¯*©*°d·i±iÀÇÁÈ4Ï9É9ÐUÓVó
ˆð �x‰xô #&Ú<¸dÈ4ô#÷á�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rX   ©r’  ©ri  r¢   ÚotherrÓ   s     €€r\   rk  z"IndexCol.__eq__.<locals>.<genexpr>°  ó0   øè ø€ ò 
àô �D˜!˜TÓ"¤g¨e°Q¸Ó&=Õ=ñ
ùó   ƒ%()rc   r  rA  r  ©rg  ©rÓ   r)  s   ``r\   Ú__eq__zIndexCol.__eq__®  s   ù€ äô 
à5ô
ó 
ð 	
r^   c                ó&   — | j                  |«       S rX   )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 columnrj  F)Úhasattrru   r’  rj  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                  «       }| j                  }t        ||||«      }i }| j                  |d<   | j                  �| j                  |d<   t        }t        j                  |j                  d«      st        |j                  t        «      rt         }n|j                  dk(  rd|v rd„ }	  ||fi |¤Ž}| j2                  �>t        |t         «      r.|j5                  d«      j7                  | j2                  «      }
|
|
fS |}
|
|
fS # t"        $ r_}	|dk(  rOt%        «       rEt'        |	«      j)                  d«      r+t*        r% ||fd	t-        d
t        j.                  ¬«      i|¤Ž}n‚ Y d}	~	Œ³d}	~	wt0        $ 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.
        Nrc   r  ÚMÚi8c                ót   — t        j                  | |j                  dd «      ¬«      j                  |d   «      S )Nr  )r  rc   )r1   Úfrom_ordinalsrá   Ú_rename)rP  Úkwdss     r\   r”   z"IndexCol.convert.<locals>.<lambda>à  s2   € ¬×(AÑ(AØ˜Ÿ™ ¨Ó.ô)ç‰g�d˜6‘lÓ#ð r^   Úsurrogatepassúsurrogates not allowedÚdtypeÚpython©ÚstorageÚna_valueÚUTC)r`   ÚnpÚndarrayrì   r<  Úfieldsr  r¦  rŠ  Ú_maybe_convertr  r  r/   r   Úis_np_dtyper)   r.   ÚUnicodeEncodeErrorr   ra   rÞ  r   r4   Únanr©   r  Útz_localizeÚ
tz_convert)rÓ   rx  r‹   r[   rŽ   Úval_kindr¸   ÚfactoryÚnew_pd_indexra  Úfinal_pd_indexs              r\   ÚconvertzIndexCol.convertÀ  sÓ  € ô ˜&¤"§*¡*Ô-Ð;¬t°F«|Ó;Ð-ð �<‰<×ÑÐ*ð ˜DŸJ™JÑ'×,Ñ,Ó.ˆFà—9‘9ˆÜ ¨°(¸FÓCˆØˆØŸ™ˆˆv‰à�9‰9Ð Ø!ŸY™YˆF�6‰Nä/4ˆÜ�?‰?˜6Ÿ<™<¨Ô-´Ø�L‰Lœ/ô2
ô $‰GØ�\‰\˜TÒ! f°Ñ&6ñ
$ˆGð
	5Ù" 6Ñ4¨VÑ4ˆLð. �7‰7Ð¤:¨l¼MÔ#JØ)×5Ñ5°eÓ<×GÑGÈÏÉÓPˆNð ˜~Ð-Ð-ð *ˆNØ˜~Ð-Ð-øô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©rx  rØ   s    r\   Ú	take_datazIndexCol.take_data	  s   € à�{‰{Ðr^   c                ó.   — | j                   j                  S rX   )ru   r“  rØ   s    r\   ÚattrszIndexCol.attrs	  ó   € à�z‰z×"Ñ"Ð"r^   c                ó.   — | j                   j                  S rX   ©ru   ÚdescriptionrØ   s    r\   rX  zIndexCol.description	  ó   € à�z‰z×%Ñ%Ð%r^   c                óD   — t        | j                  | j                  d«      S )z!return my current col descriptionN)r’  rX  r  rØ   s    r\   ÚcolzIndexCol.col	  s   € ô �t×'Ñ'¨¯©°TÓ:Ð:r^   c                ó   — | j                   S ©zreturn my cython valuesrQ  rØ   s    r\   ÚcvalueszIndexCol.cvalues	  s   € ð �{‰{Ðr^   c                ó,   — t        | j                  «      S rX   )r  rx  rØ   s    r\   r  zIndexCol.__iter__	  s   € Ü�D—K‘KÓ Ð r^   c                ó  — | 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`   rm  rá   rc   r  r  r…   Ú	StringColr  )rÓ   rŠ   s     r\   Úmaybe_set_sizezIndexCol.maybe_set_size	  sp   € ð �9‰9˜Ò Ü˜,¬Ô-Ø+×/Ñ/°·	±	Ó:�àÐ'¨D¯H©H×,=Ñ,=ÀÒ,LÜ"›9×.Ñ.¸È$Ï(É(Ð.ÓS�•ð -MÐ'ð	 !r^   c                 ó   — y rX   rÉ   rØ   s    r\   Úvalidate_nameszIndexCol.validate_names)	  ó   € Ør^   c                óÌ   — |j                   | _         | j                  «        | j                  |«       | j                  |«       | j	                  |«       | j                  «        y rX   )ru   Ú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           	     óâ   — | 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 itemsizera  Nz#Trying to store a string with len [z] in [z)] column but
this column has a limit of [zC]!
Consider using min_itemsize to preset the sizes on these columns)rŠ  r[  r  r©   r  )rÓ   r  Úcs      r\   rh  zIndexCol.validate_col4	  sƒ   € ð �9‰9˜Ò Ø—‘ˆ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 [ú - r>  )r’  rT  r  rŠ  r°   )rÓ   r�   Úexisting_kinds      r\   ri  zIndexCol.validate_attrG	  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 [r>  )Ú_info_fieldsr’  Ú
setdefaultrc   rá   rr   ÚwarningsÚwarnr   r!   Úsetattrr©   )rÓ   r®  r’   r“   ÚidxÚexisting_valueÚwss          r\   Úupdate_infozIndexCol.update_infoP	  s÷   € ð
 ×$Ñ$ò 	!ˆCÜ˜D # tÓ,ˆEØ—/‘/ $§)¡)¨RÓ0ˆ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á   rc   Ú__dict__Úupdate)rÓ   r®  r|  s      r\   Úset_infozIndexCol.set_infoo	  s0   € à�h‰h�t—y‘yÓ!ˆØˆ?Ø�M‰M× Ñ  Õ%ð r^   c                óZ   — t        | j                  | j                  | j                  «       y)zset the kind for this columnN)r{  rT  r  rŠ  rØ   s    r\   rl  zIndexCol.set_attru	  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Ó   rm  Únew_metadataÚcur_metadatas       r\   rj  zIndexCol.validate_metadatay	  sp   € à�9‰9˜
Ò"ØŸ=™=ˆLØ"×0Ñ0°·±Ó<ˆLàÐ(Ø Ð,Ü(Ø  ,¸4ÈTõô !ð;óð ð	ð -ð )ð	 #r^   c                ój   — | j                   �'|j                  | j                  | j                   «       yy)zset the meta dataN)r  rk  r  )rÓ   rm  s     r\   rk  zIndexCol.write_metadataŠ	  s)   € à�=‰=Ð$Ø×"Ñ" 4§:¡:¨t¯}©}Õ=ð %r^   )NNNNNNNNNNNNN)rc   ra   r  rö  rä  rå  rè  ræ  )r  ré  rä  rå  ©r)  Úobjecträ  r  rì  )rx  ú
np.ndarrayr[   ra   rŽ   ra   rä  z3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]r  rX   rë  )rm  ÚAppendableTabler�   r  rä  rå  )r�   r  rä  rå  )rm  r‘  rä  rå  )"rí   rù  rú  rû  r	  rü  r
  rw  rÕ   rý  r  r  r  rù   r.  r0  r¡  rO  rR  rT  rX  r[  r^  r  rc  re  rn  rh  ri  r  rƒ  rl  rj  rk  rÉ   r^   r\   r  r  U  sv  … ñð !€O�TÓ Ø"Ð�tÓ"Ú/€Lð
 ØØØ ØØØØØØØØØð)+àð)+ð ð)+ð  
ó!)+ðV ò!ó ð!ð ò#ó ð#ó"ó
ó
ó&ð ò?ó ð?ðA.Ø ðA.Ø58ðA.ØBEðA.à	<óA.òFð ñ#ó ð#ð ñ&ó ð&ð ñ;ó ð;ð ñó ðó!ô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_indexed“	  ó   € à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
        )r`   rB  rC  rì   r2   rl   )rÓ   rx  r‹   r[   rŽ   r‰   s         r\   rO  zGenericIndexCol.convert—	  s9   € ô ˜&¤"§*¡*Ô-Ð;¬t°F«|Ó;Ð-äœ3˜v›;Ó'ˆØ�eˆ|Ðr^   c                 ó   — y rX   rÉ   rØ   s    r\   rl  zGenericIndexCol.set_attr©	  rf  r^   Nrì  )rx  r�  r[   ra   rŽ   ra   rä  ztuple[Index, Index]rë  )rí   rù  rú  rû  rý  r¡  rO  rl  rÉ   r^   r\   r“  r“  �	  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)rc   rx  rŠ  r  r  r  r  r€  ru   r½   r  )ÚsuperrÕ   r<  r¥  )rÓ   rc   rx  rŠ  r  r  r  r  r€  ru   r½   r  r<  r¥  Ú	__class__s                 €r\   rÕ   zDataCol.__init__¾	  sH   ø€ ô  	‰ÑØØØØØØØØØØØð 	ô 	
ð ˆŒ
Øˆ�	r^   c                ó    — | j                   › d�S )NÚ_dtyperb   rØ   s    r\   Ú
dtype_attrzDataCol.dtype_attrÞ	  s   € à—)‘)�˜FÐ#Ð#r^   c                ó    — | j                   › d�S )NÚ_metarb   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¬«      D ��cg c]  \  }}|› d|› �‘Œ c}}«      S c c}}w )Nr  )rc   r  r<  rŠ  ÚshapeTr=  r  )
rk   r  rD   rc   r  r<  rŠ  r¥  r   rI  r!  s       r\   rù   zDataCol.__repr__æ	  sƒ   € ÜÜÜ˜tŸy™y¨$¯*©*°d·j±jÀ$Ç)Á)ÈTÏZÉZÐXóó
ˆð
 �x‰xô #&Ú?ÀÈdô#÷á�C˜ð �%�r˜%˜Ò!óó
ð 	
ùór#  c                ó0   ‡ ‡— t        ˆˆ fd„dD «       «      S )r%  c              3  óT   •K  — | ]  }t        ‰|d «      t        ‰|d «      k(  –— Œ! y ­wrX   r'  r(  s     €€r\   rk  z!DataCol.__eq__.<locals>.<genexpr>÷	  r*  r+  )rc   r  r<  r  r,  r-  s   ``r\   r.  zDataCol.__eq__õ	  s   ù€ äô 
à6ô
ó 
ð 	
r^   c                ó€   — |€J ‚| j                   �J ‚t        |«      \  }}|| _        || _         t        |«      | _        y rX   )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\   rR  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.
        rg   ©rŠ  r4  Úmr   ©r  r¥  )r<  r  r¥  rq  Úsizer`   r8   ÚcodesÚget_atom_datarc   r   rF  r)   Úget_atom_datetime64Úget_atom_timedelta64r$   r…   Ú
ComplexColr&   Úget_atom_string)rÎ  rx  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…   rb  ©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ÚUIntrK   ÚperiodÚInt64Col)rœ  Ú
capitalizer’  r…   )rÎ  rŠ  Úk4Úcol_nameÚkcaps        r\   Úget_atom_coltypezDataCol.get_atom_coltype.
  s_   € ð �?‰?˜6Ô"Ø�a�b�ˆBØ˜b˜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_datetime64A
  ó   € ä‹y×!Ñ!¨¨a©Ð!Ó1Ð1r^   c                ó<   — t        «       j                  |d   ¬«      S rÏ  rÐ  rÑ  s     r\   r·  zDataCol.get_atom_timedelta64E
  rÒ  r^   c                ó0   — t        | j                  dd «      S )Nr¥  )r’  r¥  rØ   s    r\   r¥  zDataCol.shapeI
  s   € ä�t—y‘y '¨4Ó0Ð0r^   c                ó   — | j                   S r]  r®  rØ   s    r\   r^  zDataCol.cvaluesM
  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’  rT  r  rj   rx  r©   r   r<  )rÓ   r�   Úexisting_fieldsÚexisting_dtypes       r\   ri  zDataCol.validate_attrR
  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 ‚| j                  }| j                  }	| j                  }
| j                  }|€J ‚|}|j                  d«      r|dk(  rd}t!        |||«      }�nJ|j                  d«      r7|dk(  rt        j"                  |d¬«      }�nt        j"                  ||¬«      }�n|dk(  r>	 t        j"                  |D �cg c]  }t%        j&                  |«      ‘Œ c}t(        ¬«      }n¿|dk(  r¦|	}|j/                  «       }|€t1        g t        j2                  ¬«      }n\t5        |«      }|j7                  «       rA||    }||dk7  xx   |j9                  t:        «      j=                  «       j>                  z  cc<   tA        jB                  |||
d	¬
«      }n	 |j9                  |d	¬«      }|dk(  rtG        ||||¬«      }| jH                  |fS c c}w # t*        $ rE t        j"                  |D �cg c]  }t%        j,                  |«      ‘Œ nc c}w c}t(        ¬«      }Y Œtw xY w# tD        $ r |j9                  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
        Ú
datetime64údatetime64[ns]Útimedelta64úm8[ns]©r<  r   r†  éÿÿÿÿF)Ú
categoriesr€  Úvalidate©r¦  ÚOra  ©r‹   r[   rŽ   )%r`   rB  rC  rì   r<  rD  r  r  r©  rª  rŠ  r½   r  r€  r  rœ  Ú_set_tzÚasarrayr   Úfromordinalr�  r©   ÚfromtimestampÚravelr/   Úfloat64r7   ÚanyÚastyperé  ÚcumsumÚ_valuesr8   Ú
from_codesr°   Ú_unconvert_string_arrayrx  )rÓ   rx  r‹   r[   rŽ   Ú	convertedr«  rŠ  r½   r  r€  r  r<  r  rà  r´  Úmasks                    r\   rO  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ð �y‰yˆØ—=‘=ˆØ—,‘,ˆØ�W‰WˆàÐ%Ð%Ð%àˆð ×Ñ˜LÔ)à˜Ò$Ø(�Ü 	¨2¨uÓ5ŠIà×Ñ˜mÔ,Ø˜Ò%äŸJ™J y¸ÔA’	äŸJ™J y¸Ô>’	Ø�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¸Ð,Ó?�	ð
 �8ÒÜ/Ø 7°XÀfôˆIð �{‰{˜IÐ%Ð%ùòW =øäò ÜŸJ™JØ4=Ö>¨q”T×'Ñ'¨Õ*Ñ>ùÔ>Äfô’	ðûô@ ò >Ø%×,Ñ,¨S°uÐ,Ó=’	ð>úsB   Å%J Å8JÆJ ÉK ÊJ ÊKÊ$K
Ë KËKËK8Ë7K8c                ó"  — t        | j                  | j                  | j                  «       t        | j                  | j                  | j
                  «       | j                  €J ‚t        | j                  | j                  | j                  «       y)zset the data for this columnN)r{  rT  r  rx  r£  r½   r<  r   rØ   s    r\   rl  zDataCol.set_attrÉ
  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)rc   ra   r  rö  r<  zDtypeArg | Nonerä  rå  ræ  rŽ  )r¥  rO   rä  rå  )rx  rO   rä  rK   )rŠ  ra   rä  z	type[Col]©rŠ  ra   rä  rK   rë  )rx  r�  r[   ra   rŽ   ra   )rí   rù  rú  rû  r	  r
  rw  rÕ   rý  r   r£  rù   r.  r¬  rR  Úclassmethodr»  r¹  rÉ  rµ  r¶  r·  r¥  r^  ri  rO  rl  Ú__classcell__©r�  s   @r\   rš  rš  ­	  s`  ø„ ñ
ð €OØÐØ˜)Ð$€Lð
 ØØØ ØØØØØØØ!%Øðàðð ðð ðð 
õð@ ò$ó ð$ð ò#ó ð#ó
ó
ó/òð òó ðð> ñFó ðFð ò,ó ð,ð ò?ó ð?ð ñ2ó ð2ð ñ2ó ð2ð ñ1ó ð1ð ñó ðóóh&÷T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/   rx  r<  r©   rØ   s    r\   re  zDataIndexableCol.validate_namesÖ
  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_stringÛ
  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 rX   rÐ  rÑ  s     r\   r¶  z$DataIndexableCol.get_atom_datetime64ã
  ó   € ä‹y×!Ñ!Ó#Ð#r^   c                ó2   — t        «       j                  «       S rX   rÐ  rÑ  s     r\   r·  z%DataIndexableCol.get_atom_timedelta64ç
  rÿ  r^   Nrë  rô  )rí   rù  rú  rû  r
  re  rõ  r¹  rµ  r¶  r·  rÉ   r^   r\   rù  rù  Ñ
  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.
    ra   Úpandas_kindrt   Úformat_typeútype[DataFrame | Series]Úobj_typeré  rq  r›   rÄ   Fr  rJ  c                óò   — t        |t        «      sJ t        |«      «       ‚t        €J ‚t        |t        j                  «      sJ t        |«      «       ‚|| _        || _        t        |«      | _        || _	        y rX   )
r`   r›   rì   r}   rM   rÄ   rÁ   r]   r[   rŽ   )rÓ   rÄ   rÁ   r[   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   rg   é
   é   )ÚversionrØ   s    r\   Úis_old_versionzFixed.is_old_version  s:   € à�|‰|˜A‰ !Ñ#ÒU¨¯©°Q©¸2Ñ(=ÒUÀ$Ç,Á,ÈqÁ/ÐTUÑBUÐUr^   c                óö   — t        | j                  j                  dd«      }t        |t        «      rHt        d„ |j                  d«      D «       «      }t        |«      dk(  rg |¢d‘­}t        |«      dk(  sJ ‚|S y)	zcompute and set our versionÚpandas_versionNc              3  ó2   K  — | ]  }t        |«      –— Œ y ­wrX   )ré  )ri  rP  s     r\   rk  z Fixed.version.<locals>.<genexpr>  s   è ø€ ÒC¨1¤ A§ÑCùs   ‚ú.r  r   é   )r   r   r   )r’  rÁ   r“  r`   ra   rk   rÝ  rl   )rÓ   r  Úversion_tups      r\   r  zFixed.version  sx   € ô ˜$Ÿ*™*×-Ñ-Ð/?ÀÓFˆÜ�gœsÔ#ÜÑC°·±¸cÓ0BÔCÓCˆKÜ�;Ó 1Ò$Ø/ Ð/¨QÑ/�Ü�{Ó# qÒ(Ð(Ð(ØÐàr^   c                óD   — t        | j                  j                  dd «      S )NrŽ  )r’  rÁ   r“  rØ   s    r\   rŽ  zFixed.pandas_type$  s   € ä�t—z‘z×*Ñ*¨M¸4Ó@Ð@r^   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  ú[r>  ú12.12z	 (shape->ú))r.  r¥  r`   rj   rk   r   rD   rŽ  )rÓ   r)  rP  Ú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)ra   r  rT  rŽ  Ú_versionr  rØ   s    r\   rÖ  zFixed.set_object_info3  s)   € ä!$ T×%5Ñ%5Ó!6ˆ�
‰
ÔÜ$'¬£Mˆ�
‰
Õ!r^   c                ó0   — t        j                   | «      }|S rX   râ  )rÓ   Únew_selfs     r\   r¦  z
Fixed.copy8  s   € Ü—9‘9˜T“?ˆØˆr^   c                ó   — | j                   S rX   )r,  rØ   s    r\   r¥  zFixed.shape<  rß   r^   c                ó.   — | j                   j                  S rX   ©rÁ   r´   rØ   s    r\   rK  zFixed.pathname@  rY  r^   c                ó.   — | j                   j                  S rX   )rÄ   rÆ   rØ   s    r\   rÆ   zFixed._handleD  s   € à�{‰{×"Ñ"Ð"r^   c                ó.   — | j                   j                  S rX   )rÄ   rÑ   rØ   s    r\   rÑ   zFixed._filtersH  s   € à�{‰{×#Ñ#Ð#r^   c                ó.   — | j                   j                  S rX   )rÄ   rÎ   rØ   s    r\   rÎ   zFixed._complevelL  s   € à�{‰{×%Ñ%Ð%r^   c                ó.   — | j                   j                  S rX   )rÄ   rÐ   rØ   s    r\   rÐ   zFixed._fletcher32P  s   € à�{‰{×&Ñ&Ð&r^   c                ó.   — | j                   j                  S rX   )rÁ   r“  rØ   s    r\   rT  zFixed.attrsT  rU  r^   c                 ó   — y©zset our object attributesNrÉ   rØ   s    r\   Ú	set_attrszFixed.set_attrsX  ó   � 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_existsc  r–  r^   c                ó0   — t        | j                  dd «      S )Nr,  )r’  r0  rØ   s    r\   r,  zFixed.nrowsg  s   € ä�t—}‘} g¨tÓ4Ð4r^   c                ó
   — |€yy)z%validate against an existing storableNTrÉ   r-  s     r\   rá  zFixed.validatek  s   € àˆ=ØØr^   Nc                 ó   — y)ú+are we trying to operate on an old version?NrÉ   ©rÓ   rm   s     r\   Úvalidate_versionzFixed.validate_versionq  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)r0  r-  )rÓ   r)  s     r\   r.  zFixed.infer_axest  s"   € ð
 �M‰MˆØˆ9ØØ�‰ÔØr^   c                ó   — t        d«      ‚)Nz>cannot read on an abstract storer: subclasses should implement©r¬   ©rÓ   rm   r¥   r£   r¤   s        r\   r%  z
Fixed.read  s   € ô "ØLó
ð 	
r^   c                ó   — t        d«      ‚)Nz?cannot write on an abstract storer: subclasses should implementr:  ©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
        TrY  Nz#cannot delete on an abstract storer)r^  r_  rÆ   rÚ  rÁ   r°   )rÓ   rm   r£   r¤   s       r\   r`  zFixed.delete�  s>   € ô �<‰<˜˜u dÔ+Ø�L‰L×$Ñ$ T§Z¡Z¸4Ð$Ô@ØäÐ=Ó>Ð>r^   )rV   r   )
rÄ   r›   rÁ   rM   r[   rö  rŽ   ra   rä  rå  rì  )rä  ztuple[int, int, int]ræ  rë  )rä  r  rè  )rä  zLiteral[True] | NonerX   ©NNNN)r£   rã  r¤   rã  rä  zSeries | DataFramerî  ©r£   rã  r¤   rã  rä  rã  )!rí   rù  rú  rû  rü  r  rJ  rÕ   rý  r  r  rŽ  rù   rÖ  r¦  r¥  rK  rÆ   rÑ   rÎ   rÐ   rT  r*  r-  r0  rÕ  r,  rá  r7  r.  r%  r×  r`  rÉ   r^   r\   r  r  ð
  sû  … ñ
ð ÓØ€K�ÓØ&Ó&Ø
ƒIØÓØ€HˆdÓð  'Øðàðð ðð ð	ð
 ðð 
óð òVó ðVð ò
ó ð
ð ñAó ðAó	 ó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_alias¥  s   € Ø×#Ñ#×'Ñ'¨¨RÓ0Ð0r^   c                óf   — t        |t        «      r|S | j                  j                  |t        «      S rX   )r`   rì   Ú_reverse_index_maprá   r/   )rÓ   Úaliass     r\   Ú_alias_to_classzGenericFixed._alias_to_class¨  s*   € Ü�eœTÔ"àˆLØ×&Ñ&×*Ñ*¨5´%Ó8Ð8r^   c                óô   — | j                  t        |dd«      «      }i }|t        k(  rd	d„}|}n|t        k(  rd	d„}|}n|}d|d<   d|v r|d   |d<   |t        u rt
        }d|v r|d   |d<   |t        u sJ ‚||fS )
NÚindex_classrF  c                óÐ   — t        j                  | j                  | j                  |¬«      }t	        j                  |d ¬«      }|� |j                  d«      j                  |«      }|S )N)r<  r  rb   rA  )r9   Ú_simple_newrx  r<  r.   rI  rJ  )rx  r  r  ÚdtaÚresults        r\   rv   z*GenericFixed._get_index_factory.<locals>.f¶  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Þ  rb   )r+   r:   rP  r1   )rx  r  r  r<  Úparrs        r\   rv   z*GenericFixed._get_index_factory.<locals>.fÃ  s1   € Ü# DÓ)�Ü"×.Ñ.¨v¸UÔC�Ü"×.Ñ.¨t¸$Ô?Ð?r^   Fr¦  r  r  rð  )rL  r’  r.   r1   r/   r5   )rÓ   rT  rN  r¸   rv   rL  s         r\   Ú_get_index_factoryzGenericFixed._get_index_factory®  s¦   € Ø×*Ñ*¬7°5¸-ÈÓ+LÓMˆð ˆØœ-Ò'óð ‰GØœKÒ'ó@ð
 ‰Gà!ˆGØ"ˆF�6‰Nà�U‰?Ø" 6™]ˆF�6‰NØœeÑ#ä(�à�5‰=Ø  ™;ˆF�4‰LØ¤-Ñ/Ð/Ð/à˜ˆÐ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¥   rm   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)  )r[   rT  rŽ   rØ   s    r\   r*  zGenericFixed.set_attrsì  s"   € à"Ÿm™mˆ�
‰
ÔØ ŸK™Kˆ�
‰
Õr^   c           
     óì   — t        t        | j                  dd«      «      | _        t        | j                  dd«      | _        | j
                  D ]$  }t        | |t        | j                  |d«      «       Œ& y)úretrieve our attributesr[   NrŽ   r   )r]   r’  rT  r[   rŽ   rD  r{  )rÓ   r  s     r\   r-  zGenericFixed.get_attrsñ  s[   € ä(¬°·±¸ZÈÓ)NÓOˆŒÜ˜dŸj™j¨(°HÓ=ˆŒØ—‘ò 	;ˆAÜ�D˜!œW T§Z¡Z°°DÓ9Õ:ñ	;r^   c                ó$   — | j                  «        y rX   )r*  r=  s      r\   r×  zGenericFixed.writeø  s   € Ø�‰Õr^   Nc                óh  — ddl }t        | j                  |«      }|j                  }t        |dd«      }t	        ||j
                  «      r%|d   || }t        |dd«      }	|	�Ãt        ||	¬«      }nµt        |dd«      }	t        |dd«      }
|
�t        j                  |
|	¬«      }n||| }|	r3|	j                  d«      r"|	dk(  rd	}	t        |d
d«      }t        |||	«      }nG|	rE|	j                  d«      r4|	dk(  rt        j                  |d¬«      }nt        j                  ||	¬«      }|r|j                  S |S )z2read an array for the specified node (off of groupr   NÚ
transposedFÚ
value_typerÞ  r¥  rÚ  rÛ  r  rÜ  rÝ  )r€   r’  rÁ   r“  r`   ÚVLArrayÚpd_arrayrB  rÑ  rœ  rå  ræ  ÚT)rÓ   r’   r£   r¤   r€   rñ   rT  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‘ä˜E <°Ó6ˆEÜ˜E 7¨DÓ1ˆEàÐ ä—h‘h˜u¨EÔ2‘à˜5 Ð&�á˜×)Ñ)¨,Ô7à˜LÒ(Ø,�EÜ˜U D¨$Ó/�Ü˜c 2 uÓ-‘á˜5×+Ñ+¨MÔ:Ø˜MÒ)ô Ÿ*™* S°Ô9‘CäŸ*™* S°Ô6�CáØ—5‘5ˆLàˆJr^   c                óä   — 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’  rT  Úread_multi_indexrÁ   Úread_index_noder°   )rÓ   r’   r£   r¤   Úvarietyrñ   r‰   s          r\   Ú
read_indexzGenericFixed.read_index'  s‚   € ô ˜$Ÿ*™*¨¨¨XÐ&6Ó7ˆà�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‰   )r`   r0   r{  rT  Úwrite_multi_indexÚ_convert_indexr[   rŽ   Úwrite_arrayrx  r’  rÁ   rŠ  r“  rc   r.   r1   rH  rì   rN  r5   r  r  Ú_get_tz)rÓ   r’   r‰   rñ  rñ   s        r\   Úwrite_indexzGenericFixed.write_index5  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¬«      «      D �]  \  }\  }}}t        |j                  t        «      r%t        |j                  t        «      st        d«      ‚|› d|› �}t        ||| j                  | j                  «      }| j!                  ||j"                  «       t%        | j&                  |«      }	|j(                  |	j*                  _        ||	j*                  _        t        |	j*                  |› d|› �|«       |› d|› �}
| j!                  |
|«       �Œ y )NÚ_nlevelsTr=  z=Saving a MultiIndex with an extension dtype is not supported.Ú_levelÚ_nameÚ_label)r{  rT  rÄ  Ú	enumeraterI  Úlevelsr´  Únamesr`   r<  r*   r4   r¬   rp  r[   rŽ   rq  rx  r’  rÁ   rŠ  r“  rc   )rÓ   r’   r‰   ÚiÚlevÚlevel_codesrc   Ú	level_keyÚ
conv_levelrñ   Ú	label_keys              r\   ro  zGenericFixed.write_multi_indexL  s4  € Ü�—
‘
˜s˜e 8Ð,¨e¯m©mÔ<ä+4Ü�—‘˜eŸk™k¨5¯;©;¸tÔDó,
ó 	5Ñ'ˆAÑ'��[ $ô ˜#Ÿ)™)¤^Ô4¼ZØ—	‘	œ;ô>ô *Ø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{  rB  )	r’  rT  rp  rÁ   rk  r�   rc   rd  r0   )rÓ   r’   r£   r¤   rÄ  rz  r´  r{  r|  r  rñ   r}  r�  r~  s                 r\   rj  zGenericFixed.read_multi_indexg  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
                  ¬«      }|j                   j                  }d }d|j                   v rt        |j                   j                  «      }|j                   }| j                  |«      \  }}	|dv r1 |t        ||| j                  | j                  ¬«      fdt        i|	¤Ž}
n+	  |t        ||| j                  | j                  ¬«      fi |	¤Ž}
||
_        |
S # t        $ rŠ}| j                  dk(  rpt        «       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Þ  rc   )r   r�  r»  r<  r:  r;  r=  r>  )r“  rB  Úprodr¥  rÑ  r_  rŠ  rd   rc   rU  Ú_unconvert_indexr[   rŽ   r�  rG  r   ra   rÞ  r   r4   rH  )rÓ   rñ   r£   r¤   r¥  rŠ  rc   rT  rL  r¸   r‰   ra  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—]‘]Ñ"Ü˜tŸ}™}×1Ñ1Ó2ˆDà—‘ˆØ×1Ñ1°%Ó8‰ˆ�àÐ%Ñ%ÙÜ Ø˜$¨¯©¸t¿{¹{ôñô ð	ð
 ñ‰EðÙÜ$Ø˜d¨T¯]©]À4Ç;Á;ôñð ñ	�ð. ˆŒ
àˆøô' &ò à—K‘K ?Ò2Ü*Ô,Ü˜C›×)Ñ)Ð*BÔCÝ#á#Ü(Ø  $°·±ÀtÇ{Á{ôñô *°(ÄRÇVÁVÔLð	ð
 !ñ‘Eð ô ûðús   Ä*E Å	G ÅB GÇG c                ó@  — t        j                  d|j                  z  «      }| j                  j	                  | j
                  ||«       t        | j
                  |«      }t        |j                  «      |j                  _
        |j                  |j                  _        y)zwrite a 0-len array)rg   N)rB  rÑ  rq  rÆ   Úcreate_arrayrÁ   r’  ra   r<  r“  r_  r¥  )rÓ   r’   r“   Úarrrñ   s        r\   Úwrite_array_emptyzGenericFixed.write_array_empty´  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}t        |t        «      r¤| j                  j                  | j                  |t        «       j                  «       | j                  ¬«      }|j!                  |j#                  «       «       t%        | j                  |«      }t'        |j                  «      |j(                  _        �nŒd }	| j                  �Et-        t.        «      5  t        «       j0                  j3                  |j                  «      }	d d d «       |	�[|sE| j                  j5                  | j                  ||	|j6                  | j                  ¬«      }
||
d d  �nð| j9                  ||«       �nÜ|j                  j:                  t<        j>                  k(  r«tA        jB                  |d¬«      }|rnA|d	k(  rn;tE        d
«      r0tF        |||fz  }tI        jJ                  |tL        tO        «       ¬«       | j                  j                  | j                  |t        «       j                  «       «      }|j!                  |«       �n
tA        jP                  |j                  d«      rp| j                  jS                  | j                  ||jU                  d«      «       t'        |j                  «      t%        | j                  |«      j(                  _        �nzt        |j                  tV        «      r•| j                  jS                  | j                  ||jX                  «       t%        | j                  |«      }t[        |j\                  «      |j(                  _.        d|j                  j^                  › d�|j(                  _        nËtA        jP                  |j                  d«      ro| j                  jS                  | j                  ||jU                  d«      «       t'        |j                  «      t%        | j                  |«      j(                  _        n<|r| j9                  ||«       n'| j                  jS                  | j                  ||«       |t%        | j                  |«      j(                  _0        y # 1 sw Y   �ŒixY w)NT)Úextract_numpyr   Fz^Cannot store a category dtype in an HDF5 dataset that uses format="fixed". Use format="table".rb  )rÊ   ©Úskipnara  Úperformance_warningsru  r4  r5  údatetime64[r>  r±  )1r@   rÁ   rÆ   rÚ  r³  r`   r<  r(   r¬   r2  rb  r<   Úcreate_vlarrayr…   Ú
ObjectAtomrÑ   r�   Úto_numpyr’  ra   r“  r_  r   r©   ÚAtomÚ
from_dtypeÚcreate_carrayr¥  r‰  rì   rB  Úobject_r   Úinfer_dtyper   rs   ry  rz  r   r!   rF  r‡  Úviewr)   Úasi8rr  r  Úunitr^  )rÓ   r’   rÒ  r  r“   Úempty_arrayr^  Úvlarrrñ   rº  ÚcaÚinferred_typer~  s                r\   rq  zGenericFixed.write_array½  s¶  € ô ˜c°Ô6ˆà�$—*‘*ÑØ�L‰L×$Ñ$ T§Z¡Z°Ô5ð —j‘j A‘oˆØˆ
ä�e—k‘kÔ#3Ô4Ü%ð/óð ñ Ü�u˜cÔ"àŸ™�Ø!�
ä�eœ_Ô-ð —L‘L×/Ñ/Ø—
‘
˜C¤£×!5Ñ!5Ó!7ÀÇÁð 0ó ˆEð �L‰L˜Ÿ™Ó)Ô*Ü˜4Ÿ:™: sÓ+ˆDÜ'*¨5¯;©;Ó'7ˆD�M‰MÖ$ð ˆDØ�}‰}Ð(ÜœjÓ)ñ Bä"›9Ÿ>™>×4Ñ4°U·[±[ÓA�D÷Bð Ðñ
 #ØŸ™×3Ñ3ØŸ
™
 C¨¨u¯{©{ÀDÇMÁMð 4ó �Bð "�B‘q’Eð ×*Ñ*¨3°Ö6à—‘×!Ñ!¤R§Z¡ZÒ/ô !$§¡°¸eÔ D�ÙØØ" hÒ.ØÜÐ 6Ô7Ü(¨M¸3ÀÐ+FÑF�BÜ—M‘M "Ô&8ÔEUÓEWÕXàŸ™×3Ñ3Ø—J‘J ¤W£Y×%9Ñ%9Ó%;ó�ð —‘˜UÖ#ä—‘ §¡¨cÔ2Ø—‘×)Ñ)¨$¯*©*°c¸5¿:¹:ÀdÓ;KÔLÜ?BÀ5Ç;Á;Ó?O”˜Ÿ
™
 CÓ(×1Ñ1Ö<Ü˜EŸK™K¬Ô9ð
 —‘×)Ñ)Ø—J‘JØØ—J‘Jôô ˜tŸz™z¨3Ó/�ä#*¨5¯8©8Ó#4�—‘Ô Ø-8¸¿¹×9IÑ9IÐ8JÈ!Ð+L�—‘Õ(Ü—‘ §¡¨cÔ2Ø—‘×)Ñ)¨$¯*©*°c¸5¿:¹:ÀdÓ;KÔLÜ?BÀ5Ç;Á;Ó?O”˜Ÿ
™
 CÓ(×1Ñ1Õ<ÙØ×&Ñ& s¨EÕ2à—‘×)Ñ)¨$¯*©*°c¸5ÔAà7AŒ�—
‘
˜CÓ ×)Ñ)Õ4÷{Bñ Bús   Å%.S:Ó:Træ  rë  rì  rð  rï  )r’   ra   r£   rã  r¤   rã  rä  r/   )r’   ra   r‰   r/   rä  rå  )r’   ra   r‰   r0   rä  rå  )r’   ra   r£   rã  r¤   rã  rä  r0   )rñ   rM   r£   rã  r¤   rã  rä  r/   )r’   ra   r“   rO   rä  rå  rX   )r’   ra   rÒ  rN   r  zIndex | Nonerä  rå  )rí   rù  rú  rû  r.   r1   rG  r  rJ  rD  rü  rH  rL  rU  rW  rý  rÕ  r*  r-  r×  rd  rm  rs  ro  rj  rk  r‰  rq  )ri  rO  r  s   000r\   rB  rB  �  sV  … Ù$à$ j°+¸xÐH€OØ+:×+@Ñ+@Ó+B×CÐC¡4 1 a˜!˜Q™$ÔCÐØ€J�	Óó1ò9ò)óVð òó ðó(ó
;óô*ðZ FJðFØðFØ)ðFØ8BðFà	óFó5ó.5ð8 FJð
Øð
Ø)ð
Ø8Bð
à	ó
ð0 HLð4Øð4Ø!+ð4Ø:Dð4à	ó4ól*ð BFðaBØðaBØ)ðaBØ2>ðaBà	ôaBùôy Ds   ¢B$rB  c                  ód   ‡ — e Zd ZU dZdgZded<   edd„«       Z	 	 	 	 d	 	 	 	 	 d	d„Zd
ˆ fd„Z	ˆ xZ
S )rÂ  r·  rc   rF   c                ón   — 	 t        | j                  j                  «      fS # t        t        f$ r Y y w xY wrX   )rl   rÁ   rx  r°   r�   rØ   s    r\   r¥  zSeriesFixed.shape'  s6   € ð	Ü˜Ÿ
™
×)Ñ)Ó*Ð,Ð,øÜœ>Ð*ò 	Ùð	ús   ‚" ¢4³4c                ó¸  — | j                  ||«       | j                  d||¬«      }| j                  d||¬«      }	 t        ||| j                  d¬«      }|S # t
        $ ry}| j                  dk(  r^t        «       rTt        |«      j                  d«      r:t        r4t        ||| j                  dt        dt        j                  ¬	«      ¬
«      }n‚ Y d }~|S d }~ww xY w)Nr‰   rh  rx  F)r‰   rc   r¦  r:  r;  r=  r>  )r‰   rc   r¦  r<  )rW  rm  rd  r3   rc   rG  rŽ   r   ra   rÞ  r   r4   rB  rH  )	rÓ   rm   r¥   r£   r¤   r‰   rx  rR  ra  s	            r\   r%  zSeriesFixed.read.  sÏ   € ð 	×Ñ˜7 EÔ*Ø—‘ ¨u¸4�Ó@ˆØ—‘ °¸T�ÓBˆð	Ü˜F¨%°d·i±iÀeÔLˆFð" ˆøô! "ò 	à—‘˜Ò.Ü&Ô(Ü˜“H×%Ñ%Ð&>Ô?ÝäØØØŸ™ØÜ%¨hÄÇÁÔHô‘ð ó ð ˆûð!	ús   ¼A Á	CÁ A.CÃCc                ó¸   •— t        ‰| �  |fi |¤Ž | j                  d|j                  «       | j	                  d|«       |j
                  | j                  _        y )Nr‰   rx  )rœ  r×  rs  r‰   rq  rc   rT  )rÓ   rÒ  r¸   r�  s      €r\   r×  zSeriesFixed.writeL  sG   ø€ Ü‰‰�cÑ$˜VÒ$Ø×Ñ˜ #§)¡)Ô,Ø×Ñ˜ 3Ô'ØŸ(™(ˆ�
‰
�r^   )rä  ztuple[int] | Noner?  ©r£   rã  r¤   rã  rä  r3   rë  )rí   rù  rú  r  rD  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 )ÚBlockManagerFixedrq  Ú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¥  rg   )	rq  rp  r¦  r’  rÁ   Úblock0_valuesrj   r�   r�   )rÓ   rq  r  r|  rñ   r¥  s         r\   r¥  zBlockManagerFixed.shapeX  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                óv  — | 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¬«      j-                  «       }|j/                  |¬«      S t        |d   |d   ¬«      S )Nr   rð  rA  rh  r¨  r©  rî  rg   F©r¥   r‰   r¦  TrŒ  )r@  rl  rÓ  ©r¥   r‰   )rW  r  Ú_get_block_manager_axisrp  rq  rm  r�   r¦  rd  rv  r-   rb  r   r`   rB  rC  r   rì  r4   rH  rl   r6   r¦  r{  )rÓ   rm   r¥   r£   r¤   Úselect_axisrc  r|  r&  r'  Úaxr  ÚdfsÚ	blk_itemsrx  ÚdfÚouts                    r\   r%  zBlockManagerFixed.reads  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Ô%×*Ñ*Ó,ˆCØ—;‘; u�;Ó-Ð-ä  a¡°°Q±Ô8Ð8r^   c                óŒ  •— t        ‰| �  |fi |¤Ž |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   z/Columns index has to be unique for fixed formatrA  r¨  rî  )r  r©  )rœ  r×  Ú_mgrÚis_consolidatedÚconsolidaterq  rT  ry  rc  Ú	is_uniquer©   rs  rl   Úblocksr¦  r  rw  Úmgr_locsrq  rx  )	rÓ   rÒ  r¸   r¥  r|  r°  Úblkr²  r�  s	           €r\   r×  zBlockManagerFixed.write›  s  ø€ Ü‰‰�cÑ$˜VÒ$à�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list[int] | Noner?  ©r£   rã  r¤   rã  rä  r-   rë  )
rí   rù  rú  rD  rü  rý  r¥  r%  r×  rö  r÷  s   @r\   r¥  r¥  S  s`   ø… Ø˜)Ð$€JàƒLàòó ðð8 ØØ Øð&9ð ð	&9ð
 ð&9ð 
ó&9÷P;ñ ;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Ã  ±  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>d„Zd?d „Zd@d!„ZdAd"„ZdBd#„Z d7d$„Z!d7d%„Z"dCd7d&„Z#d7d'„Z$e%d(„ «       Z&	 dD	 	 	 dEd)„Z'	 dF	 	 	 	 	 dGd*„Z(e)dHd+„«       Z*dId,„Z+	 	 	 	 dJ	 	 	 dKd-„Z,e-	 	 	 	 dLd.„«       Z.dCdMd/„Z/	 	 	 	 	 	 	 	 dNd0„Z0	 dD	 	 	 dOd1„Z1	 	 	 dD	 	 	 	 	 dPd2„Z2ˆ xZ3S )Qr  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_tableru   ra   r  r´  rg   zint | list[Hashable]rz  Trj   r  c                ó¨   •— t         ‰| �  ||||¬«       |xs g | _        |xs g | _        |xs g | _        |xs g | _        |	xs i | _        |
| _        y )Nr»  )rœ  rÕ   Ú
index_axesrL  Úvalues_axesr�   r®  r‹   )rÓ   rÄ   rÁ   r[   rŽ   rÂ  rL  rÃ  r�   r®  r‹   r�  s              €r\   rÕ   zTable.__init__Ö  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  rF  z,dc->[r>  r  r  r  z (typ->z,nrows->z,ncols->z,indexers->[r  )r.  rl   r�   r   r  r  ra   rÂ  rc   rŽ  rÆ  r,  Úncols)rÓ   Újdcr„  ÚverrP  Ú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)rc  rc   )rÓ   rp  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 [rr  r>  )rÂ  rL  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©   rx  r\  )rÓ   r)  rp  Ú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)r`   rz  rj   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)r^  Úfill_missing_namesr‰   r{  Úreset_indexr©   r`   r-   )rÓ   rÒ  rz  Ú	reset_objra  s        r\   Úvalidate_multiindexzTable.validate_multiindex4  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   )rB  r„  rÂ  r^  r¥  ©rÓ   r|  s     r\   Únrows_expectedzTable.nrows_expectedE  s2   € ô �w‰w°D·O±OÖD¨q˜Ÿ	™	Ÿ™¨Ó*ÒDÓEÐEùÒDs   ž Ac                ó   — d| j                   v S )zhas this table been createdru   r/  rØ   s    r\   rÕ  zTable.is_existsJ  s   € ð ˜$Ÿ*™*Ð$Ð$r^   c                ó0   — t        | j                  dd «      S ©Nru   ©r’  rÁ   rØ   s    r\   r0  zTable.storableO  s   € ä�t—z‘z 7¨DÓ1Ð1r^   c                ó   — | j                   S )z,return the table group (this is my storable))r0  rØ   s    r\   ru   zTable.tableS  s   € ð �}‰}Ðr^   c                ó.   — | j                   j                  S rX   )ru   r<  rØ   s    r\   r<  zTable.dtypeX  s   € à�z‰z×ÑÐr^   c                ó.   — | j                   j                  S rX   rW  rØ   s    r\   rX  zTable.description\  rY  r^   c                óV   — t        j                  | j                  | j                  «      S rX   )rG  rH  rÂ  rÃ  rØ   s    r\   rc  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rX   )rl   rx  )ri  r¢   s     r\   rk  zTable.ncols.<locals>.<genexpr>g  s   è ø€ Ò; Q”3�q—x‘x—=Ñ;ùs   ‚!)ÚsumrÃ  rØ   s    r\   rÈ  zTable.ncolsd  s   € ô Ñ;¨$×*:Ñ*:Ô;Ó;Ð;r^   c                 ó   — yr•  rÉ   rØ   s    r\   Úis_transposedzTable.is_transposedi  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   )rk   rG  rH  rL  ré  rÂ  rA  ©rÓ   r¢   s     r\   Údata_orientationzTable.data_orientationm  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   rg   N)rÂ  r  rL  rÃ  rc   ro  r�   rm  )	rÓ   Ú
axis_namesr¢   Úd1rA  rx  Úd2r  Úd3s	            r\   Ú
queryableszTable.queryablesw  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Â  rA  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â  ru   )rˆ   r[   rŽ   r‹   N)rÄ   r—   rû  r3   r[   rŽ   r‹   )rÓ   r’   rx  s      r\   rk  zTable.write_metadata“  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_metadata¥  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)ra   r´  rT  r÷  rù  rL  r�   r‹   r[   rŽ   rz  r®  rØ   s    r\   r*  zTable.set_attrs«  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        | 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[  rL  Nr�   r®  r‹   r[   rŽ   r   rz  )r’  rT  rL  r�   r®  r‹   r]   r[   rŽ   rz  Ú
indexablesr	  rÂ  rÃ  rí  s     r\   r-  zTable.get_attrs¸  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ˆŒÜ˜dŸj™j¨(°HÓ=ˆŒÜ&-¨d¯j©j¸(ÀDÓ&IÒ&OÈRˆŒØ&*§o¡oÖK ¸×9JÓ9Jš1ÒKˆŒØ'+§¡ÖP !¸a×>OÓ>OšAÒPˆÕùò LùÚPs   Ã,D7Ã>D7ÄD<Ä*D<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 )r5  Nr  ru  )	r  rq   r   r  ra   ry  rz  r   r!   )rÓ   rm   rP  r~  s       r\   r7  zTable.validate_versionÄ  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
        Nrx  zmin_itemsize has the key [z%] which is not an axis or data_column)r`   rm  rõ  r©   )rÓ   rŠ   ÚqrO  s       r\   Úvalidate_min_itemsizezTable.validate_min_itemsizeÏ  sd   € ð
 ÐØÜ˜,¬Ô-Øà�O‰OÓˆØò 	ˆAà�HŠ}ØØ˜ŠzÜ Ø0°°ð 4"ð "óð ñ	r^   c                ób  ‡ ‡‡‡‡— g }‰ j                   Š‰ j                  j                  Št        ‰ j                  j                  «      D ]k  \  }\  }}t        ‰|«      }‰ j                  |«      }|�dnd}|› d�}t        ‰|d«      }	t        ||||	|‰ j                  ||¬«      }
|j                  |
«       Œm t        ‰ j                  «      Št        |«      Šdˆˆˆˆ ˆ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  )rc   rA  r  rŠ  r  ru   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¢  )
rc   r  rx  rŠ  r  r  ru   r½   r  r<  )
r`   ra   rš  rù  r’  Ú_maybe_adjust_namer  rª  rŠ  ru   )r|  rp  Úklassrº  Úadj_namerx  r<  rŠ  Úmdr½   rÒ  Úbase_posr„  ÚdescrÓ   Útable_attrss              €€€€€r\   rv   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^   )rp  ra   rä  rš  )rX  ru   rT  ry  r÷  r’  rŠ  r  r�   ro  r�   rl   rs  rù  )rÓ   Ú_indexablesr|  rA  rc   rº  r
  r½   r  rŠ  Ú	index_colrv   rp  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   rg   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É   )r.  rc  r
  r  r`   rk   rj   ru   r’  rj  r¡  r‰   r‰  rŠ  Úremove_indexrì   rœ  r°   r‹  rL  r�   )rÓ   r¥   r‰  rŠ  r¢   Úkwru   rp  r  r‰   Úcur_optlevelÚcur_kinds               r\   r‹  zTable.create_index0  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]]
        r3  rä  )
Ú	Selectionrµ   rc  rƒ  r®  rO  r‹   r[   rŽ   r�   )	rÓ   rm   r£   r¤   Ú	selectionrx  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_object¨  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ì   r0   z"cannot use a multi-index on axis [z] with data_columns Trx  )
rl   r®  rá   r©   rj   r`   rm  ro  rs  r	  )
rÓ   r�   rŠ   rL  rA  Úaxis_labelsr®  Úexisting_data_columnsrO  rp  s
             r\   Úvalidate_data_columnszTable.validate_data_columns­  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¬«      «      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º  r>  Nr   TFr  rg   z<currently only support ndim-1 indexers in an AppendableTablerH  c              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wrX   rÉ   )ri  rP  rc  s     €r\   rk  z%Table._create_axes.<locals>.<genexpr>  s   øè ø€ Ò6˜¨°ª”1Ñ6ùs   ƒ	�rð  r‡  r{  rì   r=  rû  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colrŠ   r‹   r[   rŽ   r¥   r  r†  )rc   r  rx  r  r  rŠ  r  r€  r½   r  r<  r¥  )
rÄ   rÁ   r[   rŽ   rÂ  rL  rÃ  r�   r®  r‹   rz  )Hr`   r-   rÁ   rÀ   r°   rì   Ú_get_axis_numberr.  rÂ  rA  rj   r�   r‹   r®  rq  rl   r©   rn  rc  rL  r,   rB  r?   ru  rx  r{  rí   r�   Ú_get_axis_namerp  r[   rŽ   r  r  rc  Ú_reindex_axisr!  r  rC  Ú_get_blocks_and_itemsrÃ  ry  rI  rš  rù  ra   Ú
IndexErrorrë   Ú_maybe_convert_for_string_atomrx  r  r  r»  rª  r<  rc   r’  rr  r  r(   r€  ræ  rà  ré  r4   r©  r
  rÄ   r2  rz  r  rá  )/rÓ   rc  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  rc   r%  ra  Únew_nameÚdata_convertedr	  r  rŠ  r  r½   r  r€  r¥  r«  r[  ÚdcsÚ	new_tables/    `                                             r\   Ú_create_axeszTable._create_axesÓ  s9  ø€ ô@ ˜#œ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ÈÔ+NÓ!Oó 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   ÁXÂXÎ=XÕX?Õ)X?ØX<ØX7Ø7X<c           
     óÔ  — d„ }| j                   }t        |j                  «      } ||«      }t        |«      r¼|d   \  }	}
t	        |
«      j                  t	        |«      «      }| j                  ||	¬«      j                   }t        |j                  «      } ||«      }|D ]R  }| j                  |g|	¬«      j                   }|j                  |j                  «       |j                   ||«      «       ŒT |r•t        ||d¬«      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)	Nc                ó†   — | j                   D �cg c]'  }| j                  j                  |j                  «      ‘Œ) c}S c c}w rX   )rº  r  rw  r»  )Úmgrr¼  s     r\   Úget_blk_itemsz2Table._get_blocks_and_items.<locals>.get_blk_itemsÎ  s+   € Ø<?¿J¹JÖG°S�C—I‘I—N‘N 3§<¡<Õ0ÒGÐGùÒGs   �,>r   rl  Tr=  r  z+cannot match existing table structure for [z] on appending data)r¶  rj   rº  rl   r/   rt  r{  rs  rI  rk   Útolistrx  rM  r�   r*  rë   r   rD   r©   )r¸  r,  r.  rÃ  r�   r@  r?  rº  r²  rA  r  Ú
new_labelsrp  Úbr7  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear  ra  ÚitemÚjitemss                          r\   r)  zTable._get_blocks_and_itemsÅ  sö  € ò	Hð �j‰jˆÜ" 3§:¡:Ó.ˆÙ!.¨sÓ!3ˆ	äˆ|Ôð
 !3°1Ñ 5ÑˆD�+Ü˜{Ó+×6Ñ6´u¸\Ó7JÓKˆJØ—-‘- 
°�-Ó6×;Ñ;ˆCä˜#Ÿ*™*Ó%ˆFÙ% cÓ*ˆIØ!ò 5�ð —m‘m Q C¨d�mÓ3×8Ñ8�Ø—‘˜cŸj™jÔ)Ø× Ñ ¡¨sÓ!3Õ4ð5ñ ô #& f¨iÀÔ"E÷á�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*   Ä&FÅ6FÆG'Æ$G"Æ3GÇG"Ç"G'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�«      ‚)Nrl  rg   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSr&  Ú	_get_axisrÖ  Úunionr/   rz  rz  rA   r’  rx  r`   r-   r©   )
ÚfieldÚfiltÚopr2  Úaxis_numberÚaxis_valuesÚtakersrx  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^   )	rj   rÖ  r`   rz  ÚinsertrL  r(  Úfilterrˆ   )rÓ   rÒ  r  r¥   r  rA  ÚlabelsrU  rO  rQ  rP  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'  ru   )rc   rd  rX  é	   )r™   rš   rÔ   rÊ   )
ÚmaxrÞ  rc  r  r  rÎ   r…   r  rÐ   rÑ   )rÓ   rš   r™   rÔ   rd  r|  r¢   rÊ   s           r\   Úcreate_descriptionzTable.create_description8  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        |d¬«      S )zf
        select coordinates (row numbers) from a table; return the
        coordinates object
        Fr3  rg   rh  râ  )r7  r.  r  Úselect_coordsrW  rˆ   r:  r  r\  Úilocrx  r/   )
rÓ   rm   r£   r¤   r  ÚcoordsrO  rQ  rP  r¥  s
             r\   r5  zTable.read_coordinatesW  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                óH  — | 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                  ¬«      }|d   }t        | j                  j                   |› d�d«      }	t#        ||d|	¬	«      c S  t%        d|› d
�«      ‚)zj
        return a single column from the table, generally only indexables
        are interesting
        FNz4read_column does not currently accept a where clausezcolumn [z=] can not be extracted individually; it is not data indexablerä  rg   r¢  )rc   r¦  r<  z] not found in the table)r7  r.  r°   rc  rc   r
  r©   r’  ru   rj  rƒ  r®  rO  r‹   r[   rŽ   rT  r3   rë   )
rÓ   r9  rm   r£   r¤   r¢   rp  Ú
col_valuesÚcvsr<  s
             r\   r:  zTable.read_columnq  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Ø!Ÿ]™]ØŸ;™;ð	 'ó �
ð ! ‘m�Ü §
¡
× 0Ñ 0°V°H¸EÐ2BÀDÓI�Ü˜c¨°UÀ%ÔHÒHð'	Iô* ˜ & Ð)AÐBÓCÐCr^   )Nr   NNNNNN)rÄ   r›   rÁ   rM   r[   rö  rŽ   ra   rÂ  zlist[IndexCol] | NonerL  z list[tuple[AxisInt, Any]] | NonerÃ  zlist[DataCol] | Noner�   zlist | Noner®  zdict | Nonerä  rå  ræ  )rp  ra   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ä  zlist[tuple[Any, Any]])rä  rê  )r’   ra   rä  ra   )r’   ra   rx  r�  rä  rå  rç  rX   rî  )rŠ  rö  rä  rå  rð  )r£   rã  r¤   rã  rä  z9list[tuple[np.ndarray, np.ndarray] | tuple[Index, Index]]©r^  r  r÷  )TNNN)rÒ  r-   rá  r  )r¸  r-   r,  r  )r  r  rä  r-   )r™   rã  rÔ   r  rd  rã  rä  re  ©r£   rã  r¤   rã  )r9  ra   r£   rã  r¤   rã  )4rí   rù  rú  rû  r  r  rü  rz  rJ  rÕ   rý  rÆ  rù   rã   rá  rÖ  rÛ  rÞ  rÕ  r0  ru   r<  rX  rc  rÈ  rë  rî  rõ  r÷  rù  rû  rk  rŠ  r*  r-  r7  r  r   r   r‹  r  rõ  r  r!  r<  Ústaticmethodr)  rY  r]  r5  r:  rö  r÷  s   @r\   r  r  ¶  sE  ø… ñð. €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 ð9!Øð9!àò9!ó ð9!ôv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 readr:  r;  s        r\   r%  zWORMTable.read¨  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 writer:  r=  s      r\   r×  zWORMTable.write´  s   € ô "Ð"FÓGÐGr^   r?  rg  rë  )rí   rù  rú  rû  r´  r%  r×  rÉ   r^   r\   rÊ  rÊ  Ÿ  s>   „ ñð €Jð ØØ Øð
Gð ð	
Gð
 ó
GôHr^   rÊ  c                  ó„   — 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 )Nru   )rc  rÒ  rá  rŠ   r‹   r�   )rš   r™   rÔ   rd  rU  )rŒ   )rÕ  rÆ   rÚ  rÁ   r<  rc  re  r]  r*  Úcreate_tabler®  rT  rn  Ú
write_data)rÓ   rÒ  rc  r�   rš   r™   rÔ   rŠ   r§   rd  rŒ   r‹   r�   rU  ru   r¢   Úoptionss                    r\   r×  zAppendableTable.writeÃ  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 |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  \  }}|g| j                   ||
|z         j,                  ¢­}|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   rl  Úu1Frâ  rg   Nr   rÞ  )Úindexesrò  rx  )r<  r{  rÞ  rÃ  r7   r¥  rg  r`   rB  rC  r�   rì  ré  rÂ  r^  rl   rR  Ú	transposeÚrollÚarangerq  ry  r¥  ÚreshaperÑ  r  rp  Úwrite_data_chunk)rÓ   r§   rŒ   r{  r,  Úmasksr¢   rò  r±  ru  Únindexesrx  r  Úbvaluesr|  Ú	new_shapeÚrowsÚchunksÚstart_iÚend_is                       r\   rq  zAppendableTable.write_dataþ  sƒ  € ð —
‘
× Ñ ˆØ×#Ñ#ˆð ˆÙØ×%Ñ%ò @�ô ˜AŸF™F“|×'Ñ'¨QÐ'Ó/�Ü˜d¤B§J¡JÕ/Ø—L‘L §¡¨T¸ Ó!>Õ?ð@ñ Ø˜‘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ØÐG §¡¨E°(¸Q±,Ñ,?Ñ!@×!FÑ!FÑGˆ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   ÃI<ÄJÄ(A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â  )rB  r„  r¥  rl   rÑ  r<  r{  ry  ré  rì  r  rg  ru   r�   r  )rÓ   r  ru  rò  rx  r  r,  r{  r|  r|  r|  r±  s               r\   rz  z AppendableTable.write_data_chunk9  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                  «      }|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 )	NTrY  rh  Frâ  rg   r   rß  )rl   r,  rÆ   rÚ  rÁ   ru   Úremove_rowsr  r.  r  r_  r3   Úsort_valuesÚdiffrj   r‰   r�   rV  rM  Úreversedrw  rp  )rÓ   rm   r£   r¤   r,  ru   r  rx  Úsorted_seriesÚlnr‡  r²   Úpgr  r  s                  r\   r`  zAppendableTable.deletee  sÒ  € ð ˆ=¤ E¤
Øˆ}  ØŸ
™
�Ø—‘×(Ñ(¨¯©¸tÐ(ÔDð ˆLð	 �<ØŸ:™:�DØŸ
™
×.Ñ.°UÀÐ.ÓF�Ø—
‘
× Ñ Ô"ØˆLð �‰Ô Øð —
‘
ˆÜ˜d E°¸TÔBˆ	Ø×(Ñ(Ó*ˆô ˜v¨EÔ2×>Ñ>Ó@ˆÜ�Óˆáà ×%Ñ%Ó'ˆDÜ˜$˜t a™x™.×.Ñ.Ó/ˆFñ Ø˜�ð �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  rU  r  rä  rå  rí  )r§   rã  rŒ   r  rä  rå  )
r  r�  ru  úlist[np.ndarray]rò  znpt.NDArray[np.bool_] | Nonerx  rŒ  rä  rå  rî  r@  )	rí   rù  rú  rû  r´  r×  rq  rz  r`  rÉ   r^   r\   r‘  r‘  ½  sÈ   „ Ù2à€Jð ØØØØØØ $ØØØØØ ð93ð ð	93ð ð93ð ð93ð ð93ð 
ó93ôv9ðv*àð*ð "ð*ð +ð	*ð
 !ð*ð 
ó*ðZ HLð:Ø!+ð:Ø:Dð:à	ô: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È  rm  rµ  r¿  r  r  r  c                ó:   — | j                   d   j                  dk(  S )Nr   rg   )rÂ  rA  rØ   s    r\   rë  z"AppendableFrameTable.is_transposedª  s   € à�‰˜qÑ!×&Ñ&¨!Ñ+Ð+r^   c                ó"   — |r|j                   }|S )zthese are written transposed)rb  r  s      r\   r  zAppendableFrameTable.get_object®  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 �]B  \  }}|| 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*                  t0        f«      r	 t3        |j"                  ||d¬«      }n8t'        |t        «      rt3        |||¬«      }nt3        jD                  |g||¬«      }t9        «       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                  |«       �ŒE t        |«      dk(  r|d   }ntW        |d¬«      }tY        | |||¬«      }| j[                  |||¬«      }|S c c}}w # t4        $ ry}| j6                  dk(  r^t9        «       rTt;        |«      j=                  d«      r:t>        r4t3        |j"                  ||dtA        dt(        jB                  ¬«      ¬«      }n‚ Y d }~�Œ‹d }~ww xY w)Nr3  r   rg   rì   r0   r{  T©Úinplacerc   rb   Fr¬  r:  r;  r=  r>  )r¥   r‰   r¦  r<  r­  rã  r¢  )ra   ra  rl  )r  r¥   ).r7  r.  r  rl   rL  r®  rá   ry  rc  rÂ  rÃ  r/   r0   Úfrom_tuplesÚ	set_namesrë  r’  rb  rq  r`   rB  rC  ry  r¥  r9   r-   rG  rŽ   r   ra   rÞ  r   r4   rH  Ú_from_arraysr<  rŠ  Údtypesrg  ru   rT  rì  r�   r6   r  rY  )rÓ   rm   r¥   r£   r¤   rR  r®  r|  r°  ÚindsÚindr‰   Úframesr¢   Ú
index_valsr^  rj  r{  rx  Úindex_Úcols_r³  ra  r9  r<  r  s                             r\   r%  zAppendableFrameTable.readµ  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Ð(<Ó=�ä˜&¤2§:¡:¬}Ð"=Ô>ðÜ" 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Ü.Ô0Ü ›H×-Ñ-Ð.FÔGÝ'ä&Ø"ŸH™HØ$)Ø"(Ø!&Ü"-°hÌÏÉÔ"Pô™ð õ ûðús%   ÂM3Â,M3ÈM9Í9	O;ÎA.O6Ï6O;rì  rf  r?  rg  )rí   rù  rú  rû  r  r´  rq  r-   r  rü  rý  rë  rõ  r  r%  rÉ   r^   r\   rÈ  rÈ  ¢  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Æ  rm  r¼  r½  r  c                 ó   — yr•  rÉ   rØ   s    r\   rë  z#AppendableSeriesTable.is_transposed$  r–  r^   c                ó   — |S rX   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 tablerx  ©rÒ  r�   NrÉ   )r`   r-   rc   Úto_framerœ  r×  r¥   rA  )rÓ   rÒ  r�   r¸   rc   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   r@  Tr‘  rx  )
rÖ  r`   rz  rj   rV  rœ  r%  Ú	set_indexr`  rc   )	rÓ   rm   r¥   r£   r¤   rÖ  r  r)  r�  s	           €r\   r%  zAppendableSeriesTable.read4  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ì  rf  rX   rë  r?  r£  )rí   rù  rú  rû  r  r´  rq  r3   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Ç  rm  r¼  r¾  c                ó  •— |j                   xs d}| j                  |«      \  }| _        t        | j                  t        «      sJ ‚t	        | j                  «      }|j                  |«       t        |«      |_        t        ‰| �$  dd|i|¤Ž y)r¡  rx  rÒ  NrÉ   )
rc   rÛ  rz  r`   rj   r�   r/   r¥   rœ  r×  )rÓ   rÒ  r¸   rc   Únewobjrj  r�  s         €r\   r×  z AppendableMultiSeriesTable.writeT  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Ç  M  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 rX   )r  rØ   s    r\   rŽ  zGenericTable.pandas_typeh  s   € à×ÑÐr^   c                óL   — t        | j                  dd «      xs | j                  S rá  râ  rØ   s    r\   r0  zGenericTable.storablel  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)	rL  r‹   rz  r   r	  rÂ  rÃ  rc   r�   rí  s     r\   r-  zGenericTable.get_attrsp  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   )rc   rA  ru   r½   r  )rc   r  rx  r  ru   r½   r  )rX  rŠ  r“  ru   ry  Ú_v_namesr`   ra   r’  r  r�   )
rÓ   r|  r
  r½   r  r  r|  r  rº  r„  s
             r\   r   zGenericTable.indexablesz  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 a generic tabler:  )rÓ   r¸   s     r\   r×  zGenericTable.writež  s   € Ü!Ð"CÓDÐDr^   Nræ  rë  )rí   rù  rú  rû  r  r´  rq  r-   r  rü  rý  rŽ  r0  r-  r   r   r×  rÉ   r^   r\   rÅ  rÅ  _  sg   … ÙDà€KØ €JØ€DØ€HØÓàò ó ð ð ñ@ó ð@ó?ð ñ ó ð ôFE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_shortª  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¥   rA  rÛ  rz  r`   rj   rV  rœ  r×  )rÓ   rÒ  r�   r¸   r  r�  s        €r\   r×  zAppendableMultiFrameTable.write¯  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 )Nr@  )	rœ  r%  r¥  rz  r‰   r”  r{  Ú
_re_levelsÚsearch)rÓ   rm   r¥   r£   r¤   r³  rc   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æ  rX   rë  r?  r½  )rí   rù  rú  rû  r´  r-   r  rq  ÚreÚcompilerµ  rý  rÆ  r×  r%  rö  r÷  s   @r\   rÉ  rÉ  ¢  ss   ø„ Ù$à(€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)	rM  rA   ÚequalsÚuniquery  Úslicerq  rz  rk   )rÒ  rA  rX  r)  r°  Úslicers         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                óÖ   — | j                   dk(  sJ | j                   «       ‚t        j                  |«      \  }}t        d|«      }t	        ||¬«      }t        j                  | |¬«      }|S )zá
    Coerce the values to a DatetimeArray with appropriate tz.

    Parameters
    ----------
    values : ndarray[int64]
    tz : str, tzinfo, or None
    datetime64_dtype : str, e.g. "datetime64[ns]", "datetime64[25s]"
    r5  rS   )r  rš  rÞ  )r<  rB  Údatetime_datar   r;   r9   Ú_from_sequence)rx  r  Údatetime64_dtyperš  rÅ  r<  rQ  s          r\   rå  rå  í  sg   € ð �<‰<˜4ÒÐ- §¡Ó-Ðô ×ÑÐ/Ó0�G€Dˆ!Ü�
˜DÓ!€Dô ˜2 DÔ)€EÜ
×
&Ñ
& v°UÔ
;€CØ€Jr^   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  )rx  rŠ  r  r  r  r  zMultiIndex not supported here!FrŒ  r   rÞ  )r  ra  )ÚintegerÚfloating)rx  rŠ  r  r  r�  )r`   ra   rc   r©  rª  rù  r»  r   rF  r<  r'   r#   r  r’  r0   r°   r—  rB  ræ  Ú	toordinalÚint32r…   Ú	Time32ColÚ_convert_string_arrayr  rb  rC  r�  r‘  )rc   r‰   r[   rŽ   r  rñ  r«  rŠ  rº  rž  rx  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«      r2|dk(  rt        | d¬«      }|S t        | j                  |«      d¬«      }|S |j                  d«      r2|dk(  rt        | d¬«      }|S t        | j                  |«      d¬«      }|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Ú  Frâ  rÜ  r   rÞ  )rÈ  Úfloatr  ra  rä  r�  r   zunrecognized index type )rœ  r.   r˜  r5   rB  ræ  r   rç  r�  r©   rè  rð  )r¥  rŠ  r[   rŽ   r‰   r  s         r\   r…  r…  E  s�  € ð ‡��|Ô$Ø�<Òä! $¨UÔ3ˆEð0 €Lô- " $§)¡)¨D£/¸Ô>ˆEð, €Lð+ 
�‰˜Ô	'Ø�=Ò ä" 4¨eÔ4ˆEð$ €Lô! # 4§9¡9¨T£?¸Ô?ˆEð  €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   ÂD- Â D(Â<D- Ä(D- Ä-E<Å	E&
Å%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 columnrC  z>too many timezones in this block, create separate data columnsra  r�  z8NaN representation is too large for existing column sizer   zNo.rÏ  z2]
because its data contents are not [string] but [rÐ  rx  z|Srâ  )r`   r<  r4   r’  r�  r   rB  rC  rc   r   r—  r°   r7   r¦  rë  rl   r  r©   rp  r¥  rÍ  ry  rm  ré  rá   r\  rh  rì  )rc   r}  r%  rŠ   r‹   r[   rŽ   r¥   r«  rž  rò  r¥  r|  r[  Úerror_column_labelr9  r  Úecis                     r\   r+  r+  f  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<  rg   ÚSrÞ  )rl   r3   ré  ra   Úencoderî  ry  r¥  r"   r\  Ú
libwritersÚmax_len_string_arrayrB  ræ  )r¥  r[   rŽ   Úensuredr  s        r\   rÍ  rÍ  ´  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¥  rB  ræ  ré  r�  rl   rÖ  r×  r"   r`   Úbytesr3   ra   Údecoder’  ÚflagsÚ	writeablerì  Ú!string_array_replace_from_nan_repry  )r¥  r‹   r[   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 rX   )r`   ra   rì   Ú_need_convertÚ_get_converter)rx  rK  r[   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 )NzM8[ns]rÞ  ©rB  ræ  )rP  s    r\   r”   z _get_converter.<locals>.<lambda>  s   € œŸ™ A¨XÔ6€ r^   c                ó2   •— t        j                  | ‰¬«      S )NrÞ  rç  )rP  rŠ  s    €r\   r”   z _get_converter.<locals>.<lambda>	  s   ø€ œŸ™ A¨TÔ2€ r^   ra  c                ó"   •— t        | d ‰‰¬«      S )Nrä  )rð  )rP  r[   rŽ   s    €€r\   r”   z _get_converter.<locals>.<lambda>  s   ø€ Ô0Ø�t h°vô
€ r^   zinvalid kind )r©   )rŠ  r[   rŽ   s   ```r\   rã  rã    sE   ú€ Øˆ|ÒÙ6Ð6Ø	˜Ñ	Û2Ð2Ø	�Ò	ô
ð 	
ô ˜=¨¨Ð/Ó0Ð0r^   c                ó   — | dv sd| v ryy)N)rÚ  ra  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 and the
    name values_0, adjust the given name if necessary.

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

    Returns
    -------
    str
    r  z6Version is incorrect, expected sequence of 3 integers.r   rg   r  r  zvalues_block_(\d+)Úvalues_)r`   ra   rl   r©   r·  r¶  r²   )rc   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                ó¾  — | 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| }|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.
    )ra  rÛ  ra  rÏ  r  )ré  rÀ  rÈ  rÚ  Ú	timedeltar  r†  rÃ  r�  ra   zcannot interpret dtype of [r>  )rœ  r©   )Ú	dtype_strrŠ  s     r\   rª  rª  1  sB  € ð ×ÑÐ/Ô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�  r>  ÚmMr5  )r`   r8   r´  r<  r)   rš  rc   rŠ  rB  ræ  r˜  r1   r™  )r¥  r«  s     r\   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                  óf   — e Zd ZdZ	 	 	 d		 	 	 	 	 	 	 d
d„Zedd„«       Zedd„«       Zdd„Zd„ Zd„ Z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)ru   rm   r£   r¤   Ú	conditionrW  ÚtermsrF  r%   r   r©   r   r—  rB  ræ  r<  Úbool_r,  rx  Ú
issubclassrì   rÈ  rë  ÚgenerateÚevaluate)rÓ   ru   rm   r£   r¤   Úinferreds         r\   rÕ   zSelection.__init__w  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 rX   rÉ   r6  s     r\   rú  zSelection.generate¤  s   € ØJMr^   c                 ó   — y rX   rÉ   r6  s     r\   rú  zSelection.generate§  s   € Ø-0r^   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õ  r[   r  z-                The passed where expression: a*  
                            contains an invalid variable reference
                            all of the variable references must be a reference to
                            an axis (e.g. 'index' or 'columns'), or a data_column
                            The currently defined references are: z
                )	ru   rõ  r=   r[   Ú	NameErrorr   r	  r   r©   )rÓ   rm   r  ra  Úqkeysr  s         r\   rú  zSelection.generateª  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ö  ru   Ú
read_whererˆ   r£   r¤   rF  r5  r%  rØ   s    r\   rµ   zSelection.selectÁ  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¤   ru   r,  rö  Úget_where_listrˆ   rF  rB  rx  )rÓ   r£   r¤   r,  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î  )ru   r  r£   rã  r¤   rã  rä  rå  )rm   zdict | list | tuple | strrä  r=   )rm   rå  rä  rå  )rm   z dict | list | tuple | str | Nonerä  zPyTablesExpr | None)	rí   rù  rú  rû  rÕ   r   rú  rµ   r_  rÉ   r^   r\   r  r  k  sq   „ ñ	ð Ø Øð+Dàð+Dð ð	+Dð
 ð+Dð 
ó+DðZ ÚMó ØMàÚ0ó Ø0ó+ò.
Gó&r^   r  )r[   rö  rä  ra   )ri   ré  )r¢   NNFNTNNNNr   rV   )rœ   úFilePath | HDFStorer’   ra   r“   rñ  r˜   ra   r™   rã  rš   rö  r�   r  rˆ   rö  r‰   r  rŠ   rò  rŒ   rõ  r�   ró  rŽ   ra   r[   ra   rä  rå  )	Nr    r   NNNNFN)rœ   r  r˜   ra   rŽ   ra   rm   zstr | list | Noner£   rã  r¤   rã  r¥   zlist[str] | Noner¦   r  r§   rã  )rÁ   rM   rÂ   rM   rä  r  rX   )rÒ  r-   rA  rP   rX  r/   rä  r-   )r  r   rä  zstr | tzinfo)rx  znpt.NDArray[np.int64]r  zstr | tzinfo | NonerÅ  ra   rä  r9   )
rc   ra   r‰   r/   r[   ra   rŽ   ra   rä  r  )rŠ  ra   r[   ra   rŽ   ra   rä  znp.ndarray | Index)rc   ra   r}  rO   r¥   rê  )r¥  r�  r[   ra   rŽ   ra   rä  r�  )rx  r�  rK  ra   r[   ra   rŽ   ra   )rŠ  ra   r[   ra   rŽ   ra   )rŠ  ra   rä  r  )rc   ra   r  zSequence[int]rä  ra   )rð  ra   rä  ra   )r¥  rO   )¼rû  Ú
__future__r   Ú
contextlibr   r¦  rC  r   r   rG  r­   r·  Útextwrapr   Útypingr   r	   r
   r   r   r   r   r   ry  ÚnumpyrB  Úpandas._configr   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   r    Úpandas.util._exceptionsr!   Úpandas.core.dtypes.commonr"   r#   r$   r%   r&   r'   Úpandas.core.dtypes.dtypesr(   r)   r*   r+   Úpandas.core.dtypes.missingr,   rž   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úpandas.core.arraysr8   r9   r:   Úpandas.core.arrays.datetimesr;   Úpandas.core.arrays.string_r<   Úpandas.core.commonÚcoreÚcommonr^  Ú pandas.core.computation.pytablesr=   r>   Úpandas.core.constructionr?   ra  r@   Úpandas.core.indexes.apirA   Úpandas.io.commonrB   Úpandas.io.formats.printingrC   rD   Úcollections.abcrE   rF   rG   rH   ÚtypesrI   rJ   r€   rK   rL   rM   Úpandas._typingrN   rO   rP   rQ   rR   rS   rT   Úpandas.core.internalsrU   r  rY   r]   rd   re   rü  rp   rq   rr   rs   r±  rr  rx   ry   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryr}   r„   r…   r�   r»   r³   r›   r/  r  r“  rš  rù  r  r  rB  rÂ  r¥  rÃ  r  rÊ  r‘  rÈ  rÆ  rÇ  rÅ  rÉ  r(  rr  rå  rp  r…  r+  rÍ  rð  rE  rã  râ  r  rª  r©  r  rÉ   r^   r\   ú<module>r-     s}  ðòõ
 #å Û ÷ó Û 	Û 	Ý ÷	÷ 	ó 	ó ã ÷ñ ÷õ -Ý )Ý %Ý >Ý 4÷õ ÷õ 5÷÷ ÷ó õ 8÷÷ ÷ ñ ÷ñ õ
 5Ý 6ß  Ð  ÷÷õ 1å +÷ñ
 ÷ó ÷÷
ñ ÷÷ ñ õ ,ð €ð Ð óò	ð €€iÓ ó:ð*Ð �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ñp ˆHÓð 	ØØØ#ØØØ $ØØ ð_Ø$ð_ð ð_ð ð	_ð
 ð_ð ð_ð ð_ð ð_ð ð_ð ò_ó ð_óDñ ˆHÓ÷qð qó ðq÷h/mñ m÷`x>ñ x>ôv	�hô ô:a9ˆhô a9ôH	$�wô $ô63Ð.ô 3÷j?ñ j?ôZAB�5ô ABôH/#�,ô /#ôd[;˜ô [;ô|Ð"ô ô
fDˆEô fDôRH�ô Hô<b�eô bôJw˜?ô wôt.Ð0ô .ôb,Ð!6ô ,ô$@EÐ'ô @EôF(Ð 4ô (ðX 9=ðØ	ðØ!ðØ+0ðàóó4ðØ!ðØ':ðØNQðàóó0=Ló@ðBKØ
ðKàðKð óKó\ð>'Ø
ð'Ø),ð'Ø69ð'àó'óTó
1óóó2óB÷2x&ò x&÷Qdñ ús   Æ%AN'Î'N1