+
    Ŝi                   0  a  0 t $ R t^ RIHt ^ RIHt ^ RIt^ RIHtH	t	 ^ RI
t
^ RIt^ RIt^ RIHt ^ RIHtHtHtHtHtHtHtHt ^ RIt^ RIt^ RIHtHtHt ^ RIH t H!t" ^ R	I#H$t$ ^ R
I%H&t& ^ RI'H(t( ^ RI)H*t* ^ RI+H,t, ^ RI-H.t.H/t/H0t0H1t1H2t2 ^ RI3H4t4H5t5 ^ RI6H7t7 ^ RI8H9t9H:t:H;t;H<t<H=t=H>t> ^ RI?H@t@HAtAHBtBHCtC ^ RIDHEtE ^ RIFHGtGHHtHHItIHJtJHKtKHLtLHMtMHNtNHOtOHPtPHQtQ ^ RIRHStSHTtTHUtU ^ RIVHWtW ^ RIXHYtY ^ RIZH[u H\t] ^ RI^H_t_H`t` ^ RIaHbtcHdtd ^ RIeHftf ^ RIgHhth ^ RIiHjtjHktk ]'       d7   ^ RIlHmtmHntnHotoHptp ^ RIqHrtrHsts ^ RItHutuHvtvHwtw ^ R IxHytyHztzH{t{H|t|H}t}H~t~Ht ^ R!IHt R"tR#tR$ R% ltR& t]_tR']R(&   R) R* ltR+tR,]R-&   R.tR,]R/&   R0tR,]R1&   R2R3R3R3R4R5R5R5/t]G^ ./tR6tR,]R7&   R8tR,]R9&   ]EP                   ! R:4      ;_uu_ 4        ]EP"                  ! R;R<]]EP$                  R=7       ]EP"                  ! R>R]]EP&                  ! . RO4      R=7       RRR4       RsR?]R@&   R<sRA tRRB RC llt]5! RD4      RRE RF ll4       tRG RH lt]5! RD4       ! RI RJ4      4       t ! RK RL4      t ! RM RN4      t ! RO RP]4      t ! RQ RR]4      t ! RS RT]4      t ! RU RV]4      t ! RW RX4      t ! RY RZ]4      t ! R[ R\]4      t ! R] R^]4      t ! R_ R`]4      t ! Ra Rb]4      t ! Rc Rd]4      t ! Re Rf]4      t ! Rg Rh]4      t ! Ri Rj]4      t ! Rk Rl]4      t ! Rm Rn]4      t ! Ro Rp]4      tRRq Rr lltRs Rt ltRu Rv ltRw Rx ltRy Rz ltR{ R| ltR} R~ ltR R ltR R ltR R ltR R ltR R ltR R ltR R lt ! R R4      tR#   + '       g   i     EL; i)zY
High level interface to PyTables for reading and writing pandas data structures
to disk
)annotations)suppressN)datetzinfo)dedent)TYPE_CHECKINGAnyFinalLiteralSelf	TypeAliascastoverload)config
get_optionusing_string_dtype)libwriters)is_string_array)	timezones)HAS_PYARROW)import_optional_dependency)patch_pickle)AttributeConflictWarningClosedFileErrorIncompatibilityWarningPerformanceWarningPossibleDataLossError)cache_readonly
set_module)find_stack_level)ensure_objectis_bool_dtypeis_complex_dtypeis_list_likeis_string_dtypeneeds_i8_conversion)CategoricalDtypeDatetimeTZDtypeExtensionDtypePeriodDtype)array_equivalent)	DataFrameDatetimeIndexIndex
MultiIndexPeriodIndex
RangeIndexSeriesStringDtypeTimedeltaIndexconcatisna)CategoricalDatetimeArrayPeriodArray)tz_to_dtype)BaseStringArray)PyTablesExprmaybe_expression)arrayextract_array)ensure_index)stringify_path)adjoinpprint_thing)CallableHashableIteratorSequence)
ModuleTypeTracebackType)ColFileNode)AnyArrayLike	ArrayLikeAxisIntDtypeArgFilePathTimeUnitnpt)Blockz0.15.2UTF-8c                    V ^8  d   QhRRRR/# )   encoding
str | Nonereturnstr )formats   "[/Users/mibo/.openclaw/workspace/.venv-ak/lib/python3.14/site-packages/pandas/io/pytables.py__annotate__r_      s      z c     c                    V f   \         p V # N)_default_encodingrX   s   &r^   _ensure_encodingre      s    $Or`   c                H    \        V \        4      '       d   \        V 4      p V # )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
)
isinstancer[   names   &r^   _ensure_strrj      s     $4yKr`   r   Termc                   V ^8  d   QhRR/# )rW   scope_levelintr\   )r]   s   "r^   r_   r_      s     : :S :r`   c                :   V^,           p\        V \        \        34      '       d=   V  Uu. uF/  pVf   K	  \        V4      '       d   \	        W2^,           R7      MTNK1  	  p pM\        V 4      '       d   \	        WR7      p V e   \        V 4      '       d   V # R# u upi )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rm   )rg   listtupler=   rk   len)whererm   levelterms   &&  r^   _ensure_termrw      s     !OE%$'' 
 R1A$1G1GD19-TQ 	 

 
%	 	 U.MSZZ59T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ffixedttablez;
: 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_formatzModuleType | None
_table_modc                     \         fF   ^ R Ip V s \        \        4      ;_uu_ 4        V P                  P
                  R8H  sR R R 4       \         # \         #   + '       g   i     \         # ; i)Nstrict)r   tablesr   AttributeErrorfile_FILE_OPEN_POLICY!_table_file_open_policy_is_strict)r   s    r^   _tablesr      sY     

 n%%--9 . &
 : &%
 s   AA)	c               T    V ^8  d   QhRRRRRRRRRR	R
RRRRRRRRRRRRRRRRRRR/# )rW   path_or_bufFilePath | HDFStorekeyr[   valueDataFrame | Seriesmode	complevel
int | NonecomplibrY   appendboolr]   indexmin_itemsizeint | dict[str, int] | Nonedropnabool | Nonedata_columns Literal[True] | list[str] | NoneerrorsrX   rZ   Noner\   )r]   s   "r^   r_   r_     s     5 5$5	5 5 	5
 5 5 5 5 5 .5 5 35 5 5  
!5r`   c           
     2  aaaaa	a
aaaa V'       d   VVVVVVVV	V
V3
R lpMVVVVVVVV	V
V3
R lp\        V \        4      '       d   V! V 4       R# \        V 4      p \        WWER7      ;_uu_ 4       pV! V4       RRR4       R#   + '       g   i     R# ; i)z+store this object, close it if we opened itc                :   <
 V P                  SS
SSSS	SSSSR 7
      # ))r]   r   r   nan_repr   r   r   rX   )r   storer   r   rX   r   r]   r   r   r   r   r   s   &r^   <lambda>to_hdf.<locals>.<lambda>  s1    %,,%% ' 
r`   c                :   <
 V P                  SS
SSSS	SSSSR 7
      # ))r]   r   r   r   r   r   rX   r   putr   s   &r^   r   r   (  s1    %))%% $ 
r`   )r   r   r   N)rg   HDFStorerA   )r   r   r   r   r   r   r   r]   r   r   r   r   r   r   rX   r{   r   s   &ff&&&&ffffffff  r^   to_hdfr     sr    $ 
 

 
 +x((	+$[1i
 
eH
 
 
 
s   2	BB	pandasc               <    V ^8  d   QhRRRRRRRRRR	R
R	RRRRRR	/	# )rW   r   r   r   r[   r   rt   zstr | list | Nonestartr   stopcolumnszlist[str] | Noneiteratorr   	chunksizer\   )r]   s   "r^   r_   r_   @  so     _ _$_ _ 	_
 _ _ _ _ _ _r`   c
                   VR9  d   \        RV R24      hVe   \        V^R7      p\        V \        4      '       d#   V P                  '       g   \        R4      hT pRpMu\        V 4      p \        V \        4      '       g   \        R4      h \        P                  P                  V 4      pV'       g   \        RV  R	24      h\        V 3R
VRV/V
B pRp Vfn   VP                  4       p\        V4      ^ 8X  d   \        R4      hV^ ,          pVR,           F   p\!        VV4      '       d   K  \        R4      h	  VP"                  pVP%                  VVVVVVV	VR7      #   \        \         3 d    Rp Li ; i  \         \        \&        3 d]    \        T \        4      '       gE   \)        \*        4      ;_uu_ 4        TP-                  4        RRR4       h   + '       g   i     h ; ih i ; i)aN	  
Read from the store, close it if we opened it.

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

