ó
    wñ:iµÅ ã            
      ó¢  • % 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  SSKrSSKrSSKJr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K2J3r3  SSK4J5r5  SSK6J7r7J8r8J9r9J:r:J;r;J<r<  SSK=J>r>J?r?J@r@JArA  SSKBJCrC  SSKDJErEJFrFJGrGJHrHJIrIJJrJJKrKJLrLJMrMJNrNJOrO  SSKPJQrQJRrRJSrS  SSKTJUrU  SSKVJWs  JXrY  SSKZJ[r[J\r\  SSK]J^r_J`r`  SSKaJbrb  SSKcJdrdJere  SSKfJgrg  SSKhJiriJjrj  \(       a4  SSKkJlrlJmrmJnrn  SSKoJprp  SS KqJrrrJsrsJtrt  SS!KuJvrvJwrwJxrxJyryJzrzJ{r{J|r|J}r}  SS"KcJ~r~  S#rS$r€S% r�S{S& jr‚S' rƒ\[r„S|S( jr…S)r†S*\‡S+'   S,rˆS*\‡S-'   S.r‰S*\‡S/'   S0S0S1S1S2.rŠ\ES/0r‹S3rŒS*\‡S4'   S5r�S*\‡S6'   \GR                  " S75         \GR                  " S8S9\Œ\GR                   S:9  \GR                  " S;S\�\GR"                  " / S<Q5      S:9  SSS5        Sq’S9q“S= r”            S}                             S~S> jjr•         S                 S€S? jjr–S�S@ jr— " SA SB5      r˜ " SC SD5      r™ " SE SF5      rš " SG SH\š5      r› " SI SJ\š5      rœ " SK SL\œ5      r� " SM SN\�5      rž " SO SP5      rŸ " SQ SR\Ÿ5      r  " SS ST\ 5      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« S‚       SƒSi jjr¬S„Sj jr­\ S…       S†Sk jj5       r®\S…S‡Sl jj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¹ " Sy Sz5      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ÚCallableÚFinalÚLiteralÚcastÚoverload)ÚconfigÚ
get_optionÚusing_copy_on_writeÚusing_string_dtype)ÚlibÚwriters)Úis_string_array)Ú	timezones)ÚHAS_PYARROW)Úimport_optional_dependency)Úpatch_pickle)ÚAttributeConflictWarningÚClosedFileErrorÚIncompatibilityWarningÚPerformanceWarningÚPossibleDataLossError)Úcache_readonly)Úfind_stack_level)Úensure_objectÚis_bool_dtypeÚis_complex_dtypeÚis_list_likeÚis_string_dtypeÚneeds_i8_conversion)ÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtypeÚPeriodDtype)Úarray_equivalent)Ú	DataFrameÚDatetimeIndexÚIndexÚ
MultiIndexÚPeriodIndexÚ
RangeIndexÚSeriesÚStringDtypeÚTimedeltaIndexÚconcatÚisna)ÚCategoricalÚDatetimeArrayÚPeriodArray)ÚBaseStringArray)ÚPyTablesExprÚmaybe_expression)ÚarrayÚextract_array)Úensure_index)ÚArrayManagerÚBlockManager)Ústringify_path)ÚadjoinÚpprint_thing)ÚHashableÚIteratorÚSequence)ÚTracebackType)ÚColÚFileÚNode)ÚAnyArrayLikeÚ	ArrayLikeÚAxisIntÚDtypeArgÚFilePathÚSelfÚShapeÚnpt)ÚBlockz0.15.2úUTF-8c                óf   • [        U [        R                  5      (       a  U R                  S5      n U $ )z(if we have bytes, decode them to unicoderU   )Ú
isinstanceÚnpÚbytes_Údecode)Úss    ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/pandas/io/pytables.pyÚ_ensure_decodedr]   ’   s&   € ä�!”R—Y‘Y×ÑØ�H‰H�WÓˆØ€Hó    c                ó   • U c  [         n U $ ©N)Ú_default_encoding©Úencodings    r\   Ú_ensure_encodingrd   ™   s   € àÑÜ$ˆà€Or^   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
)rW   Ústr©Únames    r\   Ú_ensure_strri   ¡   s   € ô �$œ×ÑÜ�4‹yˆØ€Kr^   c                ó  • 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)rW   ÚlistÚtupler<   ÚTermÚlen)Úwhererm   ÚlevelÚterms       r\   Ú_ensure_termru   °   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)Úfry   Útrz   z;
: boolean
    drop ALL nan rows when appending to a table
Ú
dropna_docz~
: format
    default format writing format, if None, then
    put will default to 'fixed' and append will default to 'table'
Ú
format_doczio.hdfÚdropna_tableF)Ú	validatorÚdefault_format)ry   rz   Nc                 óÂ   • [         c=  SS Kn U q [        [        5         U R                  R
                  S:H  qS S S 5        [         $ [         $ ! , (       d  f       [         $ = f)Nr   Ústrict)Ú
_table_modÚ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      n [        U [        5      (       a  [        XXES9 nU" U5        SSS5        gU" U 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Úerrorsrc   )Úappend©Ústorer’   r‘   rc   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“   rc   r‘   ©Úputr•   s    €€€€€€€€€€r\   r™   rš   +  s1   ø€ ˜%Ÿ)™)ØØØØØ%ØØ%ØØØð $ñ 
r^   )ÚmodeÚ	complevelÚcomplibN)rB   rW   rf   ÚHDFStore)Úpath_or_bufr—   r˜   rž   rŸ   r    r”   r�   rŽ   r�   r�   r‘   r’   r“   rc   r{   r–   s    ``    ````````  r\   Úto_hdfr£   
  so   ÿù€ ö$ ÷
õ 
‰÷
õ 
ˆô ! Ó-€KÜ�+œs×#Ñ#ÜØ¨iò
àÙˆeŒH÷
ð 
ñ
 	
ˆ+�÷
õ 
ús   Á	A6Á6
Bc
                ó�  • 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 a HDF file from a DataFrame.
HDFStore : Low-level access to HDF files.

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

Examples
--------
>>> df = pd.DataFrame([[1, 1.0, 'a']], columns=['x', 'y', 'z'])  # doctest: +SKIP
>>> df.to_hdf('./store.h5', 'data')  # doctest: +SKIP
>>> reread = pd.read_hdf('./store.h5')  # doctest: +SKIP
)Úrúr+Úazmode zG is not allowed while performing a read. Allowed modes are r, r+ and a.Nrk   rl   z&The HDFStore must be open for reading.Fz5Support for generic buffers has not been implemented.zFile z does not exist)rž   r“   Tr   z]Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.z?key must be provided when HDF5 file contains multiple datasets.)rr   ÚstartÚstopÚcolumnsÚiteratorÚ	chunksizeÚ
auto_close)Ú
ValueErrorru   rW   r¡   Úis_openÚOSErrorrB   rf   ÚNotImplementedErrorÚosÚpathÚexistsÚ	TypeErrorÚFileNotFoundErrorÚgroupsrq   Ú_is_metadata_ofÚ_v_pathnameÚselectÚLookupErrorr   r†   Úclose)r¢   r—   rž   r“   rr   r¨   r©   rª   r«   r¬   Úkwargsr–   r­   r´   r·   Úcandidate_only_groupÚgroup_to_checks                    r\   Úread_hdfrÀ   B  s÷  € ðl Ð#Ó#ÜØ�D�6ð -ð .ó
ð 	
ð
 ÑÜ˜U°Ñ2ˆä�+œx×(Ñ(Ø×"×"ÜÐBÓCÐCàˆØ‰
ä$ [Ó1ˆÜ˜+¤s×+Ñ+Ü%ØGóð ð	Ü—W‘W—^‘^ KÓ0ˆFö Ü# e¨K¨=¸Ð$HÓIÐIä˜ÐI¨4ÑIÀ&ÑIˆð ˆ
ð%Ø‰;Ø—\‘\“^ˆFÜ�6‹{˜aÓÜ ðDóð ð $*¨!¡9Ð ð #)¨¨£*�Ü& ~Ð7K×LÓ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.Frk   Ú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S8S jrS9S 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S@S jrSAS jrSBSCS jjrSDS jr\SES j5       rSFSGS jjrS7S jr       SH       SIS jjr   SJ     SKS jjr  SL       SMS jjr        SN     SOS  jjr            SP                     SQS! jjr SJS8S" jjr!               SR                     SSS# jjr"   ST     SUS$ jjr#   SJ       SVS% jjr$SWS& jr%SXSYS' jjr&SZS( jr'S[S) jr(       S\           S]S* jjr)S6S+ jr*SDS, jr+S^S- jr,    S_       S`S. jjr-               Sa                     SbS/ jjr.ScS0 jr/SdS1 jr0SeS2 jr1S3r2g)fr¡   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Ú_handlerf   Ú_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__7  sÉ   € ð �vÓÜÐLÓMÐMä+¨HÓ5ˆàÑ 7·.±.×2MÑ2MÓ#MÜØ(¨¯©×)DÑ)DÐ(EÀ]ÐSóð ð ‰?˜yÑ4Ø—n‘n×4Ñ4ˆGä# DÓ)ˆŒ
Ø‰<ØˆDØŒ
ØˆŒÞ'0™)°aˆŒØŒØ%ÔØˆŒØ�	Š	Ñ&�tÐ&˜vÓ&r^   c                ó   • U R                   $ r`   ©rÒ   ©rØ   s    r\   Ú
__fspath__ÚHDFStore.__fspath__X  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.root[  s0   € ð 	×ÑÔØ�|‰|Ñ'Ð'Ð'Ø�|‰|× Ñ Ð r^   c                ó   • U R                   $ r`   rÝ   rÞ   s    r\   ÚfilenameÚHDFStore.filenameb  ó   € à�z‰zÐr^   c                ó$   • U R                  U5      $ r`   )Úget©rØ   r—   s     r\   Ú__getitem__ÚHDFStore.__getitem__f  s   € Ø�x‰x˜‹}Ðr^   c                ó&   • U R                  X5        g r`   rœ   )rØ   r—   r˜   s      r\   Ú__setitem__ÚHDFStore.__setitem__i  s   € Ø�‰�Õr^   c                ó$   • U R                  U5      $ r`   )Úremoverë   s     r\   Ú__delitem__ÚHDFStore.__delitem__l  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Ø   rh   s     r\   Ú__getattr__ÚHDFStore.__getattr__o  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 '/'
Nrk   TF)Úget_noder¹   )rØ   r—   Únoderh   s       r\   Ú__contains__ÚHDFStore.__contains__y  s:   € ð
 �}‰}˜SÓ!ˆØÑØ×#Ñ#ˆDØ˜T ! "˜XÐ&Ó&ØØr^   c                ó4   • [        U R                  5       5      $ r`   )rq   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 $ r`   rÎ   rÞ   s    r\   Ú	__enter__ÚHDFStore.__enter__Œ  s   € Øˆr^   c                ó$   • U R                  5         g r`   )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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df)  # doctest: +SKIP
>>> store.get('data')  # doctest: +SKIP
>>> print(store.keys())  # doctest: +SKIP
['/data1', '/data2']
>>> store.close()  # doctest: +SKIP
ÚpandasÚnativeÚ/ÚTable)Ú	classnamez8`include` should be either 'pandas' or 'native' but is 'rö   )r·   r¹   rË   Ú
walk_nodesr®   )rØ   ÚincludeÚns      r\   ÚkeysÚHDFStore.keys—  s™   € ð< �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      $ r`   )Ú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Ø   r5  s     r\   r4  Ú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)a‹  
Retrieve pandas object stored in file.

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df)  # doctest: +SKIP
>>> store.get('data')  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
NúNo object named ú in the file)r   rý   r÷   Ú_read_group©rØ   r—   rÆ   s      r\   rê   ÚHDFStore.get  sK   € ô* �^ð —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.

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
r9  r:  rk   rl   c                ó&   >• TR                  XUTS9$ )N)r¨   r©   rr   rª   )Úread)Ú_startÚ_stopÚ_whererª   r[   s      €€r\   ÚfuncÚHDFStore.select.<locals>.func†  s   ø€ Ø—6‘6 ¸&È'�6ÐRÐRr^   ©rr   Únrowsr¨   r©   r«   r¬   r­   )rý   r÷   ru   Ú_create_storerÚ
infer_axesÚTableIteratorrG  Ú
get_result)rØ   r—   rr   r¨   r©   rª   r«   r¬   r­   rÆ   rD  Úitr[   s        `      @r\   rº   ÚHDFStore.select<  s—   ù€ ð@ —‘˜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
rk   rl   z&can only read_coordinates with a table©rr   r¨   r©   )ru   Ú
get_storerrW   r  rµ   Úread_coordinates)rØ   r—   rr   r¨   r©   Útbls         r\   Úselect_as_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©   )rP  rW   r  rµ   Úread_column)rØ   r—   rV  r¨   r©   rR  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5      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
rk   rl   r   )r—   rr   rª   r¨   r©   r«   r¬   r­   zkeys must be a list/tuplez keys must have a non-zero lengthNzInvalid table [Ú]zobject [z>] is not a table, and cannot be used in all select as multiplez,all tables must have exactly the same nrows!c           
     ó‚   >• 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©rr   rª   r¨   r©   F)ÚaxisÚverify_integrity)r@  r5   Ú_consolidate)rA  rB  rC  r|   Úobjsr^  rª   Útblss        €€€r\   rD  Ú)HDFStore.select_as_multiple.<locals>.func?  sS   ø€ ñ
 óâ�Að —‘˜V¨W¸F�ÓOÙð ð ô ˜$ T¸EÑB×OÑOÓQÐQùòs   †<rF  T)Úcoordinates)ru   rW   rn   ro   rq   rf   rº   rµ   r®   rP  Ú	itertoolsÚchainÚzipr÷   Úis_tableÚpathnamerG  r  Únon_index_axesÚpoprJ  rK  )rØ   r  rr   Úselectorrª   r¨   r©   r«   r¬   r­   Úkr[   rG  r|   ÚxÚ_tblsrD  rL  r^  rb  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³_ÖE‰DˆAØ‰yÜ °°°1Ð5Ó6Ð6Ø—:—:ÜØ˜qŸz™z˜lð +)ð )óð ð
 ‰}ØŸ™’Ø—‘˜EÕ!Ü Ð!OÓPÐPñ Fñ  !Ó9šD�q¤J¨q´%×$8—™DˆÐ9ñ 16Ó6²¨1× Ñ  Ñ# AÔ&±Ñ6×:Ñ:Ó<ˆ÷		Rô ØØØØØØØØØØ!ñ
