
    (xe                    2   d dl mZ d dlmZ d dlZd dlZd dlZd dlmZm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ ej&                  d    dk\  sJ d       g dZ ej*                  d	ed 
      Z ej*                  dg dd 
      Zi ej0                  dej2                  dej4                  dej6                  dej8                  dej:                  dej<                  dej>                  dej@                  dejB                  dejD                  dejF                  dejH                  dejJ                  dejL                  dejN                  dejP                  dejR                  dejT                  dejV                  diZ, edd      Z-ej\                   e-dd       ej^                   e-dd      ej`                   e-dd      ejb                   e-d d!      iZ2d" Z3d# Z4 e       d$        Z5dd%Z6d& Z7d' Z8 e9d(      d) e9d*      d+ e9d,      d- e9d.      d/ e9d0      d1iZ: e;d d2      D ]  Z<e<e:vsd3e<d4e:e<<    d5 Z=dd6Z>dd7Z?d8 Z@d9 ZAd: ZBd; ZCd< ZDd= ZEd> ZFd? ZG ej                  d@dd      j                         ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZP G dG dH      ZQ G dI dJ      ZR G dK dL      ZS G dM dN      ZT G dO dP      ZU G dQ dRe      ZV G dS dTeV      ZW G dU dVeV      ZX G dW dX      ZY G dY dZeY      ZZ G d[ d\      Z[ G d] d^      Z\ G d_ d`e[      Z] G da dbe      Z^ G dc dde      Z_ G de dfe      Z` G dg dhe      Za G di dje_      Zb edkdl      Zc G dm dne      Zd G do dpe      Ze edqdr      Zf efdsdt       efdudv      dwZg G dx dy      Zh G dz d{eh      Zi G d| d}eh      ZjeiejdwZkekj                         D  ci c]  \  } }d~|  d	| c}} Zm G d d      Zn G d d      Zo G d d      Zp G d d      Zqi ddddddddddddddddddddddddddddddddddi ddddddddddddddddddddddddddddēddƓddȓddʓddddΜZr G dτ dЫ      Zs G dф des      Zt G dӄ des      Zu G dՄ deu      Zv G dׄ des      Zw G dل des      Zx G dۄ des      Zy G d݄ dey      Zz G d߄ dey      Z{ G d des      Z| G d des      Z} G d des      Z~ G d des      Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d de      Z G d de      Z G d de      Z G d de      Z G d	 d
e      Z G d de      Z G d d      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d d e      Z G d! d"e      Z G d# d$e      Z G d% d&e      Z G d' d(      Z G d) d*      Z G d+ d,      Z G d- d.e      Z G d/ d0e      Z G d1 d2e      Z G d3 d4e      Z G d5 d6e      Z G d7 d8e      Z G d9 d:e      Z G d; d<e      Z G d= d>e      Z G d? d@e      Z G dA dBe      Z G dC dDe      Z G dE dFe      Z G dG dHe      Z G dI dJe      Z G dK dLe      Z G dM dNe      Z G dO dPe      Z G dQ dRe      Z G dS dTe      Z G dU dVe      Z G dW dXe      Z edYdZ      Zi ejr                   eed      ejt                   eed      ej8                   eed      ej0                   eed      ej:                   eed      ej2                   eed      ej<                   eed      ej4                   eed      ej>                   eed      ej6                   eed      ej@                   eed      ejB                   eed      ejD                   eed      ejv                   eed      ejx                   eed      ejz                   eed      ej|                   eed      i ej~                   eed      ejF                   eed      ejH                   eed      ejV                   eed      ejJ                   eed      ejL                   eed      ejT                   eed      ejP                   eed      ejN                   eed      ejR                   eed      ej                   eed      ej                   eed      ej                   eed      ej                   eedë      ej                   eedū      ej                   eedǫ      ej                   eedɫ      ej                   eed[      ej                   eed\      ej                   eed]      ej                   eed      iZ ee˫      dz
  Z͐d^ Z G d_ d`      Z G da dbeϫ      Z G dc dd      Z G de df      Z G dg dh      Z G di dj      Z G dk dleԫ      Z G dm dneԫ      Z G do dp      Z G dq dr      Z G ds dt      Z G du dv      Z G dw dx      Zi dyedz e	eds      d{ e	edu      d|ed}eדd~eٓd e	eds      d e	edu      deړdeѓdeғdeՓdeГdeӓdeՓde֓deϓdeiZܐd Zݐd Zeߐdk(  r eޫ        yyc c}} w (      )
namedtuple)SequenceN)	lru_cachepartial)get_basic_type   z#Arrow GDB extension needs Python 3+)&NABOOLUINT8INT8UINT16INT16UINT32INT32UINT64INT64
HALF_FLOATFLOATDOUBLESTRINGBINARYFIXED_SIZE_BINARYDATE32DATE64	TIMESTAMPTIME32TIME64INTERVAL_MONTHSINTERVAL_DAY_TIME
DECIMAL128
DECIMAL256LISTSTRUCTSPARSE_UNIONDENSE_UNION
DICTIONARYMAP	EXTENSIONFIXED_SIZE_LISTDURATIONLARGE_STRINGLARGE_BINARY
LARGE_LISTINTERVAL_MONTH_DAY_NANOType)startTimeUnit)SECONDMILLIMICRONANObhiqBHIQefdiiiiqTimeUnitTraits)
multiplierfractional_digits   i  i@B    i ʚ;	   c                     | S N )vs    share/arrow/gdb/gdb_arrow.pyidentityrN   [   s    H    c                 d    | t         j                  t         j                  t         j                  fvS rJ   )r/   r	   r$   r%   )type_ids    rM   has_null_bitmaprR   _   s$    477D$5$5t7G7GHHHrO   c                      t        j                  dd      j                         } d| v ryd| v ryt        j                  d|  d       t
        j                  S )zA
    Get the target program (not the GDB host's) endianness.
    zshow endianT)	to_stringbiglittlez>Could not determine target endianness from GDB's response:
"""z""")gdbexecutestripwarningswarnsys	byteorder)ss    rM   
byte_orderr_   c   sZ    
 	MT288:Az	QMM //0c6 7 ==rO   c                     |t        | j                        }t        |      }d|v r|j                  d      sd| }|j                  t
        j                  k(  r	d| d|  dS | j                  t        d|        d| d| j                   dS )zS
    Return a parsable form of gdb.Value `val`, optionally with gdb.Type `ty`.
    z::z((z) (z))z Cannot further evaluate rvalue: z(* (z*) ()	r   typestr
startswithcoderW   TYPE_CODE_PTRaddress
ValueError)valtytypenames      rM   for_evaluationrk   s   s     
zCHH%2wHx 3 3D 9 z?	ww####H:SR((
{{;C5ABB(4}B//rO   c                     t        |       } | j                  t        j                  k(  xrC t        | j	                               j                  t        j
                  t        j                  fv S rJ   )r   rd   rW   re   targetTYPE_CODE_CHARTYPE_CODE_INT)ri   s    rM   is_char_starrp      sU    		BGGs((( ;299;',,&&(9(9:;<rO   c                 z   t        | j                        }|j                  t        j                  k(  r| j                         S |j                  j                  d      rFd|j                  v rt        |       j                  S d|j                  v rt        |       j                  S t        d|j                   d      )z-
    Dereference a raw or smart pointer.
    zstd::shareduniquez"Cannot dereference value of type '')r   ra   rd   rW   re   dereferencenamerc   	SharedPtrvalue	UniquePtr	TypeErrorrh   ri   s     rM   derefr|      s     
	!B	ww####  	ww'"rwwS>'''rwwS>'''
8	C
DDrO   \z\\
z\nz\r	z\t"z\"    z\x02xc                     d}t        | t        j                        r| j                         } t	        |       |kD  r | d| } d| j                  t              z   dz   S d| j                  t              z   dz   S )zG
    Format a Python string or gdb.Value for display as a literal.
    2   Nr   z" [continued])
isinstancerW   Valuestringlen	translate_string_literal_mapping)r^   max_lens     rM   string_literalr      sm     G!SYYHHJ
1vhwKQ[[!899OKKQ[[!899C??rO   c                 B    | j                  |      j                         S )ze
    Format a gdb.Value for display as a literal containing possibly
    unprintable characters.
    length)lazy_stringrx   )rh   sizes     rM   bytes_literalr      s    
 ??$?'--//rO   c                     || j                  dd      }t        |      S |dk7  r| j                  dd|      }t        |      S d}t        |      S )z<
    Format a gdb.Value for display as a utf-8 literal.
    utf8backslashreplace)encodingerrorsr   )r   r   r    )r   r   )rh   r   r^   s      rM   utf8_literalr      sf     |JJ/AJB
 !	 
JJ/A$JO ! !rO   c                     t        j                         j                  | j                  d      }t	        j
                  d|      d   S )zb
    Return a Python float of the given half-float (represented as a uint64_t
    gdb.Value).
       r>   r   )rW   selected_inferiorread_memoryrf   structunpack)rh   bufs     rM   half_float_valuer      s9    
 


!
-
-ckk1
=C==c"1%%rO   c                     | j                   j                  d      }| j                  j                  |j	                               j                         S )z(
    Load a std::atomic<T>'s value.
    r   )ra   template_argumentrf   reinterpret_castpointerru   )rh   valtys     rM   load_atomicr      s<     HH&&q)E;;''8DDFFrO   c                 |    t        | j                        j                  t        j                  k7  rt        |       } | S )zR
    Load a null count from a gdb.Value of an integer (either atomic or not).
    )r   ra   rd   rW   ro   r   rh   s    rM   load_null_countr      s0     chh$$(9(99#JrO   c                 b    t        | t              st        t        |             }dk7  rd| S dS )z$
    Format a null count value.
    znull count zunknown null count)r   intr   )rh   
null_counts     rM   format_null_countr      s;     c3-.
*4*:k*& '%'rO   c                 "    g dt        |          S )N)r^   msusnsr   r   s    rM   short_time_unitr      s    "3s8,,rO   c                     t        |        dS )z'
    Format a MonthInterval value.
    Mr   r   s    rM   format_month_intervalr      s     #hZq>rO   c                     |  d| dS )Nr@   r   rK   )daysmillisecondss     rM   format_days_millisecondsr      s    V1\N"%%rO   c                     |  d| d| dS )Nr   r@   r   rK   )monthsr   nanoss      rM   format_months_days_nanosr     s    XQtfAeWB''rO   i  c                     t        |       } 	 t        j                  j                  | t        z         }|  d| dS # t
        $ r |  dcY S w xY w)z 
    Format a date32 value.
    zd []zd [year <= 0])r   datetimedatefromordinal
_date_baserg   )rh   decodeds     rM   format_date32r     s^     c(C%--++C*,<= c'!$$  %m$$%s   &; AAc                     t        |       } t        | d      \  }}|r|  dS 	 t        j                  j	                  |t
        z         }|  d| dS # t        $ r |  dcY S w xY w)z 
    Format a date64 value.
    i \&zms [non-multiple of 86400000]zms [r   zms [year <= 0])r   divmodr   r   r   r   rg   )rh   r   	remainderr   s       rM   format_date64r     s     c(CS,/OD)344&--++D:,=> d7)1%%  &n%%&s   &A A"!A"c                    t        |       } t        |      }t        |      }t        |   }t        | |j                        \  }}	 t
        j
                  j                  |      }|j                         j                  dd      }|j                  dkD  r|d|d|j                   dz  }	 |  | d| d	S # t        t        f$ r d}Y w xY w)
z#
    Format a timestamp value.
    T r   .0r@   ztoo large to represent [r   )r   r   time_unit_traitsr   rD   r   utcfromtimestamp	isoformatreplacerE   rg   OSError)rh   unit