.. warning::

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

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

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

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

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

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

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

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 1.0, "a"]], columns=["x", "y", "z"])  # doctest: +SKIP
>>> df.to_hdf("./store.h5", "data")  # doctest: +SKIP
>>> reread = pd.read_hdf("./store.h5")  # doctest: +SKIP
zmode zG is not allowed while performing a read. Allowed modes are r, r+ and a.Nrp   z&The HDFStore must be open for reading.Fz5Support for generic buffers has not been implemented.zFile z does not existr   r   Tz]Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.   NNz?key must be provided when HDF5 file contains multiple datasets.)rt   r   r   r   r   r   
auto_close)rr+a)
ValueErrorrw   rg   r   is_openOSErrorrA   r[   NotImplementedErrorospathexists	TypeErrorFileNotFoundErrorgroupsrs   _is_metadata_of_v_pathnameselectLookupErrorr   r   close)r   r   r   r   rt   r   r   r   r   r   kwargsr   r   r   r   candidate_only_groupgroup_to_checks   &&&&&&&&&&,      r^   read_hdfr   ?  s   n ##D6 - .
 	

 U2+x(("""BCC
$[1+s++%G 	WW^^K0F #eK=$HIII4II&I 
%;\\^F6{a D  $*!9  #)**&~7KLL$;  #- '22C||!  	
 		
A :& 	F	T 	;/ +x00.)) * 	 *) 	s>   E  AE9 .1E9  E65E69AG+<G	G+G&!
G+c               $    V ^8  d   QhRRRRRR/# )rW   grouprL   parent_grouprZ   r   r\   )r]   s   "r^   r_   r_     s!      4 t  r`   c                    V P                   VP                   8:  d   R# T pVP                   ^8  d4   VP                  pW18X  d   VP                  R8X  d   R# VP                  pKD  R# )zDCheck if a given group is a metadata group for a given parent_group.FmetaT)_v_depth	_v_parent_v_name)r   r   currentparents   &&  r^   r   r     sW    ~~...G


Q
""!goo&?##r`   c                     ] tR tRt$ RtR]R&   R]R&   R^R R	 lltR
 R lt]R 4       t	]R R l4       t
R R ltR R ltR R ltR R ltR R ltR R ltR R ltR R ltR R  ltR_R! R" lltR# R$ ltR% R& ltR`R' R( lltR) R* lt]R+ R, l4       tRaR- R. lltR/ R0 ltRbR1 R2 lltRcR3 R4 lltRdR5 R6 lltReR7 R8 lltRfR9 R: llt RcR; R< llt!RgR= R> llt"RhR? R@ llt#RcRA RB llt$RC RD lt%RiRE RF llt&RG RH lt'RI RJ lt(RjRK RL llt)RM RN lt*RO RP lt+RQ RR lt,RkRS RT llt-RlRU RV llt.RW RX lt/RY RZ lt0R[ R\ lt1R]t2R# )mr   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_handler[   _modeNc               (    V ^8  d   QhRRRRRRRR/# )	rW   r   r[   r   r   
fletcher32r   rZ   r   r\   )r]   s   "r^   r_   HDFStore.__annotate__6  s4     ' ' ' 	' ' 
'r`   c                	   R V9   d   \        R4      h\        R4      pVe>   WGP                  P                  9  d$   \        RVP                  P                   R24      hVf   Ve   VP                  P                  p\        V4      V n        Vf   RpW n        RV n        V'       d   TM^ V n	        W@n
        WPn        RV n        V P                  ! RRV/VB  R# )	r]   z-format is not a defined argument for HDFStorer   Nzcomplib only supports z compression.r   r   r\   )r   r   filtersall_complibsdefault_complibrA   _pathr   r   
_complevel_complib_fletcher32_filtersopen)selfr   r   r   r   r   r   r   s   &&&&&&, r^   __init__HDFStore.__init__6  s     vLMM+H57..2M2M#M()D)D(E]S  ?y4nn44G#D)
<D
'0)a%		&t&v&r`   c                   V ^8  d   QhRR/# rW   rZ   r[   r\   )r]   s   "r^   r_   r   W  s      C r`   c                	    V P                   # rb   r   r   s   &r^   
__fspath__HDFStore.__fspath__W  s    zzr`   c                n    V P                  4        V P                  f   Q hV P                  P                  # )zreturn the root node)_check_if_openr   rootr   s   &r^   r   HDFStore.rootZ  s0     	||'''||   r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r   b  s      # r`   c                	    V P                   # rb   r   r   s   &r^   filenameHDFStore.filenamea      zzr`   c                   V ^8  d   QhRR/# rW   r   r[   r\   )r]   s   "r^   r_   r   e  s      s r`   c                	$    V P                  V4      # rb   )getr   r   s   &&r^   __getitem__HDFStore.__getitem__e  s    xx}r`   c                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   r   r\   )r]   s   "r^   r_   r   h  s      s d r`   c                	(    V P                  W4       R # rb   r   )r   r   r   s   &&&r^   __setitem__HDFStore.__setitem__h  s    r`   c                    V ^8  d   QhRRRR/# rW   r   r[   rZ   r   r\   )r]   s   "r^   r_   r   k  s        s  z  r`   c                	$    V P                  V4      # rb   )remover   s   &&r^   __delitem__HDFStore.__delitem__k  s    {{3r`   c                   V ^8  d   QhRR/# )rW   ri   r[   r\   )r]   s   "r^   r_   r   n  s     
 
 
r`   c                     V P                  V4      #   \        \        3 d     Mi ; i\        R\	        T 4      P
                   RT R24      h)z$allow attribute access to get stores'z' object has no attribute ')r   KeyErrorr   r   type__name__)r   ri   s   &&r^   __getattr__HDFStore.__getattr__n  sW    	88D>!/* 		T
##$$?vQG
 	
s    ''c                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   r   r\   )r]   s   "r^   r_   r   x  s     
 
 
 
r`   c                j    V P                  V4      pVe   VP                  pWVR,          39   d   R# R# )z`
check for existence of this key
can match the exact pathname or the pathnm w/o the leading '/'
r   TF)get_noder   )r   r   noderi   s   &&  r^   __contains__HDFStore.__contains__x  s8    
 }}S!##DT"X&&r`   c                   V ^8  d   QhRR/# rW   rZ   rn   r\   )r]   s   "r^   r_   r     s     " " "r`   c                	4    \        V P                  4       4      # rb   )rs   r   r   s   &r^   __len__HDFStore.__len__  s    4;;=!!r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r     s     4 4# 4r`   c                	N    \        V P                  4      p\        V 4       R V R2# )
File path: 
)rC   r   r  )r   pstrs   & r^   __repr__HDFStore.__repr__  s'    DJJ't*]4&33r`   c                   V ^8  d   QhRR/# )rW   rZ   r   r\   )r]   s   "r^   r_   r           4 r`   c                	    V # rb   r\   r   s   &r^   	__enter__HDFStore.__enter__  s    r`   c               (    V ^8  d   QhRRRRRRRR/# )	rW   exc_typeztype[BaseException] | None	exc_valuezBaseException | None	tracebackzTracebackType | NonerZ   r   r\   )r]   s   "r^   r_   r     s2      , ( (	
 
r`   c                	&    V P                  4        R # rb   )r   )r   r-  r.  r/  s   &&&&r^   __exit__HDFStore.__exit__  s     	

r`   c                    V ^8  d   QhRRRR/# )rW   includer[   rZ   	list[str]r\   )r]   s   "r^   r_   r     s     .
 .
C .
y .
r`   c                .   VR8X  d*   V P                  4        Uu. uF  q"P                  NK  	  up# VR8X  dG   V P                  f   Q hV P                  P                  RRR7       Uu. uF  q"P                  NK  	  up# \	        RV R24      hu upi u upi )a  
Return a list of keys corresponding to objects stored in HDFStore.

Parameters
----------

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

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

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df)  # doctest: +SKIP
>>> store.get("data")  # doctest: +SKIP
>>> print(store.keys())  # doctest: +SKIP
['/data1', '/data2']
>>> store.close()  # doctest: +SKIP
r   native/Table)	classnamez8`include` should be either 'pandas' or 'native' but is 'r  )r   r   r   
walk_nodesr   )r   r4  ns   && r^   keysHDFStore.keys  s    H h+/;;=9=aMM=99 <<+++'+||'>'>sg'>'V'V!'V  FwiqQ
 	
 :s   B'Bc                   V ^8  d   QhRR/# )rW   rZ   zIterator[str]r\   )r]   s   "r^   r_   r     s     ! !- !r`   c                	4    \        V P                  4       4      # rb   )iterr=  r   s   &r^   __iter__HDFStore.__iter__  s    DIIK  r`   c                   V ^8  d   QhRR/# )rW   rZ   zIterator[tuple[str, list]]r\   )r]   s   "r^   r_   r     s     # #1 #r`   c              #  \   "   V P                  4        F  pVP                  V3x  K  	  R# 5i)z
iterate on key->group
N)r   r   r   gs   & r^   itemsHDFStore.items  s&      A--"" s   *,c                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   r   r\   )r]   s   "r^   r_   r     s     +J +J +J +Jr`   c                   \        4       pV P                  V8w  d_   V P                  R9   d	   VR9   d   M?VR	9   d9   V P                  '       d'   \        RV P                   RV P                   R24      hWn        V P                  '       d   V P                  4        V P                  '       dQ   V P                  ^ 8  d@   \        4       P                  V P                  V P                  V P                  R7      V n
        \        '       d    V P                  '       d   Rp\        V4      hVP                  ! V P                  V P                  3/ VB V n        R# )
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.
zRe-opening the file [z] with mode [z] will delete the current file!)r   zGCannot open HDF5 file, which is already opened, even in read-only mode.N)r   w)r   r   )rL  )r   r   r   r   r   r   r   Filtersr   r   r   r   r   	open_filer   )r   r   r   r   msgs   &&,  r^   r   HDFStore.open  s    ::zzZ'DK,?<<<//

|= U8 8 
 J <<<JJL???t2#I--4;K;K . DM -,*  S/!''

DJJI&Ir`   c                   V ^8  d   QhRR/# rW   rZ   r   r\   )r]   s   "r^   r_   r     s      t r`   c                d    V P                   e   V P                   P                  4        RV n         R# )z 
Close the PyTables file handle
N)r   r   r   s   &r^   r   HDFStore.close  s%     <<#LL r`   c                   V ^8  d   QhRR/# rW   rZ   r   r\   )r]   s   "r^   r_   r     s     ) ) )r`   c                `    V P                   f   R# \        V P                   P                  4      # )z6
return a boolean indicating whether the file is open
F)r   r   isopenr   s   &r^   r   HDFStore.is_open  s&    
 <<DLL''((r`   c                    V ^8  d   QhRRRR/# )rW   fsyncr   rZ   r   r\   )r]   s   "r^   r_   r     s     4 44 4D 4r`   c                2   V P                   eu   V P                   P                  4        V'       dQ   \        \        4      ;_uu_ 4        \        P
                  ! V P                   P                  4       4       RRR4       R# R# R#   + '       g   i     R# ; i)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   r[  fileno)r   r[  s   &&r^   r]  HDFStore.flush  sc      <<#LL g&&HHT\\0023 '&  $ '&&s   /BB	c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r   $  s     !+ !+s !+r`   c                    \        4       ;_uu_ 4        V P                  V4      pVf   \        RV R24      hV P                  V4      uuRRR4       #   + '       g   i     R# ; i)aL  
Retrieve pandas object stored in file.

Parameters
----------
key : str
    Object to retrieve from file. Raises KeyError if not found.

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df)  # doctest: +SKIP
>>> store.get("data")  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
NNo object named  in the file)r   r  r  _read_groupr   r   r   s   && r^   r   HDFStore.get$  sO    6 ^^ MM#&E}!1#lCDD##E* ^^^s   5AA$	c               (    V ^8  d   QhRRRRRRRR/# )rW   r   r[   r   r   r   r   r   r\   )r]   s   "r^   r_   r   G  s8     a aa a a ar`   c	                  aa V P                  V4      p	V	f   \        RV R24      h\        V^R7      pV P                  V	4      oSP	                  4        VV3R lp
\        V SV
VSP                  VVVVVR7
      pVP                  4       # )a  
Retrieve pandas object stored in file, optionally based on where criteria.

.. warning::

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

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

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

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df)  # doctest: +SKIP
>>> store.get("data")  # doctest: +SKIP
>>> print(store.keys())  # doctest: +SKIP
['/data1', '/data2']
>>> store.select("/data1")  # doctest: +SKIP
   A  B
0  1  2
1  3  4
>>> store.select("/data1", where="columns == A")  # doctest: +SKIP
   A
0  1
1  3
>>> store.close()  # doctest: +SKIP
rb  rc  rp   c                ,   < SP                  WVSR 7      # ))r   r   rt   r   )read)_start_stop_wherer   ss   &&&r^   funcHDFStore.select.<locals>.func  s    66&'6RRr`   rt   nrowsr   r   r   r   r   )r  r  rw   _create_storer
infer_axesTableIteratorrr  
get_result)r   r   rt   r   r   r   r   r   r   r   ro  itrn  s   &&&&&f&&&   @r^   r   HDFStore.selectG  s    L c"=-cU,?@@ U2&		S ''!
 }}r`   c               $    V ^8  d   QhRRRRRR/# rW   r   r[   r   r   r   r\   )r]   s   "r^   r_   r     s-     I II 	I
 Ir`   c                    \        V^R7      pV P                  V4      p\        V\        4      '       g   \	        R4      hVP                  W#VR7      # )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
rp   z&can only read_coordinates with a tablert   r   r   )rw   
get_storerrg   r9  r   read_coordinates)r   r   rt   r   r   tbls   &&&&& r^   select_as_coordinatesHDFStore.select_as_coordinates  sM    4 U2ooc"#u%%DEE##%4#HHr`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r   r[   columnr   r   r   r\   )r]   s   "r^   r_   r     s8     &F &F&F &F 	&F
 &Fr`   c                    V P                  V4      p\        V\        4      '       g   \        R4      hVP	                  W#VR7      # )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)r  r   r   )r}  rg   r9  r   read_column)r   r   r  r   r   r  s   &&&&& r^   select_columnHDFStore.select_column  s?    F ooc"#u%%?@@fEEr`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r   r   r   r   r\   )r]   s   "r^   r_   r     s/     w/ w/ w/ w/ w/r`   c
                `  aaa \        V^R7      p\        V\        \        34      '       d   \	        V4      ^8X  d
   V^ ,          p\        V\
        4      '       d   V P                  VVSVVVVV	R7      # \        V\        \        34      '       g   \        R4      h\	        V4      '       g   \        R4      hVf
   V^ ,          pV U
u. uF  qP                  V
4      NK  	  up
oV P                  V4      pRp\        P                  ! W3.\        SVRR7      4       Fq  w  rVf   \        RV
 R	24      hVP                  '       g   \        R
VP                   R24      hVf   VP                   pKU  VP                   V8w  g   Kh  \        R4      h	  S Uu. uF  p\        V\"        4      '       g   K  VNK  	  ppV Uu0 uF  qP$                  ^ ,          ^ ,          kK  	  upP'                  4       oVVV3R lp\)        V VVVVVVVVV	R7
      pVP+                  RR7      # u up
i u upi u upi )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
rp   )r   rt   r   r   r   r   r   r   zkeys must be a list/tuplez keys must have a non-zero lengthNTr   zInvalid table []zobject [z>] is not a table, and cannot be used in all select as multiplez,all tables must have exactly the same nrows!c           
        < S Uu. uF  pVP                  VSWR 7      NK  	  pp\        VSRR7      P                  4       # u upi )rt   r   r   r   F)axisverify_integrity)rj  r5   _consolidate)rk  rl  rm  r}   objsr  r   tblss   &&&  r^   ro  )HDFStore.select_as_multiple.<locals>.funcP  sS    
 A VWFO   $TEBOOQQs   Arq  )coordinates)rw   rg   rq   rr   rs   r[   r   r   r   r}  	itertoolschainzipr  is_tablepathnamerr  r9  non_index_axespopru  rv  )r   r=  rt   selectorr   r   r   r   r   r   krn  rr  r}   x_tblsro  rw  r  r  s   &&&&f&&&&&        @@r^   select_as_multipleHDFStore.select_as_multiple  s   V U2dT5M**s4yA~7DdC  ;;!#%  	 	 $u..7884yy?@@AwH -11Dq"D1OOH% OOa]OStD5QRDAy1566:::qzzl +) ) 
 }E! !OPP S  !9DqJq%$8D9 1661  #A&&6::<		R !
 }}}..g 2* : 7s   	H!H&3H&?"H+c               D    V ^8  d   QhRRRRRRRRRR	R
RRRRRRRRRRR/# )rW   r   r[   r   r   r   r   r   r   r   r   r   r   r   r   track_timesr   rZ   r   r\   )r]   s   "r^   r_   r   k  s     f
 f
f
 "f

 f
 f
 f
 2f
 7f
 f
 f
 f
  
!f
r`   c                    Vf   \        R4      ;'       g    RpV P                  V4      pV P                  VVVVVVVVV	V
VVVVR7       R# )ad
  
Store object in HDFStore.

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

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

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df)  # doctest: +SKIP
Nio.hdf.default_formatr|   )r]   r   r   r   r   r   r   r   rX   r   r  r   )r   _validate_format_write_to_group)r   r   r   r]   r   r   r   r   r   r   r   rX   r   r  r   s   &&&&&&&&&&&&&&&r^   r   HDFStore.putk  sj    h > 78CCGF&&v.%%# 	 	
r`   c                    V ^8  d   QhRRRR/# r  r\   )r]   s   "r^   r_   r     s     5= 5=# 5=Z 5=r`   c                   \        V^R7      p V P                  V4      p\        P                  ! Y#T4      '       d   XP                  P                  RR7       R# XP                  '       g   \        R4      hTP                  Y#TR7      #   \         d    h \         d    h \         dH   pTe   \        R4      ThT P                  T4      pTe   TP                  RR7        Rp?R#  Rp?LRp?ii ; i)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

rp   Nz5trying to remove a node with a non-None where clause!T	recursivez7can only remove with where on objects written as tablesr|  )rw   r}  r  AssertionError	Exceptionr   r  	_f_removecomall_noner   r  delete)r   r   rt   r   r   rn  errr  s   &&&&&   r^   r
  HDFStore.remove  s    * U2	$A. <<d++GG- zzzVWWxxetx<<;  	 	 	   K
 ==%D.  	s#   B C3 
C3+C3,7C..C3c               D    V ^8  d   QhRRRRRRRRR	R
RRRR
RRRRRRRR/# )rW   r   r[   r   r   r   bool | list[str]r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r\   )r]   s   "r^   r_   r   
  s     ~
 ~
~
 "~
  ~
 ~
 ~
 2~
 ~
 ~
  7!~
$ %~
& 
'~
r`   c                    V	e   \        R4      hVf   \        R4      pVf   \        R4      ;'       g    RpV P                  V4      pV P                  VVVVVVVVV
VVVVVVVR7       R# )a{
  
Append to Table in file.

Node must already exist and be Table format.

Parameters
----------
key : str
    Key of object to append.
value : {Series, DataFrame}
    Value of object to append.
format : 'table' is the default
    Format to use when storing object in HDFStore.  Value can be one of:

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

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

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

Examples
--------
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df1, format="table")  # doctest: +SKIP
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
>>> store.append("data", df2)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
   A  B
0  1  2
1  3  4
0  5  6
1  7  8
Nz>columns is not a supported keyword in append, try data_columnszio.hdf.dropna_tabler  r~   )r]   axesr   r   r   r   r   r   r   expectedrowsr   r   rX   r   )r   r   r  r  )r   r   r   r]   r  r   r   r   r   r   r   r   r   r  r   r   rX   r   s   &&&&&&&&&&&&&&&&&&r^   r   HDFStore.append
  s    F P  > 56F> 78CCGF&&v.%%%! 	 	
r`   c               $    V ^8  d   QhRRRRRR/# )rW   ddictr   r   rZ   r   r\   )r]   s   "r^   r_   r     s2     _R _R_R _R 
_Rr`   c                x  a Ve   \        R4      h\        V\        4      '       g   \        R4      hW19  d   \        R4      h\	        \        \        \        SP                  4      4      \        \        \        S4      ,          4      ,
          4      4      pRp	. p
VP                  4        F-  w  rVf   V	e   \        R4      hTp	K  V
P                  V4       K/  	  V	e[   SP                  V,          pVP                  \        V
4      4      p\!        VP#                  V4      4      pVP%                  V4      W&   Vf	   W,          pV'       dS   V3R lVP'                  4        4       p\	        V4      pV F  pVP)                  V4      pK  	  SP*                  V,          oVP-                  RR4      pVP                  4        Fn  w  rW8X  d   TMRpSP/                  WR7      pVe0   VP                  4        UUu/ uF  w  ppVV9   g   K  VVbK  	  uppMRpV P0                  ! VV3R	VRV/VB  Kp  	  R# u uppi )
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  j   <"   T F(  pSV,          P                  R R7      P                  x  K*  	  R# 5i)all)howN)r   r   ).0colsr   s   & r^   	<genexpr>.HDFStore.append_to_multiple.<locals>.<genexpr>  s)     OJDE$K&&5&177Js   03r   r  r   )r   rg   r  r   nextrA  setrangendim	_AXES_MAPr  rH  extendr  
differencer.   sortedget_indexertakevaluesintersectionlocr  reindexr   )r   r  r   r  r   r  r   r   r  
remain_keyremain_valuesr  vorderedorddidxsvalid_indexr   r   dcvalr   filtereds   &&f&&&&,               r^   append_to_multipleHDFStore.append_to_multiple  s!   > B 
 !T"") 
 O 
 DU5::./#iU6L2MMNO 
 GGIDAy)$V  
$$Q'  !jj&G%%eM&:;D'--d34D#LL.AM ;L OAHHJODt*K)66u= IIk*Ezz.$7 GGIDA!"DB ----C  + 1=0B0B0DQ0Deqe0DQ 
 KK3QRQhQ&Q  Rs   :H6H6c               (    V ^8  d   QhRRRRRRRR/# )	rW   r   r[   optlevelr   kindrY   rZ   r   r\   )r]   s   "r^   r_   r     s8     &F &F&F 	&F
 &F 
&Fr`   c                    \        4        V P                  V4      pVf   R# \        V\        4      '       g   \	        R4      hVP                  W#VR7       R# )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   r  r  )r   r}  rg   r9  r   create_index)r   r   r   r  r  rn  s   &&&&& r^   create_table_indexHDFStore.create_table_index  sH    > 		OOC 9!U##OPP	wEr`   c                   V ^8  d   QhRR/# rW   rZ   rq   r\   )r]   s   "r^   r_   r     s     )
 )
 )
r`   c                   \        4        V P                  4        V P                  f   Q h\        f   Q hV P                  P	                  4        Uu. uF  p\        V\        P                  P                  4      '       d   K/  \        VP                  RR4      '       gS   \        VRR4      '       g@   \        V\        P                  P                  4      '       g   K  VP                  R8w  g   K  VNK  	  up# u upi )aM  
Return a list of all the top-level nodes.

Each node returned is not a pandas storage object.

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

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

Examples
--------
>>> df = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df)  # doctest: +SKIP
>>> print(store.groups())  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
[/data (Group) ''
  children := ['axis0' (Array), 'axis1' (Array), 'block0_values' (Array),
  'block0_items' (Array)]]
Npandas_typer~   )r   r   r   r   walk_groupsrg   linkLinkgetattr_v_attrsr~   r9  r   rF  s   & r^   r   HDFStore.groups  s    4 		||'''%%% \\--/
/q*//"6"67 
 AJJt<<q'400"1j&6&6&<&<=  CD))wBV A/
 	
 
s   ,C:AC:C:1C:c                    V ^8  d   QhRRRR/# )rW   rt   r[   rZ   z*Iterator[tuple[str, list[str], list[str]]]r\   )r]   s   "r^   r_   r   >  s     >> >># >>(R >>r`   c              #  v  "   \        4        V P                  4        V P                  f   Q h\        f   Q hV P                  P	                  V4       F  p\        VP                  RR4      e   K  . p. pVP                  P                  4        F  p\        VP                  RR4      pVfJ   \        V\        P                  P                  4      '       d   VP                  VP                  4       Ke  Kg  VP                  VP                  4       K  	  VP                  P                  R4      W43x  K  	  R# 5i)a  
Walk the pytables group hierarchy for pandas objects.

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

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

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

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

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

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

Examples
--------
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data", df1, format="table")  # doctest: +SKIP
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["A", "B"])
>>> store.append("data", df2)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
>>> for group in store.walk():  # doctest: +SKIP
...     print(group)  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
Nr  r8  )r   r   r   r   r  r  r  _v_childrenr  rg   r   Groupr   r   r   rstrip)r   rt   rG  r   leaveschildr  s   &&     r^   walkHDFStore.walk>  s     V 		||'''%%%))%0Aqzz=$7CFF--/%ennmTJ&!%)9)9)?)?@@emm4 A MM%--0 0 =='',f== 1s   D7D9c                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   zNode | Noner\   )r]   s   "r^   r_   r   ~  s      C K r`   c                   V P                  4        VP                  R4      '       g
   RV,           pV P                  f   Q h\        f   Q h V P                  P	                  V P
                  V4      p\        T\        P                  4      '       g   Q \        T4      4       hT#   \        P                  P                   d     R# i ; i)z9return the node with the key or None if it does not existr8  N)r   
startswithr   r   r  r   
exceptionsNoSuchNodeErrorrg   rL   r  )r   r   r  s   && r^   r  HDFStore.get_node~  s    ~~c"")C||'''%%%	<<((C8D $
00<$t*<0	 $$44 		s   &B$ $CCc                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   GenericFixed | Tabler\   )r]   s   "r^   r_   r     s      c &: r`   c                    V P                  V4      pVf   \        RV R24      hV P                  V4      pVP                  4        V# )z<return the storer object for a key, raise if not in the filerb  rc  )r  r  rs  rt  )r   r   r   rn  s   &&  r^   r}  HDFStore.get_storer  sH    c"=-cU,?@@&	r`   c               0    V ^8  d   QhRRRRRRRRRRR	R
/# )rW   r   r[   propindexesr   r   r   r   	overwriterZ   r   r\   )r]   s   "r^   r_   r     sH     9 9 9 	9 9 9 9 
9r`   c	                   \        WWVVR7      p	Vf   \        V P                  4       4      p\        V\        \        34      '       g   V.pV F  p
V P                  V
4      pVf   K  W9   d   V'       d   V	P                  V
4       V P                  V
4      p\        V\        4      '       dp   RpV'       d9   VP                   Uu. uF"  qP                  '       g   K  VP                  NK$  	  ppV	P                  V
VV\        VRR4      VP                  R7       K  V	P                  WVP                  R7       K  	  V	# u upi )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   rX   rd   )r   rq   r=  rg   rr   r}  r
  r   r9  r  
is_indexedri   r   r  rX   r   )r   r   r   r  r=  r   r   r   r  	new_storer  rn  datar   r   s   &&&&&&&&&      r^   copyHDFStore.copy  s   8 Wj
	 <		$D$..6DA"A}> !((+{{1~a''.3E"12 HA<< H$$#%,Q%E!" %  MM!AJJM?) ,  !Is   D?D?c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r     s     9 9c 9r`   c                   \        V P                  4      p\        V 4       RV R2pV P                  '       d   \	        V P                  4       4      pV'       d   . p. pV Fm  p V P                  V4      pVeU   TP                  \        VP                  ;'       g    T4      4       TP                  \        T;'       g    R4      4       Km  Ko  	  V\        ^WE4      ,          pV# VR,          p V# VR,          pV#   \         d    h \         d=   pTP                  T4       \        T4      p	TP                  RT	 R24        Rp?K  Rp?ii ; i)	a/  
Print detailed information on the store.

Returns
-------
str
    A String containing the python pandas class name, filepath to the HDF5
    file and all the object keys along with their respective dataframe shapes.

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

Examples
--------
>>> df1 = pd.DataFrame([[1, 2], [3, 4]], columns=["A", "B"])
>>> df2 = pd.DataFrame([[5, 6], [7, 8]], columns=["C", "D"])
>>> store = pd.HDFStore("store.h5", "w")  # doctest: +SKIP
>>> store.put("data1", df1)  # doctest: +SKIP
>>> store.put("data2", df2)  # doctest: +SKIP
>>> print(store.info())  # doctest: +SKIP
>>> store.close()  # doctest: +SKIP
<class 'pandas.io.pytables.HDFStore'>
File path: store.h5
/data1            frame        (shape->[2,2])
/data2            frame        (shape->[2,2])
r"  r#  Nzinvalid_HDFStore nodez[invalid_HDFStore node: r  EmptyzFile is CLOSED)rC   r   r  r   r  r=  r}  r   r  r  r  rB   )
r   r   outputlkeysr=  r  r  rn  detaildstrs
   &         r^   infoHDFStore.info  s7   8 DJJ'J<}TF"5<<<499;'EAJ OOA.= KKQZZ__1(EF"MM,q7S7S<S*TU )  &T22 	 '!  &&F * $ JA+F3(@a&HIIJs*   $7C=#C= C==EE1E

Ec                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r     s     E E Er`   c                	Z    V P                   '       g   \        V P                   R 24      hR# )z file is not open!N)r   r   r   r   s   &r^   r   HDFStore._check_if_open  s'    |||!TZZL0B"CDD r`   c                    V ^8  d   QhRRRR/# )rW   r]   r[   rZ   r\   )r]   s   "r^   r_   r     s      s s r`   c                     \         VP                  4       ,          pV#   \         d   p\        RT R24      ThRp?ii ; i)zvalidate / deprecate formatsz#invalid HDFStore format specified [r  N)_FORMAT_MAPlowerr  r   )r   r]   r  s   && r^   r  HDFStore._validate_format  sK    	V 0F   	VA&KLRUU	Vs    ?:?c               (    V ^8  d   QhRRRRRRRR/# )rW   r   zDataFrame | Series | NonerX   r[   r   rZ   r  r\   )r]   s   "r^   r_   r     s@     YB YB )	YB
 YB YB 
YBr`   c                p   Ve(   \        V\        \        34      '       g   \        R4      h\	        VP
                  RR4      p\	        VP
                  RR4      pVf   Vfb   \        4        \        f   Q h\	        VRR4      '       g+   \        V\        P                  P                  4      '       d   RpRpM6\        R4      h\        V\        4      '       d   R	pMR
pVR8X  d
   VR,          pRV9  d"   R	\        R
\        /p W,          p	T	! YYER7      # Vf   Ve   VR8X  d:   \	        VRR4      pVe(   VP                  ^8X  d   RpMSVP                  ^8  d   RpM?VR8X  d9   \	        VRR4      pVe(   VP                  ^8X  d   RpMVP                  ^8  d   RpR\        R\         R\"        R\$        R\&        R\(        /p W,          p	T	! YYER7      #   \         d$   p
\        RT R\        T4       RT 24      T
hRp
?
ii ; i  \         d$   p
\        RT R\        T4       RT 24      T
hRp
?
ii ; i)z"return a suitable class to operateNz(value must be None, Series, or DataFramer  
table_typer~   frame_tablegeneric_tablezKcannot create a storer if the object is not existing nor a value are passedseriesframe_tablez=cannot properly create the storer for: [_STORER_MAP] [group->,value->z	,format->rX   r   series_tabler   appendable_seriesappendable_multiseriesappendable_frameappendable_multiframewormz<cannot properly create the storer for: [_TABLE_MAP] [group->)rg   r2   r,   r   r  r  r   r   r~   r9  SeriesFixed
FrameFixedr  r  nlevelsGenericTableAppendableSeriesTableAppendableMultiSeriesTableAppendableFrameTableAppendableMultiFrameTable	WORMTable)r   r   r]   r   rX   r   pttt_STORER_MAPclsr  r   
_TABLE_MAPs   &&&&&&       r^   rs  HDFStore._create_storer  sf    Z	7J%K%KFGGU^^]D9U^^\48 :}	!---5'400J:++115 5 'B(B#1 
 eV,,!B B W$(NB "#[':FK!o tXEE : '#E7D9E( ==A-!4B"]]Q.!9B=(#E7D9E( ==A-!3B"]]Q.!8B \!6$&@ 4#%>I

	.C 4AAU  SgXd5k])F8E H  	N'$u+ixA 	s0   G H H!G??HH5H00H5c               D    V ^8  d   QhRRRRRRRRR	R
RRRR
RRRRRRRR/# )rW   r   r[   r   r   r   r  r   r   r   r   r   r   r   r   r   r  rZ   r   r\   )r]   s   "r^   r_   r   z  sx     <* <*<* "<*  <* <* <* 2<* <* <*$ %<*& '<*( 
)<*r`   c                	   \        VR R4      '       d   VR8X  g	   V'       d   R# V P                  W4      pV P                  VW2VVR7      pV'       dl   VP                  '       d,   VP                  '       d%   VR8X  d   VP                  '       d   \        R4      hVP                  '       g   VP                  4        MVP                  4        VP                  '       g   V'       d   \        R4      hVP                  VVVVVV	V
VVVVVVR7       \        V\        4      '       d   V'       d   VP                  VR7       R# R# R# )	emptyNr~   r(  r|   zCan only append to Tablesz0Compression not supported on Fixed format stores)objr  r   r   r   r   r   r   r  r   r   r   r  r   )r  _identify_grouprs  r  	is_existsr   set_object_infowriterg   r9  r  )r   r   r   r]   r  r   r   r   r   r   r   r   r  r   r   r   rX   r   r  r   rn  s   &&&&&&&&&&&&&&&&&&&  r^   r  HDFStore._write_to_groupz  s   . 5'4((f.?6$$S1vxPVW :::!***71Bq{{{ !<==;;;!!#zzzgOPP 	
!%%%# 	 	
  aENN5N) %*r`   c                   V ^8  d   QhRR/# )rW   r   rL   r\   )r]   s   "r^   r_   r     s       r`   c                	d    V P                  V4      pVP                  4        VP                  4       # rb   )rs  rt  rj  )r   r   rn  s   && r^   rd  HDFStore._read_group  s&    &	vvxr`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r[   r   r   rZ   rL   r\   )r]   s   "r^   r_   r     s!      3   r`   c                    V P                  V4      pV P                  f   Q hVe(   V'       g    V P                  P                  VRR7       RpVf   V P                  V4      pV# )z@Identify HDF5 group based on key, delete/create group if needed.NTr  )r  r   remove_node_create_nodes_and_group)r   r   r   r   s   &&& r^   rC  HDFStore._identify_group  sb    c" ||''' VLL$$Ud$;E=005Er`   c                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   rL   r\   )r]   s   "r^   r_   r     s      3 4 r`   c                <   V P                   f   Q hVP                  R4      pRpV Fr  p\        V4      '       g   K  TpVP                  R4      '       g
   VR,          pWT,          pV P	                  V4      pVf   V P                   P                  W44      pTpKt  	  X# )z,Create nodes from key and return group name.r8  )r   splitrs   endswithr  create_group)r   r   pathsr   pnew_pathr   s   &&     r^   rN   HDFStore._create_nodes_and_group  s     ||'''		#Aq66H==%%CMHMM(+E}11$:D  r`   )r   r   r   r   r   r   r   )r   NNF)r   )r   F)NNNNFNFNNNNN)NNNNNFNF)NTFNNNNNNr   TF)NNTTNNNNNNNNNNr   )NNF)r8  )rL  TNNNFT)NNrU   r   )NTFNNNNNNFNNNr   T)3r  
__module____qualname____firstlineno____doc____annotations__r   r   propertyr   r   r  r  r  r  r  r  r%  r*  r1  r=  rB  rH  r   r   r   r]  r   r   r  r  r  r   r
  r   r  r  r   r  r  r}  r  r  r   r  rs  r  rd  rC  rN  __static_attributes__r\   r`   r^   r   r     s>   ?B J'B ! !   

"4.
`!#+JZ ) )4,!+FaFI@&FPw/rf
P5=n~
@_RB&FP)
V>>@ 9v9|EYBv<*|
$ r`   r   c                  r    ] tR tRt$ RtR]R&   R]R&   R]R&   RR
 R lltR R ltR R ltRR R llt	Rt
R	# )ru  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  rn  Nc               0    V ^8  d   QhRRRRRRRRR	RR
R/# )rW   r   r   rn  r  r   r   r   r   r   rZ   r   r\   )r]   s   "r^   r_   TableIterator.__annotate__  sF     (% (%(%  (% (% (% (% 
(%r`   c                	:   Wn         W n        W0n        W@n        V P                  P                  '       d   Vf   ^ pVf   ^ pVf   Tp\        WW4      pWPn        W`n        Wpn        R V n	        V'       g   V	e   V	f   Rp	\        V	4      V n        MR V n        Wn        R # )N順 )r   rn  ro  rt   r  minrr  r   r   r  rn   r   r   )r   r   rn  ro  rt   rr  r   r   r   r   r   s   &&&&&&&&&&&r^   r   TableIterator.__init__  s     
	
 66???}}|u#D

	y, "	 ^DN!DN$r`   c                   V ^8  d   QhRR/# rW   rZ   rF   r\   )r]   s   "r^   r_   re  '  s      ( r`   c              #  	`  "   V P                   pV P                  f   \        R4      hWP                  8  de   \	        WP
                  ,           V P                  4      pV P                  R R V P                  W 4      pTpVe   \        V4      '       g   Kn  Vx  Kt  V P                  4        R # 5i)Nz*Cannot iterate until get_result is called.)	r   r  r   r   rh  r   ro  rs   r   )r   r   r   r   s   &   r^   rB  TableIterator.__iter__'  s     **#IJJ		!w/;DIIdD$*:*:7*HIEG}CJJK

s   B,B.c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   re  7  s      t r`   c                	b    V P                   '       d   V P                  P                  4        R # R # rb   )r   r   r   r   s   &r^   r   TableIterator.close7  s     ???JJ r`   c                   V ^8  d   QhRR/# )rW   r  r   r\   )r]   s   "r^   r_   re  ;  s      d r`   c                	8   V P                   eY   \        V P                  \        4      '       g   \	        R4      hV P                  P                  V P                  R7      V n        V # V'       di   \        V P                  \        4      '       g   \	        R4      hV P                  P                  V P                  V P                  V P                  R7      pMV P                  pV P                  V P                  V P                  V4      pV P                  4        V# )Nz0can only use an iterator or chunksize on a table)rt   z$can only read_coordinates on a tabler|  )r   rg   rn  r9  r   r~  rt   r  r   r   ro  r   )r   r  rt   resultss   &&  r^   rv  TableIterator.get_result;  s    >>%dffe,, RSS#vv66TZZ6HDK dffe,, FGGFF++jj

 , E JJE ))DJJ		59

r`   )
r   r   r  ro  rr  rn  r   r   r   rt   )NNFNFrY  )r  r\  r]  r^  r_  r`  r   rB  r   rv  rb  r\   r`   r^   ru  ru    s4    & O(%T  r`   ru  c                     ] tR tRt$ RtRtR]R&   RtR]R&   . R5OtR6R R	 llt	]
R
 R l4       t]
R R l4       tR R ltR R ltR R ltR R lt]
R R l4       tR R ltR t]
R 4       t]
R 4       t]
R 4       t]
R 4       tR R  ltR7R! R" lltR# R$ ltR% R& ltR7R' ltR( R) ltR* R+ ltR, R- ltR. R/ lt R0 R1 lt!R2 R3 lt"R4t#R# )8IndexColiU  z
an index column description class

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

Tr   is_an_indexableis_data_indexableNc               $    V ^8  d   QhRRRRRR/# )rW   ri   r[   cnamerY   rZ   r   r\   )r]   s   "r^   r_   IndexCol.__annotate__g  s(     )+ )+)+ )+  
!)+r`   c                	   \        V\        4      '       g   \        R 4      hW n        W0n        W@n        Wn        T;'       g    TV n        W`n        Wpn	        Wn
        Wn        Wn        Wn        Wn        Wn        Wn        Ve   V P#                  V4       \        V P                  \        4      '       g   Q h\        V P                  \        4      '       g   Q hR# )z`name` must be a str.N)rg   r[   r   r  r  typri   rz  r  posfreqtz
index_namer  r~   r   metadataset_pos)r   ri   r  r  r}  rz  r  r~  r  r  r  r  r~   r   r  s   &&&&&&&&&&&&&&&r^   r   IndexCol.__init__g  s    " $$$455		]]d
		$
	 ?LL $))S))))$**c****r`   c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r{    s     ! !# !r`   c                	.    V P                   P                  # rb   )r}  itemsizer   s   &r^   r  IndexCol.itemsize  s     xx   r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r{         # #3 #r`   c                	     V P                    R 2# )_kindrh   r   s   &r^   	kind_attrIndexCol.kind_attr      ))E""r`   c                    V ^8  d   QhRRRR/# )rW   r~  rn   rZ   r   r\   )r]   s   "r^   r_   r{    s     " "3 "4 "r`   c                ^    Wn         Ve#   V P                  e   WP                  n        R# R# R# )z,set the position of this column in the TableN)r~  r}  _v_pos)r   r~  s   &&r^   r  IndexCol.set_pos  s%    ?txx3!HHO  4?r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r{    s     
 
# 
r`   c           
     	   \        \        \        V P                  V P                  V P
                  V P                  V P                  34      4      pR P                  \        . ROVRR7       UUu. uF  w  r#V RV 2NK  	  upp4      # u uppi ),Tr  ->)ri   rz  r  r~  r  )
rr   maprC   ri   rz  r  r~  r  joinr  r   tempr   r   s   &   r^   r%  IndexCol.__repr__  s    tyy$**dii499UV
 xx #&<d4##JC %r%!#
 	
   /B	
c                    V ^8  d   QhRRRR/# rW   otherobjectrZ   r   r\   )r]   s   "r^   r_   r{         
 
F 
t 
r`   c                ~   a a \         ;QJ d     VV 3R lR 4       F  '       d   K   R# 	  R# ! VV 3R lR 4       4      # )compare 2 col itemsc              3  Z   <"   T F   p\        SVR 4      \        SVR 4      8H  x  K"  	  R # 5irb   r  r  r   r  r   s   & r^   r  "IndexCol.__eq__.<locals>.<genexpr>  s/      
5 D!T"geQ&==5   (+FT)ri   rz  r  r~  r  r   r  s   ffr^   __eq__IndexCol.__eq__  s>    s 
5
ss 	
s 	
s 
5
 
 	
r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r{    s     & &t &r`   c                	.    V P                  V4      '       * # rb   )r  r  s   &&r^   __ne__IndexCol.__ne__  s    ;;u%%%r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r{    s     ? ?D ?r`   c                    \        V P                  R4      '       g   R# \        V P                  P                  V P                  4      P
                  # )z%return whether I am an indexed columnr  F)hasattrr~   r  r  rz  r	  r   s   &r^   r	  IndexCol.is_indexed  s7     tzz6**tzz

3>>>r`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r  
np.ndarrayrX   r[   r   rZ   z3tuple[np.ndarray, np.ndarray] | tuple[Index, Index]r\   )r]   s   "r^   r_   r{    s2     A. A. A.58A.BEA.	<A.r`   c           
     >   \        V\        P                  4      '       g   Q \        V4      4       hVP                  P
                  e!   WP                  ,          P                  4       pV P                  p\        WW44      p/ pV P                  VR&   V P                  e   V P                  VR&   \        p\        P                  ! VP                  R4      '       g!   \        VP                  \        4      '       d   \         pMVP                  R8X  d   RV9   d   R p V! V3/ VB pT P2                  eD   \        T\         4      '       d.   TP5                  R4      P7                  T P2                  4      p
Y3# Tp
Y3#   \"         ds   p	TR8X  df   \%        4       '       dV   \'        T	4      P)                  R4      '       d6   \*        '       d*   T! T3R	\-        R
\        P.                  R7      /TB p Rp	?	Lh Rp	?	i\0         d    RT9   d   RTR&   T! T3/ TB p Li ; i)zF
Convert the data from this selection to the appropriate pandas type.
Nri   r  Mi8c                |    \         P                  ! WP                  R R4      R7      P                  VR,          4      # )r  N)r  ri   )r0   from_ordinalsr   _rename)r  kwdss   &,r^   r   "IndexCol.convert.<locals>.<lambda>  s0    (A(A.)gd6l#)$r`   surrogatepasssurrogates not alloweddtypepythonstoragena_valueUTC)rg   npndarrayr  r  fieldsrz  r  r  _maybe_convertr  r  r.   r   is_np_dtyper(   r-   UnicodeEncodeErrorr   r[   rS  r   r3   nanr   r  tz_localize
tz_convert)r   r  r   rX   r   val_kindr   factorynew_pd_indexr  final_pd_indexs   &&&&&      r^   convertIndexCol.convert  s    &"**--;tF|;- <<* JJ',,.F99(Cv99 !YYF6N/4??6<<--LL/2
 2
 $G\\T!f&6
$G
	5"64V4L. 77:lM#J#J)55e<GGPN -- *N--5 " 	/)&((H%%&>??K& %hH     	5 !%v"64V4L	5s1   	E> >H	AG6$G65G66HHHc                    V P                   # )zreturn the valuesr  r   s   &r^   	take_dataIndexCol.take_data	  s    {{r`   c                	.    V P                   P                  # rb   )r~   r  r   s   &r^   attrsIndexCol.attrs	      zz"""r`   c                	.    V P                   P                  # rb   r~   descriptionr   s   &r^   r  IndexCol.description	      zz%%%r`   c                D    \        V P                  V P                  R4      # )z!return my current col descriptionN)r  r  rz  r   s   &r^   colIndexCol.col	  s     t''T::r`   c                    V P                   # zreturn my cython valuesr  r   s   &r^   cvaluesIndexCol.cvalues	  s     {{r`   c                   V ^8  d   QhRR/# rk  r\   )r]   s   "r^   r_   r{  	  s     ! !( !r`   c                	,    \        V P                  4      # rb   )rA  r  r   s   &r^   rB  IndexCol.__iter__	  s    DKK  r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r{  	  s     T T4 Tr`   c                &   V P                   R8X  d   \        V\        4      '       d   VP                  V P                  4      pVeI   V P
                  P                  V8  d,   \        4       P                  WP                  R7      V n        R# R# R# R# )z
maybe set a string col itemsize:
    min_itemsize can be an integer or a dict with this columns name
    with an integer size
stringN)r  r~  )
r  rg   r  r   ri   r}  r  r   	StringColr~  )r   r   s   &&r^   maybe_set_sizeIndexCol.maybe_set_size	  sq     99 ,--+//		:'DHH,=,=,L"9..((.S -M'	 !r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r{  )	  s       r`   c                	    R # rb   r\   r   s   &r^   validate_namesIndexCol.validate_names)	      r`   c               $    V ^8  d   QhRRRRRR/# )rW   handlerAppendableTabler   r   rZ   r   r\   )r]   s   "r^   r_   r{  ,	  s!        $ r`   c                	    VP                   V n         V P                  4        V P                  V4       V P                  V4       V P	                  V4       V P                  4        R # rb   )r~   validate_colvalidate_attrvalidate_metadatawrite_metadataset_attr)r   r  r   s   &&&r^   validate_and_setIndexCol.validate_and_set,	  sL    ]]
6"w'G$r`   c           	         V P                   R8X  dg   V P                  pVeW   Vf   V P                  pVP                  V8  d*   \        RV RV P                   RVP                   R24      hVP                  # R# )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  r   rz  )r   r  cs   && r^   r  IndexCol.validate_col4	  s     99 A}##}}H::($=hZ H JJ< (JJ< (<<  zz!r`   c                    V ^8  d   QhRRRR/# )rW   r   r   rZ   r   r\   )r]   s   "r^   r_   r{  G	  s      D T r`   c                	    V'       dV   \        V P                  V P                  R 4      pVe/   W P                  8w  d   \	        RV RV P                   R24      hR # R # R # )Nzincompatible kind in col [ - r  )r  r  r  r  r   )r   r   existing_kinds   && r^   r  IndexCol.validate_attrG	  s[    #DJJEM(]ii-G0s499+QO  .H( r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r{  P	  s     ! !4 !r`   c                   V P                    F  p\        WR4      pVP                  V P                  / 4      pVP	                  V4      pW$9   dz   Vev   WS8w  dp   VR9   dG   \
        W%V3,          p\        P                  ! V\        \        4       R7       RWB&   \        WR4       K  \        RV P                   RV RV RV R2	4      hVf   Vf   K  W4V&   K  	  R# )	zg
set/update the info for this indexable with the key/value
if there is a conflict raise/warn as needed
N
stacklevelzinvalid info for [z] for [z], existing_value [z] conflicts with new value [r  )r  r  )_info_fieldsr  
setdefaultri   r   ry   warningswarnr   r    setattrr   )r   r  r   r   idxexisting_valuewss   &&     r^   update_infoIndexCol.update_infoP	  s    
 $$CDt,E//$))R0C WWS\Nze/N4K00/32NNBMM4AQAS
  $CHDt, %,TYYKwse D++9*: ;&&+WA/ 
 "n&@ C1 %r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r{  o	  s     & & &r`   c                ~    VP                  V P                  4      pVe   V P                  P                  V4       R# R# )z!set my state from the passed infoN)r   ri   __dict__update)r   r  r  s   && r^   set_infoIndexCol.set_infoo	  s0    hhtyy!?MM  % r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r{  u	  s     7 7$ 7r`   c                \    \        V P                  V P                  V P                  4       R# )zset the kind for this columnN)r  r  r  r  r   s   &r^   r  IndexCol.set_attru	  s    