ˆð �}‰}¨ˆ}Ð.Ð.ùòg 2ùò* :ùò 7s   Â5G;Å=H ÆH Æ&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)a”  
Store object in HDFStore.

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

    ``'fixed'``
        Fixed format.  Fast writing/reading. Not-appendable, nor searchable.
    ``'table'``
        Table format.  Write as a PyTables Table structure which may perform
        worse but allow more flexible operations like searching / selecting
        subsets of the data.
index : bool, default True
    Write DataFrame index as a column.
append : bool, default False
    This will force Table format, append the input data to the existing.
data_columns : list of columns or True, default None
    List of columns to create as data columns, or True to use all columns.
    See `here
    <https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#query-via-data-columns>`__.
encoding : str, default None
    Provide an encoding for strings.
track_times : bool, default True
    Parameter is propagated to 'create_table' method of 'PyTables'.
    If set to False it enables to have the same h5 files (same hashes)
    independent on creation time.
dropna : bool, default False, optional
    Remove missing values.

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df)  # doctest: +SKIP
Núio.hdf.default_formatry   )r�   rŽ   r”   r    rŸ   r�   r�   r’   rc   r“   Útrack_timesr‘   )r   Ú_validate_formatÚ_write_to_group)rØ   r—   r˜   r�   rŽ   r”   r    rŸ   r�   r�   r’   rc   r“   rt  r‘   s                  r\   r�   ÚHDFStore.putZ  sg   € ðp ‰>ÜÐ 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

rk   rl   Nz5trying to remove a node with a non-None where clause!T©Ú	recursivez7can only remove with where on objects written as tablesrO  )ru   rP  r÷   ÚAssertionErrorÚ	Exceptionr®   rý   Ú	_f_removeÚcomÚall_nonerÆ   rh  Údelete)rØ   r—   rr   r¨   r©   r[   Úerrrþ   s           r\   rò   ÚHDFStore.remove¦  sè   € ô* ˜U°Ñ2ˆð	Ø—‘ Ó$ˆAô. �<Š<˜ d×+Ñ+Ø�G‰G×Ñ¨ÐÒ-ð —:—:Ü ØMóð ð —8‘8 %¸4�8Ð@Ð@øô? ó 	àÜó 	àÜó 	ð Ñ Ü Ø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
value : {Series, DataFrame}
format : 'table' is the default
    Format to use when storing object in HDFStore.  Value can be one of:

    ``'table'``
        Table format. Write as a PyTables Table structure which may perform
        worse but allow more flexible operations like searching / selecting
        subsets of the data.
index : bool, default True
    Write DataFrame index as a column.
append       : bool, default True
    Append the input data to the existing.
data_columns : list of columns, or True, default None
    List of columns to create as indexed data columns for on-disk
    queries, or True to use all columns. By default only the axes
    of the object are indexed. See `here
    <https://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#query-via-data-columns>`__.
min_itemsize : dict of columns that specify minimum str sizes
nan_rep      : str to use as str nan representation
chunksize    : size to chunk the writing
expectedrows : expected TOTAL row size of this table
encoding     : default None, provide an encoding for str
dropna : bool, default False, optional
    Do not write an ALL nan row to the store settable
    by the option 'io.hdf.dropna_table'.

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

Examples
--------
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df1, format='table')  # doctest: +SKIP
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'])
>>> store.append('data', df2)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
   A  B
0  1  2
1  3  4
0  5  6
1  7  8
Nz>columns is not a supported keyword in append, try data_columnszio.hdf.dropna_tablers  rz   )r�   ÚaxesrŽ   r”   r    rŸ   r�   r�   r¬   Úexpectedrowsr‘   r’   rc   r“   )rµ   r   ru  rv  )rØ   r—   r˜   r�   r„  rŽ   r”   r    rŸ   rª   r�   r�   r¬   r…  r‘   r’   rc   r“   s                     r\   r”   ÚHDFStore.appendß  s•   € ðR ÑÜØ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µ   rW   Údictr®   Únextr  ÚsetÚrangeÚndimÚ	_AXES_MAPrø   r%  Úextendr„  Ú
differencer.   ÚsortedÚget_indexerÚtakeÚvaluesÚintersectionÚlocrk  Úreindexr”   )rØ   Údr˜   rl  r’   r„  r‘   r½   r^  Ú
remain_keyÚremain_valuesrm  ÚvÚorderedÚorddÚidxsÚvalid_indexrŽ   r�   ÚdcÚvalr—   Úfiltereds     `                    r\   Úappend_to_multipleÚHDFStore.append_to_multipleE  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Š   rP  rW   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 )a  
Return a list of all the top-level nodes.

Each node returned is not a pandas storage object.

Returns
-------
list
    List of objects.

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df)  # doctest: +SKIP
>>> print(store.groups())  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
[/data (Group) ''
  children := ['axis0' (Array), 'axis1' (Array), 'block0_values' (Array),
  'block0_items' (Array)]]
NÚpandas_typerz   )rŠ   râ   rË   r„   Úwalk_groupsrW   ÚlinkÚLinkÚgetattrÚ_v_attrsrz   r  rÅ   r#  s     r\   r·   ÚHDFStore.groupsÎ  sÍ   € ô, 	Œ	Ø×ÑÔØ�|‰|Ñ'Ð'Ð'ÜÑ%Ð%Ð%ð —\‘\×-Ñ-Ô/ó
â/�ä˜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`.

