K iddlZddlmZddlmZmZmZmZmZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZ ddlZddlmZddlmZddlZddZedZdZd Zej@jCd d ej@jCd d dZ"dZ#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1dZ2dZ3d Z4d!Z5d"Z6ej@jCd#gd$d%Z7ej@j(d&Z8ej@j(d'Z9ej@j(d(Z:ej@j(d)Z;d*Zd-Z?ej@j(d.Z@ej@j(d/ZAd0ZBd1ZCej@j(d2ZDd3ZEd4ZFej@j(ej@jCd5ejd6ej@jejj78d9d:d;dZKej@j(ej@jCd5ejd6ej@jejj78d9d:d;d ?" hj!"""s DD c"d}t|}tj|d}|jt |k(sJ|j dk(sJ|j ddk(sJ|j dk(sJ|jd|j dk(sJ|jd|j dk(sJ|j d}|d k(sJt |d k(sJ|jt |k(sJ|jrJ|j|jsJtjtd 5tjtddddy#1swYyxYw) Nsome sample datarmodersomer2 sample data r0r1)rr3r4rr5rrrr7r8rr*r9r)datar:r%vs r&test_python_file_readrLhsC D $-C c$A 668s4y  668q== 66!9   668q==FF1I 668q==FF1I 668q== r A    q6R<< 668s4y  xx<GGI 88O8 y(> ?, hjs+,,,s  FFnbytes)rrd file_offset)rNrrrPcd}tjt|d}|dks|dkrRtjtj d5|j ||ddd|jy|j ||}t|t|}t||zt|}t|||}|jd |jdk(sJ|jd |jd k(sJ|j|jk(sJt|d z}|j||j|k(sJtjtd 5|jdddd|j|jsJy#1swY_xYw#1swY5xYw) Nsdata1data2data3data4data5rBrCrzshould be a positive valuer1)rQrMrE)rMseekable)r3r4rrr* ArrowInvalid get_streamr8minr5rOSErrorrr7) rMrQrJr%streamstartendr:ns r&test_python_file_get_streamr^s (D gdm#.Az[1_ ]]2??!=? A LL[L @ A  +fE  SY 'E kF"CI .C $uS/ "C ;;a; CHHQK // / ;;a; CHHQK // / ;;=CHHJ && & D A A ;;q>SXXa[ (( ( wj 1 A LLN ===? A A6sG GG Gcd}t|}tj|d}|jdd}|dk(sJt |dk(sJ|jdd }||k(sJt |d k(sJy) NrArBrCr)rMoffsetse samrGr)rr3r4read_atr5)rJr:r%rKws r&test_python_file_read_atres D $-C c$A 1 %A == q6Q;; A &A 99 q6R<.DuckReadercyr)r,selfs r&r8z6test_python_file_read_buffer..DuckReader.close r-cyNFr,rus r&r7z7test_python_file_read_buffer..DuckReader.closedr-c.|k(sJtd|Sr)) memoryview)rvrMrnrms r& read_bufferz.DuckReader.read_buffers#V# ##g&w/ /r-N)__name__ __module__ __qualname__r8propertyr7r})rnrmsr& DuckReaderrss!      0r-rrBrCxr)rkr3r4r}r5r|tobytesord)rJr duck_readerr%r:rnrms @@r&test_python_file_read_bufferrs F DoG 0 0,K { -'mmF#3x6!!!#&&(GGV,<<<< Y 3qzSY&&&'''s A-B44B=ctjtdd5}t|tsJt|t sJ dddy#1swYyxYw)Nr-rBrC)r3r4r isinstancerrr%s r&test_python_file_correct_abcrsK ws|# .%!!^,,,!V$$$%%%s %AAcd}t|}t|}tj|d5}t||D] \}}||k(r J dddy#1swYyxYw)Nsline1 line2 line3 rBrC)rr3r4zip)rJr:buf2r%rr=s r&test_python_file_iterablersi D $-C 4=D s %$!!Tl $ND(8# ## $$$$sA AAc d}t|y)Nc@tjt|dSNrb)r3r4r)r$s r&factoryz-test_python_file_large_seeks..factory s}}T(D122r-)r')rs r&test_python_file_large_seeksr s3gr-cjd}tj|}|jdk(sJ|jt |k(sJ|j ddk(sJ|jdk(sJ|j d|jdk(sJ|j dd|jt |k(sJ|j d|jdk(sJ|j ddk(sJ|jrJ|j|jsJy) NrArrErFrTrrGrH) r3 BufferReaderrrr5rrr7r8)rJr%s r&test_bytes_readerrs D A 668q== 668s4y  66!9   668q==FF1I 668q==FF1aL 668s4y  FF1I 668q== 66": '' 'xx<GGI 88O8r-ctjt5tjddddy#1swYyxYw)Nzsome sample data)rr*r9r3rr,r-r&test_bytes_reader_non_bytesr-s0 y !, *+,,,s 9Acddl}d}|}|j|jdk(sJ|jJy)Nrczddz}tj|}|jd|jdS)NrArrS)r3rrr})rJreaders r& get_bufferz>test_bytes_reader_retains_parent_reference..get_buffer6s6"T)& A!!!$$r-ssample)gccollect to_pybytesparent)rrr:s r&*test_bytes_reader_retains_parent_referencer2sC % ,CBJJL >> y (( ( :: !! !r-cJtjjt|d}t |d5}t j |}|jsJ|jrJ|jrJ|jddddt |d5}t j |}|jsJ|jrJ|jsJ|jdk(sJ dddt}t j |}|jsJ|jrJ|jrJ|jd|jdk(sJy#1swYxYw#1swYxYw)Nfoo.txtrsfoobar r)r pathjoinstrrr3r4writablereadablerUrrrr6)tmpdirrr%pfbios r&test_python_file_implicit_moderBsT 77<<F Y /D dD Q ]]1 {{}};;=  ;;=      dD (Q ]]1 {{}};;=  {{}}wwyK''' ( )C s B ;;=={{} {{} HH[ <<>[ (( ()((sAF 'A!F FF"cddg}tjjt|d}t |d5} t j |d}|jsJ|j||j dddt |d5} t j |d}|jsJ|jd j|k(sJ |j dddy#|jwxYw#1swYxYw#|jwxYw#1swYyxYw) Nsline1 s line2 line3rrrdrCrrBr-) r rrrrr3r4r writelinesr8rr)rlinesrr%s r&test_python_file_writelinesr[s , -E 77<<F Y /D dD Q  ac*A::< < LL  GGI  dD Q  ac*A::< <668sxx. .. GGI  GGI  GGI sGD:D6DD;A D&+D;DDD#&D88D;;Ect}tj|}tj|}~|J|j rJtj|}|j |j sJyr))rr3r4weakrefrefr7r8)rrwrs r&test_python_file_closingrosb )C s B RB 4<<zz> s BHHJ :::r-cdtd|jdzD]}|j|j||}t |t |k(sJt |t |k(sJ|j |j k(sJ|j|jk(rJy)NrrOprotocol)rangeHIGHEST_PROTOCOLloadsdumpsr5r|r is_mutable)r:picklerrr>s r&check_buffer_picklingrs!W559:3w}}S8}DE6{c#h&&&&!Z_444  "cnn&6666  CNN222 3r-cd}tj|}t|tjsJ|jrJ|j sJ|j }||k(sJt||yN some data)r3 py_bufferrBufferris_cpurr pickle_modulevalr:r>s r&test_buffer_bytesrsd C ,,s C c299 %% %~~  ::: ^^ F S==#}-r-ctjdd}|jdk(sJ|jdk(sJt |}|j dk(sJtj |jdk7sJt||y)Nr)addressrr-)r3foreign_bufferrrr|rrr)r null_buffms r&test_buffer_null_datars!!!!4I    !S (( (    !! ! 9A 99;#   <<? " "a '' ')]3r-cd}tj|}t|tjsJ|jrJ|j sJt |}||k(sJt||yr)r3rrrrrr|rrs r&test_buffer_memoryviewrsa C ,,s C c299 %% %~~  ::: _F S==#}-r-ctd}tj|}t|tjsJ|j sJ|j sJt|}||k(sJt||yr)rkr3rrrrrrrs r&test_buffer_bytearrayrse L !C ,,s C c299 %% % >>> ::: s^F S==#}-r-ctjtd5tjddddy#1swYyxYw)Nz$(bytes-like object|buffer interface)r1)rr*r9r3rr,r-r&test_buffer_invalidrs5 yC E Ts ;Ac~tjd}tj|}|J~|Jyr)r3rrr)r:rs r&test_buffer_weakrefrs; ,,| $C S B 4   4<>> >> s{{} ,, , ,,suu C ::: >>> >> s{{} ,, , z)9 :'ll3551:&'''s &D11D:c>d}t|}t|}tj|}tj|}tj|}tj|}|jdkDsJ|j|jk(sJ|j|jk7sJ|j|jk7sJt j d}tj|}|j|j jk(sJy)N some data!rr)rkr3rrrrctypesrJ) b1b2b3buf1rbuf3buf4rr:s r&test_buffer_addressrs B 2B 2B << D << D << D << D <.eqs+xx{{Av vF|Fr-cF|j|rJ||k(rJ||k7sJyr)rrs r&neztest_buffer_equals..nes)88A;F|Av vr-rrrr)rkr3rrrint16) rrrrrrrrrbuf5s r&test_buffer_equalsr  s  B 2B 2B BqE << D << D << D << D << b9 :DtTNtTNtTNtTNtTNr-ctjd}|dk(sJ|tdk(sJ|dk7sJtjt 5|dk(dddy#1swYyxYw)Nrs some dat1z some data)r3rrkrr*r9r:s r&test_buffer_eq_bytesr )sh ,,| $C ,   )L) )) ) ,   y ! {s AA%crtd}tj|}t|}t | |dz D]}||||k(rJt j t5||dddt j t5|| dz dddy#1swY5xYw#1swYyxYw)NrrO)rkr3rr5rrr* IndexError)rJr:r]ixs r&test_buffer_getitemr3s ] #D ,,t C D AQBA#2w$r("""# z " A z " QBF s'B! B-!B*-B6cXd}tj|}|jd}tjd}|j|sJ|jdd}tjd}|j|sJ|jdj|sJt |jt |dk(sJt j t5|jddddt j t5|jt |dzddd|d djd k(sJt j t5|jdt |ddd|dd j|jddk(sJt j t5|jddddd|ddj|jdsJ|dd j|jdd sJ|d dj|jt |d z sJ|d dj|jt |d z d sJt j t5|ddddddt j t5|ddddddt |}t| dz|dzD]C}t| dz|dzD]+}|||j|j||k(r+JEy#1swYbxYw#1swY0xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw)NrrTsme data!rEsme drrNrOrIr-rr`) r3rslicerr5rr*rrr) rJr:slicedr=sliced2 expected2r]r[stops r&test_buffer_slicingrBs. D ,,t C YYq\F||K(H == "" "ii1oG W%I >>) $$ $ 99Q<  s ## # syyS" #q (( ( z " "  z "  #c(Q, rs8   C '' ' z " !SX q9   !S^^%5ab%9 99 9 z " !R qr7>>#))A, '' ' q8??399Q? ++ + rs8??399SX\2 33 3 r":  SYYs3x!|Q7 88 8 z " DbD  z " CaC CArAvq1u%P1"q&!a%( PDuT?--/3>>3CE$3OO OO PP9   sH.M !M-8M:N N* N  M*-M7:NNN N)ctjtd5tt j ddddy#1swYyxYw)N unhashabler1s123)rr*r9hashr3rr,r-r&test_buffer_hashingrus6 y 5# R\\& !"###s AA cd}tj|}tj|tj}|j j rJy)Ns12345r)r3rrrrflags writeable)r arrow_ref numpy_refs r&*test_buffer_protocol_respects_immutabilityr${s@ A QI irxx8I((( ((r-ctjddgtj}|jdd}|j}t j |||}tj|}~tj|tjjddgk(sJ|J~|Jy)NrOrTrrJr) rrint32__array_interface__rMr3rrrrtolist)objaddrrr:rs r&test_foreign_bufferr+s ((Aq6 *C  " "6 *1 -D ::D  D$ ,C S B ==BHH - 4 4 61a& @@ @ 4   4<>> ::   C  % %c *F LL >> BQ 3 && &r-ctjdd}t|tjsJ|j d|j dk(sJy)NrPT) resizable)r3r-rResizableBufferresizerr s r&test_allocate_buffer_resizabler7sE  SD 1C c2-- .. .JJsO 88s??r-cV tjd}|jd}tjdg}|j |}t jjt jddd|g}|jd}|j|jk(sJ|j|jk(sJ|j|jk(sJ|jsJd}d}|t|vsJ|t|vsJ|j!d} |j"j%| } | j'd k(sJ|dd } |j"j%| } | j'd k(sJ| j)|dd sJd } tj*t,| 5|j)t j.|dddd} tjd g} |j | }tj*t0| 5| j)|dddt jjt jddd|g} | jd}tj*t0| 5| j)|dddtj*t0| 5|j3dddtj*t0| 5|j3dddtj*t0| 5|ddddtj*t0| 5|j'dddtj*t0| 5|j5|d dddtj*t0| 5|j5|d dddtj*t0| 5t7|dddy#1swYIxYw#1swYxYw#1swYxYw#1swY`xYw#1swY9xYw#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYyxYw)Nz pyarrow.cudarstestingrOzrTsstingrEsstz8Device on which the data resides differs between buffersr1z'Implemented only for data on CPU devicerr)r importorskipContextrrbuffer_from_datar3FixedSizeBinaryArray from_buffersbinarybuffersrrrrreprr CudaBuffer from_bufferrrr*rrNotImplementedErrorrrr|)rcudactxrJcuda_bufr buf_on_gpurepr1repr2buf_on_gpu_sliced cuda_sliced msg_devicemsg arr_shortcuda_buf_shortbuf_on_gpu_shorts r&test_non_cpu_bufferrRs   ~ .D ,,q/C 88ZL !D##D)H ! ! . .ryy|Qx@P QCq!J ??hmm ++ +   !1!1 11 1    // /   &E 2E D$ $$ $ D$ $$ $"((+//--.?@K  ! ! #x // /"1Q//--.?@K  ! ! #u ,, ,  # #HQqM 22 2LJ z 4.",,t,-. 4C($I)))4N *# 61  01''44 ! a$/I!((*1- *# 63  !123 *# 6 *# 6  *# 61  *# 6   *# 64J34 *# 62Hq12 *# 6:E..11 33  4422sx%P-2P:0Q%QQ! Q.6Q;*R!R R-P7:QQQ!Q+.Q8;RRRR(c>tj}tjd}tjdd}tjddd}tjddd }tjjd d d d }|jdk(sJ|jdk(sJ|j dusJ|j dk(sJ|jdk(sJ|jdk(sJ|j dusJ|j dk(sJ|jdk(sJ|jdk(sJ|j dusJ|j dk(sJ|jdk(sJ|jdk(sJ|j dusJ|j dk(sJ|jdk(sJ|jdk(sJ|j dusJ|j dk(sJ|j dusJ||k(sJ||k7sJ||k7sJ||k7sJ||k7sJ||k7sJy)N)hole_size_limit )rUrange_size_limitr)rUrXprefetch_limitF)rUrXlazyrPr4g?@)time_to_first_byte_millistransfer_bandwidth_mib_per_sec ideal_bandwidth_utilization_fracmax_ideal_request_size_mibiTr)r3 CacheOptionsfrom_network_metricsrUrXrZrY)opts1opts2opts3opts4opts5opts6s r&test_cache_optionsrhs` OO E OOD 1E OOD4 HE OOD-1! EE OOD-1 ?E OO 0 03PSRULN 1 PE  D (( (  ! !%5 55 5 ::     1 $$ $  D (( (  ! !%5 55 5 ::     1 $$ $  D (( (  ! !T )) ) ::     1 $$ $  D (( (  ! !T )) ) ::     1 $$ $  D (( (  ! !T )) ) ::     1 $$ $ ::   E>> E>> E>> E>> E>> E>>r-ctjtjddddg}|D]'}|j|j||k(r'Jy)NrVrWTr)rUrXrZrY)r3r`rr)roptionsoptions r&test_cache_options_picklingrl!s_  t!! 5G J""=#6#6v#>?6IIIJr- compressionbz2)r*)marksbrotligziplz4zstdsnappyctj|stj|dd}tj j dd|jtjj}tj|}tj||}tj||d}t|tsJtj|||}tj|||d}t|tsJ|j!|sJ||k(sJtj"t$5tj||dddy#1swYyxYw) N support is not built'rr)codecT)rzasbytes)r is_availablerrrrandomrandintastyperrr3rcompressrbytes decompressrr*r)rm INPUT_SIZE test_datatest_bufcompressed_bufcompressed_bytesdecompressed_bufdecompressed_bytess r&test_compress_decompressr,s<   k * {m#89:J""1c ";&"')||I&H[[=N{{9K+/1 & .. .}}^Z+68'7-8$H (% 00 0  " "8 ,, ,  ** * z "; &k:;;;s E**E3c*tj|stj|dt|}|jdk(r|j Jt |j tsJdg}||vrtj|rJtjt5t|ddddtjt5tj|dddtjt5tj|dddtjt5tj|dddyd}tjj!dd|j#tj$j'}t)j*|}tj|}tj|}tj|}||ksJ||k\sJ||ksJt-||dzD]} t|| }|j/|} |j/|d } t | t0sJ|j3| |} |j3| |d } t | t0sJ| j5|sJ| |k(sJtjt5|j3| dddt7tjd stjd tjj9d }|j;ddd}t)j<|}|j?d}t||}|j/|}t||}|j/|}tA|tA|kDsJy#1swY!xYw#1swYxYw#1swYxYw#1swYyxYw#1swYxYw)NrvrtrrwrxryrOT)r{ default_rngzRequires newer version of numpyr)seedrPr)!r r|rrnamecompression_levelrintsupports_compression_levelr*rminimum_compression_levelmaximum_compression_leveldefault_compression_levelrr}r~rrrr3rrrrrrhasattrrintegersrr@r5)rmrzno_levelrrr min_level max_level default_levelrrrrrrngvaluesrhard_to_compress_buffer weak_codecweakly_compressed_buf strong_codecstrongly_compressed_bufs r&test_compression_levelrUs   k * {m#89: + E zzX&&...%113777zHh33K@@@ ]]: & " +q ! " ]]: & 9  + +K 8 9 ]]: & 9  + +K 8 9 ]]: & 9  + +K 8 9J""1c ";&"')||I&H// >)T>B*E222 ++NJG"--.> 6:.<,e444&&x000!Y... ]]: & /   - . / //2 299m , 56 ))  R  (C \\!S$ 'F ((6 C!kkmA.{I.J&//0GHi0L*334KL $ %,C(D DD D} " " 9 9 9 9 9< / /s<) OO"O/O<PO"O,/O9<PP cd}tj|}|jrJt|tjsJt |}|j sJtjt5}d|d<dt|jvsJ dddt|}tjt5}d|d<dt|jvsJ dddy#1swYVxYw#1swYyxYw)Nrhrzcannot modify read-only) r3rrrrr|readonlyrr*r9rvaluer)rr:r>excrs r&#test_buffer_memoryview_is_immutablers C ,,s C~~  c299 %% % _F ??? y !;Sq (C N:::; c A y !;S!(C N:::;; ;; ;;s4C)C5)C25C>ctjt5tjdddy#1swYyxYwr))rr*r9r3rr,r-r&test_uninitialized_bufferrs. y ! s 8Acd}tj}d}t|D]}|j||j }t |t ||zk(sJ|j ||zk(sJy)N dataabcdefr)r3BufferOutputStreamrrr6r5r)rr%Kir:s r&test_memory_output_streamrsx C A A 1X   **,C s8s3x!| ## # >> sQw && &r-c$tj}|jd|jrJ|j |jsJt j t5|jddddy#1swYyxYw)Noksnot ok)r3rrr7r6rr*rrs r& test_inmemory_write_after_closedrsh AGGENxx<JJL 88O8 z "  s +BBc d}|d}tj|dk(sJd}tj|}t dD] }|| tj|tj|k(sJy)Nc>ttj|Sr))rkr3r) bytes_objs r& make_bufferz6test_buffer_protocol_ref_counting..make_buffersi011r-foorj)rrr getrefcountr)rr:rrefcount_beforers r&!test_buffer_protocol_ref_countingrsx2 f CJJL &== Cooc*O 2YCJJL cooc2 22 2r-ctj}d}tj|d}|j ||j t ||j tj |tjt5|j |jdddd|j}|j|dzk(sJy#1swY2xYw)NrS1rutf8r`) r3rrrrrkrrr*r9decoder6r)r%rJrr:s r& test_nativefile_write_memoryviewrs A D --D )CGGCLGGIdOGGBLL  y !%  F#$% **,C >> tax '' ' %%s !C((C1c2d}tj}tj}d}t|D]$}|j ||j |&|j t |jk(sJtjjtjgdgdg}tj}tj}tj||j}tj||j}|j||j||j|j|j t |jk(sJy)Nrr)rOrTr`r)r3MockOutputStreamrrrrr5r6 RecordBatch from_arraysrRecordBatchStreamWriterschema write_batchr8)rf1f2rr record_batchstream_writer1stream_writer2s r&test_mock_output_streamr s9 C   B   B A 1X     779BKKM* ** *>>--rxx /B.CcUKL   B   B//L4G4GHN//L4G4GHN|,|, 779BKKM* ** *r-cd}t|Dcgc]}tjdd}}t|d|}tj j t|ttd5}|j|dddfd}|j||fScc}w#1swY(xYw)NrVrrxrctyr)) _try_deletersr&teardownz"sample_disk_data..teardown;s Dr-) rr}r~rr rrrr rr addfinalizer) requestrSIZE_rrJr%rrs @r&sample_disk_datar0s D+0; 7a6>>!S ! 7C 7 Ud D 77<<F TV ,D dD Q   " : 8 sB/;B44B=c>|\}}||d}|jd|ddk(sJ|jddk(sJ|jdk(sJ|j|ddk(sJ|jt|k(sJ|j d|jdk(sJ|rT|j t|dz|jt|dzk(sJ|jddk(sJ|j ddk(sJ|j dt j d k(sJ|jd k(sJt|d z }|j d t j|k(sJ|j|k(sJy) NrBrCrjrr-rOrr`rSrTr)rrrr5rr SEEK_CURSEEK_END)FACTORY sample_dataallow_read_out_of_boundsrrJr% ex_lengths r&_check_native_file_readerrBsxJD$3A 66":cr "" " 66!9   668r>> 668tBCy  668s4y  FF1I 668q==  s4y1}vvx3t9q=(((vvayC 66!9>> 66!R[[ !Q && & 668q==D A I 66"bkk "i // / 668y  r-c<ttj|dy)NF)r)rr3 memory_maprs r&test_memory_map_readerrcsbmm-=7<>r-c|\}}g}tj|d5}|j|jd|ddf|j|jd|ddf|j|jd|ddfdddt j |D]\}}|j |k(rJy#1swY=xYw)NrrPr4i,)r3rappendr}rrr)rrrJcasesr%r:r=s r&'test_memory_map_retain_buffer_referencerhs!JD$ E tT ":a ammC($t*56 ammC($s3-89 ammC($s3-89: JJL, X~~8+++,::s A0C  Cc8ttj|yr))rr3OSFilers r&test_os_file_readerrxsbii)9:r-c6ttjyr))r'r3rr,r-r&test_os_file_large_seeksr|sbii r-cb tj|y#tj$rYywxYwr))r removeerrorrs r&rrs(  $ 88   s ..ctjdk(rtjdd}t |Dcgc]}t j dd}}t|d|}tjjt|t}t|d5}|j|dddtj |d}|j#d |jd |j%d k(sJ|j#d |j'd d k(sJtj |d}|j#d |jd |j#d |j#d |j'd d k(sJtj |d}|jdtj |5} | j)|k(sJ dddtj*t,5|j'dddd|j#d|j'ddk(sJycc}w#1swYxYw#1swYvxYw#1swYOxYw)Nrz:Multiple memory maps to same file don't work on emscriptenrVrrxrr+brCrjspeekaboosbooapeakrdrrr`)rrrxfailrr}r~rr rrrr rrr3rrrrrr*IOError) rrrrrJrr%rf3f4s r&test_memory_map_writerrs |||# QR D+0; 7a6>>!S ! 7C 7 Ud D 77<<F TV ,D dD Q   d'AFF2JGGK 668r>>FF2J 66!9 ## # t% (BGGBKHH[GGBKFF2J 66!9 ## # t# &BHHV t !wwyD   ! w   FF1I 66!9  I 82!!s)I"II+I7I(+I47JcNd}t|Dcgc]}tjdd}}t|d|dz}t||dzd}tj j t|t}tj||dz }|j||j||j||jt|d5}|jt|d|k(sJ dddycc}w#1swYyxYw)NrVrrxrTr)rr}r~rr rrrr r3create_memory_maprr6r8rr) rrrrdata1data2rmmapr%s r&test_memory_map_resizers D+0; 7a6>>!S ! 7C 7 #l # $E #tqyl# $E 77<<F TV ,D  dQh /DJJuKKJJuJJL dD -Qvvx5Ud,,,,-- 8--sD*"DD$c"tjjt|t }t |d}|j tj|d5}|jdk(sJ dddy#1swYyxYw)NrrrCr) r rrrr rr8r3rr)rrr%rs r&test_memory_zero_lengthrsk 77<<F TV ,D T4AGGI t% (&J A%%%&&&s %BBctjdk\rd}n%tjtj d}t tj|y)NlzARequested memory map length 4294967306 does not fit in a C size_tr1r#)rmaxsizerr*r3ArrowCapacityErrorr'rrs r&test_memory_map_large_seeksrs? {{e  ! !/0bmmNCr-ctjjt|t }t j |d}|j|jsJtj|yNrV) r rrrr r3rr8r7r)rrrs r&test_memory_map_close_removersN 77<<F TV ,D  d +DJJL ;;;IIdOr-ctjjt|t }t j |dtj|yr)r rrrr r3rr)rrs r&test_memory_map_deref_remover s7 77<<F TV ,Dt$IIdOr-cd}t|Dcgc]}tjdd}}t|d|}tj j t|t}t|d5}|j|dddtj|d}|jdtj|5}|jdk(sJ dddtjt 5|j#d ddd|j%tj|d 5} | jd dddtj|5} | jd k(sJ dddycc}w#1swYxYw#1swYxYw#1swYxYw#1swYhxYw#1swYyxYw) NrVrrxrrdrCrr`rabsbarrS)rr}r~rr rrrr rrr3rrrr*rrr8) rrrrrJrr%rrrf5s r&test_os_file_writerrsy D+0; 7a6>>!S ! 7C 7 Ud D 77<<F TV ,D dD Q   4c "BHHV 4BwwyA~~ w   HHJ 4d #r  4BwwyA~~+ 8 sAF:FF+ F7 G9GF(+F47GG Gctj}tjt5|j ddddy#1swYyxYw)Nfoo)r3rrr*r9r)nfs r&%test_native_file_write_reject_unicoders<   B y ! s A  Acb tjjt|t }t |d5}|j ddddtj|d5}|jdk(sJ|jsJ|jrJ|jsJ dddtj|d5}|jdk(sJ|jsJ|jrJ|jsJ dddtj|d5}|jdk(sJ|jrJ|jsJ|jrJ dddtj|d5}|jdk(sJ|jrJ|jsJ|jrJ dddtj|d5}|jdk(sJ|jrJ|jsJ|jrJ dddtj|d5}|jdk(sJ|jrJ|jsJ|jrJ dddt |d5}|j ddddtj|d5}|jdk(sJ|jsJ|jrJ|jsJ dddtj|d 5}|jd k(sJ|jsJ|jsJ|jsJ dddtj|d 5}|jd k(sJ|jsJ|jsJ|jsJ dddy#1swYxYw#1swY{xYw#1swY xYw#1swYxYw#1swYjxYw#1swYxYw#1swYxYw#1swYxYw#1swYAxYw#1swYxYw#1swYyxYw) NrfoooorBrCrrdr rzr+zrb+r)r rrrr rrr3rrDrrrUr)rrr%s r&test_native_file_modesr s 77<<F TV ,D dD Q  4c "avv~~zz||::<zz||  4d #qvv~~zz||::<zz||  4c " avv~~::<zz||::<<  4d # qvv~~::<zz||::<<  4d # qvv~~::<zz||::<<  4c " avv~~::<zz||::<<  dD Q  tS !Qvv~~zz||::<zz||  tT "avvzz||zz||zz||  tU #qvvzz||zz||zz|| m            sP$/AP1AP>?AQ 'AQAQ%7AQ2Q?AR +ARAR%$P.1P;>Q QQ"%Q/2Q<?R  RR"%R.rz umask doesn't work on Emscripten)reasoncztjd}tj|tjjt |t }t j|d5 dddtj|jdzd|zk(sJtjjt |t }t j|d5 dddtj|jdzd|zk(sJy#1swYxYw#1swYAxYw)NrTrdrCii) r umaskrrrr r3rstatst_moder)r cur_umaskrs r&test_native_file_permissionsrIs IHHY 77<<F TV ,D 4c "   774= 5 (EYJ,> >> > 77<<F TV ,D tS !   774= 5 (EYJ,> >> >    s3D%/D1%D.1D:ctjjt|t }t |d5}|j ddddtj|d5}|jrJ dddjsJtj|d5}|jrJ dddjsJ||g}gd}|D]=}|D]6\}}tjt5t|||ddd8?y#1swYxYw#1swYxYw#1swYzxYw#1swYixYw)NrrrrC))rr,)r)r)rr,)flushr,)rr,)rr,)rUr,)r rrrr rrr3rr7rrr*rgetattr) rrr%os_file mmap_filefilesmethodsmethodargss r&.test_native_file_raises_ValueError_after_closer&\s@ 77<<F TV ,D dD Q  4d #"w>>!!>" >>> t$ '$9#####$       E!G*# *LFDz* *"6"D) * * **-""$$" * *s/D/D),D5ED&)D25D>E c$d}tjjt|t }t |d5}|j |jddddttj|d5}|jsJ|j}||k(sJ dddjsJttj|d5}t|}dj||k(sJ dddtjjt|t }ttj|d5}|jsJ|j |dddttj|d5}|j}||k(sJ dddy#1swYuxYw#1swY/xYw#1swYxYw#1swYqxYw#1swYyxYw)Nzfoooo barrr bazzz rutf-8rrC)r rrrr rrencoderr3rrrr7listr)rrJrr%filresrpath2s r&test_native_file_TextIOWrapperr/zs D 77<<F TV ,D dD &Q  G$%& ryyD1 2c||~~hhjd{{ ::: ryyD1 2&cS wwu~%%%& GGLLVdf -E ryyT2 3s||~~ $ ryyT2 3shhjd{{)&& &&s<!G *G!*"G.&$G:2HG!G+.G7:HHcd}t|dz }t|d5}|j|dzdddtj|d}t |5}|j dk(sJd}|j|}t|tjd |zt|z k(sJ||j cxkr |d zksJJ dddy#1swYxYw#1swYyxYw) Ns foo quux largefile.txtrirrCri NrT) rrrr3rrr readlinesr5mathceil)rrJrr% binary_filerMrs r&#test_native_file_TextIOWrapper_perfr6s D v' (D dD  Q w ))Dt,K { #:q!Q&&& F#5zTYYq6zCI'=>>>>))+9vz99999 ::   ::sC"A <<>> 88A;' !! !HHQK 88A;' !! !r-ctjtjtjddd}|jddk(sJ|j }|j sJ|j rJ|j rJ|jddk(sJtjt5|jddddy#1swYyxYw)NrKrErLrTrNrS) r3rOrrrTr7rUrr*EnvironmentErrorrrUs r&.test_buffered_input_stream_detach_non_seekablerYs  r|||~  88A;' !! ! ' (  s CC'ctjdtj}tj|}tj |}tj |d}|jd|ddjdk(sJ|j|ddjdk(sJ|jd|j|jsJ|jsJ|dd jd k(sJy) NrPrrErLrN12s3456789rjs 123456789) rzerosrr3rr.BufferedOutputStreamrrrr8r7)np_bufr:rPr%s r&test_buffered_output_streamr`s XXc )F ,,v C " "3 'C 3AGGEN "1:   ; .. .GGI "1:   9 ,, ,GGJGGI 88O8 ::: #2;   N 22 2r-ctjdtj}tj|}tj tj |d}|jd|ddjdk(sJ|j}|jsJ|jrJ|ddjdk(sJy)NrPrrErLrNr[r\) rr]rr3rr^r.rrrTr7)r_r:r%rPs r&"test_buffered_output_stream_detachrbs XXc )F ,,v C  8 8 =1MAGGEN "1:   ; .. . ((*C 88O8zz> "1:   9 ,, ,r-ctj|d}tj||5}|jrJ|j sJ|j rJ|j rJ|j}||k(sJ dddjsJ|jsJtj|d}tj||5}|j}t|tjsJ|j|k(sJ dddy#1swYxYw#1swYyxYwNrrC) r3rCompressedInputStreamr7rrrUrr}rrr)rJfnrmrP compressedgotr:s r&check_compressed_inputri's( ))BT "C ! !#{ 3z$$$$""$$$&&(((&&(((ood{{      ::: ))BT "C ! !#{ 3(z$$&#ryy)))~~4'''((((sAD(AD4(D14D=cd}t|dz }tj|d5}|j|dddt ||dy#1swYxYw)Nsome test data some test data some test data some test data some test data some test data some test data some test data some test data some test data eof zcompressed_input_test.gzrrq)rrqrrrirrJrfr%s r&test_compressed_input_gziprm;sS .D V0 0 1B 2t   4V,s AAc d}t|dz }tj|d5}|j|ddd t ||dy#1swYxYw#t $r(}t jt|Yd}~yd}~wwxYw)Nrkzcompressed_input_test.bz2rdrn)rrnBZ2FilerrirDrr)rrJrfr%es r&test_compressed_input_bz2rqDs| .D V1 1 2B R   tR/  CFs#A AA B %BB cjtjdstjdd}t |dz }t j |d5}|j|dddtj|d5}|j}|j|k(sJ dddjsJtjtj|d5}|j}|j|k(sJ ddd|jsJt |d}tj|d5}|j}|j|k(sJ ddd|jsJy#1swY#xYw#1swYxYw#1swYxYw#1swY=xYw)Nrqgzip support is not builtrkz!test_compressed_input_openfile.gzrr)r r|rrrrqrrr3rer}rr7pathlibPath)rrJrfr%rgr:s r&test_compressed_input_openfilervOs   f % /0 .D V9 9 :B 2t    ! !"f -($$&~~4'''(     ! !',,r"2F ;(z$$&~~4'''(     RA ! !!V ,( $$&~~4'''( 88O8#(( (( ((s0F&F'&F&F)FFF&)F2ctj|d}tj||5}|j}||k(sJ dddy#1swYyxYwrd)r3rrer)rJrfrmrPrgrhs r&check_compressed_concatenatedrxjsQ ))BT "C ! !#{ 3zood{{s AAc:d}t|dz }tj|d5}|j|dddddtj|d5}|j|dddddt ||dy#1swYJxYw#1swY#xYw)Nrkzcompressed_input_test2.gzrrGr rq)rrqrrrxrls r&!test_compressed_concatenated_gziprzqs .D V1 1 2B 2t  Sb  2t  RS !$F3 sBBBBcd}tj|}tjt5tj |ddddtjt 5tj |ddddtj |d5}tjtd5|jddddddy#1swYxYw#1swYixYw#1swY*xYw#1swYyxYw)Nsfoofoofoofoofoofoofoofoofoofoounknown_compressionrqzzlib inflate failedr1) r3rrr*rrer9rr)rJrPrgs r&test_compressed_input_invalidr}|s D //$ C z "=   &;<= y !,   d+, ! !#v .* ]]7*? @  OO   ==,,  s;C)C(D:C4 DC%(C14C= 9DD ctj}tj||5}|jrJ|j rJ|j sJ|j rJ|j|dddjsJ|jsJt|d5}|j|jdddy#1swYZxYw#1swYyxYw)Nr) r3rCompressedOutputStreamr7rrrUrrr6)rJrfrmrPrgr%s r&make_compressed_outputrs   !C " "3 4 $$$$&&(((""$$$&&(((      ::: b$ 1      sAC1 C&C#&C/cd}t|dz }t||dtj|d5}|j }||k(sJ dddy#1swYyxYw)Nrkzcompressed_output_test.gzrqr)rrrqrr)rrJrfr%rhs r&test_compressed_output_gziprs_ .D V1 1 2B4V, 2t ffhd{{s AAc.d}t|dz } t||dt j |d5}|j}||k(sJ dddy#t$r(}tjt|Yd}~dd}~wwxYw#1swYyxYw)Nrkzcompressed_output_test.bz2rnrB)rrrDrrrnror)rrJrfrpr%rhs r&test_compressed_output_bz2rs .D V2 2 3BtR/ R ffhd{{  CFs" AB  B BB Bctjdstjdt j |dz d5}|j dddd|dz jd5}t j |d5}|j dddddddy#1swYWxYw#1swYxYw#1swYyxYw)Nrqrszctor.gzstestzctor2.gzr)r r|rrr3rrr)rrZr%s r&test_output_stream_constructorrs   f % /0 " "6I#5v >& W :  # #D )"Q  & &q& 1 "V LL ! """ " """s0B,2C B8C,B58C =CC )rexpected_compression)zfile.bz2rn)zfile.lz4rrzfile.gzzpath/to/file.zstcNtj|sLtjtj j 5tj|dddytj|}t|tsJ|j|k(sJy#1swYyxYwr)) r r|rr*r3libArrowNotImplementedErrordetectrr)rrrzs r&test_compression_detectionrs   2 3 ]]266:: ;  LL    T"%'''zz1111   s BB$cntjt5tjddddtjt 5tddddtjt5tddddy#1swYdxYw#1swYCxYw#1swYyxYw)Nunknown)rr*rr r|r9r,r-r&test_unknown_compression_raisesrs z "& 9%& y ! d  z " i &&s#B B> B+BB(+B4ctj|stj|dd}t j }t j ||5}|j|ddd|j}t|t|ksJt j|}t j||5}|j}||k(sJ dddy#1swYxYw#1swYyxYw)Nrvrk) r r|rrr3rrrr6r5rrer)rmrJrPrgcdatarhs r&test_compressed_roundtriprs   k * {m#89: .D   !C " "3 4  LLNE u:D !! ! //% C ! !#{ 3zood{{  sC*C6*C36C?)rnrprqrrrsctj|stj|dtj j t jgdgdg}t j}t j||}t j||j}|j|d|j|j|j}t jt j ||}t j"|j%}||k(sJy)Nrv)rOrTr`rErrr`) max_chunksize)r r|rrr3Tablerrrrrr write_tabler8r6rerRecordBatchStreamReaderread_all)rmtablerPrZr0r: got_tables r&"test_compressed_recordbatch_streamrs   k * {m#89: HH "((?";!t|}tjtj|j |||}g} |j t |}|j||sn/dj|}|j||k(sJy)Nr-) iterr3transcoding_input_streamrr*rnextrrr)rJ src_encoding dest_encoding chunk_sizesrZoutr:s r&check_transcodingr s{#K  ( (  L12m%F C kk${+, 3   ((3-C ::m $ ,, ,r-zsrc_encoding, dest_encoding)r(utf-16rr()r(z utf-32-le)r(z utf-32-bec ztt||ddgtt||tjgdy)Nrr)rOrTr`r)runicode_transcoding_example itertoolscycle)rrs r&test_transcoding_input_streamrs81"MD!9>1"Mool35r-)r(r()r(UTF8cdtjd}tj||||usJy)Nsabc123)r3rrrrrZs r&test_transcoding_no_opsr+s9 __Y 'F & & m -06 77 7r-)r(ascii)r(zlatin-1ctjtjdj|||}t j t 5|jddddy#1swYyxYw)NuĀrO)r3rrr*rr*UnicodeEncodeErrorrrs r&test_transcoding_encoding_errorr5s^  ( (  56F ) * As A..A7rrctjtjd||}tjt 5|j ddddy#1swYyxYw)NsrO)r3rrrr* UnicodeErrorrrs r&test_transcoding_decoding_errorrCsU  ( ( +,F | $ As AA(cd}tj|t|fD],}tj|}|j |k(r,Jt j |}tjt|}|j |k(sJtjt|d}|j |k(sJyNrkrqrm)r3rr| input_streamrrqr)rJargrZgz_datas r&test_input_stream_bufferrTs .D T"Jt$45%%{{}$$$%mmD!G __Z0 1F ;;=G ## # __Z0f EF ;;=D  r-cxGdd}tj|}|jddk(sJy)Nc*eZdZdZedZddZy)1test_input_stream_duck_typing..DuckReadercyr)r,rus r&r8z7test_input_stream_duck_typing..DuckReader.closefrwr-cyryr,rus r&r7z8test_input_stream_duck_typing..DuckReader.closedirzr-Ncy)Nhellor,)rvrMs r&rz6test_input_stream_duck_typing..DuckReader.readmsr-r))r~rrr8rr7rr,r-r&rrds       r-rrr)r3rr)rrZs r&test_input_stream_duck_typingrbs4  __Z\ *F ;;q>X %% %r-cd}|dz }tt|d5}|j|dddtj|}|j |k(sJtjt|}|j |k(sJtjt jt|}|j |k(sJy#1swYxYw)Nrkrr)rrrr3rrrtru)rrJ file_pathr%rZs r&test_input_stream_file_pathrts .D'I c)nd #q  __Y 'F ;;=D  __S^ ,F ;;=D  __W\\#i.9 :F ;;=D  s CC$cd}tj|}|dz }tt|d5}|j |dddt j |}|j|k(sJt j t|}|j|k(sJt j tjt|}|j|k(sJt j |d}|j|k(sJt j |d}|j|k(sJy#1swYxYw)Nrkzinput_stream.gzrrqr rqrrrrr3rrrtrurrJrrr%rZs r&&test_input_stream_file_path_compressedrs .DmmD!G**I c)nd #q __Y 'F ;;=D  __S^ ,F ;;=D  __W\\#i.9 :F ;;=D  __YF ;F ;;=D  __YD 9F ;;=G ## #s EEcd}|dz }tt|d5}|j|dddtj|d}t |tj sJ|j|k(sJtjt|d}t |tj sJ|j|k(sJtjtjt|d}t |tj sJ|j|k(sJtj|d}t |tjsJd }tjt| 5tj|d dddtjt5tj|d dddy#1swYxYw#1swYPxYw#1swYyxYw) Nrkzinput_stream.bufferedr rLr[rTr$Buffer size must be larger than zeror1rNmillion)rrrr3rrrOrrtrurrr*rr9)rrJrr%rZunbuffered_streamrNs r&$test_input_stream_file_path_bufferedrs .D00I c)nd #q  __YB 7F fb44 55 5 ;;=D  __S^ .DuckWriterc6tj|_yr))r3rr:rus r&__init__z;test_output_stream_duck_typing..DuckWriter.__init__s,,.DHr-cyr)r,rus r&r8z8test_output_stream_duck_typing..DuckWriter.close rwr-cyryr,rus r&r7z9test_output_stream_duck_typing..DuckWriter.closed rzr-c:|jj|yr))r:r)rvrJs r&rz8test_output_stream_duck_typing..DuckWriter.writes HHNN4 r-N)r~rrrr8rr7rr,r-r& DuckWriterrs% /      !r-rr)r3rrr:r6r)r duck_writerrZs r&test_output_stream_duck_typingrs[ ! !,K   k *F << !! ! ?? # # % 0 0 2h >> >r-cd}|dz }d}||||t|||tjt||y)Nrkrctj|5}|j|dddtt |d5}|j |k(sJ dddy#1swY>xYw#1swYyxYwrr3rrrrr)rrJrZr%s r& check_dataz0test_output_stream_file_path..check_datasq   i ( F LL   #i.$ ' $1668t# ## $ $   $ $sA%A1%A.1A:)rrtrurrJrrs r&test_output_stream_file_pathrsG .D(I$ y$s9~t$w||C N+T2r-c d}|dz }d}tj||||k(sJtj|t|||k(sJtj|tjt|||k(sJtj|||d|k(sJ|||d|k(sJt j td5|||d|k(sJ dddy#1swYyxYw) Nrkzoutput_stream.gzctj|fi|5}|j|dddtt |d5}|j cdddS#1swY8xYw#1swYyxYwrrrrJkwargsrZr%s r&rz;test_output_stream_file_path_compressed..check_data-k   i 26 2 f LL   #i.$ ' 1668      A A, A),A5rqrzInvalid value for compressionr1rabbit)rqrrrtrurr*rrs r&'test_output_stream_file_path_compressedr(s .D++I ??:i6 74 ?? ? ??:c)nd; < DD D ??7<<I/6 8;? @@ @ ??9d7 9<@ AA A i4 8D @@ @ z)H II)Tx@DHHHIIIs !C<<Dcd}|dz }d}tj|d}t|tjsJd}t j t |5|||d|k(sJ ddd|||d |k(sJ|||d |k(sJ|t||d |k(sJ|tjt||d }||k(sJy#1swYqxYw) Nrkoutput_stream.bufferedcRtj|fi|5}|jdddkDrt|tjsJ|j |dddt t|d5}|jcdddS#1swY8xYw#1swYyxYw)NrMrr) r3rgetrr^rrrrrs r&rz9test_output_stream_file_path_buffered..check_dataDs   i 26 2 fzz-+a/!&"*A*ABBB LL  #i.$ ' 1668       sAB7BBB&rrLrr1irrT) r3rrrrr*rrrtru)rrJrrrrNr>s r&%test_output_stream_file_path_bufferedr@s .D11I((B ' 33 3 0C z -E)Tt<DDDE i2 6$ >> > i4 8D @@ @ c)nd ;t CC C  S^4d KF T>>EEs CC&cd}|dz }d}|||d}tj||k(sJ|||d}tj||k(sJ|||dd}tj||k(sJy) Nrz(output_stream_compressed_and_buffered.gzctj|fi|5}|j|dddtt |d5}|j cdddS#1swY8xYw#1swYyxYwrrrs r&rzHtest_output_stream_file_path_compressed_and_buffered..check_data`rrrrLrTrqrrqr)rrJrrr>s r&4test_output_stream_file_path_compressed_and_bufferedr[s /DCCI  4R 8F ??6 "d ** *  4T :F ??6 "d ** *  4Tv NF ??6 "d ** *r-cXd}|dz }d}|||d|k(sJ|||d|k(sJy)Nssome test data rctj|fi|}|j|~tjt t |d5}|jcdddS#1swYyxYwr)r3rrrrrrrrs r&rz1test_output_stream_destructor..check_dataws]!!)6v6 T  #i.$ ' 1668   s A,,A5rrLrTr,rs r&test_output_stream_destructorrpsI D11I i1 5 == = i4 8D @@ @r-crd}fd}|||k(sJtj||d|k(sJy)Nrkc>tdz }t|d5}tj|fi|5}|j |ddddddt|d5}|j cdddS#1swY7xYw#1swY;xYw#1swYyxYw)Noutput_stream_filerr)rrr3rrr)rJrrfr%rZrs r&rz2test_output_stream_python_file..check_datas.. / "d^ #q!!!.v. #& T" # #"d^ q668   # # # #  s.BA;B!B;B BBBrqrr)rrJrs` r&test_output_stream_python_filer s@ .D  d t ## # ??:d? @D HH Hr-ctt}tjt5t j |ddddttfD]9}tjt5t j |ddd;t|dz }t|d5} dddt|d5}tjtd5t j |ddddddy#1swYxYw#1swYxYw#1swYpxYw#1swY6xYw#1swYyxYw)Nrrrrrzwritable file expectedr1) r|rkrr*rr3rrr9rr)rr:rrfr%s r&test_output_stream_errorsr s Y[ !C z "1 %01 XZ(" ]]9 % "   S ! " "" Vj !B b$ 1  b$ 1 ]]9,D E   Q    11 " "      sGD=D7D( E)D4?EDD% (D14D= 9EE r))T)rn contextlibriorrrrrrrrqr3r rtrr}rrrnumpyr ImportError pyarrow.utilr pyarrowr r3r'r.r?rLmark parametrizer^rerhrprrrrrrrrrrrrrrrrrrrrrr r rrrr$r+r1r7rRrhrlparamrrrrrrrrrrrrfixturerrrrrrrrrrrrr rrrrrr&r/r6r:r=rFrIrQrVrYr`rbrirmrqrvrxrzr}rrrrrurrrrrrrrrrrrrrrrrrrrrrrrrrr r r,r-r&rsJ$ %II  ."8,B#568'97'T"# &'8% $6, " )2(  3 . 4 . . 3&', ',   ''"**(: 0Pf# ))   'CCL-`JFLL V[[&&bff.M.M&N      ) ; ;<FLL V[[&&bff.M.M&N      ) LE LE^;( '3"((*+L$8<!B> , ;! (V-(&D 6<~LLL )K ? ? *<>:"$.&&$1 " 33" - - ((--444     "9W\\)f%W\\$%v. < 2  2     FLLkkrvv'F'FG )  ", ,V -6 5  56,+-.7.76,. 6--  ! !&$ !$$(:4 ! !%%.!!" ?, 3II.6++(A&II$ gC Bs\\  \