DNNDII6r`   c                    V ^8  d   QhRRRR/# rW   r  r  rZ   r   r\   )r]   s   "r^   r_   r{  y	  s       T r`   c                    V P                   R8X  dU   V P                  pVP                  V P                  4      pVe(   Ve"   \	        W#RRR7      '       g   \        R4      hR# R# R# R# )z:validate that kind=category does not change the categoriescategoryNT
strict_nandtype_equalzEcannot append a categorical with different categories to the existing)r   r  read_metadatarz  r+   r   )r   r  new_metadatacur_metadatas   &&  r^   r  IndexCol.validate_metadatay	  ss    99
"==L"00<L( ,( 4T  !; 	 - )	 #r`   c                    V ^8  d   QhRRRR/# r$  r\   )r]   s   "r^   r_   r{  	  s     > >o >$ >r`   c                r    V P                   e)   VP                  V P                  V P                   4       R# R# )zset the meta dataN)r  r   rz  )r   r  s   &&r^   r   IndexCol.write_metadata	  s)    ==$""4::t}}= %r`   )r  rz  r  r  r  r   r  ri   r  r~  r~   r}  r  r  )r  r  r  )NNNNNNNNNNNNNrb   )$r  r\  r]  r^  r_  rw  r`  rx  r  r   ra  r  r  r  r%  r  r  r	  r  r  r  r  r  r  rB  r  r  r  r  r  r  r  r  r  r   rb  r\   r`   r^   rv  rv  U  s    !OT "t"/L)+V ! ! # #"

& ? ?A.F # # & & ; ;  !T&!>&7"> >r`   rv  c                  H    ] tR tRtRt]R R l4       tR R ltR R ltR	t	R
# )GenericIndexColi	  z:an index which is not represented in the data of the tablec                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   GenericIndexCol.__annotate__	  s      D r`   c                	    R # rY  r\   r   s   &r^   r	  GenericIndexCol.is_indexed	      r`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r  r  rX   r[   r   rZ   ztuple[Index, Index]r\   )r]   s   "r^   r_   r4  	  s,       58BE	r`   c                    \        V\        P                  4      '       g   Q \        V4      4       h\	        \        V4      4      pWU3# )z
Convert the data from this selection to the appropriate pandas type.

Parameters
----------
values : np.ndarray
nan_rep : str
encoding : str
errors : str
)rg   r  r  r  r1   rs   )r   r  r   rX   r   r   s   &&&&& r^   r  GenericIndexCol.convert	  s:     &"**--;tF|;-3v;'|r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r4  	  s      $ r`   c                	    R # rb   r\   r   s   &r^   r  GenericIndexCol.set_attr	  r  r`   r\   N)
r  r\  r]  r^  r_  ra  r	  r  r  rb  r\   r`   r^   r2  r2  	  s&    D $ r`   r2  c                  R  a  ] tR tRtRtRtRtRR.tR%R V 3R lllt]	R R	 l4       t
]	R
 R l4       tR R ltR R ltR R ltR t]R R l4       t]R 4       t]R R l4       t]R R l4       t]R 4       t]R 4       t]	R 4       t]	R 4       tR R ltR  R! ltR" R# ltR$tV ;t# )&DataColi	  a  
a data holding column, by definition this is not indexable

Parameters
----------
data   : the actual data
cname  : the column name in the table to hold the data (typically
            values)