Examples
--------
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df1, format='table')  # doctest: +SKIP
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'])
>>> store.append('data', df2)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
>>> for group in store.walk():  # doctest: +SKIP
...     print(group)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
Nr³  r  )rŠ   râ   rË   r„   r´  r·  r¸  Ú_v_childrenr›  rW   rÆ   ÚGroupr”   rÅ   r¹   Úrstrip)rØ   rr   r$  r·   ÚleavesÚchildr³  s          r\   ÚwalkÚHDFStore.walkõ  sú   é € ôN 	Œ	Ø×ÑÔØ�|‰|Ñ'Ð'Ð'ÜÑ%Ð%Ð%à—‘×)Ñ)¨%Ö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ÚNoSuchNodeErrorrW   rK   rø   )rØ   r—   rþ   s      r\   rý   ÚHDFStore.get_node1  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 filer9  r:  )rý   r÷   rH  rI  )rØ   r—   rÆ   r[   s       r\   rP  ÚHDFStore.get_storerA  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’   rc   rb   )r¡   rn   r  rW   ro   rP  rò   rº   r  r„  Ú
is_indexedrh   r”   r·  rc   r�   )rØ   r‡   rž   Úpropindexesr  r    rŸ   rÙ   Ú	overwriteÚ	new_storerm  r[   ÚdatarŽ   r§   s                  r\   ÚcopyÚHDFStore.copyK  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5      (       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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
>>> store = pd.HDFStore("store.h5", 'w')  # doctest: +SKIP
>>> store.put('data', df)  # doctest: +SKIP
>>> print(store.info())  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
/data    frame    (shape->[2,2])
r  r  Nzinvalid_HDFStore nodez[invalid_HDFStore node: r[  é   ÚEmptyzFile is CLOSED)rD   rÒ   rø   r¯   r˜  r  rq   rP  r”   ri  r{  r|  rC   )
rØ   r³   ÚoutputÚlkeysr  r›  rm  r[   ÚdetailÚdstrs
             r\   ÚinfoÚHDFStore.info†  s6  € ô& ˜DŸJ™JÓ'ˆÜ˜“J�<˜}¨T¨F°"Ð5ˆà�<�<Ü˜4Ÿ9™9›;Ó'ˆEÜ�5�z‰zØ�Ø�ã�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$C5Ã5EÄ	1E Å E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 [r[  N)Ú_FORMAT_MAPÚlowerr÷   rµ   )rØ   r�   r�  s      r\   ru  ÚHDFStore._validate_format¿  sK   € ð	VÜ  §¡£Ñ0ˆFð ˆøô ó 	VÜÐAÀ&ÀÈÐKÓLÐRUÐUûð	Vús   ‚ ›
:¥5µ:c           	     ó8  • Ub&  [        U[        [        45      (       d  [        S5      e[	        [        UR                  SS5      5      n[	        [        UR                  SS5      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_typerz   Úframe_tableÚgeneric_tablezKcannot create a storer if the object is not existing nor a value are passedÚseriesÚframeÚ_table)rä  rå  z=cannot properly create the storer for: [_STORER_MAP] [group->ú,value->z	,format->©rc   r“   Úseries_tablerŽ   rk   Úappendable_seriesÚappendable_multiseriesÚappendable_frameÚappendable_multiframe)rã  rê  rë  rì  rí  Úwormz<cannot properly create the storer for: [_TABLE_MAP] [group->)rW   r2   r,   rµ   r]   r·  r¸  rŠ   r„   rz   r  ÚSeriesFixedÚ
FrameFixedr÷   rø   ÚnlevelsÚGenericTableÚAppendableSeriesTableÚAppendableMultiSeriesTableÚAppendableFrameTableÚAppendableMultiFrameTableÚ	WORMTable)rØ   rÆ   r�   r˜   rc   r“   ÚptÚttÚ_STORER_MAPÚclsr�  rŽ   Ú
_TABLE_MAPs                r\   rH  ÚHDFStore._create_storerÉ  s\  € ð Ñ¤Z°¼Ä	Ð7J×%KÑ%KÜÐFÓGÐGäœW U§^¡^°]ÀDÓIÓJˆÜœW U§^¡^°\À4ÓHÓIˆð ‰:Ø‰}Ü”	Ü!Ñ-Ð-Ð-Ü˜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   ÄF< Æ1G, Æ<
G)ÇG$Ç$G)Ç,
HÇ6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Úemptyrz   rè  ry   zCan only append to Tablesz0Compression not supported on Fixed format stores)Úobjr„  r”   r    rŸ   rÙ   r�   r¬   r…  r‘   r�   r’   rt  )rª   )r·  Ú_identify_grouprH  rh  Ú	is_existsr®   Úset_object_infoÚwriterW   r  r¯  )rØ   r—   r˜   r�   r„  rŽ   r”   r    rŸ   rÙ   r�   r¬   r…  r‘   r�   r’   rc   r“   rt  rÆ   r[   s                        r\   rv  ÚHDFStore._write_to_group$  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       $ r`   )rH  rI  r@  )rØ   rÆ   r[   s      r\   r;  ÚHDFStore._read_groupb  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.NTry  )rý   rË   Úremove_nodeÚ_create_nodes_and_group)rØ   r—   r”   rÆ   s       r\   r  ÚHDFStore._identify_groupg  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Ë   Úsplitrq   Úendswithrý   Úcreate_group)rØ   r—   Úpathsr³   ÚpÚnew_pathrÆ   s          r\   r
  Ú HDFStore._create_nodes_and_groupy  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ž   rf   rŸ   ú
int | NonerÙ   r0  ÚreturnÚNone©r  rf   ©r—   rf   )r—   rf   r  r  )rh   rf   )r—   rf   r  r0  ©r  Úint)r  rQ   )r  ztype[BaseException] | Noner  zBaseException | Noner  zTracebackType | Noner  r  )r  )r  rf   r  ú	list[str])r  zIterator[str])r  zIterator[tuple[str, list]])r§   )rž   rf   r  r  ©r  r  ©r  r0  ©F)r5  r0  r  r  )NNNNFNF)r—   rf   r«   r0  r¬   r  r­   r0  ©NNN©r—   rf   r¨   r  r©   r  ©NN)r—   rf   rV  rf   r¨   r  r©   r  )NNNNNFNF)r«   r0  r¬   r  r­   r0  )NTFNNNNNNrƒ   TF)r—   rf   r˜   úDataFrame | SeriesrŽ   r0  r”   r0  rŸ   r  r�   úint | dict[str, int] | Noner’   ú Literal[True] | list[str] | Noner“   rf   rt  r0  r‘   r0  r  r  )NNTTNNNNNNNNNNrƒ   )r—   rf   r˜   r"  rŽ   úbool | list[str]r”   r0  rŸ   r  r�   r#  r¬   r  r‘   úbool | Noner’   r$  r“   rf   r  r  )NNF)rŸ  r�  r‘   r0  r  r  )r—   rf   r­  r  r®  ú
str | Noner  r  )r  rn   )r  )rr   rf   r  z*Iterator[tuple[str, list[str], list[str]]])r—   rf   r  zNode | None)r—   rf   r  úGenericFixed | Table)r(  TNNNFT)rž   rf   rË  r0  rŸ   r  rÙ   r0  rÌ  r0  r  r¡   )r�   rf   r  rf   )NNrU   rƒ   )r˜   zDataFrame | Series | Nonerc   rf   r“   rf   r  r(  )NTFNNNNNNFNNNrƒ   T)r—   rf   r˜   r"  rŽ   r%  r”   r0  rŸ   r  r�   r#  r¬   r  r‘   r0  r“   rf   rt  r0  r  r  )rÆ   rK   )r—   rf   r”   r0  r  rK   )r—   rf   r  rK   )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¯   r4  rê   rº   rS  rX  rp  r�   rò   r”   rª  r°  r·   rÀ  rý   rP  rÏ  rØ  râ   ru  rH  rv  r;  r  r
  Ú__static_attributes__rÎ   r^   r\   r¡   r¡   ò  s?  ‡ ñ?ðB ÓØƒJð
 Ø $ØØ ð'ð ð'ð ð	'ð ð'ð 
õ'ôBð ñ!ó ð!ð óó ðôôô ô
ô
ô"ô4ôðà,ðð (ðð (ð	ð
 
ôö(
ôT!ô#ö+JôZð ó)ó ð)ö4ô,+ð@ ØØØØØ $Ø ð[àð[ð ð[ð ð[ð õ[ð@ Ø ØðIàðIð ð	Ið
 õIðH !Øð&Fàð&Fð ð&Fð ð	&Fð
 õ&FðV ØØØØØØ $Ø ðw/ð ðw/ð ðw/ð õw/ðz ØØØØ $Ø48ØØ9=ØØØ ØðJ
àðJ
ð "ðJ
ð
 ðJ
ð ðJ
ð ðJ
ð 2ðJ
ð 7ðJ
ð ðJ
ð ðJ
ð ðJ
ð  
õ!J
öX7Aðz ØØ"&ØØØ $ØØ48ØØ $ØØ"Ø9=ØØð%d
àðd
ð "ðd
ð  ðd
ð ðd
ð ðd
ð 2ðd
ð ðd
ð ðd
ð  7ð!d
ð$ ð%d
ð& 
õ'd
ðV ØØð_Ràð_Rð ð_Rð 
õ_RðH Ø#Øð&Fàð&Fð ð	&Fð
 ð&Fð 
õ&FôP%
öN:>ôxô ð Ø ØØØ $Ø Øð9ð ð9ð ð	9ð ð9ð ð9ð ð9ð 
õ9ôv0ôjEôð Ø+/ØØðYBð )ð	YBð
 ðYBð ðYBð 
õYBð@ Ø"&ØØØ $ØØ48Ø $ØØØØØØØ ð'<*àð<*ð "ð<*ð  ð<*ð ð<*ð ð<*ð 2ð<*ð ð<*ð ð<*ð$ ð%<*ð& ð'<*ð( 
õ)<*ô|ô
÷$r^   r¡   c                  óˆ   • \ 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	)rJ  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[   rD  rr   rh  ÚminrG  r¨   r©   rd  r  r¬   r­   )rØ   r–   r[   rD  rr   rG  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¨   rd  r®   r©   r3  r¬   rD  rq   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 r`   )r­   r–   r¼   rÞ   s    r\   r¼   ÚTableIterator.closeá  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)rr   z$can only read_coordinates on a tablerO  )r¬   rW   r[   r  rµ   rQ  rr   rd  r¨   r©   rD  r¼   )rØ   rd  rr   Úresultss       r\   rK  Ú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¬   rd  rD  rG  r[   r¨   r©   r–   rr   )NNFNF)r–   r¡   r[   r(  r«   r0  r¬   r  r­   r0  r  r  ©r  rF   r  r  )rd  r0  )rù   r)  r*  r+  r,  r-  rÚ   r   r¼   rK  r/  rÎ   r^   r\   rJ  rJ  �  s   ‡ ñð& ÓØƒOØÓð ØØØ $Ø ð(%àð(%ð  ð(%ð ð(%ð ð(%ð ð(%ð 
õ(%ôTô ÷ñ r^   rJ  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ÚIndexColiÿ  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

Tr0  Ú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.)rW   rf   r®   r›  r®  Útyprh   Úcnamer^  ÚposrA  rB  rC  r£  rz   rÂ   ÚmetadataÚset_pos)rØ   rh   r›  r®  rE  rF  r^  rG  rA  rB  rC  r£  rz   rÂ   rH  s                  r\   rÚ   ÚIndexCol.__init__  sª   € ô" ˜$¤×$Ñ$ÜÐ4Ó5Ð5àŒØŒ	ØŒØŒ	Ø—]˜dˆŒ
ØŒ	ØŒØŒ	ØŒØ$ŒØŒØŒ
ØŒ	Ø Œà‰?Ø�L‰L˜Ôô ˜$Ÿ)™)¤S×)Ñ)Ð)Ð)Ü˜$Ÿ*™*¤c×*Ñ*Ð*Ñ*r^   c                ó.   • U R                   R                  $ r`   )rE  ÚitemsizerÞ   s    r\   rL  ÚIndexCol.itemsize<  s   € ð �x‰x× Ñ Ð r^   c                ó    • U R                    S3$ )NÚ_kindrg   rÞ   s    r\   Ú	kind_attrÚIndexCol.kind_attrA  ó   € à—)‘)�˜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)rG  rE  Ú_v_pos)rØ   rG  s     r\   rI  ÚIndexCol.set_posE  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5       VVs/ s H  u  p#U SU 3PM     snn5      $ s  snnf )NÚ,)rh   rF  r^  rG  r®  ú->)
ro   ÚmaprD   rh   rF  r^  rG  r®  Újoinrg  ©rØ   Útempr—   r˜   s       r\   r  ÚIndexCol.__repr__K  s€   € ÜÜ”˜tŸy™y¨$¯*©*°d·i±iÀÇÁÈ4Ï9É9ÐUÓVó
ˆð �x‰xô #&Ò&NÐPTÔ"Uôâ"U‘J�Cð �%�r˜%˜Ó!Ù"Uòó
ð 	
ùóó   Á-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r`   ©r·  ©r‹  r§   ÚotherrØ   s     €€r\   r�  Ú"IndexCol.__eq__.<locals>.<genexpr>X  s/   øé € ð 
â5�ô �D˜!˜TÓ"¤g¨e°Q¸Ó&=Ö=Ú5ùó   ƒ(+)rh   rF  r^  rG  ©r‰  ©rØ   rd  s   ``r\   Ú__eq__ÚIndexCol.__eq__V  s   ù€ äõ 
á5ó
ó 
ð 	
r^   c                ó.   • U R                  U5      (       + $ r`   )ri  rh  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)Úhasattrrz   r·  rŒ  rF  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                  5      n[        XX45      n0 n[        U R                  5      US'   U R                  b  [        U R                  5      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[5        X€R6                  5      n
Xª4$ ! [$         al  n	US:X  a`  ['        S5      (       aP  [)        U	5      R+                  S	5      (       a1  [,        (       a&  U" U4S
[/        S[        R0                  S90UD6n Sn	A	Nˆe Sn	A	f[2         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.
Nrh   rA  ÚMÚi8c                ón   • [         R                  " XR                  SS 5      S9R                  US   5      $ )NrA  )rA  rh   )r0   Úfrom_ordinalsrê   Ú_rename)rn  Úkwdss     r\   r™   Ú"IndexCol.convert.<locals>.<lambda>ˆ  s3   € ¬×(AÒ(AØŸ™ ¨Ó.ñ)ç‰gØ�V‘óð)r^   Úsurrogatepassúfuture.infer_stringúsurrogates not allowedÚdtypeÚpython©ÚstorageÚna_value)rW   rX   Úndarrayrø   r|  ÚfieldsrF  rÏ  r]   r®  Ú_maybe_convertrC  rA  r.   r   Úis_np_dtyper(   r-   ÚUnicodeEncodeErrorr   rf   r  r   r3   Únanr®   Ú_set_tzrB  )rØ   r›  r�   rc   r“   Úval_kindr½   ÚfactoryÚnew_pd_indexr�  Úfinal_pd_indexs              r\   ÚconvertÚIndexCol.converth  s±  € ô ˜&¤"§*¡*×-Ñ-Ð;¬t°F«|Ó;Ð-ð �<‰<×ÑÑ*ð ŸJ™JÑ'×,Ñ,Ó.ˆFä" 4§9¡9Ó-ˆÜ °(ÓCˆØˆÜ(¨¯©Ó9ˆˆv‰à�9‰9Ñ Ü,¨T¯Y©YÓ7ˆF�6‰Nä/4ˆÜ�?Š?˜6Ÿ<™<¨×-Ñ-´Ø�L‰Lœ/÷2
ñ 2
ô $‰GØ�\‰\˜TÓ! f°Ó&6ñ
ˆGð	5Ù" 6Ñ4¨VÑ4ˆLô* ! ¯w©wÓ7ˆØÐ-Ð-øô+ "ó 	à˜/Ó)ÜÐ4×5Ñ5Ü˜“H×%Ñ%Ð&>×?Ñ?ß’Ká&Øñ ä%¨hÄÇÁÑHð ð ñ •ð ûÜó 	5ð ˜ÓØ!%��v‘Ù" 6Ñ4¨VÑ4ŠLð	5ús%   Ä/	E Å
G%ÅA!GÇ GÇ!G%Ç$G%c                ó   • U R                   $ )zreturn the values©r›  rÞ   s    r\   Ú	take_dataÚIndexCol.take_data¨  s   € à�{‰{Ðr^   c                ó.   • U R                   R                  $ r`   )rz   r¸  rÞ   s    r\   ÚattrsÚIndexCol.attrs¬  ó   € à�z‰z×"Ñ"Ð"r^   c                ó.   • U R                   R                  $ r`   ©rz   Ú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˜  rF  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      $ r`   )r  r›  rÞ   s    r\   r   ÚIndexCol.__iter__¾  s   € Ü�D—K‘KÓ Ð r^   c                ó"  • [        U R                  5      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)rL  rG  )r]   r®  rW   r�  rê   rh   rE  rL  rŠ   Ú	StringColrG  )rØ   r�   s     r\   Úmaybe_set_sizeÚIndexCol.maybe_set_sizeÁ  sv   € ô ˜4Ÿ9™9Ó%¨Ó1Ü˜,¬×-Ñ-Ø+×/Ñ/°·	±	Ó:�àÑ'¨D¯H©H×,=Ñ,=ÀÓ,LÜ"›9×.Ñ.¸Ï(É(Ð.ÐS�•ð -MÐ'ð	 2r^   c                ó   • g r`   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 r`   )rz   Ú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                  5      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®  rœ  rL  r®   rF  )rØ   rL  Úcs      r\   r®  ÚIndexCol.validate_colÙ  sˆ   € ô ˜4Ÿ9™9Ó%¨Ó1Ø—‘ˆ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 [ú - r[  )r·  r“  rP  r®  rµ   )rØ   r”   Úexisting_kinds      r\   r¯  ÚIndexCol.validate_attrì  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)rA  rC  ©Ú
stacklevelzinvalid info for [z] for [z], existing_value [z] conflicts with new value [r[  )Ú_info_fieldsr·  Ú
setdefaultrh   rê   rw   ÚwarningsÚwarnr   r    Úsetattrr®   )rØ   rØ  r—   r˜   ÚidxÚexisting_valueÚwss          r\   Úupdate_infoÚIndexCol.update_infoõ  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ê   rh   Ú__dict__Úupdate)rØ   rØ  rÅ  s      r\   Úset_infoÚIndexCol.set_info	  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“  rP  r®  rÞ   s    r\   r²  ÚIndexCol.set_attr	  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Â   rH  Úread_metadatarF  r+   r®   )rØ   r³  Únew_metadataÚcur_metadatas       r\   r°  ÚIndexCol.validate_metadata	  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)rH  r±  rF  )rØ   r³  s     r\   r±  ÚIndexCol.write_metadata/	  s)   € à�=‰=Ñ$Ø×"Ñ" 4§:¡:¨t¯}©}Õ=ð %r^   )r^  rF  rA  rC  r®  rÂ   rH  rh   r£  rG  rz   rE  rB  r›  )NNNNNNNNNNNNN)rh   rf   rF  r'  r  r  r  r  )rG  r  r  r  ©rd  Úobjectr  r0  r  )r›  ú
np.ndarrayrc   rf   r“   rf   r  z3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]r<  r`   r  )r³  ÚAppendableTabler”   r0  r  r  )r”   r0  r  r  )r³  rß  r  r  )$rù   r)  r*  r+  r,  r?  r-  r@  rÀ  rÚ   r.  rL  rP  rI  r  ri  rl  rÊ  rŒ  r�  r“  r˜  rœ  r   r   r§  rª  r´  r®  r¯  rÈ  rÍ  r²  r°  r±  r/  rÎ   r^   r\   r>  r>  ÿ  sq  ‡ ñð !€O�TÓ Ø"Ð�tÓ"Ú/€Lð
 ØØØ ØØØØØØØØØð)+àð)+ð ð)+ð  
õ!)+ðV ó!ó ð!ð ó#ó ð#ô"ô	
ô
ô&ð ó?ó ð?ð>.Ø ð>.Ø58ð>.ØBEð>.à	<ô>.ò@ð ñ#ó ð#ð ñ&ó ð&ð ñ;ó ð;ð ñó ðô!ö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)ÚGenericIndexColi5	  z:an index which is not represented in the data of the tablec                ó   • g©NFrÎ   rÞ   s    r\   rÊ  ÚGenericIndexCol.is_indexed8	  ó   € à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
)rW   rX   r�  rø   r1   rq   )rØ   r›  r�   rc   r“   rŽ   s         r\   rŒ  ÚGenericIndexCol.convert<	  s:   € ô ˜&¤"§*¡*×-Ñ-Ð;¬t°F«|Ó;Ð-äœ3˜v›;Ó'ˆØˆ|Ðr^   c                ó   • g r`   rÎ   rÞ   s    r\   r²  ÚGenericIndexCol.set_attrN	  r¬  r^   rÎ   Nr  )r›  rÞ  rc   rf   r“   rf   r  ztuple[Index, Index]r  )
rù   r)  r*  r+  r,  r.  rÊ  rŒ  r²  r/  rÎ   r^   r\   rá  rá  5	  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$ )#ÚDataColiR	  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
FrB  r£  c                óL   >• [         TU ]  UUUUUUUUU	U
US9  XÀl        XÐl        g )N)rh   r›  r®  rE  rG  rF  rB  r£  rz   rÂ   rH  )ÚsuperrÚ   r|  rÎ  )rØ   rh   r›  r®  rE  rF  rG  rB  r£  rz   rÂ   rH  r|  rÎ  Ú	__class__s                 €r\   rÚ   ÚDataCol.__init__c	  sD   ø€ ô  	‰ÑØØØØØØØØØØØð 	ñ 	
ð Œ
Ø�	r^   c                ó    • U R                    S3$ )NÚ_dtyperg   rÞ   s    r\   Ú
dtype_attrÚDataCol.dtype_attrƒ	  s   € à—)‘)�˜FÐ#Ð#r^   c                ó    • U R                    S3$ )NÚ_metarg   rÞ   s    r\   Ú	meta_attrÚDataCol.meta_attr‡	  rR  r^   c           
     ó  • [        [        [        U R                  U R                  U R
                  U R                  U R                  45      5      nSR                  [        / SQU5       VVs/ s H  u  p#U SU 3PM     snn5      $ s  snnf )NrW  )rh   rF  r|  r®  ÚshaperX  )
ro   rY  rD   rh   rF  r|  r®  rù  rZ  rg  r[  s       r\   r  ÚDataCol.__repr__‹	  sƒ   € ÜÜÜ˜tŸy™y¨$¯*©*°d·j±jÀ$Ç)Á)ÈTÏZÉZÐXóó
ˆð
 �x‰xô #&Ò&QÐSWÔ"Xôâ"X‘J�Cð �%�r˜%˜Ó!Ù"Xòó
ð 	
ùó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r`   rb  rc  s     €€r\   r�  Ú!DataCol.__eq__.<locals>.<genexpr>š	  s/   øé € ð 
â6�ô �D˜!˜TÓ"¤g¨e°Q¸Ó&=Ö=Ú6ùrf  )rh   rF  r|  rG  rg  rh  s   ``r\   ri  Ú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 r`   )r|  Ú_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.
rk   ©r®  rr  Úmr   ©rL  rù  )r|  rL  rù  r”  ÚsizerW   r7   ÚcodesÚget_atom_datarh   r   r„  r(   Úget_atom_datetime64Úget_atom_timedelta64r#   rŠ   Ú
ComplexColr%   Úget_atom_string)rû  r›  r|  rL  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ù  rL  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ÚUIntrI   Ú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_datetime64ä	  ó   € ä‹y×!Ñ!¨¨a©Ð!Ð1Ð1r^   c                ó6   • [        5       R                  US   S9$ r,  r-  r.  s     r\   r  ÚDataCol.get_atom_timedelta64è	  r0  r^   c                ó0   • [        U R                  SS 5      $ )Nrù  )r·  rÎ  rÞ   s    r\   rù  ÚDataCol.shapeì	  s   € ä�t—y‘y '¨4Ó0Ð0r^   c                ó   • U R                   $ rŸ  r  rÞ   s    r\   r   ÚDataCol.cvaluesð	  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“  rP  rn   r›  r®   rò  r|  )rØ   r”   Úexisting_fieldsÚexisting_dtypes       r\   r¯  ÚDataCol.validate_attrõ	  s€   € æÜ% d§j¡j°$·.±.À$ÓGˆOØÑ*¨Ä$ÀtÇ{Á{ÓBSÓ/SÜ Ð!WÓXÐXä$ T§Z¡Z°·±À$ÓGˆNØÑ)¨nÇ
Á
Ó.JÜ ØVóð ð /KÐ)ð r^   c           	     óÞ  • [        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                  5      nU R                  n	U R                  n
U R                  nUc   e[        U5      nUR!                  S5      (       a  [#        X[SS9nGOUS:X  a  [        R$                  " US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R1                  5       nUc  [3        / [        R4                  S9nO`[7        U5      nUR9                  5       (       a@  UU)    nXÿS	:g  ==   UR;                  [<        5      R?                  5       R@                  -  ss'   [B        RD                  " XþU
S
S9nO UR;                  US
S9n[        U5      S:X  a
  [I        XRX4S9nU RJ                  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 N|f = f! [F         a    UR;                  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
Ú
datetime64T©ÚcoerceÚtimedelta64úm8[ns]©r|  r   rÒ  éÿÿÿÿF)Ú
categoriesr£  Úvalidate©rÏ  ÚOr¥  ©r�   rc   r“   )&rW   rX   r�  rø   r|  r‚  rF  rE  r   r  r®  r]   rÂ   rH  r£  rB  rÃ  r‡  Úasarrayr   ÚfromordinalrÝ  r®   ÚfromtimestampÚravelr.   Úfloat64r6   ÚanyÚastyper  ÚcumsumÚ_valuesr7   Ú
from_codesrµ   Ú_unconvert_string_arrayr›  )rØ   r›  r�   rc   r“   Ú	convertedr  r®  rÂ   rH  r£  rB  r|  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ô ˜tŸy™yÓ)ˆØ—=‘=ˆØ—,‘,ˆØ�W‰WˆàÑ%Ð%Ð%ä 
Ó+ˆð ×Ñ˜L×)Ñ)ä 	°dÑ;ŠIà�mÓ#ÜŸ
š
 9°HÑ=ŠIØ�f‹_ðÜŸJšJÙ2;Ó<²)¨Q”T×%Ò% aÖ(±)Ñ<ÄFñ‘	ð �ZÓà!ˆJØ—O‘OÓ%ˆEð
 Ñ!ô
 # 2¬R¯Z©ZÑ8‘
