K iddlmZddlZddlZddlZddlZddlZddlZddlZ ejjZ ejjejjeZej$j'dxsejj)edZddgZdZedZed Zd Zd ZGd d Zej:ddZ ej:ddZdZdZ dZ!dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,d Z-d!Z.d"Z/d#Z0d$Z1d%Z2d&Z3d'Z4d(Z5y))) lru_cacheNARROW_GDB_SCRIPTz../../../cpp/gdb_arrow.pygdbz--nxcdi}dD]} tj|||<|S#t$rY)wxYw)N)PATHLD_LIBRARY_PATH)osenvironKeyError)envvars \/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_gdb.pyenvironment_for_gdbr*sG C* zz#CH J   s # //c tjtdgztdtjtjtj }|jdk(S#t $rYywxYw)Nz --versionr)r bufsizestdinstdoutstderrF) subprocessrun gdb_commandrPIPESTDOUTFileNotFoundError returncode)procs ris_gdb_availabler4sd ~~k[M9"5"7$.OO%/__%/%6%6 8 ??a  sAA&& A21A2cBtjd}|Jd|S)Npython3z Couldn't find python3 executable)shutilwhich)paths rpython_executabler#Cs' << "D  ???  KcDtstjdyy)Nzgdb command unavailable)rpytestskipr$rskip_if_gdb_unavailabler)Js   -. r$cvtjjtst j dyy)Nzgdb script not found)r r"exists gdb_scriptr&r'r(r$rskip_if_gdb_script_unavailabler-Os$ 77>>* % *+ &r$cDeZdZdZdZdZdZdZdZdZ dZ d Z d Z y) GdbSessionNTct}|j|tjtt |z|dtj tj |_g|_d|_ y)Nr)r rrrr$) rupdaterPopenrlistrr last_stdoutlast_stdout_line)selfargsr gdb_envs r__init__zGdbSession.__init__XsX%'s$$[4:%=)0!+5??,6OO=  #r$c|jjdsR|jj7|jjj d}|j rQtjjj|tjjj|jd\}}}|rK|jj|j|jj||z||_n|dk(sJ|xj|z c_|jjds|jj7|jj tddj|jj!d}g|_ d|_|S)zW Record output until the gdb prompt displays. Return recorded output. s(gdb) i r$z#gdb session terminated unexpectedlyutf-8)r5 startswithrpollrreadverbosesysbufferwriteflush rpartitionr4appendIOErrorjoindecode)r6blocksep last_lineouts rwait_until_readyzGdbSession.wait_until_readycsc ((33I>yy~~'II$$))$/E|| !!''. !!'')$)$4$4U$; !E3   ''(=(=>  '' 4(1%|#|%%2%((33I>yy~~' 99>>  '?@ @hht''(//8 # r$cx|jddz}|jrQtjjj |tjjj |jjj ||jjj y)Nr<r;) encoder@rArrBrCrDrrr6lines r issue_commandzGdbSession.issue_commandst{{7#e+ << JJ   # #D ) JJ   # # % d# r$cD|j||jSN)rSrNrQs r run_commandzGdbSession.run_commands 4 $$&&r$c|jd|}tjdd|\}}|dk(sJ||jS)zT Ask gdb to print the value of an expression and return the result. zp z ^\$\d+ = )rVresubnstrip)r6exprrMns r print_valuezGdbSession.print_valuesMD6{+r3/QAvsvyy{r$c|jd}dtj|zdz}tj||}|t j d|t |d}|jd|}d||vsJy) zJ Select the innermost frame with the given function name. z info stackz(?mi)^#(\d+)\s+.* in z\bNz$Could not select frame for function rYzframe zin )rVrZescapesearchr&failint)r6 func_namerMpatm frame_nums r select_framezGdbSession.select_frames|,&9)==E IIc3  9 KK>ykJ K!I  {34YK C'''r$c$|j|jjj|jjj|jj |jj d|_yyrU)rrcloserkillwaitr6s rrHzGdbSession.joins^ 99 IIOO ! ! # II   " " $ IINN  IINN DI !r$c$|jyrU)rHrns r__del__zGdbSession.__del__s  r$) __name__ __module__ __qualname__rr@r9rNrSrVr_rirHrpr(r$rr/r/Ts4 DG $8 '("r$r/session)scopec#DKttdt} |j|j d|j d|j d|j d||j y#|j wxYww)Nz-qzset confirm offzset print array-indexes onzset width unlimitedzset charset UTF-8)r)r/r#rNrVrH)rs rrrsx T,. /C   )* 45 -. +,    sB AB :B  BB cdtjjvrtjdt |j dttjdk(rdnd}tjj|}|r|j d|d|d }|j d |d }d |vs d |vsJ||jd|S)Ndebz%Arrow C++ debug symbols not availablezsource win32rrzset env  z>from pyarrow.lib import _gdb_test_session; _gdb_test_session()zrun -c ''zTrace/breakpoint trapzreceived signalzarrow::gdb::TestSession)pacpp_build_info build_typer&r'r-rVr,rAplatformr r getri)r lib_path_varlib_pathcoderMs r gdb_arrowrs B%%000 ;<"$OOgj\*+ \\W46:KLzz~~l+H (<.(<= KD //HTF!, -C #s *  $+'*+ %./ Jr$cV|jd}|jdsJ|y)Nz show versionz GNU gdb ()rVr=)rrMs rtest_gdb_sessionrs' //. )C >>+ &++ &r$c4|jd}|dk(sJy)Nz42 + 143)r_)rss rtest_gdb_arrowrsh'A 99r$c|j|}t|tjr|j |sJ|y||k(sJy)z/ Check printing a stack-located value. N)r_ isinstancerZPatternmatchrr]expectedrs rcheck_stack_reprrsC A(BJJ'~~a #!# H}}r$cd|jd|}||k7r|jd|sJyy)zA Check printing a heap-located value, given its address. *rzN)r_endswithrs rcheck_heap_reprrs< !D6 #AH}zzAhZ.)))r$ct|ddt|ddt|ddt|ddt|d d t|d d y) N ok_statuszarrow::Status::OK() error_statusz*arrow::Status::IOError("This is an error")error_detail_statuszXarrow::Status::IOError("This is an error", detail=[custom-detail-id] "This is a detail") ok_resultzarrow::Result(42) error_resultz>arrow::Result(arrow::Status::IOError("This is an error"))error_detail_resultzlarrow::Result(arrow::Status::IOError("This is an error", detail=[custom-detail-id] "This is a detail"))rrs r test_statusrsgY -BCYAC( 89 Y -EF>HJ( 9:r$clt|ddt|ddt|ddt|ddy) N buffer_nullz"arrow::Buffer of size 0, read-only buffer_abc)arrow::Buffer of size 3, read-only, "abc"buffer_special_charsz=arrow::Buffer of size 12, read-only, "foo\"bar\000\r\n\t\037"buffer_mutablez.arrow::MutableBuffer of size 3, mutable, "abc"rrs rtest_buffer_stackr sFY 9;Y @B)HJY 0EGr$c8t|ddt|ddy)N heap_bufferrzheap_buffer_mutable.get()z'arrow::Buffer of size 3, mutable, "abc"rrs rtest_buffer_heaprs"I}?AI:=?r$cd}t|ddt|dd|dt|dd|dt|d d t|d d |dt|d d|dd}t|ddt|dd|dt|dd|dt|ddt|dd|dt|dd|dy)N&98765432109876543210987654321098765432decimal128_zerozarrow::Decimal128(0)decimal128_poszarrow::Decimal128()decimal128_negzarrow::Decimal128(-basic_decimal128_zerozarrow::BasicDecimal128(0)basic_decimal128_poszarrow::BasicDecimal128(basic_decimal128_negzarrow::BasicDecimal128(-L9876543210987654321098765432109876543210987654321098765432109876543210987654decimal256_zerozarrow::Decimal256(0)decimal256_poszarrow::Decimal256(decimal256_negzarrow::Decimal256(-basic_decimal256_zerozarrow::BasicDecimal256(0)basic_decimal256_poszarrow::BasicDecimal256(basic_decimal256_negzarrow::BasicDecimal256(-r)rv128v256s r test_decimalsrs 3DY 13IJY 0)$q13Y 0*4&24Y 702Y 6.tfA68Y 6/vQ79 3DY 13IJY 0)$q13Y 0*4&24Y 702Y 6.tfA68Y 6/vQ79r$c8t|ddt|ddy)Nzempty_metadata.get()z!arrow::KeyValueMetadata of size 0zmetadata.get()zcarrow::KeyValueMetadata of size 2 = {["key_text"] = "some value", ["key_binary"] = "z\000\037\377"}rrs r test_metadatar;s'I579# MOr$ct|ddt|ddt|ddt|ddt|d d t|d d t|d dt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|dd t|d!d"t|d#d$t|d%d&t|d'd(t|d)d*t|d+d,t|d-d.t|d/d0t|d1d2t|d3d4t|d5d6t|d7d8t|d9d:t|d;d<t|d=d>t|d?d@t|dAdBt|dCdDt|dEdFt|dGdHy)IN null_type arrow::null() bool_typearrow::boolean() date32_typezarrow::date32() date64_typezarrow::date64() time_type_sz&arrow::time32(arrow::TimeUnit::SECOND) time_type_msz%arrow::time32(arrow::TimeUnit::MILLI) time_type_usz%arrow::time64(arrow::TimeUnit::MICRO) time_type_ns$arrow::time64(arrow::TimeUnit::NANO)timestamp_type_sz)arrow::timestamp(arrow::TimeUnit::SECOND)timestamp_type_ms_timezonez8arrow::timestamp(arrow::TimeUnit::MILLI, "Europe/Paris")timestamp_type_usz(arrow::timestamp(arrow::TimeUnit::MICRO)timestamp_type_ns_timezone7arrow::timestamp(arrow::TimeUnit::NANO, "Europe/Paris")day_time_interval_typezarrow::day_time_interval()month_interval_typezarrow::month_interval()month_day_nano_interval_typez arrow::month_day_nano_interval()duration_type_sz(arrow::duration(arrow::TimeUnit::SECOND)duration_type_nsz&arrow::duration(arrow::TimeUnit::NANO)decimal128_typearrow::decimal128(16, 5)decimal256_typezarrow::decimal256(42, 12) binary_typezarrow::binary() string_typez arrow::utf8()large_binary_typezarrow::large_binary()large_string_typezarrow::large_utf8()fixed_size_binary_typezarrow::fixed_size_binary(10) list_typearrow::list(arrow::uint8())large_list_type&arrow::large_list(arrow::large_utf8())fixed_size_list_type+arrow::fixed_size_list(arrow::float64(), 3)map_type_unsorted=arrow::map(arrow::utf8(), arrow::binary(), keys_sorted=false)map_type_sortedzarrow::dictionary(arrow::int16(), arrow::utf8(), ordered=true) uuid_type[arrow::ExtensionType "extension" with storage type arrow::fixed_size_binary(16)rrs rtest_types_stackrDsYY _=Y -?@Y /@AY /@AY =?Y<>Y<>Y;=Y 2@B/BDY 3?A/ACY 813Y 5.0Y >79Y 1?AY 2=?Y 1/1Y 102Y /@AY ?Y 35LMY 35JKY 835Y 24Y 1=?Y 6BD&GI$FHY 3)+= AC & ! % ! (IK&HJ; :I:AC?GI% AC #IK# :t|d?d@t|dAdBt|dCdDt|dEdFt|dGdHt|dIdJt|dKdLt|dMdNt|dOdPt|dQdRt|dSdTt|dUdVt|dWdXt|dYdZt|d[d\t|d]d^t|d_d`t|dadbt|dcddt|dedft|dgdht|didjt|dkdlt|dmdnt|dodpt|dqdrt|dsdtt|dudvt|dwdxt|dydzt|d{d|t|d}d~t|ddt|dtjdt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|dtjdt|ddt|dtjdt|ddt|ddy)N null_scalararrow::NullScalar bool_scalar"arrow::BooleanScalar of value truebool_scalar_nullz"arrow::BooleanScalar of null value int8_scalarzarrow::Int8Scalar of value -42 uint8_scalarzarrow::UInt8Scalar of value 234 int64_scalarz0arrow::Int64Scalar of value -9223372036854775808 uint64_scalarz1arrow::UInt64Scalar of value 18446744073709551615half_float_scalarz,arrow::HalfFloatScalar of value -1.5 [48640] float_scalarz arrow::FloatScalar of value 1.25 double_scalarz arrow::DoubleScalar of value 2.5 time_scalar_sz!arrow::Time32Scalar of value 100stime_scalar_msz#arrow::Time32Scalar of value 1000mstime_scalar_usz$arrow::Time64Scalar of value 10000ustime_scalar_nsz%arrow::Time64Scalar of value 100000nstime_scalar_nullz&arrow::Time64Scalar of null value [ns]duration_scalar_sz$arrow::DurationScalar of value -100sduration_scalar_msz&arrow::DurationScalar of value -1000msduration_scalar_usz'arrow::DurationScalar of value -10000usduration_scalar_nsz(arrow::DurationScalar of value -100000nsduration_scalar_nullz(arrow::DurationScalar of null value [ns]timestamp_scalar_sz4arrow::TimestampScalar of value 12345s [no timezone]timestamp_scalar_msz7arrow::TimestampScalar of value -123456ms [no timezone]timestamp_scalar_usz7arrow::TimestampScalar of value 1234567us [no timezone]timestamp_scalar_nsz9arrow::TimestampScalar of value -12345678ns [no timezone]timestamp_scalar_nullz6arrow::TimestampScalar of null value [ns, no timezone]timestamp_scalar_s_tzz7arrow::TimestampScalar of value 12345s ["Europe/Paris"]timestamp_scalar_ms_tzz:arrow::TimestampScalar of value -123456ms ["Europe/Paris"]timestamp_scalar_us_tzz:arrow::TimestampScalar of value 1234567us ["Europe/Paris"]timestamp_scalar_ns_tzzbinary_scalar_emptyz'arrow::BinaryScalar of size 0, value ""binary_scalar_abcz*arrow::BinaryScalar of size 3, value "abc"binary_scalar_bytesz3arrow::BinaryScalar of size 3, value "\000\037\377"large_binary_scalar_abcz/arrow::LargeBinaryScalar of size 3, value "abc"string_scalar_nullz!arrow::StringScalar of null valuestring_scalar_unallocatedz*arrow::StringScalar of value string_scalar_emptyz'arrow::StringScalar of size 0, value ""string_scalar_heheu-arrow::StringScalar of size 6, value "héhé"string_scalar_invalid_charsz:arrow::StringScalar of size 11, value "abc\x00def\\xffghi"large_string_scalar_heheu2arrow::LargeStringScalar of size 6, value "héhé"fixed_size_binary_scalarz3arrow::FixedSizeBinaryScalar of size 3, value "abc"fixed_size_binary_scalar_nullz=arrow::FixedSizeBinaryScalar of size 3, null with value " " dict_scalarz_^arrow::DictionaryScalar of index arrow::Int8Scalar of value 42, dictionary arrow::StringArray dict_scalar_nullzjarrow::DictionaryScalar of type arrow::dictionary(arrow::int8(), arrow::utf8(), ordered=false), null value list_scalarznarrow::ListScalar of value arrow::Int32Array of length 3, offset 0, null count 0 = {[0] = 4, [1] = 5, [2] = 6}list_scalar_nullzAarrow::ListScalar of type arrow::list(arrow::int32()), null valuelarge_list_scalarzsarrow::LargeListScalar of value arrow::Int32Array of length 3, offset 0, null count 0 = {[0] = 4, [1] = 5, [2] = 6}large_list_scalar_nullzLarrow::LargeListScalar of type arrow::large_list(arrow::int32()), null valuefixed_size_list_scalarzwarrow::FixedSizeListScalar of value arrow::Int32Array of length 3, offset 0, null count 0 = {[0] = 4, [1] = 5, [2] = 6}fixed_size_list_scalar_nullzXarrow::FixedSizeListScalar of type arrow::fixed_size_list(arrow::int32(), 3), null value struct_scalarz~arrow::StructScalar = {["ints"] = arrow::Int32Scalar of value 42, ["strs"] = arrow::StringScalar of size 9, value "some text"}struct_scalar_nullzarrow::StructScalar of type arrow::struct_({arrow::field("ints", arrow::int32()), arrow::field("strs", arrow::utf8())}), null valuesparse_union_scalarzMarrow::SparseUnionScalar of type code 7, value arrow::Int32Scalar of value 43sparse_union_scalar_nullzU^arrow::SparseUnionScalar of type arrow::sparse_union\(.*\), type code 7, null value$dense_union_scalarzLarrow::DenseUnionScalar of type code 7, value arrow::Int32Scalar of value 43dense_union_scalar_nullzS^arrow::DenseUnionScalar of type arrow::dense_union\(.*\), type code 7, null value$extension_scalarzarrow::ExtensionScalar of type "extension", value arrow::FixedSizeBinaryScalar of size 16, value "0123456789abcdef"extension_scalar_nullzBarrow::ExtensionScalar of type "extension", null valuerrZcompilers rtest_scalars_stackr_sY /BCY 9;Y 29;Y 57Y68YGIYHJY 3CEY79Y79Y8:Y 0:<Y 0;=Y 0<>Y 2=?Y 3;=Y 4=?Y 4>@Y 4?AY 6?A'>@(AC(AC(CE*@B*AC+DF+DF+FH-CEY 7>@Y <?AY :FHY ?AC3@B89;YDFY 48:YMOY 48:+GI4KM4LN4 $&4 $& +GI4 #% 4 #% 4 $& 4 $& '+-.46(13&46(>@,9;'+-.46(13'790EG-<>-=?2GI= / 12 %  = JL%KM& JL+ + JL0 AC ? HJ' =? ( 02-rzz (0)*' 02,bjj (/)* % $& *LNr$ct|ddt|ddt|ddt|ddt|d d t|d d y) Nheap_null_scalarr heap_bool_scalarr heap_decimal128_scalarr5heap_decimal256_scalarr;heap_map_scalarz}arrow::MapScalar of type arrow::map(arrow::utf8(), arrow::int32(), keys_sorted=false), value length 2, offset 0, null count 0heap_map_scalar_nullzaarrow::MapScalar of type arrow::map(arrow::utf8(), arrow::int32(), keys_sorted=false), null valuerrs rtest_scalars_heaprgssI13FGI18:+KM+ #% $ FH) *,r$ct|ddy)Nint32_array_datazuarrow::ArrayData of type arrow::int32(), length 4, offset 0, null count 1 = {[0] = -5, [1] = 6, [2] = null, [3] = 42}rrs rtest_array_datarjs% DFr$c8t|ddt|ddy)N int32_arrayaarrow::Int32Array of length 4, offset 0, null count 1 = {[0] = -5, [1] = 6, [2] = null, [3] = 42} list_arrayVarrow::ListArray of type arrow::list(arrow::int64()), length 3, offset 0, null count 1rrs rtest_arrays_stackrps(= 57< ,.r$ct|ddt|ddt|ddt|ddt|d d t|d d t|d dt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|dd t|d!d"t|d#d$t|d%d&t|d'd(t|d)d*t|d+d,t|d-d.t|d/d0tjd1kDr5t|d2d3t|d4d5t|d6d7t|d8d9n4t|d2d:t|d4d;t|d6d<t|d8d=t|d>d?t|d@dAt|dBdCt|dDdEt|dFdGt|dHdIt|dJdKt|dLdMt|dNdOt|dPdQt|dRdSt|dTdUy)VNheap_null_arrayz4arrow::NullArray of length 2, offset 0, null count 2heap_int32_arrayrmheap_int32_array_no_nullsz^arrow::Int32Array of length 4, offset 0, null count 0 = {[0] = -5, [1] = 6, [2] = 3, [3] = 42}heap_int32_array_sliced_1_9zarrow::Int32Array of length 9, offset 1, unknown null count = {[0] = 2, [1] = -3, [2] = 4, [3] = null, [4] = -5, [5] = 6, [6] = -7, [7] = 8, [8] = null}heap_int32_array_sliced_2_6zzarrow::Int32Array of length 6, offset 2, unknown null count = {[0] = -3, [1] = 4, [2] = null, [3] = -5, [4] = 6, [5] = -7}heap_int32_array_sliced_8_4zharrow::Int32Array of length 4, offset 8, unknown null count = {[0] = 8, [1] = null, [2] = -9, [3] = -10}heap_int32_array_sliced_emptyz;arrow::Int32Array of length 0, offset 6, unknown null countheap_double_arrayzQarrow::DoubleArray of length 2, offset 0, null count 1 = {[0] = -1.5, [1] = null}heap_float16_arrayzSarrow::HalfFloatArray of length 2, offset 0, null count 0 = {[0] = 0.0, [1] = -1.5}heap_bool_arraya!arrow::BooleanArray of length 18, offset 0, null count 6 = {[0] = false, [1] = false, [2] = true, [3] = true, [4] = null, [5] = null, [6] = false, [7] = false, [8] = true, [9] = true, [10] = null, [11] = null, [12] = false, [13] = false, [14] = true, [15] = true, [16] = null, [17] = null}heap_bool_array_sliced_1_9zarrow::BooleanArray of length 9, offset 1, unknown null count = {[0] = false, [1] = true, [2] = true, [3] = null, [4] = null, [5] = false, [6] = false, [7] = true, [8] = true}heap_bool_array_sliced_2_6zarrow::BooleanArray of length 6, offset 2, unknown null count = {[0] = true, [1] = true, [2] = null, [3] = null, [4] = false, [5] = false}heap_bool_array_sliced_emptyz=arrow::BooleanArray of length 0, offset 6, unknown null countheap_date32_arrayzarrow::Date32Array of length 6, offset 0, null count 1 = {[0] = 0d [1970-01-01], [1] = null, [2] = 18336d [2020-03-15], [3] = -9004d [1945-05-08], [4] = -719162d [0001-01-01], [5] = -719163d [year <= 0]}heap_date64_arrayzarrow::Date64Array of length 5, offset 0, null count 0 = {[0] = 1584230400000ms [2020-03-15], [1] = -777945600000ms [1945-05-08], [2] = -62135596800000ms [0001-01-01], [3] = -62135683200000ms [year <= 0], [4] = 123ms [non-multiple of 86400000]}heap_time32_array_szarrow::Time32Array of type arrow::time32(arrow::TimeUnit::SECOND), length 3, offset 0, null count 1 = {[0] = null, [1] = -123s, [2] = 456s}heap_time32_array_mszarrow::Time32Array of type arrow::time32(arrow::TimeUnit::MILLI), length 3, offset 0, null count 1 = {[0] = null, [1] = -123ms, [2] = 456ms}heap_time64_array_uszarrow::Time64Array of type arrow::time64(arrow::TimeUnit::MICRO), length 3, offset 0, null count 1 = {[0] = null, [1] = -123us, [2] = 456us}heap_time64_array_nszarrow::Time64Array of type arrow::time64(arrow::TimeUnit::NANO), length 3, offset 0, null count 1 = {[0] = null, [1] = -123ns, [2] = 456ns}heap_month_interval_arrayzearrow::MonthIntervalArray of length 3, offset 0, null count 1 = {[0] = 123M, [1] = -456M, [2] = null}heap_day_time_interval_arrayz^arrow::DayTimeIntervalArray of length 2, offset 0, null count 1 = {[0] = 1d-600ms, [1] = null}"heap_month_day_nano_interval_arrayzharrow::MonthDayNanoIntervalArray of length 2, offset 0, null count 1 = {[0] = 1M-600d5000ns, [1] = null}heap_duration_array_szarrow::DurationArray of type arrow::duration(arrow::TimeUnit::SECOND), length 2, offset 0, null count 1 = {[0] = null, [1] = -1234567890123456789s}heap_duration_array_nszarrow::DurationArray of type arrow::duration(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {[0] = null, [1] = -1234567890123456789ns}lheap_timestamp_array_szarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::SECOND), length 4, offset 0, null count 1 = {[0] = null, [1] = 0s [1970-01-01 00:00:00], [2] = -2203932304s [1900-02-28 12:34:56], [3] = 63730281600s [3989-07-14 00:00:00]}heap_timestamp_array_mszarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::MILLI), length 3, offset 0, null count 1 = {[0] = null, [1] = -2203932303877ms [1900-02-28 12:34:56.123], [2] = 63730281600789ms [3989-07-14 00:00:00.789]}heap_timestamp_array_uszarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::MICRO), length 3, offset 0, null count 1 = {[0] = null, [1] = -2203932303345679us [1900-02-28 12:34:56.654321], [2] = 63730281600456789us [3989-07-14 00:00:00.456789]}heap_timestamp_array_nszarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {[0] = null, [1] = -2203932303012345679ns [1900-02-28 12:34:56.987654321]}zarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::SECOND), length 4, offset 0, null count 1 = {[0] = null, [1] = 0s [1970-01-01 00:00:00], [2] = -2203932304s [too large to represent], [3] = 63730281600s [too large to represent]}zarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::MILLI), length 3, offset 0, null count 1 = {[0] = null, [1] = -2203932303877ms [too large to represent], [2] = 63730281600789ms [too large to represent]}zarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::MICRO), length 3, offset 0, null count 1 = {[0] = null, [1] = -2203932303345679us [too large to represent], [2] = 63730281600456789us [too large to represent]}zarrow::TimestampArray of type arrow::timestamp(arrow::TimeUnit::NANO), length 2, offset 0, null count 1 = {[0] = null, [1] = -2203932303012345679ns [too large to represent]}heap_decimal128_arrayzarrow::Decimal128Array of type arrow::decimal128(30, 6), length 3, offset 0, null count 1 = {[0] = null, [1] = -1234567890123456789.012345, [2] = 1234567890123456789.012345}heap_decimal256_arrayzarrow::Decimal256Array of type arrow::decimal256(50, 6), length 2, offset 0, null count 1 = {[0] = null, [1] = -123456789012345678901234567890123456789.012345}heap_decimal128_array_slicedzarrow::Decimal128Array of type arrow::decimal128(30, 6), length 1, offset 1, unknown null count = {[0] = -1234567890123456789.012345}heap_fixed_size_binary_arrayzarrow::FixedSizeBinaryArray of type arrow::fixed_size_binary(3), length 3, offset 0, null count 1 = {[0] = null, [1] = "abc", [2] = "\000\037\377"}'heap_fixed_size_binary_array_zero_widthzzarrow::FixedSizeBinaryArray of type arrow::fixed_size_binary(0), length 2, offset 0, null count 1 = {[0] = null, [1] = ""}#heap_fixed_size_binary_array_slicedzwarrow::FixedSizeBinaryArray of type arrow::fixed_size_binary(3), length 1, offset 1, unknown null count = {[0] = "abc"}heap_binary_arrayziarrow::BinaryArray of length 3, offset 0, null count 1 = {[0] = null, [1] = "abcd", [2] = "\000\037\377"}heap_large_binary_arrayznarrow::LargeBinaryArray of length 3, offset 0, null count 1 = {[0] = null, [1] = "abcd", [2] = "\000\037\377"}heap_string_arrayuqarrow::StringArray of length 3, offset 0, null count 1 = {[0] = null, [1] = "héhé", [2] = "invalid \\xff char"}heap_large_string_arrayuvarrow::LargeStringArray of length 3, offset 0, null count 1 = {[0] = null, [1] = "héhé", [2] = "invalid \\xff char"}heap_binary_array_slicedzMarrow::BinaryArray of length 1, offset 1, unknown null count = {[0] = "abcd"}heap_list_arrayro)rrAmaxsizers rtest_arrays_heaprs$>@ % 46. 130 *, 0 GI0 572EG& #%' "$ $ ?A/ =? /  1GI & ') & 35( 02 ) 24 ) 24 ) 24 . 021 ')7 <>* 46 + 57  {{U /9 ;  0A C  0G I  0M O  /< >  0@ B  0C E  0F H* -/ * BD 1 .01 ;= < FH8 CE& <>, <>& DF, DF-  $ ,.r$cRt|ddt|ddt|ddy)N schema_emptyzarrow::Schema with 0 fieldsschema_non_emptyzRarrow::Schema with 2 fields = {["ints"] = arrow::int8(), ["strs"] = arrow::utf8()}schema_with_metadatazgarrow::Schema with 2 fields and 2 metadata items = {["ints"] = arrow::int8(), ["strs"] = arrow::utf8()}rrs r test_schemars;I~13% %') @Br$ct|ddy)N chunked_arrayzarrow::ChunkedArray of type arrow::int32(), length 5, null count 1 with 2 chunks = {[0] = length 2, offset 0, null count 0, [1] = length 3, offset 0, null count 1}rrs rtest_chunked_arrayrs? 35r$cvd}d}|d|}t|d|t|d||d|}t|d|y)Nz)arrow::RecordBatch with 2 columns, 3 rowsz{["ints"] = arrow::ArrayData of type arrow::int32(), length 3, offset 0, null count 0 = {[0] = 1, [1] = 2, [2] = 3}, ["strs"] = arrow::ArrayData of type arrow::utf8(), length 3, offset 0, null count 1 = {[0] = "abc", [1] = null, [2] = "def"}}z = batchz batch.get()z, 3 metadata items = batch_with_metadatar)rexpected_prefixexpected_suffixrs rtest_record_batchrs_AO 2""#o%67HIw1I}h7!""77HIHI4h?r$c<d}t|d|t|d|y)Naarrow::Table with 2 columns, 5 rows = {["ints"] = arrow::ChunkedArray of type arrow::int32(), length 5, null count 0 with 2 chunks = {[0] = length 3, offset 0, null count 0, [1] = length 2, offset 0, null count 0}, ["strs"] = arrow::ChunkedArray of type arrow::utf8(), length 5, null count 1 with 3 chunks = {[0] = length 2, offset 0, null count 1, [1] = length 1, offset 0, null count 0, [2] = length 2, offset 0, null count 0}}tablez table.get()r)rexpected_tables r test_tablers& 3Iw7I}n=r$c8t|ddt|ddt|dtjdt|dtjdt|d tjd t|d tjd y) N empty_datumzarrow::Datum (empty) scalar_datumz8arrow::Datum of value arrow::BooleanScalar of null value array_datumz0^arrow::Datum of value arrow::ArrayData of type chunked_array_datumz3^arrow::Datum of value arrow::ChunkedArray of type batch_datumzA^arrow::Datum of value arrow::RecordBatch with 2 columns, 3 rows table_datumz;^arrow::Datum of value arrow::Table with 2 columns, 5 rows r]rs r test_datumr(sY /EF>BD= FGI( IJL= . /0= . /0r$)6 functoolsrr rZr rrAr&pyarrowr|markr pytestmarkr"dirnameabspath__file__herer rrHr,rrrr#r)r-r/fixturerrrrrrrrrrrrrrr_rgrjrprrrrrrr(r$rrs$  [[__  wwrwwx01jjnn/0>ggll4!<= fo          / , [[|i  ! i !,,  *:& G?9:OY$0r$