meta   : a string description of the metadata
metadata : the actual metadata
Fr  r  c               (    V ^8  d   QhRRRRRRRR/# )	rW   ri   r[   rz  rY   r  zDtypeArg | NonerZ   r   r\   )r]   s   "r^   r_   DataCol.__annotate__	  s2         
r`   c                	T   < \         SV `  VVVVVVVVV	V
VR 7       Wn        Wn        R# ))ri   r  r  r}  r~  rz  r  r  r~   r   r  N)superr   r  r  )r   ri   r  r  r}  rz  r~  r  r  r~   r   r  r  r  	__class__s   &&&&&&&&&&&&&&r^   r   DataCol.__init__	  sD      	 	 	
 
	r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   rA  	  s     $ $C $r`   c                	     V P                    R 2# )_dtyperh   r   s   &r^   
dtype_attrDataCol.dtype_attr	  s    ))F##r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   rA  	  r  r`   c                	     V P                    R 2# )_metarh   r   s   &r^   	meta_attrDataCol.meta_attr	  r  r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   rA  	  s     
 
# 
r`   c           
     	   \        \        \        V P                  V P                  V P
                  V P                  V P                  34      4      pR P                  \        . ROVRR7       UUu. uF  w  r#V RV 2NK  	  upp4      # u uppi )r  Tr  r  )ri   rz  r  r  shape)
rr   r  rC   ri   rz  r  r  rR  r  r  r  s   &   r^   r%  DataCol.__repr__	  s    tyy$**djj$))TZZX

 xx #&?d##JC %r%!#
 	
r  c                    V ^8  d   QhRRRR/# r  r\   )r]   s   "r^   r_   rA  	  r  r`   c                ~   a a \         ;QJ d     VV 3R lR 4       F  '       d   K   R# 	  R# ! VV 3R lR 4       4      # )r  c              3  Z   <"   T F   p\        SVR 4      \        SVR 4      8H  x  K"  	  R # 5irb   r  r  s   & r^   r  !DataCol.__eq__.<locals>.<genexpr>	  s/      
6 D!T"geQ&==6r  FT)ri   rz  r  r~  r  r  s   ffr^   r  DataCol.__eq__	  s>    s 
6
ss 	
s 	
s 
6
 
 	
r`   c                    V ^8  d   QhRRRR/# )rW   r  rN   rZ   r   r\   )r]   s   "r^   r_   rA  	  s     / /Y /4 /r`   c                	    Vf   Q hV P                   e   Q h\        V4      w  rWn        W n         \        V4      V n        R # rb   )r  _get_data_and_dtype_namer  _dtype_to_kindr  )r   r  
dtype_names   && r^   set_dataDataCol.set_data	  sA    zz!!!3D9	
":.	r`   c                    V P                   # )zreturn the datar  r   s   &r^   r  DataCol.take_data
  s    yyr`   c                    V ^8  d   QhRRRR/# )rW   r  rN   rZ   rJ   r\   )r]   s   "r^   r_   rA  
  s      y S r`   c                   VP                   pVP                  pVP                  pVP                  ^8X  d   ^VP                  3p\        V\        4      '       d5   VP                  pV P                  WEP                   P                  R7      pV# \        P                  ! VR4      '       g   \        V\        4      '       d   V P                  V4      pV# \        P                  ! VR4      '       d   V P                  V4      pV# \        V4      '       d$   \!        4       P#                  W4^ ,          R7      pV# \%        V4      '       d   V P'                  WC4      pV# V P                  WBP                  R7      pV# )zG
Get an appropriately typed and shaped pytables.Col object for values.
r  r  mr  rR  )r  r  rR  r  sizerg   r7   codesget_atom_datari   r   r  r(   get_atom_datetime64get_atom_timedelta64r#   r   
ComplexColr%   get_atom_string)r;  r  r  r  rR  ri  atoms   &&     r^   	_get_atomDataCol._get_atom

  sF   
  >>;;! $Efk**LLE$$U1A1A$BD  __UC((Juo,N,N**51D  __UC((++E2D  e$$9''q'JD  U##&&u7D  $$U$<Dr`   c                	D    \        4       P                  W!^ ,          R7      # )    rg  r   r  r;  rR  r  s   &&&r^   rn  DataCol.get_atom_string*
  s    y""H!H"EEr`   c                    V ^8  d   QhRRRR/# )rW   r  r[   rZ   z	type[Col]r\   )r]   s   "r^   r_   rA  /
  s     , ,C ,I ,r`   c                    VP                  R4      '       d   VR,          pRV R2pM/VP                  R4      '       d   RpMVP                  4       pV R2p\        \        4       V4      # )z0return the PyTables column class for this columnuint:   NNUIntrJ   periodInt64Col)r  
capitalizer  r   )r;  r  k4col_namekcaps   &&   r^   get_atom_coltypeDataCol.get_atom_coltype.
  sc     ??6""bBbT~H__X&&!H??$Ds|Hwy(++r`   c                    V ^8  d   QhRRRR/# rW   r  r[   rZ   rJ   r\   )r]   s   "r^   r_   rA  >
  s     ? ? ? ?r`   c                	B    V P                  VR 7      ! V^ ,          R7      # )re  rR  r  r;  rR  r  s   &&&r^   rj  DataCol.get_atom_data=
  s    ###.U1X>>r`   c                	D    \        4       P                  V^ ,          R7      # rs  r  r   r}  r;  rR  s   &&r^   rk  DataCol.get_atom_datetime64A
      y!!a!11r`   c                	D    \        4       P                  V^ ,          R7      # r  r  r  s   &&r^   rl  DataCol.get_atom_timedelta64E
  r  r`   c                	0    \        V P                  R R4      # )rR  N)r  r  r   s   &r^   rR  DataCol.shapeI
  s    tyy'400r`   c                    V P                   # r  ra  r   s   &r^   r  DataCol.cvaluesM
  s     yyr`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   rA  R
  s      t r`   c                2   V'       d   \        V P                  V P                  R4      pVe&   V\        V P                  4      8w  d   \        R4      h\        V P                  V P                  R4      pVe   W0P                  8w  d   \        R4      hR# R# R# )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  r  rq   r  r   rI  r  )r   r   existing_fieldsexisting_dtypes   &&  r^   r  DataCol.validate_attrR
  s    %djj$..$GO*$t{{BS/S !WXX$TZZ$GN)n

.J V  /K) r`   c               $    V ^8  d   QhRRRRRR/# )rW   r  r  rX   r[   r   r\   )r]   s   "r^   r_   rA  _
  s&     h& h&j h&S h&# h&r`   c           	        \        V\        P                  4      '       g   Q \        V4      4       hVP                  P
                  e   WP                  ,          pV P                  f   Q hV P                  f   \        V4      w  rV\        V4      pMTpV P                  pV P                  p\        V\        P                  4      '       g   Q hV P                  pV P                  p	V P                  p
V P                  pVf   Q hTpVP                  R4      '       d   VR8X  d   Rp\!        W[V4      pEMnVP                  R4      '       d;   VR8X  d   \        P"                  ! VRR7      pEM6\        P"                  ! W\R7      pEMVR8X  dC    \        P"                  ! V Uu. uF  p\$        P&                  ! V4      NK  	  up\(        R7      pMVR8X  d   T	pVP/                  4       pVf   \1        . \        P2                  R7      pMm\5        V4      pVP7                  4       '       dM   VV( ,          pWR8g  ;;,          VP9                  \:        4      P=                  4       P>                  ,          uu&   \@        PB                  ! WV
RR	7      pM VP9                  VRR
7      pVR8X  d   \G        WRW4R7      pV PH                  V3# u upi   \*         dJ    \        P"                  ! T Uu. uF  p\$        P,                  ! T4      NK  	  Mu upi up\(        R7      p Lzi ; i  \D         d    TP9                  RRR
7      p Li ; i)z
Convert the data from this selection to the appropriate pandas type.

Parameters
----------
values : np.ndarray
nan_rep :
encoding : str
errors : str

Returns
-------
index : listlike to become an Index
data : ndarraylike to become a column

datetime64datetime64[ns]timedelta64m8[ns]r  r   r&  F)
categoriesr  validater  Or  r   rX   r   )%rg   r  r  r  r  r  rz  r}  r[  r\  r  r   r  r  r  r  _set_tzasarrayr   fromordinalr  r   fromtimestampravelr.   float64r6   anyastypern   cumsum_valuesr7   
from_codesr   _unconvert_string_arrayr  )r   r  r   rX   r   	convertedr]  r  r   r  r  r  r  r  r  ri  masks   &&&&&            r^   r  DataCol.convert_
  s     &"**--;tF|;- <<*JJ'Fxx###:: %=V$D!I!*-DIJ99D)RZZ0000 yy==,,WW%%% L))$(	u5Im,,%JJyA	JJy>	f_JJ2;<)QT%%a()<F	 Z!JOO%E
 !
 #2RZZ8
J'88::!+TE!2J2+&$++c*:*A*A*C*K*KK&#..gI
>%,,U,?	
 8/XI {{I%%W = JJ4=>IqT''*I>f	@  >%,,Su,=	>sB   K	 !K K	 L  K	 	L(L
LL M Mc                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   rA  
  s     9 9$ 9r`   c                (   \        V P                  V P                  V P                  4       \        V P                  V P                  V P
                  4       V P                  f   Q h\        V P                  V P                  V P                  4       R# )zset the data for this columnN)r  r  r  r  rN  r   r  rI  r   s   &r^   r  DataCol.set_attr
  sZ    

DNNDKK8

DNNDII6zz%%%

DOOTZZ8r`   )r  r  r  )NNNNNNNNNNNN)r  r\  r]  r^  r_  rw  rx  r  r   ra  rI  rN  r%  r  r^  r  classmethodrp  rn  r  rj  rk  rl  rR  r  r  r  r  rb  __classcell__rD  s   @r^   r?  r?  	  s   
 O)$L @ $ $ # #

/  > F F , , ? ? 2 2 2 2 1 1  h&T9 9r`   r?  c                  p    ] tR tRtRtRtR R lt]R 4       t]R R l4       t	]R	 4       t
]R
 4       tRtR# )DataIndexableColi
  z+represent a data column that can be indexedTc                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   DataIndexableCol.__annotate__
  s     N N Nr`   c                	x    \        \        V P                  4      P                  4      '       g   \	        R 4      hR# )-cannot have non-object label DataIndexableColN)r%   r.   r  r  r   r   s   &r^   r  DataIndexableCol.validate_names
  s-    uT[[17788LMM 9r`   c                	6    \        4       P                  VR 7      # ))r  rt  ru  s   &&&r^   rn   DataIndexableCol.get_atom_string
  s    y""H"55r`   c                    V ^8  d   QhRRRR/# r  r\   )r]   s   "r^   r_   r  
  s     1 1 1 1r`   c                	0    V P                  VR 7      ! 4       # )re  r  r  s   &&&r^   rj  DataIndexableCol.get_atom_data
  s    ###.00r`   c                	2    \        4       P                  4       # rb   r  r  s   &&r^   rk  $DataIndexableCol.get_atom_datetime64
      y!!##r`   c                	2    \        4       P                  4       # rb   r  r  s   &&r^   rl  %DataIndexableCol.get_atom_timedelta64
  r  r`   r\   N)r  r\  r]  r^  r_  rx  r  r  rn  rj  rk  rl  rb  r\   r`   r^   r  r  
  sa    5N
 6 6 1 1 $ $ $ $r`   r  c                      ] tR tRtRtRtR# )GenericDataIndexableColi
  z(represent a generic pytables data columnr\   N)r  r\  r]  r^  r_  rb  r\   r`   r^   r  r  
  s    2r`   r  c                     ] tR tRt$ RtR]R&   RtR]R&   R]R&   R	]R
&   R]R&   RtR]R&   R<R R llt]	R R l4       t
]	R R l4       t]	R 4       tR R ltR R ltR R lt]	R 4       t]	R 4       t]	R 4       t]	R  4       t]	R! R" l4       t]	R# R$ l4       t]	R% 4       tR& R' ltR( R) lt]	R* 4       t]	R+ R, l4       t]	R- 4       tR. R/ ltR=R1 R2 lltR3 R4 ltR>R5 R6 lltR7 R8 lt R?R9 R: llt!R;t"R0# )@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.
r[   pandas_kindr|   format_typetype[DataFrame | Series]obj_typern   r  r   r   Fr   r  c          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )rW   r   r   r   rL   rX   rY   r   r[   rZ   r   r\   )r]   s   "r^   r_   Fixed.__annotate__  s<        	
  
r`   c                	
   \        V\        4      '       g   Q \        V4      4       h\        f   Q h\        V\        P                  4      '       g   Q \        V4      4       hWn        W n        \        V4      V n        W@n	        R # rb   )
rg   r   r  r   rL   r   r   re   rX   r   )r   r   r   rX   r   s   &&&&&r^   r   Fixed.__init__  sg     &(++9T&\9+%%%%11>4;>1
(2r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r    s     V V Vr`   c                	    V P                   ^ ,          ^ 8*  ;'       d5    V P                   ^,          ^
8*  ;'       d    V P                   ^,          ^8  # rs  )versionr   s   &r^   is_old_versionFixed.is_old_version  s@    ||A!#UUQ2(=UU$,,q/TUBUUr`   c                   V ^8  d   QhRR/# )rW   rZ   ztuple[int, int, int]r\   )r]   s   "r^   r_   r    s     
 
- 
r`   c                ^   \        V P                  P                  RR4      p\        V\        4      '       dv   \
        ;QJ d#    . R VP                  R4       4       F  NK  	  5M! R VP                  R4       4       4      p\        V4      ^8X  d   . VO^ N5p\        V4      ^8X  g   Q hV# R# )zcompute and set our versionpandas_versionNc              3  8   "   T F  p\        V4      x  K  	  R # 5irb   )rn   )r  r  s   & r^   r   Fixed.version.<locals>.<genexpr>  s     C0B1A0Bs   .)rs  rs  rs  )r  r   r  rg   r[   rr   rR  rs   )r   r  version_tups   &  r^   r  Fixed.version  s     $**--/?Fgs##%Cc0BC%%Cc0BCCK;1$//Q/{#q(((r`   c                	D    \        V P                  P                  R R4      # )r  N)r  r   r  r   s   &r^   r  Fixed.pandas_type$  s    tzz**M4@@r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r  (  s     	  	 # 	 r`   c                "   V P                  4        V P                  pVe`   \        V\        \        34      '       d1   RP                  V Uu. uF  p\        V4      NK  	  up4      pRV R2pV P                  R RV R2# V P                  # u upi )(return a pretty representation of myselfr  [r  12.12z	 (shape->))rt  rR  rg   rq   rr   r  rC   r  )r   rn  r  jshapes   &   r^   r%  Fixed.__repr__(  s    JJ=!dE]++A">Aq<?A">?xqM&&u-Yqc;; #?s   Bc                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r  3  s     2 2 2r`   c                    \        V P                  4      V P                  n        \        \        4      V P                  n        R# )zset my pandas type & versionN)r[   r  r  r  _versionr  r   s   &r^   rE  Fixed.set_object_info3  s)    !$T%5%5!6

$'M

!r`   c                   V ^8  d   QhRR/# )rW   rZ   r  r\   )r]   s   "r^   r_   r  8  s      e r`   c                	2    \         P                   ! V 4      pV# rb   r  )r   new_selfs   & r^   r  
Fixed.copy8  s    99T?r`   c                	    V P                   # rb   )rr  r   s   &r^   rR  Fixed.shape<  r   r`   c                	.    V P                   P                  # rb   r   r   r   s   &r^   r  Fixed.pathname@  r  r`   c                	.    V P                   P                  # rb   )r   r   r   s   &r^   r   Fixed._handleD  s    {{"""r`   c                	.    V P                   P                  # rb   )r   r   r   s   &r^   r   Fixed._filtersH  s    {{###r`   c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r  M  s     & &C &r`   c                	.    V P                   P                  # rb   )r   r   r   s   &r^   r   Fixed._complevelL  s    {{%%%r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r  Q  s     ' 'T 'r`   c                	.    V P                   P                  # rb   )r   r   r   s   &r^   r   Fixed._fletcher32P  s    {{&&&r`   c                	.    V P                   P                  # rb   )r   r  r   s   &r^   r  Fixed.attrsT  r  r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r  X       ( (4 (r`   c                    R# zset our object attributesNr\   r   s   &r^   	set_attrsFixed.set_attrsX      r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r  [  r  r`   c                    R# )zget our object attributesNr\   r   s   &r^   	get_attrsFixed.get_attrs[  r  r`   c                    V P                   # )zreturn my storabler   r   s   &r^   storableFixed.storable^  s     zzr`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r  d  s      4 r`   c                	    R # rY  r\   r   s   &r^   rD  Fixed.is_existsc  r7  r`   c                	0    \        V P                  R R4      # )rr  N)r  r  r   s   &r^   rr  Fixed.nrowsg  s    t}}gt44r`   c                   V ^8  d   QhRR/# )rW   rZ   zLiteral[True] | Noner\   )r]   s   "r^   r_   r  k  s      !5 r`   c                    Vf   R# R# )z%validate against an existing storableNTr\   r  s   &&r^   r  Fixed.validatek  s    =r`   Nc                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r  q  s     : :d :r`   c                    R# )+are we trying to operate on an old version?Nr\   r   rt   s   &&r^   validate_versionFixed.validate_versionq  r  r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r  t  s     	 	D 	r`   c                J    V P                   pVf   R# V P                  4        R# )zZ
infer the axes of my storer
return a boolean indicating if we have a valid storer or not
FT)r  r  )r   rn  s   & r^   rt  Fixed.infer_axest  s"    
 MM9r`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r   r   rZ   zSeries | DataFramer\   )r]   s   "r^   r_   r    s*     	
 	
 		

 	
 
	
r`   c                	    \        R 4      h)z>cannot read on an abstract storer: subclasses should implementr   r   rt   r   r   r   s   &&&&&r^   rj  
Fixed.read  s     "L
 	
r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     
 
d 
r`   c                	    \        R 4      h)z?cannot write on an abstract storer: subclasses should implementr.  r   rA  r   s   &&,r^   rF  Fixed.write  s    !M
 	
r`   c               $    V ^8  d   QhRRRRRR/# rW   r   r   r   rZ   r\   )r]   s   "r^   r_   r    s$     ? ?!+?:D?	?r`   c                    \         P                  ! WV4      '       d*   V P                  P                  V P                  RR7       R# \        R4      h)z[
support fully deleting the node in its entirety (only) - where
specification must be None
Tr  Nz#cannot delete on an abstract storer)r  r  r   rM  r   r   )r   rt   r   r   s   &&&&r^   r  Fixed.delete  s?     <<d++LL$$TZZ4$@=>>r`   )rX   r   r   r   )rU   r   rb   NNNNrZ  )#r  r\  r]  r^  r_  r`  r  r  r   ra  r  r  r  r%  rE  r  rR  r  r   r   r   r   r  r  r  r  rD  rr  r  r'  rt  rj  rF  r  rb  r\   r`   r^   r  r  
  s}   
 K&&
IHd V V 
 
 A A	 2
   & & # # $ $ & & ' ' # #((     5 5:		


? ?r`   r  c                  \   ] tR tRt$ Rt]R]R/t]P                  4        U Uu/ uF  w  rWbK	  	  upp t	. t
R]R&   R R ltR	 tR
 tR R lt]R R l4       tR R ltR R ltR R ltR'R R lltR'R R lltR R ltR R ltR'R R lltR'R  R! lltR" R# ltR(R$ R% lltR&tR# u upp i ))GenericFixedi  za generified fixed versiondatetimer|  r5  
attributesc                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   GenericFixed.__annotate__  s     1 1c 1r`   c                	:    V P                   P                  VR 4      # ) )_index_type_mapr   )r   r;  s   &&r^   _class_to_aliasGenericFixed._class_to_alias  s    ##''R00r`   c                	r    \        V\        4      '       d   V# V P                  P                  V\        4      # rb   )rg   r  _reverse_index_mapr   r.   )r   aliass   &&r^   _alias_to_classGenericFixed._alias_to_class  s-    eT""L&&**5%88r`   c                	"   V P                  \        VR R4      4      p/ pV\        8X  d	   RR lpTpMV\        8X  d	   RR lpTpMTpRVR&   RV9   d   VR,          VR&   V\        J d   \
        pRV9   d   VR,          VR&   V\        J g   Q hWS3# )	index_classrA  c                    \         P                  ! V P                  V P                  VR 7      p\        P                  ! VRR7      pVe!   VP                  R4      P                  V4      pV# ))r  r  Nrh   r  )r8   _simple_newr  r  r-   r  r  )r  r  r  dtaresults   &&&  r^   r{   *GenericFixed._get_index_factory.<locals>.f  sZ    #//MMD '223TB>#//6AA"EFr`   c                v    \        V4      p\        P                  ! WR 7      p\        P                  ! VRR7      # )r  Nrh   )r*   r9   rM  r0   )r  r  r  r  parrs   &&&  r^   r{   rP    s/    #D)"..vC"..t$??r`   Fr  r  r  r[  )rH  r  r-   r0   r.   r4   )r   r  rK  r   r{   r  s   &&    r^   _get_index_factoryGenericFixed._get_index_factory  s    **75-+LM -' GK'@
 G!G"F6NU?"6]F6Ne#(5= ;F4L-///r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r?    s      t r`   c                B    Ve   \        R4      hVe   \        R4      hR# )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   rt   s   &&&r^   validate_readGenericFixed.validate_read  s=     T  Y  r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r?    r(  r`   c                	    R # )Tr\   r   s   &r^   rD  GenericFixed.is_exists  s    r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r?    s     ( (4 (r`   c                r    V P                   V P                  n         V P                  V P                  n        R# r  )rX   r  r   r   s   &r^   r  GenericFixed.set_attrs  s"    "mm

 KK

r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r?    s     ; ;4 ;r`   c           
         \        \        V P                  RR4      4      V n        \        V P                  RR4      V n        V P
                   F$  p\        W\        V P                  VR4      4       K&  	  R# )retrieve our attributesrX   Nr   r   )re   r  r  rX   r   r=  r  )r   r<  s   & r^   r  GenericFixed.get_attrs  sT    (Z)NOdjj(H=ADWTZZD9: !r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r?    s      d r`   c                	&    V P                  4        R # rb   )r  r3  s   &&,r^   rF  GenericFixed.write  s    r`   Nc               $    V ^8  d   QhRRRRRR/# rz  r\   )r]   s   "r^   r_   r?    s!     * *c ** *: *r`   c                   ^ RI p\        V P                  V4      pVP                  p\        VRR4      p\	        WTP
                  4      '       d*   V^ ,          W# p\        VRR4      p	V	e   \        WR7      pM\        VRR4      p	\        VRR4      p