ä˜JÓ'�Ø—8‘8—:‘:Ø!+¨T¨EÑ!2�JØ 2™+Ó&¨$¯+©+´cÓ*:×*AÑ*AÓ*C×*KÑ*KÑKÓ&ä#×.Ò.Ø°gÈñ‰Ið
>Ø%×,Ñ,¨U¸Ð,Ð?�	ô
 ˜4Ó  HÓ,Ü/Ø°XñˆIð �{‰{˜IÐ%Ð%ùòW =øäó ÜŸJšJÙ4=Ó>²I¨q”T×'Ò'¨Ö*²IùÔ>Äfñ’	ðûô@ ó >Ø%×,Ñ,¨S°uÐ,Ð=’	ð>úsB   ÅI; Å( I6Æ
I; È?K É6I; É;KÊ J:
Ê9KËKËK,Ë+K,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“  rP  r›  rö  rÂ   r|  rò  rÞ   s    r\   r²  ÚDataCol.set_attrf
  sZ   € ä�—
‘
˜DŸN™N¨D¯K©KÔ8Ü�—
‘
˜DŸN™N¨D¯I©IÔ6Ø�z‰zÑ%Ð%Ð%Ü�—
‘
˜DŸO™O¨T¯Z©ZÕ8r^   )rÎ  r|  r®  )NNNNNNNNNNNN)rh   rf   rF  r'  r|  zDtypeArg | Noner  r  r  rÜ  )rÎ  rM   r  r  )r›  rM   r  rI   )r®  rf   r  z	type[Col]©r®  rf   r  rI   r  )r›  rÞ  rc   rf   r“   rf   )rù   r)  r*  r+  r,  r?  r@  rÀ  rÚ   r.  rò  rö  r  ri  r  r�  Úclassmethodr  r  r$  r  r  r  rù  r   r¯  rŒ  r²  r/  Ú__classcell__©rî  s   @r\   rë  rë  R	  sj  ø† ñ
ð €OØÐØ˜)Ð$€Lð
 ØØØ ØØØØØØØ!%Øðàðð ðð ðð 
÷ð ð@ ó$ó ð$ð ó#ó ð#ô
ô
ô/òð óó ðð> ñFó ðFð ó,ó ð,ð ó?ó ð?ð ñ2ó ð2ð ñ2ó ð2ð ñ1ó ð1ð ñó ðôôb&÷H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
)ÚDataIndexableColin
  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›  r|  r®   rÞ   s    r\   rª  ÚDataIndexableCol.validate_namess
  s-   € Üœu T§[¡[Ó1×7Ñ7×8Ñ8äÐLÓMÐMð 9r^   c                ó0   • [        5       R                  US9$ )N)rL  r  r  s      r\   r  Ú DataIndexableCol.get_atom_stringx
  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       $ r`   r-  r.  s     r\   r  Ú$DataIndexableCol.get_atom_datetime64€
  ó   € ä‹y×!Ñ!Ó#Ð#r^   c                ó2   • [        5       R                  5       $ r`   r-  r.  s     r\   r  Ú%DataIndexableCol.get_atom_timedelta64„
  rg  r^   rÎ   Nr  rX  )rù   r)  r*  r+  r,  r@  rª  rY  r  r  r  r  r/  rÎ   r^   r\   r]  r]  n
  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\   rk  rk  ‰
  s   † Ü2r^   rk  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.
rf   Úpandas_kindry   Úformat_typeútype[DataFrame | Series]Úobj_typer  r”  r¡   rÉ   Fr0  rh  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 r`   )
rW   r¡   rø   r„   rK   rÉ   rÆ   rd   rc   r“   )rØ   rÉ   rÆ   rc   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   rk   é
   é   )Ú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      5      n [	        S UR                  S5       5       5      n[        U5      S:X  a  US-   nU$ ! [         a    Sn U$ f = f)zcompute and set our versionÚpandas_versionNc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr`   )r  )r‹  rn  s     r\   r�  Ú Fixed.version.<locals>.<genexpr>¹
  s   é € Ð?Ò,> qœC ŸF˜FÒ,>ùs   ‚Ú.rv  )r   )r   r   r   )r]   r·  rÆ   r¸  ro   r  rq   r†   )rØ   rw  s     r\   rw  ÚFixed.version´
  sx   € ô "¤'¨$¯*©*×*=Ñ*=Ð?OÐQUÓ"VÓWˆð	 ÜÑ?¨G¯M©M¸#Ô,>Ó?Ó?ˆGÜ�7‹|˜qÓ Ø! D™.�ð ˆøô ó 	 Ø‰GØˆð	 ús   ¬5A# Á#A3Á2A3c                óV   • [        [        U R                  R                  SS 5      5      $ )Nr³  )r]   r·  rÆ   r¸  rÞ   s    r\   r³  ÚFixed.pandas_typeÀ
  s    € äœw t§z¡z×':Ñ':¸MÈ4ÓPÓQÐQr^   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 myselfrW  Ú[r[  ú12.12z	 (shape->Ú))rI  rù  rW   rn   ro   rZ  rD   r³  )rØ   r[   rn  Ú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)rf   rn  r“  r³  Ú_versionr{  rÞ   s    r\   r  ÚFixed.set_object_infoÏ
  s)   € ä!$ T×%5Ñ%5Ó!6ˆ�
‰
ÔÜ$'¬£Mˆ�
‰
Õ!r^   c                ó2   • [         R                   " U 5      nU$ r`   rE  )rØ   Únew_selfs     r\   rÏ  Ú
Fixed.copyÔ
  s   € Ü—9’9˜T“?ˆØˆr^   c                ó   • U R                   $ r`   )rG  rÞ   s    r\   rù  ÚFixed.shapeØ
  rè   r^   c                ó.   • U R                   R                  $ r`   ©rÆ   r¹   rÞ   s    r\   ri  ÚFixed.pathnameÜ
  rš  r^   c                ó.   • U R                   R                  $ r`   )rÉ   rË   rÞ   s    r\   rË   ÚFixed._handleà
  s   € à�{‰{×"Ñ"Ð"r^   c                ó.   • U R                   R                  $ r`   )rÉ   rÖ   rÞ   s    r\   rÖ   ÚFixed._filtersä
  s   € à�{‰{×#Ñ#Ð#r^   c                ó.   • U R                   R                  $ r`   )rÉ   rÓ   rÞ   s    r\   rÓ   ÚFixed._complevelè
  s   € à�{‰{×%Ñ%Ð%r^   c                ó.   • U R                   R                  $ r`   )rÉ   rÕ   rÞ   s    r\   rÕ   ÚFixed._fletcher32ì
  s   € à�{‰{×&Ñ&Ð&r^   c                ó.   • U R                   R                  $ r`   )rÆ   r¸  rÞ   s    r\   r“  ÚFixed.attrsð
  r•  r^   c                ó   • g©zset our object attributesNrÎ   rÞ   s    r\   Ú	set_attrsÚFixed.set_attrsô
  ó   � 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_existsÿ
  rå  r^   c                ó0   • [        U R                  SS 5      $ )NrG  )r·  r¨  rÞ   s    r\   rG  ÚFixed.nrows  s   € ä�t—}‘} g¨tÓ4Ð4r^   c                ó   • Uc  gg)z%validate against an existing storableNTrÎ   rh  s     r\   rD  ÚFixed.validate  s   € à‰=ØØr^   Nc                ó   • g)ú+are we trying to operate on an old version?NrÎ   )rØ   rr   s     r\   Úvalidate_versionÚFixed.validate_version  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\   rI  ÚFixed.infer_axes  s"   € ð
 �M‰MˆØ‰9ØØ�‰ÔØr^   c                ó   • [        S5      e)Nz>cannot read on an abstract storer: subclasses should implement©r±   ©rØ   rr   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
Try  Nz#cannot delete on an abstract storer)r~  r  rË   r	  rÆ   rµ   )rØ   rr   r¨   r©   s       r\   r€  ÚFixed.delete+  s?   € ô �<Š<˜ d×+Ñ+Ø�L‰L×$Ñ$ T§Z¡Z¸4Ð$Ñ@ØäÐ=Ó>Ð>r^   )rc   r“   rÆ   rÉ   )rU   rƒ   )
rÉ   r¡   rÆ   rK   rc   r'  r“   rf   r  r  r  )r  ztuple[int, int, int]r  r  )r  rm  r  )r  zLiteral[True] | Noner`   ©NNNN©r¨   r  r©   r  r  )r¨   r  r©   r  r  r  )#rù   r)  r*  r+  r,  r-  ro  rh  rÚ   r.  rx  rw  r³  r  r  rÏ  rù  ri  rË   rÖ   rÓ   rÕ   r“  r   r¤  r¨  r  rG  rD  r²  rI  r@  r  r€  r/  rÎ   r^   r\   rm  rm  �
  sö  ‡ ñ
ð ÓØ€K�ÓØ&Ó&Ø
ƒIØÓØ€HˆdÓð  'Øðàðð ðð ð	ð
 ðð 
õð óVó ðVð ó	ó ð	ð ñRó ðRô	 ô2ô
ð ñó ðð ñ&ó ð&ð ñ#ó ð#ð ñ$ó ð$ð ó&ó ð&ð ó'ó ð'ð ñ#ó ð#ô(ô(ð ñó ðð óó ðð ñ5ó ð5ôö:ô	ð ØØ Øð	
ð ð		
ð
 õ	