short_unittraitsseconds
subsecondsdtprettys           rM   format_timestampr   (  s     c(Ct9D &Jd#F f&7&78GZD//8 ''S1##a'*Qv'?'?&@$ABCCFU:,b**   *)*s   B5 5C	C	c                 x    | j                         j                  |j                               j                         S rJ   )reference_valuer   	referencereferenced_valuer{   s     rM   cast_to_concreter   <  s-    !222<<>B!rO   c                 8    | j                  d      sJ | dd dz   S )zs
    Given a DataTypeClass class name (such as "BooleanType"), return the
    corresponding Scalar class name.
    r/   NScalarendswithrv   s    rM   scalar_class_from_typer   A  s$    
 ==  9xrO   c                 8    | j                  d      sJ | dd dz   S )zr
    Given a DataTypeClass class name (such as "BooleanType"), return the
    corresponding Array class name.
    r/   Nr   Arrayr   r   s    rM   array_class_from_typer   J  s$    
 ==  9wrO   c                   D    e Zd ZdZd Zd Zed        Zd Zd Z	d Z
d Zy	)
CStringz+
    A `const char*` or similar value.
    c                     || _         y rJ   r   selfrh   s     rM   __init__zCString.__init__X  	    rO   c                 T    t        t              dk7  xr t        t        d         dk7  S Nr   )r   datar   s    rM   __bool__zCString.__bool__[  s"    4yA~3#d1g,!"33rO   c                     | j                   S rJ   r   r   s    rM   r   zCString.data^  s    xxrO   c                 R    | j                   j                         j                         S rJ   )rh   r   rx   r   s    rM   r   zCString.bytes_literalb  s    xx##%++--rO   c                 ,    t        | j                        S rJ   )r   rh   r   s    rM   r   zCString.string_literale  s    dhh''rO   c                 6    | j                   j                         S rJ   )rh   r   r   s    rM   r   zCString.stringi  s    xx  rO   c                 4    t        | j                               S rJ   rb   r   r   fmts     rM   
__format__zCString.__format__l      4%%'((rO   N)__name__
__module____qualname____doc__r   r   propertyr   r   r   r   r  rK   rO   rM   r   r   S  s9    4  .(!)rO   r   c                   ,    e Zd ZdZd Zd Zed        Zy)rw   z'
    A `std::shared_ptr<T>` value.
    c                     || _         	 |d   | _        y # t        j                  $ r) t        j                  t        |       d      | _        Y y w xY w)N_M_ptrz.get())rh   _ptrrW   errorparse_and_evalrk   r   s     rM   r   zSharedPtr.__init__z  sN    	KHDIyy 	K**nS.A-B&+IJDI	Ks   
 9AAc                     | j                   S z7
        Return the underlying pointer (a T*).
        r  r   s    rM   getzSharedPtr.get       yyrO   c                 6    | j                   j                         S z-
        The underlying value (a T).
        r  ru   r   s    rM   rx   zSharedPtr.value      
 yy$$&&rO   Nr  r  r  r	  r   r  r
  rx   rK   rO   rM   rw   rw   u  s&    K ' 'rO   rw   c                   ,    e Zd ZdZd Zd Zed        Zy)ry   z'
    A `std::unique_ptr<T>` value.
    c                     || _         | j                   j                  j                  d      }| j                   j                  j	                  |j                         j                               | _        y r   )rh   ra   r   rf   r   r   r  )r   rh   ri   s      rM   r   zUniquePtr.__init__  sN    XX]],,Q/ HH$$55bjjl6J6J6LM	rO   c                     | j                   S r  r  r   s    rM   r  zUniquePtr.get  r  rO   c                 6    | j                   j                         S r  r  r   s    rM   rx   zUniquePtr.value  r  rO   Nr  rK   rO   rM   ry   ry     s&    N ' 'rO   ry   c                   &    e Zd ZdZd Zed        Zy)Variantz 
    A `std::variant<...>`.
    c                 <   || _         	 |d   | _        	 | j                   j                  j                  | j                        | _        y # t        j                  $ r) t        j                  t        |       d      | _        Y qw xY w# t        $ r
 d | _        Y y w xY w)N_M_indexz.index())
rh   indexrW   r  r  rk   ra   r   
value_typeRuntimeErrorr   s     rM   r   zVariant.__init__  s    	NZDJ	#"hhmm==djjIDO	 yy 	N++~c/B.C8,LMDJ	N
  	#"DO	#s"   
A	 4B 	9BBBBc                     | j                   y | j                  j                  }|7|j                  | j                   j	                               j                         S y rJ   )r$  rh   rf   r   r   ru   )r   ptrs     rM   rx   zVariant.value  sO    ??"hh?''(?(?(A **5+-8rO   N)r  r  r  r	  r   r
  rx   rK   rO   rM   r   r     s     #  rO   r   c                   T    e Zd ZdZd Zd Zed        Zed        Zd Z	d Z
d Zd	 Zy
)	StdStringzA
    A `std::string` (or possibly `std::string_view`) value.
    c                    || _         	 |d   d   | _        |d   | _        y # t        j                  $ rO t        j
                  t        |       d      | _        t        j
                  t        |       d      | _        Y y w xY w)N_M_dataplus_M_p_M_string_lengthz.c_str().size())rh   _data_sizerW   r  r  rk   r   s     rM   r   zStdString.__init__  s    	M]+F3DJ/0DJyy 	M++~c/B.C8,LMDJ++~c/B.C7,KLDJ	Ms   ! ABBc                      | j                   dk7  S r   r0  r   s    rM   r   zStdString.__bool__  s    zzQrO   c                     | j                   S rJ   )r/  r   s    rM   r   zStdString.data      zzrO   c                     | j                   S rJ   r2  r   s    rM   r   zStdString.size  r4  rO   c                 j    | j                   j                  | j                        j                         S )Nr   )r/  r   r0  rx   r   s    rM   r   zStdString.bytes_literal  s'    zz%%TZZ%8>>@@rO   c                 ,    t        | j                        S rJ   )r   r/  r   s    rM   r   zStdString.string_literal  s    djj))rO   c                 6    | j                   j                         S rJ   )r/  r   r   s    rM   r   zStdString.string  s    zz  ""rO   c                 4    t        | j                               S rJ   r  r  s     rM   r  zStdString.__format__  r  rO   N)r  r  r  r	  r   r   r
  r   r   r   r   r   r  rK   rO   rM   r)  r)    sO    	M    A*#)rO   r)  c                   D    e Zd ZdZd Zd Zd Zd Zd Zd Z	e
d        Zy	)
	StdVectorz#
    A `std::vector<T>` value.
    c                    || _         	 | j                   d   }|d   | _        t        |d   | j                  z
        | _        y # t        j
                  $ ru t        t	        j                  t        | j                          d            | _        t        t	        j                  t        | j                          d            | _        Y y w xY w)N_M_impl_M_start	_M_finishz.data()r.  )rh   r/  r   r0  rW   r  r  rk   r   rh   impls      rM   r   zStdVector.__init__  s    
	788I&Dj)DJT+.;<DJyy 	7S//!$((+,G46 7DJS//!$((+,G46 7DJ		7s   9A BC
Cc                 j    |dk  s|| j                   k\  rt        d| d| j                   dz
   d      y )Nr   zIndex z! out of bounds (should be in [0, rF   z]))r0  
IndexErrorr   r#  s     rM   _check_indexzStdVector._check_index  sE    19+@a@PPRSU U ,rO   c                     | j                   S rJ   r2  r   s    rM   __len__zStdVector.__len__
  s    zzrO   c                 B    | j                  |       | j                  |   S rJ   )rE  r/  rD  s     rM   __getitem__zStdVector.__getitem__  s    % zz%  rO   c                     | j                  |       t        j                  |j                  t	        | j
                  |                     S )z
        Run `eval_format` with the value at `index`.

        For example, if `eval_format` is "{}.get()", this will evaluate
        "{self[index]}.get()".
        )rE  rW   r  formatrk   r/  )r   r#  eval_formats      rM   eval_atzStdVector.eval_at  sC     	% !!~djj.?@AC 	CrO   c           	   #      K   t        | j                        }t        | j                        D ].  }t	        j
                  |j                  | d| d             0 y w)N[r   )rk   r/  ranger0  rW   r  rK  )r   rL  	data_evalr8   s       rM   	iter_evalzStdVector.iter_eval  sZ     "4::.	tzz" 	9A$$""i[!A#679 9	9s   AAc                     | j                   S rJ   r2  r   s    rM   r   zStdVector.size"  r4  rO   N)r  r  r  r	  r   rE  rG  rI  rM  rR  r
  r   rK   rO   rM   r;  r;    s;    7U
!	C9  rO   r;  c                        e Zd Z fdZ xZS )StdPtrVectorc                 4    t        t        | 	  |            S rJ   )r|   superrI  r   r#  	__class__s     rM   rI  zStdPtrVector.__getitem__)  s    UW(/00rO   )r  r  r  rI  __classcell__rY  s   @rM   rU  rU  '  s    1 1rO   rU  c                   $     e Zd Z fdZd Z xZS )FieldVectorc                 F    t        t        t        |   |                  S )z=
        Dereference the Field object at this index.
        )Fieldr|   rW  rI  rX  s     rM   rI  zFieldVector.__getitem__/  s     U57.u5677rO   c                     t        t        |             D cg c]  }t        | |          }}ddj                  |      z   dz   S c c}w )N{, })rP  r   rb   join)r   r8   ls      rM   __str__zFieldVector.__str__5  sC    #(T#34aSa\44TYYq\!C'' 5s   A)r  r  r  rI  rf  rZ  r[  s   @rM   r]  r]  -  s    8(rO   r]  c                   L    e Zd ZdZd Zed        Zed        Zed        Zd Z	y)r_  z
    A arrow::Field value.
    c                     || _         y rJ   r   r   s     rM   r   zField.__init__?  r   rO   c                 2    t        | j                  d         S )Nname_)r)  rh   r   s    rM   rv   z
