ó
    Ñ]jÔ ã            
      óœ  • % S r SSKJr  SSKJr  SSKrSSKJrJr  SSK	r	SSK
r
SSKrSSKJr  SSKJrJrJrJrJrJrJrJr  SSKrSSKrSSKJrJrJr  SS	KJrJ r!  SS
K"J#r#  SSK$J%r%  SSK&J'r'  SSK(J)r)  SSK*J+r+  SSK,J-r-J.r.J/r/J0r0J1r1  SSK2J3r3J4r4  SSK5J6r6  SSK7J8r8J9r9J:r:J;r;J<r<J=r=  SSK>J?r?J@r@JArAJBrB  SSKCJDrD  SSKEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrOJPrP  SSKQJRrRJSrSJTrT  SSKUJVrV  SSKWJXrX  SSKYJZs  J[r\  SSK]J^r^J_r_  SSK`JarbJcrc  SSKdJere  SSKfJgrg  SSKhJiriJjrj  \(       a6  SSKkJlrlJmrmJnrnJoro  SSKpJqrqJrrr  SS KsJtrtJuruJvrv  SS!KwJxrxJyryJzrzJ{r{J|r|J}r}J~r~  SS"KJ€r€  S#r�S$r‚S}S% jrƒS& r„\^r…S'\†S('   S~S) jr‡S*rˆS+\†S,'   S-r‰S+\†S.'   S/rŠS+\†S0'   S1S1S2S2S3.r‹\FS/0rŒS4r�S+\†S5'   S6rŽS+\†S7'   \GR                  " S85         \GR                   " S9S:\�\GR"                  S;9  \GR                   " S<S\Ž\GR$                  " / S=Q5      S;9  SSS5        Sq“S>\†S?'   S:q”S@ r•            S                             S€SA jjr–\4" SB5               S�                 S‚SC jj5       r—SƒSD jr˜\4" SB5       " SE SF5      5       r™ " SG SH5      rš " SI SJ5      r› " SK SL\›5      rœ " SM SN\›5      r� " SO SP\�5      rž " SQ SR\ž5      rŸ " SS ST5      r  " SU SV\ 5      r¡ " SW SX\¡5      r¢ " SY SZ\¡5      r£ " S[ S\\£5      r¤ " S] S^\ 5      r¥ " S_ S`\¥5      r¦ " Sa Sb\¥5      r§ " Sc Sd\§5      r¨ " Se Sf\¨5      r© " Sg Sh\©5      rª " Si Sj\¨5      r« " Sk Sl\¨5      r¬ S„       S…Sm jjr­S†Sn jr®        S‡So jr¯SˆSp jr°S‰Sq jr±      SŠSr jr²S‹Ss jr³        S‹St jr´SŒSu jrµS�Sv jr¶SŽSw jr·S�Sx jr¸S�Sy jr¹S‘Sz jrº " S{ S|5      r»g! , (       d  f       GNÐ= f)’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                ó   • U c  [         n U $ ©N)Ú_default_encoding©Úencodings    ÚO/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/io/pytables.pyÚ_ensure_encodingr]   –   s   € àÑÜ$ˆà€Oó    c                óF   • [        U [        5      (       a  [        U 5      n U $ )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                ó  • US-   n[        U [        [        45      (       a4  U  Vs/ s H&  nUc  M  [        U5      (       a  [	        X2S-   S9OUPM(     n nO[        U 5      (       a	  [	        XS9n U b  [        U 5      (       a  U $ S$ s  snf )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Ü�%œ$¤˜×'Ñ'ñ ó
â�Øó RÔ1AÀ$×1GÑ1GŒD�¨1¡9Ò-ÈTÒQÙð 	ð 
ˆô
 
˜%×	 Ñ	 Ü�UÑ.ˆØ‘M¤S¨§Z¡Zˆ5Ð9°TÐ9ùò
s
   ¥B°"B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                 óÂ   • [         c=  SS Kn U q [        [        5         U R                  R
                  S:H  qS S S 5        [         $ [         $ ! , (       d  f       [         $ = f)Nr   Ústrict)r}   Útablesr   ÚAttributeErrorÚfileÚ_FILE_OPEN_POLICYÚ!_table_file_open_policy_is_strict)r€   s    r\   Ú_tablesr…   ñ   sV   € ô ÑÛàˆ
ô
 ”nÕ%à—‘×-Ñ-°Ñ9ð .÷ &ô
 ÐŒ:Ð÷ &Ô%ô
 Ðús   �AÁ
Ac           
     ó  ^^^^^	^