ô
ð HLð?Ø!+ð?Ø:Dð?à	÷?ð ?r^   rm  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 )&ÚGenericFixedi9  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_aliasA  s   € Ø×#Ñ#×'Ñ'¨¨RÓ0Ð0r^   c                óp   • [        U[        5      (       a  U$ U R                  R                  U[        5      $ r`   )rW   rø   Ú_reverse_index_maprê   r.   )rØ   Úaliass     r\   Ú_alias_to_classÚGenericFixed._alias_to_classD  s-   € Ü�eœT×"Ñ"àˆLØ×&Ñ&×*Ñ*¨5´%Ó8Ð8r^   c           	     ón  • U R                  [        [        USS5      5      5      nU[        :X  a  SS jnUnOU[        :X  a  SS jnUnOUn0 nSU;   a  US   US'   U[
        L a  [        nSU;   aC  [        US   [        5      (       a  US   R                  S5      US'   OUS   US'   U[        L d   eXE4$ )	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)r|  rA  rg   ÚUTC)r8   Ú_simple_newr›  r|  r-   Útz_localizeÚ
tz_convert)r›  rA  rB  ÚdtaÚresults        r\   r{   Ú*GenericFixed._get_index_factory.<locals>.fS  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  rg   )r*   r9   rÓ  r0   )r›  rA  rB  r|  Úparrs        r\   r{   rØ  `  s/   € Ü# DÓ)�Ü"×.Ò.¨vÑC�Ü"×.Ò.¨t¸$Ñ?Ð?r^   rA  rB  zutf-8r!  )
rÍ  r]   r·  r-   r0   r.   r4   rW   ÚbytesrZ   )rØ   r“  rÐ  r{   r‰  r½   s         r\   Ú_get_index_factoryÚGenericFixed._get_index_factoryJ  sÎ   € Ø×*Ñ*ÜœG E¨=¸"Ó=Ó>ó
ˆð œ-Ó'ôð ‰GØœKÓ'ô@ð
 ‰Gà!ˆGàˆØ�U‹?Ø" 6™]ˆF�6‰NØœeÒ#ä(�à�5‹=Ü˜% ™+¤u×-Ñ-à$ T™{×1Ñ1°'Ó:��t’ð  % T™{��t‘Ø¤-Ò/Ð/Ð/àˆÐr^   c                ó<   • 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ª   rr   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Ÿ  )rc   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      5      U l        U R                   H-  n[        X[	        [        U R                  US5      5      5        M/     g)úretrieve our attributesrc   Nr“   rƒ   )rd   r·  r“  rc   r]   r“   rÄ  rÄ  )rØ   r  s     r\   r¤  ÚGenericFixed.get_attrs“  s^   € ä(¬°·±¸ZÈÓ)NÓOˆŒÜ%¤g¨d¯j©j¸(ÀHÓ&MÓNˆŒØ—”ˆAÜ�Dœ_¬W°T·Z±ZÀÀDÓ-IÓJÖKò !r^   c                ó$   • U R                  5         g r`   )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      5      n	[        USS5      n
U
b  [        R                  " X©S9nOXRU nU	(       a.  U	R                  S5      (       a  [        US	S5      n[        X‹S
S9nOU	S:X  a  [        R                  " USS9nU(       a  UR                  $ U$ )z2read an array for the specified node (off of groupr   NÚ
transposedFÚ
value_typerA  rù  r<  rB  Tr=  r?  r@  )r…   r·  rÆ   r¸  rW   ÚVLArrayÚpd_arrayr]   rX   rÿ  rÃ  r‡  rH  ÚT)rØ   r—   r¨   r©   r…   rþ   r“  rë  Úretr|  rù  rB  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�øä#¤G¨E°<ÀÓ$FÓGˆEÜ˜E 7¨DÓ1ˆEàÑ ä—h’h˜uÑ2‘à Ð&�æ˜×)Ñ)¨,×7Ñ7ä˜U D¨$Ó/�Ü˜c¨dÑ3‘à˜-Ó'Ü—j’j ¨HÑ5�æØ—5‘5ˆLàˆJr^   c                óê   • [        [        U R                  U S35      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·  r“  Úread_multi_indexrÆ   Úread_index_noderµ   )rØ   r—   r¨   r©   Úvarietyrþ   rŽ   s          r\   Ú
read_indexÚGenericFixed.read_indexÂ  sƒ   € ô "¤'¨$¯*©*¸¸¸XÐ6FÓ"GÓHˆà�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Ž   )rW   r/   rÄ  r“  Úwrite_multi_indexÚ_convert_indexrc   r“   Úwrite_arrayr›  r·  rÆ   r®  r¸  rh   r-   r0   rÈ  rø   rÐ  r4   rA  rB  Ú_get_tz)rØ   r—   rŽ   rS  rþ   s        r\   Úwrite_indexÚGenericFixed.write_indexÐ  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                  5      5       Hë  u  nu  pEn[        UR                  [        5      (       a  [        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        Mí     g )NÚ_nlevelsz=Saving a MultiIndex with an extension dtype is not supported.Ú_levelÚ_nameÚ_label)rÄ  r“  rñ  Ú	enumeraterg  Úlevelsr  ÚnamesrW   r|  r)   r±   rÿ  rc   r“   r   r›  r·  rÆ   r®  r¸  rh   )rØ   r—   rŽ   ÚiÚlevÚlevel_codesrh   Ú	level_keyÚ
conv_levelrþ   Ú	label_keys              r\   rþ  ÚGenericFixed.write_multi_indexç  s  € Ü�—
‘
˜s˜e 8Ð,¨e¯m©mÔ<ä+4Ü�—‘˜eŸk™k¨5¯;©;Ó7ö,
Ñ'ˆAÑ'� $ô ˜#Ÿ)™)¤^×4Ñ4Ü)Ø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”   rh   rñ  r/   )rØ   r—   r¨   r©   rñ  r
  r  r  r  r  rþ   r  r  r  s                 r\   rø  ÚGenericFixed.read_multi_index   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                  5      nS nSUR                   ;   a*  [        UR                   R                  5      n[        U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}  [!        S	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  rh   )r   rÝ  rè  r|  ry  rz  r{  r}  r~  )r¸  rX   Úprodrù  rÿ  rì  r]   r®  ri   rh   rÜ  Ú_unconvert_indexrc   r“   rÝ  r…  r   rf   r  r   r3   r†  )rØ   rþ   r¨   r©   rÎ  r®  rh   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Ÿ}™}×1Ñ1Ó2ˆØˆà�T—]‘]Ó"Ü˜tŸ}™}×1Ñ1Ó2ˆDÜ" 4Ó(ˆDà—‘ˆØ×1Ñ1°%Ó8‰ˆàÐ%Ó%ÙÜ Ø¨¯©¸t¿{¹{ññô ð	ð
 ñ‰EðÙÜ$Ø¨T¯]©]À4Ç;Á;ññð ñ	�ð. Œ
àˆøô' &ó à—K‘K ?Ó2Ü"Ð#8×9Ñ9Ü˜C›×)Ñ)Ð*B×CÑCß#šá#Ü(Ø °·±ÀtÇ{Á{ññô *°(ÄRÇVÁVÑLð	ð
 !ñ•Eð ûðús   Ä.&E Å
G9Å&BG4Ç3G4Ç4G9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)rk   N)rX   rÿ  r”  rË   Úcreate_arrayrÆ   r·  rf   r|  r¸  rì  rù  )rØ   r—   r˜   Úarrrþ   s        r\   Úwrite_array_emptyÚGenericFixed.write_array_emptyN  sh   € ô �hŠh�t˜eŸj™jÑ(Ó)ˆØ�‰×!Ñ! $§*¡*¨cÔ7Ü�t—z‘z 3Ó'ˆÜ#& u§{¡{Ó#3ˆ�‰Ô Ø#Ÿk™kˆ�‰Õr^   c                ó
  • [        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S nU R                  bE  [        [        5         [        5       R                  R!                  UR                  5      nS S S 5        UbZ  U(       d@  U R                  R#                  U R                  XUR$                  U R                  S9nXHS S & GO‘U R'                  X5        GO~UR                  R(                  [*        R,                  :X  a¡  [.        R0                  " USS9n	U(       a  O4U	S	:X  a  O-[2        X‘U4-  n
[4        R6                  " U
[8        [;        5       S
9  U R                  R=                  U R                  U[        5       R?                  5       5      nURA                  U5        GOµ[.        RB                  " UR                  S5      (       ao  U R                  RE                  U R                  XRG                  S5      5        [I        UR                  5      [K        U R                  U5      RL                  l'        GO [        UR                  [P        5      (       a•  U R                  RE                  U R                  XRR                  5        [K        U R                  U5      n[U        URV                  5      URL                  l+        SUR                  RX                   S3URL                  l'        GOl[.        RB                  " UR                  S5      (       a[  U R                  RE                  U R                  XRG                  S5      5        S[K        U R                  U5      RL                  l'        Oë[        U[Z        5      (       a—  U R                  R=                  U R                  U[        5       R?                  5       5      nURA                  UR]                  5       5        [K        U R                  U5      n[I        UR                  5      URL                  l'        O?U(       a  U R'                  X5        O&U R                  RE                  U R                  X5        U[K        U R                  U5      RL                  l/        g ! , (       d  f       GN= f)NT)Úextract_numpyr   Fz]Cannot store a category dtype in a HDF5 dataset that uses format="fixed". Use format="table".rï  )rÏ   ©Úskipnar¥  r¾  rr  rs  údatetime64[r[  r
  r?  )0r>   rÆ   rË   r	  r  rW   r|  r'   r±   ro  rï  rÖ   r   r®   rŠ   ÚAtomÚ
from_dtypeÚcreate_carrayrù  r  rø   rX   Úobject_r   Úinfer_dtyperx   rÂ  rÃ  r   r    Úcreate_vlarrayÚ
ObjectAtomr”   r„  r  Úviewrf   r·  r¸  rì  r(   Úasi8r  rB  Úunitr:   Úto_numpyrë  )rØ   r—   r   r%  r˜   Úempty_arrayrë  r  ÚcaÚinferred_typerÇ  Úvlarrrþ   s                r\   r   ÚGenericFixed.write_arrayW  s~  € ô ˜c°Ñ6ˆà—*‘*ÓØ�L‰L×$Ñ$ T§Z¡Z°Ô5ð —j‘j A‘oˆØˆ
ä�e—k‘kÔ#3×4Ñ4Ü%ð/óð ö Ü�u˜c×"Ñ"àŸ™�Ø!�
àˆØ�=‰=Ñ$Üœ*Õ%ä“y—~‘~×0Ñ0°·±Ó=�÷ &ð Ñö
 Ø—\‘\×/Ñ/Ø—J‘J ¨5¯;©;ÀÇÁð 0ð �ð ‘1’ð ×&Ñ& sÖ2à�[‰[×Ñ¤§¡Ó+ô  ŸOšO¨E¸%Ñ@ˆMÞØØ (Ó*Øä$¨¸EÐ'BÑB�Ü—’˜bÔ"4ÔAQÓASÒTà—L‘L×/Ñ/°·
±
¸CÄÃ×AUÑAUÓAWÓXˆEØ�L‰L˜Öä�_Š_˜UŸ[™[¨#×.Ñ.Ø�L‰L×%Ñ% d§j¡j°#·z±zÀ$Ó7GÔHÜ;>¸u¿{¹{Ó;KŒG�D—J‘J Ó$×-Ñ-Ö8Ü˜Ÿ™¤_×5Ñ5ð �L‰L×%Ñ%Ø—
‘
˜C§¡ôô ˜4Ÿ:™: sÓ+ˆDô  ' u§x¡xÓ0ˆD�M‰MÔØ)4°U·[±[×5EÑ5EÐ4FÀaÐ'HˆD�M‰MÖ$Ü�_Š_˜UŸ[™[¨#×.Ñ.Ø�L‰L×%Ñ% d§j¡j°#·z±zÀ$Ó7GÔHØ;HŒG�D—J‘J Ó$×-Ñ-Õ8Ü˜œ×/Ñ/Ø—L‘L×/Ñ/°·
±
¸CÄÃ×AUÑAUÓAWÓXˆEØ�L‰L˜Ÿ™Ó)Ô*Ü˜4Ÿ:™: sÓ+ˆDÜ'*¨5¯;©;Ó'7ˆD�M‰MÕ$ÞØ×"Ñ" 3Õ.à�L‰L×%Ñ% d§j¡j°#Ô=à7AŒ�—
‘
˜CÓ ×)Ñ)Õ4÷A &Ö%ús   Â?.S6Ó6
Trè  r  r  r  r!  r   )r—   rf   r¨   r  r©   r  r  r.   )r—   rf   rŽ   r.   r  r  )r—   rf   rŽ   r/   r  r  )r—   rf   r¨   r  r©   r  r  r/   )rþ   rK   r¨   r  r©   r  r  r.   )r—   rf   r˜   rM   r  r  r`   )r—   rf   r   rL   r%  zIndex | Noner  r  )rù   r)  r*  r+  r,  r-   r0   rÇ  r%  rË  rÄ  r-  rÈ  rÍ  rÜ  rß  r.  r  r   r¤  r  rñ  rû  r  rþ  rø  rù  r  r   r/  )r‹  rm  r¢  s   000r\   rÂ  rÂ  9  s]  ‡ Ù$à$ j°+¸xÐH€OØ+:×+@Ñ+@Ô+BÕCÒ+B¡4 1˜!š$Ñ+BÓCÐØ€J�	Óô1ò9ò/ôbð óó ðô(ô
Lôö#ðL FJðFØðFØ)ðFØ8BðFà	õFô5ô.5ð4 FJð
Øð
Ø)ð
Ø8Bð
à	õ
ð0 HLð5Øð5Ø!+ð5Ø:Dð5à	õ5ôn*ð BFð]BØð]BØ)ð]BØ2>ð]Bà	÷]Bð ]Bùôu Ds   ¤B<rÂ  c                  ór   ^ • \ rS rSr% SrS/rS\S'   \S 5       r    S	     S
S jjr	SU 4S jjr
SrU =r$ )rï  i·  rä  rh   rE   c                óp   •  [        U R                  R                  5      4$ ! [        [        4 a     g f = fr`   )rq   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  am  [        S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Ž   rh   rÏ  ry  rz  r{  r}  r~  )rŽ   rh   rÏ  r|  )rß  rû  rñ  r2   rh   r…  r“   r   rf   r  r   r3   rX   r†  )	rØ   rr   rª   r¨   r©   rŽ   r›  r×  r�  s	            r\   r@  ÚSeriesFixed.readÄ  sÍ   € ð 	×Ñ˜7Ô*Ø—‘ ¨u�Ð@ˆØ—‘ °�ÐBˆð	Ü˜F°d·i±iÀeÑLˆFð" ˆøô! "ó 	à—‘˜Ó.ÜÐ4×5Ñ5Ü˜“H×%Ñ%Ð&>×?Ñ?ß’KäØØØŸ™ØÜ%¨hÄÇÁÑHñ”ð ˆð ûð	ús   ³A
 Á

CÁA7CÃ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   rh   r“  )rØ   r   r½   rî  s      €r\   r  ÚSeriesFixed.writeâ  sG   ø€ Ü‰Š�cÑ$˜VÒ$Ø×Ñ˜ #§)¡)Ô,Ø×Ñ˜ 3Ô'ØŸ(™(ˆ�
‰
�r^   rÎ   r¿  ©r¨   r  r©   r  r  r2   r  )rù   r)  r*  r+  rn  rÄ  r-  r.  rù  r@  r  r/  rZ  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$ )ÚBlockManagerFixedié  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ù  rk   )	r”  r“  r=  r·  rÆ   Úblock0_valuesrn   r”   r†   )rØ   r”  r%  r  rþ   rù  s         r\   rù  ÚBlockManagerFixed.shapeî  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                óŒ  • 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S9n[-        5       (       a  UR/                  5       nUR1                  US	S9nU$ [        US   US   S9$ )Nr   r!  r^  rö  r?  r@  rP  rk   F©rª   rŽ   rÏ  Tr   )r€  )r^  rÏ  )rª   rÏ  ©rª   rŽ   )rß  rq  Ú_get_block_manager_axisr“  r”  rû  r”   r=  rñ  r™  r,   rï  r   rW   rX   r�  r   rN  r3   r†  rq   r5   r   rÏ  rž  )rØ   rr   rª   r¨   r©   Úselect_axisr„  r  rA  rB  Úaxr%  ÚdfsÚ	blk_itemsr›  ÚdfÚouts                    r\   r@  ÚBlockManagerFixed.read	  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¨4Ñ0ˆCÜ"×$Ñ$ð —h‘h“j�Ø—+‘+ e°%�+Ð8ˆCØˆJä  a¡°°Q±Ñ8Ð8r^   c                ó  >• [         TU ]  " U40 UD6  [        UR                  [        5      (       a  UR                  S5      n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?  r   z/Columns index has to be unique for fixed formatr^  rP  )r%  r@  )rí  r  rW   Ú_mgrr@   Ú_as_managerÚis_consolidatedÚconsolidater”  r“  r	  r„  Ú	is_uniquer®   r  rq   Úblocksr=  r%  rš  Úmgr_locsr   r›  )	rØ   r   r½   rÎ  r  rH  ÚblkrJ  rî  s	           €r\   r  ÚBlockManagerFixed.write6  s+  ø€ Ü‰Š�cÑ$˜VÒ$ô �c—h‘h¤×-Ñ-Ø—/‘/ 'Ó*ˆCà�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Shape | Noner¿  )r¨   r  r©   r  r  r,   r  )rù   r)  r*  r+  rÄ  r-  r.  rù  r@  r  r/  rZ  r[  s   @r\   r<  r<  é  s`   ø‡ Ø˜)Ð$€JàƒLàóó ðð8 ØØ Øð+9ð ð	+9ð
 ð+9ð 