V
e   \        P                  ! WR7      pMWRV pV	'       d;   V	P                  R4      '       d$   V	R8X  d   Rp	\        VR	R4      p\        WV	4      pMVV	'       dO   V	P                  R
4      '       d8   V	R
8X  d   \        P                  ! VRR7      pM\        P                  ! WR7      pV'       d   VP                  # V# )z2read an array for the specified node (off of groupN
transposedF
value_typer  rR  r  r  r  r  r  )r   r  r   r  rg   VLArraypd_arrayr  r@  r  r  r  T)r   r   r   r   r   r  r  rh  retr  rR  r  s   &&&&        r^   
read_arrayGenericFixed.read_array  s(   tzz3'UL%8
dNN++q'%%CE<6E s0E<6EE7D1E hhu2&)),77L(,EUD$/cu-5++M::M) **S9C**S6C55LJr`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r   r[   r   r   r   rZ   r.   r\   )r]   s   "r^   r_   r?  '  s2     F FF)F8BF	Fr`   c                	    \        V P                  V R 24      pVR8X  d   V P                  WVR7      # VR8X  d,   \        V P                  V4      pV P	                  WRVR7      pV# \        RV 24      h)_varietymultir   r   regularzunrecognized index variety: )r  r  read_multi_indexr   read_index_noder   )r   r   r   r   varietyr  r   s   &&&&   r^   
read_indexGenericFixed.read_index'  s~     $**X&67g(((EE	!4::s+D(((FEL:7)DEEr`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r[   r   r.   rZ   r   r\   )r]   s   "r^   r_   r?  5  s!     5 5s 55 5T 5r`   c                	j   \        V\        4      '       d.   \        V P                  V R 2R4       V P	                  W4       R# \        V P                  V R 2R4       \        RW P                  V P                  4      pV P                  WP                  4       \        V P                  V4      pVP                  VP                  n        VP                  VP                  n        \        V\        \         34      '       d*   V P#                  \%        V4      4      VP                  n        \        V\        \         \(        34      '       d   VP*                  VP                  n        \        V\        4      '       d7   VP,                  e'   \/        VP,                  4      VP                  n        R# R# R# )rr  rs  ru  r   N)rg   r/   r  r  write_multi_index_convert_indexrX   r   write_arrayr  r  r   r  r  ri   r-   r0   rC  r  rK  r4   r  r  _get_tz)r   r   r   r  r  s   &&&  r^   write_indexGenericFixed.write_index5  s*   eZ((DJJ3%x 0':""3.DJJ3%x 0)<&w}}dkkRIS"2"234::s+D!*DMM!&DMM%-!=>>,0,@,@e,M)%-n!MNN%*ZZ"%//EHH4H#*588#4  5I/r`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r[   r   r/   rZ   r   r\   )r]   s   "r^   r_   r?  L  s!     5 5S 5 5 5r`   c           	     	   \        V P                  V R 2VP                  4       \        \	        VP
                  VP                  VP                  RR7      4       EF  w  pw  rEp\        VP                  \        4      '       d,   \        VP                  \        4      '       g   \        R4      hV RV 2p\        WtV P                  V P                  4      pV P!                  WxP"                  4       \%        V P&                  V4      p	VP(                  V	P*                  n        WiP*                  n        \        V	P*                  V RV 2V4       V RV 2p
V P!                  W4       EK  	  R# )_nlevelsTr  z=Saving a MultiIndex with an extension dtype is not supported._level_name_labelN)r  r  r1  	enumerater  levelsri  namesrg   r  r)   r3   r   r~  rX   r   r  r  r  r   r  r  ri   )r   r   r   ilevlevel_codesri   	level_key
conv_levelr  	label_keys   &&&        r^   r}  GenericFixed.write_multi_indexL  s-   

se8,emm<+4ekk5;;tD,
'A'$ #))^44Z		;> > *S  %vaS)I'	t{{SJY(9(9:4::y1D!+DMM!%MM DMMcU%v#6= %vaS)IY4-,
r`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r   r[   r   r   r   rZ   r/   r\   )r]   s   "r^   r_   r?  g  s,     
 

)
8B
	
r`   c                	   \        V P                  V R 24      p. p. p. p\        V4       F  pV RV 2p	\        V P                  V	4      p
V P	                  WVR7      pVP                  V4       VP                  VP                  4       V RV 2pV P                  WVR7      pVP                  V4       K  	  \        WVVRR7      # )r  r  rt  r  T)r  ri  r  r  )	r  r  r  r   rw  r   ri   rn  r/   )r   r   r   r   r1  r  ri  r  r  r  r  r  r  r  s   &&&&          r^   rv  GenericFixed.read_multi_indexg  s     $**X&67 "wA%vaS)I4::y1D&&tt&DCMM#LL"%vaS)I//)t/LKLL%   ed
 	
r`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r  rL   r   r   r   rZ   r.   r\   )r]   s   "r^   r_   r?  ~  s,     4 44!+4:D4	4r`   c           
     	   WV pR VP                   9   dp   \        P                  ! VP                   P                  4      ^ 8X  dA   \        P                  ! VP                   P                  VP                   P
                  R7      pVP                   P                  pRpRVP                   9   d    \        VP                   P                  4      pVP                   pV P                  V4      w  rVR
9   d1   V! \        WEV P                  V P                  R7      3R\        /V	B p
M* V! \        WEV P                  V P                  R7      3/ V	B p
Wjn        V
#   \         d   pT P                  R8X  d   \        4       '       dv   \!        T4      P#                  R4      '       dV   \$        '       dJ   T! \        YET P                  T P                  R7      3R\'        R\        P(                  R	7      /T	B p
 Rp?Lh Rp?ii ; i)rR  r  Nri   r(  r  r  r  r  r  )r   r  )r  r  prodrR  r@  ri  r  rj   ri   rS  _unconvert_indexrX   r   r  r  r   r[   rS  r   r3   r  )r   r  r   r   r  r  ri   r  r  r   r   r  s   &&&&        r^   rw  GenericFixed.read_index_node~  s    $ dmm#0C0C(D(I88DMM//t}}7O7OPD}}!!T]]"t}}112D11%8%% t{{ 	
 E$T]]4;; 	. 
' & KK?2*,,C))*BCC##( t{{ *(RVVL	
 !E s&   $)E G< AG7-AG76G77G<c               $    V ^8  d   QhRRRRRR/# )rW   r   r[   r   rN   rZ   r   r\   )r]   s   "r^   r_   r?    s!     * *S * *t *r`   c                J   \         P                  ! RVP                  ,          4      pV P                  P	                  V P
                  W4       \        V P
                  V4      p\        VP                  4      VP                  n
        VP                  VP                  n        R# )zwrite a 0-len arrayN)r   )r  r@  r  r   create_arrayr   r  r[   r  r  ri  rR  )r   r   r   arrr  s   &&&  r^   write_array_emptyGenericFixed.write_array_empty  sh     hhtejj()!!$**c7tzz3'#&u{{#3 #kkr`   c               (    V ^8  d   QhRRRRRRRR/# )	rW   r   r[   rA  rM   rH  zIndex | NonerZ   r   r\   )r]   s   "r^   r_   r?    s8     ]B ]B]B)]B2>]B	]Br`   c                	
   \        VR R7      pWP                  9   d'   V P                  P                  V P                  V4       VP                  ^ 8H  pRp\        VP                  \        4      '       d   \        R4      hV'       g!   \        VR4      '       d   VP                  pR pRpV P                  eN   \        \        4      ;_uu_ 4        \        4       P                  P!                  VP                  4      pRRR4       Ve_   V'       gD   V P                  P#                  V P                  WVP$                  V P                  R7      pWHR&   EMV P'                  W4       EMVP                  P(                  \*        P,                  8X  d   \.        P0                  ! VRR7      p	V'       d   MMV	R	8X  d   ME\3        R
4      '       d5   \4        WV3,          p
\6        P8                  ! V
\:        \=        4       R7       V P                  P?                  V P                  V\        4       PA                  4       4      pVPC                  V4       EM\.        PD                  ! VP                  R4      '       dp   V P                  PG                  V P                  WPI                  R4      4       \K        VP                  4      \M        V P                  V4      PN                  n(        EM8\        VP                  \R        4      '       d   V P                  PG                  V P                  VVPT                  4       \M        V P                  V4      p\W        VPX                  4      VPN                  n,        RVP                  PZ                   R2VPN                  n(        EM\.        PD                  ! VP                  R4      '       do   V P                  PG                  V P                  WPI                  R4      4       \K        VP                  4      \M        V P                  V4      PN                  n(        M\        V\\        4      '       d   V P                  P?                  V P                  V\        4       PA                  4       4      pVPC                  VP_                  4       4       \M        V P                  V4      p\K        VP                  4      VPN                  n(        M@V'       d   V P'                  W4       M&V P                  PG                  V P                  W4       V\M        V P                  V4      PN                  n0        R#   + '       g   i     ELO; i)T)extract_numpyFz^Cannot store a category dtype in an HDF5 dataset that uses format="fixed". Use format="table".rl  N)r   NNNskipnar  performance_warningsr  r  r  datetime64[r  rf  )1r?   r   r   rM  rh  rg   r  r'   r   r  rl  r   r   r   r   Atom
from_dtypecreate_carrayrR  r  r  r  object_r   infer_dtyper   rz   r  r  r   r    create_vlarray
ObjectAtomr   r  r  viewr[   r  r  ri  r(   asi8r  r  unitr;   to_numpyrh  )r   r   rA  rH  r   empty_arrayrh  ro  cainferred_typer  vlarrr  s   &&&&         r^   r  GenericFixed.write_array  s    c6**LL$$TZZ5 jjAo
ekk#344%/  uc""!
==$*%%y~~00= & 
 \\//JJ5;; 0  1 &&s2[[+  OOE%@M(*233$E'BBb"4AQASTLL//

CAUAUAWXELL__U[[#..LL%%djj#zz$7GH;>u{{;KGDJJ$--8_55
 LL%%



 4::s+D&uxx0DMM)4U[[5E5E4Fa'HDMM$__U[[#..LL%%djj#zz$7GH;>u{{;KGDJJ$--8//LL//

CAUAUAWXELL)*4::s+D'*5;;'7DMM$""3.LL%%djj#=7A

C ))4A &%%s   .UU	r(  r[  rb   )r  r\  r]  r^  r_  r-   r0   rB  rH  rF  r=  r`  rC  rH  rS  rW  ra  rD  r  r  rF  rn  ry  r  r}  rv  rw  r  r  rb  )r  r  s   00r^   r;  r;    s    $$j+xHO+:+@+@+BC+B41!$+BCJ	19)V  (
;*XF5.56
.4l*]B ]By Ds   B(r;  c                  j   a  ] tR tRt$ RtR.tR]R&   ]R R l4       tRR R llt	R	 V 3R
 llt
RtV ;t# )r/  i  r$  ri   rE   c                   V ^8  d   QhRR/# )rW   rZ   ztuple[int] | Noner\   )r]   s   "r^   r_   SeriesFixed.__annotate__$  s      ( r`   c                	t     \        V P                  P                  4      3#   \        \        3 d     R # i ; irb   )rs   r   r  r   r   r   s   &r^   rR  SeriesFixed.shape#  s6    	

))*,,>* 		s   " 77c               $    V ^8  d   QhRRRRRR/# rW   r   r   r   rZ   r2   r\   )r]   s   "r^   r_   r  *  s*       	
  
r`   c                	   V P                  W!4       V P                  R W4R7      pV P                  RW4R7      p \        WeV P                  RR7      pV#   \
         d   pT P                  R8X  dv   \        4       '       df   \        T4      P                  R4      '       dF   \        '       d:   \        TTT P                  R\        R\        P                  R7      R	7      p R
p?T# h R
p?ii ; i)r   rt  r  F)r   ri   r  r  r  r  r  )r   ri   r  r  N)rW  ry  rn  r2   ri   r  r   r   r[   rS  r   r3   r  r  )	r   rt   r   r   r   r   r  rO  r  s	   &&&&&    r^   rj  SeriesFixed.read*  s     	7*u@B	FdiieLF" ! " 	.&((H%%&>??K%hH  	s$   A C*AC%+3C%$C%%C*c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r  H  s     # #d #r`   c                	   < \         SV `  ! V3/ VB  V P                  R VP                  4       V P	                  RV4       VP
                  V P                  n        R# )r   r  N)rC  rF  r  r   r  ri   r  )r   rA  r   rD  s   &&,r^   rF  SeriesFixed.writeH  sG    c$V$#)),3'((

r`   r\   r9  )r  r\  r]  r^  r  r=  r`  ra  rR  rj  rF  rb  r  r  s   @r^   r/  r/    s5    KJ
N <# #r`   r/  c                  h   a  ] tR tRt$ RR.tR]R&   ]R R l4       tRR R lltR	 V 3R
 llt	Rt
V ;t# )BlockManagerFixediO  r  nblocksrn   c                   V ^8  d   QhRR/# )rW   rZ   zlist[int] | Noner\   )r]   s   "r^   r_   BlockManagerFixed.__annotate__U  s      ' r`   c                	    V P                   p^ p\        V P                  4       F?  p\        V P                  RV R24      p\        VRR4      pVf   K0  W%^ ,          ,          pKA  	  V P                  P
                  p\        VRR4      pVe   \        V^ V^,
           4      pM. pVP                  V4       V#   \         d     R# i ; i)rs  block_itemsrR  N)	r  r  r  r  r   block0_valuesrq   r   r   )r   r  rH  r  r  rR  s   &     r^   rR  BlockManagerFixed.shapeT  s    	99D E4<<(tzzU1#V+<=gt4$1X%E	 ) ::++DD'40E U1q23LLL 		s   AB: A$B: :C	C	c               $    V ^8  d   QhRRRRRR/# rW   r   r   r   rZ   r,   r\   )r]   s   "r^   r_   r  o  s*     &9 &9 	&9
 &9 
&9r`   c                	   V P                  W!4       V P                  4       P                  ^ 4      p. p\        V P                  4       F7  pWu8X  d   W43MRw  rV P                  RV 2WR7      p
VP                  V
4       K9  	  V^ ,          p. p\        V P                  4       F  pV P                  RV R24      pV P                  RV R2XX	R7      pWP                  V4      ,          p\        VP                  W&^,          RR7      p\        4       '       d]   \        V\        P                  4      '       d=   \!        VRR	7      '       d*   VP#                  \%        \        P&                  R
7      4      pVP                  V4       K  	  \)        V4      ^ 8  d.   \+        V^R7      P-                  4       pVP/                  VR7      # \        V^ ,          V^,          R7      # )rs  r  rt  r  r  r  Fr   r   r  Tr  )r  r  rB  r   r   r[  )rW  r  _get_block_manager_axisr  r  ry  r   r  rn  r  r,   rl  r   rg   r  r  r   r  r3   r  rs   r5   r  r  )r   rt   r   r   r   select_axisr  r  rk  rl  axrH  dfs	blk_itemsr  dfouts   &&&&&            r^   rj  BlockManagerFixed.reado  s    	7*mmo==a@tyy!A-.-=UM<MF4s6FBKKO "
 Qt||$A%s&(9:I__uQCw%7vE_RF--i89G688WG%PB"$$vrzz22#F488YY{BFF;<JJrN % s8a<1%**,C;;u;--aQ88r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     ; ;d ;r`   c                	  < \         SV `  ! V3/ VB  VP                  pVP                  4       '       g   VP	                  4       pVP
                  V P                  n        \        VP                  4       F>  w  rEV^ 8X  d   VP                  '       g   \        R4      hV P                  RV 2V4       K@  	  \        VP                  4      V P                  n        \        VP                  4       Fb  w  rFVP                  P!                  VP"                  4      pV P%                  RV R2VP&                  VR7       V P                  RV R2V4       Kd  	  R# )rs  z/Columns index has to be unique for fixed formatr  r  r  )rH  r  N)rC  rF  _mgris_consolidatedconsolidater  r  r  r  	is_uniquer   r  rs   blocksr  rH  r  mgr_locsr  r  )	r   rA  r   r  r  r  blkr  rD  s	   &&,     r^   rF  BlockManagerFixed.write  s   c$V$xx##%%##%D))

tyy)EAAvr||| !RSStA3Z, * !-

,FA

5IuQCw/9MuQCv.	:	 -r`   r\   r9  )r  r\  r]  r^  r=  r`  ra  rR  rj  rF  rb  r  r  s   @r^   r  r  O  s4    )$JL 4&9P; ;r`   r  c                      ] tR tRtRt]tRtR# )r0  i  r%  r\   N)r  r\  r]  r^  r  r,   r  rb  r\   r`   r^   r0  r0    s    KHr`   r0  c                    a  ] tR tRt$ RtRtRtR]R&   R]R&   ^tR]R	&   R
t	R]R&   RUR V 3R lllt
]R R l4       tR R ltR R ltR R lt]R R l4       tR R lt]R R l4       t]R R l4       t]R 4       t]R  4       t]R! 4       t]R" 4       t]R# R$ l4       t]R% R& l4       t]R' R( l4       t]R) R* l4       tR+ R, ltR- R. ltR/ R0 ltR1 R2 ltR3 R4 lt R5 R6 lt!R7 R8 lt"R9 R: lt#RVR; R< llt$R= R> lt%]&R? 4       t'RWR@ RA llt(RXRB RC llt)]*RD RE l4       t+RF RG lt,RYRH RI llt-].RJ RK l4       t/RVRL RM llt0RN RO lt1RWRP RQ llt2RWRR RS llt3RTt4V ;t5# )Zr9  i  a  
represent a table:
    facilitate read/write of various types of tables

Attrs in Table Node
-------------------
These are attributes that are store in the main table node, they are
necessary to recreate these tables when read back in.

index_axes    : a list of tuples of the (original indexing axis and
    index column)
non_index_axes: a list of tuples of the (original index axis and
    columns on a non-indexing axis)
values_axes   : a list of the columns which comprise the data of this
    table
data_columns  : a list of the columns that we are allowing indexing
    (these become single columns in values_axes)
nan_rep       : the string to use for nan representations for string
    objects
levels        : the names of levels
metadata      : the names of the metadata columns

wide_tabler~   r[   r  r!  zint | list[Hashable]r  Trq   r  c               @    V ^8  d   QhRRRRRRRRR	R
RRRRRRRRRR/
# )rW   r   r   r   rL   rX   rY   r   r[   
index_axeszlist[IndexCol] | Noner  z list[tuple[AxisInt, Any]] | Nonevalues_axeszlist[DataCol] | Noner   zlist | Noner  zdict | NonerZ   r   r\   )r]   s   "r^   r_   Table.__annotate__  sn        	
  * 9 * "  
r`   c                	   < \         SV `  WW4R 7       T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        T;'       g    . V n        T	;'       g    / V n        Wn        R# )r(  N)rC  r   r  r  r  r   r  r   )r   r   r   rX   r   r  r  r  r   r  r   rD  s   &&&&&&&&&&&r^   r   Table.__init__  sh     	I$**,22&,,"(..BJJB	r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r    s     - -# -r`   c                	F    V P                   P                  R 4      ^ ,          # )_)r!  rR  r   s   &r^   table_type_shortTable.table_type_short  s    $$S)!,,r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r    s     
 
# 
r`   c                4   V P                  4        \        V P                  4      '       d   RP                  V P                  4      MRpRV R2pRpV P                  '       d;   RP                  V P
                   Uu. uF  p\        V4      NK  	  up4      pRV R2pRP                  V P                   Uu. uF  qfP                  NK  	  up4      pV P                  R V RV P                   R	V P                   R
V P                   RV RV R2# u upi u upi )r  r  rA  z,dc->[r  r  r  r  z (typ->z,nrows->z,ncols->z,indexers->[r  )rt  rs   r   r  r  r  r[   r  ri   r  r  rr  ncols)r   jdcr  verr  jverr   jindex_axess   &       r^   r%  Table.__repr__  s   -01B1B-C-Cchht(()cU!_88T\\:\SV\:;DdV1+Chh@1@A&se ,**+8DJJ< @jj\k]!B4qB	
	 ;  As   <D6Dc                   V ^8  d   QhRR/# )rW   r  r[   r\   )r]   s   "r^   r_   r    s      S r`   c                T    V P                    F  pWP                  8X  g   K  Vu # 	  R# )zreturn the axis for cN)r  ri   )r   r  r   s   && r^   r  Table.__getitem__  s#    AFF{  r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     % % %r`   c                2   Vf   R# VP                   V P                   8w  d'   \        RVP                    RV P                    R24      hR F  p\        WR4      p\        WR4      pW48w  g   K#  \        V4       F  w  rVWE,          pWg8w  g   K  VR8X  dV   VP                  VP                  8w  d;   \        RVP                  ^ ,           RVP                   RVP                   R	24      h\        R
V RV RV R24      h	  \        R
V RV RV R24      h	  R# )z"validate against an existing tableNz'incompatible table_type with existing [r	  r  r  Cannot serialize the column [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   r  r  )r   r  r  svovr  saxoaxs   &&      r^   r  Table.validate  sM   =t.$$%S(9< 
 AA$'B4(Bx (mFA%Cz-#((chh2F","?

1 OFFIhhZ P((+z!A# 
 )6qc :  #u$8Q@  ,   .qc1Frd K&&(T, / Ar`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r  ,  s     - - -r`   c                6    \        V P                  \        4      # )z@the levels attribute is 1 or a list in the case of a multi-index)rg   r  rq   r   s   &r^   is_multi_indexTable.is_multi_index+  s     $++t,,r`   c                    V ^8  d   QhRRRR/# )rW   rA  r   rZ   z tuple[DataFrame, list[Hashable]]r\   )r]   s   "r^   r_   r  0  s     ! !%!	)!r`   c                    \         P                  ! VP                  P                  4      p VP	                  4       p\        T\        4      '       g   Q hY23#   \
         d   p\        R4      ThRp?ii ; i)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   rg   r,   )r   rA  r  	reset_objr  s   &&   r^   validate_multiindexTable.validate_multiindex0  sp     ''		8	)I
 )Y////    	T	s   A A3"A..A3c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r  B  s     F F Fr`   c                    \         P                  ! V P                   Uu. uF  qP                  P                  ^ ,          NK!  	  up4      # u upi )z-based on our axes, compute the expected nrows)r  r  r  r  rR  r   r  s   & r^   nrows_expectedTable.nrows_expectedA  s7     wwDOODOq		**ODEEDs   %Ac                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r  G  s     % %4 %r`   c                     RV P                   9   # )zhas this table been createdr~   r  r   s   &r^   rD  Table.is_existsF  s     $**$$r`   c                	0    \        V P                  R R4      # r~   Nr  r   r   s   &r^   r  Table.storableK  s    tzz7D11r`   c                    V P                   # )z,return the table group (this is my storable))r  r   s   &r^   r~   Table.tableO  s     }}r`   c                	.    V P                   P                  # rb   )r~   r  r   s   &r^   r  Table.dtypeT  s    zzr`   c                	.    V P                   P                  # rb   r  r   s   &r^   r  Table.descriptionX  r  r`   c                   V ^8  d   QhRR/# )rW   rZ   zitertools.chain[IndexCol]r\   )r]   s   "r^   r_   r  ]  s     B B/ Br`   c                	X    \         P                  ! V P                  V P                  4      # rb   )r  r  r  r  r   s   &r^   r  