^^^^• U(       a  UUUUUUUU	U
U4
S jnOUUUUUUUU	U
U4
S jn[        U [        5      (       a	  U" U 5        g[        U 5      n [        XXES9 nU" U5        SSS5        g! , (       d  f       g= f)z+store this object, close it if we opened itc                ó4   >
• U R                  TT
TTTT	TTTTS9
$ )N)ÚformatÚindexÚmin_itemsizeÚnan_repÚdropnaÚdata_columnsÚerrorsr[   )Úappend©Ústorer�   rŒ   r[   rŽ   rˆ   r‰   ÚkeyrŠ   r‹   Úvalues    €€€€€€€€€€r\   Ú<lambda>Úto_hdf.<locals>.<lambda>  s1   ø€ ˜%Ÿ,™,ØØØØØ%ØØØ%ØØð 'ñ 
r^   c                ó4   >
• U R                  TT
TTTT	TTTTS9
$ )N)rˆ   r‰   rŠ   r‹   r�   rŽ   r[   rŒ   ©Úputr�   s    €€€€€€€€€€r\   r”   r•   (  s1   ø€ ˜%Ÿ)™)ØØØØØ%ØØ%ØØØð $ñ 
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ž     sh   ÿù€ ö$ ÷
õ 
‰÷
õ 
ˆô �+œx×(Ñ(Ù	ˆ+�ä$ [Ó1ˆÜØ¨iò
àÙˆeŒH÷
÷ 
ö 
ús   Á$	A6Á6
BÚpandasc
                ó�  • US;  a  [        SU S35      eUb
  [        USS9n[        U [        5      (       a!  U R                  (       d  [        S5      eU nSnOq[        U 5      n [        U [        5      (       d  [        S	5      e [        R                  R                  U 5      nU(       d  [        S
U  S35      e[        U 4X#S.U
D6nSn Ucc  UR                  5       n[        U5      S:X  a  [        S5      eUS   nUSS  H  n[!        UU5      (       a  M  [        S5      e   UR"                  nUR%                  UUUUUUU	US9$ ! [        [         4 a    Sn N·f = f! [         [        [&        4 aQ    [        U [        5      (       d:  [)        [*        5         UR-                  5         SSS5        e ! , (       d  f       e = fe f = f)aN	  
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ÓLÜ$ð;óð ñ #-ð '×2Ñ2ˆCØ�|‰|ØØØØØØØØ!ð ð 	
ð 		
øôA œ:Ð&ó 	ØŠFð	ûôT œ	¤;Ð/ó Ü˜+¤x×0Ñ0äœ.Õ)Ø—‘”÷ *ð 	÷ *Ô)ð 	úˆðús=   ÂE ÃA	E Ä.E ÅEÅEÅ9GÆF2Æ)	GÆ2
G 	Æ<	Gc                óÞ   • U R                   UR                   ::  a  gU nUR                   S:”  a@  UR                  nX1:X  a  UR                  S:X  a  gUR                  nUR                   S:”  a  M@  g)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´   â  si   € à‡~�~˜×.Ñ.Ó.Øà€GØ
×
Ñ
˜QÓ
Ø×"Ñ"ˆØÓ! g§o¡o¸Ó&?ØØ×#Ñ#ˆð	 ×
Ñ
˜QÕ
ð
 r^   c                  óè  • \ rS rSr% SrS\S'   S\S'       S4       S5S jjrS6S	 jr\S
 5       r	\S6S j5       r
S7S jrS8S jrS9S jrS:S jrS;S jrS<S jrS6S jrS=S jr        S>S jrS?S@S jjrSAS jrSBS jrSCSDS jjrSES jr\SFS j5       rSGSHS jjrS7S jr       SI       SJS jjr   SK     SLS jjr  SM       SNS jjr        SO     SPS  jjr            SQ                     SRS! jjr SKS9S" jjr!               SS                     STS# jjr"   SU     SVS$ jjr#   SK       SWS% jjr$SXS& jr%SYSZS' jjr&S[S( jr'S\S) jr(       S]           S^S* jjr)S6S+ jr*SES, jr+S_S- jr,    S`       SaS. jjr-               Sb                     ScS/ jjr.SdS0 jr/SeS1 jr0SfS2 jr1S3r2g)grœ   ið  a|  
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                ó¤  • SU;   a  [        S5      e[        S5      nUb<  XGR                  R                  ;  a#  [        SUR                  R                   S35      eUc  Ub  UR                  R                  n[        U5      U l        Uc  SnX l        S U l        U(       a  UOSU l	        X@l
        XPl        S U l        U R                  " S	SU0UD6  g )
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__Ú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                ó   • U R                   $ rX   ©rÎ   ©rÔ   s    r\   Ú
__fspath__ÚHDFStore.__fspath__W  s   € Ø�z‰zÐr^   c                ól   • U R                  5         U R                  c   eU R                  R                  $ )zreturn the root node)Ú_check_if_openrÇ   ÚrootrÚ   s    r\   rß   ÚHDFStore.rootZ  s0   € ð 	×ÑÔØ�|‰|Ñ'Ð'Ð'Ø�|‰|× Ñ Ð r^   c                ó   • U R                   $ rX   rÙ   rÚ   s    r\   ÚfilenameÚHDFStore.filenamea  ó   € à�z‰zÐr^   c                ó$   • U R                  U5      $ rX   )Úget©rÔ   r’   s     r\   Ú__getitem__ÚHDFStore.__getitem__e  s   € Ø�x‰x˜‹}Ðr^   c                ó&   • U R                  X5        g rX   r—   )rÔ   r’   r“   s      r\   Ú__setitem__ÚHDFStore.__setitem__h  s   € Ø�‰�Õr^   c                ó$   • U R                  U5      $ rX   )Úremoverç   s     r\   Ú__delitem__ÚHDFStore.__delitem__k  s   € Ø�{‰{˜3ÓÐr^   c                óœ   •  U R                  U5      $ ! [        [        4 a     Of = f[        S[	        U 5      R
                   SU S35      e)z$allow attribute access to get storesÚ'z' object has no attribute ')ræ   ÚKeyErrorr   r�   ÚtypeÚ__name__)rÔ   rc   s     r\   Ú__getattr__ÚHDFStore.__getattr__n  sW   € ð	Ø—8‘8˜D“>Ð!øÜœ/Ð*ó 	Ùð	úäØ”�T“
×#Ñ#Ð$Ð$?À¸vÀQÐGó
ð 	
s   ‚ “&¥&c                óZ   • U R                  U5      nUb  UR                  nXUSS 4;   a  gg)z`
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__ÚHDFStore.__contains__x  s:   € ð
 �}‰}˜SÓ!ˆØÑØ×#Ñ#ˆDØ˜T ! "˜XÐ&Ó&ØØr^   c                ó4   • [        U R                  5       5      $ rX   )rl   r³   rÚ   s    r\   Ú__len__ÚHDFStore.__len__„  s   € Ü�4—;‘;“=Ó!Ð!r^   c                óN   • [        U R                  5      n[        U 5       SU S3$ )Nú
File path: Ú
)rD   rÎ   rô   )rÔ   Úpstrs     r\   Ú__repr__ÚHDFStore.__repr__‡  s'   € Ü˜DŸJ™JÓ'ˆÜ�t“*�˜]¨4¨&°Ð3Ð3r^   c                ó   • U $ rX   rÊ   rÚ   s    r\   Ú	__enter__ÚHDFStore.__enter__‹  s   € Øˆr^   c                ó$   • U R                  5         g rX   )r¸   )rÔ   Úexc_typeÚ	exc_valueÚ	tracebacks       r\   Ú__exit__ÚHDFStore.__exit__Ž  s   € ð 	�
‰
�r^   c                ó&  • US:X  a*  U R                  5        Vs/ s H  o"R                  PM     sn$ US:X  aC  U R                  c   eU R                  R                  SSS9 Vs/ s H  o"R                  PM     sn$ [	        SU S35      es  snf s  snf )a†  
Return a list of keys corresponding to objects stored in HDFStore.

Parameters
----------

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

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

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

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\   ÚkeysÚHDFStore.keys–  sš   € ðH �hÓØ+/¯;©;¬=Ó9ª= a—M”M©=Ñ9Ð9à˜Ó Ø—<‘<Ñ+Ð+Ð+à'+§|¡|×'>Ñ'>¸sÈgÐ'>Ñ'VóÚ'V !—”Ñ'Vñð ô ØFÀwÀiÈqÐQó
ð 	
ùò :ùòs   ™B	Á"Bc                ó4   • [        U R                  5       5      $ rX   )Úiterr  rÚ   s    r\   Ú__iter__ÚHDFStore.__iter__Æ  s   € Ü�D—I‘I“KÓ Ð r^   c              #  óZ   #   • U R                  5        H  nUR                  U4v •  M     g7f)z
iterate on key->group
N)r³   rµ   ©rÔ   Úgs     r\   ÚitemsÚHDFStore.itemsÉ  s&   é € ð —‘–ˆAØ—-‘- Ð"Ô"ò ùs   ‚)+c                ó”  • [        5       nU R                  U:w  aZ  U R                  S;   a  US;   a  O=US;   a7  U R                  (       a&  [        SU R                   SU R                   S35      eXl        U R                  (       a  U R                  5         U R                  (       aL  U R                  S:”  a<  [        5       R                  U R                  U R                  U R                  S9U l
        [        (       a  U R                  (       a  S	n[        U5      eUR                  " U R                  U R                  40 UD6U l        g
)zù
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Ó   ÚHDFStore.openÐ  s  € ô “ˆà�:‰:˜Óà�z‰z˜ZÓ'¨D°KÓ,?ØØ˜“à—<—<Ü/Ø/°·
±
¨|¸=ÈÏÉÈð U8ð 8óð ð
 ŒJð �<�<Ø�J‰JŒLà�?�?˜tŸ™°Ó2Ü#›I×-Ñ-Ø—‘ §¡¸4×;KÑ;Kð .ð ˆDŒM÷ -Ò,°··ð*ð ô ˜S“/Ð!à×'Ò'¨¯
©
°D·J±JÑIÀ&ÑIˆ�r^   c                ó`   • U R                   b  U R                   R                  5         SU l         g)z 
Close the PyTables file handle
N)rÇ   r¸   rÚ   s    r\   r¸   ÚHDFStore.closeý  s%   € ð �<‰<Ñ#Ø�L‰L×ÑÔ Øˆ�r^   c                ó\   • U R                   c  g[        U R                   R                  5      $ )z6
return a boolean indicating whether the file is open
F)rÇ   ÚboolÚisopenrÚ   s    r\   r«   ÚHDFStore.is_open  s&   € ð
 �<‰<ÑØÜ�D—L‘L×'Ñ'Ó(Ð(r^   c                ó  • U R                   bi  U R                   R                  5         U(       aG  [        [        5         [        R
                  " U R                   R                  5       5        SSS5        ggg! , (       d  f       g= f)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Ô   r0  s     r\   r/  ÚHDFStore.flush  s]   € ð  �<‰<Ñ#Ø�L‰L×ÑÔ ÞÜœgÕ&Ü—H’H˜TŸ\™\×0Ñ0Ó2Ô3÷ 'Ð&ð ð $÷ 'Õ&ús   ¾/A8Á8
Bc                ó´   • [        5          U R                  U5      nUc  [        SU S35      eU R                  U5      sSSS5        $ ! , (       d  f       g= f)aL  
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æ   ÚHDFStore.get$  sK   € ô6 �^ð —M‘M #Ó&ˆEØ‰}ÜÐ!1°#°°lÐCÓDÐDØ×#Ñ# EÓ*÷ �^�^ús   ‹4A	Á	
Ac	                ó  ^^• U R                  U5      n	U	c  [        SU S35      e[        USS9nU R                  U	5      mTR	                  5         UU4S jn
[        U TU
UTR                  UUUUUS9
nUR                  5       $ )a«  
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
r4  r5  rg   rh   c                ó&   >• TR                  XUTS9$ )N)r¤   r¥   rm   r¦   )Úread)Ú_startÚ_stopÚ_wherer¦   Úss      €€r\   ÚfuncÚHDFStore.select.<locals>.func—  s   ø€ Ø—6‘6 ¸&È'�6ÐRÐRr^   ©rm   Únrowsr¤   r¥   r§   r¨   r©   )rù   ró   rp   Ú_create_storerÚ
infer_axesÚTableIteratorrC  Ú
get_result)rÔ   r’   rm   r¤   r¥   r¦   r§   r¨   r©   rÂ   r@  Úitr?  s        `      @r\   r¶   ÚHDFStore.selectG  s—   ù€ ðL —‘˜cÓ"ˆØ‰=ÜÐ-¨c¨U°,Ð?Ó@Ð@ô ˜U°Ñ2ˆØ×Ñ Ó&ˆØ	�‰Œö	Sô ØØØØØ—'‘'ØØØØØ!ñ
ˆð �}‰}‹Ðr^   c                ó˜   • [        USS9nU R                  U5      n[        U[        5      (       d  [	        S5      eUR                  X#US9$ )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_coordinatesÚHDFStore.select_as_coordinatesª  sM   € ô4 ˜U°Ñ2ˆØ�o‰o˜cÓ"ˆÜ˜#œu×%Ñ%ÜÐDÓEÐEØ×#Ñ#¨%À4Ð#ÐHÐHr^   c                ó„   • U R                  U5      n[        U[        5      (       d  [        S5      eUR	                  X#US9$ )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¥   )rL  r`   r  r±   Úread_column)rÔ   r’   rR  r¤   r¥   rN  s         r\   Úselect_columnÚHDFStore.select_columnÊ  s?   € ðF �o‰o˜cÓ"ˆÜ˜#œu×%Ñ%ÜÐ?Ó@Ð@Ø�‰ fÀˆÐEÐEr^   c
                ó  ^^^• [        USS9n[        U[        [        45      (       a  [	        U5      S:X  a  US   n[        U[
        5      (       a  U R                  UUTUUUUU	S9$ [        U[        [        45      (       d  [        S5      e[	        U5      (       d  [        S5      eUc  US   nU V
s/ s H  o R                  U
5      PM     sn
mU R                  U5      nSn[        R                  " X³4/[        TUSS	95       Hm  u  pÚUc  [        S
U
 S35      eUR                  (       d  [        SUR                   S35      eUc  UR                   nMR  UR                   U:w  d  Md  [        S5      e   T Vs/ s H  n[        U["        5      (       d  M  UPM     nnU Vs1 s H  oÝR$                  S   S   iM     snR'                  5       mUUU4S jn[)        U UUUUUUUUU	S9
nUR+                  SS9$ s  sn
f s  snf s  snf )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           
     ó‚   >• T Vs/ s H  nUR                  UTXS9PM     nn[        UTSS9R                  5       $ s  snf )N©rm   r¦   r¤   r¥   F)ÚaxisÚverify_integrity)r;  r6   Ú_consolidate)r<  r=  r>  rw   Úobjsr[  r¦   Útblss        €€€r\   r@  Ú)HDFStore.select_as_multiple.<locals>.funcP  sS   ø€ ñ
 óâ�Að —‘˜V¨W¸F�ÓOÙð ð ô ˜$ T¸EÑB×OÑOÓQÐQùòs   †<rB  )Úcoordinates)rp   r`   rj   rk   rl   ra   r¶   r±   rª   rL  Ú	itertoolsÚchainÚzipró   Úis_tableÚpathnamerC  r  Únon_index_axesÚpoprF  rG  )rÔ   r  rm   Úselectorr¦   r¤   r¥   r§   r¨   r©   Úkr?  rC  rw   ÚxÚ_tblsr@  rH  r[  r_  s       `             @@r\   Úselect_as_multipleÚ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‰yÜÐ?Ó@Ð@àÑØ˜A‘wˆHñ -1Ó1ªD q—‘ Ö"©DÑ1ˆØ�O‰O˜HÓ%ˆð ˆÜ—O’O a ] O´S¸¸tÈDÑ5QÖR‰DˆAØ‰yÜ °°°1Ð5Ó6Ð6Ø—:—:ÜØ˜qŸz™z˜lð +)ð )óð ð
 ‰}ØŸ™’Ø—‘˜EÕ!Ü Ð!OÓPÐPñ Sñ  !Ó9šD�q¤J¨q´%×$8—™DˆÐ9ñ 16Ó6²¨1× Ñ  Ñ# AÔ&±Ñ6×:Ñ:Ó<ˆ÷		Rô ØØØØØØØØØØ!ñ
ˆð �}‰}¨ˆ}Ð.Ð.ùòg 2ùò* :ùò 7s   Â5G:Å<G?ÆG?Æ%Hc                óŒ   • Uc  [        S5      =(       d    SnU R                  U5      nU R                  UUUUUUUUU	U
UUUUS9  g)ad
  
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Ž   rq  rŒ   s                  r\   r˜   ÚHDFStore.putk  sg   € ðh ‰>ÜÐ 7Ó8×C¸GˆFØ×&Ñ& vÓ.ˆØ×ÑØØØØØØØØ%ØØ%ØØØ#Øð 	ò 	
r^   c                óÂ  • [        USS9n U R                  U5      n[        R                  " X#U5      (       a  WR                  R                  SS9  gWR                  (       d  [        S5      eUR                  X#US9$ ! [         a    e [         a    e [         aA  nUb  [        S5      UeU R                  U5      nUb  UR                  SS9   SnAg SnAN¼SnAff = f)	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 tablesrK  )rp   rL  ró   ÚAssertionErrorÚ	Exceptionrª   rù   Ú	_f_removeÚcomÚall_nonerÂ   re  Údelete)rÔ   r’   rm   r¤   r¥   r?  Úerrrú   s           r\   rî   ÚHDFStore.removeÓ  så   € ô* ˜U°Ñ2ˆð	Ø—‘ Ó$ˆAô. �<Š<˜ d×+Ñ+Ø�G‰G×Ñ¨ÐÑ-Øð �z�zÜÐVÓWÐWØ�x‰x˜e°tˆxÐ<Ð<øô; ó 	àÜó 	àÜó 	ð Ñ Ü ØKóàðð
 —=‘= Ó%ˆDØÑØ—‘¨�Ñ.Üô  ûð	ús   ŒA? Á?CÂ2CÃCc                óÈ   • U	b  [        S5      eUc  [        S5      nUc  [        S5      =(       d    SnU R                  U5      nU R                  UUUUUUUUU
UUUUUUUS9  g)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_tablerp  ru   )rˆ   Úaxesr‰   r�   r›   rš   rŠ   r‹   r¨   ÚexpectedrowsrŒ   r�   r[   rŽ   )r±   r   rr  rs  )rÔ   r’   r“   rˆ   r�  r‰   r�   r›   rš   r¦   rŠ   r‹   r¨   r‚  rŒ   r�   r[   rŽ   s                     r\   r�   ÚHDFStore.append
  s•   € ðF ÑÜØPóð ð ‰>ÜÐ 5Ó6ˆFØ‰>ÜÐ 7Ó8×C¸GˆFØ×&Ñ& vÓ.ˆØ×ÑØØØØØØØØØ%ØØØ%ØØ%ØØð! 	ò 	
r^   c                ó2  ^• Ub  [        S5      e[        U[        5      (       d  [        S5      eX1;  a  [        S5      e[	        [        [        [        TR                  5      5      [        [        [        T5         5      -
  5      5      nSn	/ n
UR                  5        H+  u  p¼Uc  U	b  [        S5      eUn	M  U
R                  U5        M-     U	bV  TR                  U   nUR                  [        U
5      5      n[!        UR#                  U5      5      nUR%                  U5      X'   Uc  X   nU(       aN  U4S jUR'                  5        5       n[	        U5      nU H  nUR)                  U5      nM     TR*                  U   mUR-                  SS5      nUR                  5        Hh  u  p¼X³:X  a  UOSnTR/                  XÈS9nUb/  UR                  5        VVs0 s H  u  nnUU;   d  M  UU_M     snnOSnU R0                  " UU4UUS	.UD6  Mj     gs  snnf )
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  ó\   >#   • U  H!  nTU   R                  S S9R                  v •  M#     g7f)Úall)ÚhowN)rŒ   r‰   )Ú.0Úcolsr“   s     €r\   Ú	<genexpr>Ú.HDFStore.append_to_multiple.<locals>.<genexpr>Õ  s)   øé € ÐOÂJ¸D�E˜$‘K×&Ñ&¨5Ð&Ð1×7Ö7ÂJùs   ƒ),rŠ   ©r[  )r�   rŠ   )r±   r`   Údictrª   Únextr  ÚsetÚrangeÚndimÚ	_AXES_MAPrô   r   Úextendr�  Ú
differencer/   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocrh  Úreindexr�   )rÔ   Údr“   ri  r�   r�  rŒ   r¹   r[  Ú
remain_keyÚremain_valuesrj  ÚvÚorderedÚorddÚidxsÚvalid_indexr‰   rŠ   ÚdcÚvalr’   Úfiltereds     `                    r\   Úappend_to_multipleÚHDFStore.append_to_multipleŠ  s  ø€ ð> ÑÜðBóð ô
 ˜!œT×"Ñ"Üð)óð ð
 ÓÜØOóð ô
 ”DœœU 5§:¡:Ó.Ó/´#´iÄÀUÃÑ6LÓ2MÑMÓNÓOˆð ˆ
Ø ˆØ—G‘G–I‰DˆAØ‰yØÑ)Ü$ØVóð ð ’
à×$Ñ$ QÖ'ñ ð Ñ!Ø—j‘j Ñ&ˆGØ×%Ñ%¤e¨MÓ&:Ó;ˆDÜ˜'×-Ñ-¨dÓ3Ó4ˆDØ#ŸL™L¨Ó.ˆA‰Mð ÑØ™;ˆLö ÜOÀAÇHÁHÄJÓOˆDÜ˜t›*ˆKÛ�Ø)×6Ñ6°uÓ=’ñ à—I‘I˜kÑ*ˆEà—z‘z .°$Ó7ˆð —G‘G–I‰DˆAØ!"£‘°DˆBð —-‘- �-Ð-ˆCð  Ñ+ð 1=×0BÑ0BÔ0DÔQÒ0D¡  eÈÈqÉ“��e’Ñ0DÓQàð ð
 �KŠK˜˜3ÐQ¨R¸hÑQÈ&ÔQò ùó Rs   ÇHÇ*Hc                ó¢   • [        5         U R                  U5      nUc  g[        U[        5      (       d  [	        S5      eUR                  X#US9  g)aP  
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…   rL  r`   r  r±   Úcreate_index)rÔ   r’   r¦   rª  r«  r?  s         r\   Úcreate_table_indexÚHDFStore.create_table_indexë  sH   € ô> 	Œ	Ø�O‰O˜CÓ ˆØ‰9Øä˜!œU×#Ñ#ÜÐOÓPÐPØ	�‰˜wÀˆÒEr^   c                óò  • [        5         U R                  5         U R                  c   e[        c   eU R                  R	                  5        Vs/ s H›  n[        U[        R                  R                  5      (       a  M.  [        UR                  SS5      (       dO  [        USS5      (       d=  [        U[        R                  R                  5      (       d  M‡  UR                  S:w  d  M™  UPM�     sn$ s  snf )aM  
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³   ÚHDFStore.groups  sÍ   € ô4 	Œ	Ø×ÑÔØ�|‰|Ñ'Ð'Ð'ÜÑ%Ð%Ð%ð —\‘\×-Ñ-Ô/ó
â/�ä˜q¤*§/¡/×"6Ñ"6×7ó ô
 ˜AŸJ™J¨°t×<Ñ<Ü˜q '¨4×0Ñ0Ü" 1¤j×&6Ñ&6×&<Ñ&<×=ó ð CDÇ)Á)ÈwÑBV÷ Ù/ñ
ð 	
ùò 
s   Á-C4Â AC4ÃC4Ã+C4c              #  ój  #   • [        5         U R                  5         U R                  c   e[        c   eU R                  R	                  U5       HÞ  n[        UR                  SS5      b  M  / n/ nUR                  R                  5        H€  n[        UR                  SS5      nUcH  [        U[        R                  R                  5      (       a  UR                  UR                  5        Mc  Me  UR                  UR                  5        M‚     UR                  R                  S5      X44v •  Mà     g7f)aÕ  
Walk the pytables group hierarchy for pandas objects.

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

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

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

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

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

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

Examples
--------
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df1, format="table")  # doctest: +SKIP
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
>>> store.append("data", df2)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
>>> for group in store.walk():  # doctest: +SKIP
...     print(group)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
Nr°  r  )r…   rÞ   rÇ   r}   r±  r´  rµ  Ú_v_childrenr˜  r`   rÂ   ÚGroupr�   rÁ   rµ   Úrstrip)rÔ   rm   r  r³   ÚleavesÚchildr°  s          r\   ÚwalkÚHDFStore.walk>  sú   é € ôV 	Œ	Ø×ÑÔØ�|‰|Ñ'Ð'Ð'ÜÑ%Ð%Ð%à—‘×)Ñ)¨%Ö0ˆAÜ�q—z‘z =°$Ó7ÑCÙàˆFØˆFØŸ™×-Ñ-Ö/�Ü% e§n¡n°mÀTÓJ�ØÑ&Ü! %¬×)9Ñ)9×)?Ñ)?×@Ñ@ØŸ™ e§m¡mÖ4ñ Að —M‘M %§-¡-Ö0ñ 0ð —=‘=×'Ñ'¨Ó,¨fÐ=Ô=ò 1ùs   ‚D1D3c                ó€  • U R                  5         UR                  S5      (       d  SU-   nU R                  c   e[        c   e U R                  R	                  U R
                  U5      n[        U[        R                  5      (       d   [        U5      5       eU$ ! [        R                  R                   a     gf = f)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ù   ÚHDFStore.get_node~  s¨   € à×ÑÔØ�~‰~˜c×"Ñ"Ø˜‘)ˆCà�|‰|Ñ'Ð'Ð'ÜÑ%Ð%Ð%ð	Ø—<‘<×(Ñ(¨¯©°CÓ8ˆDô ˜$¤
§¡×0Ñ0Ð<´$°t³*Ó<Ð0Øˆøô	 ×$Ñ$×4Ñ4ó 	Ùð	ús   Á&B ÂB=Â<B=c                óŽ   • U R                  U5      nUc  [        SU S35      eU R                  U5      nUR                  5         U$ )z<return the storer object for a key, raise if not in the filer4  r5  )rù   ró   rD  rE  )rÔ   r’   rÂ   r?  s       r\   rL  ÚHDFStore.get_storerŽ  sH   € à—‘˜cÓ"ˆØ‰=ÜÐ-¨c¨U°,Ð?Ó@Ð@à×Ñ Ó&ˆØ	�‰ŒØˆr^   c	                óh  • [        XXVUS9n	Uc  [        U R                  5       5      n[        U[        [        45      (       d  U/nU Há  n
U R                  U
5      nUc  M  X©;   a  U(       a  U	R                  U
5        U R                  U
5      n[        U[        5      (       ak  SnU(       a8  UR                   Vs/ s H!  oîR                  (       d  M  UR                  PM#     nnU	R                  U
UU[        USS5      UR                  S9  MÇ  U	R                  X¬UR                  S9  Mã     U	$ s  snf )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   rL  rî   r¶   r  r�  Ú
is_indexedrc   r�   r´  r[   r˜   )rÔ   r‚   r™   Úpropindexesr  r›   rš   rÕ   Ú	overwriteÚ	new_storerj  r?  Údatar‰   r£   s                  r\   ÚcopyÚHDFStore.copy˜  s  € ô8 Ø WÈjñ
ˆ	ð ‰<Ü˜Ÿ	™	›Ó$ˆDÜ˜$¤¬ ×.Ñ.Ø�6ˆDÛˆAØ—‘ Ó"ˆAØ‹}Ø“>Þ Ø!×(Ñ(¨Ô+à—{‘{ 1“~�Ü˜a¤×'Ñ'Ø.3�EÞ"Ø12·²Ó H²¨A¿<½<£ §¤±˜Ð HØ×$Ñ$ØØØ#Ü%,¨Q°ÀÓ%EØ!"§¡ð %ó ð —M‘M !°A·J±J�MÓ?ñ) ð, Ðùò !Is   Â;D/ÃD/c                ó~  • [        U R                  5      n[        U 5       SU S3nU R                  (       a­  [	        U R                  5       5      nU(       a…  / n/ nU Hj  n U R                  U5      nUbR  UR                  [        UR                  =(       d    U5      5        UR                  [        U=(       d    S5      5        Mj  Ml     U[        SXE5      -  nU$ US-  n U$ US	-  nU$ ! [         a    e [         a<  nUR                  U5        [        U5      n	UR                  SU	 S35         SnAMÙ  SnAff = f)
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: rX  é   ÚEmptyzFile is CLOSED)rD   rÎ   rô   r«   r•  r  rL  r�   rf  rx  ry  rC   )
rÔ   r¯   ÚoutputÚlkeysr  r˜  rj  r?  ÚdetailÚdstrs
             r\   ÚinfoÚHDFStore.infoÓ  s0  € ô8 ˜DŸJ™JÓ'ˆÜ˜“J�<˜}¨T¨F°"Ð5ˆà�<�<Ü˜4Ÿ9™9›;Ó'ˆEÞØ�Ø�ã�AðJØ ŸO™O¨AÓ.˜Ø™=Ø ŸK™K¬°Q·Z±Z·_À1Ó(EÔFØ"ŸM™M¬,°q×7SÐ<SÓ*TÖUñ )ñ ð œ&  TÓ2Ñ2�ð ˆð	 ˜'Ñ!‘ð ˆð Ð&Ñ&ˆFàˆøô *ó àÜ$ó JØŸ™ AœÜ+¨FÓ3˜ØŸ™Ð(@ÀÀÀaÐ&H×IÒIûðJús   Á"A$C,Ã,D<Ä 1D7Ä7D<c                óV   • U R                   (       d  [        U R                   S35      eg )Nz file is not open!)r«   r   rÎ   rÚ   s    r\   rÞ   ÚHDFStore._check_if_open  s%   € Ø�|�|Ü! T§Z¡Z LÐ0BÐ"CÓDÐDð r^   c                óz   •  [         UR                  5          nU$ ! [         a  n[        SU S35      UeSnAff = f)zvalidate / deprecate formatsz#invalid HDFStore format specified [rX  N)Ú_FORMAT_MAPÚlowerró   r±   )rÔ   rˆ   r~  s      r\   rr  ÚHDFStore._validate_format  sK   € ð	VÜ  §¡£Ñ0ˆFð ˆøô ó 	VÜÐAÀ&ÀÈÐKÓLÐRUÐUûð	Vús   ‚ ›
:¥5µ:c           	     ó  • Ub&  [        U[        [        45      (       d  [        S5      e[	        UR
                  SS5      n[	        UR
                  SS5      nUc†  Uc^  [        5         [        c   e[	        USS5      (       d)  [        U[        R                  R                  5      (       a  SnSnO0[        S5      e[        U[        5      (       a  S	nOS
nUS:X  a  US-  nSU;  a  [        [        S.n X†   n	U	" XXES9$ Ucz  Ubw  US:X  a6  [	        USS5      nUb%  UR                  S:X  a  SnONUR                  S:”  a  SnO;US:X  a5  [	        USS5      nUb%  UR                  S:X  a  SnOUR                  S:”  a  Sn[        [         ["        [$        [&        [(        S.n XÇ   n	U	" XXES9$ ! [         a#  n
[        SU S[        U5       SU 35      U
eSn
A
ff = f! [         a#  n
[        SU S[        U5       SU 35      U
eSn
A
ff = f)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Úclsr~  r‰   Ú
_TABLE_MAPs                r\   rD  ÚHDFStore._create_storer  sR  € ð Ñ¤Z°¼Ä	Ð7J×%KÑ%KÜÐFÓGÐGä�U—^‘^ ]°DÓ9ˆÜ�U—^‘^ \°4Ó8ˆð ‰:Ø‰}Ü”	Ü!Ñ-Ð-Ð-Ü˜5 '¨4×0Ñ0´JØœ:×+Ñ+×1Ñ1÷5ñ 5ð '�BØ(‘Bä#ð1óð ô
 ˜e¤V×,Ñ,Ø!‘Bà �Bð ˜WÓ$Ø˜(‘N�Bð ˜"ÓÜ%0¼:ÑFˆKðØ!‘o�ñ �t¨XÑ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Ü%>Üñ
ˆ
ð	Ø‘.ˆCñ �4¨ÑAÐAøôU ó ÜØSØ�g˜X¤d¨5£k ]°)¸F¸8ðEóð ðûðûôH ó 	ÜØNØ�'˜¤$ u£+ ¨i¸°xðAóð ðûð	ús0   Ã5F* ÆG Æ*
GÆ4GÇGÇ
HÇ$HÈHc                óZ  • [        USS 5      (       a  US:X  d  U(       a  g U R                  X5      nU R                  UX2UUS9nU(       af  UR                  (       a(  UR                  (       a"  US:X  a  UR                  (       a  [        S5      eUR                  (       d  UR                  5         OUR                  5         UR                  (       d  U(       a  [        S5      eUR                  UUUUUU	U
UUUUUUS9  [        U[        5      (       a  U(       a  UR                  US9  g g g )	NÚemptyru   rå  rt   zCan only append to Tablesz0Compression not supported on Fixed format stores)Úobjr�  r�   r›   rš   rÕ   rŠ   r¨   r‚  rŒ   r‹   r�   rq  ©r¦   )r´  Ú_identify_grouprD  re  Ú	is_existsrª   Úset_object_infoÚwriter`   r  r¬  )rÔ   r’   r“   rˆ   r�  r‰   r�   r›   rš   rÕ   rŠ   r¨   r‚  rŒ   r‹   r�   r[   rŽ   rq  rÂ   r?  s                        r\   rs  ÚHDFStore._write_to_groupz  s
  € ô. �5˜' 4×(Ñ(¨f¸Ó.?Æ6Øà×$Ñ$ SÓ1ˆà×Ñ  v¸xÐPVÐÐWˆÞð —:—: !§*§*°¸7Ó1BÀqÇ{Ç{Ü Ð!<Ó=Ð=Ø—;—;Ø×!Ñ!Ô#øà×ÑÔà�z�zžgÜÐOÓPÐPð 	
�‰ØØØØØØ!Ø%ØØ%ØØØ%Ø#ð 	ñ 	
ô  �aœ×Ñ¦EØ�N‰N 5ˆNÒ)ð %*Ðr^   c                ód   • U R                  U5      nUR                  5         UR                  5       $ rX   )rD  rE  r;  )rÔ   rÂ   r?  s      r\   r6  ÚHDFStore._read_group¸  s&   € Ø×Ñ Ó&ˆØ	�‰ŒØ�v‰v‹xˆr^   c                óº   • U R                  U5      nU R                  c   eUb#  U(       d  U R                  R                  USS9  SnUc  U R                  U5      nU$ )z@Identify HDF5 group based on key, delete/create group if needed.NTrv  )rù   rÇ   Úremove_nodeÚ_create_nodes_and_group)rÔ   r’   r�   rÂ   s       r\   rÿ  ÚHDFStore._identify_group½  sb   € à—‘˜cÓ"ˆð �|‰|Ñ'Ð'Ð'ð Ñ¦VØ�L‰L×$Ñ$ U°dÐ$Ñ;ØˆEà‰=Ø×0Ñ0°Ó5ˆEàˆr^   c                ó$  • U R                   c   eUR                  S5      nSnU Hg  n[        U5      (       d  M  UnUR                  S5      (       d  US-  nXT-  nU R	                  U5      nUc  U R                   R                  X45      nUnMi     W$ )z,Create nodes from key and return group name.r  )rÇ   Úsplitrl   Úendswithrù   Úcreate_group)rÔ   r’   Úpathsr¯   ÚpÚnew_pathrÂ   s          r\   r  Ú HDFStore._create_nodes_and_groupÏ  s“   € ð �|‰|Ñ'Ð'Ð'à—	‘	˜#“ˆàˆÛˆAÜ�q—6‘6ÙØˆHØ—=‘= ×%Ñ%Ø˜C‘�Ø‰MˆHØ—M‘M (Ó+ˆEØ‰}ØŸ™×1Ñ1°$Ó:�ØŠDñ ð ˆr^   )rÏ   rÐ   rÒ   rÑ   rÇ   rÈ   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)r0  r+  r  r  )NNNNFNF)r’   ra   r§   r+  r¨   r  r©   r+  ©NNN©r’   ra   r¤   r  r¥   r  ©NN)r’   ra   rR  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   rq  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œ  r�  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   rq  r+  r  r  )rÂ   rM   )r’   ra   r�   r+  r  rM   )r’   ra   r  rM   )3rõ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__rÖ   rÛ   Úpropertyrß   râ   rè   rë   rï   rö   rû   rþ   r  r  r  r  r  r   rÓ   r¸   r«   r/  ræ   r¶   rO  rT  rm  r˜   rî   r�   r§  r­  r³   r½  rù   rL  rÌ  rÕ  rÞ   rr  rD  rs  r6  rÿ  r  Ú__static_attributes__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                  óˆ   • \ rS rSr% SrS\S'   S\S'   S\S'        S           SS
 jjrSS jrSS jrSSS jjr	Sr
g	)rF  iå  a!  
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                ó*  • Xl         X l        X0l        X@l        U R                  R                  (       a  Uc  SnUc  SnUc  Un[        XW5      nXPl        X`l        Xpl        S U l	        U(       d  U	b  U	c  Sn	[        U	5      U l        OS U l        X l        g )Nr   é † )r‘   r?  r@  rm   re  ÚminrC  r¤   r¥   ra  r  r¨   r©   )rÔ   r‘   r?  r@  rm   rC  r¤   r¥   r§   r¨   r©   s              r\   rÖ   ÚTableIterator.__init__ý  sŽ   € ð Œ
ØŒØŒ	ØŒ
ð �6‰6�?�?Ø‰}Ø�Ø‰}Ø�Ø‰|Ø�Ü�uÓ#ˆDàŒ
ØŒ
ØŒ	àˆÔÞ�yÑ,ØÑ Ø"�	Ü  ›^ˆD�Nà!ˆDŒNà$�r^   c              #  ól  #   • U R                   nU R                  c  [        S5      eXR                  :  am  [	        XR
                  -   U R                  5      nU R                  S S U R                  X 5      nUnUb  [        U5      (       d  Mg  Uv •  XR                  :  a  Mm  U R                  5         g 7f)Nz*Cannot iterate until get_result is called.)	r¤   ra  rª   r¥   r2  r¨   r@  rl   r¸   )rÔ   rÄ   r¥   r“   s       r\   r  ÚTableIterator.__iter__'  s•   é € à—*‘*ˆØ×ÑÑ#ÜÐIÓJÐJØŸ	™	Ó!Ü�w§¡Ñ/°·±Ó;ˆDØ—I‘I˜d D¨$×*:Ñ*:¸7Ð*HÓIˆEØˆGØ‰}¤C¨§J¡JÙàŠKð Ÿ	™	Õ!ð 	�
‰
�ùs   ‚BB4Â#B4c                ó\   • U R                   (       a  U R                  R                  5         g g rX   )r©   r‘   r¸   rÚ   s    r\   r¸   ÚTableIterator.close7  s   € Ø�?�?Ø�J‰J×ÑÕð r^   c                ó$  • U R                   bT  [        U R                  [        5      (       d  [	        S5      eU R                  R                  U R                  S9U l        U $ U(       ad  [        U R                  [        5      (       d  [	        S5      eU R                  R                  U R                  U R                  U R                  S9nOU R                  nU R                  U R                  U R                  U5      nU R                  5         U$ )Nz0can only use an iterator or chunksize on a table)rm   z$can only read_coordinates on a tablerK  )r¨   r`   r?  r  r±   rM  rm   ra  r¤   r¥   r@  r¸   )rÔ   ra  rm   Úresultss       r\   rG  Ú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^   )
r©   r¨   ra  r@  rC  r?  r¤   r¥   r‘   rm   )NNFNF)r‘   rœ   r?  r'  r§   r+  r¨   r  r©   r+  r  r  ©r  rG   r  r  )ra  r+  )rõ   r(  r)  r*  r+  r,  rÖ   r  r¸   rG  r.  rÊ   r^   r\   rF  rF  å  s   ‡ ñð& ÓØƒOØÓð ØØØ $Ø ð(%àð(%ð  ð(%ð ð(%ð ð(%ð ð(%ð 
õ(%ôTô ÷ñ r^   rF  c                  ó¦  • \ rS rSr% SrSrS\S'   SrS\S'   / SQr             S#     S$S	 jjr	\
S%S
 j5       r\
S&S j5       rS'S jrS&S jrS(S jrS)S jr\
S)S j5       r        S*S jrS r\
S 5       r\
S 5       r\
S 5       r\
S 5       rS+S jrS,S-S jjrS-S jrS.S jrS,S jrS/S jrS-S jrS-S jrS-S jr S0S  jr!S0S! jr"S"r#g)1ÚIndexColiU  zò
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                ó¬  • [        U[        5      (       d  [        S5      eX l        X0l        X@l        Xl        U=(       d    UU l        X`l        Xpl	        X€l
        X�l        X l        X°l        XÀl        XÐl        Xàl        Ub  U R#                  U5        [        U R                  [        5      (       d   e[        U R                  [        5      (       d   eg )Nz`name` must be a str.)r`   ra   rª   r˜  r«  Útyprc   Úcnamer[  Úposr@  rA  rB  r   ru   r¾   ÚmetadataÚset_pos)rÔ   rc   r˜  r«  rD  rE  r[  rF  r@  rA  rB  r   ru   r¾   rG  s                  r\   rÖ   ÚIndexCol.__init__g  sª   € ô" ˜$¤×$Ñ$ÜÐ4Ó5Ð5àŒØŒ	ØŒØŒ	Ø—]˜dˆŒ
ØŒ	ØŒØŒ	ØŒØ$ŒØŒØŒ
ØŒ	Ø Œà‰?Ø�L‰L˜Ôô ˜$Ÿ)™)¤S×)Ñ)Ð)Ð)Ü˜$Ÿ*™*¤c×*Ñ*Ð*Ñ*r^   c                ó.   • U R                   R                  $ rX   )rD  ÚitemsizerÚ   s    r\   rK  ÚIndexCol.itemsize’  s   € ð �x‰x× Ñ Ð r^   c                ó    • U R                    S3$ )NÚ_kindrb   rÚ   s    r\   Ú	kind_attrÚIndexCol.kind_attr—  ó   € à—)‘)�˜EÐ"Ð"r^   c                óT   • Xl         Ub  U R                  b  XR                  l        ggg)z,set the position of this column in the TableN)rF  rD  Ú_v_pos)rÔ   rF  s     r\   rH  ÚIndexCol.set_pos›  s%   € àŒØ‰?˜tŸx™xÑ3Ø!�H‰H�Oð  4ˆ?r^   c           
     ó  • [        [        [        U R                  U R                  U R
                  U R                  U R                  45      5      nSR                  [        / SQUSS9 VVs/ s H  u  p#U SU 3PM     snn5      $ s  snnf )NÚ,)rc   rE  r[  rF  r«  TrW  ú->)
rk   ÚmaprD   rc   rE  r[  rF  r«  Újoinrd  ©rÔ   Útempr’   r“   s       r\   r  ÚIndexCol.__repr__¡  s‡   € ÜÜ”˜tŸy™y¨$¯*©*°d·i±iÀÇÁÈ4Ï9É9ÐUÓVó
ˆð �x‰xô #&Ú<¸dÈ4ò#ôò#‘J�Cð �%�r˜%˜Ó!ñ#òó
ð 	
ùóó   Á,B
c                ó2   ^ ^• [        UU 4S jS 5       5      $ )úcompare 2 col itemsc              3  óZ   >#   • U  H   n[        TUS 5      [        TUS 5      :H  v •  M"     g 7frX   ©r´  ©rˆ  r£   ÚotherrÔ   s     €€r\   rŠ  Ú"IndexCol.__eq__.<locals>.<genexpr>°  s/   øé € ð 
â5�ô �D˜!˜TÓ"¤g¨e°Q¸Ó&=Ö=Ú5ùó   ƒ(+)rc   rE  r[  rF  ©r†  ©rÔ   rc  s   ``r\   Ú__eq__ÚIndexCol.__eq__®  s   ù€ äõ 
á5ó
ó 
ð 	
r^   c                ó.   • U R                  U5      (       + $ rX   )rh  rg  s     r\   Ú__ne__ÚIndexCol.__ne__µ  s   € Ø—;‘;˜uÓ%Ô%Ð%r^   c                ó¢   • [        U R                  S5      (       d  g[        U R                  R                  U R                  5      R
                  $ )z%return whether I am an indexed columnr‰  F)Úhasattrru   r´  r‰  rE  rÇ  rÚ   s    r\   rÇ  ÚIndexCol.is_indexed¸  s7   € ô �t—z‘z 6×*Ñ*àÜ�t—z‘z—‘¨¯
©
Ó3×>Ñ>Ð>r^   c           
     ó  • [        U[        R                  5      (       d   [        U5      5       eUR                  R
                  b  XR                     R                  5       nU R                  n[        XX45      n0 nU R                  US'   U R                  b  U R                  US'   [        n[        R                  " UR                  S5      (       d  [        UR                  [        5      (       a  [         nOUR                  S:X  a	  SU;   a  S n U" U40 UD6nU R2                  bB  [        U[         5      (       a-  UR5                  S5      R7                  U R2                  5      n
Xª4$ Un
Xª4$ ! ["         ak  n	US:X  a_  [%        5       (       aP  ['        U	5      R)                  S5      (       a1  [*        (       a&  U" U4S	[-        S
[        R.                  S90UD6n Sn	A	NÃe Sn	A	f[0         a    SU;   a  SUS'   U" U40 UD6n Nçf = f)zF
Convert the data from this selection to the appropriate pandas type.
Nrc   r@  ÚMÚi8c                ón   • [         R                  " XR                  SS 5      S9R                  US   5      $ )Nr@  )r@  rc   )r1   Úfrom_ordinalsræ   Ú_rename)rk  Úkwdss     r\   r”   Ú"IndexCol.convert.<locals>.<lambda>à  s0   € ¬×(AÒ(AØŸ™ ¨Ó.ñ)ç‰g�d˜6‘lÓ#ð)$r^   Úsurrogatepassúsurrogates not allowedÚdtypeÚpython©ÚstorageÚna_valueÚUTC)r`   ÚnpÚndarrayrô   rz  ÚfieldsrE  rÌ  r«  Ú_maybe_convertrB  r@  r/   r   Úis_np_dtyper)   r.   ÚUnicodeEncodeErrorr   ra   r  r   r4   Únanrª   rA  Útz_localizeÚ
tz_convert)rÔ   r˜  r‹   r[   rŽ   Úval_kindr¹   ÚfactoryÚnew_pd_indexr~  Úfinal_pd_indexs              r\   ÚconvertÚIndexCol.convertÀ  sØ  € ô ˜&¤"§*¡*×-Ñ-Ð;¬t°F«|Ó;Ð-ð �<‰<×ÑÑ*ð ŸJ™JÑ'×,Ñ,Ó.ˆFà—9‘9ˆÜ °(ÓCˆØˆØŸ™ˆˆv‰à�9‰9Ñ Ø!ŸY™YˆF�6‰Nä/4ˆÜ�?Š?˜6Ÿ<™<¨×-Ñ-´Ø�L‰Lœ/÷2
ñ 2
ô $‰GØ�\‰\˜TÓ! f°Ó&6ñ
$ˆGð
	5Ù" 6Ñ4¨VÑ4ˆLð. �7‰7Ñ¤:¨l¼M×#JÑ#JØ)×5Ñ5°eÓ<×GÑGÈÏÉÓPˆNð Ð-Ð-ð *ˆNØÐ-Ð-øô5 "ó 	à˜/Ó)Ü&×(Ñ(Ü˜“H×%Ñ%Ð&>×?Ñ?ß’Ká&Øñ ä%¨hÄÇÁÑHð ð ñ •ð ûÜó 	5ð ˜ÓØ!%��v‘Ù" 6Ñ4¨VÑ4ŠLð	5ús%   Ä	E1 Å1
HÅ;A G!Ç G!Ç!!HÈHc                ó   • U R                   $ )zreturn the values©r˜  rÚ   s    r\   Ú	take_dataÚIndexCol.take_data	  s   € à�{‰{Ðr^   c                ó.   • U R                   R                  $ rX   )ru   rµ  rÚ   s    r\   ÚattrsÚIndexCol.attrs	  ó   € à�z‰z×"Ñ"Ð"r^   c                ó.   • U R                   R                  $ rX   ©ru   ÚdescriptionrÚ   s    r\   r™  ÚIndexCol.description	  ó   € à�z‰z×%Ñ%Ð%r^   c                óD   • [        U R                  U R                  S5      $ )z!return my current col descriptionN)r´  r™  rE  rÚ   s    r\   ÚcolÚIndexCol.col	  s   € ô �t×'Ñ'¨¯©°TÓ:Ð:r^   c                ó   • U R                   $ ©zreturn my cython valuesr�  rÚ   s    r\   ÚcvaluesÚIndexCol.cvalues	  s   € ð �{‰{Ðr^   c                ó,   • [        U R                  5      $ rX   )r  r˜  rÚ   s    r\   r  ÚIndexCol.__iter__	  s   € Ü�D—K‘KÓ Ð r^   c                ó  • U R                   S:X  av  [        U[        5      (       a  UR                  U R                  5      nUbB  U R
                  R                  U:  a'  [        5       R                  XR                  S9U l        gggg)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)rK  rF  )
r«  r`   r�  ræ   rc   rD  rK  r…   Ú	StringColrF  )rÔ   rŠ   s     r\   Úmaybe_set_sizeÚIndexCol.maybe_set_size	  sq   € ð �9‰9˜Ó Ü˜,¬×-Ñ-Ø+×/Ñ/°·	±	Ó:�àÑ'¨D¯H©H×,=Ñ,=ÀÓ,LÜ"›9×.Ñ.¸Ï(É(Ð.ÐS�•ð -MÐ'ð	 !r^   c                ó   • g rX   rÊ   rÚ   s    r\   Úvalidate_namesÚIndexCol.validate_names)	  ó   € Ør^   c                óÌ   • UR                   U l         U R                  5         U R                  U5        U R                  U5        U R	                  U5        U R                  5         g rX   )ru   Úvalidate_colÚvalidate_attrÚvalidate_metadataÚwrite_metadataÚset_attr)rÔ   Úhandlerr�   s      r\   Úvalidate_and_setÚIndexCol.validate_and_set,	  sL   € Ø—]‘]ˆŒ
Ø×ÑÔØ×Ñ˜6Ô"Ø×Ñ˜wÔ'Ø×Ñ˜GÔ$Ø�‰�r^   c           	     óê   • U R                   S:X  ac  U R                  nUbT  Uc  U R                  nUR                  U:  a)  [        SU SU R                   SUR                   S35      eUR                  $ g)z:validate this column: return the compared against itemsizer¦  Nz#Trying to store a string with len [z] in [z)] column but
this column has a limit of [zC]!
Consider using min_itemsize to preset the sizes on these columns)r«  r�  rK  rª   rE  )rÔ   rK  Úcs      r\   r¯  ÚIndexCol.validate_col4	  sƒ   € ð �9‰9˜Ó Ø—‘ˆAØ‰}ØÑ#Ø#Ÿ}™}�HØ—:‘: Ó(Ü$Ø=¸h¸Zð HØ ŸJ™J˜<ð (ØŸJ™J˜<ð (<ð<óð ð —z‘zÐ!àr^   c                ó´   • U(       aQ  [        U R                  U R                  S 5      nUb,  X R                  :w  a  [	        SU SU R                   S35      eg g g )Nzincompatible kind in col [ú - rX  )r´  r”  rO  r«  r±   )rÔ   r�   Úexisting_kinds      r\   r°  ÚIndexCol.validate_attrG	  s[   € æÜ# D§J¡J°·±ÀÓEˆMØÑ(¨]¿i¹iÓ-GÜØ0°°¸sÀ4Ç9Á9À+ÈQÐOóð ð .HÐ(ð r^   c                óœ  • U R                    H¼  n[        XS5      nUR                  U R                  0 5      nUR	                  U5      nX$;   ao  Ubl  XS:w  ag  US;   a?  [
        X%U4-  n[        R                  " U[        [        5       S9  SXB'   [        XS5        MŽ  [        SU R                   SU SU SU S3	5      eUc  Uc  M¸  X4U'   M¾     g)	zg
set/update the info for this indexable with the key/value
if there is a conflict raise/warn as needed
N)r@  rB  ©Ú
stacklevelzinvalid info for [z] for [z], existing_value [z] conflicts with new value [rX  )Ú_info_fieldsr´  Ú
setdefaultrc   ræ   rr   ÚwarningsÚwarnr   r!   Úsetattrrª   )rÔ   rÕ  r’   r“   ÚidxÚexisting_valueÚwss          r\   Úupdate_infoÚIndexCol.update_infoP	  sä   € ð
 ×$Ô$ˆCÜ˜D tÓ,ˆEØ—/‘/ $§)¡)¨RÓ0ˆCà ŸW™W S›\ˆNØ‹z˜eÑ/°NÓ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                óx   • UR                  U R                  5      nUb  U R                  R                  U5        gg)z!set my state from the passed infoN)ræ   rc   Ú__dict__Úupdate)rÔ   rÕ  rÆ  s      r\   Úset_infoÚIndexCol.set_infoo	  s0   € à�h‰h�t—y‘yÓ!ˆØ‰?Ø�M‰M× Ñ  Õ%ð r^   c                óZ   • [        U R                  U R                  U R                  5        g)zset the kind for this columnN)rÅ  r”  rO  r«  rÚ   s    r\   r³  ÚIndexCol.set_attru	  s   € ä�—
‘
˜DŸN™N¨D¯I©IÕ6r^   c                óº   • U R                   S:X  aK  U R                  nUR                  U R                  5      nUb   Ub  [	        X#SSS9(       d  [        S5      egggg)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¾   rG  Úread_metadatarE  r,   rª   )rÔ   r´  Únew_metadataÚcur_metadatas       r\   r±  ÚIndexCol.validate_metadatay	  sn   € à�9‰9˜
Ó"ØŸ=™=ˆLØ"×0Ñ0°·±Ó<ˆLàÑ(Ø Ñ,Ü(Ø ¸4ÈT÷ô !ð;óð ð	ð -ð )ð	 #r^   c                ól   • U R                   b'  UR                  U R                  U R                   5        gg)zset the meta dataN)rG  r²  rE  )rÔ   r´  s     r\   r²  ÚIndexCol.write_metadataŠ	  s)   € à�=‰=Ñ$Ø×"Ñ" 4§:¡:¨t¯}©}Õ=ð %r^   )r[  rE  r@  rB  r«  r¾   rG  rc   r   rF  ru   rD  rA  r˜  )NNNNNNNNNNNNN)rc   ra   rE  r%  r  r  r  r  )rF  r  r  r  ©rc  Úobjectr  r+  r  )r˜  ú
np.ndarrayr[   ra   rŽ   ra   r  z3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]r;  rX   r  )r´  ÚAppendableTabler�   r+  r  r  )r�   r+  r  r  )r´  rà  r  r  )$rõ   r(  r)  r*  r+  r>  r,  r?  rÁ  rÖ   r-  rK  rO  rH  r  rh  rk  rÇ  r�  r‘  r”  r™  r�  r¡  r  r¨  r«  rµ  r¯  r°  rÉ  rÎ  r³  r±  r²  r.  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                  óP   • \ rS rSrSr\SS j5       r        S	S jrS
S jrSr	g)ÚGenericIndexColi�	  z:an index which is not represented in the data of the tablec                ó   • g©NFrÊ   rÚ   s    r\   rÇ  ÚGenericIndexCol.is_indexed“	  ó   € àr^   c                óŽ   • [        U[        R                  5      (       d   [        U5      5       e[	        [        U5      5      nXU4$ )z›
Convert the data from this selection to the appropriate pandas type.

Parameters
----------
values : np.ndarray
nan_rep : str
encoding : str
errors : str
)r`   r€  r�  rô   r2   rl   )rÔ   r˜  r‹   r[   rŽ   r‰   s         r\   r�  ÚGenericIndexCol.convert—	  s:   € ô ˜&¤"§*¡*×-Ñ-Ð;¬t°F«|Ó;Ð-äœ3˜v›;Ó'ˆØˆ|Ðr^   c                ó   • g rX   rÊ   rÚ   s    r\   r³  ÚGenericIndexCol.set_attr©	  r­  r^   rÊ   Nr  )r˜  rß  r[   ra   rŽ   ra   r  ztuple[Index, Index]r  )
rõ   r(  r)  r*  r+  r-  rÇ  r�  r³  r.  rÊ   r^   r\   râ  râ  �	  sA   † ÙDàóó ððØ ðØ58ðØBEðà	ô÷$r^   râ  c                  ó`  ^ • \ rS rSrSrSrSrSS/r            S       SU 4S jjjr\	SS j5       r
\	SS j5       rSS	 jrSS
 jrSS jrS r\SS j5       r\S 5       r\SS j5       r\S S j5       r\S 5       r\S 5       r\	S 5       r\	S 5       rS!S jrS"S jrS!S jrSrU =r$ )#ÚDataColi­	  a  
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
FrA  r   c                óL   >• [         TU ]  UUUUUUUUU	U
US9  XÀl        XÐl        g )N)rc   r˜  r«  rD  rF  rE  rA  r   ru   r¾   rG  )ÚsuperrÖ   rz  rË  )rÔ   rc   r˜  r«  rD  rE  rF  rA  r   ru   r¾   rG  rz  rË  Ú	__class__s                 €r\   rÖ   ÚDataCol.__init__¾	  sD   ø€ ô  	‰ÑØØØØØØØØØØØð 	ñ 	
ð Œ
Ø�	r^   c                ó    • U R                    S3$ )NÚ_dtyperb   rÚ   s    r\   Ú
dtype_attrÚDataCol.dtype_attrÞ	  s   € à—)‘)�˜FÐ#Ð#r^   c                ó    • U R                    S3$ )NÚ_metarb   rÚ   s    r\   Ú	meta_attrÚDataCol.meta_attrâ	  rQ  r^   c           
     ó  • [        [        [        U R                  U R                  U R
                  U R                  U R                  45      5      nSR                  [        / SQUSS9 VVs/ s H  u  p#U SU 3PM     snn5      $ s  snnf )NrV  )rc   rE  rz  r«  ÚshapeTrW  rW  )
rk   rX  rD   rc   rE  rz  r«  rú  rY  rd  rZ  s       r\   r  ÚDataCol.__repr__æ	  sŠ   € ÜÜÜ˜tŸy™y¨$¯*©*°d·j±jÀ$Ç)Á)ÈTÏZÉZÐXóó
ˆð
 �x‰xô #&Ú?ÀÈdò#ôò#‘J�Cð �%�r˜%˜Ó!ñ#òó
ð 	
ùór]  c                ó2   ^ ^• [        UU 4S jS 5       5      $ )r_  c              3  óZ   >#   • U  H   n[        TUS 5      [        TUS 5      :H  v •  M"     g 7frX   ra  rb  s     €€r\   rŠ  Ú!DataCol.__eq__.<locals>.<genexpr>÷	  s/   øé € ð 
â6�ô �D˜!˜TÓ"¤g¨e°Q¸Ó&=Ö=Ú6ùre  )rc   rE  rz  rF  rf  rg  s   ``r\   rh  ÚDataCol.__eq__õ	  s   ù€ äõ 
á6ó
ó 
ð 	
r^   c                ó~   • Uc   eU R                   b   e[        U5      u  pXl        X l         [        U5      U l        g rX   )rz  Ú_get_data_and_dtype_namerË  Ú_dtype_to_kindr«  )rÔ   rË  Ú
dtype_names      r\   Úset_dataÚDataCol.set_dataü	  sA   € ØÑÐÐØ�z‰zÑ!Ð!Ð!ä3°DÓ9ÑˆàŒ	ØŒ
Ü" :Ó.ˆ�	r^   c                ó   • U R                   $ )zreturn the data©rË  rÚ   s    r\   r‘  ÚDataCol.take_data
  s   € à�y‰yÐr^   c                óÌ  • UR                   nUR                  nUR                  nUR                  S:X  a  SUR                  4n[        U[        5      (       a1  UR                  nU R                  XER                   R                  S9nU$ [        R                  " US5      (       d  [        U[        5      (       a  U R                  U5      nU$ [        R                  " US5      (       a  U R                  U5      nU$ [        U5      (       a  [!        5       R#                  X4S   S9nU$ [%        U5      (       a  U R'                  XC5      nU$ U R                  XBR                  S9nU$ )zG
Get an appropriately typed and shaped pytables.Col object for values.
rg   ©r«  rq  Úmr   ©rK  rú  )rz  rK  rú  r‘  Úsizer`   r8   ÚcodesÚget_atom_datarc   r   r„  r)   Úget_atom_datetime64Úget_atom_timedelta64r$   r…   Ú
ComplexColr&   Úget_atom_string)rø  r˜  rz  rK  rú  r  Úatoms          r\   Ú	_get_atomÚDataCol._get_atom

  sF  € ð
 —‘ˆð —>‘>ˆà—‘ˆØ�;‰;˜!Óð ˜Ÿ™Ð$ˆEä�fœk×*Ñ*Ø—L‘LˆEØ×$Ñ$ U·±×1AÑ1AÐ$ÐBˆDð ˆô �_Š_˜U C×(Ñ(¬J°u¼o×,NÑ,NØ×*Ñ*¨5Ó1ˆDð ˆô �_Š_˜U C×(Ñ(Ø×+Ñ+¨EÓ2ˆDð ˆô ˜e×$Ñ$Ü“9×'Ñ'°ÀqÁÐ'ÐJˆDð ˆô ˜U×#Ñ#Ø×&Ñ& uÓ7ˆDð ˆð ×$Ñ$ U·±Ð$Ð<ˆDàˆr^   c                ó6   • [        5       R                  X!S   S9$ )Nr   r  ©r…   r§  ©rø  rú  rK  s      r\   r  ÚDataCol.get_atom_string*
  s   € ä‹y×"Ñ"¨HÀ!¹HÐ"ÐEÐEr^   c                óÊ   • UR                  S5      (       a  USS nSU S3nO.UR                  S5      (       a  SnOUR                  5       nU S3n[        [        5       U5      $ )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_coltypeÚDataCol.get_atom_coltype.
  se   € ð �?‰?˜6×"Ñ"Ø�a�b�ˆBØ˜b˜T �~‰HØ�_‰_˜X×&Ñ&à!‰Hà—?‘?Ó$ˆDØ˜˜s�|ˆHä”w“y (Ó+Ð+r^   c                ó.   • U R                  US9" US   S9$ )Nr
  r   ©rú  ©r%  ©rø  rú  r«  s      r\   r  ÚDataCol.get_atom_data=
  s   € à×#Ñ#¨Ð#Ñ.°U¸1±XÑ>Ð>r^   c                ó6   • [        5       R                  US   S9$ ©Nr   r(  ©r…   r   ©rø  rú  s     r\   r  ÚDataCol.get_atom_datetime64A
  ó   € ä‹y×!Ñ!¨¨a©Ð!Ð1Ð1r^   c                ó6   • [        5       R                  US   S9$ r-  r.  r/  s     r\   r  ÚDataCol.get_atom_timedelta64E
  r1  r^   c                ó0   • [        U R                  SS 5      $ )Nrú  )r´  rË  rÚ   s    r\   rú  ÚDataCol.shapeI
  s   € ä�t—y‘y '¨4Ó0Ð0r^   c                ó   • U R                   $ r   r  rÚ   s    r\   r¡  ÚDataCol.cvaluesM
  s   € ð �y‰yÐr^   c                ó"  • U(       aˆ  [        U R                  U R                  S5      nUb$  U[        U R                  5      :w  a  [        S5      e[        U R                  U R                  S5      nUb  X0R                  :w  a  [        S5      eggg)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´  r”  rO  rj   r˜  rª   ró  rz  )rÔ   r�   Úexisting_fieldsÚexisting_dtypes       r\   r°  Ú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           	     ó  • [        U[        R                  5      (       d   [        U5      5       eUR                  R
                  b  XR                     nU R                  c   eU R                  c  [        U5      u  pV[        U5      nOUnU R                  nU R                  n[        U[        R                  5      (       d   eU R                  nU R                  n	U R                  n
U R                  nUc   eUnUR                  S5      (       a  US:X  a  Sn[!        X[U5      nGOKUR                  S5      (       a3  US:X  a  [        R"                  " USS9nGO[        R"                  " X\S9nGOUS:X  a@   [        R"                  " U Vs/ s H  n[$        R&                  " U5      PM     sn[(        S9nO¼US:X  a¥  U	nUR/                  5       nUc  [1        / [        R2                  S9nO`[5        U5      nUR7                  5       (       a@  UU)    nXÿS:g  ==   UR9                  [:        5      R=                  5       R>                  -  ss'   [@        RB                  " XþU
S	S
9nO UR9                  US	S9nUS:X  a
  [G        XRX4S9nU RH                  U4$ s  snf ! [*         aG    [        R"                  " U Vs/ s H  n[$        R,                  " U5      PM     Os  snf sn[(        S9n Nsf = f! [D         a    UR9                  SS	S9n N“f = f)zò
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]©rz  r   rÓ  éÿÿÿÿF)Ú
categoriesr   Úvalidate©rÌ  ÚOr¦  ©r‹   r[   rŽ   )%r`   r€  r�  rô   rz  r‚  rE  rD  r  r  r«  r¾   rG  r   rA  rÀ  Ú_set_tzÚasarrayr   ÚfromordinalrÞ  rª   ÚfromtimestampÚravelr/   Úfloat64r7   ÚanyÚastyper  ÚcumsumÚ_valuesr8   Ú
from_codesr±   Ú_unconvert_string_arrayr˜  )rÔ   r˜  r‹   r[   rŽ   Ú	convertedr  r«  r¾   rG  r   rA  rz  rŸ  rC  r  Úmasks                    r\   r�  ÚDataCol.convert_
  s¹  € ô  ˜&¤"§*¡*×-Ñ-Ð;¬t°F«|Ó;Ð-ð �<‰<×ÑÑ*ØŸJ™JÑ'ˆFà�x‰xÑ#Ð#Ð#Ø�:‰:Ñô %=¸VÓ$DÑ!ˆIÜ! *Ó-‰DàˆIØŸ™ˆJØ—9‘9ˆDä˜)¤R§Z¡Z×0Ñ0Ð0Ð0ð �y‰yˆØ—=‘=ˆØ—,‘,ˆØ�W‰WˆàÑ%Ð%Ð%àˆð ×Ñ˜L×)Ñ)à˜Ó$Ø(�Ü 	¨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ÓÜ/Ø°XñˆIð �{‰{˜IÐ%Ð%ùòW =øäó ÜŸJšJÙ4=Ó>²I¨q”T×'Ò'¨Ö*²IùÔ>Äfñ’	ðûô@ ó >Ø%×,Ñ,¨S°uÐ,Ð=’	ð>úsB   Å8J Æ JÆ,
J É#K* ÊJ ÊK'Ê4 K
ËK'Ë&K'Ë*LÌLc                ó$  • [        U R                  U R                  U R                  5        [        U R                  U R                  U R
                  5        U R                  c   e[        U R                  U R                  U R                  5        g)zset the data for this columnN)rÅ  r”  rO  r˜  r÷  r¾   rz  ró  rÚ   s    r\   r³  Ú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^   )rË  rz  r«  )NNNNNNNNNNNN)rc   ra   rE  r%  rz  zDtypeArg | Noner  r  r  rÝ  )rË  rO   r  r  )r˜  rO   r  rK   )r«  ra   r  z	type[Col]©r«  ra   r  rK   r  )r˜  rß  r[   ra   rŽ   ra   )rõ   r(  r)  r*  r+  r>  r?  rÁ  rÖ   r-  ró  r÷  r  rh  r  r‘  Úclassmethodr  r  r%  r  r  r  rú  r¡  r°  r�  r³  r.  Ú__classcell__©rï  s   @r\   rì  rì  ­	  sj  ø† ñ
ð €OØÐØ˜)Ð$€Lð
 ØØØ ØØØØØØØ!%Øðàðð ðð ðð 
÷ð ð@ ó$ó ð$ð ó#ó ð#ô
ô
ô/òð óó ðð> ñFó ðFð ó,ó ð,ð ó?ó ð?ð ñ2ó ð2ð ñ2ó ð2ð ñ1ó ð1ð ñó ðôôh&÷T9ò 9r^   rì  c                  ój   • \ rS rSrSrSrSS jr\S 5       r\SS j5       r	\S 5       r
\S 5       rS	rg
)ÚDataIndexableColiÑ
  z+represent a data column that can be indexedTc                ót   • [        [        U R                  5      R                  5      (       d  [	        S5      eg )Nú-cannot have non-object label DataIndexableCol)r&   r/   r˜  rz  rª   rÚ   s    r\   r«  ÚDataIndexableCol.validate_namesÖ
  s-   € Üœu T§[¡[Ó1×7Ñ7×8Ñ8äÐLÓMÐMð 9r^   c                ó0   • [        5       R                  US9$ )N)rK  r  r  s      r\   r  Ú DataIndexableCol.get_atom_stringÛ
  s   € ä‹y×"Ñ"¨HÐ"Ð5Ð5r^   c                ó*   • U R                  US9" 5       $ )Nr
  r)  r*  s      r\   r  ÚDataIndexableCol.get_atom_dataß
  s   € à×#Ñ#¨Ð#Ñ.Ó0Ð0r^   c                ó2   • [        5       R                  5       $ rX   r.  r/  s     r\   r  Ú$DataIndexableCol.get_atom_datetime64ã
  ó   € ä‹y×!Ñ!Ó#Ð#r^   c                ó2   • [        5       R                  5       $ rX   r.  r/  s     r\   r  Ú%DataIndexableCol.get_atom_timedelta64ç
  rh  r^   rÊ   Nr  rY  )rõ   r(  r)  r*  r+  r?  r«  rZ  r  r  r  r  r.  rÊ   r^   r\   r^  r^  Ñ
  sa   † Ù5àÐôNð
 ñ6ó ð6ð ó1ó ð1ð ñ$ó ð$ð ñ$ó ó$r^   r^  c                  ó   • \ rS rSrSrSrg)ÚGenericDataIndexableColiì
  z(represent a generic pytables data columnrÊ   N)rõ   r(  r)  r*  r+  r.  rÊ   r^   r\   rl  rl  ì
  s   † Ü2r^   rl  c                  óþ  • \ rS rSr% SrS\S'   SrS\S'   S\S'   S	\S
'   S\S'   SrS\S'     S+         S,S jjr\	S-S j5       r
\	S.S j5       r\	S 5       rS/S jrS0S jrS1S jr\	S 5       r\	S 5       r\	S 5       r\	S 5       r\	S2S j5       r\	S-S j5       r\	S 5       rS0S jrS0S jr\	S  5       r\	S-S! j5       r\	S" 5       rS3S# jrS4S0S% jjrS-S& jr    S5     S6S' jjrS0S( jr  S7     S8S) jjr!S*r"g$)9ÚFixedið
  zÔ
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  r‘  rœ   rÅ   Fr+  re  c                ó  • [        U[        5      (       d   [        U5      5       e[        c   e[        U[        R                  5      (       d   [        U5      5       eXl        X l        [        U5      U l        X@l	        g rX   )
r`   rœ   rô   r}   rM   rÅ   rÂ   r]   r[   rŽ   )rÔ   rÅ   rÂ   r[   rŽ   s        r\   rÖ   ÚFixed.__init__  sg   € ô ˜&¤(×+Ñ+Ð9¬T°&«\Ó9Ð+ÜÑ%Ð%Ð%Ü˜%¤§¡×1Ñ1Ð>´4¸³;Ó>Ð1ØŒØŒ
Ü(¨Ó2ˆŒØ�r^   c                óŠ   • U R                   S   S:*  =(       a+    U R                   S   S:*  =(       a    U R                   S   S:  $ )Nr   rg   é
   é   )ÚversionrÚ   s    r\   Úis_old_versionÚFixed.is_old_version  s:   € à�|‰|˜A‰ !Ñ#×U¨¯©°Q©¸2Ñ(=×UÀ$Ç,Á,ÈqÁ/ÐTUÑBUÐUr^   c                ó  • [        U R                  R                  SS5      n[        U[        5      (       aJ  [        S UR                  S5       5       5      n[        U5      S:X  a  / UQSP7n[        U5      S:X  d   eU$ g)	zcompute and set our versionÚpandas_versionNc              3  ó8   #   • U  H  n[        U5      v •  M     g 7frX   )r  )rˆ  rk  s     r\   rŠ  Ú Fixed.version.<locals>.<genexpr>  s   é € ÐCÒ0B¨1¤ A§ Ò0Bùs   ‚Ú.rw  r   é   )r   r   r   )r´  rÂ   rµ  r`   ra   rk   r  rl   )rÔ   rx  Úversion_tups      r\   rx  ÚFixed.version  s{   € ô ˜$Ÿ*™*×-Ñ-Ð/?ÀÓFˆÜ�gœs×#Ñ#ÜÑC°·±¸cÔ0BÓCÓCˆKÜ�;Ó 1Ó$Ø/ Ð/¨QÑ/�Ü�{Ó# qÓ(Ð(Ð(ØÐàr^   c                óD   • [        U R                  R                  SS 5      $ )Nr°  )r´  rÂ   rµ  rÚ   s    r\   r°  ÚFixed.pandas_type$  s   € ä�t—z‘z×*Ñ*¨M¸4Ó@Ð@r^   c                ó   • U R                  5         U R                  nUb_  [        U[        [        45      (       a1  SR                  U Vs/ s H  n[        U5      PM     sn5      nSU S3nU R                  S SU S3$ U R                  $ s  snf )ú(return a pretty representation of myselfrV  Ú[rX  ú12.12z	 (shape->Ú))rE  rú  r`   rj   rk   rY  rD   r°  )rÔ   r?  rk  Újshapes       r\   r  ÚFixed.__repr__(  s†   € à�‰ÔØ�J‰JˆØ‰=Ü˜!œd¤E˜]×+Ñ+ØŸ™¹AÓ">ºA°q¤<°¦?¹AÑ">Ó?�Ø˜�x˜q�M�Ø×&Ñ& uÐ-¨Y°q°c¸Ð;Ð;Ø×ÑÐùò #?s   Á
Bc                óˆ   • [        U R                  5      U R                  l        [        [        5      U R                  l        g)zset my pandas type & versionN)ra   ro  r”  r°  Ú_versionr|  rÚ   s    r\   r  ÚFixed.set_object_info3  s)   € ä!$ T×%5Ñ%5Ó!6ˆ�
‰
ÔÜ$'¬£Mˆ�
‰
Õ!r^   c                ó2   • [         R                   " U 5      nU$ rX   rE  )rÔ   Únew_selfs     r\   rÌ  Ú
Fixed.copy8  s   € Ü—9’9˜T“?ˆØˆr^   c                ó   • U R                   $ rX   )rC  rÚ   s    r\   rú  ÚFixed.shape<  rä   r^   c                ó.   • U R                   R                  $ rX   ©rÂ   rµ   rÚ   s    r\   rf  ÚFixed.pathname@  r›  r^   c                ó.   • U R                   R                  $ rX   )rÅ   rÇ   rÚ   s    r\   rÇ   ÚFixed._handleD  s   € à�{‰{×"Ñ"Ð"r^   c                ó.   • U R                   R                  $ rX   )rÅ   rÒ   rÚ   s    r\   rÒ   ÚFixed._filtersH  s   € à�{‰{×#Ñ#Ð#r^   c                ó.   • U R                   R                  $ rX   )rÅ   rÏ   rÚ   s    r\   rÏ   ÚFixed._complevelL  s   € à�{‰{×%Ñ%Ð%r^   c                ó.   • U R                   R                  $ rX   )rÅ   rÑ   rÚ   s    r\   rÑ   ÚFixed._fletcher32P  s   € à�{‰{×&Ñ&Ð&r^   c                ó.   • U R                   R                  $ rX   )rÂ   rµ  rÚ   s    r\   r”  ÚFixed.attrsT  r–  r^   c                ó   • g©zset our object attributesNrÊ   rÚ   s    r\   Ú	set_attrsÚFixed.set_attrsX  ó   � r^   c                ó   • g)zget our object attributesNrÊ   rÚ   s    r\   Ú	get_attrsÚFixed.get_attrs[  r¥  r^   c                ó   • U R                   $ )zreturn my storable©rÂ   rÚ   s    r\   ÚstorableÚFixed.storable^  s   € ð �z‰zÐr^   c                ó   • grä  rÊ   rÚ   s    r\   r   ÚFixed.is_existsc  ræ  r^   c                ó0   • [        U R                  SS 5      $ )NrC  )r´  r«  rÚ   s    r\   rC  ÚFixed.nrowsg  s   € ä�t—}‘} g¨tÓ4Ð4r^   c                ó   • Uc  gg)z%validate against an existing storableNTrÊ   rg  s     r\   rD  ÚFixed.validatek  s   € à‰=ØØr^   Nc                ó   • g)ú+are we trying to operate on an old version?NrÊ   ©rÔ   rm   s     r\   Úvalidate_versionÚFixed.validate_versionq  r¥  r^   c                óD   • U R                   nUc  gU R                  5         g)zZ
infer the axes of my storer
return a boolean indicating if we have a valid storer or not
FT)r«  r§  )rÔ   r?  s     r\   rE  ÚFixed.infer_axest  s"   € ð
 �M‰MˆØ‰9ØØ�‰ÔØr^   c                ó   • [        S5      e)Nz>cannot read on an abstract storer: subclasses should implement©r­   ©rÔ   rm   r¦   r¤   r¥   s        r\   r;  Ú
Fixed.read  s   € ô "ØLó
ð 	
r^   c                ó   • [        S5      e)Nz?cannot write on an abstract storer: subclasses should implementr»  ©rÔ   rý  r¹   s      r\   r  ÚFixed.writeŠ  s   € Ü!ØMó
ð 	
r^   c                óš   • [         R                  " XU5      (       a%  U R                  R                  U R                  SS9  g[        S5      e)z[
support fully deleting the node in its entirety (only) - where
specification must be None
Trv  Nz#cannot delete on an abstract storer)r{  r|  rÇ   r  rÂ   r±   )rÔ   rm   r¤   r¥   s       r\   r}  ÚFixed.delete�  s?   € ô �<Š<˜ d×+Ñ+Ø�L‰L×$Ñ$ T§Z¡Z¸4Ð$Ñ@ØäÐ=Ó>Ð>r^   )r[   rŽ   rÂ   rÅ   )rV   r   )
rÅ   rœ   rÂ   rM   r[   r%  rŽ   ra   r  r  r  )r  ztuple[int, int, int]r  r  )r  rn  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,  rp  re  rÖ   r-  ry  rx  r°  r  r  rÌ  rú  rf  rÇ   rÒ   rÏ   rÑ   r”  r£  r§  r«  r   rC  rD  r¶  rE  r;  r  r}  r.  rÊ   r^   r\   rn  rn  ð
  s   ‡ ñ
ð ÓØ€K�ÓØ&Ó&Ø
ƒIØÓØ€HˆdÓð  'Øðàðð ðð ð	ð
 ðð 
õð óVó ðVð ó
ó ð
ð ñAó ðAô	 ô2ô
ð ñó ðð ñ&ó ð&ð ñ#ó ð#ð ñ$ó ð$ð ó&ó ð&ð ó'ó ð'ð ñ#ó ð#ô(ô(ð ñó ðð óó ðð ñ5ó ð5ôö:ô	ð ØØ Øð	
ð ð		
ð
 ð	
ð 
õ	
ô
ð HLð?Ø!+ð?Ø:Dð?à	÷?ð ?r^   rn  c                  ó†  • \ rS rSr% Sr\S\S0r\R                  5        V VVs0 s H  u  pX!_M	     snnn r	/ r
S\S'   SS jrS rS	 rSS
 jr\SS j5       rSS jrSS jrSS jrSSS jjr S       SS jjrSS jrS S jr S       S!S jjr S       S"S jjrS#S jr S$       S%S jjrSrgs  snnn f )&ÚGenericFixedi�  za generified fixed versionÚdatetimer  r  Ú
attributesc                ó:   • U R                   R                  US5      $ )NÚ )Ú_index_type_mapræ   )rÔ   rø  s     r\   Ú_class_to_aliasÚGenericFixed._class_to_alias¥  s   € Ø×#Ñ#×'Ñ'¨¨RÓ0Ð0r^   c                óp   • [        U[        5      (       a  U$ U R                  R                  U[        5      $ rX   )r`   rô   Ú_reverse_index_mapræ   r/   )rÔ   Úaliass     r\   Ú_alias_to_classÚGenericFixed._alias_to_class¨  s-   € Ü�eœT×"Ñ"àˆLØ×&Ñ&×*Ñ*¨5´%Ó8Ð8r^   c                ó  • U R                  [        USS5      5      n0 nU[        :X  a  S	S jnUnOU[        :X  a  S	S jnUnOUnSUS'   SU;   a  US   US'   U[        L a  [
        nSU;   a  US   US'   U[        L d   eXS4$ )
NÚindex_classrÊ  c                óÊ   • [         R                  " U R                  U R                  US9n[        R                  " US S9nUb   UR                  S5      R                  U5      nU$ )N)rz  r@  rb   r  )r9   Ú_simple_newr˜  rz  r.   r‡  rˆ  )r˜  r@  rA  ÚdtaÚresults        r\   rv   Ú*GenericFixed._get_index_factory.<locals>.f¶  sZ   € ä#×/Ò/Ø—M‘M¨¯©¸Dñ�ô '×2Ò2°3¸TÑB�Ø‘>Ø#×/Ñ/°Ó6×AÑAÀ"ÓE�FØ�r^   c                ój   • [        U5      n[        R                  " XS9n[        R                  " US S9$ )NrA  rb   )r+   r:   rÖ  r1   )r˜  r@  rA  rz  Úparrs        r\   rv   rÙ  Ã  s/   € Ü# DÓ)�Ü"×.Ò.¨vÑC�Ü"×.Ò.¨t¸$Ñ?Ð?r^   FrÌ  r@  rA  r  )rÑ  r´  r.   r1   r/   r5   )rÔ   r”  rÔ  r¹   rv   rŠ  s         r\   Ú_get_index_factoryÚ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                ó<   • Ub  [        S5      eUb  [        S5      eg)z5
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_readÚGenericFixed.validate_readÙ  s=   € ð ÑÜðTóð ð ÑÜðYóð ð r^   c                ó   • g)NTrÊ   rÚ   s    r\   r   ÚGenericFixed.is_existsè  s   € àr^   c                óp   • U R                   U R                  l         U R                  U R                  l        gr¢  )r[   r”  rŽ   rÚ   s    r\   r£  ÚGenericFixed.set_attrsì  s"   € à"Ÿm™mˆ�
‰
ÔØ ŸK™Kˆ�
‰
Õr^   c           
     óî   • [        [        U R                  SS5      5      U l        [        U R                  SS5      U l        U R
                   H$  n[        X[        U R                  US5      5        M&     g)úretrieve our attributesr[   NrŽ   r   )r]   r´  r”  r[   rŽ   rÈ  rÅ  )rÔ   r  s     r\   r§  ÚGenericFixed.get_attrsñ  sT   € ä(¬°·±¸ZÈÓ)NÓOˆŒÜ˜dŸj™j¨(°HÓ=ˆŒØ—”ˆAÜ�DœW T§Z¡Z°°DÓ9Ö:ò !r^   c                ó$   • U R                  5         g rX   )r£  r¿  s      r\   r  ÚGenericFixed.writeø  s   € Ø�‰Õr^   Nc                óŒ  • SSK n[        U R                  U5      nUR                  n[        USS5      n[	        XTR
                  5      (       a!  US   X# n[        USS5      n	U	b	  [        X‰S9nOÂ[        USS5      n	[        USS5      n
U
b  [        R                  " X©S9nOXRU nU	(       a8  U	R                  S5      (       a"  U	S:X  a  S	n	[        US
S5      n[        X‹U	5      nOMU	(       aF  U	R                  S5      (       a0  U	S:X  a  [        R                  " USS9nO[        R                  " X‰S9nU(       a  UR                  $ U$ )z2read an array for the specified node (off of groupr   NÚ
transposedFÚ
value_typerA  rú  r=  r>  rA  r?  r@  )r€   r´  rÂ   rµ  r`   ÚVLArrayÚpd_arrayr€  rü  rÀ  rH  rI  ÚT)rÔ   r’   r¤   r¥   r€   rú   r”  rë  Úretrz  rú  rA  s               r\   Ú
read_arrayÚGenericFixed.read_arrayû  s(  € ãä�t—z‘z 3Ó'ˆØ—‘ˆä˜U L°%Ó8ˆ
ä�dŸN™N×+Ñ+Ø�q‘'˜%Ð%ˆCÜ˜E <°Ó6ˆEØÑ Ü˜sÑ0�øä˜E <°Ó6ˆEÜ˜E 7¨DÓ1ˆEàÑ ä—h’h˜uÑ2‘à Ð&�æ˜×)Ñ)¨,×7Ñ7à˜LÓ(Ø,�EÜ˜U D¨$Ó/�Ü˜c uÓ-‘æ˜5×+Ñ+¨M×:Ñ:Ø˜MÓ)ô Ÿ*š* S°Ñ9‘CäŸ*š* SÑ6�CæØ—5‘5ˆLàˆJr^   c                óØ   • [        U R                  U S35      nUS:X  a  U R                  XUS9$ US:X  a(  [        U R                  U5      nU R	                  XRUS9nU$ [        SU 35      e)NÚ_varietyÚmulti©r¤   r¥   Úregularzunrecognized index variety: )r´  r”  Úread_multi_indexrÂ   Úread_index_noder±   )rÔ   r’   r¤   r¥   Úvarietyrú   r‰   s          r\   Ú
read_indexÚGenericFixed.read_index'  s~   € ô ˜$Ÿ*™*¨¨¨XÐ&6Ó7ˆà�gÓØ×(Ñ(¨ÀÐ(ÐEÐEØ˜	Ó!Ü˜4Ÿ:™: sÓ+ˆDØ×(Ñ(¨ÀÐ(ÐFˆEØˆLäÐ:¸7¸)ÐDÓEÐEr^   c                óX  • [        U[        5      (       a,  [        U R                  U S3S5        U R	                  X5        g [        U R                  U S3S5        [        SX R                  U R                  5      nU R                  XR                  5        [        U R                  U5      nUR                  UR                  l        UR                  UR                  l        [        U[        [         45      (       a)  U R#                  [%        U5      5      UR                  l        [        U[        [         [(        45      (       a  UR*                  UR                  l        [        U[        5      (       a3  UR,                  b%  [/        UR,                  5      UR                  l        g g g )Nrô  rõ  r÷  r‰   )r`   r0   rÅ  r”  Úwrite_multi_indexÚ_convert_indexr[   rŽ   Úwrite_arrayr˜  r´  rÂ   r«  rµ  rc   r.   r1   rÌ  rô   rÔ  r5   r@  rA  Ú_get_tz)rÔ   r’   r‰   rT  rú   s        r\   Úwrite_indexÚGenericFixed.write_index5  s*  € Ü�eœZ×(Ñ(Ü�D—J‘J 3 % xÐ 0°'Ô:Ø×"Ñ" 3Õ.ä�D—J‘J 3 % xÐ 0°)Ô<Ü& w°·}±}ÀdÇkÁkÓRˆIà×Ñ˜S×"2Ñ"2Ô3ä˜4Ÿ:™: sÓ+ˆDØ!*§¡ˆD�M‰MÔØ!&§¡ˆD�M‰MÔä˜%¤-´Ð!=×>Ñ>Ø,0×,@Ñ,@ÄÀeÃÓ,M�—‘Ô)ä˜%¤-´¼nÐ!M×NÑNØ%*§Z¡Z�—‘Ô"ä˜%¤×/Ñ/°E·H±HÑ4HÜ#*¨5¯8©8Ó#4�—‘Õ ð 5IÐ/r^   c           	     óÒ  • [        U R                  U S3UR                  5        [        [	        UR
                  UR                  UR                  SS95       GH  u  nu  pEn[        UR                  [        5      (       a*  [        UR                  [        5      (       d  [        S5      eU SU 3n[        XtU R                  U R                  5      nU R!                  XxR"                  5        [%        U R&                  U5      n	UR(                  U	R*                  l        XiR*                  l        [        U	R*                  U SU 3U5        U SU 3n
U R!                  X¥5        GM     g )NÚ_nlevelsTrW  z=Saving a MultiIndex with an extension dtype is not supported.Ú_levelÚ_nameÚ_label)rÅ  r”  rî  Ú	enumeraterd  Úlevelsr  Únamesr`   rz  r*   r4   r­   rÿ  r[   rŽ   r   r˜  r´  rÂ   r«  rµ  rc   )rÔ   r’   r‰   ÚiÚlevÚlevel_codesrc   Ú	level_keyÚ
conv_levelrú   Ú	label_keys              r\   rþ  ÚGenericFixed.write_multi_indexL  s-  € Ü�—
‘
˜s˜e 8Ð,¨e¯m©mÔ<ä+4Ü�—‘˜eŸk™k¨5¯;©;¸tÑD÷,
Ñ'ˆAÑ'� $ô ˜#Ÿ)™)¤^×4Ñ4¼ZØ—	‘	œ;÷>ñ >ô *ØSóð ð ˜%˜v a SÐ)ˆIÜ'¨	¸¿¹ÀtÇ{Á{ÓSˆJØ×Ñ˜Y×(9Ñ(9Ô:Ü˜4Ÿ:™: yÓ1ˆDØ!+§¡ˆD�M‰MÔØ!%�M‰MÔô �D—M‘M c U¨%°¨vÐ#6¸Ô=ð ˜%˜v a SÐ)ˆIØ×Ñ˜Y×4ò-,
r^   c                ó|  • [        U R                  U S35      n/ n/ n/ n[        U5       H„  nU SU 3n	[        U R                  U	5      n
U R	                  X¢US9nUR                  U5        UR                  UR                  5        U SU 3nU R                  XÂUS9nUR                  U5        M†     [        XVUSS9$ )Nr  r  rö  r  T)r
  r  r  r\  )	r´  r”  r�  rÂ   rù  r�   rc   rñ  r0   )rÔ   r’   r¤   r¥   rî  r
  r  r  r  r  rú   r  r  r  s                 r\   rø  ÚGenericFixed.read_multi_indexg  sÍ   € ô ˜$Ÿ*™*¨¨¨XÐ&6Ó7ˆàˆØˆØ "ˆÜ�w–ˆAØ˜%˜v a SÐ)ˆIÜ˜4Ÿ:™: yÓ1ˆDØ×&Ñ& t¸tÐ&ÐDˆCØ�M‰M˜#ÔØ�L‰L˜Ÿ™Ô"à˜%˜v a SÐ)ˆIØŸ/™/¨)Àt˜/ÐLˆKØ�L‰L˜Ö%ñ  ô Ø¨eÀdñ
ð 	
r^   c           
     óÎ  • XU nSUR                   ;   ak  [        R                  " UR                   R                  5      S:X  a=  [        R                  " UR                   R                  UR                   R
                  S9nUR                   R                  nS nSUR                   ;   a  [        UR                   R                  5      nUR                   nU R                  U5      u  p‰US;   a-  U" [        XEU R                  U R                  S94S[        0U	D6n
O' U" [        XEU R                  U R                  S940 U	D6n
Xjl        U
$ ! [         a’  nU R                  S:X  a|  [        5       (       am  [!        U5      R#                  S	5      (       aN  [$        (       aC  U" [        XEU R                  U R                  S94S['        S
[        R(                  S90U	D6n
 S nANže S nAff = f)Nrú  r   rA  rc   )r   rÞ  rå  rz  rx  ry  r{  r|  )rµ  r€  Úprodrú  rü  rì  r«  rd   rc   rÜ  Ú_unconvert_indexr[   rŽ   rÞ  r…  r   ra   r  r   r4   r†  )rÔ   rú   r¤   r¥   rË  r«  rc   r”  rŠ  r¹   r‰   r~  s               r\   rù  ÚGenericFixed.read_index_node~  sª  € ð ˜$Ðˆð �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ðÙÜ$Ø¨T¯]©]À4Ç;Á;ññð ñ	�ð. Œ
àˆøô' &ó à—K‘K ?Ó2Ü*×,Ñ,Ü˜C›×)Ñ)Ð*B×CÑCß#šá#Ü(Ø °·±ÀtÇ{Á{ññô *°(ÄRÇVÁVÑLð	ð
 !ñ•Eð ûðús   Ä&E Å
G$ÅBGÇGÇG$c                ó@  • [         R                  " SUR                  -  5      nU R                  R	                  U R
                  X5        [        U R
                  U5      n[        UR                  5      UR                  l
        UR                  UR                  l        g)zwrite a 0-len array)rg   N)r€  rü  r‘  rÇ   Úcreate_arrayrÂ   r´  ra   rz  rµ  rì  rú  )rÔ   r’   r“   Úarrrú   s        r\   Úwrite_array_emptyÚGenericFixed.write_array_empty´  sh   € ô �hŠh�t˜eŸj™jÑ(Ó)ˆØ�‰×!Ñ! $§*¡*¨cÔ7Ü�t—z‘z 3Ó'ˆÜ#& u§{¡{Ó#3ˆ�‰Ô Ø#Ÿk™kˆ�‰Õr^   c                ój
  • [        USS9nXR                  ;   a&  U R                  R                  U R                  U5        UR                  S:H  nSn[        UR                  [        5      (       a  [        S5      eU(       d  [        US5      (       a  UR                  nSn[        U[        5      (       a¡  U R                  R                  U R                  U[        5       R                  5       U R                  S9nUR!                  UR#                  5       5        [%        U R                  U5      n['        UR                  5      UR(                  l        GO¦S n	U R                  bE  [-        [.        5         [        5       R0                  R3                  UR                  5      n	S S S 5        U	bZ  U(       d@  U R                  R5                  U R                  XUR6                  U R                  S9n
XJS S & GOU R9                  X5        GOõUR                  R:                  [<        R>                  :X  a±  [@        RB                  " USS9nU(       a  ODUS	:X  a  O=[E        S
5      (       a-  [F        X±U4-  n[H        RJ                  " U[L        [O        5       S9  U R                  R                  U R                  U[        5       R                  5       5      nUR!                  U5        GO[@        RP                  " UR                  S5      (       ao  U R                  RS                  U R                  XRU                  S5      5        ['        UR                  5      [%        U R                  U5      R(                  l        GO‡[        UR                  [V        5      (       a•  U R                  RS                  U R                  UURX                  5        [%        U R                  U5      n[[        UR\                  5      UR(                  l.        SUR                  R^                   S3UR(                  l        OÓ[@        RP                  " UR                  S5      (       an  U R                  RS                  U R                  XRU                  S5      5        ['        UR                  5      [%        U R                  U5      R(                  l        O?U(       a  U R9                  X5        O&U R                  RS                  U R                  X5        U[%        U R                  U5      R(                  l0        g ! , (       d  f       GN‡= f)NT)Úextract_numpyr   Fz^Cannot store a category dtype in an HDF5 dataset that uses format="fixed". Use format="table".rï  )rË   ©Úskipnar¦  Úperformance_warningsr¿  rq  rr  údatetime64[rX  r  )1r@   rÂ   rÇ   r  r  r`   rz  r(   r­   rn  rï  r<   Úcreate_vlarrayr…   Ú
ObjectAtomrÒ   r�   Úto_numpyr´  ra   rµ  rì  r   rª   ÚAtomÚ
from_dtypeÚcreate_carrayrú  r  rô   r€  Úobject_r   Úinfer_dtyper   rs   rÃ  rÄ  r   r!   r„  r  Úviewr)   Úasi8r  rA  Úunitrë  )rÔ   r’   rý  r   r“   Úempty_arrayrë  Úvlarrrú   r  ÚcaÚinferred_typerÈ  s                r\   r   ÚGenericFixed.write_array½  s®  € ô ˜c°Ñ6ˆà—*‘*ÓØ�L‰L×$Ñ$ T§Z¡Z°Ô5ð —j‘j A‘oˆØˆ
ä�e—k‘kÔ#3×4Ñ4Ü%ð/óð ö Ü�u˜c×"Ñ"àŸ™�Ø!�
ä�eœ_×-Ñ-ð —L‘L×/Ñ/Ø—
‘
˜C¤£×!5Ñ!5Ó!7ÀÇÁð 0ð ˆEð �L‰L˜Ÿ™Ó)Ô*Ü˜4Ÿ:™: sÓ+ˆDÜ'*¨5¯;©;Ó'7ˆD�M‰MÖ$ð ˆDØ�}‰}Ñ(ÜœjÕ)ä"›9Ÿ>™>×4Ñ4°U·[±[ÓA�D÷ *ð Ñö
 #ØŸ™×3Ñ3ØŸ
™
 C¨u¯{©{ÀDÇMÁMð 4ð �Bð "‘q’Eð ×*Ñ*¨3Ö6à—‘×!Ñ!¤R§Z¡ZÓ/ô !$§¢°¸eÑ D�ÞØØ" hÓ.ØÜÐ 6×7Ñ7Ü(¨MÀÐ+FÑF�BÜ—M’M "Ô&8ÔEUÓEWÒXàŸ™×3Ñ3Ø—J‘J ¤W£Y×%9Ñ%9Ó%;ó�ð —‘˜UÖ#ä—’ §¡¨c×2Ñ2Ø—‘×)Ñ)¨$¯*©*°c¿:¹:ÀdÓ;KÔLÜ?BÀ5Ç;Á;Ó?O”˜Ÿ
™
 CÓ(×1Ñ1Ö<Ü˜EŸK™K¬×9Ñ9ð
 —‘×)Ñ)Ø—J‘JØØ—J‘Jôô ˜tŸz™z¨3Ó/�ä#*¨5¯8©8Ó#4�—‘Ô Ø-8¸¿¹×9IÑ9IÐ8JÈ!Ð+L�—‘Õ(Ü—’ §¡¨c×2Ñ2Ø—‘×)Ñ)¨$¯*©*°c¿:¹:ÀdÓ;KÔLÜ?BÀ5Ç;Á;Ó?O”˜Ÿ
™
 CÓ(×1Ñ1Õ<ÞØ×&Ñ& sÕ2à—‘×)Ñ)¨$¯*©*°cÔAà7AŒ�—
‘
˜CÓ ×)Ñ)Õ4÷{ *Ö)ús   Å5.T#Ô#
T2rå  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+  r.   r1   rË  r   rÏ  rÈ  r,  rÌ  rÑ  rÜ  rß  r-  r   r£  r§  r  rñ  rû  r  rþ  rø  rù  r  r   r.  )rˆ  rj  rŸ  s   000r\   rÆ  rÆ  �  s\  ‡ Ù$à$ j°+¸xÐH€OØ+:×+@Ñ+@Ô+BÕCÒ+B¡4 1˜!š$Ñ+BÓ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ð aBùôy Ds   ¤B<rÆ  c                  óv   ^ • \ rS rSr% SrS/rS\S'   \S	S j5       r    S
     SS jjr	SU 4S jjr
SrU =r$ )rì  i!  rá  rc   rF   c                óp   •  [        U R                  R                  5      4$ ! [        [        4 a     g f = frX   )rl   rÂ   r˜  r±   r�   rÚ   s    r\   rú  ÚSeriesFixed.shape'  s6   € ð	Ü˜Ÿ
™
×)Ñ)Ó*Ð,Ð,øÜœ>Ð*ó 	Ùð	ús   ‚" ¢5´5c                ó²  • U R                  X!5        U R                  SX4S9nU R                  SX4S9n [        XeU R                  SS9nU$ ! [
         a‚  nU R                  S:X  al  [        5       (       a]  [        U5      R                  S5      (       a>  [        (       a3  [        UUU R                  S[        S[        R                  S	9S
9n S nAU$ e S nAff = f)Nr‰   rö  r˜  F)r‰   rc   rÌ  rx  ry  r{  r|  )r‰   rc   rÌ  rz  )rß  rû  rñ  r3   rc   r…  rŽ   r   ra   r  r   r4   r€  r†  )	rÔ   rm   r¦   r¤   r¥   r‰   r˜  rØ  r~  s	            r\   r;  ÚSeriesFixed.read.  sÊ   € ð 	×Ñ˜7Ô*Ø—‘ ¨u�Ð@ˆØ—‘ °�ÐBˆð	Ü˜F°d·i±iÀeÑLˆFð" ˆøô! "ó 	à—‘˜Ó.Ü&×(Ñ(Ü˜“H×%Ñ%Ð&>×?Ñ?ß’KäØØØŸ™ØÜ%¨hÄÇÁÑHñ”ð ˆð ûð	ús   ³A
 Á

CÁA6CÃCÃCc                óº   >• [         TU ]  " U40 UD6  U R                  SUR                  5        U R	                  SU5        UR
                  U R                  l        g )Nr‰   r˜  )rî  r  r  r‰   r   rc   r”  )rÔ   rý  r¹   rï  s      €r\   r  ÚSeriesFixed.writeL  sG   ø€ Ü‰Š�cÑ$˜VÒ$Ø×Ñ˜ #§)¡)Ô,Ø×Ñ˜ 3Ô'ØŸ(™(ˆ�
‰
�r^   rÊ   )r  ztuple[int] | NonerÃ  ©r¤   r  r¥   r  r  r3   r  )rõ   r(  r)  r*  ro  rÈ  r,  r-  rú  r;  r  r.  r[  r\  s   @r\   rì  rì  !  sa   ø‡ Ø€KØ�€Jà
ƒNàóó ðð ØØ Øðð ð	ð
 ðð 
õ÷<#õ #r^   rì  c                  ót   ^ • \ rS rSr% SS/rS\S'   \S	S j5       r    S
     SS jjrSU 4S jjr	Sr
U =r$ )ÚBlockManagerFixediS  r‘  Únblocksr  c                óx  •  U R                   nSn[        U R                  5       H6  n[        U R                  SU S35      n[        USS 5      nUc  M/  X%S   -  nM8     U R                  R
                  n[        USS 5      nUb  [        USUS-
   5      nO/ nUR                  U5        U$ ! [         a     g f = f)Nr   ÚblockÚ_itemsrú  rg   )	r‘  r�  r>  r´  rÂ   Úblock0_valuesrj   r�   r�   )rÔ   r‘  r   r  rú   rú  s         r\   rú  ÚBlockManagerFixed.shapeX  sÅ   € ð	Ø—9‘9ˆDð ˆEÜ˜4Ÿ<™<Ö(�Ü˜tŸz™z¨U°1°#°VÐ+<Ó=�Ü  g¨tÓ4�ØÓ$Ø 1™XÑ%’Eñ	 )ð —:‘:×+Ñ+ˆDÜ˜D '¨4Ó0ˆEØÑ Ü˜U 1¨¨q©Ð2Ó3‘à�à�L‰L˜ÔàˆLøÜó 	Ùð	ús   ‚AB, ÁAB, Â,
B9Â8B9c                ób  • U R                  X!5        U R                  5       R                  S5      n/ n[        U R                  5       H3  nXu:X  a  X44OSu  p‰U R                  SU 3X‰S9n
UR                  U
5        M5     US   n/ n[        U R                  5       HÌ  nU R                  SU S35      nU R                  SU S3WW	S9nX»R                  U5         n[        UR                  X&S   S	S
9n[        5       (       aT  [        U[        R                  5      (       a5  [!        USS9(       a&  UR#                  [%        [        R&                  S95      nUR                  U5        MÎ     [)        U5      S:”  a'  [+        USS9R-                  5       nUR/                  US9$ [        US   US   S9$ )Nr   r  r[  rö  r@  rA  rQ  rg   F©r¦   r‰   rÌ  Tr   )r~  rŒ  rþ  ©r¦   r‰   )rß  rr  Ú_get_block_manager_axisr�  r‘  rû  r�   r>  rñ  r–  r-   rï  r   r`   r€  r�  r   rO  r4   r†  rl   r6   rÌ  r›  )rÔ   rm   r¦   r¤   r¥   Úselect_axisr�  r  r<  r=  Úaxr   ÚdfsÚ	blk_itemsr˜  ÚdfÚouts                    r\   r;  ÚBlockManagerFixed.reads  s�  € ð 	×Ñ˜7Ô*Ø—m‘m“o×=Ñ=¸aÓ@ˆàˆÜ�t—y‘yÖ!ˆAØ-.Ó-=˜U™MÀ<‰MˆFØ—‘ 4¨ s °6�ÐFˆBØ�K‰K˜ŽOñ "ð
 �Q‘ˆØˆä�t—|‘|Ö$ˆAØŸ™¨%°¨s°&Ð(9Ó:ˆIØ—_‘_ u¨Q¨C¨wÐ%7¸vÈE�_ÐRˆFà×-Ñ-¨iÓ8Ñ9ˆGÜ˜6Ÿ8™8¨WÀ¹GÈ%ÑPˆBä"×$Ñ$Ü˜v¤r§z¡z×2Ñ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U ]  " U40 UD6  UR                  nUR                  5       (       d  UR	                  5       nUR
                  U R                  l        [        UR                  5       H<  u  pEUS:X  a  UR                  (       d  [        S5      eU R                  SU 3U5        M>     [        UR                  5      U R                  l        [        UR                  5       H_  u  pFUR                  R!                  UR"                  5      nU R%                  SU S3UR&                  US9  U R                  SU S3U5        Ma     g )Nr   z/Columns index has to be unique for fixed formatr[  r@  rQ  )r   rA  )rî  r  Ú_mgrÚis_consolidatedÚconsolidater‘  r”  r	  r�  Ú	is_uniquerª   r  rl   Úblocksr>  r   r—  Úmgr_locsr   r˜  )	rÔ   rý  r¹   rË  r  rI  ÚblkrK  rï  s	           €r\   r  ÚBlockManagerFixed.write›  s
  ø€ Ü‰Š�cÑ$˜VÒ$à�x‰xˆØ×#Ñ#×%Ñ%Ø×#Ñ#Ó%ˆDàŸ)™)ˆ�
‰
ŒÜ˜tŸy™yÖ)‰EˆAØ�A‹v˜rŸ|Ÿ|Ü Ð!RÓSÐSØ×Ñ˜t A 3˜Z¨Ö,ñ *ô ! §¡Ó-ˆ�
‰
ÔÜ §¡Ö,‰FˆAàŸ
™
Ÿ™¨¯©Ó5ˆIØ×Ñ˜u Q C wÐ/°·±À9ÐÑMØ×Ñ˜u Q C vÐ.°	Ö:ò	 -r^   rÊ   )r  zlist[int] | NonerÃ  ©r¤   r  r¥   r  r  r-   r  )rõ   r(  r)  r*  rÈ  r,  r-  rú  r;  r  r.  r[  r\  s   @r\   r=  r=  S  s`   ø‡ Ø˜)Ð$€JàƒLàóó ðð8 ØØ Øð&9ð ð	&9ð
 ð&9ð 
õ&9÷P;õ ;r^   r=  c                  ó   • \ rS rSrSr\rSrg)rí  i±  râ  rÊ   N)rõ   r(  r)  r*  ro  r-   rr  r.  rÊ   r^   r\   rí  rí  ±  s   † Ø€KØƒHr^   rí  c                  ó  ^ • \ rS rSr% SrSrSrS\S'   S\S'   SrS	\S
'   Sr	S\S'           S5                   S6U 4S jjjr
\S7S j5       rS7S jrS8S jrS9S jr\S:S j5       r    S;S jr\S<S j5       r\S:S j5       r\S 5       r\S 5       r\S 5       r\S 5       r\S=S j5       r\S<S j5       r\S:S j5       r\S>S j5       rS?S jrS@S  jrSAS! jrSBS" jrSCS# jr SDS$ jr!S9S% jr"S9S& jr#SES9S' jjr$S9S( jr%\&S) 5       r' SF   SGS* jjr( SH     SIS+ jjr)\*SJS, j5       r+SKS- jr,    SL   SMS. jjr-\.    SNS/ j5       r/SESOS0 jjr0        SPS1 jr1 SF   SQS2 jjr2   SF     SRS3 jjr3S4r4U =r5$ )Sr  i¶  a  
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   rp  rÞ  rg   zint | list[Hashable]r
  Trj   rG  c                óÎ   >• [         TU ]  XX4S9  U=(       d    / U l        U=(       d    / U l        U=(       d    / U l        U=(       d    / U l        U	=(       d    0 U l        X l        g )Nrå  )rî  rÖ   Ú
index_axesrg  Úvalues_axesr�   rÕ  r‹   )rÔ   rÅ   rÂ   r[   rŽ   r]  rg  r^  r�   rÕ  r‹   rï  s              €r\   rÖ   ÚTable.__init__Ö  sZ   ø€ ô 	‰Ñ˜°ÐÑIØ$×*¨ˆŒØ,×2°ˆÔØ&×,¨"ˆÔØ(×.¨BˆÔØ—J˜BˆŒ	Ø�r^   c                ó>   • U R                   R                  S5      S   $ )NÚ_r   )rÞ  r  rÚ   s    r\   Útable_type_shortÚTable.table_type_shortë  s   € à�‰×$Ñ$ SÓ)¨!Ñ,Ð,r^   c                ó4  • U R                  5         [        U R                  5      (       a  SR                  U R                  5      OSnSU S3nSnU R                  (       a;  SR                  U R
                   Vs/ s H  n[        U5      PM     sn5      nSU S3nSR                  U R                   Vs/ s H  ofR                  PM     sn5      nU R                  S U SU R                   S	U R                   S
U R                   SU SU S3$ s  snf s  snf )r†  rV  rÊ  z,dc->[rX  r  r‡  rˆ  z (typ->z,nrows->z,ncols->z,indexers->[r‰  )rE  rl   r�   rY  ry  rx  ra   r]  rc   r°  rb  rC  Úncols)rÔ   Újdcr¤  Úverrk  Újverr£   Újindex_axess           r\   r  ÚTable.__repr__ï  s  € à�‰ÔÜ-0°×1BÑ1B×-CÑ-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   Á:DÂ5Dc                óP   • U R                    H  nXR                  :X  d  M  Us  $    g)zreturn the axis for cN)r�  rc   )rÔ   r¸  r£   s      r\   rè   ÚTable.__getitem__  s#   € à—”ˆAØ—F‘F�{Ø’ñ ð r^   c                ó  • Uc  gUR                   U R                   :w  a&  [        SUR                    SU R                    S35      eS H½  n[        XS5      n[        XS5      nX4:w  d  M"  [        U5       Hy  u  pVXE   nXg:w  d  M  US:X  aP  UR                  UR                  :w  a6  [        SUR                  S    S	UR                   S
UR                   S35      e[        SU SU SU S35      e   [        SU SU SU S35      e   g)z"validate against an existing tableNz'incompatible table_type with existing [r»  rX  )r]  rg  r^  r^  úCannot serialize the column [r   z%] because its data contents are not [z] but [ú] object dtypezinvalid combination of [z] on appending data [z] vs current table [)rÞ  r±   r´  r	  r«  rª   r˜  ry  )rÔ   rc  r¸  ÚsvÚovr  ÚsaxÚoaxs           r\   rD  ÚTable.validate  sM  € à‰=Øà×Ñ˜tŸ™Ó.ÜðØ×$Ñ$Ð% S¨¯©Ð(9¸ð<óð ó
 AˆAÜ˜ $Ó'ˆBÜ˜ 4Ó(ˆBØ�xô (¨žm‘F�Aà™%�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¨ð,óð ò/ Ar^   c                ó6   • [        U R                  [        5      $ )z@the levels attribute is 1 or a list in the case of a multi-index)r`   r
  rj   rÚ   s    r\   Úis_multi_indexÚTable.is_multi_index/  s   € ô ˜$Ÿ+™+¤tÓ,Ð,r^   c                óè   • [         R                  " UR                  R                  5      n UR	                  5       n[        U[        5      (       d   eX24$ ! [
         a  n[        S5      UeSnAff = f)zM
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ý  r
  Ú	reset_objr~  s        r\   Úvalidate_multiindexÚTable.validate_multiindex4  sp   € ô ×'Ò'¨¯	©	¯©Ó8ˆð	ØŸ™Ó)ˆIô
 ˜)¤Y×/Ñ/Ð/Ð/ØÐ Ð øô ó 	ÜØTóàðûð	ús   ¬A Á
A1Á A,Á,A1c                óš   • [         R                  " U R                   Vs/ s H  oR                  R                  S   PM     sn5      $ s  snf )z-based on our axes, compute the expected nrowsr   )r€  r  r]  r¡  rú  ©rÔ   r  s     r\   Únrows_expectedÚTable.nrows_expectedE  s4   € ô �wŠw°D·O²OÓD²O¨qŸ	™	Ÿ™¨Ô*±OÑDÓEÐEùÒDs   Ÿ"Ac                ó    • SU R                   ;   $ )zhas this table been createdru   rª  rÚ   s    r\   r   ÚTable.is_existsJ  s   € ð ˜$Ÿ*™*Ñ$Ð$r^   c                ó0   • [        U R                  SS 5      $ ©Nru   ©r´  rÂ   rÚ   s    r\   r«  ÚTable.storableO  s   € ä�t—z‘z 7¨DÓ1Ð1r^   c                ó   • U R                   $ )z,return the table group (this is my storable))r«  rÚ   s    r\   ru   ÚTable.tableS  s   € ð �}‰}Ðr^   c                ó.   • U R                   R                  $ rX   )ru   rz  rÚ   s    r\   rz  ÚTable.dtypeX  s   € à�z‰z×ÑÐr^   c                ó.   • U R                   R                  $ rX   r˜  rÚ   s    r\   r™  ÚTable.description\  r›  r^   c                óX   • [         R                  " U R                  U R                  5      $ rX   )rb  rc  r]  r^  rÚ   s    r\   r�  Ú
Table.axes`  s   € ä�Š˜tŸ™°×0@Ñ0@ÓAÐAr^   c                ó:   • [        S U R                   5       5      $ )z.the number of total columns in the values axesc              3  óL   #   • U  H  n[        UR                  5      v •  M     g 7frX   )rl   r˜  )rˆ  r£   s     r\   rŠ  ÚTable.ncols.<locals>.<genexpr>g  s   é € Ð;Ò*: Q”3�q—x‘x—=�=Ò*:ùs   ‚"$)Úsumr^  rÚ   s    r\   re  ÚTable.ncolsd  s   € ô Ñ;¨$×*:Ò*:Ó;Ó;Ð;r^   c                ó   • grä  rÊ   rÚ   s    r\   Úis_transposedÚTable.is_transposedi  ræ  r^   c                ó   • [        [        R                  " U R                   Vs/ s H  n[	        US   5      PM     snU R
                   Vs/ s H  n[	        UR                  5      PM     sn5      5      $ s  snf s  snf )z@return a tuple of my permutated axes, non_indexable at the frontr   )rk   rb  rc  rg  r  r]  r[  ©rÔ   r£   s     r\   Údata_orientationÚTable.data_orientationm  sc   € ô Ü�OŠOØ$(×$7Ò$7Ó8Ò$7˜q”�Q�q‘T–Ñ$7Ñ8Ø&*§o¢oÓ6¢o ”�Q—V‘V–¡oÑ6óó
ð 	
ùâ8ùÚ6s   ¤A6ÁA;c                óz  • SSS.nU R                    Vs/ s H  o"R                  U4PM     nnU R                   VVs/ s H  u  pEX   S4PM     nnnU R                   Vs/ s H5  owR                  [        U R                  5      ;   d  M'  UR                  U4PM7     nn[        X6-   U-   5      $ s  snf s  snnf s  snf )z<return a dict of the kinds allowable columns for this objectr‰   r¦   ©r   rg   N)r]  rE  rg  r^  rc   r�  r�   r�  )	rÔ   Ú
axis_namesr£   Úd1r[  r˜  Úd2rŸ  Úd3s	            r\   Ú
queryablesÚTable.queryablesw  sµ   € ð ! YÑ/ˆ
ð %)§O¢OÓ4¢O˜q�w‰w˜‹l¡OˆÐ4Ø;?×;NÒ;NÔOÒ;N©<¨4ˆzÑ Ó&Ñ;NˆÑOà"&×"2Ò"2ó
Ú"2˜Q·f±fÄÀD×DUÑDUÓ@VÑ6V‹LˆQ�W‰W�a‹LÑ"2ð 	ð 
ô �B‘G˜b‘LÓ!Ð!ùò 5ùÛOùò
s   ”B-¼B2Á&B8Â	B8c                óp   • U R                    Vs/ s H  oR                  UR                  4PM     sn$ s  snf )zreturn a list of my index cols)r]  r[  rE  r  s     r\   Ú
index_colsÚTable.index_cols…  s+   € ð ,0¯?ª?Ó;ª? a—‘˜Ÿ™Ó!©?Ñ;Ð;ùÒ;s   �!3c                óX   • U R                    Vs/ s H  oR                  PM     sn$ s  snf )zreturn a list of my values cols)r^  rE  r  s     r\   Úvalues_colsÚTable.values_colsŠ  s$   € à!%×!1Ò!1Ó2Ò!1˜A—”Ñ!1Ñ2Ð2ùÒ2s   �'c                ó>   • U R                   R                  nU SU S3$ )z)return the metadata pathname for this keyz/meta/z/metar•  r7  s      r\   Ú_get_metadata_pathÚTable._get_metadata_pathŽ  s$   € à—
‘
×&Ñ&ˆØ�˜˜s˜e 5Ð)Ð)r^   c           	     óª   • U R                   R                  U R                  U5      [        USS9SU R                  U R
                  U R                  S9  g)zs
Write out a metadata array to the key as a fixed-format Series.

Parameters
----------
key : str
values : ndarray
FrE  ru   )rˆ   r[   rŽ   r‹   N)rÅ   r˜   r«  r3   r[   rŽ   r‹   )rÔ   r’   r˜  s      r\   r²  ÚTable.write_metadata“  sI   € ð 	�‰�‰Ø×#Ñ# CÓ(Ü�6 Ñ&ØØ—]‘]Ø—;‘;Ø—L‘Lð 	ò 	
r^   c                óž   • [        [        U R                  SS5      US5      b*  U R                  R                  U R	                  U5      5      $ g)z'return the meta data array for this keyr¾   N)r´  rÂ   rÅ   r¶   r«  rç   s     r\   r×  ÚTable.read_metadata¥  sA   € ä”7˜4Ÿ:™: v¨tÓ4°c¸4Ó@ÑLØ—;‘;×%Ñ% d×&=Ñ&=¸cÓ&BÓCÐCØr^   c                óB  • [        U R                  5      U R                  l        U R                  5       U R                  l        U R	                  5       U R                  l        U R
                  U R                  l        U R                  U R                  l        U R                  U R                  l        U R                  U R                  l        U R                  U R                  l	        U R                  U R                  l
        U R                  U R                  l        g)zset our table type & indexablesN)ra   rÞ  r”  r¥  r¨  rg  r�   r‹   r[   rŽ   r
  rÕ  rÚ   s    r\   r£  ÚTable.set_attrs«  s²   € ä # D§O¡OÓ 4ˆ�
‰
ÔØ $§¡Ó 1ˆ�
‰
ÔØ!%×!1Ñ!1Ó!3ˆ�
‰
ÔØ$(×$7Ñ$7ˆ�
‰
Ô!Ø"&×"3Ñ"3ˆ�
‰
ÔØ!Ÿ\™\ˆ�
‰
ÔØ"Ÿm™mˆ�
‰
ÔØ ŸK™Kˆ�
‰
ÔØ ŸK™Kˆ�
‰
ÔØŸ)™)ˆ�
‰
�r^   c                óÊ  • [        U R                  SS5      =(       d    / U l        [        U R                  SS5      =(       d    / U l        [        U R                  SS5      =(       d    0 U l        [        U R                  SS5      U l        [        [        U R                  SS5      5      U l        [        U R                  SS5      U l        [        U R                  S	S5      =(       d    / U l	        U R                   Vs/ s H  oR                  (       d  M  UPM     snU l        U R                   Vs/ s H  oR                  (       a  M  UPM     snU l        gs  snf s  snf )
ræ  rg  Nr�   rÕ  r‹   r[   rŽ   r   r
  )r´  r”  rg  r�   rÕ  r‹   r]   r[   rŽ   r
  Ú
indexablesr>  r]  r^  r™  s     r\   r§  Ú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¢o ×9JÕ9JŸ1¡oÑKˆŒØ'+§¢ÓP¢ !×>OÕ>OŸA¡ÑPˆÕùò LùÚPs   Ä EÄEÄ4E ÅE c           	     óö   • Ubq  U R                   (       a_  [        SR                  U R                   Vs/ s H  n[	        U5      PM     sn5      -  n[
        R                  " U[        [        5       S9  gggs  snf )r´  Nr  r¿  )	ry  rq   rY  rx  ra   rÃ  rÄ  r   r!   )rÔ   rm   rk  rÈ  s       r\   r¶  ÚTable.validate_versionÄ  s`   € àÑØ×"×"Ü(¨3¯8©8ÀTÇ\Â\Ó4RÂ\À´S¸¶VÁ\Ñ4RÓ+SÑS�Ü—’ØÜ*Ü/Ó1óð #ð ùâ4Rs   ³A6
c                ó¢   • Uc  g[        U[        5      (       d  gU R                  5       nU H  nUS:X  a  M  X2;  d  M  [        SU S35      e   g)zp
validate the min_itemsize doesn't contain items that are not in the
axes this needs data_columns to be defined
Nr˜  zmin_itemsize has the key [z%] which is not an axis or data_column)r`   r�  r¢  rª   )rÔ   rŠ   Úqrj  s       r\   Úvalidate_min_itemsizeÚTable.validate_min_itemsizeÏ  s`   € ð
 ÑØÜ˜,¬×-Ñ-Øà�O‰OÓˆÛˆAà�H‹}ÙØ�zÜ Ø0°°ð 4"ð "óð ò r^   c                óf  ^ ^^^^• / nT R                   mT R                  R                  m[        T R                  R                  5       Hi  u  nu  p4[        TU5      nT R                  U5      nUb  SOSnU S3n[        TUS5      n	[        UUUU	UT R                  UUS9n
UR                  U
5        Mk     [        T R                  5      m[        U5      mSUUUU U4S jjnUR                  [        T R                  R                  5       VVs/ s H  u  p,U" X,5      PM     snn5        U$ s  snnf )z/create/cache the indexables if they don't existNrÓ  rN  )rc   r[  rF  r«  rD  ru   r¾   rG  c                ón  >• [        U[        5      (       d   e[        nUT;   a  [        n[	        TU5      n[        UTR                  5      n[	        TU S3S 5      n[	        TU S3S 5      n[        U5      nTR                  U5      n[	        TU S3S 5      n	U" UUUUTU -   UTR                  U	UUS9
n
U
$ )NrN  rò  rö  )
rc   rE  r˜  r«  rF  rD  ru   r¾   rG  rz  )
r`   ra   rì  r^  r´  Ú_maybe_adjust_namerx  r  r×  ru   )r  r¸  Úklassr  Úadj_namer˜  rz  r«  Úmdr¾   rý  Úbase_posr¤  ÚdescrÔ   Útable_attrss              €€€€€r\   rv   Ú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^   )r¸  ra   r  rì  )r™  ru   r”  r	  r¥  r´  r×  r=  r�   r�  r�   rl   r“  r¨  )rÔ   Ú_indexablesr  r[  rc   r  rÁ  r¾   rO  r«  Ú	index_colrv   r¸  rÂ  r¤  rÃ  rÄ  s   `            @@@@r\   r´  ÚTable.indexablesä  s%  ü€ ð ˆà×ÑˆØ—j‘j×&Ñ&ˆô
  )¨¯©×)>Ñ)>Ö?‰OˆA‰|�Ü˜4 Ó&ˆDØ×#Ñ# DÓ)ˆBØ!#¡‘:°TˆDà˜& ˜ˆIÜ˜;¨	°4Ó8ˆDä ØØØØØØ—j‘jØØñ	ˆIð ×Ñ˜yÖ)ñ%  @ô* �×"Ñ"Ó#ˆÜ�{Ó#ˆ÷!	ó !	ðJ 	×Ñ´	¸$¿*¹*×:PÑ:PÔ0QÔRÒ0Q©¨™A˜ažGÑ0QÒRÔSàÐùó Ss   ÄD-
c           
     óX  • U R                  5       (       d  gUSL a  gUb  USL a8  U R                   Vs/ s H!  oDR                  (       d  M  UR                  PM#     nn[	        U[
        [        45      (       d  U/n0 nUb  X%S'   Ub  X5S'   U R                  nU GH  n[        UR                  US5      nUbÁ  UR                  (       a^  UR                  n	U	R                  n
U	R                  nUb  X³:w  a  UR                  5         OXµS'   Ub  X¢:w  a  UR                  5         OX¥S'   UR                  (       d?  UR                  R!                  S5      (       a  [#        S5      eUR$                  " S0 UD6  MÝ  Mß  XpR&                  S   S	   ;   d  Mö  [)        S
U SU SU S35      e   gs  snf )a²  
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Ê   )rE  r�  r?  rE  r`   rk   rj   ru   r´  r‰  rÇ  r‰   rª  r«  Úremove_indexrô   rÀ  r±   r¬  rg  r�   )rÔ   r¦   rª  r«  r£   Úkwru   r¸  rŸ  r‰   Úcur_optlevelÚcur_kinds               r\   r¬  ÚTable.create_index0  s¢  € ð< �‰× Ñ ØØ�eÒØð ‰?˜g¨šoØ(,¯	ª	ÓIª	 1×5HÕ5H“w�q—w”w©	ˆGÐIÜ˜'¤E¬4 =×1Ñ1Ø�iˆGàˆØÑØ%ˆz‰NØÑØˆv‰Jà—
‘
ˆÜˆAÜ˜Ÿ
™
 A tÓ,ˆAØ‰}à—<—<ØŸG™G�EØ#(§>¡>�LØ$Ÿz™z�HàÑ'¨HÓ,<ØŸ™Õ(à%-˜6™
àÑ+°Ó0HØŸ™Õ(à)5˜:™ð —|—|Ø—v‘v×(Ñ(¨×3Ñ3Ü'ðHóð ð —N’NÑ( RÔ(ñ $ð ×)Ñ)¨!Ñ,¨QÑ/Õ/ä$Ø˜a˜Sð !/Ø/0¨cð 21Ø12°Ð3SðUóð òA ùò Js   ³F'ÁF'c                ó  • [        XX#S9nUR                  5       n/ nU R                   H_  nUR                  U R                  5        UR                  UU R                  U R                  U R                  S9nUR                  U5        Ma     U$ )zÉ
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]]
rK  rG  )
Ú	Selectionr¶   r�  rÎ  rÕ  r�  r‹   r[   rŽ   r�   )	rÔ   rm   r¤   r¥   Ú	selectionr˜  r9  r£   Úress	            r\   Ú
_read_axesÚTable._read_axes†  s�   € ô" ˜d°uÑHˆ	Ø×!Ñ!Ó#ˆàˆà—”ˆAØ�J‰J�t—y‘yÔ!Ø—)‘)ØØŸ™ØŸ™Ø—{‘{ð	 ð ˆCð �N‰N˜3Öñ ð ˆr^   c                ó   • U$ )zreturn the data for this objrÊ   ©rø  rý  rë  s      r\   Ú
get_objectÚTable.get_object¨  s	   € ð ˆ
r^   c                ó  • [        U5      (       d  / $ US   u  pEU R                  R                  U0 5      nUR                  S5      S:X  a  U(       a  [        SU SU 35      eUSL a  [	        U5      nOUc  / n[        U[        5      (       aU  [        U5      n[	        U5      nUR                  UR                  5        Vs/ s H  nUS:w  d  M  X‡;  d  M  UPM     sn5        U V	s/ s H  o™U;   d  M
  U	PM     sn	$ s  snf s  sn	f )zL
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 Tr˜  )
rl   rÕ  ræ   rª   rj   r`   r�  r�  r“  r  )
rÔ   r�   rŠ   rg  r[  Úaxis_labelsrÕ  Úexisting_data_columnsrj  r¸  s
             r\   Úvalidate_data_columnsÚTable.validate_data_columns­  s  € ô
 �>×"Ñ"ØˆIà*¨1Ñ-ÑˆØ�y‰y�}‰}˜T 2Ó&ˆØ�8‰8�FÓ˜|Ó+¶ÜØ4°T°Fð ; Ø ,˜~ð/óð ð ˜4ÒÜ Ó,‰LØÑ!ØˆLô �l¤D×)Ñ)Ü$'¨Ó$5Ð!Ü Ó-ˆLØ×Ñð *×.Ñ.Ô0óâ0˜Ø˜H‘}ó à)*Ñ)G÷ Ù0ñôñ (Ó<š<�a°Ñ+;—™<Ñ<Ð<ùòùò =s   Ã
C=ÃC=ÃC=Ã'	DÃ4Dc                ó6  ^• [        U[        5      (       d1  U R                  R                  n[	        SU S[        U5       S35      eTc  S/mT Vs/ s H  o‚R                  U5      PM     snmU R                  5       (       aJ  Sn	U R                   Vs/ s H  oˆR                  PM     snm[        U R                  5      nU R                  nOSn	U R                  n
U R                  S:X  d   e[        T5      U R                  S	-
  :w  a  [!        S
5      e/ nUc  Sn[#        U4S jS 5       5      nUR$                  U   n[        U5      nU	(       a£  [        U5      nU R&                  U   S	   n[)        [*        R,                  " U5      [*        R,                  " U5      SSS9(       dM  [)        [*        R,                  " [/        U5      5      [*        R,                  " [/        U5      5      SSS9(       a  UnU
R1                  U0 5      n[        UR2                  5      US'   [        U5      R4                  US'   UR7                  XÍ45        TS   nUR$                  U   nUR9                  U5      n[;        UX€R<                  U R>                  5      nUUl	        URA                  S5        URC                  U
5        URE                  U5        U/n[        U5      nUS	:X  d   e[        U5      S	:X  d   eU H  n[G        X(S   US	   5      nM     UR                  S	:H  nU RI                  XVU5      nU RK                  UU5      RM                  5       nU RO                  UX›U RP                  U5      u  nn/ n[S        [U        UUSS95       GH  u  nu  nn[V        nSnU(       aF  [        U5      S	:X  a7  US   U;   a.  [X        nUS   nUb   [        U[Z        5      (       d  [!        S5      eU	(       a  U(       a   U RP                  U   nOSnU=(       d    SU 3n![a        U!URb                  UUUU R<                  U R>                  US9n"[e        U!U Rf                  5      n#URi                  U"5      n$[k        U"Rl                  Rn                  5      n%Sn&[q        U"SS5      b  [s        U"Rt                  5      n&S=n'=n(n)[        U"Rl                  [v        5      (       a=  U"Rx                  n)Sn'[*        Rz                  " U"R|                  5      R                  5       n(O4[        URl                  [€        5      (       a  [[        URl                  5      n'[ƒ        U"5      u  n*n+U" U#U![        U5      U$UU%U&U)U'U(U+U*S9n,U,RC                  U
5        UR7                  U,5        US	-  nGM     U V,s/ s H"  n,U,R„                  (       d  M  U,Rn                  PM$     n-n,[        U 5      " U R†                  U R                  U R<                  U R>                  UUUU-U
US9
n.[‰        U S5      (       a  U RŠ                  U.lE        U.R�                  U5        U(       a  U	(       a  U.R�                  U 5        U.$ s  snf s  snf ! [\        [^        4 a"  n [!        SU SU RP                   S35      U eSn A ff = fs  sn,f )a˜  
Create and return the axes.

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

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

min_itemsize: Dict[str, int] or None, default None
    The min itemsize for a column in bytes.
z/cannot properly create the storer for: [group->rä  rX  Nr   TFrw  rg   z<currently only support ndim-1 indexers in an AppendableTabler†  c              3  ó6   >#   • U  H  oT;  d  M
  Uv •  M     g 7frX   rÊ   )rˆ  rk  r�  s     €r\   rŠ  Ú%Table._create_axes.<locals>.<genexpr>  s   øé € Ð6šf˜°©—1‘1šfùs   ƒ	�	r�  rÔ  r  rô   rW  r`  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colrŠ   r‹   r[   rŽ   r¦   rA  rÓ  )rc   rE  r˜  rD  rF  r«  rA  r   r¾   rG  rz  rË  )
rÅ   rÂ   r[   rŽ   r]  rg  r^  r�   rÕ  r‹   r
  )Hr`   r-   rÂ   rÁ   r±   rô   Ú_get_axis_numberrE  r]  r[  rj   r�   r‹   rÕ  r‘  rl   rª   rŽ  r�  rg  r,   r€  r?   r•  rÂ  r  rõ   r�   Ú_get_axis_namerÿ  r[   rŽ   rH  rÉ  r¨  Ú_reindex_axisrÝ  rØ  r]  Ú_get_blocks_and_itemsr^  r	  rd  rì  r^  ra   Ú
IndexErrorró   Ú_maybe_convert_for_string_atomr˜  r¾  rx  r  r  rz  rc   r´  r  rA  r(   r   rI  rC  rL  r4   r  r?  rÅ   rn  r
  rº  rD  )/rÔ   r�  rý  rD  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â  rT  rK  Úvaxesr  rV  Úb_itemsr¿  rc   rã  r~  Únew_nameÚdata_convertedrÀ  rD  r«  rA  r¾   rG  r   rË  r  r�  ÚdcsÚ	new_tables/    `                                             r\   Ú_create_axesÚTable._create_axesÓ  s:  ø€ ô@ ˜#œy×)Ñ)Ø—J‘J×&Ñ&ˆEÜØAÀ%Àð IÜ˜s›)˜ Að'óð ð ‰<Ø�3ˆDñ 26Ó6²¨A×$Ñ$ QÖ'±Ñ6ˆð �?‰?×ÑØˆLØ$(§O¢OÓ4¢O˜q—F”F¡OÑ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ô Ð%Ó&¨!Ó+Ð+Ð+Û#ˆAÜ  q¡T¨1¨Q©4Ó0ŠCñ $ð —^‘^ qÑ(ˆ
ð ×1Ñ1ØÐ(:ó
ˆð —‘  ZÓ0×=Ñ=Ó?ˆà ×6Ñ6Ø�<°T×5EÑ5EÀ|ó
Ñˆ�	ð
 ˆÜ!*¬3¨v°yÈÑ+N×!OÑˆ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ÑAØ(×0Ñ0�Ø!�ÜŸ:š: n×&?Ñ&?Ó@×FÑFÓH‘Ü˜CŸI™I¤{×3Ñ3Ü˜3Ÿ9™9“~�ä7¸ÓGÑˆD�*áØØÜ˜G“}ØØØØØØØ!Ø ØñˆCð �O‰O˜HÔ%à�L‰L˜Ôà�‰F‹AñW "PñZ $)ÓB¢5˜C¨C×,AÕ,A‹xˆs�xŒx¡5ˆÐBä˜”JØ—;‘;Ø—*‘*Ø—]‘]Ø—;‘;Ø%Ø-ØØØØñ
ˆ	ô �4˜×"Ñ"à#Ÿ{™{ˆIÔà×'Ñ'¨Ô5æžØ×Ñ˜tÔ$àÐùòI 7ùò
 5øô^ #¤HÐ-ó Ü$Ø7¸°xð @0Ø04×0@Ñ0@Ð/AÀðDóð ðûðüòr Cs0   ÁYÂYÏ1Y!ÖZÖ1ZÙ!ZÙ1ZÚZc           
     óÞ  • S nU R                   n[        UR                  5      nU" U5      n[        U5      (       a¶  US   u  pš[	        U
5      R                  [	        U5      5      nU R                  X¹S9R                   n[        UR                  5      nU" U5      nU HP  nU R                  U/U	S9R                   nUR                  UR                  5        UR                  U" U5      5        MR     U(       a“  [        XxSS9 VVs0 s H   u  pÞ[        UR                  5       5      XÞ4_M"     nnn/ n/ nU HN  n[        UR                  5      n UR                  U5      u  pÞUR                  U5        UR                  U5        MP     UnUnXx4$ s  snnf ! [        [        4 aF  nSR!                  U Vs/ s H  n[#        U5      PM     Os  snf sn5      n[%        SU S35      UeS nAff = f)	Nc                óŠ   • U R                    Vs/ s H'  oR                  R                  UR                  5      PM)     sn$ s  snf rX   )rT  r   r—  rU  )ÚmgrrV  s     r\   Úget_blk_itemsÚ2Table._get_blocks_and_items.<locals>.get_blk_itemsÎ  s-   € Ø<?¿JºJÓGºJ°S—I‘I—N‘N 3§<¡<Ö0¹JÑGÐGùÒGs   �.A r   rŒ  TrW  rV  z+cannot match existing table structure for [z] on appending data)rP  rj   rT  rl   r/   r”  r›  r“  rd  rk   Útolistr˜  rh  r�   rè  ró   rY  rD   rª   )râ  rê  rì  r^  r�   rÿ  rþ  rT  rK  r[  rÛ  Ú
new_labelsr¸  Úbrõ  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear   r~  ÚitemÚjitemss                          r\   rç  Ú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Û!�ð —m‘m Q C¨d�mÐ3×8Ñ8�Ø—‘˜cŸj™jÔ)Ø× Ñ ¡¨sÓ!3Ö4ñ "ö ô #& fÀÒ"Eôâ"E‘J�Aô �g—n‘nÓ&Ó'¨!¨Ò5Ù"Eð ñ ð ')ˆJØˆMÛ!�Ü˜bŸi™iÓ(�ð	Ø!)§¡¨eÓ!4‘J�AØ×%Ñ% aÔ(Ø!×(Ñ(¨Ö1ñ "ð  ˆFØ%ˆIàÐ Ð ùó+øô #¤HÐ-ó Ø ŸX™XÁeÓ&LÂe¸d¤|°DÖ'9ÂeùÔ&LÓM�FÜ$ØEÀfÀXð N,ð ,óð ðûðús*   Ä'FÅ5FÆG,Æ&G'Æ5GÇ
G'Ç'G,c                ó®  ^ ^• Ub  [        U5      nUb^  T R                  (       aM  [        T R                  [         5      (       d   eT R                   H  nXC;  d  M
  UR	                  SU5        M     T R
                   H  u  pV[        TXVU5      mUU 4S jnM     UR                  b-  UR                  R                  5        H  u  p‰n
W" XŠU	5      mM     T$ )zprocess axes filtersr   c                ó  >• TR                    Hå  nTR                  U5      nTR                  U5      nUc   eX:X  aQ  T	R                  (       a$  UR	                  [        T	R                  5      5      nU" XQ5      nTR                  US9U   s  $ X;   d  M‡  [        [        TU 5      R                  5      n[        U5      n[        T[        5      (       a  SU-
  nU" Xq5      nTR                  US9U   s  $    [        SU  S35      e)NrŒ  rg   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSrä  Ú	_get_axisrv  Úunionr/   r
  rš  rA   r´  r˜  r`   r-   rª   )
ÚfieldÚfiltÚoprð  Úaxis_numberÚaxis_valuesÚtakersr˜  rý  rÔ   s
           €€r\   Úprocess_filterÚ*Table.process_axes.<locals>.process_filter  s   ø€ Ø!$×!1Ô!1�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Ñ5Ø*+¨k©/˜Ká!# FÓ!1˜Ø"Ÿw™w¨K˜wÐ8¸Ñ@Ò@ñ5 "2ô8 !Ð#:¸5¸'ÐAQÐ!RÓSÐSr^   )	rj   rv  r`   r
  Úinsertrg  ræ  Úfilterrˆ   )rÔ   rý  rÒ  r¦   r  r[  Úlabelsr  r  r  r  s   ``         r\   Úprocess_axesÚTable.process_axes  sÊ   ù€ ð ÑÜ˜7“mˆGð Ñ 4×#6×#6Ü˜dŸk™k¬4×0Ñ0Ð0Ð0Ø—[”[�ØÕ#Ø—N‘N 1 aÖ(ñ !ð
 !×/Ô/‰LˆDÜ  T°7Ó;ˆC÷Tð Tñ 0ðF ×ÑÑ'Ø#,×#3Ñ#3×#:Ñ#:Ö#<‘�˜4Ù$ U°"Ó5’ñ $=ð ˆ
r^   c                óŽ  • Uc  [        U R                  S5      nSUS.nU R                   Vs0 s H  ofR                  UR                  _M     snUS'   U(       aJ  Uc  U R
                  =(       d    Sn[        5       R                  UUU=(       d    U R                  S9nXuS'   U$ U R                  b  U R                  US'   U$ s  snf )z:create the description of the table from the axes & valuesi'  ru   )rc   r‚  r™  é	   )rš   r›   rÕ   rË   )
Úmaxr€  r�  rE  rD  rÏ   r…   r$  rÑ   rÒ   )rÔ   r›   rš   rÕ   r‚  rœ  r£   rË   s           r\   Úcreate_descriptionÚTable.create_description8  sÄ   € ð ÑÜ˜t×2Ñ2°EÓ:ˆLà¨lÑ;ˆð 59·I²IÓ>²I¨qŸG™G Q§U¡UšN±IÑ>ˆˆ-ÑæØÑ Ø ŸO™O×0¨q�	Ü“i×'Ñ'Ø#ØØ%×9¨×)9Ñ)9ð (ð ˆGð
 #ˆi‰Lð ˆð �]‰]Ñ&ØŸ=™=ˆAˆi‰Làˆùò ?s   ­ Cc                ó¼  • U R                  U5        U R                  5       (       d  g[        XX#S9nUR                  5       nUR                  b…  UR                  R                  5        Hg  u  pgnU R                  XeR                  5       UR                  5       S-   S9n	XW" U	R                  XUR                  5       -
     U5      R                     nMi     [        USS9$ )zN
select coordinates (row numbers) from a table; return the
coordinates object
FrK  rg   rö  rE  )r¶  rE  rÑ  Úselect_coordsr  rˆ   rS  r2  r  Úilocr˜  r/   )
rÔ   rm   r¤   r¥   rÒ  Úcoordsr  r  r  rË  s
             r\   rM  ÚTable.read_coordinatesW  sÎ   € ð 	×Ñ˜eÔ$ð �‰× Ñ Øô ˜d°uÑHˆ	Ø×(Ñ(Ó*ˆØ×ÑÑ'Ø#,×#3Ñ#3×#:Ñ#:Ö#<‘�˜4Ø×'Ñ'Ø§¡£°F·J±J³LÀ1Ñ4Dð (ð �ð    4§9¡9¨V·j±j³lÑ-BÑ#CÀTÓ J× QÑ QÑR’ñ	 $=ô �V %Ñ(Ð(r^   c                óR  • U R                  5         U R                  5       (       d  gUb  [        S5      eU R                   HÕ  nXR                  :X  d  M  UR
                  (       d  [        SU S35      e[        U R                  R                  U5      nUR                  U R                  5        UR                  XcU U R                  U R                  U R                  S9nUS   n[        U R                  R                   U S3S5      n	[#        X�SU	S	9s  $    [%        SU S
35      e)zR
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 indexablerG  rg   rö  )rc   rÌ  rz  z] not found in the table)r¶  rE  r±   r�  rc   r?  rª   r´  ru   r‰  rÎ  rÕ  r�  r‹   r[   rŽ   r”  r3   ró   )
rÔ   rR  rm   r¤   r¥   r£   r¸  Ú
col_valuesÚcvsrz  s
             r\   rS  ÚTable.read_columnq  s  € ð 	×ÑÔð �‰× Ñ ØàÑÜÐRÓSÐSð —”ˆAØŸ™ÕØ×*×*Ü$Ø" 6 (ð +3ð 3óð ô ˜DŸJ™JŸO™O¨VÓ4�Ø—
‘
˜4Ÿ9™9Ô%ØŸY™YØ˜D�MØ ŸL™LØ!Ÿ]™]ØŸ;™;ð	 'ð �
ð ! ‘m�Ü §
¡
× 0Ñ 0°V°H¸EÐ2BÀDÓI�Ü˜c°UÀ%ÑHÒHñ' ô* ˜ & Ð)AÐBÓCÐCr^   )	r�   r[   rŽ   r]  rÕ  r
  r‹   rg  r^  )Nr   NNNNNN)rÅ   rœ   rÂ   rM   r[   r%  rŽ   ra   r]  zlist[IndexCol] | Nonerg  z list[tuple[AxisInt, Any]] | Noner^  zlist[DataCol] | Noner�   zlist | NonerÕ  zdict | Noner  r  r  )r¸  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   r˜  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-   rD  r+  )râ  r-   rê  r+  )rÒ  rÑ  r  r-   )rš   r  rÕ   r+  r‚  r  r  r+  ©r¤   r  r¥   r  )rR  ra   r¤   r  r¥   r  )6rõ   r(  r)  r*  r+  ro  rp  r,  r
  re  rÖ   r-  rb  r  rè   rD  rv  r|  r€  r   r«  ru   rz  r™  r�  re  r–  rš  r¢  r¥  r¨  r«  r²  r×  r£  r§  r¶  rº  r   r´  r¬  rÔ  rZ  rØ  rÝ  rú  Ústaticmethodrç  r  r   rM  rS  r.  r[  r\  s   @r\   r  r  ¶  sP  ø‡ ñð. €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ó +Dr^   r  c                  óB   • \ rS rSrSrSr    S   S	S jjrS
S jrSrg)rô  iŸ  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                ó   • [        S5      e)zK
read the indices and the indexing array, calculate offset rows and return
z!WORMTable needs to implement readr»  r¼  s        r\   r;  ÚWORMTable.read¨  s   € ô "Ð"EÓFÐFr^   c                ó   • [        S5      e)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  ÚWORMTable.write´  s   € ô "Ð"FÓGÐGr^   rÊ   rÃ  r-  r  )	rõ   r(  r)  r*  r+  rÞ  r;  r  r.  rÊ   r^   r\   rô  rô  Ÿ  s>   † ñð €Jð ØØ Øð
Gð ð	
Gð
 õ
G÷Hr^   rô  c                  óš   • \ rS rSrSrSr            S
         SS jjrSSS jjr          SS jr S     SS jjr	S	r
g)rà  i½  ú(support the new appendable table formatsÚ
appendableNc           	     óH  • U(       d7  U R                   (       a&  U R                  R                  U R                  S5        U R	                  UUUUUUS9nUR
                   H  nUR                  5         M     UR                   (       dN  UR                  UUUU	S9nUR                  5         UUS'   UR                  R                  " UR                  40 UD6  UR                  UR                  l
        UR
                   H  nUR                  Xã5        M     UR                  XŠS9  g )Nru   )r�  rý  rD  rŠ   r‹   r�   )r›   rš   rÕ   r‚  rq  )rŒ   )r   rÇ   r  rÂ   rú  r�  r«  r   r£  Úcreate_tablerÕ  r”  rµ  Ú
write_data)rÔ   rý  r�  r�   r›   rš   rÕ   rŠ   r¨   r‚  rŒ   r‹   r�   rq  ru   r£   Úoptionss                    r\   r  ÚAppendableTable.writeÃ  s
  € ö  ˜$Ÿ.Ÿ.Ø�L‰L×$Ñ$ T§Z¡Z°Ô9ð ×!Ñ!ØØØØ%ØØ%ð "ð 
ˆð —”ˆAØ×ÑÖñ ð ��à×.Ñ.ØØ#Ø%Ø)ð	 /ð ˆGð �O‰OÔà%0ˆG�MÑ"ð �M‰M×&Ò& u§{¡{Ñ>°gÒ>ð !Ÿ:™:ˆ�‰Ôð —”ˆAØ×Ñ˜uÖ-ñ ð 	×Ñ˜ÐÒ2r^   c                óX  • U R                   R                  nU R                  n/ nU(       au  U R                   He  n[	        UR
                  5      R                  SS9n[        U[        R                  5      (       d  MF  UR                  UR                  SSS95        Mg     U(       a&  US   nUSS  H  nXx-  nM	     UR                  5       nOSnU R                   Vs/ s H  ofR                  PM     n	n[        U	5      n
U
S:X  d   U
5       eU R                   Vs/ s H  ofR!                  5       PM     nnU Vs/ s HS  oÌR#                  [        R$                  " [        R&                  " UR(                  5      UR(                  S-
  5      5      PMU     nn/ n[+        U5       HG  u  pìU/U R                   X:U-         R,                  Q7nUR                  UR/                  U5      5        MI     Uc  Sn[        R0                  " [3        X5      U R                   S	9nXA-  S-   n[5        U5       Ha  nXá-  n[3        US-   U-  U5      nUU:¼  a    gU R7                  UU	 Vs/ s H  ofUU PM	     snUb  UUU OSU Vs/ s H  oÌUU PM	     snS
9  Mc     gs  snf s  snf s  snf s  snf s  snf )zP
we form the data into a 2-d including indexes,values,mask write chunk-by-chunk
r   rŒ  Úu1FrE  rg   Nr1  rA  )ÚindexesrU  r˜  )rz  r  r€  r^  r7   rË  r†  r`   r€  r�  r�   rO  rL  r]  r¡  rl   r‘  Ú	transposeÚrollÚaranger‘  r	  rú  Úreshaperü  r2  r�  Úwrite_data_chunk)rÔ   r¨   rŒ   r  rC  Úmasksr£   rU  r  r>  Únindexesr˜  rŸ  Úbvaluesr  Ú	new_shapeÚrowsÚchunksÚstart_iÚend_is                       r\   r9  ÚAppendableTable.write_dataþ  sg  € ð —
‘
× Ñ ˆØ×#Ñ#ˆð ˆÞØ×%Ô%�ô ˜AŸF™F“|×'Ñ'¨QÐ'Ð/�Ü˜d¤B§J¡J×/Ó/Ø—L‘L §¡¨T¸ Ð!>Ö?ñ &ö Ø˜‘8ˆDØ˜1˜2“Y�Ø‘x’ñ à—:‘:“<‰DàˆDð '+§o¢oÓ6¢o —9”9¡oˆÐ6Ü�w“<ˆØ˜1‹}Ð&˜hÓ&ˆ}ð *.×)9Ò)9Ó:Ò)9 A—+‘+–-Ñ)9ˆÐ:ÙOUÓVÊvÈ!—+‘+œbŸgšg¤b§i¢i°·±Ó&7¸¿¹À!¹ÓDÖEÉvˆÐVØˆÜ˜fÖ%‰DˆAØÐG §¡¨E¸Q±,Ñ,?Ñ!@×!FÑ!FÑGˆIØ�N‰N˜1Ÿ9™9 YÓ/Ö0ñ &ð
 ÑØˆIä�xŠxœ˜IÓ-°T·Z±ZÑ@ˆØÑ# aÑ'ˆÜ�v–ˆAØ‘mˆGÜ˜˜Q™ )Ñ+¨UÓ3ˆEØ˜%ÓÙà×!Ñ!ØÙ3:Ó;²7¨a˜7 5Ó)±7Ñ;Ø,0Ñ,<�T˜' %Ñ(À$Ù29Ó:²'¨Q˜' %Ó(±'Ñ:ð	 "ó ò ùò' 7ùò ;ùÚVùò( <ùâ:s   ÃJÄJÄ:AJÉJ"É;J'c                óœ  • U H*  n[         R                  " UR                  5      (       a  M*    g   US   R                  S   nU[        U5      :w  a  [         R                  " X`R
                  S9nU R
                  R                  n[        U5      n[        U5       H  u  pšX¡Xy   '   M     [        U5       H  u  p•XQXyU-      '   M     Ub<  UR                  5       R                  [        SS9) nUR                  5       (       d  X   n[        U5      (       a6  U R                  R                  U5        U R                  R                  5         gg)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   rA  FrE  )r€  r  rú  rl   rü  rz  r  r	  rL  rO  r+  r†  ru   r�   r/  )rÔ   rH  r>  rU  r˜  rŸ  rC  r  rE  r  rÆ  r  s               r\   rC  Ú AppendableTable.write_data_chunk9  s  € ó  ˆAÜ—7’7˜1Ÿ7™7×#Ó#Ùñ ð ˜‘
× Ñ  Ñ#ˆØ”C˜“IÓÜ—8’8˜E¯©Ñ4ˆDØ—
‘
× Ñ ˆÜ�w“<ˆô   Ö(‰FˆAØ �‘‹Nñ )ô ˜fÖ%‰DˆAØ()�˜8‘|Ñ$Ó%ñ &ð ÑØ—‘“×$Ñ$¤T°Ð$Ð6Ð6ˆAØ—5‘5—7‘7Ø‘w�äˆt�9‰9Ø�J‰J×Ñ˜dÔ#Ø�J‰J×ÑÕð r^   c                óÔ  • Ub  [        U5      (       d|  Uc5  Uc2  U R                  nU R                  R                  U R                  SS9  U$ Uc  U R                  nU R
                  R                  X#S9nU R
                  R                  5         U$ U R                  5       (       d  g U R
                  n[        XX#S9nUR                  5       n[        USS9R                  5       n[        U5      n	U	(       aò  UR                  5       n
[        XªS:„     R                  5      nU(       d  S/nUS   U	:w  a  UR!                  U	5        US   S:w  a  UR#                  SS5        UR%                  5       n['        U5       HP  nUR)                  [+        XÜ5      5      nUR                  XîR                  S      XîR                  S      S-   S9  UnMR     U R
                  R                  5         U	$ )	NTrv  rö  FrE  rg   r   rB  )rl   rC  rÇ   r  rÂ   ru   Úremove_rowsr/  rE  rÑ  r#  r3   Úsort_valuesÚdiffrj   r‰   r�   r  rh  Úreversedr—  r�  )rÔ   rm   r¤   r¥   rC  ru   rÒ  r˜  Úsorted_seriesÚlnrR  r³   Úpgr  rH  s                  r\   r}  ÚAppendableTable.deletee  sÄ  € ð ‰=¤ E§
¡
Ø‰} ¡ØŸ
™
�Ø—‘×(Ñ(¨¯©¸tÐ(ÑDð ˆLð	 ‘<ØŸ:™:�DØŸ
™
×.Ñ.°UÐ.ÐF�Ø—
‘
× Ñ Ô"ØˆLð �‰× Ñ Øð —
‘
ˆÜ˜d°ÑBˆ	Ø×(Ñ(Ó*ˆô ˜v¨EÑ2×>Ñ>Ó@ˆÜ�Óˆæà ×%Ñ%Ó'ˆDÜ˜$ a™x™.×.Ñ.Ó/ˆFö Ø˜�ð �b‰z˜RÓØ—‘˜bÔ!ð �a‰y˜A‹~Ø—‘˜a Ô#ð —‘“ˆBÜ˜fÖ%�Ø$×)Ñ)¬%°«,Ó7�Ø×!Ñ!ØŸz™z¨!™}Ñ-°D¿¹ÀB¹Ñ4HÈ1Ñ4Lð "ñ ð ’ñ &ð �J‰J×ÑÔð ˆ	r^   rÊ   )NFNNNNNNFNNT)
r�   r+  r¨   r  rŒ   r+  rq  r+  r  r  r  )r¨   r  rŒ   r+  r  r  )
rH  rß  r>  úlist[np.ndarray]rU  znpt.NDArray[np.bool_] | Noner˜  rX  r  r  r  rÄ  )rõ   r(  r)  r*  r+  rÞ  r  r9  rC  r}  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                  óx   • \ rS rSr% SrSrSrSr\r	S\
S'   \SS j5       r\SS	 j5       r    S   SS jjrSrg
)rò  i¢  r5  rß  ré  rw  rq  rr  c                ó:   • U R                   S   R                  S:H  $ )Nr   rg   )r]  r[  rÚ   s    r\   r–  Ú"AppendableFrameTable.is_transposedª  s   € à�‰˜qÑ!×&Ñ&¨!Ñ+Ð+r^   c                ó,   • U(       a  UR                   nU$ )zthese are written transposed)rï  r×  s      r\   rØ  ÚAppendableFrameTable.get_object®  s   € ö Ø—%‘%ˆCØˆ
r^   Nc                ó>  • U R                  U5        U R                  5       (       d  g U R                  XUS9n[        U R                  5      (       a,  U R
                  R                  U R                  S   S   0 5      O0 n[        U R                  5       VVs/ s H  u  pxX€R                  S   L d  M  UPM     n	nn[        U	5      S:X  d   eU	S   n
XZ   S   n/ n[        U R                  5       GHY  u  p}XÐR                  ;  a  M  XW   u  pïUR                  S5      S:w  a  [        U5      nO[        R                  " U5      nUR                  S5      nUb  UR                  USS9  U R                  (       a  UnUn[        U[!        US	S 5      S
9nO#UR"                  n[        U[!        US	S 5      S
9nUnUR$                  S:X  a?  ['        U[(        R*                  5      (       a   UR-                  SUR.                  S   45      n['        U[(        R*                  [0        45      (       a   [3        UR"                  UUSS9nO8['        U[        5      (       a  [3        UUUS9nO[2        RD                  " U/UUS9n[9        5       (       a  URF                  RH                  S:X  dI  URJ                  URF                  :H  RM                  5       (       d   URJ                  URF                  45       eU HF  n[!        U RN                  RP                  U S3S 5      nUS;   d  M/  UU   RS                  U5      UU'   MH     URU                  U5        GM\     [        U5      S:X  a  US   nO
[W        USS9n[Y        XX4S9nU R[                  UUUS9nU$ s  snnf ! [4         a‚  nU R6                  S:X  al  [9        5       (       a]  [;        U5      R=                  S5      (       a>  [>        (       a3  [3        UR"                  UUS[A        S[(        RB                  S9S9n S nAGNœe S nAff = f)NrK  r   rg   rô   r0   r  T©Úinplacerc   rb   FrE  rx  ry  r{  r|  )r¦   r‰   rÌ  rz  rF  rF  rö  )ra   r¦  rŒ  )rÒ  r¦   ).r¶  rE  rÔ  rl   rg  rÕ  ræ   r	  r�  r]  r^  r/   r0   Úfrom_tuplesÚ	set_namesr–  r´  rï  r‘  r`   r€  r�  rB  rú  r9   r-   r…  rŽ   r   ra   r  r   r4   r†  Ú_from_arraysrz  r«  Údtypesr†  ru   r”  rO  r�   r6   rÑ  r  )rÔ   rm   r¦   r¤   r¥   rØ  rÕ  r  rI  ÚindsÚindr‰   Úframesr£   Ú
index_valsr¡  r‰  r  r˜  Úindex_Úcols_rL  r~  rR  rz  rÒ  s                             r\   r;  ÚAppendableFrameTable.readµ  s¢  € ð 	×Ñ˜eÔ$ð �‰× Ñ Øà—‘ uÀ�ÐEˆô �4×&Ñ&×'Ñ'ð �I‰I�M‰M˜$×-Ñ-¨aÑ0°Ñ3°RÔ8àð 	ô  )¨¯©Ô3ÔPÒ3‘e�a°r¿_¹_ÈQÑ=OÐ7O—Ñ3ˆÑPÜ�4‹y˜A‹~Ðˆ~Ø�1‰gˆà‘˜A‘ˆàˆÜ˜dŸi™i×(‰DˆAØ×(Ñ(Ó(ÙØ"(¡)Ñˆ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Ñ$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Ñ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ÑHˆ	à×Ñ˜r¨YÀÐÐHˆØˆ	ùó] QøôN *ó àŸ™ Ó6Ü.×0Ñ0Ü ›H×-Ñ-Ð.F×GÑGß'šKä&Ø"ŸH™HØ$)Ø"(Ø!&Ü"-°hÌÏÉÑ"Pñžð ûðús+   ÂN
Â3N
È+NÎ
PÎA6PÐPÐPrÊ   r  r,  rÃ  r-  )rõ   r(  r)  r*  r+  ro  rÞ  r‘  r-   rr  r,  r-  r–  rZ  rØ  r;  r.  rÊ   r^   r\   rò  rò  ¢  su   ‡ Ù2à€KØ#€JØ€DØ)2€HÐ&Ó2àó,ó ð,ð óó ðð ØØ Øðdð ð	dð
 ÷dð dr^   rò  c                  ó’   ^ • \ rS rSrSrSrSrSr\r	\
SS j5       r\SS j5       rSSU 4S jjjr    S     SU 4S	 jjjrS
rU =r$ )rð  i  r5  ræ  rç  rw  c                ó   • grä  rÊ   rÚ   s    r\   r–  Ú#AppendableSeriesTable.is_transposed$  ræ  r^   c                ó   • U$ rX   rÊ   r×  s      r\   rØ  Ú AppendableSeriesTable.get_object(  s   € àˆ
r^   c                óÐ   >• [        U[        5      (       d&  UR                  =(       d    SnUR                  U5      n[        TU ]  " SXR                  R                  5       S.UD6  g)ú+we are going to write this as a frame tabler˜  ©rý  r�   NrÊ   )r`   r-   rc   Úto_framerî  r  r¦   r  )rÔ   rý  r�   r¹   rc   rï  s        €r\   r  ÚAppendableSeriesTable.write-  sM   ø€ ä˜#œy×)Ñ)Ø—8‘8×'˜xˆDØ—,‘,˜tÓ$ˆCÜ‰ŠÐK˜#¯K©K×,>Ñ,>Ó,@ÑKÀFÓKr^   c                ó€  >• U R                   nUbT  U(       aM  [        U R                  [        5      (       d   eU R                   H  nXb;  d  M
  UR	                  SU5        M     [
        TU ]  XX4S9nU(       a  UR                  U R                  SS9  UR                  S S 2S4   nUR                  S:X  a  S Ul	        U$ )Nr   rZ  Tr_  r˜  )
rv  r`   r
  rj   r  rî  r;  Ú	set_indexr$  rc   )	rÔ   rm   r¦   r¤   r¥   rv  r  r?  rï  s	           €r\   r;  ÚAppendableSeriesTable.read4  s§   ø€ ð ×,Ñ,ˆØÑ¦>Ü˜dŸk™k¬4×0Ñ0Ð0Ð0Ø—[”[�ØÕ#Ø—N‘N 1 aÖ(ñ !ô ‰G‰L˜u¸UˆLÐNˆÞØ�K‰K˜Ÿ™¨TˆKÑ2à�F‰F’1�a�4‰Lˆð �6‰6�XÓØˆAŒFØˆr^   rÊ   r  r,  rX   r  rÃ  r;  )rõ   r(  r)  r*  r+  ro  rÞ  r‘  r3   rr  r-  r–  rZ  rØ  r  r;  r.  r[  r\  s   @r\   rð  rð    s‚   ø† Ù2à €KØ$€JØ€DØ€Hàóó ðð óó ð÷Lñ Lð ØØ Øðð ð	ð
 ðð 
÷ö r^   rð  c                  ó8   ^ • \ rS rSrSrSrSrSU 4S jjrSrU =r	$ )rñ  iM  r5  ræ  rè  c                ó2  >• UR                   =(       d    SnU R                  U5      u  o@l        [        U R                  [        5      (       d   e[	        U R                  5      nUR                  U5        [        U5      Ul        [        TU ]$  " SSU0UD6  g)rr  r˜  rý  NrÊ   )
rc   r|  r
  r`   rj   r�   r/   r¦   rî  r  )rÔ   rý  r¹   rc   Únewobjr‰  rï  s         €r\   r  Ú AppendableMultiSeriesTable.writeT  sv   ø€ à�x‰x×#˜8ˆØ"×6Ñ6°sÓ;Ñˆ”Ü˜$Ÿ+™+¤t×,Ñ,Ð,Ð,Ü�D—K‘KÓ ˆØ�‰�DÔÜ˜t›ˆŒÜ‰ŠÑ+˜&Ð+ FÓ+r^   ©r
  r  )
rõ   r(  r)  r*  r+  ro  rÞ  r  r.  r[  r\  s   @r\   rñ  rñ  M  s   ø† Ù2à €KØ)€J÷,õ ,r^   rñ  c                  ó|   • \ rS rSr% SrSrSrSr\r	S\
S'   \SS j5       r\S	 5       rSS
 jr\S 5       rSS jrSrg)rï  i_  z:a table that read/writes the generic pytables table formatrß  rà  rw  zlist[Hashable]r
  c                ó   • U R                   $ rX   )ro  rÚ   s    r\   r°  ÚGenericTable.pandas_typeh  s   € à×ÑÐr^   c                óV   • [        U R                  SS 5      =(       d    U R                  $ r…  r†  rÚ   s    r\   r«  ÚGenericTable.storablel  s   € ä�t—z‘z 7¨DÓ1×?°T·Z±ZÐ?r^   c                ór  • / U l         SU l        / U l        U R                   Vs/ s H  oR                  (       d  M  UPM     snU l        U R                   Vs/ s H  oR                  (       a  M  UPM     snU l        U R                   Vs/ s H  oR                  PM     snU l        gs  snf s  snf s  snf )ræ  N)	rg  r‹   r
  r´  r>  r]  r^  rc   r�   r™  s     r\   r§  ÚGenericTable.get_attrsp  s†   € à ˆÔØˆŒØˆŒà&*§o¢oÓK¢o ×9JÕ9JŸ1¡oÑKˆŒØ'+§¢ÓP¢ !×>OÕ>OŸA¡ÑPˆÔØ-1×-=Ò-=Ó>Ò-=¨ŸVœVÑ-=Ñ>ˆÕùò LùÚPùÚ>s   ¤B*¼B*ÁB/Á0B/ÂB4c                ó†  • U R                   nU R                  S5      nUb  SOSn[        SSU R                  X2S9nU/n[	        UR
                  5       Hj  u  pg[        U[        5      (       d   e[        X5      nU R                  U5      nUb  SOSn[        UUU/UU R                  UUS9n	UR                  U	5        Ml     U$ )z0create the indexables from the table descriptionr‰   NrÓ  r   )rc   r[  ru   r¾   rG  )rc   rF  r˜  rD  ru   r¾   rG  )r™  r×  râ  ru   r	  Ú_v_namesr`   ra   r´  rl  r�   )
rÔ   rœ  rÁ  r¾   rÇ  rÆ  r  r  r  r¤  s
             r\   r´  ÚGenericTable.indexablesz  s×   € ð ×Ñˆð
 ×Ñ Ó(ˆØ™^‰z°ˆÜ#Ø˜q¨¯
©
¸ñ
ˆ	ð IRÀ{ˆä˜aŸj™jÖ)‰DˆAÜ˜a¤×%Ñ%Ð%Ð%ä˜1“=ˆDØ×#Ñ# AÓ&ˆBØ!#¡‘:°TˆDÜ(ØØØ�sØØ—j‘jØØñˆBð ×Ñ˜rÖ"ñ *ð" Ðr^   c                ó   • [        S5      e)Nzcannot write on a generic tabler»  )rÔ   r¹   s     r\   r  ÚGenericTable.writež  s   € Ü!Ð"CÓDÐDr^   )r�   r]  r
  r‹   rg  r^  Nr  r  )rõ   r(  r)  r*  r+  ro  rÞ  r‘  r-   rr  r,  r-  r°  r«  r§  r   r´  r  r.  rÊ   r^   r\   rï  rï  _  sg   ‡ ÙDà€KØ €JØ€DØ€HØÓàó ó ð ð ñ@ó ð@ô?ð ñ ó ð ÷FEr^   rï  c                  óž   ^ • \ rS rSrSrSr\rSr\	R                  " S5      r\S
S j5       rSSU 4S jjjr    S     SU 4S jjjrS	rU =r$ )ró  i¢  za frame with a multi-indexrê  rw  z^level_\d+$c                ó   • g)NÚappendable_multirÊ   rÚ   s    r\   rb  Ú*AppendableMultiFrameTable.table_type_shortª  s   € à!r^   c                ó>  >• Uc  / nOUSL a  UR                   R                  5       nU R                  U5      u  ol        [	        U R                  [
        5      (       d   eU R                   H  nXB;  d  M
  UR                  SU5        M     [        TU ]   " SXS.UD6  g )NTr   rs  rÊ   )	r¦   r  r|  r
  r`   rj   r  rî  r  )rÔ   rý  r�   r¹   r  rï  s        €r\   r  ÚAppendableMultiFrameTable.write¯  sŽ   ø€ ØÑØ‰LØ˜TÒ!ØŸ;™;×-Ñ-Ó/ˆLØ×3Ñ3°CÓ8ÑˆŒ[Ü˜$Ÿ+™+¤t×,Ñ,Ð,Ð,Ø—”ˆAØÕ$Ø×#Ñ# A qÖ)ñ ô 	‰ŠÐC˜#ÑC¸FÓCr^   c                ó0  >• [         TU ]  XX4S9nUR                  U R                  5      nUR                  R                  UR                  R                   Vs/ s H&  o`R                  R                  U5      (       a  S OUPM(     sn5      Ul        U$ s  snf )NrZ  )	rî  r;  rw  r
  r‰   rb  r  Ú
_re_levelsÚsearch)rÔ   rm   r¦   r¤   r¥   rL  rc   rï  s          €r\   r;  ÚAppendableMultiFrameTable.read»  s   ø€ ô ‰W‰\ ¸eˆ\ÐOˆØ�\‰\˜$Ÿ+™+Ó&ˆð —8‘8×%Ñ%ØHJÏÉÏÊÓWÊÀ—_‘_×+Ñ+¨D×1Ñ1‰T°tÒ;ÉÑWó
ˆŒð ˆ	ùò Xs   Á-Br}  r  rX   r  rÃ  rX  )rõ   r(  r)  r*  r+  rÞ  r-   rr  r‘  ÚreÚcompiler‘  r-  rb  r  r;  r.  r[  r\  s   @r\   ró  ró  ¢  sw   ø† Ù$à(€JØ€HØ€DØ—’˜NÓ+€Jàó"ó ð"÷
Dñ 
Dð ØØ Øðð ð	ð
 ðð 
÷ö r^   ró  c                óÚ  • U R                  U5      n[        U5      nUb  [        U5      nUb  UR                  U5      (       a  UR                  U5      (       a  U $ [        UR                  5       5      nUb'  [        UR                  5       5      R	                  USS9nUR                  U5      (       d6  [        S S 5      /U R                  -  nX%U'   U R                  [        U5         n U $ )NF)Úsort)	r  rA   ÚequalsÚuniquer™  Úslicer‘  rš  rk   )rý  r[  r  rc  rI  Úslicers         r\   ræ  ræ  Í  sÏ   € ð 
�‰�tÓ	€BÜ˜&Ó!€Fð ÑÜ˜UÓ#ˆØ‰˜Ÿ™ u×-Ñ-°6·=±=À×3DÑ3DØˆ
ä˜&Ÿ-™-›/Ó*€FØÑÜ˜eŸl™l›nÓ-×:Ñ:¸6ÈÐ:ÐNˆØ�=‰=˜×ÑÜ',¨T°4Ó'8Ð&9¸C¿H¹HÑ&DˆØˆt‰Ø�g‰g”e˜F“mÑ$ˆØ€Jr^   c                ó2   • [         R                  " U 5      nU$ )z+for a tz-aware type, return an encoded zone)r   Úget_timezone)rA  Úzones     r\   r  r  ç  s   € ä×!Ò! "Ó%€DØ€Kr^   c                óÊ   • U R                   S:X  d   U R                   5       e[        R                  " U5      u  p4[        SU5      n[	        XS9n[
        R                  " XS9nU$ )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]"
rr  rS   )rA  r.  rA  )rz  r€  Údatetime_datar   r;   r9   Ú_from_sequence)r˜  rA  Údatetime64_dtyper.  ra  rz  r×  s          r\   rH  rH  í  sa   € ð �<‰<˜4ÓÐ- §¡Ó-Ðô ×ÒÐ/Ó0�G€DÜ�
˜DÓ!€Dô ˜2Ñ)€EÜ
×
&Ò
& vÑ
;€CØ€Jr^   c                ó–  • [        U [        5      (       d   eUR                  n[        U5      u  pV[	        U5      n[
        R                  U5      n[        R                  " UR                  S5      (       d4  [        UR                  5      (       d  [        UR                  5      (       a%  [        U UUU[        USS 5      [        USS 5      US9$ [        U[        5      (       a  [        S5      e[        R                   " USS9n	["        R$                  " U5      n
U	S:X  ac  ["        R$                  " U
 Vs/ s H  o»R'                  5       PM     sn["        R(                  S	9n[        XS[+        5       R-                  5       US
9$ U	S:X  aF  [/        X¢U5      nUR                  R0                  n[        U US[+        5       R3                  U5      US
9$ U	S;   a  [        XXxUS9$ [        U["        R4                  5      (       a  UR                  [6        :X  d   eUS:X  d   U5       e[+        5       R9                  5       n[        XXxUS
9$ s  snf )NÚiur@  rA  )r˜  r«  rD  r@  rA  rB  zMultiIndex not supported here!Fr   r   rA  )rB  r¦  )ÚintegerÚfloating)r˜  r«  rD  rB  rÞ  )r`   ra   rc   r  r  r^  r  r   r„  rz  r'   r#   r=  r´  r0   r±   r+  r€  rI  Ú	toordinalÚint32r…   Ú	Time32ColÚ_convert_string_arrayrK  r§  r�  rÞ  r%  )rc   r‰   r[   rŽ   rB  rT  r  r«  r  r2  r˜  rŸ  rK  s                r\   rÿ  rÿ    s  € Ü�dœC× Ñ Ð Ð à—‘€Jô 5°UÓ;Ñ€IÜ˜*Ó%€DÜ×%Ñ% iÓ0€Dô 	�Š˜Ÿ™ T×*Ñ*Ü˜uŸ{™{×+Ñ+Ü˜Ÿ™×%Ñ%ô
 ØØØØÜ˜ ¨Ó-Ü�u˜d DÓ)Ø!ñ
ð 	
ô �%œ×$Ñ$ÜÐ8Ó9Ð9ä—O’O E°%Ñ8€Mô �ZŠZ˜Ó€Fà˜ÓÜ—J’J±vÓ>²v°!§¡¦±vÑ>ÄbÇhÁhÑOˆ	ÜØ˜V¤W£Y×%8Ñ%8Ó%:Àzñ
ð 	
ð 
˜(Ó	"Ü)¨&¸FÓCˆ	Ø—?‘?×+Ñ+ˆÜØØØÜ‹I×Ñ Ó)Ø!ñ
ð 	
ð 
Ð1Ó	1ÜØ¨ÀJñ
ð 	
ô ˜)¤R§Z¡Z×0Ñ0°Y·_±_ÌÓ5NÐNÐNØ�xÓÐ% Ó%ÐÜ‹y×#Ñ#Ó%ˆÜ˜¨À
ÑKÐKùò/  ?s   Ä5Ic           	     ó  • UR                  S5      (       a.  US:X  a  [        U SS9nU$ [        U R                  U5      SS9n U$ UR                  S5      (       a.  US:X  a  [        U SS9nU$ [        U R                  U5      SS9n U$ US:X  aA   [        R
                  " U  Vs/ s H  n[        R                  " U5      PM     sn[        S9nU$ US;   a  [        R
                  " U 5      nU$ US;   a  [        U S X#S	9nU$ US
:X  a  [        R
                  " U S   5      nU$ [        SU 35      es  snf ! [         aH    [        R
                  " U  Vs/ s H  n[        R                  " U5      PM     Os  snf sn[        S9n U$ f = f)Nr=  FrE  r?  r   rA  )r¥  Úfloatr+  r¦  rG  rÞ  r   zunrecognized index type )rÀ  r.   r,  r5   r€  rI  r   rJ  rÞ  rª   rK  rS  )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ºT¸¤× 0Ò 0°Ö 3¹TÑBÌ&ÑQˆEð €Lð 
Ð-Ó	-Ü—
’
˜4Ó ˆð €Lð 
�(Ó	Ü'Ø˜$¨ñ
ˆð €Lð	 
�Ó	Ü—
’
˜4 ™7Ó#ˆð €Lô Ð3°D°6Ð:Ó;Ð;ùò  CøÜó 	TÜ—J’J¹tÓDºt¸!¤× 2Ò 2°1Ö 5ºtùÔDÌFÑS‰Eð €Lð	Tús0   ÂD5 Â$ D0Ã
D5 Ä0D5 Ä5FÅ E4
Å3FÆFc                óÎ  • [        UR                  [        5      (       a  UR                  5       nUR                  [        :w  a  U$ [        [        R                  U5      nUR                  R                  n[        R                  " USS9n	U	S:X  a  [        S5      eU	S:X  a  [        S5      eU	S:X  d  US:X  d  U$ [        U5      n
UR                  5       nXKU
'   U(       a9  U
R                  5       (       a$  [        U5      UR                   :”  a  [#        S	5      e[        R                  " USS9n	U	S:w  ah  [%        UR&                  S
   5       HL  nX¼   n[        R                  " USS9n	U	S:w  d  M$  [        U5      U:”  a  X|   OSU 3n[        SU SU	 S35      e   [)        XµU5      R+                  UR&                  5      nUR                   n[        U[,        5      (       a;  [/        UR1                  U 5      =(       d    UR1                  S5      =(       d    S
5      n[3        U=(       d    S
U5      nUb  UR5                  U5      nUb  UU:”  a  UnUR7                  SU 3SS9nU$ )NFr   r   z+[date] is not implemented as a table columnrÇ  z>too many timezones in this block, create separate data columnsr¦  rÞ  z8NaN representation is too large for existing column sizer   zNo.rn  z2]
because its data contents are not [string] but [ro  r˜  z|SrE  )r`   rz  r4   r&  rÞ  r   r€  r�  rc   r   r+  r±   r7   rÌ  rN  rl   rK  rª   r�  rú  rª  rB  r�  r  ræ   r  r¯  rO  )rc   rF  rã  rŠ   r‹   r[   rŽ   r¦   r  r2  rU  rË  r  r�  Úerror_column_labelr÷  rK  Úecis                     r\   ré  ré  f  s=  € ô �'—-‘-¤×-Ñ-Ø×"Ñ"Ó$ˆØ‡}�}œÓØˆä”2—:‘:˜wÓ'€Gà—‘×#Ñ#€JÜ—O’O G°EÑ:€Mà˜ÓÜÐEÓFÐFØ˜
Ó"ô ØLó
ð 	
ð ˜XÓ%¨°xÓ)?Øˆä�‹=€DØ�<‰<‹>€DØˆ�Jæ˜Ÿ™Ÿ
™
¤s¨7£|°l×6KÑ6KÓ'KÜÐSÓTÐTô —O’O D°Ñ7€MØ˜Ó ô �t—z‘z !‘}Ö%ˆAØ‘'ˆCÜŸOšO¨C¸Ñ>ˆMØ Õ(Ü36°w³<À!Ó3C W¢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  • [        U 5      (       aU  [        U R                  5       SSS9R                  R	                  X5      R
                  R                  U R                  5      n [        U R                  5       5      n[        S[        R                  " U5      5      n[        R                  " U SU 3S9n U $ )zð
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Ì  rz  rg   ÚSrA  )rl   r3   rL  ra   ÚencoderQ  rB  rú  r"   r  Ú
libwritersÚmax_len_string_arrayr€  rI  )rË  r[   rŽ   ÚensuredrK  s        r\   rª  rª  ´  sˆ   € ô  ˆ4‡y�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                ó$  • U R                   n[        R                  " U R                  5       [        S9n [        U 5      (       a¢  [        R                  " [        U 5      5      nSU 3n[        U S   [        5      (       aD  [        U SS9R                  R                  X#SS9nUR                  5       n SU R                  l        O"U R#                  USS9R#                  [        SS9n Uc  S	n[        R$                  " X5        U R'                  U5      $ )
zö
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.
rA  ÚUr   FrE  rÞ  )rŽ   rz  Tr†  )rú  r€  rI  rL  rÞ  rl   r³  r´  r"   r`   Úbytesr3   ra   Údecoder&  ÚflagsÚ	writeablerO  Ú!string_array_replace_from_nan_reprB  )rË  r‹   r[   rŽ   rú  rK  rz  Úsers           r\   rS  rS  Ó  sæ   € ð& �J‰J€EÜ�:Š:�d—j‘j“l¬&Ñ1€Dä
ˆ4‡y�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°Ô?Ø�<‰<˜ÓÐr^   c                ó˜   • [        U[        5      (       d   [        U5      5       e[        U5      (       a  [	        XU5      nU" U 5      n U $ rX   )r`   ra   rô   Ú_need_convertÚ_get_converter)r˜  r‰  r[   rŽ   Úconvs        r\   rƒ  rƒ  ý  sC   € Ü�h¤×$Ñ$Ð4¤d¨8£nÓ4Ð$Ü�X×ÑÜ˜h°&Ó9ˆÙ�f“ˆØ€Mr^   c                óh   ^ ^^• T S:X  a  S $ ST ;   a  U 4S j$ T S:X  a  UU4S j$ [        ST  35      e)Nr=  c                ó,   • [         R                  " U SS9$ )NzM8[ns]rA  ©r€  rI  )rk  s    r\   r”   Ú _get_converter.<locals>.<lambda>  s   € œŸš A¨XÒ6r^   c                ó.   >• [         R                  " U TS9$ )NrA  rÄ  )rk  r«  s    €r\   r”   rÅ  	  s   ø€ œŸš A¨TÒ2r^   r¦  c                ó   >• [        U S TTS9$ )NrG  )rS  )rk  r[   rŽ   s    €€r\   r”   rÅ    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                ó   • U S;   d  SU ;   a  gg)N)r=  r¦  r=  TFrÊ   r
  s    r\   r¿  r¿    s   € ØÐ'Ó'¨<¸4Ó+?ØØr^   c                ó  • [        U[        5      (       d  [        U5      S:  a  [        S5      eUS   S:X  aH  US   S::  a?  US   S:X  a6  [        R
                  " SU 5      nU(       a  UR                  5       S   nSU 3n U $ )	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   rv  rw  zvalues_block_(\d+)Úvalues_)r`   ra   rl   rª   r”  r’  r³   )rc   rx  r  Úgrps       r\   r¾  r¾    s{   € ô �'œ3×Ñ¤3 w£<°!Ó#3ÜÐQÓRÐRàˆq�z�Qƒ˜7 1™:¨Ó+°¸±
¸a³Ü�IŠIÐ+¨TÓ2ˆÞØ—(‘(“*˜Q‘-ˆCØ˜S˜E�?ˆDØ€Kr^   c                ó  • U R                  S5      (       a  SnU$ U R                  S5      (       a  SnU$ U R                  S5      (       a  SnU$ U R                  S5      (       a  SnU$ U R                  S5      (       a  U nU$ U R                  S5      (       a  U nU$ U R                  S	5      (       a  S	nU$ U R                  S
5      (       a  S
nU$ U R                  S5      (       a  SnU$ U S:X  a  SnU$ U S:X  a  SnU$ [        SU  S35      e)z9
Find the "kind" string describing the given dtype name.
)r¦  r¸  r¦  r¬  rÊ  )r  r  r¥  r=  Ú	timedeltar+  rÓ  r  rÞ  ra   zcannot interpret dtype of [rX  )rÀ  rª   )Ú	dtype_strr«  s     r\   r  r  1  s]  € ð ×ÑÐ/×0Ñ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                óØ  • [        U [        5      (       a  U R                  n [        U R                  [        5      (       a  SU R                  R
                   S3nOU R                  R                  nU R                  R                  S;   a&  [        R                  " U R                  S5      5      n O![        U [        5      (       a  U R                  n [        R                  " U 5      n X4$ )zB
Convert the passed data into a storable form and a dtype string.
r#  rX  ÚmMrr  )r`   r8   r  rz  r)   r.  rc   r«  r€  rI  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                  óx   • \ rS rSrSr   S       SS jjr\SS j5       r\SS j5       rSS jrS rS	 r	S
r
g)rÑ  ik  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                ó  • Xl         X l        X0l        X@l        S U l        S U l        S U l        S U l        [        U5      (       Ga\  [        [        5         [        R                  " USS9nUS;   Ga(  [        R                  " U5      nUR                  [        R                   :X  aT  U R                  U R                  pCUc  SnUc  U R                   R"                  n[        R$                  " X45      U   U l        O ['        UR                  R(                  [        R*                  5      (       am  U R                  b!  X R                  :  R-                  5       (       d.  U R                  b,  X R                  :¬  R-                  5       (       a  [        S5      eX l        S S S 5        U R                  cL  U R/                  U5      U l        U R                  b(  U R                  R1                  5       u  U l        U l        g g g ! , (       d  f       Nh= f)NFr   )r¥  Úbooleanr   z3where must have index locations >= start and < stop)ru   rm   r¤   r¥   Ú	conditionr  Útermsra  r%   r   rª   r   r+  r€  rI  rz  Úbool_rC  rA  Ú
issubclassrô   r¥  rN  ÚgenerateÚevaluate)rÔ   ru   rm   r¤   r¥   Úinferreds         r\   rÖ   ÚSelection.__init__w  s�  € ð Œ
ØŒ
ØŒ
ØŒ	ØˆŒØˆŒØˆŒ
ØˆÔä˜×Òäœ*Õ%ÜŸ?š?¨5¸Ñ?�ØÐ5Ô5ÜŸJšJ uÓ-�EØ—{‘{¤b§h¡hÓ.Ø&*§j¡j°$·)±)˜tØ ™=Ø$%˜EØ™<Ø#'§:¡:×#3Ñ#3˜DÜ+-¯9ª9°UÓ+AÀ%Ñ+H˜Õ(Ü# E§K¡K×$4Ñ$4´b·j±j×AÑAØ ŸJ™JÑ2¸Ç
Á
Ñ8J×7OÑ7O×7QÑ7QØ ŸI™IÑ1°uÇ	Á	Ñ7I×6NÑ6N×6PÑ6Pä",Ø Uó#ð ð ,1Ô(÷% &ð( ×ÑÑ#ØŸ™ uÓ-ˆDŒJð �z‰zÑ%Ø.2¯j©j×.AÑ.AÓ.CÑ+�” ¥ð &ð	 $÷) &Õ%ús   ÁEG<Ç<
H
c                ó   • g rX   rÊ   rµ  s     r\   rØ  ÚSelection.generate¤  s   € ØJMr^   c                ó   • g rX   rÊ   rµ  s     r\   rØ  rÝ  §  s   € Ø-0r^   c                ó  • Uc  gU R                   R                  5       n [        XU R                   R                  S9$ ! [         aB  nSR                  UR                  5       5      n[        SU SU S35      n[        U5      UeSnAff = f)z'where can be a : dict,list,tuple,stringN)r¢  r[   rV  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[   Ú	NameErrorrY  r  r   rª   )rÔ   rm   r¹  r~  Úqkeysr&  s         r\   rØ  rÝ  ª  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    > ¾
B
Á=BÂB
c                ó¦  • U R                   bQ  U R                  R                  R                  U R                   R                  5       U R                  U R
                  S9$ U R                  b/  U R                  R                  R                  U R                  5      $ U R                  R                  R                  U R                  U R
                  S9$ )ú
generate the selection
rö  )	rÔ  ru   Ú
read_whererˆ   r¤   r¥   ra  rM  r;  rÚ   s    r\   r¶   ÚSelection.selectÁ  s£   € ð �>‰>Ñ%Ø—:‘:×#Ñ#×.Ñ.Ø—‘×%Ñ%Ó'¨t¯z©zÀÇ	Á	ð /ð ð ð ×ÑÑ)Ø—:‘:×#Ñ#×4Ñ4°T×5EÑ5EÓFÐFØ�z‰z×Ñ×$Ñ$¨4¯:©:¸D¿I¹IÐ$ÐFÐFr^   c                óŽ  • U R                   U R                  p!U R                  R                  nUc  SnO
US:  a  X-  nUc  UnO
US:  a  X#-  nU R                  b=  U R                  R                  R                  U R                  R                  5       XSS9$ U R                  b  U R                  $ [        R                  " X5      $ )rã  r   T)r¤   r¥   r—  )
r¤   r¥   ru   rC  rÔ  Úget_where_listrˆ   ra  r€  rA  )rÔ   r¤   r¥   rC  s       r\   r#  ÚSelection.select_coordsÍ  s»   € ð —j‘j $§)¡)ˆtØ—
‘
× Ñ ˆØ‰=Ø‰EØ�Q‹YØ‰NˆEØ‰<Ø‰DØ�A‹XØ‰MˆDà�>‰>Ñ%Ø—:‘:×#Ñ#×2Ñ2Ø—‘×%Ñ%Ó'¨uÀdð 3ð ð ð ×ÑÑ)Ø×#Ñ#Ð#ä�yŠy˜Ó%Ð%r^   )rÔ  ra  r  r¤   r¥   ru   rÕ  rm   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\   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-   r[  rP   r  r/   r  r-   )rA  r   r  zstr | tzinfo)r˜  znpt.NDArray[np.int64]rA  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   rF  rO   r¦   r  )rË  rß  r[   ra   rŽ   ra   r  rß  )r˜  rß  r‰  ra   r[   ra   rŽ   ra   )r«  ra   r[   ra   rŽ   ra   )r«  ra   r  r+  )rc   ra   rx  zSequence[int]r  ra   )rÎ  ra   r  ra   )rË  rO   )¼r+  Ú
__future__r   Ú
contextlibr   rÌ  rÇ  r   r   rb  r®   r”  Útextwrapr   Útypingr   r	   r
   r   r   r   r   r   rÃ  Únumpyr€  Ú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?   rî  r@   Úpandas.core.indexes.apirA   Úpandas.io.commonrB   Úpandas.io.formats.printingrC   rD   Úcollections.abcrE   rF   rG   rH   ÚtypesrI   rJ   r€   rK   rL   rM   Úpandas._typingrN   rO   rP   rQ   rR   rS   rT   Úpandas.core.internalsrU   r�  rY   r]   rd   re   r,  rp   rq   rr   rs   rÚ  r’  rx   ry   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryr}   r„   r…   rž   r¼   r´   rœ   rF  r=  râ  rì  r^  rl  rn  rÆ  rì  r=  rí  r  rô  rà  rò  rð  rñ  rï  ró  ræ  r  rH  rÿ  r  ré  rª  rS  rƒ  rÀ  r¿  r¾  r  r  rÑ  rÊ   r^   r\   Ú<module>r     sn  ðòõ
 #å Û ÷ó Û 	Û 	Ý ÷	÷ 	ó 	ó ã ÷ñ ÷õ -Ý )Ý %Ý >Ý 4÷õ ÷õ 5÷÷ ÷ó õ 8÷÷ ÷ ñ ÷ñ õ
 5Ý 6ß  Ð  ÷÷õ 1å +÷ö
 ÷ó ÷÷
ñ ÷÷ ñ õ ,ð €ð Ð ôò	ð €€iÓ ô:ð*Ð �Uó ð!Ð ˜ó ð
€�ó ð  g°GÀgÑN€ð ˜˜Ð€	ð€
ˆEó ð€
ˆEó ð ×Ó˜(Õ#Ø
×Ó˜>¨5°*ÈÏÊÒWØ
×ÓØØØØ×*Ó*Ò+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<Î<
O