õ+9÷Z;õ ;r^   r<  c                  ó   • \ rS rSrSr\rSrg)rð  iP  rå  rÎ   N)rù   r)  r*  r+  rn  r,   rq  r/  rÎ   r^   r\   rð  rð  P  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  rS@S! jrSAS" jrSBS# jr SCS$ jr!S9S% jr"S9S& jr#SDS9S' jjr$S9S( jr%\&S) 5       r' SE   SFS* jjr( SG     SHS+ jjr)\*SIS, j5       r+S- r,    SJ   SKS. jjr-\.    SLS/ j5       r/SDSMS0 jjr0        SNS1 jr1 SE   SOS2 jjr2   SE     SPS3 jjr3S4r4U =r5$ )Qr  iU  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_tablerz   rf   ro  rá  rk   zint | list[Hashable]r
  Trn   rH  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_axesrj  Úvalues_axesr’   rØ  r�   )rØ   rÉ   rÆ   rc   r“   r\  rj  r]  r’   rØ  r�   rî  s              €r\   rÚ   ÚTable.__init__u  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ƒ  rW  rÆ  z,dc->[r[  r~  r„  r…  z (typ->z,nrows->z,ncols->z,indexers->[r†  )rI  rq   r’   rZ  rx  rw  rf   r\  rh   r³  ra  rG  Úncols)rØ   Újdcr§  Úverrn  Ú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„  rh   )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º  r[  )r\  rj  r]  r]  úCannot serialize the column [r   z%] because its data contents are not [z] but [ú] object dtypezinvalid combination of [z] on appending data [z] vs current table [)rá  rµ   r·  r	  r®  r®   r›  r|  )rØ   rd  r·  ÚsvÚovr  ÚsaxÚoaxs           r\   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)rW   r
  rn   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®   rW   r,   )rØ   r   r
  Ú	reset_objr�  s        r\   Úvalidate_multiindexÚTable.validate_multiindexÓ  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   )rX   r  r\  r   rù  ©rØ   r  s     r\   Únrows_expectedÚTable.nrows_expectedä  s4   € ô �wŠw°D·O²OÓD²O¨qŸ	™	Ÿ™¨Ô*±OÑDÓEÐEùÒDs   Ÿ"Ac                ó    • SU R                   ;   $ )zhas this table been createdrz   r§  rÞ   s    r\   r  ÚTable.is_existsé  s   € ð ˜$Ÿ*™*Ñ$Ð$r^   c                ó0   • [        U R                  SS 5      $ ©Nrz   ©r·  rÆ   rÞ   s    r\   r¨  ÚTable.storableî  s   € ä�t—z‘z 7¨DÓ1Ð1r^   c                ó   • U R                   $ )z,return the table group (this is my storable))r¨  rÞ   s    r\   rz   ÚTable.tableò  s   € ð �}‰}Ðr^   c                ó.   • U R                   R                  $ r`   )rz   r|  rÞ   s    r\   r|  ÚTable.dtype÷  s   € à�z‰z×ÑÐr^   c                ó.   • U R                   R                  $ r`   r—  rÞ   s    r\   r˜  ÚTable.descriptionû  rš  r^   c                óX   • [         R                  " U R                  U R                  5      $ r`   )re  rf  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r`   )rq   r›  )r‹  r§   s     r\   r�  ÚTable.ncols.<locals>.<genexpr>  s   é € Ð;Ò*: Q”3�q—x‘x—=�=Ò*:ùs   ‚"$)Úsumr]  rÞ   s    r\   rd  ÚTable.ncols  s   € ô Ñ;¨$×*:Ò*:Ó;Ó;Ð;r^   c                ó   • grã  rÎ   rÞ   s    r\   Úis_transposedÚTable.is_transposed  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   )ro   re  rf  rj  r  r\  r^  ©rØ   r§   s     r\   Údata_orientationÚTable.data_orientation  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   rk   N)r\  rF  rj  r]  rh   r’  r’   r�  )	rØ   Ú
axis_namesr§   Úd1r^  r›  Úd2r¢  Úd3s	            r\   Ú
queryablesÚTable.queryables  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^  rF  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]  rF  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’  r<  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  rz   )r�   rc   r“   r�   N)rÉ   r�   rª  r2   rc   r“   r�   )rØ   r—   r›  s      r\   r±  ÚTable.write_metadata2  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_metadataD  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)rf   rá  r“  r¤  r§  rj  r’   r�   rc   r“   r
  rØ  rÞ   s    r\   r   ÚTable.set_attrsJ  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      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æ  rj  Nr’   rØ  r�   rc   r“   rƒ   r
  )r·  r“  rj  r’   rØ  r�   rd   rc   r]   r“   r
  Ú
indexablesr?  r\  r]  r˜  s     r\   r¤  ÚTable.get_attrsW  sù   € ä% d§j¡jÐ2BÀDÓI×OÈRˆÔÜ# D§J¡J°ÀÓE×KÈˆÔÜ˜DŸJ™J¨°Ó5×;¸ˆŒ	Ü˜tŸz™z¨9°dÓ;ˆŒÜ(¬°·±¸ZÈÓ)NÓOˆŒÜ%¤g¨d¯j©j¸(ÀHÓ&MÓNˆŒÜ&-¨d¯j©j¸(ÀDÓ&I×&OÈRˆŒØ&*§o¢oÓK¢o ×9JÕ9JŸ1¡oÑKˆŒØ'+§¢ÓP¢ !×>OÕ>OŸA¡ÑPˆÕùò LùÚPs   Ä	E$Ä!E$Ä=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¾  )	rx  rv   rZ  rw  rf   rÂ  rÃ  r   r    )rØ   rr   rn  rÇ  s       r\   r²  ÚTable.validate_versionc  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)rW   r�  r¡  r®   )rØ   r�   Úqrm  s       r\   Úvalidate_min_itemsizeÚTable.validate_min_itemsizen  s`   € ð
 ÑØÜ˜,¬×-Ñ-Øà�O‰OÓˆÛˆAà�H‹}ÙØ�zÜ Ø0°°ð 4"ð "óð ò r^   c                ób  ^ ^^^^• / 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UUUU U4S 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Ò  rO  )rh   r^  rG  r®  rE  rz   rÂ   rH  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
$ )NrO  rñ  rõ  )
rh   rF  r›  r®  rG  rE  rz   rÂ   rH  r|  )
rW   rf   rë  r]  r·  Ú_maybe_adjust_namerw  r  rÖ  rz   )r  r·  Úklassr  Úadj_namer›  r|  r®  ÚmdrÂ   r   Úbase_posr§  ÚdescrØ   Útable_attrss              €€€€€r\   r{   Ú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˜  rz   r“  r	  r¤  r·  rÖ  r>  r”   r’  r’   rq   r–  r§  )rØ   Ú_indexablesr  r^  rh   r  rÀ  rÂ   rP  r®  Ú	index_colr{   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   rk   zcolumn z/ is not a data_column.
In order to read column z: you must reload the dataframe 
into HDFStore and include z  with the data_columns argument.rÎ   )rI  r„  r@  rF  rW   ro   rn   rz   r·  rŒ  rÊ  rŽ   r­  r®  Úremove_indexrø   rÃ  rµ   r¯  rj  r†   )rØ   rª   r­  r®  r§   Úkwrz   r·  r¢  rŽ   Úcur_optlevelÚcur_kinds               r\   r¯  ÚTable.create_indexÏ  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]]
rO  rG  )
Ú	Selectionrº   r„  rÍ  rØ  rŒ  r�   rc   r“   r”   )	rØ   rr   r¨   r©   Ú	selectionr›  r:  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_objectG  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ø   r/   z"cannot use a multi-index on axis [z] with data_columns Tr›  )
rq   rØ  rê   r®   rn   rW   r�  r’  r–  r  )
rØ   r’   r�   rj  r^  Úaxis_labelsrØ  Úexisting_data_columnsrm  r·  s
             r\   Úvalidate_data_columnsÚTable.validate_data_columnsL  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                ó8  ^• [        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5      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ç  r[  Nr   TFrv  rk   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r`   rÎ   )r‹  rn  r„  s     €r\   r�  Ú%Table._create_axes.<locals>.<genexpr>»  s   øé € Ð6šf˜°©—1‘1šfùs   ƒ	�	rœ  rÓ  r  rø   r_  zIncompatible appended table [z]with existing table [Úvalues_block_)Úexisting_colr�   r�   rc   r“   rª   rB  rÒ  )rh   rF  r›  rE  rG  r®  rB  r£  rÂ   rH  r|  rÎ  )
rÉ   rÆ   rc   r“   r\  rj  r]  r’   rØ  r�   r
  )HrW   r,   rÆ   rÅ   rµ   rø   Ú_get_axis_numberrI  r\  r^  rn   r’   r�   rØ  r”  rq   r®   r‘  r„  rj  r+   rX   r=   r˜  rÁ  r  rù   r”   Ú_get_axis_namerÿ  rc   r“   rI  rÈ  r§  Ú_reindex_axisrÜ  r×  r`  Ú_get_blocks_and_itemsr]  r	  rg  rë  r]  rf   Ú
IndexErrorr÷   Ú_maybe_convert_for_string_atomr›  r½  rw  r  r  r|  rh   r·  r  rB  r'   r£  rH  rC  rK  r3   r   r@  rÉ   ro  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  rJ  Úvaxesr  rV  Úb_itemsr¾  rh   râ  r�  Únew_nameÚdata_convertedr¿  rE  r®  rB  rÂ   rH  r£  rÎ  r  rœ  ÚdcsÚ	new_tables/    `                                             r\   Ú_create_axesÚTable._create_axesr  s8  ø€ ô@ ˜#œ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Ó+A×!BÑˆ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 "Cñ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Ï2Y"ÖZÖ2ZÙ"ZÙ2ZÚZc           
     ó   • [        U R                  [        5      (       a  U R                  S5      n S nU R                  n[	        [
        U5      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5      n[        UR                  5      nU" U5      nU H`  nU R                  U/U	S9R                  n[	        [
        U5      nUR                  UR                  5        UR                  U" U5      5        Mb     U(       a”  [        Xx5       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)Nr?  c                óŠ   • U R                    Vs/ s H'  oR                  R                  UR                  5      PM)     sn$ s  snf r`   )rT  r%  rš  rU  )ÚmgrrV  s     r\   Úget_blk_itemsÚ2Table._get_blocks_and_items.<locals>.get_blk_itemsr  s-   € Ø<?¿JºJÓGºJ°S—I‘I—N‘N 3§<¡<Ö0¹JÑGÐGùÒGs   �.A r   r�  rW  z+cannot match existing table structure for [z] on appending data)rW   rO  r@   rP  r   rA   rn   rT  rq   r.   r—  rž  r–  rg  ro   Útolistr›  rk  r”   rç  r÷   rZ  rD   r®   )rå  ré  rë  r]  r’   rþ  rý  rT  rJ  r^  rÚ  Ú
new_labelsr·  Úbrô  Úby_itemsÚ
new_blocksÚnew_blk_itemsÚear%  r�  ÚitemÚjitemss                          r\   ræ  ÚTable._get_blocks_and_itemsd  s*  € ô �e—j‘j¤,×/Ñ/Ø×%Ñ% gÓ.ˆEò	Hð �j‰jˆÜ”< Ó%ˆÜ" 3§:¡:Ó.ˆÙ!.¨sÓ!3ˆ	äˆ|×Ñð
 !3°1Ñ 5ÑˆDÜ˜{Ó+×6Ñ6´u¸\Ó7JÓKˆJØ—-‘- 
�-Ð6×;Ñ;ˆCÜ”| SÓ)ˆCä˜#Ÿ*™*Ó%ˆFÙ% cÓ*ˆIÛ!�ð —m‘m Q C¨d�mÐ3×8Ñ8�Üœ<¨Ó-�Ø—‘˜cŸj™jÔ)Ø× Ñ ¡¨sÓ!3Ö4ñ "ö ô #& fÔ"8ôâ"8‘J�Aô �g—n‘nÓ&Ó'¨!¨Ò5Ù"8ð ñ ð ')ˆ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*   Å('G1Æ15G7Ç7IÈIÈH,È+IÉI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�  rk   zcannot find the field [z] for filtering!)Ú_AXIS_ORDERSrã  Ú	_get_axisru  Úunionr.   r
  r�  r?   r·  r›  rW   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^   )	rn   ru  rW   r
  Úinsertrj  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'  rz   )rh   r…  r˜  é	   )rŸ   r    rÙ   rÏ   )
Úmaxr  r„  rF  rE  rÓ   rŠ   r)  rÕ   rÖ   )rØ   r    rŸ   rÙ   r…  rŸ  r§   rÏ   s           r\   Úcreate_descriptionÚTable.create_descriptionß  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5      $ )zN
select coordinates (row numbers) from a table; return the
coordinates object
FrO  rk   rö  )r²  rI  rÐ  Úselect_coordsr  r�   rW  r3  r  Úilocr›  r.   )
rØ   rr   r¨   r©   rÑ  Úcoordsr  r  r  rÎ  s
             r\   rQ  ÚTable.read_coordinatesþ  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                óz  • 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   UR"                  5      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  rk   rõ  )rh   rÏ  r|  z] not found in the table)r²  rI  rµ   r„  rh   r@  r®   r·  rz   rŒ  rÍ  rØ  rŒ  r�   rc   r“   r‡  rB  r“  r2   r÷   )