Table.axes\  s    t0@0@AAr`   c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r  a  s     < <s <r`   c                :    \        R V P                   4       4      # )z.the number of total columns in the values axesc              3  L   "   T F  p\        VP                  4      x  K  	  R # 5irb   )rs   r  )r  r   s   & r^   r  Table.ncols.<locals>.<genexpr>c  s     ;*:Q3qxx==*:s   "$)sumr  r   s   &r^   r  Table.ncols`  s     ;$*:*:;;;r`   c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   r  f        t r`   c                	    R # rY  r\   r   s   &r^   is_transposedTable.is_transposede  r7  r`   c                   V ^8  d   QhRR/# )rW   rZ   ztuple[int, ...]r\   )r]   s   "r^   r_   r  j  s     
 
/ 
r`   c                   \        \        P                  ! V P                   Uu. uF  p\	        V^ ,          4      NK  	  upV P
                   Uu. uF  p\	        VP                  4      NK  	  up4      4      # u upi u upi )z@return a tuple of my permutated axes, non_indexable at the front)rr   r  r  r  rn   r  r  r   r   s   & r^   data_orientationTable.data_orientationi  sc     OO$($7$78$7qQqT$78&*oo6oQVVo6
 	
86s   A8A=c                   V ^8  d   QhRR/# )rW   rZ   dict[str, Any]r\   )r]   s   "r^   r_   r  s  s     " "N "r`   c                   ^ R^R/pV P                    Uu. uF  q"P                  V3NK  	  ppV P                   UUu. uF  w  rEW,          R3NK  	  pppV P                   Uu. uF6  qwP                  \        V P                  4      9   g   K(  VP                  V3NK8  	  pp\        W6,           V,           4      # u upi u uppi u upi )z<return a dict of the kinds allowable columns for this objectr   r   N)r  rz  r  r  ri   r  r   r  )	r   
axis_namesr   d1r  r  d2r  d3s	   &        r^   
queryablesTable.queryabless  s     !Y/
 %)OO4OqwwlO4;?;N;NO;N<4z&;NO"&"2"2
"2QffDDUDU@V6VLQWWaL"2 	 
 BGbL!! 5O
s   B8B="%CCc                   V ^8  d   QhRR/# )rW   rZ   zlist[tuple[Any, Any]]r\   )r]   s   "r^   r_   r    s     < <1 <r`   c                n    V P                    Uu. uF  qP                  VP                  3NK  	  up# u upi )zreturn a list of my index cols)r  r  rz  r  s   & r^   
index_colsTable.index_cols  s+     ,0??;?a!?;;;s    2c                   V ^8  d   QhRR/# )rW   rZ   r5  r\   )r]   s   "r^   r_   r    s     3 3Y 3r`   c                V    V P                    Uu. uF  qP                  NK  	  up# u upi )zreturn a list of my values cols)r  rz  r  s   & r^   values_colsTable.values_cols  s$    !%!1!12!1A!1222s   &c                    V ^8  d   QhRRRR/# )rW   r   r[   rZ   r\   )r]   s   "r^   r_   r    s     * *c *c *r`   c                >    V P                   P                  pV RV R2# )z)return the metadata pathname for this keyz/meta/z/metar  re  s   && r^   _get_metadata_pathTable._get_metadata_path  s$    

&&se5))r`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r[   r  r  rZ   r   r\   )r]   s   "r^   r_   r    s!     
 
# 
z 
d 
r`   c           	         V P                   P                  V P                  V4      \        VRR7      RV P                  V P
                  V P                  R7       R# )zs
Write out a metadata array to the key as a fixed-format Series.

Parameters
----------
key : str
values : ndarray
Fr  r~   )r]   rX   r   r   N)r   r   rK  r2   rX   r   r   )r   r   r  s   &&&r^   r   Table.write_metadata  sI     	##C(6&]];;LL 	 	
r`   c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   r    s       r`   c                    \        \        V P                  RR4      VR4      e+   V P                  P                  V P	                  V4      4      # R# )z'return the meta data array for this keyr   N)r  r   r   r   rK  r   s   &&r^   r*  Table.read_metadata  sA    74::vt4c4@L;;%%d&=&=c&BCCr`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     $ $4 $r`   c                D   \        V P                  4      V P                  n        V P                  4       V P                  n        V P	                  4       V P                  n        V P
                  V P                  n        V P                  V P                  n        V P                  V P                  n        V P                  V P                  n        V P                  V P                  n	        V P                  V P                  n
        V P                  V P                  n        R# )zset our table type & indexablesN)r[   r!  r  rC  rG  r  r   r   rX   r   r  r  r   s   &r^   r  Table.set_attrs  s     #DOO 4

 $ 1

!%!1!1!3

$($7$7

!"&"3"3

!\\

"mm

 KK

 KK

))