Field.nameB  s    '*++rO   c                 2    t        | j                  d         S )Ntype_r|   rh   r   s    rM   ra   z
Field.typeF  s    TXXg&''rO   c                 2    t        | j                  d         S )N	nullable_)boolrh   r   s    rM   nullablezField.nullableJ  s    DHH[)**rO   c                 ,    t        | j                        S rJ   )rb   rh   r   s    rM   rf  zField.__str__N  s    488}rO   N)
r  r  r  r	  r   r
  rv   ra   rq  rf  rK   rO   rM   r_  r_  :  sM     , , ( ( + +rO   r_  c                   "     e Zd ZdZ fdZ xZS )FieldPtrz0
    A std::shared_ptr<arrow::Field> value.
    c                 6    t         |   t        |             y rJ   )rW  r   r|   )r   rh   rY  s     rM   r   zFieldPtr.__init__W  s    s$rO   )r  r  r  r	  r   rZ  r[  s   @rM   rt  rt  R  s    % %rO   rt  c                   8    e Zd ZdZd Zed        Zd ZddZeZ	y)Bufferz 
    A arrow::Buffer value.
    c                 8    || _         t        |d         | _        y )Nsize_)rh   r   r   r   s     rM   r   zBuffer.__init__`  s    G%	rO   c                      | j                   d   S )Ndata_r   r   s    rM   r   zBuffer.datad  s    xx  rO   c                     | j                   dkD  r7| j                  d   j                  | j                         j                         S y)Nr   r{  r   "")r   rh   r   rx   r   s    rM   r   zBuffer.bytes_literalh  s:    99q=88G$00		0BHHJJrO   Nc                     | j                   dkD  rM|| j                   }t        j                         j                  | j                  d   |z   | j                         }nt        d      }|j                  d      S )z>
        Return a view over the bytes of this buffer.
        r   r{  rO   r:   )r   rW   r   r   rh   
memoryviewcast)r   offsetr   mems       rM   
bytes_viewzBuffer.bytes_viewn  sh     99q=~'')55!F*DII7C S/C xx}rO   r   N)
r  r  r  r	  r   r
  r   r   r  viewrK   rO   rM   rw  rw  [  s1    & ! ! DrO   rw  c                   <    e Zd ZdZd Zed        Zed        Zd Zy)	BufferPtrz1
    A arrow::Buffer* value (possibly null).
    c                     || _         t        | j                         }|dk7  rt        |j                               | _        y d | _        y r   )rh   r   rw  ru   r   )r   rh   r'  s      rM   r   zBufferPtr.__init__  s5    $((m03q6#//+,drO   c                 H    | j                   y | j                   j                  S rJ   )r   r   r   s    rM   r   zBufferPtr.data      88xx}}rO   c                 H    | j                   y | j                   j                  S rJ   )r   r   r   s    rM   r   zBufferPtr.size  r  rO   c                 P    | j                   y | j                   j                         S rJ   )r   r   r   s    rM   r   zBufferPtr.bytes_literal  s"    88xx%%''rO   N)	r  r  r  r	  r   r
  r   r   r   rK   rO   rM   r  r    s:    C
  
  
(rO   r  c                   X     e Zd ZdZ e       Z fdZed        ZddZ	e
d        Z xZS )TypedBufferzE
    A buffer containing values of a given a struct format code.
    c                     t         |   |       || _        | j                  s(t	        j
                  d| j                  z         | _        y y N=)rW  r   
mem_format
is_booleanr   calcsize
byte_width)r   rh   r  rY  s      rM   r   zTypedBuffer.__init__  s<    $$oocDOO.CDDO rO   c                     t        |t              sJ |t        j                  k(  r| j                  }n	t
        |   } | ||      S rJ   )r   r   r/   r
   _boolean_formattype_id_to_struct_code)clsrh   rQ   r  s       rM   from_type_idzTypedBuffer.from_type_id  s=    '3''dii,,J/8J3
##rO   c                     | j                   rt        j                  | ||      S || j                  z  }| | j	                  ||| j                  z        }n| j	                  |      }t        || j                        S )z
        Return a view over the primitive values in this buffer.

        The optional `offset` and `length` are expressed in primitive values,
        not bytes.
        )r  Bitmapfrom_bufferr  r  	TypedViewr  )r   r  r   byte_offsetr  s        rM   r  zTypedBuffer.view  sl     ??%%dFF;;t.//+v/GHC//+.Cdoo..rO   c                 2    | j                   | j                  u S rJ   )r  r  r   s    rM   r  zTypedBuffer.is_boolean  s    $"6"666rO   r  )r  r  r  r	  objectr  r   classmethodr  r  r
  r  rZ  r[  s   @rM   r  r    sD     hOE $ $/" 7 7rO   r  c                   (    e Zd ZdZd Zd Zd Zd Zy)r  zh
    View a bytes-compatible object as a sequence of objects described
    by a struct format code.
    c                     t        |t              sJ || _        || _        t	        j
                  d|z         | _        |j                  | j                  z  | _        y r  )	r   r  r  r  r   r  r  nbytesr   )r   r  r  s      rM   r   zTypedView.__init__  sF    #z**$ //#
*:;jjDOO3rO   c                 \    d|cxk  r| j                   k  st        d       t        d      y Nr   zWrong index for bitmapr   rC  rD  s     rM   rE  zTypedView._check_index  5    E'DKK'566 (566 (rO   c                     | j                   S rJ   r   r   s    rM   rG  zTypedView.__len__      {{rO   c                     | j                  |       | j                  }| j                  ||z  |dz   |z   }t        j                  d| j
                  z   |      S )NrF   r  )rE  r  r  r   r   r  )r   r#  wr  s       rM   rI  zTypedView.__getitem__  sQ    % OO hhuqy%!)q1}}S4??2C88rO   N)r  r  r  r	  r   rE  rG  rI  rK   rO   rM   r  r    s    
479rO   r  c                   @    e Zd ZdZg dZd Zd Zd Zd Ze	d        Z
y)	r  z@
    View a bytes-compatible object as a sequence of bools.
    )rF   r            r   @      c                 .    || _         || _        || _        y rJ   )r  r  r   )r   r  r  r   s       rM   r   zBitmap.__init__  s    	rO   c                 \    d|cxk  r| j                   k  st        d       t        d      y r  r  rD  s     rM   rE  zBitmap._check_index  r  rO   c                     | j                   S rJ   r   r   s    rM   rG  zBitmap.__len__  r  rO   c                     | j                  |       || j                  z  }t        |d      \  }}| j                  |   }|| j                  |   z  dk7  S )Nr  r   )rE  r  r   r  _masks)r   r#  
byte_index	bit_indexbytes        rM   rI  zBitmap.__getitem__  sV    %  &ua 0
Iyy$dkk),,11rO   c                     t        |t              sJ t        |d      \  }}t        j                  ||dz  z         |z
  } | |j                  ||      ||      S )Nr  )r   rw  r   mathceilr  )r  r   r  r   r  
bit_offsetbyte_lengths          rM   r  zBitmap.from_buffer  s[    #v&&"("3Zii! 34{B3>>+{;v' 	'rO   N)r  r  r  r	  r  r   rE  rG  rI  r  r  rK   rO   rM   r  r    s6     :F
72 ' 'rO   r  c                       e Zd Zd Zd Zd Zy)
MappedViewc                      || _         || _        y rJ   r  funcr   r  r  s      rM   r   zMappedView.__init__      		rO   c                 ,    t        | j                        S rJ   r   r  r   s    rM   rG  zMappedView.__len__      499~rO   c                 >    | j                  | j                  |         S rJ   r  r  rD  s     rM   rI  zMappedView.__getitem__  s    yy5)**rO   Nr  r  r  r   rG  rI  rK   rO   rM   r  r    s    +rO   r  c                       e Zd Zd Zd Zd Zy)StarMappedViewc                      || _         || _        y rJ   r  r  s      rM   r   zStarMappedView.__init__  r  rO   c                 ,    t        | j                        S rJ   r  r   s    rM   rG  zStarMappedView.__len__  r  rO   c                 :     | j                   | j                  |    S rJ   r  rD  s     rM   rI  zStarMappedView.__getitem__  s    tyy$))E*++rO   Nr  rK   rO   rM   r  r    s    ,rO   r  c                   2     e Zd Z fdZe fd       Z xZS )
NullBitmapc                 ^    | j                  |       | j                  yt        |   |      S )NT)rE  r  rW  rI  rX  s     rM   rI  zNullBitmap.__getitem__"  s.    % 99w"5))rO   c                 >    |
 | |||      S t         |   |||      S )zu
        Create a null bitmap from a Buffer (or None if missing,
        in which case all values are True).
        )rW  r  )r  r   r  r   rY  s       rM   r  zNullBitmap.from_buffer(  s-     ;sFF++w"377rO   )r  r  r  rI  r  r  rZ  r[  s   @rM   r  r     s    * 8 8rO   r  KeyValue)keyrx   c                   "    e Zd ZdZd Zd Zd Zy)Metadataz*
    A arrow::KeyValueMetadata value.
    c                     || _         t        | j                   d         | _        t        | j                   d         | _        y )Nkeys_values_)rh   r;  keysvaluesr   s     rM   r   zMetadata.__init__;  s3    dhhw/0	 34rO   c                 ,    t        | j                        S rJ   )r   r  r   s    rM   rG  zMetadata.__len__@  r  rO   c                 r    t        t        | j                  |         t        | j                  |               S rJ   )r  r)  r  r  r   r8   s     rM   rI  zMetadata.__getitem__C  s)    	$))A,/4;;q>1JKKrO   Nr  r  r  r	  r   rG  rI  rK   rO   rM   r  r  6  s    5
LrO   r  c                   "    e Zd ZdZd Zd Zd Zy)MetadataPtrzE
    A shared_ptr<arrow::KeyValueMetadata> value, possibly null.
    c                     t        |      j                         | _        t        | j                        dk(  | _        | j                  rd | _        y t        | j                  j                               | _        y r   )rw   r  r'  r   is_nullr  ru   mdr   s     rM   r   zMetadataPtr.__init__L  sO    S>%%'488}),,$HTXX5I5I5K,LrO   c                 H    | j                   rdS t        | j                        S r   )r  r   r  r   s    rM   rG  zMetadataPtr.__len__Q  s    LLq2c$''l2rO   c                 D    | j                   rt        | j                  |   S rJ   )r  rC  r  r  s     rM   rI  zMetadataPtr.__getitem__T  s    <<wwqzrO   Nr  rK   rO   rM   r  r  G  s    M
3rO   r  DecimalTraits)	bit_widthstruct_format_ler  Qq   QQQq)r  r  c                   R    e Zd ZdZd Zed        Zed        Zed        Z	d Z
d Zy)	BaseDecimalz@
    Base class for arrow::BasicDecimal{128,256...} values.
    c                     || _         y rJ   rf   )r   rf   s     rM   r   zBaseDecimal.__init__f  s	    rO   c                 ,     | |d   j                         S )z{
        Create a decimal from a gdb.Value representing the corresponding
        arrow::BasicDecimal{128,256...}.
        array_r  )r  rh   s     rM   
from_valuezBaseDecimal.from_valuei  s     3x=(())rO   c                      | |      S )zp
        Create a decimal from a gdb.Value representing the address of the
        raw decimal storage.
        rK   )r  rf   s     rM   from_addresszBaseDecimal.from_addressq  s     7|rO   c                 B   t        j                         j                  | j                  | j                  j
                  dz        }| j                  j                  }t               dk(  r|ddd   }t        j                  d| |      }t               dk(  r|ddd   }|S )zD
        The decimal words, from least to most significant.
        r  rU   Nr   r  )
rW   r   r   rf   r   r  r  r_   r   r   )r   r  r  wordss       rM   r  zBaseDecimal.wordsy  s    
 ##%11$,,26++2G2G12LNkk**<5 dd)C#i-<5 $B$KErO   c                     d}| j                   }| j                  j                  t        |      z  }t	        |      D ]
  }||z  |z   } |S )z.
        The underlying bigint value.
        r   )r  r   r  r   reversed)r   rL   r  bits_per_wordr  s        rM   __int__zBaseDecimal.__int__  sQ     

--U;% 	)Am#q(A	)rO   c                     t        |       }t        j                         5 }||_        d|_        t        t        j                  |      j                  |             cddd       S # 1 sw Y   yxY w)zP
        Format as a decimal number with the given precision and scale.
        FN)r   decimallocalcontextpreccapitalsrb   Decimalscaleb)r   	precisionscalerL   ctxs        rM   rK  zBaseDecimal.format  s\     I!!# 	:s CH CLwq)00%89	: 	: 	:s   <A&&A/N)r  r  r  r	  r   r  r  r  r
  r  r  rK  rK   rO   rM   r  r  a  sR     * *    	:rO   r  c                       e Zd Zed   Zy)
Decimal128r  Nr  r  r  decimal_traitsr   rK   rO   rM   r  r        C FrO   r  c                       e Zd Zed   Zy)
Decimal256r  Nr  rK   rO   rM   r  r    r  rO   r  r  c                   ,    e Zd ZdZd Zed        Zd Zy)ExtensionTypez!
    A arrow::ExtensionType.
    c                     || _         y rJ   r   r   s     rM   r   zExtensionType.__init__  r   rO   c                 2    t        | j                  d         S )Nstorage_type_rm  r   s    rM   storage_typezExtensionType.storage_type  s    TXXo.//rO   c                 j    t        t        j                  t        | j                         d            S )z3
        The result of calling ToString().
        z.ToString())r)  rW   r  rk   rh   r   s    rM   rT   zExtensionType.to_string  s2     ++dhh'(46 7 	7rO   N)r  r  r  r	  r   r
  r  rT   rK   rO   rM   r  r    s%     0 07rO   r  c                       e Zd ZdZd Zy)Schemaz
    A arrow::Schema.
    c                     || _         t        | j                   d         }t        |d         | _        t	        |d         | _        y )Nimpl_fields_	metadata_)rh   r|   r]  fieldsr  metadatar@  s      rM   r   zSchema.__init__  s=    TXXg&'!$y/2#D$56rO   Nr  r  r  r	  r   rK   rO   rM   r  r    s    7rO   r  c                   &    e Zd ZdZd Zed        Zy)RecordBatchz
    A arrow::RecordBatch.
    c                     t        |t        j                  d            | _        t	        t        | j                  d               | _        t        | j                  d         | _        y )Narrow::SimpleRecordBatchschema_columns_	r   rW   lookup_typerh   r  r|   schemarU  columnsr   s     rM   r   zRecordBatch.__init__  sO     $C$'OO4N$OQU488I#678#DHHZ$89rO   c                      | j                   d   S N	num_rows_r   r   s    rM   num_rowszRecordBatch.num_rows      xx$$rO   Nr  r  r  r	  r   r
  r.  rK   rO   rM   r"  r"    s     : % %rO   r"  c                   &    e Zd ZdZd Zed        Zy)Tablez
    A arrow::Table.
    c                     t        |t        j                  d            | _        t	        t        | j                  d               | _        t        | j                  d         | _        y )Narrow::SimpleTabler%  r&  r'  r   s     rM   r   zTable.__init__  sO     $C$'OO4H$IKU488I#678#DHHZ$89rO   c                      | j                   d   S r,  r   r   s    rM   r.  zTable.num_rows  r/  rO   Nr0  rK   rO   rM   r2  r2    s     : % %rO   r2  NullTypenullBooleanTypeboolean	UInt8Typeuint8Int8Typeint8
UInt16Typeuint16	Int16Typeint16
UInt32Typeuint32	Int32Typeint32
UInt64Typeuint64	Int64Typeint64HalfFloatTypefloat16	FloatTypefloat32
DoubleTypefloat64
Date32Typedate32
Date64Typedate64
Time32Typetime32
Time64Typetime64TimestampType	timestampMonthIntervalTypemonth_intervalDayTimeIntervalTypeday_time_intervalMonthDayNanoIntervalTypemonth_day_nano_intervalDurationTypedurationDecimal128Type
decimal128Decimal256Type
decimal256
StringTyper   LargeStringType
large_utf8
BinaryTypebinaryLargeBinaryTypelarge_binaryFixedSizeBinaryTypefixed_size_binaryListTypelistLargeListType
large_listFixedSizeListTypefixed_size_listMapTypemap
StructTypestruct_sparse_uniondense_union
dictionary)SparseUnionTypeDenseUnionTypeDictionaryTypec                   2    e Zd ZdZd Zed        Zd Zd Zy)TypePrinterzA
    Pretty-printer for arrow::DataTypeClass and subclasses.
    c                     || _         t        j                  d|       | _        t	        || j                        | _        y Narrow::)rv   rW   r(  ra   r   rh   r   rv   rh   s      rM   r   zTypePrinter.__init__$  s4    	 OOgdV$45	#C3rO   c                 2    t        | j                  d         S )N	children_)r]  rh   r   s    rM   r  zTypePrinter.fields+  s    488K011rO   c                 `    t         j                  | j                  | j                        }d| S r  )