rØ   rV  rr   r¨   r©   r§   r·  Ú
col_valuesÚcvsr|  s
             r\   rW  ÚTable.read_column  s%  € ð 	×ÑÔð �‰× Ñ ØàÑÜÐRÓSÐSð —”ˆAØŸ™ÕØ×*×*Ü$Ø" 6 (ð +3ð 3óð ô ˜DŸJ™JŸO™O¨VÓ4�Ø—
‘
˜4Ÿ9™9Ô%ØŸY™YØ˜D�MØ ŸL™LØ!Ÿ]™]ØŸ;™;ð	 'ð �
ô ˜j¨™m¨Q¯T©TÓ2�Ü §
¡
× 0Ñ 0°V°H¸EÐ2BÀDÓI�Ü˜c°UÀ%ÑHÒHñ' ô* ˜ & Ð)AÐBÓCÐCr^   )	r’   rc   r“   r\  rØ  r
  r�   rj  r]  )Nrƒ   NNNNNN)rÉ   r¡   rÆ   rK   rc   r'  r“   rf   r\  zlist[IndexCol] | Nonerj  z list[tuple[AxisInt, Any]] | Noner]  zlist[DataCol] | Noner’   zlist | NonerØ  zdict | Noner  r  r  )r·  rf   r  r  )r   r"  r  z tuple[DataFrame, list[Hashable]]r  )r  zitertools.chain[IndexCol])r  ztuple[int, ...])r  údict[str, Any])r  r  )r—   rf   r  rf   )r—   rf   r›  rÞ  r  r  r  r`   r  )r®  r'  r  r  r!  )r¨   r  r©   r  r  z9list[tuple[np.ndarray, np.ndarray] | tuple[Index, Index]]©rë  r0  )TNNN)r   r,   rD  r0  )rå  r,   ré  r0  )rÑ  rÐ  r  r,   )rŸ   r  rÙ   r0  r…  r  r  r*  rÀ  )rV  rf   r¨   r  r©   r  )6rù   r)  r*  r+  r,  rn  ro  r-  r
  rh  rÚ   r.  ra  r  rì   rD  ru  r{  r  r  r¨  rz   r|  r˜  r„  rd  r•  r™  r¡  r¤  r§  rª  r±  rÖ  r   r¤  r²  r¹  r   r³  r¯  rÓ  rY  r×  rÜ  rù  Ústaticmethodræ  r  r  rQ  rW  r/  rZ  r[  s   @r\   r  r  U  sT  ø‡ ñð. €KØ€K�ÓØƒOØ#$€FÐ Ó$Ø€HàƒNð  $ØØ,0Ø;?Ø,0Ø$(Ø Øðàðð ðð ð	ð
 ðð *ðð 9ðð *ðð "ðð ðð 
÷ð ð* ó-ó ð-ô
ô$ô%ðN ó-ó ð-ð!Ø%ð!à	)ô!ð" óFó ðFð ó%ó ð%ð ñ2ó ð2ð ñó ðð ñ ó ð ð ñ&ó ð&ð óBó ðBð ó<ó ð<ð óó ðð ó
ó ð
ô"ò<ô
3ô*ô

ô$ô$ô
Qö	ôð* ñIó ðIðX ?CðTØ1;ðTà	õTðn CGð Ø&ð Ø5?ð à	Bõ ðD óó ðò$=ðT ØØØðpð ðpð õ	pðd ðA!ØðA!àóA!ó ðA!öF5ðnð ðð ð	ð
 !ðð 
ôð@ HLðØ!+ðØ:Dõð: Ø Øð+Dàð+Dð ð	+Dð
 ÷+Dó +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÷  iF  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.readO  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÷  F  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ß  id  ú(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 )Nrz   )r„  r   rD  r�   r�   r’   )r    rŸ   rÙ   r…  rt  )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’   rt  rz   r§   Úoptionss                    r\   r  ÚAppendableTable.writej  s
  € ö  ˜$Ÿ.Ÿ.Ø�L‰L×$Ñ$ T§Z¡Z°Ô9ð ×!Ñ!ØØØØ%ØØ%ð "ð 
ˆð —”ˆAØ×ÑÖñ ð ��à×.Ñ.ØØ#Ø%Ø)ð	 /ð ˆGð �O‰OÔà%0ˆG�MÑ"ð �M‰M×&Ò& u§{¡{Ñ>°gÒ>ð !Ÿ:™:ˆ�‰Ôð —”ˆAØ×Ñ˜uÖ-ñ ð 	×Ñ˜ÐÒ2r^   c                ój  • 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5      (       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4U R                   X:U-         R,                  -   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  rk   Nr2  rA  )ÚindexesrT  r›  )r|  r  r  r]  r6   rÎ  r‰  rW   rX   r�  r”   rN  rq   rK  r\  r   r�  Ú	transposeÚrollÚaranger”  r	  rù  Úreshaperÿ  r3  r“  Úwrite_data_chunk)rØ   r¬   r‘   r  rG  Úmasksr§   rT  r
  r<  Únindexesr›  r¢  Úbvaluesr  Ú	new_shapeÚrowsÚchunksÚstart_iÚend_is                       r\   r7  ÚAppendableTable.write_data¥  sl  € ð —
‘
× Ñ ˆØ×#Ñ#ˆð ˆÞØ×%Ô%�ô ˜AŸF™F“|×'Ñ'¨QÐ'Ð/�Ü˜d¤B§J¡J×/Ó/Ø—L‘L §¡¨T¸ Ð!>Ö?ñ &ô ˆu�:‰:Ø˜‘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Ø˜ 4§:¡:¨e¸q±LÑ.AÑ#B×#HÑ#HÑHˆ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+ÊJ0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  )rX   r  rù  rq   rÿ  r|  r  r	  rK  rN  r0  r‰  rz   r”   r4  )rØ   rF  r<  rT  r›  r¢  rG  r  rC  r  rÅ  r
  s               r\   rA  Ú AppendableTable.write_data_chunkà  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5      (       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	$ )	NTry  rö  FrE  rk   r   rB  )rq   rG  rË   r	  rÆ   rz   Úremove_rowsr4  rI  rÐ  r"  r2   Úsort_valuesÚdiffrn   rŽ   r”   r  rk  Úreversedrš  r“  )rØ   rr   r¨   r©   rG  rz   rÑ  r›  Úsorted_seriesÚlnrP  r·   Úpgr$  rF  s                  r\   r€  ÚAppendableTable.delete  sÈ  € à‰=¤ E§