r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     
Q 
Q4 
Qr`   c                   \        V P                  RR4      ;'       g    . V n        \        V P                  RR4      ;'       g    . V n        \        V P                  RR4      ;'       g    / V n        \        V P                  RR4      V n        \        \        V P                  RR4      4      V n        \        V P                  RR4      V n        \        V P                  R	R4      ;'       g    . V n	        V P                   Uu. uF  qP                  '       g   K  VNK  	  upV n        V P                   Uu. uF  qP                  '       d   K  VNK  	  upV n        R# u upi u upi )
ra  r  Nr   r  r   rX   r   r   r  )r  r  r  r   r  r   re   rX   r   r  
indexablesrw  r  r  r5  s   & r^   r  Table.get_attrs  s   %djj2BDIOOR#DJJEKKDJJ5;;	tzz9d;(Z)NOdjj(H=&-djj(D&I&O&OR&*ooKo9J9J11oK'+P!>O>OAAP LPs   E E 8E%E%c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     	 	d 	r`   c           	        Ve{   V P                   '       dg   \        RP                  V P                   Uu. uF  p\	        V4      NK  	  up4      ,          p\
        P                  ! V\        \        4       R7       R# R# R# u upi )r%  Nr  r  )	r  rx   r  r  r[   r  r  r   r    )r   rt   r  r  s   &&  r^   r'  Table.validate_version  sc    """(388T\\4R\SV\4R+SS*/1 # 4Rs   B
c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s      T r`   c                    Vf   R# \        V\        4      '       g   R# V P                  4       pV F!  pVR8X  d   K  W29  g   K  \        RV R24      h	  R# )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)rg   r  r?  r   )r   r   qr  s   &&  r^   validate_min_itemsizeTable.validate_min_itemsize  s`    
 ,--OOAH}z 0 4" "  r`   c                n  a aaaa . pS P                   oS P                  P                  o\        S P                  P                  4       Fm  w  pw  r4\        SV4      pS P                  V4      pVe   RMRpV R2p\        SVR4      p	\        VVVV	VS P                  VVR7      p
VP                  V
4       Ko  	  \        S P                  4      o\        V4      oR VVVV V3R llpTP                  \        S P                  P                  4       UUu. uF  w  r,V! W,4      NK  	  upp4       V# u uppi )z/create/cache the indexables if they don't existNr&  r  )ri   r  r~  r  r}  r~   r   r  c                    V ^8  d   QhRRRR/# )rW   r  r[   rZ   r?  r\   )r]   s   "r^   r_   &Table.indexables.<locals>.__annotate__  s     !	 !	C !	G !	r`   c                  < \        V\        4      '       g   Q h\        pVS9   d   \        p\	        SV4      p\        VSP                  4      p\	        SV R 2R4      p\	        SV R2R4      p\        V4      pSP                  V4      p\	        SV R2R4      p	V! VVVVSV ,           VSP                  V	VVR7
      p
V
# )r  NrH  rM  )
ri   rz  r  r  r~  r}  r~   r   r  r  )
rg   r[   r?  r  r  _maybe_adjust_namer  r\  r*  r~   )r  r  klassro  adj_namer  r  r  mdr   rA  base_posr  descr   table_attrss   &&         r^   r{   Table.indexables.<locals>.f  s    a%%%%EBw(4#D)!T\\:H [XJe*<dCFKH:V)<dCE "%(D##A&B ;8*E(:DADqLjjC Jr`   )r  r~   r  r  rC  r  r*  rv  r   r  r   rs   r  rG  )r   _indexablesr  r  ri   ro  ri  r   r  r  	index_colr{   r  rj  r  rk  rl  s   f            @@@@r^   rX  Table.indexables  s%    jj&&
  ))>)>?OA|4&D##D)B!#:TD&I;	48D jj	I y)%  @* ""#{#!	 !	J 		$**:P:P0QR0QAaG0QRS Ss   D1
c                    V ^8  d   QhRRRR/# )rW   r  rY   rZ   r   r\   )r]   s   "r^   r_   r  ,  s      T T1;T	Tr`   c           
        V P                  4       '       g   R# VRJ d   R# Ve   VRJ d9   V P                   Uu. uF"  qDP                  '       g   K  VP                  NK$  	  pp\	        V\
        \        34      '       g   V.p/ pVe   W%R&   Ve   W5R&   V P                  pV EF  p\        VP                  VR4      pVe   VP                  '       dc   VP                  p	V	P                  p
V	P                  pVe   W8w  d   VP                  4        MWR&   Ve   W8w  d   VP                  4        MWR&   VP                  '       gA   VP                  P!                  R4      '       d   \#        R4      hVP$                  ! R/ VB  K  K  WpP&                  ^ ,          ^,          9   g   EK  \)        RV R	V R
V R24      h	  R# u upi )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  complexzColumns 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.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\   )rt  r  rx  rz  rg   rr   rq   r~   r  r  r	  r   r  r  remove_indexr  r  r   r  r  r   )r   r   r  r  r   kwr~   r  r  r   cur_optlevelcur_kinds   &&&&        r^   r  Table.create_index,  s   <   e ?go(,		I	15H5Hwqww	GI'E4=11iG%zNvJ

A

At,A}<<<GGE#(>>L$zzH'H,<(%-6
+0H()5: |||vv((33'H  NN(R( $ ))!,Q//$aS !//0c 21123SU A  Js   GGc               $    V ^8  d   QhRRRRRR/# )rW   r   r   r   rZ   z9list[tuple[np.ndarray, np.ndarray] | tuple[Index, Index]]r\   )r]   s   "r^   r_   r    s$        & 5? 	B r`   c                (   \        WW#R7      pVP                  4       p. pV P                   Fb  pVP                  V P                  4       VP                  VV P                  V P                  V P                  R7      pVP                  V4       Kd  	  V# )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]]
r|  r  )
	Selectionr   r  r  r  r  r   rX   r   r   )	r   rt   r   r   	selectionr  rs  r   ress	   &&&&     r^   
_read_axesTable._read_axes  s    " duH	!!#AJJtyy!)){{	  C NN3  r`   c                   V ^8  d   QhRR/# rW   rh  r   r\   )r]   s   "r^   r_   r    s       r`   c                    V# )zreturn the data for this objr\   r;  rA  rh  s   &&&r^   
get_objectTable.get_object  s	     
r`   c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r    s     $= $=SW $=r`   c                $   \        V4      '       g   . # V^ ,          w  rEV P                  P                  V/ 4      pVP                  R4      R8X  d   V'       d   \        RV RV 24      hVRJ d   \	        V4      pMVf   . p\        V\        4      '       dW   \        V4      p\	        V4      pTP                  VP                  4        Uu. uF  pVR8w  g   K  W9  g   K  VNK  	  up4       V U	u. uF  qV9   g   K  V	NK  	  up	# u upi u up	i )zL
take the input data_columns and min_itemize and create a data
columns spec
r  r/   z"cannot use a multi-index on axis [z] with data_columns Tr  )
rs   r  r   r   rq   rg   r  r  r  r=  )
r   r   r   r  r  axis_labelsr  existing_data_columnsr  r  s
   &&&&      r^   validate_data_columnsTable.validate_data_columns  s   
 >""I*1-yy}}T2&88F|+4TF ;  ,~/  4,L!L lD))$'$5!-L *..00H} )*)G A0 (<<a+;<<< =s   	DD!D2D?Dc                    V ^8  d   QhRRRR/# )rW   rA  r,   r  r   r\   )r]   s   "r^   r_   r    s$     p p p 	pr`   c                  a \        V\        4      '       g2   V P                  P                  p\	        RV R\        V4       R24      hSf   ^ .oS Uu. uF  qP                  V4      NK  	  upoV P                  4       '       dJ   Rp	V P                   Uu. uF  qP                  NK  	  upo\        V P                  4      pV P                  pMRp	V P                  p
V P                  ^8X  g   Q h\        S4      V P                  ^,
          8w  d   \!        R4      h. pVf   Rp\#        V3R	 lR 4       4      pVP$                  V,          p\        V4      pV	'       d   \        V4      pV P&                  V,          ^,          p\)        \*        P,                  ! V4      \*        P,                  ! V4      RRR
7      '       gR   \)        \*        P,                  ! \/        V4      4      \*        P,                  ! \/        V4      4      RRR
7      '       d   TpV
P1                  V/ 4      p\        VP2                  4      VR&   \        V4      P4                  VR&   VP7                  W34       S^ ,          pVP$                  V,          pVP9                  V4      p\;        VWP<                  V P>                  4      pVVn	        VPA                  ^ 4       VPC                  V
4       VPE                  V4       V.p\        V4      pV^8X  g   Q h\        V4      ^8X  g   Q hV F  p\G        W(^ ,          V^,          4      pK  	  VP                  ^8H  pV PI                  WVV4      pV PK                  VV4      PM                  4       pV PO                  VWV PP                  V4      w  pp. p\S        \U        VVRR7      4       EF-  w  pw  pp\V        pRpV'       dS   \        V4      ^8X  dC   V^ ,          V9   d5   \X        pV^ ,          pVe"   \        V\Z        4      '       g   \!        R4      hV	'       d   V'       d    V PP                  V,          pMRpT;'       g    RV 2p!\a        V!VPb                  VVVV P<                  V P>                  VR7      p"\e        V!V Pf                  4      p#VPi                  V"4      p$\k        V"Pl                  Pn                  4      p%Rp&\q        V"RR4      e   \s        V"Pt                  4      p&R;p';p(p)\        V"Pl                  \v        4      '       d>   V"Px                  p)Rp'\*        Pz                  ! V"P|                  4      P                  4       p(M5\        VPl                  \        4      '       d   \[        VPl                  4      p'\        V"4      w  p*p+V! V#V!\        V4      V$VV%V&V)V'V(V+V*R7      p,V,PC                  V
4       VP7                  V,4       V^,          pEK0  	  V U,u. uF#  p,V,P                  '       g   K  V,Pn                  NK%  	  p-p,\        V 4      ! V P                  V P                  V P<                  V P>                  VVVV-V
VR7
      p.\        V R4      '       d   V P                  V.nE        V.P                  V4       V'       d   V	'       d   V.P                  V 4       V.# u upi u upi   \\        \^        3 d#   p \!        RT RT PP                   R24      T hRp ? ii ; iu up,i )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  NTFz<currently only support ndim-1 indexers in an AppendableTabler  c              3  8   <"   T F  qS9  g   K  Vx  K  	  R # 5irb   r\   )r  r  r  s   & r^   r  %Table._create_axes.<locals>.<genexpr>  s     6f11fs   
r'  r  r  r  r  zIncompatible appended table [z]with existing table [values_block_)existing_colr   r   rX   r   r   r  r&  )ri   rz  r  r}  r~  r  r  r  r   r  r  r  )
r   r   rX   r   r  r  r  r   r  r   r  )rs  r   )Hrg   r,   r   r   r   r  _get_axis_numberrt  r  r  rq   r   r   r  r  rs   r   r  r  r  r+   r  r>   r  r  r  r  r   _get_axis_namer~  rX   r   r  r  r  _reindex_axisr  r  r  _get_blocks_and_itemsr  r  r  r?  r  r[   
IndexErrorr  _maybe_convert_for_string_atomr  rf  r  rp  r\  r  ri   r  r  r  r'   r  r  r  r  r3   r[  rx  r   r  r  r`  r  )/r   r  rA  r  r   r   r   r   r   table_existsnew_infonew_non_index_axesr  append_axisindexer
exist_axisr  	axis_name	new_indexnew_index_axesjrh  r%  r  r  vaxesr  r  b_itemsrg  ri   r  r  new_namedata_convertedrh  r}  r  r  r   r  r  r  r]  r  dcs	new_tables/   &f&&&&&                                        r^   _create_axesTable._create_axes  sG   @ #y))JJ&&EA% Is)A'  <3D 266A$$Q'6 ??L$(OO4OqFFO4D 1 12LllG !L99yyA~~t9		A%N 
 $& ?G 6f66HHSM1g,-G,,W5a8J#%$ 	  $HHVK01HHVJ/0# $	  #-K ""3+QWWWAw''V!!3"45 1gHHSM&&s+	"9aL		 	!h'  .#Avv %&!+++#AqT1Q40C $ ^^q(
 11(:
 Z0==? 66<T5E5E|
	
 !*3vy+N!OA~WED G 1gajL6P(qz
4(=(=$%TUU #'#3#3A#6L  $22qc2H;

)){{	N *(DLLAH//.1C!."6"6";";<DB~tT2>^../(,,D,8g...0@AA(00!::n&?&?@FFHCII{33399~7GD*G}! C OOH%LLFAW "PZ $)B5CC,A,Axsxx5BJ;;**]];;%-
	 4""#{{I''5t$I 7
 5^ #H- $7x @0040@0@/AD r Cs0   Z0Z52Z:+[0[0:[-[(([-c                    V ^8  d   QhRRRR/# )rW   r%  r,   r  r   r\   )r]   s   "r^   r_   r    s     9! 9!9!9!r`   c           
     	   R  pV P                   p\        VP                  4      pV! V4      p\        V4      '       d   V^ ,          w  r\	        V
4      P                  \	        V4      4      pV P                  WR7      P                   p\        VP                  4      pV! V4      pV FS  pV P                  V.V	R7      P                   pVP                  VP                  4       VP                  V! V4      4       KU  	  V'       d   \        WxRR7       UUu/ uF   w  r\        VP                  4       4      W3bK"  	  ppp. p. pV FN  p\        VP                  4      p VP                  V4      w  rVP                  V4       VP                  V4       KP  	  TpTpWx3# u uppi   \        \        3 dF   pRP!                  T Uu. uF  p\#        T4      NK  	  Mu upi up4      p\%        RT R24      ThRp?ii ; i)c                    V P                    Uu. uF'  qP                  P                  VP                  4      NK)  	  up# u upi rb   )r  rH  r  r  )mgrr  s   & r^   get_blk_items2Table._get_blocks_and_items.<locals>.get_blk_items  s-    <?JJGJSIINN3<<0JGGGs   -?r  Tr  r  z+cannot match existing table structure for [z] on appending dataN)r  rq   r  rs   r.   r  r  r  r  rr   tolistr  r  r   r  r  r  rC   r   )r%  r  r  r  r   r  r  r  r  r  r  
new_labelsr  br  by_items
new_blocksnew_blk_itemsearH  r  itemjitemss   &&&&&                  r^   r  Table._get_blocks_and_items  s   	H jj"3::.!.s!3	|
 !31 5D{+66u\7JKJ--
-6;;C#**%F%c*I! mmQCdm388cjj)  s!34 "  #&f"E"EJA gnn&'!5"E   ')JM!bii(	!)e!4JA%%a(!((1 "  F%I  + #H-  XXe&Led|D'9e&LMF$EfX N, , s*   &F5F$$G:5G5GG55G:c                    V ^8  d   QhRRRR/# )rW   r|  r{  rZ   r,   r\   )r]   s   "r^   r_   r    s     5 59 5y 5r`   c                  a a Ve   \        V4      pVeb   S P                  '       dP   \        S P                  \         4      '       g   Q hS P                   F  pWC9  g   K  VP	                  ^ V4       K  	  S P
                   F  w  rV\        SWVV4      oVV 3R lpK  	  VP                  e.   VP                  P                  4        F  w  rp
X! WV	4      oK  	  S# )zprocess axes filtersc                :  < SP                    F  pSP                  V4      pSP                  V4      pVf   Q hW8X  dZ   S	P                  '       d%   VP	                  \        S	P                  4      4      pV! WQ4      pSP                  VR7      V,          u # W9   g   K  \        \        SV 4      P                  4      p\        V4      p\        S\        4      '       d
   ^V,
          pV! Wq4      pSP                  VR7      V,          u # 	  \        RV  R24      h)Nr  zcannot find the field [z] for filtering!)_AXIS_ORDERSr  	_get_axisr
  unionr.   r  r  r@   r  r  rg   r,   r   )
fieldfiltopr  axis_numberaxis_valuestakersr  rA  r   s
   &&&     r^   process_filter*Table.process_axes.<locals>.process_filter  s   !$!1!1I"%"6"6y"AK"%--	":K&222 )  ...#'::eDKK.@#AD!#K!6"wwKw8@@ -!-gc5.A.H.H!I+D1 &c955*+k/K!#F!1"wwKw8@@5 "28 !#:5'AQ!RSSr`   )	rq   r
  rg   r  insertr  r  filterr]   )r   rA  r|  r   r<  r  labelsr  r  r  r  s   ff&&       r^   process_axesTable.process_axes  s     7mG 4#6#6#6dkk40000[[#NN1a( !
 !//LDT7;CT T 0F '#,#3#3#:#:#<4$U"5 $= 
r`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r   r   r   r   r  rZ   r9  r\   )r]   s   "r^   r_   r  4  s4        	
 ! 
r`   c                   Vf   \        V P                  R4      pRRRV/pV P                   Uu/ uF  qfP                  VP                  bK  	  upVR&   V'       dQ   Vf   V P
                  ;'       g    ^	p\        4       P                  TTT;'       g    V P                  R7      pWuR&   V# V P                  e   V P                  VR&   V# u upi )z:create the description of the table from the axes & valuesi'  ri   r~   r  r  )r   r   r   r   )
maxr  r  rz  r}  r   r   rM  r   r   )r   r   r   r   r  r  r   r   s   &&&&&   r^   create_descriptionTable.create_description4  s     t22E:LWnl; 59II>IqGGQUUNI>-  OO00q	i''#%99)9)9 ( G
 #iL  ]]&==AiL ?s   Cc                    V ^8  d   QhRRRR/# rW   r   r   r   r\   )r]   s   "r^   r_   r  S  s     ) )!+):D)r`   c                   V P                  V4       V P                  4       '       g   R# \        WW#R7      pVP                  4       pVP                  e   VP                  P                  4        Fz  w  rgpV P                  WeP                  4       VP                  4       ^,           R7      p	WW! V	P                  WUP                  4       ,
          ,          V4      P                  ,          pK|  	  \        VRR7      # )zN
select coordinates (row numbers) from a table; return the
coordinates object
Fr|  rt  r  )r'  rt  r{  select_coordsr  r]   r  rh  r  ilocr  r.   )
r   rt   r   r   r|  coordsr  r  r  r  s
   &&&&      r^   r~  Table.read_coordinatesS  s     	e$    duH	((*'#,#3#3#:#:#<4''FJJL14D (   499Vjjl-B#CT J Q QR	 $= V%((r`   c               $    V ^8  d   QhRRRRRR/# )rW   r  r[   r   r   r   r\   )r]   s   "r^   r_   r  m  s-     +D +D+D 	+D
 +Dr`   c                p   V P                  4        V P                  4       '       g   R# Ve   \        R4      hV P                   F  pWP                  8X  g   K  VP
                  '       g   \        RV R24      h\        V P                  P                  V4      pVP                  V P                  4       VP                  WcV V P                  V P                  V P                  R7      pV^,          p\        V P                  P                   V R2R4      p	\#        WRV	R7      u # 	  \%        RV R	24      h)
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 indexabler  rM  )ri   r  r  z] not found in the table)r'  rt  r   r  ri   rx  r   r  r~   r  r  r  r  r   rX   r   r  r2   r  )
r   r  rt   r   r   r   r  
col_valuescvsr  s
   &&&&&     r^   r  Table.read_columnm  s    	   RSS A***$"6( +3 3  DJJOOV4

499%YYDM LL!]];;	 ' 
 !m

 0 0VHE2BDIcU%HH' * &)ABCCr`   )	r   rX   r   r  r  r  r   r  r  )Nr   NNNNNNrb   rZ  r[  )TNNN)6r  r\  r]  r^  r_  r  r  r`  r  r  r   ra  r  r%  r  r  r
  r  r  rD  r  r~   r  r  r  r  r1  r6  r?  rC  rG  rK  r   r*  r  r  r'  r`  r   rX  r  r~  r  r  r  r  staticmethodr  r  r  r~  r  rb  r  r  s   @r^   r9  r9    s   . KKO#$F $HN * - -
$%N - -!" F F % % 2 2       & & B B < <   
 
"<
3*

$$
Q	* I IVTl D  $=Lpd 9! 9!v5n>)4+D +Dr`   r9  c                  :    ] tR tRtRtRtR
R R lltR R ltR	tR# )r7  i  z
a write-once read-many table: this format DOES NOT ALLOW appending to a
table. writing is a one-time operation the data are stored in a format
that allows for searching the data on disk
r.  Nc                    V ^8  d   QhRRRR/# r  r\   )r]   s   "r^   r_   WORMTable.__annotate__  s$     
G 
G 	
G
 
Gr`   c                    \        R4      h)zK
read the indices and the indexing array, calculate offset rows and return
z!WORMTable needs to implement readr.  r/  s   &&&&&r^   rj  WORMTable.read  s     ""EFFr`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r    s     H Hd Hr`   c                    \        R4      h)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.  r3  s   &&,r^   rF  WORMTable.write  s     ""FGGr`   r\   r9  )	r  r\  r]  r^  r_  r!  rj  rF  rb  r\   r`   r^   r7  r7    s      J
GH Hr`   r7  c                  Z    ] tR tRtRtRtRR R lltRR R lltR	 R
 ltRR R llt	Rt
R# )r  i  (support the new appendable table formats
appendableNc          
     ,    V ^8  d   QhRRRRRRRRRR/# )	rW   r   r   r   r   r   r  rZ   r   r\   )r]   s   "r^   r_   AppendableTable.__annotate__  s>     93 93 	93 93 93 93 
93r`   c           	     	b   V'       g9   V P                   '       d'   V P                  P                  V P                  R 4       V P	                  VVVVVVR7      pVP
                   F  pVP                  4        K  	  VP                   '       gR   VP                  VVVV	R7      pVP                  4        VVR&   VP                  P                  ! VP                  3/ VB  VP                  VP                  n
        VP
                   F  pVP                  W4       K  	  VP                  WR7       R# )r~   )r  rA  r  r   r   r   )r   r   r   r  r  )r   N)rD  r   rM  r   r  r  r  r  r  create_tabler  r  r  
write_data)r   rA  r  r   r   r   r   r   r   r  r   r   r   r  r~   r   optionss   &&&&&&&&&&&&&&   r^   rF  AppendableTable.write  s     $...LL$$TZZ9 !!%% " 
 A  ..#%)	 / G OO%0GM" MM&&u{{>g> !:: Au-  	2r`   c               $    V ^8  d   QhRRRRRR/# )rW   r   r   r   r   rZ   r   r\   )r]   s   "r^   r_   r    s!     9 9J 9 9 9r`   c                   V P                   P                  pV P                  p. pV'       d}   V P                   Fl  p\	        VP
                  4      P                  ^ R7      p\        V\        P                  4      '       g   KJ  VP                  VP                  RRR7      4       Kn  	  V'       d3   V^ ,          pVR,           F  pWx,          pK  	  VP                  4       pMRpV P                   Uu. uF  qfP                  NK  	  p	p\        V	4      p
V
^8X  g   Q V
4       hV P                   Uu. uF  qfP!                  4       NK  	  ppV Uu. uFW  qP#                  \        P$                  ! \        P&                  ! VP(                  4      VP(                  ^,
          4      4      NKY  	  pp. p\+        V4       FS  w  rV.V P                   W:V,           ,          ,          P,                  O5pVP                  VP/                  V4      4       KU  	  Vf   Rp\        P0                  ! \3        W4      V P                   R7      pWA,          ^,           p\5        V4       Fq  pW,          p\3        V^,           V,          V4      pVV8  d    R# T P7                  TV	 Uu. uF  qfVV NK	  	  upVe   VVV MRV Uu. uF  qVV NK	  	  upR	7       Ks  	  R# u upi u upi u upi u upi u upi )
zP
we form the data into a 2-d including indexes,values,mask write chunk-by-chunk
r  u1Fr  r   Nrg  r  )indexesr  r  )r  r  r  r  r6   r  r  rg   r  r  r   r  r  r  r  rs   r  	transposerollaranger  r  rR  reshaper@  rh  r  write_data_chunk)r   r   r   r  rr  masksr   r  rf  r  nindexesr  r  bvaluesr  	new_shaperowschunksstart_iend_is   &&&                 r^   r  AppendableTable.write_data  sg    

  ## %% AFF|''Q'/dBJJ//LLT!>? & 8D2YYx ::<DD '+oo6o99o6w<1}&h&} *.)9)9:)9A++-)9:OUVv!++bggbii&7!DEvVf%DAGEQ,,?!@!F!FGINN199Y/0 &
 IxxI-TZZ@#a'vAmGQ)+U3E%!!3:;7a75)7;,0,<T'%($29:'Q'%(':	 "  ' 7 ;V( <:s   3K0KAKK"8K'c          
     ,    V ^8  d   QhRRRRRRRRRR	/# )
rW   r  r  r  zlist[np.ndarray]r  znpt.NDArray[np.bool_] | Noner  rZ   r   r\   )r]   s   "r^   r_   r  5  s<     * ** "* +	*
 !* 
*r`   c                   V F,  p\         P                  ! VP                  4      '       d   K+   R# 	  V^ ,          P                  ^ ,          pV\        V4      8w  d"   \         P                  ! W`P
                  R7      pV P
                  P                  p\        V4      p\        V4       F  w  rWWy,          &   K  	  \        V4       F  w  rWQWyV,           ,          &   K  	  VeE   VP                  4       P                  \        RR7      ( pVP                  4       '       g	   W,          p\        V4      '       d8   V P                  P                  V4       V P                  P                  4        R# R# )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  Fr  )r  r  rR  rs   r@  r  r  r  r  r  r   r  r~   r   r]  )r   r  r  r  r  r  rr  r  r  r  r  rf  s   &&&&&       r^   r   AppendableTable.write_data_chunk5  s     A77177##  
  #CI88E4D

  w<  (FA N ) f%DA()8|$% & $$T$66A5577wt99JJd#JJ r`   c               $    V ^8  d   QhRRRRRR/# r6  r\   )r]   s   "r^   r_   r  a  s$     : :!+::D:	:r`   c                	J   Ve   \        V4      '       g   Vf:   Vf6   V P                  pV P                  P                  V P                  RR7       V# Vf   V P                  pV P
                  P                  W#R7      pV P
                  P                  4        V# V P                  4       '       g   R # V P
                  p\        WW#R7      pVP                  4       p\        VRR7      P                  4       p\        V4      p	V	'       Ed   VP                  4       p
\        W^8  ,          P                  4      pV'       g   ^ .pVR,          V	8w  d   VP!                  V	4       V^ ,          ^ 8w  d   VP#                  ^ ^ 4       VP%                  4       p\'        V4       Fg  pVP)                  \+        W4      4      pVP                  WP                  ^ ,          ,          WP                  R,          ,          ^,           R7       TpKi  	  V P
                  P                  4        V	# )NTr  rt  Fr  r  )rs   rr  r   rM  r   r~   remove_rowsr]  rt  r{  r  r2   sort_valuesdiffrq   r   r   r  r  reversedr  r  )r   rt   r   r   rr  r~   r|  r  sorted_serieslnr
  r   pgrG  r  s   &&&&           r^   r  AppendableTable.deletea  s    =E

}

((t(D L	 <::D

..U.F

  "L    

dB	((* vE2>>@2 %%'D$ax.../F  bzRb! ayA~a# Bf%$))%,7!!zz!}-DB4H14L "   & JJ 	r`   r\   )NFNNNNNNFNNTrY  rZ  )r  r\  r]  r^  r_  r!  rF  r  r  r  rb  r\   r`   r^   r  r    s&    2J93v9v*X: :r`   r  c                  r    ] tR tRt$ RtRtRt^t]t	R]
R&   ]R R l4       t]R	 R
 l4       tRR R lltRtR# )r5  i  r  r"  r,  r  r  c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   !AppendableFrameTable.__annotate__  s     , ,t ,r`   c                	B    V P                   ^ ,          P                  ^8H  # r  )r  r  r   s   &r^   r1  "AppendableFrameTable.is_transposed  s    q!&&!++r`   c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r    s       r`   c                .    V'       d   VP                   pV# )zthese are written transposed)rl  r  s   &&&r^   r  AppendableFrameTable.get_object  s     %%C
r`   Nc                    V ^8  d   QhRRRR/# r  r\   )r]   s   "r^   r_   r    s$     d d 	d
 dr`   c                		   V P                  V4       V P                  4       '       g   R # V P                  WVR7      p\        V P                  4      '       d5   V P
                  P                  V P                  ^ ,          ^ ,          / 4      M/ p\        V P                  4       UUu. uF  w  rxWP                  ^ ,          J g   K  VNK!  	  p	pp\        V	4      ^8X  g   Q hV	^ ,          p
WZ,          ^ ,          p. p\        V P                  4       EF  w  r}WP                  9  d   K  WW,          w  rVP                  R4      R8w  d   \        V4      pM\        P                  ! V4      pVP                  R4      pVe   VP                  VRR7       V P                  '       d   TpTp\        V\!        VRR 4      R7      pM&VP"                  p\        V\!        VRR 4      R7      pTpVP$                  ^8X  dE   \'        V\(        P*                  4      '       d%   VP-                  ^VP.                  ^ ,          34      p\'        V\(        P*                  \0        34      '       d    \3        VP"                  VVR	R
7      pM?\'        V\        4      '       d   \3        VVVR7      pM\2        PD                  ! V.VVR7      p\9        4       '       d   VPF                  PH                  R8X  gK   VPJ                  VPF                  8H  PM                  4       '       g   Q VPJ                  VPF                  34       hV FK  p\!        V PN                  PP                  V R2R 4      pVR9   g   K0  VV,          PS                  V4      VV&   KM  	  VPU                  V4       EK  	  \        V4      ^8X  d   V^ ,          pM\W        V^R7      p\Y        WW4R7      pV P[                  VVVR7      pV# u uppi   \4         d   pT P6                  R8X  dv   \9        4       '       df   \;        T4      P=                  R4      '       dF   \>        '       d:   \3        TP"                  TTR	\A        R\(        PB                  R7      R7      p R p?ELh R p?ii ; i)Nr|  r  r/   r  Tinplaceri   rh   Fr  r  r  r  r  )r   r   r  r  r  r  rM  r  )r|  r   )r[   r  ).r'  rt  r~  rs   r  r  r   r  r  r  r  r.   r/   from_tuples	set_namesr1  r  rl  r  rg   r  r  r  rR  r8   r,   r  r   r   r[   rS  r   r3   r  _from_arraysr  r  dtypesr  r~   r  r  r   r5   r{  r  )r   rt   r   r   r   rO  r  r  r  indsindr   framesr   
index_valsr  r  r  r  index_cols_r  r  r  r  r|  s   &&&&&                     r^   rj  AppendableFrameTable.read  s    	e$   uE 4&&'' IIMM$--a03R8 	  )3P3ear__Q=O7O3P4yA~~1gAdii(DA((("()J xx</Z(!--j9HHW%E ud3!!! e'%*FG u75&$+GH {{aJvrzz$B$BFLLO(<=&2::}"=>>"688U&uUB" FE**vuFC ++VHe6R&((V\\->->#-E		V\\16688S299fll:SS8  

 0 0VHE2BDI--!#F!2!25!9BvJ   MM"{ )~ v;!BQ'BduH	rYH	] QN * 6.00H--.FGG'K&"HH$)"(!&"-h"P s1   &O!O!"O''Q>2AQ9?3Q98Q99Q>r\   r9  )r  r\  r]  r^  r_  r  r!  r  r,   r  r`  ra  r1  r  r  rj  rb  r\   r`   r^   r5  r5    sQ    2K#JD)2H&2, ,  d dr`   r5  c                     a  ] tR tRtRtRtRt^t]t	]
R R l4       t]R R l4       tRR	 V 3R
 llltRR V 3R llltRtV ;t# )r3  i  r  r)  r*  c                   V ^8  d   QhRR/# rV  r\   )r]   s   "r^   r_   "AppendableSeriesTable.__annotate__!  r/  r`   c                	    R # rY  r\   r   s   &r^   r1  #AppendableSeriesTable.is_transposed   r7  r`   c                   V ^8  d   QhRR/# r  r\   )r]   s   "r^   r_   r)  %  s       r`   c                	    V# rb   r\   r  s   &&&r^   r   AppendableSeriesTable.get_object$  s    
r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   r)  )  s     L L Lr`   c                   < \        V\        4      '       g(   VP                  ;'       g    RpVP                  V4      p\        SV `  ! RRVRVP                  P                  4       /VB  R# )+we are going to write this as a frame tabler  rA  r   Nr\   )rg   r,   ri   to_framerC  rF  r   r  )r   rA  r   r   ri   rD  s   &&&, r^   rF  AppendableSeriesTable.write)  sU    #y))88''xD,,t$CK#KCKK,>,>,@KFKr`   c               $    V ^8  d   QhRRRRRR/# r  r\   )r]   s   "r^   r_   r)  0  s*       	
  
r`   c                	  < V P                   pVeX   V'       dP   \        V P                  \        4      '       g   Q hV P                   F  pWb9  g   K  VP	                  ^ V4       K  	  \
        SV `  WW4R7      pV'       d   VP                  V P                  RR7       VP                  R,          pVP                  R8X  d   R Vn	        V# )Nr  Tr  r  )r  rs  )
r
  rg   r  rq   r  rC  rj  	set_indexr  ri   )	r   rt   r   r   r   r
  r<  rn  rD  s	   &&&&&   r^   rj  AppendableSeriesTable.read0  s     ,,>dkk40000[[#NN1a( ! GLuULNKKTK2FF4L 66XAFr`   r\   rb   r9  )r  r\  r]  r^  r_  r  r!  r  r2   r  ra  r1  r  r  rF  rj  rb  r  r  s   @r^   r3  r3    s[    2 K$JDH   L L  r`   r3  c                  :   a  ] tR tRtRtRtRtR V 3R lltRtV ;t	# )r4  iI  r  r)  r+  c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   'AppendableMultiSeriesTable.__annotate__P  s     , ,d ,r`   c                8  < VP                   ;'       g    RpV P                  V4      w  q@n        \        V P                  \        4      '       g   Q h\	        V P                  4      pVP                  V4       \        V4      Vn        \        SV `$  ! RRV/VB  R# )r1  r  rA  Nr\   )
ri   r  r  rg   rq   r   r.   r   rC  rF  )r   rA  r   ri   newobjr  rD  s   &&,   r^   rF   AppendableMultiSeriesTable.writeP  sy    xx##8"66s;$++t,,,,DKK Dt+&+F+r`   r  )
r  r\  r]  r^  r_  r  r!  rF  rb  r  r  s   @r^   r4  r4  I  s    2 K)J, ,r`   r4  c                      ] tR tRt$ RtRtRt^t]t	R]
R&   ]R R l4       t]R	 4       tR
 R lt]R 4       tR R ltRtR# )r2  i[  z:a table that read/writes the generic pytables table formatr"  r#  zlist[Hashable]r  c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   GenericTable.__annotate__e  s        S  r`   c                	    V P                   # rb   )r  r   s   &r^   r  GenericTable.pandas_typed  s    r`   c                	X    \        V P                  R R4      ;'       g    V P                  # r  r  r   s   &r^   r  GenericTable.storableh  s!    tzz7D1??TZZ?r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   rA  l  s     ? ?4 ?r`   c                r   . V n         RV n        . V n        V P                   Uu. uF  qP                  '       g   K  VNK  	  upV n        V P                   Uu. uF  qP                  '       d   K  VNK  	  upV n        V P                   Uu. uF  qP                  NK  	  upV n        R# u upi u upi u upi )ra  N)	r  r   r  rX  rw  r  r  ri   r   r5  s   & r^   r  GenericTable.get_attrsl  s     &*ooKo9J9J11oK'+P!>O>OAAP-1-=-=>-=VV-=> LP>s   B*B*B/0B/B4c                   V P                   pV P                  R4      pVe   RMRp\        R^ V P                  W2R7      pV.p\	        VP
                  4       Fo  w  rg\        V\        4      '       g   Q h\        W4      pV P                  V4      pVe   RMRp\        VVV.VV P                  VVR7      p	VP                  V	4       Kq  	  V# )z0create the indexables from the table descriptionr   Nr&  )ri   r  r~   r   r  )ri   r~  r  r}  r~   r   r  )r  r*  r2  r~   r  _v_namesrg   r[   r  r  r   )
r   r  ri  r   ro  rn  r  r<  ro  r  s
   &         r^   rX  GenericTable.indexablesv  s     
 (^z#q


	 IR{ajj)DAa%%%%1=D##A&B!#:TD(sjjB r" *" r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   rA    s     E E Er`   c                	    \        R 4      h)zcannot write on a generic tabler.  )r   r   s   &,r^   rF  GenericTable.write  s    !"CDDr`   )r   r  r  r   r  r  N)r  r\  r]  r^  r_  r  r!  r  r,   r  r`  ra  r  r  r  r   rX  rF  rb  r\   r`   r^   r2  r2  [  sm    DK JDH    @ @?    FE Er`   r2  c                     a  ] tR tRtRtRt]t^t]	P                  ! R4      t]R R l4       tRR V 3R llltRR	 V 3R
 llltRtV ;t# )r6  i  za frame with a multi-indexr-  z^level_\d+$c                   V ^8  d   QhRR/# r   r\   )r]   s   "r^   r_   &AppendableMultiFrameTable.__annotate__  s     " "# "r`   c                	    R # )appendable_multir\   r   s   &r^   r  *AppendableMultiFrameTable.table_type_short  s    !r`   c                   V ^8  d   QhRR/# rR  r\   )r]   s   "r^   r_   rQ    s     
D 
D 
Dr`   c                	L  < Vf   . pM VRJ d   VP                   P                  4       pV P                  V4      w  qn        \	        V P                  \
        4      '       g   Q hV P                   F  pWB9  g   K  VP                  ^ V4       K  	  \        SV `   ! RRVRV/VB  R # )NTrA  r   r\   )	r   r  r  r  rg   rq   r  rC  rF  )r   rA  r   r   r<  rD  s   &&&, r^   rF  AppendableMultiFrameTable.write  s    LT!;;--/L33C8[$++t,,,,A$##Aq)  	C#CLCFCr`   c               $    V ^8  d   QhRRRRRR/# r  r\   )r]   s   "r^   r_   rQ    s*       	
  
r`   c                	6  < \         SV `  WW4R 7      pVP                  V P                  4      pVP                  P                  VP                  P                   Uu. uF'  q`P                  P                  V4      '       d   RMTNK)  	  up4      Vn        V# u upi )r  N)	rC  rj  r6  r  r   r  r  
_re_levelssearch)r   rt   r   r   r   r  ri   rD  s   &&&&&  r^   rj  AppendableMultiFrameTable.read  s     W\e\O\\$++& 88%%HJW__++D11Tt;W
 	 Xs   -Br>  rb   r9  )r  r\  r]  r^  r_  r!  r,   r  r  recompilerZ  ra  r  rF  rj  rb  r  r  s   @r^   r6  r6    sP    $(JHDN+J" "
D 
D  r`   r6  c               (    V ^8  d   QhRRRRRRRR/# )rW   rA  r,   r  rO   r  r.   rZ   r\   )r]   s   "r^   r_   r_     s,      	!+0r`   c                   V P                  V4      p\        V4      pVe   \        V4      pVe   VP                  V4      '       d   VP                  V4      '       d   V # \        VP                  4       4      pVe+   \        VP                  4       4      P	                  VRR7      pVP                  V4      '       g?   \        R R 4      .V P                  ,          pW%V&   V P                  \        V4      ,          p V # )NF)sort)	r  r@   equalsuniquer  slicer  r  rr   )rA  r  r  r  r  slicers   &&&&  r^   r  r    s     
t	B&!F U#u--6==3D3D
&--/*Felln-::6:N==',T4'8&9CHH&DtggeFm$Jr`   c                    V ^8  d   QhRRRR/# )rW   r  r   rZ   zstr | tzinfor\   )r]   s   "r^   r_   r_     s       < r`   c                2    \         P                  ! V 4      pV# )z+for a tz-aware type, return an encoded zone)r   get_timezone)r  zones   & r^   r  r    s    !!"%DKr`   c               (    V ^8  d   QhRRRRRRRR/# )	rW   r  znpt.NDArray[np.int64]r  zstr | tzinfo | Nonedatetime64_dtyper[   rZ   r8   r\   )r]   s   "r^   r_   r_     s,      !':NQr`   c                    V P                   R8X  g   Q V P                   4       h\        P                  ! V4      w  r4\        RV4      p\	        WR7      p\
        P                  ! WR7      pV# )z
Coerce the values to a DatetimeArray with appropriate tz.

Parameters
----------
values : ndarray[int64]
tz : str, tzinfo, or None
datetime64_dtype : str, e.g. "datetime64[ns]", "datetime64[25s]"
r  rR   )r  r  r  )r  r  datetime_datar   r:   r8   _from_sequence)r  r  rk  r  r  r  rN  s   &&&    r^   r  r    sa     <<4-- /0GD
D!D 2)E

&
&v
;CJr`   c          
     ,    V ^8  d   QhRRRRRRRRRR/# )	rW   ri   r[   r   r.   rX   r   rZ   rv  r\   )r]   s   "r^   r_   r_     s6     =L =L =LU =Lc =L3 =L8 =Lr`   c                   \        V \        4      '       g   Q hVP                  p\        V4      w  rV\	        V4      p\
        P                  V4      p\        P                  ! VP                  R 4      '       g7   \        VP                  4      '       g   \        VP                  4      '       d)   \        V VVV\        VRR4      \        VRR4      VR7      # \        V\        4      '       d   \        R4      h\        P                   ! VRR7      p	\"        P$                  ! V4      p
V	R8X  di   \"        P$                  ! V
 Uu. uF  qP'                  4       NK  	  up\"        P(                  R	7      p\        WR\+        4       P-                  4       VR
7      # V	R8X  dJ   \/        WV4      pVP                  P0                  p\        V VR\+        4       P3                  V4      VR
7      # V	R9   d   \        WWxVR7      # \        V\"        P4                  4      '       d   VP                  \6        8X  g   Q hVR8X  g   Q V4       h\+        4       P9                  4       p\        WWxVR
7      # u upi )iur  Nr  )r  r  r}  r  r  r  zMultiIndex not supported here!Fr  r   r  )r  r  )r  r  r}  r  r  )integerfloating)rg   r[   ri   r[  r\  r  rp  r   r  r  r&   r"   rv  r  r/   r   r  r  r  	toordinalint32r   	Time32Col_convert_string_arrayr  r  r  r  r  )ri   r   rX   r   r  r  r]  r  ro  r  r  r  r  s   &&&&         r^   r~  r~    s   dC    J 5U;I*%D%%i0D 	T**u{{++%%
 -udD)!
 	
 %$$899OOE%8M ZZFJJv>v!v>bhhO	VWY%8%8%:z
 	
 
(	")&FC	??++I)!
 	
 
1	1J
 	
 )RZZ00Y__5NNNx%%y##%
KK/  ?s   I%c               (    V ^8  d   QhRRRRRRRR/# )rW   r  r[   rX   r   rZ   znp.ndarray | Indexr\   )r]   s   "r^   r_   r_   A  s)        S EW r`   c           	     T   VP                  R 4      '       d6   VR 8X  d   \        V RR7      pV# \        V P                  V4      RR7      p V# VP                  R4      '       d6   VR8X  d   \        V RR7      pV# \        V P                  V4      RR7      p V# VR8X  dD    \        P
                  ! V  Uu. uF  p\        P                  ! V4      NK  	  up\        R7      pV# VR9   d   \        P
                  ! V 4      pV# VR9   d   \        V RW#R7      pV# VR	8X  d    \        P
                  ! V ^ ,          4      pV# \        R
V 24      hu upi   \         dK    \        P
                  ! T  Uu. uF  p\        P                  ! T4      NK  	  Mu upi up\        R7      p T# i ; i)r  Fr  r  r   r  r  Nr  r  zunrecognized index type )rr  floatr   )r  r-   r  r4   r  r  r   r  r  r   r  r  )r  r  rX   r   r   r  s   &&&&  r^   r  r  A  s    |$$<!$U3E0 L- "$))D/>E, L+ 
	'	'= "4e4E$ L! #499T??E  L 
	TJJTBT 0 0 3TB&QE L 
-	-

4  L 
(	'$
 L	 
	

47# L 3D6:;;  C 	TJJtDt! 2 21 5tDFSE L	Ts0   !E 5EE E F'1F
F'&F'c               $    V ^8  d   QhRRRRRR/# )rW   ri   r[   r  rN   r   r5  r\   )r]   s   "r^   r_   r_   b  s+     K K
KK Kr`   c                $   \        VP                  \        4      '       d   VP                  4       pVP                  \        8w  d   V# \        \        P                  V4      pVP                  P                  p\        P                  ! VR R7      p	V	R8X  d   \        R4      hV	R8X  d   \        R4      hV	R8X  g
   VR8X  g   V# \        V4      p
VP                  4       pWKV
&   V'       d<   V
P                  4       '       d&   \        V4      VP                   8  d   \#        R4      h\        P                  ! VR R7      p	V	R8w  dz   \%        VP&                  ^ ,          4       FY  pW,          p\        P                  ! VR R7      p	V	R8w  g   K,  \        V4      V8  d	   W|,          MR	V 2p\        R
V RV	 R24      h	  \)        WV4      P+                  VP&                  4      pVP                   p\        V\,        4      '       d>   \/        VP1                  V 4      ;'       g    VP1                  R4      ;'       g    ^ 4      p\3        T;'       g    ^ V4      pVe   VP5                  V4      pVe
   VV8  d   TpVP7                  RV 2R R7      pV# )Fr  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 sizezNo.r  z2]
because its data contents are not [string] but [r  r  z|Sr  )rg   r  r3   r  r  r   r  r  ri   r   r  r   r6   r  r  rs   r  r   r  rR  rw  r  r  rn   r   r  r  r  )ri   r  r  r   r   rX   r   r   r]  r  r  r  r  r  error_column_labelr  r  ecis   &&&&&&&&          r^   r  r  b  sF    '----""$}}2::w'G##JOOGE:MEFF
" L
 	
 X%x)?=D<<>DJ

s7|l6K6K'KSTT OOD7M  tzz!}%A'COOC>M(36w<!3CWZ3qc"34F3G H%n6  & +46BJJ4::VN&&H ,%%<++D1TT\5E5Eh5OTTSTU<$$1h/H ''1?sX~H#**Rz?*GNr`   c               (    V ^8  d   QhRRRRRRRR/# rW   r  r  rX   r[   r   rZ   r\   )r]   s   "r^   r_   r_     s(      
 c 3 : r`   c                   \        V 4      '       dY   \        V P                  4       RRR7      P                  P	                  W4      P
                  P                  V P                  4      p \        V P                  4       4      p\        ^\        P                  ! V4      4      p\        P                  ! V RV 2R7      p V # )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  Sr  )rs   r2   r  r[   encoder  r  rR  r!   r  
libwritersmax_len_string_arrayr  r  )r  rX   r   ensuredr  s   &&&  r^   rw  rw    s      4yy4::<e8<S)WWWTZZ( 	 DJJL)G1j55g>?H::dAhZ.1DKr`   c               (    V ^8  d   QhRRRRRRRR/# r  r\   )r]   s   "r^   r_   r_     s,     ' '
'),'69''r`   c                P   V P                   p\        P                  ! V P                  4       \        R7      p \        V 4      '       d   \        P                  ! \        V 4      4      pRV 2p\        V ^ ,          \        4      '       dK   \        V RR7      P                  P                  W#RR7      pVP                  4       p RV P                  n        M(V P#                  VRR7      P#                  \        RR7      p Vf   Rp\        P$                  ! W4       V P'                  V4      # )	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.
r  UFr  r  )r   r  Tr  )rR  r  r  r  r  rs   r  r  r!   rg   bytesr2   r[   decoder  flags	writeabler  !string_array_replace_from_nan_repr  )r  r   rX   r   rR  r  r  sers   &&&&    r^   r  r    s    & JJE::djjl&1D
4yy22=3FGH:d1gu%%E*..55x 6 C <<>D#'DJJ ;;u5;188e8LD00?<<r`   c               (    V ^8  d   QhRRRRRRRR/# )rW   r  r  r  r[   rX   r   r\   )r]   s   "r^   r_   r_     s(      :   S r`   c                    \        V\        4      '       g   Q \        V4      4       h\        V4      '       d   \	        WV4      pV! V 4      p V # rb   )rg   r[   r  _need_convert_get_converter)r  r  rX   r   convs   &&&& r^   r  r    sC    h$$4d8n4$Xh&9fMr`   c               $    V ^8  d   QhRRRRRR/# )rW   r  r[   rX   r   r\   )r]   s   "r^   r_   r_     s!     
1 
1 
1 
1S 
1r`   c                n   a aa S R 8X  d   R # R S 9   d   V 3R l# S R8X  d   VV3R l# \        RS  24      h)r  c                2    \         P                  ! V R R7      # )zM8[ns]r  r  r  )r  s   &r^   r    _get_converter.<locals>.<lambda>  s    AX6r`   c                4   < \         P                  ! V SR 7      # )r  r  )r  r  s   &r^   r   r    s    AT2r`   r  c                "   < \        V R SSR7      # )Nr  )r  )r  rX   r   s   &r^   r   r    s    0thv
r`   zinvalid kind )r   )r  rX   r   s   fffr^   r  r    sE    |66		22		
 	
 =/00r`   c                    V ^8  d   QhRRRR/# )rW   r  r[   rZ   r   r\   )r]   s   "r^   r_   r_     s        r`   c                &    V R9   g   R V 9   d   R# R# )r  TF)r  r  r\   re  s   &r^   r  r    s    ''<4+?r`   c               $    V ^8  d   QhRRRRRR/# )rW   ri   r[   r  zSequence[int]rZ   r\   )r]   s   "r^   r_   r_     s!      S = S r`   c                2   \        V\        4      '       g   \        V4      ^8  d   \        R4      hV^ ,          ^ 8X  dX   V^,          ^
8:  dJ   V^,          ^ 8X  d<   \        P
                  ! RV 4      pV'       d   VP                  4       ^ ,          pRV 2p V # )z
Prior to 0.10.1, we named values blocks like: values_block_0 and the
name values_0, adjust the given name if necessary.

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

Returns
-------
str
z6Version is incorrect, expected sequence of 3 integers.zvalues_block_(\d+)values_)rg   r[   rs   r   r]  r[  r   )ri   r  rf  grps   &&  r^   rf  rf    s{     '33w<!#3QRRqzQ71:+
aII+T2((*Q-CSE?DKr`   c                    V ^8  d   QhRRRR/# )rW   	dtype_strr[   rZ   r\   )r]   s   "r^   r_   r_   -  s      c c r`   c                2   V P                  R4      '       d   RpV# V P                  R4      '       d   RpV# V P                  R4      '       d   RpV# V P                  R4      '       d   RpV# V P                  R4      '       d   T pV# V P                  R4      '       d   T pV# V P                  R4      '       d   RpV# V P                  R4      '       d   RpV# V P                  R	4      '       d   RpV# V R
8X  d   R
pV# V R8X  d   RpV# \        RV  R24      h)z9
Find the "kind" string describing the given dtype name.
r  rz  rs  rr  r  	timedeltar   r&  r|  r  r[   zcannot interpret dtype of [r  )r  r  )rn   ry  )r  r   )r  r  s   & r^   r\  r\  -  s]    /002 K1 
		g	&	&. K- 
		i	(	(* K) 
		o	.	.& K% 
		l	+	+" K! 
		k	*	* K 
		f	%	% K 
		j	)	) K 
		h	'	' K 
h	 K 
e	 K 6ykCDDr`   c                   V ^8  d   QhRR/# )rW   r  rN   r\   )r]   s   "r^   r_   r_   N  s      9 r`   c                   \        V \        4      '       d   V P                  p \        V P                  \        4      '       d   RV P                  P
                   R2pMV P                  P                  pV P                  P                  R9   d'   \        P                  ! V P                  R4      4      p M"\        V \        4      '       d   V P                  p \        P                  ! V 4      p W3# )zB
Convert the passed data into a storable form and a dtype string.
r  r  mMr  )rg   r7   ri  r  r(   r  ri   r  r  r  r  r0   r  )r  r]  s   & r^   r[  r[  N  s     $$$zz$**o.."4::??"315
ZZ__
zz$zz$))D/* 
D+	&	&yy::dDr`   c                  n    ] tR tRtRtRR R llt]R R l4       t]R R	 l4       tR
 R ltR tR t	Rt
R# )r{  ig  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               (    V ^8  d   QhRRRRRRRR/# )rW   r~   r9  r   r   r   rZ   r   r\   )r]   s   "r^   r_   Selection.__annotate__s  s8     +D +D+D 	+D
 +D 
+Dr`   c                	Z   Wn         W n        W0n        W@n        R V n        R V n        R V n        R V n        \        V4      '       Edu   \        \        4      ;_uu_ 4        \        P                  ! VRR7      pVR9   Ed5   \        P                  ! V4      pVP                  \        P                   8X  d[   V P                  V P                  rCVf   ^ pVf   V P                   P"                  p\        P$                  ! W44      V,          V n        M\'        VP                  P(                  \        P*                  4      '       dr   V P                  e#   W P                  8  P-                  4       '       g1   V P                  e.   W P                  8  P-                  4       '       d   \        R4      hW n        R R R 4       V P                  fP   V P/                  V4      V n        V P                  e*   V P                  P1                  4       w  V n        V n        R # R # R #   + '       g   i     Lo; i)NFr  z3where must have index locations >= start and < stop)rr  boolean)r~   rt   r   r   	conditionr  termsr  r$   r   r   r   r  r  r  r  bool_rr  r  
issubclassr  rr  r  generateevaluate)r   r~   rt   r   r   inferreds   &&&&& r^   r   Selection.__init__s  s    


	
*%%??5?55JJu-E{{bhh.&*jj$))t =$%E<#'::#3#3D+-99U+A%+H(#EKK$4$4bjjAA JJ2

8J7O7O7Q7Q II1u		7I6N6N6P6P", U#  ,1(% &( #u-DJ zz%.2jj.A.A.C+ &	 $) &%s   EHH*	c                    V ^8  d   QhRRRR/# )rW   rt   zdict | list | tuple | strrZ   r<   r\   )r]   s   "r^   r_   r    s    MM7MLMr`   c                	    R # rb   r\   r&  s   &&r^   r  Selection.generate  s    JMr`   c                    V ^8  d   QhRRRR/# )rW   rt   r   rZ   r\   )r]   s   "r^   r_   r    s    00d0t0r`   c                	    R # rb   r\   r&  s   &&r^   r  r    s    -0r`   c                    V ^8  d   QhRRRR/# )rW   rt   z dict | list | tuple | str | NonerZ   zPyTablesExpr | Noner\   )r]   s   "r^   r_   r    s     + +> +CV +r`   c                &   Vf   R# V P                   P                  4       p \        WV P                   P                  R7      #   \         dC   pRP                  TP                  4       4      p\        RT RT R24      p\        T4      ThRp?ii ; i)z'where can be a : dict,list,tuple,stringN)r?  rX   r  z-                The passed where expression: a*  
                            contains an invalid variable reference
                            all of the variable references must be a reference to
                            an axis (e.g. 'index' or 'columns'), or a data_column
                            The currently defined references are: z
                )	r~   r?  r<   rX   	NameErrorr  r=  r   r   )r   rt   r_  r  qkeysrO  s   &&    r^   r  r    s    =JJ!!#	+djj>Q>QRR 	+ HHQVVX&E..3W 5C DI' JC S/s*	+s    A B=BBc                   V P                   eU   V P                  P                  P                  V P                   P                  4       V P                  V P
                  R7      # V P                  e0   V P                  P                  P                  V P                  4      # V P                  P                  P                  V P                  V P
                  R7      # )
generate the selection
rt  )	r  r~   
read_wherer]   r   r   r  r~  rj  r   s   &r^   r   Selection.select  s     >>%::##..%%'tzz		 /   )::##44T5E5EFFzz$$4::DII$FFr`   c                   V P                   V P                  r!V P                  P                  pVf   ^ pMV^ 8  d	   W,          pVf   TpMV^ 8  d	   W#,          pV P                  eA   V P                  P                  P                  V P                  P                  4       WRR7      # V P                  e   V P                  # \        P                  ! W4      # )r  T)r   r   ra  )
r   r   r~   rr  r  get_where_listr]   r  r  r  )r   r   r   rr  s   &   r^   r  Selection.select_coords  s     jj$))t

  =EQYNE<DAXMD>>%::##22%%'ud 3   )###yy%%r`   )r  r  r  r   r   r~   r  rt   rZ  )r  r\  r]  r^  r_  r   r   r  r   r  rb  r\   r`   r^   r{  r{  g  s<    	+DZ M M0 0+.
G&r`   r{  )r|   r~   N)r   NNFNTNNNNr   rU   )	Nr   r   NNNNFNrb   )__conditional_annotations__r_  
__future__r   
contextlibr   r  r<  r   r   r  r   r]  textwrapr   typingr   r   r	   r
   r   r   r   r   r  numpyr  pandas._configr   r   r   pandas._libsr   r   r  pandas._libs.libr   pandas._libs.tslibsr   pandas.compatr   pandas.compat._optionalr   pandas.compat.pickle_compatr   pandas.errorsr   r   r   r   r   pandas.util._decoratorsr   r   pandas.util._exceptionsr    pandas.core.dtypes.commonr!   r"   r#   r$   r%   r&   pandas.core.dtypes.dtypesr'   r(   r)   r*   pandas.core.dtypes.missingr+   r   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   pandas.core.arraysr7   r8   r9   pandas.core.arrays.datetimesr:   pandas.core.arrays.string_r;   pandas.core.commoncorecommonr   pandas.core.computation.pytablesr<   r=   pandas.core.constructionr>   rk  r?   pandas.core.indexes.apir@   pandas.io.commonrA   pandas.io.formats.printingrB   rC   collections.abcrD   rE   rF   rG   typesrH   rI   r   rJ   rK   rL   pandas._typingrM   rN   rO   rP   rQ   rR   rS   pandas.core.internalsrT   r  rc   re   rj   rk   r`  rw   rx   ry   rz   r  r  r   r   config_prefixregister_optionis_boolis_one_of_factoryr   r   r   r   r   r   r   ru  rv  r2  r?  r  r  r  r;  r/  r  r0  r9  r7  r  r5  r3  r4  r2  r6  r  r  r  r~  r  r  rw  r  r  r  r  rf  r\  r[  r{  )r  s   @r^   <module>r     s  
 #    	 	 	 	 	    - ) % > 4  5   8    
 5 6     1 +
  
    ,   	 i :* U !  
  GWgsGWgN 	
E 
E  (##
>5*W
**+CD	 $ !%
 $$) !,5p H_ _D Hq q qh/m m`x> x>v	h :a9h a9H	$w $63. 3j? j?Z}B5 }B@/#, /#d[; [;|" 
fDE fDRH H<be bJw? wt.0 .b,!6 ,$@E' @EF( 4 (V40=L@BK\>'T
12B2x& x&Id $##s   =ANN	