type_reprsr  rv   )r   rs     rM   _format_typezTypePrinter._format_type/  s&    NN499dii0}rO   c                 B    t        | j                  | j                        S rJ   )rk   rh   ra   r   s    rM   _for_evaluationzTypePrinter._for_evaluation3  s    dhh		22rO   N)	r  r  r  r	  r   r
  r  r  r  rK   rO   rM   r  r    s*    4 2 23rO   r  c                       e Zd ZdZd Zy)PrimitiveTypePrinterz2
    Pretty-printer for non-parametric types.
    c                 (    | j                          dS )Nz()r  r   s    rM   rT   zPrimitiveTypePrinter.to_string<  s    ##%&b))rO   Nr  r  r  r	  rT   rK   rO   rM   r  r  7  s    *rO   r  c                       e Zd ZdZd Zd Zy)TimeTypePrinterz5
    Pretty-printer for time and duration types.
    c                      | j                   d   S Nunit_r   r   s    rM   	_get_unitzTimeTypePrinter._get_unitE  s    xx  rO   c                 J    | j                          d| j                          dS N())r  r  r   s    rM   rT   zTimeTypePrinter.to_stringH  s'    ##%&a(8'9;;rO   N)r  r  r  r	  r  rT   rK   rO   rM   r  r  @  s    !<rO   r  c                       e Zd ZdZd Zy)TimestampTypePrinterz-
    Pretty-printer for timestamp types.
    c                     t        | j                  d         }|r'| j                          d| j                          d| dS | j                          d| j                          dS )N	timezone_r  rb  r  )r)  rh   r  r  )r   tzs     rM   rT   zTimestampTypePrinter.to_stringQ  sh    txx,-'')*!DNN,<+=Rt1EE'')*!DNN,<+=Q??rO   Nr  rK   rO   rM   r  r  L  s    @rO   r  c                       e Zd ZdZd Zy)FixedSizeBinaryTypePrinterz5
    Pretty-printer for fixed-size binary types.
    c                 ^    t        | j                  d         }| j                          d| dS )Nbyte_width_r  r  r   rh   r  )r   widths     rM   rT   z$FixedSizeBinaryTypePrinter.to_string^  s2    DHH]+,##%&awa00rO   Nr  rK   rO   rM   r  r  Y  s    1rO   r  c                       e Zd ZdZd Zy)DecimalTypePrinterz+
    Pretty-printer for decimal types.
    c                     t        | j                  d         }t        | j                  d         }| j                          d| d| dS )N
precision_scale_r  rb  r  r  )r   r  r  s      rM   rT   zDecimalTypePrinter.to_stringh  sK    ./	DHHX&'##%&a	{"UG1==rO   Nr  rK   rO   rM   r  r  c      >rO   r  c                       e Zd ZdZd Zd Zy)ListTypePrinterz(
    Pretty-printer for list types.
    c                 V    | j                   }t        |      dk7  ry |d   j                  S )NrF   r   )r  r   ra   )r   r  s     rM   _get_value_typezListTypePrinter._get_value_types  s(    v;!ay~~rO   c                 x    | j                         }|| j                          dS | j                          d| dS )N<uninitialized or corrupt>r  r  )r  r  )r   childs     rM   rT   zListTypePrinter.to_stringy  sJ    $$&='')**DEE'')*!E7!44rO   N)r  r  r  r	  r  rT   rK   rO   rM   r  r  n  s    5rO   r  c                       e Zd ZdZd Zy)FixedSizeListTypePrinterz2
    Pretty-printer for fixed-size list type.
    c                     | j                         }|| j                          dS t        | j                  d         }| j                          d| d| dS )Nr  
list_size_r  rb  r  )r  r  r   rh   )r   r  	list_sizes      rM   rT   z"FixedSizeListTypePrinter.to_string  sc    $$&='')**DEE./	##%&awb1==rO   Nr  rK   rO   rM   r  r    s    >rO   r  c                       e Zd ZdZd Zy)MapTypePrinterz'
    Pretty-printer for map types.
    c                 8   | j                         }|| j                          dS t        |d         }t        |      dk7  r| j                          dS |d   j                  }|d   j                  }| j                          d| d| d| j
                  d	    d
S )Nr  r  r   r   rF   r  rb  z, keys_sorted=keys_sorted_r  )r  r  r]  r   ra   rh   )r   struct_typestruct_childrenkey_type	item_types        rM   rT   zMapTypePrinter.to_string  s    **,'')**DEE%k+&>?1$'')**DEE"1%**#A&++	$$&'q
"YK @#xx78; 	<rO   Nr  rK   rO   rM   r  r    s    
<rO   r  c                       e Zd ZdZd Zy)DictionaryTypePrinterz.
    Pretty-printer for dictionary types.
    c                     t        | j                  d         }t        | j                  d         }| j                  d   }| j                          d| d| d| dS )Nindex_type_value_type_ordered_r  rb  z
, ordered=r  )r|   rh   r  )r   
index_typer$  ordereds       rM   rT   zDictionaryTypePrinter.to_string  sh    488M23
488M23
((:&$$&'qBzl C")1& 	'rO   Nr  rK   rO   rM   r  r    s    'rO   r  c                       e Zd ZdZd Zy)StructTypePrinterz*
    Pretty-printer for struct types.
    c                 B    | j                          d| j                   dS r  )r  r  r   s    rM   rT   zStructTypePrinter.to_string  s#    ##%&a}A66rO   Nr  rK   rO   rM   r  r    s    7rO   r  c                       e Zd ZdZd Zy)UnionTypePrinterz)
    Pretty-printer for union types.
    c                     t        | j                  d         }ddj                  d |D              z   dz   }| j                          d| j                   d| dS )	Ntype_codes_ra  rb  c              3   v   K   | ]1  }t        |j                  t        j                  d                    3 yw)r   N)rb   r  rW   r(  ).0xs     rM   	<genexpr>z-UnionTypePrinter.to_string.<locals>.<genexpr>  s/      %:)* &)0F)G%H %:s   79rc  z(fields=z, type_codes=r  )r;  rh   rd  r  r  )r   
type_codess     rM   rT   zUnionTypePrinter.to_string  sh    txx67
499 %:.8%: : :<?@
##%&ht{{m=TUVVrO   Nr  rK   rO   rM   r  r    s    WrO   r  c                       e Zd ZdZd Zy)ExtensionTypePrinterz-
    Pretty-printer for extension types.
    c                     t        | j                        }| j                          d|j                         j	                          d|j
                   S )Nr   z with storage type )r  rh   r  rT   r   r  )r   ext_types     rM   rT   zExtensionTypePrinter.to_string  sT     *$$&'q););)=)L)L)N(O P%%-%:%:$;= 	>rO   Nr  rK   rO   rM   r  r    r  rO   r  c                   8    e Zd ZdZd Zed        Zd Zd Zd Z	y)ScalarPrinterz:
    Pretty-printer for arrow::Scalar and subclasses.
    c                    t        t        |d         d         }t        |      }||j                  } t	        | t
              sJ t        j                  |       }||_        |j                  |_
        t        |j                        |_	        ||_        t        j                  d|j                         }t        ||      |_        t#        |j                   d         |_        |S )Nra   id_r  is_valid)r   r|   lookup_type_classscalar_printer