¡
Ø‰} ¡ØŸ
™
�Ø—‘×(Ñ(¨¯©¸tÐ(ÑDð ˆLð	 ‘<ØŸ:™:�DØŸ
™
×.Ñ.°UÐ.ÐF�Ø—
‘
× Ñ Ô"ØˆLð �‰× Ñ Øð —
‘
ˆÜ˜d°ÑBˆ	Ø×(Ñ(Ó*ˆô ˜v¨EÑ2×>Ñ>Ó@ˆÜ�Óˆæà ×%Ñ%Ó'ˆDÜ˜$ a™x™.×.Ñ.Ó/ˆFô �v—;‘;Ø˜�ð �b‰z˜RÓØ—‘˜bÔ!ð �a‰y˜A‹~Ø—‘˜a Ô#ð —‘“ˆBÜ˜fÖ%�Ø$×)Ñ)¬%°«,Ó7�Ø×!Ñ!ØŸz™z¨!™}Ñ-°D¿¹ÀB¹Ñ4HÈ1Ñ4Lð "ñ ð ’ñ &ð �J‰J×ÑÔð ˆ	r^   rÎ   )NFNNNNNNFNNT)
r”   r0  r¬   r  r‘   r0  rt  r0  r  r  r  )r¬   r  r‘   r0  r  r  )
rF  rÞ  r<  úlist[np.ndarray]rT  znpt.NDArray[np.bool_] | Noner›  rV  r  r  r  rÀ  )rù   r)  r*  r+  r,  rá  r  r7  rA  r€  r/  rÎ   r^   r\   rß  rß  d  s®   † Ù2à€Jð ØØØØØØ $ØØØØØ ð93ð ð	93ð ð93ð ð93ð ð93ð 
õ93öv9ðv*àð*ð "ð*ð +ð	*ð
 !ð*ð 
ô*÷X8ñ 8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õ  iG  r3  râ  rì  rv  rp  rq  c                ó:   • U R                   S   R                  S:H  $ )Nr   rk   )r\  r^  rÞ   s    r\   r•  Ú"AppendableFrameTable.is_transposedO  s   € à�‰˜qÑ!×&Ñ&¨!Ñ+Ð+r^   c                ó,   • U(       a  UR                   nU$ )zthese are written transposed)rï  rÖ  s      r\   r×  ÚAppendableFrameTable.get_objectS  s   € ö Ø—%‘%ˆCØˆ
r^   Nc                ó4  • 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HS  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*                  5      (       a   [1        UR"                  UUSS9nO8['        U[        5      (       a  [1        UUUS9nO[0        RB                  " U/UUS9n[E        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MV     [        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 ! [2         aƒ  nU R4                  S:X  am  [7        S5      (       a]  [9        U5      R;                  S5      (       a>  [<        (       a3  [1        UR"                  UUS[?        S[(        R@                  S9S9n S nAGN�e S nAff = f)NrO  r   rk   rø   r/   r  T©Úinplacerh   rg   FrD  ry  rz  r{  r}  r~  )rª   rŽ   rÏ  r|  rE  rF  rõ  )rf   r¥  r�  )rÑ  rª   ).r²  rI  rÓ  rq   rj  rØ  rê   r	  r„  r\  r]  r.   r/   Úfrom_tuplesÚ	set_namesr•  r·  rï  r”  rW   rX   r�  r@  rù  r,   r…  r“   r   rf   r  r   r3   r†  Ú_from_arraysr   r|  r®  Údtypesr‰  rz   r“  rN  r”   r5   rÐ  r  )rØ   rr   rª   r¨   r©   r×  rØ  r  rH  ÚindsÚindrŽ   Úframesr§   Ú
index_valsr   rŒ  r  r›  Úindex_Úcols_rK  r�  rV  r|  rÑ  s                             r\   r@  ÚAppendableFrameTable.readZ  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Ð(<Ó=�ä˜&¤"§*¡*×-Ñ-ðÜ" 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Ü&Ð'<×=Ñ=Ü ›H×-Ñ-Ð.F×GÑGß'šKä&Ø"ŸH™HØ$)Ø"(Ø!&Ü"-°hÌÏÉÑ"Pñžð ûðús+   ÂNÂ3NÈ%N
Î

PÎA7PÐPÐPrÎ   r  r+  r¿  rÀ  )rù   r)  r*  r+  r,  rn  rá  r”  r,   rq  r-  r.  r•  rY  r×  r@  r/  rÎ   r^   r\   rõ  rõ  G  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Á  r3  ré  rê  rv  c                ó   • grã  rÎ   rÞ   s    r\   r•  Ú#AppendableSeriesTable.is_transposedÉ  rå  r^   c                ó   • U$ r`   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Î   )rW   r,   rh   Úto_framerí  r  rª   r   )rØ   r   r’   r½   rh   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   r]  Tr]  r›  )
ru  rW   r
  rn   r  rí  r@  Ú	set_indexr#  rh   )	rØ   rr   rª   r¨   r©   ru  r  r[   rî  s	           €r\   r@  ÚAppendableSeriesTable.readÙ  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+  r`   r  r¿  r:  )rù   r)  r*  r+  r,  rn  rá  r”  r2   rq  r.  r•  rY  r×  r  r@  r/  rZ  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ô  iò  r3  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)rp  r›  r   NrÎ   )
rh   r{  r
  rW   rn   r”   r.   rª   rí  r  )rØ   r   r½   rh   ÚnewobjrŒ  rî  s         €r\   r  Ú AppendableMultiSeriesTable.writeù  sv   ø€ à�x‰x×#˜8ˆØ"×6Ñ6°sÓ;Ñˆ”Ü˜$Ÿ+™+¤t×,Ñ,Ð,Ð,Ü�D—K‘KÓ ˆØ�‰�DÔÜ˜t›ˆŒÜ‰ŠÑ+˜&Ð+ FÓ+r^   ©r
  r  )
rù   r)  r*  r+  r,  rn  rá  r  r/  rZ  r[  s   @r\   rô  rô  ò  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ã  rv  zlist[Hashable]r
  c                ó   • U R                   $ r`   )rn  rÞ   s    r\   r³  ÚGenericTable.pandas_type  s   € à×ÑÐr^   c                óV   • [        U R                  SS 5      =(       d    U R                  $ r„  r…  rÞ   s    r\   r¨  ÚGenericTable.storable  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)	rj  r�   r
  r³  r?  r\  r]  rh   r’   r˜  s     r\   r¤  ÚGenericTable.get_attrs  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   )rh   r^  rz   rÂ   rH  )rh   rG  r›  rE  rz   rÂ   rH  )r˜  rÖ  rá  rz   r	  Ú_v_namesrW   rf   r·  rk  r”   )
rØ   rŸ  rÀ  rÂ   rÆ  rÅ  r  r  r  r§  s
             r\   r³  ÚGenericTable.indexables  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 an generic tabler·  )rØ   r½   s     r\   r  ÚGenericTable.writeC  s   € Ü!Ð"DÓEÐEr^   )r’   r\  r
  r�   rj  r]  Nr  r  )rù   r)  r*  r+  r,  rn  rá  r”  r,   rq  r-  r.  r³  r¨  r¤  r   r³  r  r/  rÎ   r^   r\   rò  rò    sg   ‡ ÙDà€KØ €JØ€DØ€HØÓàó ó ð ð ñ@ó ð@ô?ð ñ ó ð ÷FFr^   rò  c                  óš   ^ • \ 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ö  iG  za frame with a multi-indexrí  rv  z^level_\d+$c                ó   • g)NÚappendable_multirÎ   rÞ   s    r\   ra  Ú*AppendableMultiFrameTable.table_type_shortO  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   rq  rÎ   )	rª   r   r{  r
  rW   rn   r  rí  r  )rØ   r   r’   r½   r  rî  s        €r\   r  ÚAppendableMultiFrameTable.writeT  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 )Nr]  )	rí  r@  ru  r
  rŽ   r`  r  Ú
_re_levelsÚsearch)rØ   rr   rª   r¨   r©   rK  rh   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  r`   r  r¿  rÀ  )rù   r)  r*  r+  r,  rá  r,   rq  r”  ÚreÚcompiler�  r.  ra  r  r@  r/  rZ  r[  s   @r\   rö  rö  G  sm   ø† Ù$à(€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  r?   ÚequalsÚuniquerœ  Úslicer”  r�  ro   )r   r^  r  rd  rH  Úslicers         r\   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)rB  Úzones     r\   r  r  Œ  s   € ä×!Ò! "Ó%€DØ€Kr^   c                ó   • g r`   rÎ   ©r›  rB  r>  s      r\   r‡  r‡  ’  s   € ð r^   c                ó   • g r`   rÎ   rž  s      r\   r‡  r‡  ™  s   € àr^   c                óž  • [        U [        5      (       a.  U R                  b  U R                  U:X  d   eU R                  b  U $ Ubj  [        U [        5      (       a  U R                  nOSnU R	                  5       n [        U5      n[        XS9n U R                  S5      R                  U5      n U $ U(       a  [        R                  " U SS9n U $ )zã
coerce the values to a DatetimeIndex if tz is set
preserve the input shape if possible

Parameters
----------
values : ndarray or Index
tz : str or tzinfo
coerce : if we do not have a passed timezone, coerce to M8[ns] ndarray
Nrg   rÒ  úM8[ns]rA  )
rW   r-   rB  rh   rK  r]   rÔ  rÕ  rX   rH  )r›  rB  r>  rh   s       r\   r‡  r‡  ž  s¹   € ô �&œ-×(Ñ(ð �y‰yÑ  F§I¡I°£OÐ3Ð3Ø�9‰9Ñ ØˆMà	�~Ü�fœm×,Ñ,Ø—;‘;‰DàˆDØ—\‘\“^ˆFä˜RÓ ˆÜ˜vÑ1ˆØ×#Ñ# EÓ*×5Ñ5°bÓ9ˆð €Mö 
Ü—’˜F¨(Ñ3ˆð €Mr^   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ÚiurA  rB  )r›  r®  rE  rA  rB  rC  zMultiIndex not supported here!Fr   r   rA  )rC  r¥  )ÚintegerÚfloating)r›  r®  rE  rC  rÝ  )rW   rf   rh   r   r  r]  r  r   r„  r|  r&   r"   r>  r·  r/   rµ   r'  rX   rH  Ú	toordinalÚint32rŠ   Ú	Time32ColÚ_convert_string_arrayrL  r¦  r�  rÝ  r)  )rh   rŽ   rc   r“   rC  rS  r  r®  r  r0  r›  r¢  rL  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      (       a0  US:X  a  [        U 5      nU$ [        U R                  U5      5      n U$ US:X  a  [        U 5      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<  r?  r   rA  )r¤  Úfloatr0  r¥  rG  rÝ  r   zunrecognized index type )rÃ  r-   r*  r4   rX   rH  r   rI  rÝ  r®   rJ  rR  )rÎ  r®  rc   r“   rŽ   r¢  s         r\   r  r    sd  € ð ‡��|×$Ñ$Ø�<Óä! $Ó'ˆEð( €Lô% " $§)¡)¨D£/Ó2‰Eð$ €Lð# 
�Ó	Ü˜tÓ$ˆð  €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   Á!D Á5 DÂ
D ÄD ÄEÄ$ E
ÅEÅE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.rm  z2]
because its data contents are not [string] but [rn  r›  z|SrE  )rW   r|  r3   r-  rÝ  r   rX   r�  rh   r   r'  rµ   r6   rÏ  rM  rq   rL  r®   r“  rù  r©  r@  r�  r  rê   r  r®  rN  )rh   rD  râ  r�   r�   rc   r“   rª   r  r0  rT  rÎ  r  rœ  Úerror_column_labelrö  rL  Úecis                     r\   rè  rè  "  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Ï  r|  rk   ÚSrA  )rq   r2   rK  rf   ÚencoderP  r@  rù  r!   r  Ú
libwritersÚmax_len_string_arrayrX   rH  )rÎ  rc   r“   ÚensuredrL  s        r\   r©  r©  q  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“   r|  Tr†  )rù  rX   rH  rK  rÝ  rq   r²  r³  r!   rW   rÛ  r2   rf   rZ   r-  ÚflagsÚ	writeablerN  Ú!string_array_replace_from_nan_repr@  )rÎ  r�   rc   r“   rù  rL  r|  Úsers           r\   rR  rR  �  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 $ r`   )rW   rf   rø   Ú_need_convertÚ_get_converter)r›  rˆ  rc   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$ )Nr¡  rA  ©rX   rH  )rn  s    r\   r™   Ú _get_converter.<locals>.<lambda>Ä  s   € œŸš A¨XÒ6r^   c                ó.   >• [         R                  " U TS9$ )NrA  rÁ  )rn  r®  s    €r\   r™   rÂ  Æ  s   ø€ œŸš A¨TÒ2r^   r¥  c                ó   >• [        U S TTS9$ )NrG  )rR  )rn  rc   r“   s    €€r\   r™   rÂ  È  s   ø€ Ô0Ø�t h°vò
r^   zinvalid kind )r®   )r®  rc   r“   s   ```r\   r½  r½  Â  sE   ú€ Øˆ|ÓÙ6Ð6Ø	˜Ó	Ü2Ð2Ø	�Ó	õ
ð 	
ô ˜=¨¨Ð/Ó0Ð0r^   c                ó   • 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 an the
name values_0, adjust the given name if necessary.

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

Returns
-------
str
é   z6Version is incorrect, expected sequence of 3 integers.r   rk   ru  rv  zvalues_block_(\d+)Úvalues_)rW   rf   rq   r®   r’  r�  r·   )rh   rw  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                ó2  • [        U 5      n 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  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 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?  r0  rÒ  r  rÝ  rf   zcannot interpret dtype of [r[  )r]   rÃ  r®   )Ú	dtype_strr®  s     r\   r  r  î  sg  € ô   	Ó*€Ià×ÑÐ/×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"  r[  ÚmMrs  )rW   r7   r  r|  r(   r,  rh   r®  rX   rH  r*  r0   r+  )rÎ  r  s     r\   r   r     s¤   € ô �$œ×$Ñ$Ø�z‰zˆä�$—*‘*œo×.Ñ.à" 4§:¡:§?¡?Ð"3°1Ð5‰
à—Z‘Z—_‘_ˆ
à‡z�z‡�˜$ÓÜ�zŠz˜$Ÿ)™) D›/Ó*‰ô 
�Dœ+×	&Ñ	&Ø�y‰yˆä�:Š:�dÓ€DØÐÐr^   c                  óL   • \ rS rSrSr   S	       S
S jjrS rS rS rSr	g)rÐ  i*  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)rz   rr   r¨   r©   Ú	conditionr  Útermsrd  r$   r   r®   r   r'  rX   rH  r|  Úbool_rG  r?  Ú
issubclassrø   r¤  rM  ÚgenerateÚevaluate)rØ   rz   rr   r¨   r©   Úinferreds         r\   rÚ   ÚSelection.__init__6  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                ó  • 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¡  rc   rW  z-                The passed where expression: a*  
                            contains an invalid variable reference
                            all of the variable references must be a reference to
                            an axis (e.g. 'index' or 'columns'), or a data_column
                            The currently defined references are: z
                )	rz   r¡  r;   rc   Ú	NameErrorrZ  r  r   r®   )rØ   rr   r¸  r�  Úqkeysr+  s         r\   rÖ  ÚSelection.generatec  sš   € à‰=Øà�J‰J×!Ñ!Ó#ˆð	+Ü ¸d¿j¹j×>QÑ>QÑRÐRøÜó 	+ð —H‘H˜QŸV™V›XÓ&ˆEÜð.Ø.3¨Wð 5Cð DIÀ'ð JðóˆCô ˜S“/ sÐ*ûð	+ús    > ¾
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Ò  rz   Ú
read_wherer�   r¨   r©   rd  rQ  r@  rÞ   s    r\   rº   ÚSelection.selectz  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©   rz   rG  rÒ  Úget_where_listr�   rd  rX   r?  )rØ   r¨   r©   rG  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Ò  rd  r  r¨   r©   rz   rÓ  rr   r  )rz   r  r¨   r  r©   r  r  r  )
rù   r)  r*  r+  r,  rÚ   rÖ  rº   r"  r/  rÎ   r^   r\   rÐ  rÐ  *  sS   † ñ	ð Ø Øð+Dàð+Dð ð	+Dð
 ð+Dð 
õ+DòZ+ò.
Gõ&r^   rÐ  )rc   r'  r  rf   )rm   r  )r§   NNFNTNNNNrƒ   rU   )r¢   úFilePath | HDFStorer—   rf   r˜   r"  rž   rf   rŸ   r  r    r'  r”   r0  r�   r'  rŽ   r0  r�   r#  r‘   r&  r’   r$  r“   rf   rc   rf   r  r  )	Nr¥   rƒ   NNNNFN)r¢   rå  rž   rf   r“   rf   rr   zstr | list | Noner¨   r  r©   r  rª   zlist[str] | Noner«   r0  r¬   r  )rÆ   rK   rÇ   rK   r  r0  r`   )r   r,   r^  rN   r  r.   r  r,   )rB  r   r  ústr | tzinfor  )r›  únp.ndarray | IndexrB  ræ  r>  r0  r  r-   )r›  rç  rB  r  r>  r0  r  rÞ  )r›  rç  rB  zstr | tzinfo | Noner>  r0  r  znp.ndarray | DatetimeIndex)
rh   rf   rŽ   r.   rc   rf   r“   rf   r  r>  )r®  rf   rc   rf   r“   rf   r  rç  )rh   rf   rD  rM   rª   r  )rÎ  rÞ  rc   rf   r“   rf   r  rÞ  )r›  rÞ  rˆ  rf   rc   rf   r“   rf   )r®  rf   rc   rf   r“   rf   )r®  rf   r  r0  )rh   rf   rw  zSequence[int]r  rf   )rÌ  rf   r  rf   )rÎ  rM   )»r,  Ú
__future__r   Ú
contextlibr   rÏ  rÃ  r   r   re  r²   r’  Útextwrapr   Útypingr   r	   r
   r   r   r   r   rÂ  ÚnumpyrX   Úpandas._configr   r   r   r   Úpandas._libsr   r   r²  Úpandas._libs.libr   Úpandas._libs.tslibsr   Úpandas.compatr   Úpandas.compat._optionalr   Úpandas.compat.pickle_compatr   Úpandas.errorsr   r   r   r   r   Úpandas.util._decoratorsr   Úpandas.util._exceptionsr    Úpandas.core.dtypes.commonr!   r"   r#   r$   r%   r&   Úpandas.core.dtypes.dtypesr'   r(   r)   r*   Úpandas.core.dtypes.missingr+   r  r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   Úpandas.core.arraysr7   r8   r9   Úpandas.core.arrays.string_r:   Úpandas.core.commonÚcoreÚcommonr~  Ú pandas.core.computation.pytablesr;   r<   Úpandas.core.constructionr=   rî  r>   Úpandas.core.indexes.apir?   Úpandas.core.internalsr@   rA   Úpandas.io.commonrB   Úpandas.io.formats.printingrC   rD   Úcollections.abcrE   rF   rG   ÚtypesrH   r…   rI   rJ   rK   Úpandas._typingrL   rM   rN   rO   rP   rQ   rR   rS   rT   rŠ  ra   r]   rd   ri   rp   ru   rv   r-  rw   rx   rÝ  r•  r}   r~   Úconfig_prefixÚregister_optionÚis_boolÚis_one_of_factoryr„   r‰   rŠ   r£   rÀ   r¸   r¡   rJ  r>  rá  rë  r]  rk  rm  rÂ  rï  r<  rð  r  r÷  rß  rõ  ró  rô  rò  rö  rå  r  r‡  rÿ  r  rè  r©  rR  rƒ  r½  r¼  r½  r  r   rÐ  rÎ   r^   r\   Ú<module>r     s’  ðòõ #å Û ÷ó Û 	Û 	Ý ÷÷ ñ ó ã ÷ó ÷õ -Ý )Ý %Ý >Ý 4÷õ õ 3Ý 4÷÷ ÷ó õ 8÷÷ ÷ ñ ÷ñ õ
 7ß  Ð  ÷÷õ 1÷õ
 ,÷ö
 ÷ñ õ
 $÷ñ ÷	÷ 	ó 	õ ,ð €ð Ð òôò	ð €ô:ð*Ð �Uó ð!Ð ˜ó ð
€�ó ð  g°GÀgÑN€ð ˜˜Ð€	ð€
ˆEó ð€
ˆEó ð ×Ó˜(Õ#Ø
×Ó˜>¨5°*ÈÏÊÒWØ
×ÓØØØØ×*Ó*Ò+CÓDò	÷ $ð €
Ø$)Ð !òð4 Ø ØØØØØ04ØØØ59ØØð5Ø$ð5à	ð5ð ð5ð ð	5ð
 ð5ð ð5ð ð5ð ð5ð ð5ð .ð5ð ð5ð 3ð5ð ð5ð ð5ð  
õ!5ðt 	ØØØ#ØØØ $ØØ ð_Ø$ð_ð ð_ð ð	_ð
 ð_ð ð_ð ð_ð ð_ð ð_ð õ_ôD÷Zñ Z÷z,mñ m÷`s>ñ s>ôl	�hô ô:Y9ˆhô Y9ôx$�wô $ô63Ð.ô 3÷i?ñ i?ôX{B�5ô {Bô|/#�,ô /#ôdd;˜ô d;ôNÐ"ô ô
nDˆEô nDôbH�ô Hô<`�eô `ôFw˜?ô wôt.Ð0ô .ôb,Ð!6ô ,ô$@FÐ'ô @FôF(Ð 4ô (ðX 9=ðØ	ðØ!ðØ+0ðàõô4ð 
àAFðØðØ$0ðØ:>ðàôó 
ðð 
õó 
ðð
 INð$Øð$Ø$7ð$ØAEð$àõ$ôN=Lô@ð:LØ
ðLàðLð ôLô^ð>'Ø
ð'Ø),ð'Ø69ð'àô'ôTô
1ôôô2 ôF÷2r&ò r&÷Ib $Ö#ús   Æ(AN?Î?
O