issubclassr  r  __new__
type_classrv   	type_namer   rQ   rW   r(  r   rh   rp  r  )r  rh   rQ   r  r   concrete_types         rM   r  zScalarPrinter.__new__  s    eCK(/0&w/
!++Cc=11~~c"$#*4>>:	'$))(=>#C7TXXj12rO   c                     t        j                  d| j                         }t        t	        | j
                  d         |      S z6
        The concrete DataTypeClass instance.
        r  ra   rW   r(  r  r   r|   rh   r   r  s     rM   ra   zScalarPrinter.type  s>    
 '$..1A(BCdhhv&6 7 -/ 	/rO   c                      d| j                    S r  r   r   s    rM   r  zScalarPrinter._format_type  s    $$rO   c                     | j                   j                  r | j                          d| j                   dS | j                          dS )N	 of type , null valuez of null value)r  is_parametricr  ra   r   s    rM   _format_nullzScalarPrinter._format_null  sG    ??(('')*)DII;lKK'')*.99rO   c                 ,    t        | j                        S rJ   )rk   rh   r   s    rM   r  zScalarPrinter._for_evaluation  s    dhh''rO   N)
r  r  r  r	  r  r
  ra   r  r  r  rK   rO   rM   r  r    s/    $ / /%:(rO   r  c                       e Zd ZdZd Zy)NullScalarPrinterz/
    Pretty-printer for arrow::NullScalar.
    c                 "    | j                         S rJ   r  r   s    rM   rT   zNullScalarPrinter.to_string  s      ""rO   Nr  rK   rO   rM   r  r    s    #rO   r  c                       e Zd ZdZd Zy)NumericScalarPrinterz3
    Pretty-printer for numeric Arrow scalars.
    c                 H   | j                   s| j                         S | j                  d   }| j                  dk(  r"| j	                          dt        |       d| dS | j                  dv r$|j                  t        j                  d            }| j	                          d| S )Nrx   rJ  
 of value r   r   )r:  r<  r   )	r  r  rh   r  r  r   r  rW   r(  r   rx   s     rM   rT   zNumericScalarPrinter.to_string  s    }}$$&&!>>_,((*+ ,  0 785'D E>>66JJsu56E##%&j88rO   Nr  rK   rO   rM   r  r    s    	9rO   r  c                       e Zd ZdZd Zy)TimeScalarPrinterz5
    Pretty-printer for Arrow time-like scalars.
    c                     t        | j                  d         }| j                  s| j                          d| dS | j                  d   }| j                          d| | S )Nr   of null value [r   rx   r  )r   ra   r  r  rh   )r   r   rx   s      rM   rT   zTimeScalarPrinter.to_string  sg    tyy12}}'')**:4&BB!##%&jv>>rO   Nr  rK   rO   rM   r  r    s    ?rO   r  c                       e Zd ZdZd Zy)Date32ScalarPrinterz1
    Pretty-printer for arrow::Date32Scalar.
    c                     | j                   s| j                         S | j                  d   }| j                          dt	        |       S Nrx   r  )r  r  rh   r  r   r  s     rM   rT   zDate32ScalarPrinter.to_string&  G    }}$$&&!##%&ju1E0FGGrO   Nr  rK   rO   rM   r  r  !      HrO   r  c                       e Zd ZdZd Zy)Date64ScalarPrinterz1
    Pretty-printer for arrow::Date64Scalar.
    c                     | j                   s| j                         S | j                  d   }| j                          dt	        |       S r  )r  r  rh   r  r   r  s     rM   rT   zDate64ScalarPrinter.to_string2  r   rO   Nr  rK   rO   rM   r  r  -  r  rO   r  c                       e Zd ZdZd Zy)TimestampScalarPrinterz4
    Pretty-printer for arrow::TimestampScalar.
    c                 B   t        | j                  d         }t        | j                  d         }|j                  dk7  r|j	                         nd}| j
                  s| j                          d| d| dS | j                  d   }| j                          d	| | d
| dS )Nr  r  r   zno timezoner  rb  r   rx   r  r   )r   ra   r)  r   r   r  r  rh   )r   r   r  rx   s       rM   rT   z TimestampScalarPrinter.to_string>  s    tyy12tyy-.$&GGqLR m}}'')**:4&2$aHH!##%&jvRt1EErO   Nr  rK   rO   rM   r  r  9  s    FrO   r  c                       e Zd ZdZd Zy)MonthIntervalScalarPrinterz?
    Pretty-printer for arrow::MonthIntervalScalarPrinter.
    c                     | j                   s| j                         S | j                  d   }| j                          dt	        |       S r  )r  r  rh   r  r   r  s     rM   rT   z$MonthIntervalScalarPrinter.to_stringM  sH    }}$$&&!##%&j1Fu1M0NOOrO   Nr  rK   rO   rM   r	  r	  H  s    PrO   r	  c                   &    e Zd ZdZed        Zd Zy)DecimalScalarPrinterzA
    Pretty-printer for arrow::DecimalScalar and subclasses.
    c                 (    t         | j                     S rJ   )decimal_type_to_classr  r   s    rM   decimal_classz"DecimalScalarPrinter.decimal_classY  s    $T^^44rO   c                 F   | j                   }t        |d         }t        |d         }d| d| d}| j                  s| j                          d| S | j                  j                  | j                  d         j                  ||      }| j                          d| d	| S )
Nr  r  z[precision=z, scale=r   z of null value rx   r  r   )ra   r   r  r  r  r  rh   rK  )r   ri   r  r  suffixrx   s         rM   rT   zDecimalScalarPrinter.to_string]  s    YY<()	BxL!yk%:}}'')*/&BB""--dhhw.? 006y%0H 	##%&jqAArO   N)r  r  r  r	  r
  r  rT   rK   rO   rM   r  r  T  s!     5 5	BrO   r  c                       e Zd ZdZd Zd Zy)BaseBinaryScalarPrinterzD
    Pretty-printer for arrow::BaseBinaryScalar and subclasses.
    c                 ~    d| j                   v r t        |j                  |j                        S |j	                         S )NString)r  r   r   r   r   )r   bufptrs     rM   _format_bufz#BaseBinaryScalarPrinter._format_bufn  s2    t~~%V[[99''))rO   c                 (   | j                   s| j                         S t        t        | j                  d         j                               }|j                  }|| j                          dS | j                          d| d| j                  |       S )Nrx   z of value <unallocated>	 of size , value )	r  r  r  rw   rh   r  r   r  r  )r   r  r   s      rM   rT   z!BaseBinaryScalarPrinter.to_stringt  s    }}$$&&9TXXg%67;;=>{{<'')**ABB$$&'y 7))&124 	5rO   N)r  r  r  r	  r  rT   rK   rO   rM   r  r  i  s    *5rO   r  c                       e Zd ZdZd Zy)FixedSizeBinaryScalarPrinterz:
    Pretty-printer for arrow::FixedSizeBinaryScalar.
    c           	      6   | j                   d   }t        t        | j                  d         j	                               }|j
                  | j                          d| dS | j                  rdnd}| j                          d| d| d| j                  |       S )	Nr  rx   r  z, <unallocated>r   z
null with rb  zvalue )	ra   r  rw   rh   r  r   r  r  r  )r   r   r  nullnesss       rM   rT   z&FixedSizeBinaryScalarPrinter.to_string  s    yy'9TXXg%67;;=>;;'')*)D6II2L$$&'yb*F4#3#3F#;"<> 	?rO   Nr  rK   rO   rM   r  r    s    ?rO   r  c                       e Zd ZdZd Zy)DictionaryScalarPrinterz5
    Pretty-printer for arrow::DictionaryScalar.
    c                     | j                   s| j                         S t        | j                  d   d         }t        | j                  d   d         }| j	                          d| d| S )Nrx   r#  r{  z
 of index z, dictionary r  r  r|   rh   r  )r   r#  r{  s      rM   rT   z!DictionaryScalarPrinter.to_string  sq    }}$$&&dhhw'01488G,\:;
$$&'z% 9(\+ 	,rO   Nr  rK   rO   rM   r   r     s    ,rO   r   c                       e Zd ZdZd Zy)BaseListScalarPrinterzB
    Pretty-printer for arrow::BaseListScalar and subclasses.
    c                     | j                   s| j                         S t        | j                  d         }| j	                          d| S r  r"  r  s     rM   rT   zBaseListScalarPrinter.to_string  sF    }}$$&&dhhw'(##%&j88rO   Nr  rK   rO   rM   r$  r$    s    9rO   r$  c                   "    e Zd ZdZd Zd Zd Zy)StructScalarPrinterz1
    Pretty-printer for arrow::StructScalar.
    c                      yNrv  rK   r   s    rM   display_hintz StructScalarPrinter.display_hint      rO   c              #   "  K   | j                   sy t        | j                  d         }t        | j                  d         }t	        ||      D ]?  \  }}t        t        |      d         j                         }d|f dt        |      f A y w)Nr  rx   rj  rv   )r  r;  ra   rh   zipr)  r|   r   )r   eval_fieldseval_valuesfieldrx   rv   s         rM   childrenzStructScalarPrinter.children  s     }}		+ 67 12[9 	*LE5U5\'23BBDD4. E%L))	*s   BBc                 \    | j                   s| j                         S | j                          S rJ   )r  r  r  r   s    rM   rT   zStructScalarPrinter.to_string  s*    }}$$&&##%&'rO   N)r  r  r  r	  r*  r1  rT   rK   rO   rM   r'  r'    s    *(rO   r'  c                       e Zd ZdZd Zy)SparseUnionScalarPrinter?
    Pretty-printer for arrow::UnionScalar and subclasses.
    c                    | j                   d   j                  t        j                  d            }| j                  s#| j                          d| j                   d| dS t        | j                   d         }| j                   d   j                  t        j                  d            }| j                          d| d	t        ||          S )
N	type_coder   r  , type code r  rx   child_id of type code r  )	rh   r  rW   r(  r  r  ra   r;  r|   )r   r7  r/  r9  s       rM   rT   z"SparseUnionScalarPrinter.to_string  s    HH[)..su/EF	}}((*+9TYYK @!!*<9 : 1288J',,S__U-CD$$&'~i[ A{84568 	9rO   Nr  rK   rO   rM   r4  r4    s    9rO   r4  c                       e Zd ZdZd Zy)DenseUnionScalarPrinterr5  c                 "   | j                   d   j                  t        j                  d            }| j                  s#| j                          d| j                   d| dS t        | j                   d         }| j                          d| d| S )	Nr7  r   r  r8  r  rx   r:  r  )rh   r  rW   r(  r  r  ra   r|   )r   r7  rx   s      rM   rT   z!DenseUnionScalarPrinter.to_string  s    HH[)..su/EF	}}((*+9TYYK @!!*<9 :dhhw'($$&'~i[ A! 	"rO   Nr  rK   rO   rM   r<  r<    s    "rO   r<  c                       e Zd ZdZd Zy)MapScalarPrinterz.
    Pretty-printer for arrow::MapScalar.
    c                     | j                   s| j                         S t        | j                  d         }t        |d         }t	        d|      }| j                          d| j                   d|j                          S )Nrx   r{  arrow::ArrayDatar  r  )r  r  r|   rh   ArrayDataPrinterr  ra   _format_contents)r   arrayr   data_printers       rM   rT   zMapScalarPrinter.to_string  s}    }}$$&&dhhw'(U7^$'(:DA$$&'y <%6689; 	<rO   Nr  rK   rO   rM   r?  r?    s    <rO   r?  c                       e Zd ZdZd Zy)ExtensionScalarPrinterz4
    Pretty-printer for arrow::ExtensionScalar.
    c                 @   t        | j                        }| j                  s2| j                          d|j	                         j                          dS t        | j                  d         }| j                          d|j	                         j                          d| S )Nr  r  rx   r  )r  ra   r  r  rT   r   r|   rh   )r   r  rx   s      rM   rT   z ExtensionScalarPrinter.to_string  s     +}}((*+9))+::<=\K Ldhhw'($$&'y%%'6689%J 	KrO   Nr  rK   rO   rM   rG  rG    s    KrO   rG  c                   h    e Zd ZdZd Zed        Zd ZddZddZ	ddZ
d	 Zd
 Zd Zd Zd Zd Zy)rB  z.
    Pretty-printer for arrow::ArrayData.
    c                    t        t        |d         d         }t        |      }||j                  } t	        | t
              sJ t        j                  |       }||_        ||_	        ||_
        |j                  |_        ||_        t        |j                  d         |_        t        |j                  d         |_        |S )Nra   r  r  r   )r   r|   r  array_data_printerr  rB  r  r  rv   rh   r  r  rQ   r  r   )r  rv   rh   rQ   r  r   s         rM   r  zArrayDataPrinter.__new__  s    eCK(/0&w/
!//Cc#344~~c"	$#$((8,-$((8,-rO   c                     t        j                  d| j                         }t        t	        | j
                  d         |      S r  r  r  s     rM   ra   zArrayDataPrinter.type  s9    
 '$..1A(BCdhhv&6 7GGrO   c           	      l    d| j                    d| j                   dt        | j                  d          S )Nzlength z	, offset rb  r   )r   r  r   rh   r   s    rM   rC  z!ArrayDataPrinter._format_contents  s<    $++ '++b$TXXl%;<=? 	@rO   Nc                    t        | j                  d         }t        ||         j                         }t	        |      dk(  ry |$t
        j                  |j                         |      S t        |j                               S )Nbuffersr   )	r;  rh   rw   r  r   r  r  ru   rw  )r   r#  rQ   rO  r  s        rM   _bufferzArrayDataPrinter._buffer"  sq    DHHY/075>*..0v;!++F,>,>,@'JJ&,,.//rO   c                     | j                  ||      }|y|| j                  }|j                  | j                  |      S )z
        Return a typed view of values in the buffer with the given index.

        Values are returned as tuples since some types may decode to
        multiple values (for example day_time_interval).
        N)rP  r   r  r  )r   r#  rQ   r   r   s        rM   _buffer_valueszArrayDataPrinter._buffer_values,  s?     ll5'*;>[[FxxV,,rO   c                 D    t        t        | j                  |||            S )zk
        Like _buffer_values(), but assumes values are 1-tuples
        and returns them unpacked.
        )r  rN   rR  )r   r#  rQ   r   s       rM   _unpacked_buffer_valuesz(ArrayDataPrinter._unpacked_buffer_values:  s'    
 h"11%&IK 	KrO   c                     t        | j                        r| j                  d      nd }t        j	                  || j
                  | j                        S r   )rR   rQ   rP  r  r  r  r   )r   r   s     rM   _null_bitmapzArrayDataPrinter._null_bitmapB  s9    !0!>dll1oD%%c4;;DDrO   c                     t        |      dfS )Nr7  rb   r  s     rM   _null_childzArrayDataPrinter._null_childF  s    1vv~rO   c                     t        |      |fS rJ   rX  )r   r8   rx   s      rM   _valid_childzArrayDataPrinter._valid_childI  s    1vu}rO   c                      y rJ   rK   r   s    rM   r*  zArrayDataPrinter.display_hintL  s    rO   c                      y)NrK   rK   r   s    rM   r1  zArrayDataPrinter.childrenO  s    rO   c                 ^    | j                   }| j                   d| d| j                          S )Nr  rb  )ra   rv   rC  r   ri   s     rM   rT   zArrayDataPrinter.to_stringR  s5    YY99+Yrd"((*+- 	.rO   rJ   )r  r  r  r	  r  r
  ra   rC  rP  rR  rT  rV  rY  r[  r*  r1  rT   rK   rO   rM   rB  rB    sW    " H H@
0-KE.rO   rB  c                   2    e Zd ZdZ ee      Zd Zd Zd Z	y)NumericArrayDataPrinterzA
    ArrayDataPrinter specialization for numeric data types.
    c                 b    t        | j                  | j                  d| j                              S NrF   )r  _format_valuerR  rQ   r   s    rM   _values_viewz$NumericArrayDataPrinter._values_view^  s-    d00"11!T\\BD 	DrO   c                      yNrD  rK   r   s    rM   r*  z$NumericArrayDataPrinter.display_hintb      rO   c              #     K   | j                   dk(  ry | j                         }| j                         }t        t	        ||            D ];  \  }\  }}|r| j                  |t        |             )| j                  |       = y wr   )r   re  rV  	enumerater-  r[  rb   rY  )r   r  	null_bitsr8   validrx   s         rM   r1  z NumericArrayDataPrinter.childrene  s     ;;!""$%%'	!*3y&+A!B 	*A~u''3u:66&&q))		*s   BBN)
r  r  r  r	  staticmethodrN   rd  re  r*  r1  rK   rO   rM   ra  ra  X  s#     !*MD	*rO   ra  c                       e Zd ZdZd Zd Zy)BooleanArrayDataPrinterz6
    ArrayDataPrinter specialization for boolean.
    c                 4    t        |      j                         S rJ   )rb   lower)r   rL   s     rM   rd  z%BooleanArrayDataPrinter._format_valuev  s    1v||~rO   c                 b    t        | j                  | j                  d| j                              S rc  )r  rd  rR  rQ   r   s    rM   re  z$BooleanArrayDataPrinter._values_viewy  s-    $,,--a>@ 	@rO   N)r  r  r  r	  rd  re  rK   rO   rM   ro  ro  q  s    @rO   ro  c                        e Zd ZdZ ee      Zy)Date32ArrayDataPrinterz5
    ArrayDataPrinter specialization for date32.
    N)r  r  r  r	  rm  r   rd  rK   rO   rM   rt  rt  ~       !/MrO   rt  c                        e Zd ZdZ ee      Zy)Date64ArrayDataPrinterz5
    ArrayDataPrinter specialization for date64.
    N)r  r  r  r	  rm  r   rd  rK   rO   rM   rw  rw    ru  rO   rw  c                       e Zd ZdZd Zd Zy)TimeArrayDataPrinterz@
    ArrayDataPrinter specialization for time32 and time64.
    c                 `    | j                   d   | _        t        | j                        | _        y r  )ra   r   r   unit_stringr  s      rM   r   zTimeArrayDataPrinter.__init__  s#    IIg&	*4995rO   c                 "    | | j                    S rJ   )r{  r   s     rM   rd  z"TimeArrayDataPrinter._format_value  s    t''())rO   Nr  r  r  r	  r   rd  rK   rO   rM   ry  ry    s    6*rO   ry  c                       e Zd ZdZd Zd Zy)TimestampArrayDataPrinterz8
    ArrayDataPrinter specialization for timestamp.
    c                 ,    | j                   d   | _        y r  )ra   r   r  s      rM   r   z"TimestampArrayDataPrinter.__init__  s    IIg&	rO   c                 .    t        || j                        S rJ   )r   r   r   s     rM   rd  z'TimestampArrayDataPrinter._format_value  s    TYY//rO   Nr}  rK   rO   rM   r  r    s    '0rO   r  c                        e Zd ZdZ ee      Zy)MonthIntervalArrayDataPrinterz=
    ArrayDataPrinter specialization for month_interval.
    N)r  r  r  r	  rm  r   rd  rK   rO   rM   r  r    s     !!67MrO   r  c                        e Zd ZdZ ee      Zy)DayTimeIntervalArrayDataPrinter@
    ArrayDataPrinter specialization for day_time_interval.
    N)r  r  r  r	  rm  r   rd  rK   rO   rM   r  r         !!9:MrO   r  c                        e Zd ZdZ ee      Zy)$MonthDayNanoIntervalArrayDataPrinterr  N)r  r  r  r	  rm  r   rd  rK   rO   rM   r  r    r  rO   r  c                   "    e Zd ZdZd Zd Zd Zy)DecimalArrayDataPrinterz7
    ArrayDataPrinter specialization for decimals.
    c                     | j                   }t        |d         | _        t        |d         | _        t        | j
                     | _        | j                  j                  j                  dz  | _	        y )Nr  r  r  )
ra   r   r  r  r  r  r  r   r  r  )r   rv   rh   ri   s       rM   r   z DecimalArrayDataPrinter.__init__  s[    YYR-.H&
24>>B,,33==BrO   c                      yrg  rK   r   s    rM   r*  z$DecimalArrayDataPrinter.display_hint  rh  rO   c              #     K   | j                   dk(  ry | j                         }| j                  d      j                  | j                  | j
                  z  z   }t        |      D ]}  \  }}|rT| j                  j                  |      }| j                  ||j                  | j                  | j                               n| j                  |       || j
                  z  } y w)Nr   rF   )r   rV  rP  r   r  r  rj  r  r  r[  rK  r  r  rY  )r   rk  rf   r8   rl  decs         rM   r1  z DecimalArrayDataPrinter.children  s     ;;!%%'	,,q/&&t)FF!), 	'HAu((55g>''szz$..$**=? ? &&q))t&G	's   C"C$Nr  r  r  r	  r   r*  r1  rK   rO   rM   r  r    s    C'rO   r  c                   "    e Zd ZdZd Zd Zd Zy)FixedSizeBinaryArrayDataPrinterz@
    ArrayDataPrinter specialization for fixed_size_binary.
    c                 ,    | j                   d   | _        y )Nr  )ra   r  r  s      rM   r   z(FixedSizeBinaryArrayDataPrinter.__init__  s    ))M2rO   c                      yrg  rK   r   s    rM   r*  z,FixedSizeBinaryArrayDataPrinter.display_hint  rh  rO   c              #     K   | j                   dk(  ry | j                         }| j                  d      j                  | j                  | j
                  z  z   }t        |      D ]s  \  }}|rJ| j
                  r)| j                  |t        || j
                               n(| j                  |d       n| j                  |       || j
                  z  }u y w)Nr   rF   r}  )
r   rV  rP  r   r  r  rj  r[  r   rY  )r   rk  rf   r8   rl  s        rM   r1  z(FixedSizeBinaryArrayDataPrinter.children  s     ;;!%%'	,,q/&&t)FF!), 		'HAu??++=$//BD D ++At44&&q))t&G		's   CCNr  rK   rO   rM   r  r    s    3'rO   r  c                   "    e Zd ZdZd Zd Zd Zy)BinaryArrayDataPrinterzD
    ArrayDataPrinter specialization for variable-sized binary.
    c                    | j                   t        j                  t        j                  fv | _        | j                   t        j
                  t        j                  fv | _        | j                  rt        | _	        y t        | _	        y rJ   )
rQ   r/   r,   r+   is_larger   is_utf8r   r   format_stringr  s      rM   r   zBinaryArrayDataPrinter.__init__  sW    ):):D<M<M(NN||T5F5F'GG-1\\\}rO   c                      yrg  rK   r   s    rM   r*  z#BinaryArrayDataPrinter.display_hint  rh  rO   c              #     K   | j                   dk(  ry | j                         }| j                  d| j                  rt        j
                  nt        j                  | j                   dz         }| j                  d      j                  }t        |      D ]i  \  }}|rO||   }||dz      |z
  }|r(| j                  || j                  ||z   |             B| j                  |d       W| j                  |       k y w)Nr   rF   r   r   r}  )r   rV  rT  r  r/   r   r   rP  r   rj  r[  r  rY  )r   rk  offsetsr  r8   rl  r0   r   s           rM   r1  zBinaryArrayDataPrinter.children  s     ;;!%%'	..T]]tzz

;;? / $ a%%!), 
	*HAu
q1u~-++4--fundCE E ++At44&&q))
	*s   C?DNr  rK   rO   rM   r  r    s    M
*rO   r  c                   .    e Zd ZdZd Zd Zd Zd Zd Zy)ArrayPrinterz9
    Pretty-printer for arrow::Array and subclasses.
    c                     t        |d         }t        d|      | _        t        | j                  j                        | _        y )Nr{  rA  )r|   rB  rE  r   r  rv   )r   rh   r   s      rM   r   zArrayPrinter.__init__  s8    S\",-?F)$*;*;*E*EF	rO   c                 6    | j                   j                         S rJ   )rE  rC  r   s    rM   rC  zArrayPrinter._format_contents   s      1133rO   c                     | j                   j                  j                  r9| j                   j                  }d| j                   d| d| j                          S d| j                   d| j                          S )Nr  r  rb  z of )rE  r  r  ra   rv   rC  r_  s     rM   rT   zArrayPrinter.to_string#  sp    ''55""''BTYYKyBt7L7L7N6OPPTYYKtD,A,A,C+DEErO   c                 6    | j                   j                         S rJ   )rE  r*  r   s    rM   r*  zArrayPrinter.display_hint*  s      --//rO   c                 6    | j                   j                         S rJ   )rE  r1  r   s    rM   r1  zArrayPrinter.children-  s      ))++rO   N)	r  r  r  r	  r   rC  rT   r*  r1  rK   rO   rM   r  r    s"    G
4F0,rO   r  c                   (    e Zd ZdZd Zd Zd Zd Zy)ChunkedArrayPrinterz1
    Pretty-printer for arrow::ChunkedArray.
    c                 Z    || _         || _        t        | j                  d         | _        y )Nchunks_)rv   rh   r;  chunksr  s      rM   r   zChunkedArrayPrinter.__init__6  s%    	 34rO   c                      yrg  rK   r   s    rM   r*  z ChunkedArrayPrinter.display_hint;  rh  rO   c              #      K   t        | j                        D ]6  \  }}t        t        |            }t	        |      |j                         f 8 y wrJ   )rj  r  r  r|   rb   rC  )r   r8   chunkprinters       rM   r1  zChunkedArrayPrinter.children>  sH     !$++. 	5HAu"5<0Ga&'22444	5s   AAc                     t        | j                  d         }| j                   d| d| j                  d    dt        | j                  d          dt	        | j
                         d
S )	Nrl  r  z	, length length_rb  null_count_ with z chunks)r|   rh   rv   r   r   r  r_  s     rM   rT   zChunkedArrayPrinter.to_stringC  sj    488G$%99+Yrd)DHHY4G3H$TXXm%<=> ?DKK()2 	3rO   Nr  r  r  r	  r   r*  r1  rT   rK   rO   rM   r  r  1  s    5
5
3rO   r  c                       e Zd ZeZd Zy)DataTypeClassc                     || _         y rJ   r   )r   rv   s     rM   r   zDataTypeClass.__init__M  s	    	rO   N)r  r  r  rB  rK  r   rK   rO   rM   r  r  J  s    )rO   r  c                       e Zd ZdZeZeZy)NullTypeClassFN)r  r  r  r  r  type_printerr  r  rK   rO   rM   r  r  Q  s    M'L&NrO   r  c                       e Zd ZdZeZeZeZ	y)NumericTypeClassFN)
r  r  r  r  r  r  r  r  ra  rK  rK   rO   rM   r  r  W      M'L)N0rO   r  c                       e Zd ZdZeZeZeZ	y)BooleanTypeClassFN)
r  r  r  r  r  r  r  r  ro  rK  rK   rO   rM   r  r  ^  r  rO   r  c                       e Zd ZdZeZeZeZ	y)Date32TypeClassFN)
r  r  r  r  r  r  r  r  rt  rK  rK   rO   rM   r  r  e      M'L(N/rO   r  c                       e Zd ZdZeZeZeZ	y)Date64TypeClassFN)
r  r  r  r  r  r  r  r  rw  rK  rK   rO   rM   r  r  l  r  rO   r  c                       e Zd ZdZeZeZeZ	y)TimeTypeClassTN
r  r  r  r  r  r  r  r  ry  rK  rK   rO   rM   r  r  s      M"L&N-rO   r  c                       e Zd ZdZeZeZeZ	y)TimestampTypeClassTN)
r  r  r  r  r  r  r  r  r  rK  rK   rO   rM   r  r  z  s    M'L+N2rO   r  c                       e Zd ZdZeZeZeZ	y)DurationTypeClassTNr  rK   rO   rM   r  r    r  rO   r  c                       e Zd ZdZeZeZeZ	y)MonthIntervalTypeClassFN)
r  r  r  r  r  r  r	  r  r  rK  rK   rO   rM   r  r    s    M'L/N6rO   r  c                       e Zd ZdZeZeZeZ	y)DayTimeIntervalTypeClassFN)
r  r  r  r  r  r  r  r  r  rK  rK   rO   rM   r  r    s    M'L)N8rO   r  c                       e Zd ZdZeZeZeZ	y)MonthDayNanoIntervalTypeClassFN)
r  r  r  r  r  r  r  r  r  rK  rK   rO   rM   r  r    s    M'L)N=rO   r  c                       e Zd ZdZeZeZeZ	y)DecimalTypeClassTN)
r  r  r  r  r  r  r  r  r  rK  rK   rO   rM   r  r    s    M%L)N0rO   r  c                       e Zd ZdZeZeZeZ	y)BaseBinaryTypeClassFN)
r  r  r  r  r  r  r  r  r  rK  rK   rO   rM   r  r    s    M'L,N/rO   r  c                       e Zd ZdZeZeZeZ	y)FixedSizeBinaryTypeClassTN)
r  r  r  r  r  r  r  r  r  rK  rK   rO   rM   r  r    s    M-L1N8rO   r  c                       e Zd ZdZeZeZy)BaseListTypeClassTN)r  r  r  r  r  r  r$  r  rK   rO   rM   r  r    s    M"L*NrO   r  c                       e Zd ZdZeZeZy)FixedSizeListTypeClassTN)r  r  r  r  r  r  r$  r  rK   rO   rM   r  r    s    M+L*NrO   r  c                       e Zd ZdZeZeZy)MapTypeClassTN)r  r  r  r  r  r  r?  r  rK   rO   rM   r  r    s    M!L%NrO   r  c                       e Zd ZdZeZeZy)StructTypeClassTN)r  r  r  r  r  r  r'  r  rK   rO   rM   r  r    s    M$L(NrO   r  c                       e Zd ZdZeZeZy)DenseUnionTypeClassTN)r  r  r  r  r  r  r<  r  rK   rO   rM   r  r    s    M#L,NrO   r  c                       e Zd ZdZeZeZy)SparseUnionTypeClassTN)r  r  r  r  r  r  r4  r  rK   rO   rM   r  r    s    M#L-NrO   r  c                       e Zd ZdZeZeZy)DictionaryTypeClassTN)r  r  r  r  r  r  r   r  rK   rO   rM   r  r    s    M(L,NrO   r  c                       e Zd ZdZeZeZy)ExtensionTypeClassTN)r  r  r  r  r  r  rG  r  rK   rO   rM   r  r    s    M'L+NrO   r  DataTypeTraits)factoryrv   r|  r}  r~  c                 h    t         j                  |       }||j                  |j                        S y)zL
    Lookup a type class (an instance of DataTypeClass) by its type id.
    N)type_traits_by_idr  r  rv   )rQ   r   s     rM   r  r    s0     ""7+F~~fkk**rO   c                       e Zd ZdZi dddddddd	d
dddddddddddddddddddddd d!d"d#Zd$ Zd% Zd& Zd' Zy())StatusPrinterz+
    Pretty-printer for arrow::Status.
    r   OKrF   OutOfMemoryr   KeyErrorr   rz   r  Invalid   IOErrorrG   CapacityError   rC  r  	CancelledrH   UnknownError
   NotImplemented   SerializationError   RError(   CodeGenError)   ExpressionValidationError*   ExecutionError-   AlreadyExistsc                     || _         y rJ   r   r  s      rM   r   zStatusPrinter.__init__A  r   rO   c                 H   t        |d         j                         }t        |      dk(  ry t        t	        j
                  t        |       d            }t        t	        j
                  t        |       d            }d|j                          d|j                          S )Ndetailr   z->type_id()z->ToString().c_str()rO  z] )	rw   r  r   r   rW   r  rk   r   r   )r   state
detail_ptr	detail_id
detail_msgs        rM   _format_detailzStatusPrinter._format_detailD  s    uX/335
z?aC..j)*+68 9	 S//j)**>?A B
9##%&b)B)B)D(EFFrO   c                     t        |d         }| j                  j                  |      }|d| d}nd| d}|t        |d         j	                         z  }| j                  |      }|	|d| dz   S |dz   S )	Nrd   zarrow::Status::r  zarrow::Status(<unknown code z>, msgz	, detail=r  )r   _status_codes_by_idr  r)  r   r  )r   r	  rd   codenamer^   r  s         rM   _format_errorzStatusPrinter._format_errorO  s    5=!++//5!(1-A.tfC8A	YuU|$3355((/
!:,a000s7NrO   c                 |    | j                   d   }t        |      dk(  ry| j                  |j                               S )Nstate_r   zarrow::Status::OK())rh   r   r  ru   )r   	state_ptrs     rM   rT   zStatusPrinter.to_string]  s9    HHX&	y>Q(!!)"7"7"9::rO   N)	r  r  r  r	  r  r   r  r  rT   rK   rO   rM   r  r  )  s    	4	= 	
: 	
;	
 	
9 	
9 	
? 	
< 	
; 	
> 	 	  	H 	N 	'  	!" 	O#(	G;rO   r  c                       e Zd ZdZd Zy)ResultPrinterz.
    Pretty-printer for arrow::Result<T>.
    c                 \   | j                   j                  j                  d      }| j                   d   d   }t        |      dk7  r| j	                  |      }nM| j                   d   d   j
                  }|sJ |j                  |j                               j                         }d| d| dS )	Nr   status_r  storage_r{  zarrow::Result<z>(r  )	rh   ra   r   r   r  rf   r   r   ru   )r   	data_typer  innerdata_ptrs        rM   rT   zResultPrinter.to_stringi  s    HHMM33A6	HHY'1	y>Q&&y1Exx
+G4<<HO--!!#%%0[] 	{"UG155rO   Nr  rK   rO   rM   r  r  d  s    
6rO   r  c                       e Zd ZdZd Zd Zy)FieldPrinterz*
    Pretty-printer for arrow::Field.
    c                     || _         y rJ   r   r  s      rM   r   zFieldPrinter.__init__{  r   rO   c                     t        | j                        }|j                  }|rd|j                   d|j                   dS d|j                   d|j                   dS )Nzarrow::field(rb  r  z, nullable=false))r_  rh   rq  rv   ra   )r   r?   rq  s      rM   rT   zFieldPrinter.to_string~  sV    $((O::"166("QVVHA66"166("QVVH4EFFrO   Nr  r  r  r	  r   rT   rK   rO   rM   r  r  v  s    GrO   r  c                   (    e Zd ZdZd Zd Zd Zd Zy)MetadataPrinterz5
    Pretty-printer for arrow::KeyValueMetadata.
    c                 F    || _         t        | j                         | _        y rJ   )rh   r  r  r  s      rM   r   zMetadataPrinter.__init__  s     *rO   c                      yr)  rK   r   s    rM   r*  zMetadataPrinter.display_hint  r+  rO   c              #      K   | j                   D ]-  \  }}d|j                         f d|j                         f / y w)Nr  rx   )r  r   )r   krL   s      rM   r1  zMetadataPrinter.children  sA     MM 	/DAq!//+,,AOO-..	/s   >A c                 2    dt        | j                         S )Nz arrow::KeyValueMetadata of size )r   r  r   s    rM   rT   zMetadataPrinter.to_string  s    1#dmm2D1EFFrO   Nr  rK   rO   rM   r$  r$    s    +/
GrO   r$  c                   (    e Zd ZdZd Zd Zd Zd Zy)SchemaPrinterz+
    Pretty-printer for arrow::Schema.
    c                 2    || _         t        |      | _        y rJ   )rh   r  r)  r  s      rM   r   zSchemaPrinter.__init__  s    SkrO   c                      yr)  rK   r   s    rM   r*  zSchemaPrinter.display_hint  r+  rO   c              #      K   | j                   j                  D ]0  }d|j                  j                         f d|j                  f 2 y w)Nrv   ra   )r)  r  rv   r   ra   )r   r0  s     rM   r1  zSchemaPrinter.children  sF     [['' 	'E5::446775::&&	's   AAc                     t        | j                  j                        }t        | j                  j                        }|dkD  r	d| d| dS d| dS )Nr   zarrow::Schema with z fields and  metadata itemsz fields)r   r)  r  r  )r   
num_fieldsmd_itemss      rM   rT   zSchemaPrinter.to_string  s_    ++,
t{{++,a<)* 6#*O5 6 )G<<rO   Nr  rK   rO   rM   r+  r+    s    "
'
=rO   r+  c                   $    e Zd Zd Zd Zd Zd Zy)BaseColumnarPrinterc                 d    || _         || _        || _        | j                  j                  | _        y rJ   )rv   rh   columnarr)  )r   rv   rh   r6  s       rM   r   zBaseColumnarPrinter.__init__  s(    	 mm**rO   c                      yr)  rK   r   s    rM   r*  z BaseColumnarPrinter.display_hint  r+  rO   c              #      K   t        | j                  j                  | j                  j                        D ])  \  }}d|j
                  j                         f d|f + y w)Nrv   rx   )r-  r)  r  r6  r*  rv   r   )r   r0  cols      rM   r1  zBaseColumnarPrinter.children  sY     dkk00"mm335 	!JE35::44677C. 	!s   A"A$c           	         t        | j                  j                        }| j                  j                  }t        | j                  j
                        }|dkD  rd| j                   d| d| d| d	S d| j                   d| d| dS )Nr   r  r  z
 columns, z rows, r0  z rows)r   r)  r  r6  r.  r  rv   )r   r1  r.  r2  s       rM   rT   zBaseColumnarPrinter.to_string  s    ++,
==))t{{++,a<dii[zl*jzB C dii[zl*j' (rO   N)r  r  r  r   r*  r1  rT   rK   rO   rM   r4  r4    s    +!	(rO   r4  c                       e Zd ZdZd Zy)RecordBatchPrinterz0
    Pretty-printer for arrow::RecordBatch.
    c                 F    t         j                  | d|t        |             y )Nr"  )r4  r   r"  r  s      rM   r   zRecordBatchPrinter.__init__  s    $$T=#{3?OPrO   Nr   rK   rO   rM   r<  r<    s    QrO   r<  c                       e Zd ZdZd Zy)TablePrinterz*
    Pretty-printer for arrow::Table.
    c                 F    t         j                  | d|t        |             y )Nr2  )r4  r   r2  r  s      rM   r   zTablePrinter.__init__  s    $$T7CsDrO   Nr   rK   rO   rM   r?  r?    s    ErO   r?  c                       e Zd ZdZd Zd Zy)DatumPrinterz*
    Pretty-printer for arrow::Datum.
    c                 8    || _         t        |d         | _        y )Nrx   )rh   r   variantr  s      rM   r   zDatumPrinter.__init__  s    s7|,rO   c                     | j                   j                  dk(  ry| j                   j                  yt        | j                   j                        }d| S )Nr   zarrow::Datum (empty)z(arrow::Datum (uninitialized or corrupt?)zarrow::Datum of value )rD  r#  r$  r|   rx   r  s     rM   rT   zDatumPrinter.to_string  sK    <<")<<""*=dll(()'w//rO   Nr"  rK   rO   rM   rB  rB    s    -0rO   rB  c                       e Zd ZdZd Zd Zy)BufferPrinterz:
    Pretty-printer for arrow::Buffer and subclasses.
    c                      || _         || _        y rJ   )rv   rh   r  s      rM   r   zBufferPrinter.__init__ 	  s    	rO   c                 F   t        | j                  d         rd}nd}t        | j                  d         }|dk(  rd| j                   d| S | j                  d   sd| j                   d	| d
| dS t	        | j                  d   |      }d| j                   d	| d
| d
| S )Nis_mutable_mutablez	read-onlyry  r   r  z of size 0, is_cpu_r  rb  z, not on CPUr{  )rp  rh   r   rv   r   )r   rK  r   r   s       rM   rT   zBufferPrinter.to_string	  s    '(G!G488G$%19TYYK|G9==xx	"TYYKyb	NNTXXg.59TF"WIRvFFrO   Nr"  rK   rO   rM   rG  rG    s    GrO   rG  c                       e Zd ZdZd Zd Zy)DayMillisecondsPrinterzI
    Pretty-printer for arrow::DayTimeIntervalType::DayMilliseconds.
    c                     || _         y rJ   r   r  s      rM   r   zDayMillisecondsPrinter.__init__	  r   rO   c                 N    t        | j                  d   | j                  d         S )Nr   r   )r   rh   r   s    rM   rT   z DayMillisecondsPrinter.to_string	  s(    '(8(,(@B 	BrO   Nr"  rK   rO   rM   rN  rN  	  s    BrO   rN  c                       e Zd ZdZd Zd Zy)MonthDayNanosPrinterzL
    Pretty-printer for arrow::MonthDayNanoIntervalType::MonthDayNanos.
    c                     || _         y rJ   r   r  s      rM   r   zMonthDayNanosPrinter.__init__$	  r   rO   c                 j    t        | j                  d   | j                  d   | j                  d         S )Nr   r   nanoseconds)r   rh   r   s    rM   rT   zMonthDayNanosPrinter.to_string'	  s4    '(:(,(8(,(?A 	ArO   Nr"  rK   rO   rM   rR  rR  	  s    ArO   rR  c                       e Zd ZdZd Zd Zy)DecimalPrinterz2
    Pretty-printer for Arrow decimal values.
    c                 .    || _         || _        || _        y rJ   )rv   rh   r  )r   r  rv   rh   s       rM   r   zDecimalPrinter.__init__2	  s    	"rO   c                     t         | j                     j                  | j                        }| j                   dt        |       dS r  )decimal_bits_to_classr  r  rh   rv   r   )r   r  s     rM   rT   zDecimalPrinter.to_string7	  s:    #DNN3>>txxH))Ac#hZq))rO   Nr"  rK   rO   rM   rW  rW  -	  s    #
*rO   rW  rA  zarrow::BasicDecimal128zarrow::BasicDecimal256zarrow::ChunkedArrayzarrow::Datumz+arrow::DayTimeIntervalType::DayMillisecondszarrow::Decimal128zarrow::Decimal256z.arrow::MonthDayNanoIntervalType::MonthDayNanoszarrow::Fieldzarrow::KeyValueMetadatazarrow::RecordBatchzarrow::Resultzarrow::Schemar$  r4  zarrow::Statuszarrow::Tablec                    | j                   j                         j                  }|y |j                  d      d   }t        j                  |      }|	 |||       S |j                  d      sy |t        d      d  }|j                  d      r	 | d    t        ||       S |j                  d      r9	 t        | d         }t        |      }||j                  |j                  |       S y |j                  d      rt        |       S |j                  d	      r	 | d
    t        |       S y # t        $ r Y y w xY w# t        $ r Y y w xY w# t        $ r Y y w xY w)N<r   r  rw  r{  r/   r  r   r   r  )ra   strip_typedefsrv   	partitionprintersr  rc   r   r   rG  	Exceptionr   r  r  r  r  )rh   rv   r  
arrow_namerQ   r  s         rM   arrow_pretty_printrb  R	  sn   88""$))D|>>#q!Dll4 GtS!!??9%c)no&J8$	2L
 !S11			V	$	E#e*oG
 +73J%!..zDD & 
		W	%C  			X	&	&
O
 !%% 
'-  		  		  		s6   D( 1D7 E (	D43D47	EE	EEc                  z    t        j                         } | t         } | j                  j                  t               y rJ   )rW   current_objfilepretty_printersappendrb  )objfiles    rM   mainrh  	  s1     !!#G""#56rO   __main__rJ   )collectionsr   collections.abcr   r   r  enum	functoolsr   r   	itertoolsr  operatorr   r\   rZ   rW   	gdb.typesr   version_info	_type_idsIntEnumr/   r1   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r*   r   r  rC   r2   r3   r4   r5   r   rN   rR   r_   rk   rp   r|   ordr   rP  cr   r   r   r   r   r   r   r   r   r   r   r   	toordinalr   r   r   r   r   r   r   r   rw   ry   r   r)  r;  rU  r]  r_  rt  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rZ  itemsr  r  r  r"  r2  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'  r4  r<  r?  rG  rB  ra  ro  rt  rw  ry  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  r  r  r  r	   r
   r   r   r+   r,   r   r    r!   r"   r-   r)   r'   r#   r$   r%   r&   r(   r  r   max_type_idr  r  r  r  r$  r+  r4  r<  r?  rB  rG  rN  rR  rW  r_  rb  rh  r  )bitsr  s   00rM   <module>rz     s  $ # $    (     
  
 $ a F!F F=	 t||FIQ/ 4<<
$H!IIsJJ 	JJ 	JJ	
 	JJ 	KK 	KK 	KK 	OOS 	JJ 	KK 	KK 	KK 	KK 	KK  	D!" 	##$ 	  %MM3NNC) . , /D E OO^Aq)NNN5!,NNN9a0MM>-3	 I  0,<E  IuIuIuIuHe  
q" 3A'''*1S']"3
@0
&G'-&( X]]4A&002

%& +(!
 ) )D' '8' '4 <&) &)R2 2j19 1
() 
( 0%u %" "J( (8(7& (7V9 9:'X 'D
+ 
+
,X 
,8 8& j"23Lx L"( & ?,MN 
sD	!	sF	#
:: ::z! !! !
 
	  -224s dV4# 7 7(	7 	7% %&% %$&&9& & 	&
 (& & (& & (& & Y& & )& (& (&  (!&" (#&$ [%&& )'&( .)&*  9+&, J-&. l/&0 l1&2 &3&4 |5&6 (7&8 ~9&: .;&< =&> \?&@ *A&B uC&D )E&F &#"K&
R3 30*; *	<k 	<
@? 
@1 1> >5k 5&
> 
><_ <$
'K 
'7 7	W{ 	W>; >*( *(Z# #9= 9"
? 
?	H+ 	H	H+ 	HF] F	P 	PB= B*5m 5,?#: ?,m ,	9M 	9(- (09} 9""m "<} < K] KV. V.r*. *2
@5 
@04 004 0
*2 
*	0 7 	08$; 8;&= ;;+B ;'. '<'&6 '8*- *D, ,63 32 'M '1} 11} 10m 00m 0.M .3 3. .7] 79} 9>M >1} 10- 09} 9+ ++] +&= &)m )-- -.= .-- -, , ,.AB5GG^M:65 	II~.>5
 	JJ/=5 	II~.
;5 	KK 0,?5 	JJ/=5 	KK 0,?5 	JJ/=5 	KK 0,?5 	JJ/=5 	OO^$4oF5 	JJ/=5 	KK 0,?5" 	KK 3\B#5$ 	KK 3\B%5& 	~&9;LM'5( 	~&9;LM)5, 	N+C+@B-52 	KK>354 	KK>556 	NNN#5G758 	KK|<95: 	KK|<;5< 	MM>"3^D=5> 	.)?)<>?5B 	N+C+@BC5F 	  .1N1K#MG5L 	OO^$46FGM5N 	OO^$46FGO5R 	II~/<S5T 	OO^$5GU5V 	.)?)<>W5Z 	HHn\95[5^ 	KK>_5` 	~&:<MNn%8:JKOO^$79IJNNN#5Gi5 n #$q(8; 8;v6M 6$G G"G G*= =8( (:Q, QE& E0 0(G G.
B 
BA A* *(gnc: gnc: .	
 L 23I 5 5 56J L  , ] ]  2  ,!" ]#$ L%,-&`
7 zF I/s   p