
    [j                        S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKr	S SKJ
r
  S SKrS SKJrJrJrJrJrJr  S SKJrJrJr  S SKJrJrJr  S SKJrJrJr  S S	KJrJ r J!r!J"r"J#r#  S SK$r$ S SK%r%S
 r'\$RP                  RS                  S\ 5      S 5       r*S r+S r,S r-S r.\#S 5       r/S r0S r1\$RP                  RS                  SSS/ SQ4SS// 4S/ SQSS/4SSS/SS/4/5      S 5       r2\$RP                  RS                  S S!S"/5      S# 5       r3S$ r4S% r5S& r6S' r7S( r8\$RP                  RS                  S)/ S*Q5      S+ 5       r9S, r:S- r;S. r<\#\$RP                  RS                  S/S0S S /S1.S2S3/5      S4 5       5       r=\#S5 5       r>\#\$RP                  RS                  S6S7S8/4S9S:S;/4S</ S=Q4S>/ S?Q4/5      S@ 5       5       r?\#SA 5       r@\#SB 5       rASC rBSD rCSE rDSF rESG rF\$RP                  RS                  SHSSI/5      SJ 5       rGSK rHSL rISM rJSN rKSO rLSP rMSQ rN\$RP                  RS                  SRSS\$R                  " ST\$RP                  R                  \SU:  SVSW9SX9/5      SY 5       rQ\$RP                  RS                  S\ 5      SZ 5       rR\$RP                  RS                  S[S\/5      S] 5       rS\$RP                  RS                  S^\ R                  " 5        V s1 s H  n U S_;  d  M  U iM     sn 5      S` 5       rUSa rVSb rWSc rX\$RP                  R                  Sd5      \$RP                  RS                  S[SeSf/5      Sg 5       5       rZSh r[\$RP                  R                  Sd5      \$RP                  RS                  S[SeSf/5      Si 5       5       r\Sj r]\$RP                  RS                  SSkSl/5      Sm 5       r^Sn r_\$RP                  RS                  SSkSl/5      So 5       r`Sp raSq rbSr rcSs rdSt re\$RP                  RS                  SSkSu/5      Sv 5       rf\$RP                  RS                  SwSxSy/5      Sz 5       rg\"\$RP                  R                  S{\" 5       ;  S|SW9S} 5       5       rh\$RP                  R                  Sd5      \$RP                  RS                  S^S~S/5      S 5       5       riS rj\$RP                  RS                  S^SS/5      S 5       rk\$RP                  RS                  S^S~S/5      S 5       rlS rmS rn\$RP                  RS                  S/ SQ5      \$RP                  RS                  S\$R                  " SS\$RP                  R                  \R                  S:H  SSW9SX9\$R                  " SS\$RP                  R                  \R                  S:H  SSW9SX9SS/5      S 5       5       rp\$RP                  RS                  S\$R                  " SS\$RP                  R                  \R                  S:H  SSW9SX9\$R                  " SS\$RP                  R                  \R                  S:H  SSW9SX9SS/5      S 5       rq\$RP                  RS                  SSkSu/5      S 5       rrS rsS rtS ru\$RP                  R                  \SSW9S 5       rvg! \& a     GNf = fs  sn f )    N)BytesIO)ZipFile)array_equal)__gdal_version__get_gdal_config_optionlist_driverslist_layers	read_infoset_gdal_config_options)
GDAL_GE_37HAS_PYARROWHAS_SHAPELY)DataLayerErrorDataSourceErrorFeatureError)
open_arrowreadwrite)
DRIVER_EXTDRIVERSprepare_testfilerequires_pyarrow_apirequires_shapelyc                 :   [        U 5      u  pp4US   S:X  d   eUS   S:X  d   eUS   S:X  d   eUS   R                  S:X  d   eUS   R                  5       / S	Q:X  d   e[        U5      S
:X  d   e[        U5      [        US   5      :X  d   eUS   S S S:X  d   eg )Ncrs	EPSG:4326geometry_typePolygonencodingUTF-8fields   pop_est	continentnameiso_a3
gdp_md_estr#   r            )r   shapetolistlen)naturalearth_lowresmeta_geometryr!   s        \/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/pyogrio/tests/test_raw_io.py	test_readr4   '   s     $%8 9DX;+%%% I---
w&&&>4'''>  " '    v;!x=Cq	N*** A;r?9999    extc                    US:X  a!  [         (       d  [        R                  " S5        [        XUS9nUR	                  5       (       d   e[        U5      u  pEpgUS   S:X  d   eUS   S;   d   eUS   S	:X  d   eUS
   R                  S:X  d   eUS
   R                  5       / SQ:X  d   e[        U5      S:X  d   e[        U5      [        US   5      :X  d   eg )N	.gpkg.zipz(.gpkg.zip not supported for gdal < 3.7.0)dst_dirr6   r   r   r   )MultiPolygonr   Unknownr   r    r!   r"   r$   r#   r   )	r   pytestskipr   existsr   r,   r-   r.   )tmp_pathr/   r6   testfiler0   r1   r2   r!   s           r3   test_read_autodetect_driverrA   >   s     k**>? 33OH?? $XDX;+%%% $JJJJ
w&&&>4'''>  " '    v;!x=Cq	N***r5   c                     [         R                  " [        SS9   [        U S-  5        SSS5        g! , (       d  f       g= f)zFReading a multi-layer file without specifying a layer gives a warning.zMore than one layer found matchzsample.osm.pbfN)r<   warnsUserWarningr   )data_dirs    r3   )test_read_arrow_unspecified_layer_warningrH   Y   s,    	k)E	FX(() 
G	F	Fs	   2
A c                 r   [         R                  " [        SS9   [        U SS9  S S S 5        [         R                  " [        SS9   [        U SS9  S S S 5        [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       Ng= f! , (       d  f       NL= f! , (       d  f       g = f)	Nz#Layer 'invalid' could not be openedrC   invalid)layerzLayer '-1' could not be openedzLayer '2' could not be opened   )r<   raisesr   r   r/   s    r3   test_read_invalid_layerrP   _   s    	~-R	S 	2 
T 
~-M	N + 
O 
~-L	M * 
N	M 
T	S 
O	N 
N	Ms#   BB2B(
B
B%(
B6c                     U u  p[        [        U 5      SS//5      (       d   e[        U 5      S   nUR                  S:X  d   eg )Nr/   r   rM   )   )r   r	   r   r,   )naturalearth_lowres_vsir1   r2   s      r3   test_vsi_read_layersrT   j   sY    !8A+,0Ey/Q.R    +,Q/H>>V###r5   c                 (    [        U SS9S   nUb   eg )NF)read_geometryrM   )r   )r/   r2   s     r3   test_read_no_geometryrW   t   s     'u=a@Hr5   c                     [        U S[        R                  " SS5      S9SS  u  p[        R                  " US   S/5      (       d   eUb   eg )NF7   )rV   maskrM      CAN)r   shapelyPointnpr   r/   r2   r!   s      r3   test_read_no_geometry__maskrb   z   sZ    ]]4$ b	
H >>&)eW----r5   c                 r    [        U SSS9SS  u  p[        R                  " US   S/5      (       d   eUb   eg )NF)     @[     K@rd   re   )rV   bboxrM   r\   r]   )r   r`   r   ra   s      r3   test_read_no_geometry__bboxrg      sO    ) b	
H >>&)eW----r5   c                     [         R                  " [        SS9   [        U / SSS9nS S S 5        g ! , (       d  f       g = f)Nz^at least one of read_geometry or return_fids must be True or columns must be None or non-emptyrC   FcolumnsrV   return_fidsr<   rN   
ValueErrorr   r/   r1   s     r3   (test_read_no_geometry_no_columns_no_fidsro      s;    	#
 5e

 
 
   0
>zdescr, columns, exp_columnsallr$   case_sensitiveNAMErepeats_dropped)r&   r&   r'   r&   r'   keep_original_orderr%   c                 Z    [        XSS9u  pEpg[        US   U5      (       d
   SU 35       eg )NF)rj   rV   r!   zFailed for )r   r   )r/   descrrj   exp_columnsr0   _fids	_geometry_fieldss           r3   test_read_columnsr|      s=     '+E'#D tH~{33J{5'5JJ3r5   skip_features
      c                 H   [        U 5      SS  u  p#[        XS9SS  u  pE[        [        U5      U-
  S5      n[        U5      U:X  d   e[        US   5      U:X  d   e[        R                  " XBUS  5      (       d   e[        R                  " US   US   US  5      (       d   eg )NrM   r}   r   rL   )r   maxr.   r`   r   )naturalearth_lowres_all_extr}   expected_geometryexpected_fieldsr2   r!   expected_counts          r3   test_read_skip_featuresr      s    )-.I)J12)N&7U	H
 ./-?CNx=N***vay>^+++>>(mn$EFFFF>>&*ob&9-.&IJJJJr5   c                 ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)Nz'skip_features' must be >= 0rC   rL   r   rl   rO   s    r3    test_read_negative_skip_featuresr      s)    	z)G	H 3 
I	H	H   .
<c                    [        U 5      SS  u  p[        U SS9SS  u  p4[        U5      S:X  d   e[        US   5      S:X  d   e[        R                  " X1S S 5      (       d   e[        R                  " US   US   S S 5      (       d   eg )NrM   max_featuresr   rL   r   r.   r`   r   )r/   r   r   r2   r!   s        r3   test_read_max_featuresr      s    )-.A)B12)F&/a@DHx=Avay>Q>>(bq$9::::>>&*ob&9"1&=>>>>r5   c                 ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)Nz'max_features' must be >= 0rC   rL   r   rl   rO   s    r3   test_read_negative_max_featuresr      s)    	z)F	G r2 
H	G	Gr   c                    [        U SS9SS  u  p[        U5      S:X  d   e[        U5      S:X  d   e[        US   5      S:X  d   e[        U SS9SS  u  p[        U5      S:X  d   e[        U5      S:X  d   e[        US   5      S:X  d   eUS	   S
:X  d   e[        U SS9SS  u  p[        U5      S:X  d   e[        US   5      S:  d   e[        US   5      S:  d   e[        U SS9SS  u  p[        U5      S:X  d   eg )N whererM   rR   r#   r   iso_a3 = 'CAN'   r\   r]   z+POP_EST >= 10000000 AND POP_EST < 100000000K   i i ziso_a3 = 'INVALID')r   r.   minr   ra   s      r3   test_read_wherer      sD   /r:12>Hx=Cv;!vay>S    /7GHLHx=Av;!vay>Q!9 #Pb
H x=Bvay>X%%%vay>I%%% /7KLQRPHx=Ar5   c                 ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)NzInvalid SQLrC   rJ   r   rl   rO   s    r3   test_read_where_invalidr      s'    	z	7 	2 
8	7	7r   rf   ))r   )r   rM   r   rM   r\   c                 |    [         R                  " [        SS9   [        XS9  S S S 5        g ! , (       d  f       g = f)NzInvalid bboxrC   rf   rl   )r/   rf   s     r3   test_read_bbox_invalidr      s%    	z	8 , 
9	8	8   
-
;c                     [        U SS9SS  u  p[        U5      S:X  d   e[        U SS9SS  u  p[        U5      S:X  d   e[        R                  " US   SS/5      (       d   eg )	N)r   r   h㈵>r   r   rM   r   i   ir~   r\   PANCRIr   )r   r2   r!   s      r3   test_read_bboxr      s|    7>VW	H x=A7>OPQRQSTHx=A>>&)eU^4444r5   c                     [        U SSS9S   n[        US   5      S:X  d   e[        R                  " US   S/5      (       d   eg )NL2   Z   DSELECT * from naturalearth_lowres where iso_a3 not in ('USA', 'RUS'))rf   sqlr\   r   r]   r   r   r!   s     r3   test_read_bbox_sqlr   	  sT    #!R 		F
 vay>Q>>&)eW----r5   c                     [        U SSS9S   n[        US   5      S:X  d   e[        R                  " US   S/5      (       d   eg )Nr   iso_a3 not in ('USA', 'RUS'))rf   r   r\   r   r]   r   r   s     r3   test_read_bbox_wherer     sT    #!, 		F
 vay>Q>>&)eW----r5   r[   r_   )typecoordinatesz({"type": "Point", "coordinates": [0, 0]}rJ   c                 |    [         R                  " [        SS9   [        XS9  S S S 5        g ! , (       d  f       g = f)Nz+'mask' parameter must be a Shapely geometryrC   r[   rl   )r/   r[   s     r3   test_read_mask_invalidr     s)     
z)V	W , 
X	W	Wr   c           	          [         R                  " [        SS9   [        U S[        R
                  " SS5      S9  S S S 5        g ! , (       d  f       g = f)Nz!cannot set both 'bbox' and 'mask'rC   r   rY   rZ   )rf   r[   )r<   rN   rm   r   r^   r_   rO   s    r3   test_read_bbox_mask_invalidr   +  s8    	z)L	M '8w}}TSU?VW 
N	M	Ms   !A
Azmask,expectedzPOINT (-105 55)r]   z/POLYGON ((-80 8, -80 10, -85 10, -85 8, -80 8))r   r   zPOLYGON ((
                6.101929 50.97085,
                5.773002 50.906611,
                5.593156 50.642649,
                6.059271 50.686052,
                6.374064 50.851481,
                6.101929 50.97085
            )))DEUBELNLDzGEOMETRYCOLLECTION (
                POINT (-7.7 53),
                POLYGON ((-80 8, -80 10, -85 10, -85 8, -80 8))
            ))r   r   IRLc                     [         R                  " U5      n[        XS9SS  u  p4[        R                  " US   U5      (       d   e[        U5      [        U5      :X  d   eg )Nr   rM   r\   )r^   from_wktr   r`   r   r.   )r   r[   expectedr2   r!   s        r3   test_read_maskr   1  sZ    6 D!D7CABGH>>&)X....x=CM)))r5   c           	          [        U [        R                  " SSSS5      SS9S   n[        US   5      S:X  d   e[        R
                  " US   S	/5      (       d   eg )
Nr   r   r   r   r   )r[   r   r\   r   r]   r   r^   boxr.   r`   r   r   s     r3   test_read_mask_sqlr   T  sc    #[[r4,R 		F
 vay>Q>>&)eW----r5   c           	          [        U [        R                  " SSSS5      SS9S   n[        US   5      S:X  d   e[        R
                  " US   S	/5      (       d   eg )
Nr   r   r   r   r   )r[   r   r\   r   r]   r   r   s     r3   test_read_mask_wherer   _  sc    #[[r4,, 		F
 vay>Q>>&)eW----r5   c                    [        U SS9SS  u  pn/ SQnU[        R                  " U5      4 H  n[        XSS9SS  u  pgn[        U5      S:X  d   e[        U5      S:X  d   e[        US   5      S:X  d   e[        R                  " XaU   5      (       d   e[        R                  " XrU   5      (       d   e[        R                  " US   US   U   5      (       a  M   e   g )	NTrk   r   )r   r~   r#   )fidsrk   r\   r   rL   )r   r`   arrayr.   r   )	r/   expected_fidsr   r   subsetr   indexr2   r!   s	            r3   test_read_fidsr   j  s    8<9b9
5Mo F&)*"&$#

"# 4yA~~8}!!!6!9~"""~~e6%:;;;;~~h&(ABBBB~~fRj/"*=f*EFFFF +r5   c                     [         R                  " [        SS9   [        U S/S9  S S S 5        [         R                  " [        SS9   [        U S/S9  S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)NzCAttempt to read shape with feature id \(-1\) out of available rangerC   rL   )r   zDAttempt to read shape with feature id \(200\) out of available ranger   )r<   rN   r   r   rO   s    r3   test_read_fids_out_of_boundsr   ~  sk    	T
 	 t,	
 
U
 	 u-	
 

 

 
s   AA-
A*-
A;c           	      <   [         R                  " [        SS9   [        U S/SS9  S S S 5        [         R                  " [        SS9   [        U S/SS9  S S S 5        [         R                  " [        SS9   [        U S/SS	9  S S S 5        [         R                  " [        SS9   [        U S/SS
9  S S S 5        [         R                  " [        SS9   [        U S/SS9  S S S 5        [        (       aD  [         R                  " [        SS9   [        U S/[
        R                  " SS5      S9  S S S 5        g g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz!cannot set both 'fids' and any ofrC   r   r   )r   r   )it   r   -   )r   rf   r#   )r   r}   )r   r   )r   r   -C6?r   r   )r   r[   )r<   rN   rm   r   r   r^   r_   rO   s    r3   #test_read_fids_unsupported_keywordsr     s;   	z)L	M s2BC 
N 
z)L	M s1EF 
N 
z)L	M s!< 
N 
z)L	M s; 
N 
z)L	M s1GH 
N {]]:-PQ$A3W]]1a5HI RQ  
N	M 
N	M 
N	M 
N	M 
N	M RQsG   D7E	6E$E+E<"F7
E	
E
E(+
E9<
F

Fc                    [        U 5      S   nUb   e[        U SS9S   nUb   e[        U SSSS9S   nUc   eUR                  [        R                  :X  d   e[        R                  " U[        R
                  " SS/SS	95      (       d   eg )
Nr   Fr   TrM   )rk   r}   r   r\   int64dtype)r   r   r`   r   r   r   )r/   r   s     r3   test_read_return_fidsr     s    #$Q'D<<#7:D<<#QUVW	D ::!!!>>$!Qw ?@@@@r5   c                 z    [        U / SSS9u  pp4Uc   e[        U5      S:X  d   eUb   e[        U5      S:X  d   eg )NFTri   rR   r   )r   r.   )r/   r1   r   r2   
field_datas        r3   test_read_return_only_fidsr     sX    $(Ru$%!AX t9z?ar5   r   
ISO-8859-1c                 ~   [        U5      u  p4pVU S-  nX#S'   [        XuU40 UD6  UR                  5       (       d   eS H)  nUR                  U5      R                  5       (       a  M)   e   Ub  UOSn	[	        UR                  S5      5       n
U
R                  5       nX:X  d   e S S S 5        g ! , (       d  f       g = f)Ntest.shpr   )z.dbfz.prjr    .cpg)r   r   r>   with_suffixopen)r?   r/   r   r0   r1   r2   r   filenamer6   expected_encodingcpg_fileresult_encodings               r3   test_write_shpr     s    $()<$=!DX*$H	(j1D1??##C(//1111   %-$8g	h""6*	+x"--/333 
,	+	+s   B..
B<c                     [        U5      u  p#pEUR                  SS05        U S-  n[        XdU4SS0UD6  UR                  5       (       d   eg )Nr   r:   	test.gpkgdriverGPKG)r   updater   r>   r?   r/   r0   r1   r2   r   r   s          r3   test_write_gpkgr     sT    $()<$=!DXKK.12+%H	(j@@4@??r5   c                 P   [        U5      u  p#pESUS'   U S-  n[        XdU4SSS.UD6  UR                  5       (       d   e[        R                  " [        U5      SS//5      (       d   e[        XdU4SSS.UD6  [        R                  " [        U5      SS/SS//5      (       d   eg )Nr:   r   r   r   firstr   rK   second)r   r   r>   r`   r   r	   r   s          r3   test_write_gpkg_multiple_layersr     s    $()<$=!DX*D+%H	(jOwO$O??>>+h/7N2K1LMMMM	(jPxP4P>>H. 9Hn;UV   r5   c                    [        U5      u  p#pEU S-  n[        XdU4SS0UD6  UR                  5       (       d   e[        R                  " [        U5      R                  5       5      nUS   S:X  d   eUS   S:X  d   eSU;   d   e[        US	   5      [        U5      :X  d   e[        [        US
   5      R                  US	   S   S   R                  5       5      5      (       a   eg )Nz	test.jsonr   GeoJSONr   FeatureCollectionr'   testr   featuresr!   r   
properties)
r   r   r>   jsonloadsr   r.   set
differencekeys)r?   r/   r0   r1   r2   r   r   datas           r3   test_write_geojsonr    s    $()<$=!DX+%H	(jCCdC??::d8n))+,D<....<6!!!D==tJ CM111DN&&tJ'7':<'H'M'M'OP    r5   c                 v   [        U5      u  p#pESnSUS'   SUS'   U S-  n[        XdU4SS0UD6  UR                  5       (       d   e[        U5      u  p#pGUS   S	:X  d   eUS   S:X  d   eUS
   S:X  d   eUS   R                  S:X  d   e[	        U5      S:X  d   e[	        U5      S:X  d   eUS   SS S:X  d   eg)z3Test writing file with no fields/attribute columns.Nr!   r:   r   r   r   r   r   r   r   r    r   r   rR   r*   r+   )r   r   r>   r,   r.   r?   r/   r0   r1   r2   r   r   r!   s           r3   test_write_no_fieldsr	    s     %))<$=!DXJDN +D +%H	(j@@4@ ?? $XDX;+%%% N222
w&&&>4'''v;!x=C A;r?9999r5   c                    [        U5      u  p#pESnSUS'   U S-  n[        XdU4SS0UD6  UR                  5       (       d   e[        U5      u  p#pGUS   b   eUS   b   eUS   S:X  d   eUS	   R                  S
:X  d   eUS	   R	                  5       / SQ:X  d   e[        U5      S:X  d   e[        US   5      S:X  d   eg)z*Test writing file with no geometry column.Nr   r   r   r   r   r   r    r!   r"   r$   r#   r   rR   r   r   r>   r,   r-   r.   r  s           r3   test_write_no_geomr    s     %))<$=!DXH D +%H	(j@@4@ ?? $XDX; (((
w&&&>4'''>  " '    v;!vay>S   r5   c                    [        U5      u  p#pESnU S-  n[        XdU4SS0UD6  UR                  5       (       d   e[        U5      u  pspUS   b   eUS   b   eUS   S:X  d   eUS	   R                  S
:X  d   eUS	   R	                  5       / SQ:X  d   e[        U	5      S:X  d   e[        U	S   5      S:X  d   eUb   eg)zTest writing file with no geometry data passed but a geometry_type specified.

In this case the geometry_type is ignored, so a file without geometry column is
written.
Nr   r   r   r   r   r   r    r!   r"   r$   r#   r   rR   r  )
r?   r/   r0   r1   r2   r   r   result_metaresult_geometryresult_field_datas
             r3   test_write_no_geom_datar  <  s    %))<$=!DX H +%H	(j@@4@ ??9=h6KOu%%%'///z"g---x &&$...x '') .     !Q&&& #$+++"""r5   c                      [         R                  " [        SS9   [        SSSSS9  SSS5        g! , (       d  f       g= f)z>Test writing file with no geometry column nor fields -> error.z6You must provide at least a geometry column or a fieldrC   r   N)r2   r   r!   )r<   rN   rm   r    r5   r3   test_write_no_geom_no_fieldsr  b  s4    	F
 	kDT$G	
 
 
rp   write_int64FTr\   	   r   z<OpenFileGDB write support for int64 values for GDAL >= 3.9.0)reason)marksc           
      b   [         R                  " [        R                  S5      /S-  [        S9n[         R                  " / SQSS9[         R                  " / SQSS9[         R                  " / SQSS9[         R                  " / SQS	S9[         R                  " / SQS
S9[         R                  " / SQSS9/n/ SQnSSUS.nU S-  nU(       a  SS0O0 nU(       d
  [
        S:  a  [        R                  " 5       nO[        R                  " [        SS9nU   [        UUU4SS0UDUD6  S S S 5        [        U5      u  ppU(       d  US   R                  S5      US'   US   R                  S5      US'   U	S   US   :X  d   e[         R                  " U	S   US   5      (       d   e[         R                  " X5      (       d   e[        [!        U5      5       HE  nX   R"                  X=   R"                  :X  d   e[         R                  " X   X=   5      (       a  ME   e   g ! , (       d  f       N= f)N*010100000000000000000000000000000000000000r\   r   TFTboolr   int16int32r   float32float64r  r  r  r   r   r!  r_   r   )r   r   r!   ztest.gdbTARGET_ARCGIS_VERSIONARCGIS_PRO_3_2_OR_LATERr  z&Integer64 will be written as a Float64rC   r   OpenFileGDBr   r   r!   )r`   r   bytesfromhexobjectr   
contextlibnullcontextr<   rE   RuntimeWarningr   r   astyper   ranger.   r   )r?   r  r   expected_field_datar   expected_metar   write_paramsctxr0   r1   r2   r   is                 r3   test_write_openfilegdbr3  k  s    	C	DEIQW 	$F3
'*
'*
'*
),
), PO !M *$H AL	 ";<QS  &2$$&ll"J
 
	
 !		

 	
 	
 
 %)N!DX!4Q!7!>!>y!IA 13::7C;-....>>$x.-*ABBBB>>(66663*+,}""&9&<&B&BBBB~~jm-@-CDDDD -- 
s   H  
H.c                 (   US:X  a  [         R                  " S5        [        U5      u  p4pVSUS'   U SU 3-  n[        XuU40 UD6  UR	                  5       (       d   e[        U5      S   S:X  d   e[        XuU4SS	0UD6  [        U5      S   S
:X  d   eg )Nr8   z$Append to .gpkg.zip is not supportedr:   r   r   r   rR   appendTib  )r<   r=   r   r   r>   r
   )r?   r/   r6   r0   r1   r2   r   r   s           r3   test_write_appendr6    s    
k:;$()<$=!DX +DD,&H	(j1D1??Xz*c111 
(j>>>Xz*c111r5   z
driver,ext)GMLz.gmlc                 *   [        U5      u  pEpgU SU 3-  n[        XU4SU0UD6  UR                  5       (       d   e[        USS9S   S:X  d   e[        R
                  " [        5         [        XU4USS.UD6  S S S 5        g ! , (       d  f       g = f)Nr   r   T)force_feature_countr   rR   )r   r5  )r   r   r>   r
   r<   rN   r   )	r?   r/   r   r6   r0   r1   r2   r   r   s	            r3   test_write_append_unsupportedr:    s    $()<$=!DX D,&H	(j@@4@??X48DKKK		'h*QVDQDQ 
(	'	's   *B
Br   )ESRI Shapefiler   r   c           	          [        US/S9u  p4pVSUS'   U S[        U    3-  n[        UUSS 4U Vs/ s H  oSS PM	     snUS.UD6  UR                  5       (       d   egs  snf )	zATest drivers known to work that are not specifically tested abover(   )rj   r:   r   r   Nr   )r   r   )r   r   r   r>   )	r?   r/   r   r0   r1   r2   r   r   fs	            r3   test_write_supportedr>    s     %))<xj$Q!DX
 +DDF!3 455H	! $..:abqE:.	
  ?? /s   A!
c                     [        U5      u  p#pEU S-  n[        R                  " [        SS9   [	        XdU4SS0UD6  SSS5        g! , (       d  f       g= f)z:Test writing using a driver that does not support writing.ztest.topojsonz$does not support write functionalityrC   r   TopoJSONN)r   r<   rN   r   r   r   s          r3   test_write_unsupportedrA    sL    $()<$=!DX/)H	.T	Uh*HZH4H 
V	U	Us   A
Ac                     [        U 5      u  pp4Sn[        SSSS.5        [        R                  " [        SS9   [        XSU40 UD6  S S S 5        g ! , (       d  f       g = f)Nz%s3://non-existing-bucket/test.geojsonrJ   T)AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_NO_SIGN_REQUESTz#Failed to write features to datasetrC   )r   r   r<   rN   r   r   )r/   r0   r1   r2   r   r   s         r3   test_write_gdalclose_errorrF    s\    $()<$=!DX6H !*%.#'	
 
.S	Th*55 
U	T	Ts   A
Ac                    U u  p#pEUu  pgp[         R                  " US   US   5      (       d   e[         R                  " X75      (       d   e[        S [        XY5       5       5      (       d   e[        (       aT  [
        R                  " [
        R                  " U5      [
        R                  " U5      SS9R                  5       (       d   eg g )Nr!   c              3   R   #    U  H  u  p[         R                  " X5      v   M     g 7fNr`   r   .0f1f2s      r3   	<genexpr>&assert_equal_result.<locals>.<genexpr>  s      R4Q&"r~~b%%4Q   %'r   )	tolerance)r`   r   rq   zipr   r^   equals_exactfrom_wkb)
result1result2meta1index1	geometry1field_data1meta2index2	geometry2field_data2s
             r3   assert_equal_resultr`    s    ,3)E9,3)E9>>%/5?;;;;>>&))))RC4QRRRRR{ ##Y')9)9))DPW

#% 	 	 r5   z"ignore:File /vsimem:RuntimeWarning)r   geojson)r   gpkgc                    [        U5      u  pEpgUR                  SS05        U SU 3-  n[        XU4SU0UD6  [        US5       n	U	R                  5       n
S S S 5        [        W
5      n[	        XEXg4U5        g ! , (       d  f       N(= fNr   r;   test.r   rbr   r   r   r   r`  )r?   r/   r   r6   r0   r   r2   r   r   r=  bufferrW  s               r3   test_read_from_bytesri  (  s     )--@(A%DKK),-E#-'H	(j@@4@	h	 
 6lGh;WE	 
	s   A88
Bc                     U u  p[        U5      u  p4pV[        US5       nUR                  5       nS S S 5        [        W5      n	[        X4XV4U	5        g ! , (       d  f       N(= f)Nrf  )r   r   r`  )
rS   pathvsi_pathr0   r   r2   r   r=  rh  rW  s
             r3   test_read_from_bytes_zippedrm  7  sV    ,ND(,X%D	dD	Q 
 6lGh;WE	 
	s   A
A c                     [        U5      u  pEpgUR                  SS05        U SU 3-  n[        XU4SU0UD6  [        US5       n	[        U	5      n
S S S 5        [	        XEXg4W
5        g ! , (       d  f       N= frd  rg  )r?   r/   r   r6   r0   r   r2   r   r   r=  rW  s              r3   test_read_from_file_likero  B  s}     )--@(A%DKK),-E#-'H	(j@@4@	h	q' 
 h;WE 
	s   A((
A6c                 l    [        U 5      u  pp2US   R                  S:X  d   e[        U5      S:X  d   eg )Nr!   r  r   )r   r,   r.   )nonseekable_bytesr0   r1   r2   s       r3    test_read_from_nonseekable_bytesrr  P  s<     12DX>4'''x=Ar5   rb  fgbc           
         [         R                  " [        R                  S5      /S-  [        S9n[         R                  " / SQSS9[         R                  " / SQSS9[         R                  " / SQSS9[         R                  " / SQS	S9[         R                  " / SQS
S9[         R                  " / SQSS9/n/ SQnSSSS.nU SU 3-  n[        XbX440 UD6  [        U5      S   n[        S [        Xs5       5       5      (       d   e[        S [        Xs5       5       5      (       d   e[        / SQ5       H  u  nu  p[         R                  " / SQU	S9/nU SU SU 3-  n[        XbUS/40 UD6  [        U5      S   S   n[         R                  " U[         R                  " / SQ5      5      (       d   eUR                  U
:X  a  M   e   g )Nr  r\   r   r  r  r   r  r  r   r   r!  r"  r_   r   Fr   r   spatial_indexre  c              3   R   #    U  H  u  p[         R                  " X5      v   M     g 7frI  rJ  rK  s      r3   rO  5test_read_write_data_types_numeric.<locals>.<genexpr>j  s      L4K&"r~~b%%4KrQ  c              3   X   #    U  H   u  pUR                   UR                   :H  v   M"     g 7frI  r   rK  s      r3   rO  rx  k  s!     J2Irxx288#2Is   (*))int8r  )uint8r  )uint16r  )uint32r   )uint64r   r   .colr   )r`   r   r&  r'  r(  r   r   rq   rS  	enumerater   r   )r?   r6   r2   r   r!   r0   r   resultr2  r   result_dtypes              r3   "test_read_write_data_types_numericr  V  s    xx	C	DEIQWH 	$F3
'*
'*
'*
),
),J GF$[5QDE#-'H	(j9D9(^AFLC4KLLLLLJ#f2IJJJJJ %.	
%  E hhy67
QCq..h*ug>>h"1%~~fbhhy&9::::|||+++%r5   c           
         [         R                  " SS/SS9[         R                  " SS/SS9[         R                  " SS/S	S9[         R                  " SS/S
S9[         R                  " SS/S
S9[         R                  " [         R                  " S5      S /S	S9/n/ SQn[         R                  " [        R	                  S5      /S-  [
        S9nSSSS.nU S-  n[        XSX40 UD6  [        U5      S   n[        U5       H_  u  pxUS:X  a3  [         R                  " Xg   X   R                  S	5      5      (       d   eM>  [         R                  " Xg   X   SS9(       a  M_   e   g )Nz
2005-02-01z
2005-02-02zdatetime64[D]r   z2001-01-01T12:00z2002-02-03T13:56:03zdatetime64[s]z2002-02-03T13:56:03.072datetime64[ms]zdatetime64[ns]z2002-02-03T13:56:03.072123456NaT)datetime64_ddatetime64_sdatetime64_msdatetime64_nsdatetime64_precise_nsdatetime64_ms_natr  rM   r_   r   Fru  r   r\   r  T)	equal_nan)r`   r   
datetime64r&  r'  r(  r   r   r  r   r,  )	r?   r   r!   r2   r0   r   r  idxfields	            r3   test_read_write_datetimer    s^   
,-_E
$&;<OT
!:;CS	
 	!:;CS	
 	!@A"	

 	"--&-5EFJ F xx	C	DEIQWH %[5QD+%H	(j9D9(^AF'
++>>&+z/E/EFV/WXXXX>>&+z$OOOO (r5   c                 j   [         R                  " [        R                  S5      /S-  [        S9n[         R                  " / SQSS9/nS/nSSS	S
.nU SU 3-  n[        XbX440 UD6  [        U5      S   n[         R                  " Xs5      (       d   eUS   R                  US   R                  :X  d   eg )Nr  r\   r   )r   l   o] r   overflow_int64r_   r   Fru  re  r   )	r`   r   r&  r'  r(  r   r   r   r   )r?   r6   r2   r   r!   r0   r   r  s           r3   test_read_write_int64_larger    s    
 xx	C	DEIQWH ((.g>?JF$[5QDE#-'H	(j9D9(^AF>>&----!9??jm11111r5   c                     [        U 5      S   n[        U5       HQ  u  p#[        R                  " US   5      (       d   eUS:X  a  UR                  S:X  d   eM?  UR                  S:X  a  MQ   e   g )Nr\   rL   r  r   r!  )r   r  r`   isnanr   )test_gpkg_nullsr!   r2  r  s       r3   &test_read_data_types_numeric_with_nullr    sh    /"1%Ff%xxb	"""" 6;;)+++;;)+++ &r5   c                     [        U 5      S   S   nUR                  S:X  d   eUS   [        R                  " S5      :X  d   eUS   [        R                  " S5      :X  d   eg )Nr\   r   r  2020-01-01 09:00:00.123r   2020-01-01 10:00:00.000)r   r   r`   r  )datetime_filer  s     r3   test_read_datetime_millisecondr    sa    "1%E;;****8r}}%>????8r}}%>????r5   c                    U S-  n[        US5       nUR                  S5        UR                  S5        S S S 5        [        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Ntest.unsupportedwcolumn1,column2
data1,data2z0.* by prefixing the file path with '<DRIVER>:'.*rC   )r   r   r<   rN   r   r   )r?   test_unsupported_pathfiles      r3   test_read_unsupported_extr    sv    $'99	#S	)T

&'

=! 
* 
Q
 	"#
 
	 
*	)
 
s   #A+A<+
A9<
B
c                     U S-  n[        US5       nUR                  S5        UR                  S5        S S S 5        [        SU 35      u      p4[        U5      S:X  d   eUS   S:X  d   eg ! , (       d  f       N== f)	Nr  r  r  r  zCSV:rM   r   data1)r   r   r   r.   )r?   r  r  r1   r   s        r3   %test_read_unsupported_ext_with_prefixr    s    $'99	#S	)T

&'

=! 
* &;%<=>Aq!z?aa=G### 
*	)s   #A,,
A:c                 x   [        U 5      S   S   nUR                  S:X  d   eUS   [        R                  " S5      :X  d   eUS   [        R                  " S5      :X  d   e[        U SS9S   S   nUR                  S	:X  d   e[        S
:  a  US   S:X  d   eUS   S:X  d   eg US   S:X  d   eUS   S:X  d   eg )Nr\   r   r  r  r   r  T)datetime_as_stringr(  )r\      r   z2020/01/01 09:00:00.123-05z2020/01/01 10:00:00-05z2020-01-01T09:00:00.123-05:00z2020-01-01T10:00:00-05:00)r   r   r`   r  r   )datetime_tz_filer  s     r3   test_read_datetime_as_stringr    s    !"1%a(E;;****8r}}%>????8r}}%>????!d;A>qAE;;(""")#Qx7777Qx3333Qx::::Qx6666r5   ra  c                    [         R                  " [        R                  S5      S /[        S9n[         R                  " SS/SS9/nS/nSSS	.nUS
:X  a  SUS'   U SU 3-  n[        XbX440 UD6  [        U5      SS  u  px[         R                  " Xr5      (       d   e[         R                  " US   US   5      (       d   eg )Nr  r   r   rM   r  r  r_   r   r   r   rb  Frv  re  r   )r`   r   r&  r'  r(  r   r   r   )	r?   r6   r2   r   r!   r0   r   r  result_fieldss	            r3   test_read_write_null_geometryr    s     xx	C	DdKH ((Aq612JWF$[9D
f} %_E#-'H	(j9D9%)(^AB%7"O>>/4444>>-*JqM::::r5   r   r   r!  c                 >   [         R                  " [        R                  S5      /S-  [        S9n[         R                  " S[         R
                  /US9/nS/nSSS.nU S	-  n[        XbX440 UD6  [        U5       nUR                  5       nS S S 5        S
W;   d   eUS:X  a  [        R                  " [        SS9n	O[        R                  " 5       n	U	   [        XbX440 UDSS0D6  S S S 5        [        U5       nUR                  5       nS S S 5        SU;   d   e[        UUUU40 UDSSS.D6  [        U5       nUR                  5       nS S S 5        SU;   d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ny= f! , (       d  f       NJ= f)Nr  rM   r         ?r  r_   r   r  test.geojsonz{ "col": null }r   z$NaN of Infinity value found. SkippedrC   nan_as_nullFz"properties": { }YES)r  WRITE_NON_FINITE_VALUESz{ "col": NaN })r`   r   r&  r'  r(  nanr   r   r   r<   rE   r+  r)  r*  )
r?   r   r2   r   r!   r0   r   r=  contentr1  s
             r3   test_write_float_nan_nullr    sz    xx	C	DEIH ((C=67JWF$[9D.(H 
(j9D9	h1&&( 
''' 	ll>1WX$$&	h*PP%P 
	h1&&( 
'))) 
	
   % 
h1&&( 
w&&&9 
 
	 
s0   <EE,9E=9F
E),
E:=
F
FArrowzArrow driver is not availablec                    SS K n[        R                  " [        R	                  S5      /S-  [
        S9n[        R                  " S[        R                  /SS9/nS/nSS	S
.nU S-  n[        XbX44SS0UD6  UR                  R                  U5      nUS   R                  5       R                  5       SS/:X  d   e[        XbX44SSS.UD6  UR                  R                  U5      nUS   R                  5       R                  5       SS/:X  d   e[        R                  " S5      nUR                  US   5      R                  5       SS/:X  d   eg )Nr   r  rM   r   r  r!  r  r_   r   r  z
test.arrowr   r  FT)r   r  zpyarrow.compute)pyarrow.featherr`   r   r&  r'  r(  r  r   feather
read_tableis_null	to_pylistr<   importorskipis_nan)	r?   pyarrowr2   r   r!   r0   fnametablepcs	            r3   test_write_float_nan_null_arrowr  >  sQ   
  xx	C	DEIH ((C=	:;JWF$[9D|#E 
%:FgFFOO&&u-E<!++-%>>> 
4;RV OO&&u-E<!++-%???			.	/B99U5\",,.5$-???r5   r   r   c                    [        U 5      u  p#pEUR                  SS05        [        5       n[        XdU4USS.UD6  [	        UR                  5       5      S:  d   e[        U5      S   S   S:X  d   e[        U5      u  psp[        R                  " US   US   5      (       d   e[        R                  " X5      (       d   e[	        U5      [	        U5      :X  d   eg )Nr   r:   r   r   r   r!   )	r   r   r   r   r.   	getbufferr	   r`   r   )
r/   r   r0   r1   r2   r   rh  actual_metaactual_geometryactual_field_datas
             r3   test_write_memoryr  ^  s     %))<$=!DXKK.12YF	&JLvVLtLv!"Q&&&vq!!$...9=f6KO>>+h/h@@@@>>+88883x=000r5   c                     [        U 5      u  pp4[        5       n[        R                  " [        SS9   [        XSU4S SS.UD6  S S S 5        g ! , (       d  f       g = f)Nz2driver must be provided to write to in-memory filerC   r   r   r   r   r<   rN   rm   r   r/   r0   r1   r2   r   rh  s         r3   !test_write_memory_driver_requiredr  q  sS    $()<$=!DXYF	B
 	f
N4vNN	
 
 
s   A
Ar;  r%  c                     [        U 5      u  p#pE[        5       n[        R                  " [        SU 3S9   [        UUU4USSS.UD6  S S S 5        g ! , (       d  f       g = f)Nz/writing to in-memory file is not supported for rC   r   Tr   rK   r5  r  r/   r   r0   r1   r2   r   rh  s          r3   $test_write_memory_unsupported_driverr  |  so    $()<$=!DXYF	KF8T
 		
 	
 	

 
 
s   A
Ac                     [        U 5      u  p#pEUR                  SS05        [        5       n[        R                  " [
        SS9   [        UUU4USSS.UD6  S S S 5        g ! , (       d  f       g = f)Nr   r:   z+append is not supported for in-memory filesrC   r   Tr  )r   r   r   r<   rN   NotImplementedErrorr   r  s          r3   $test_write_memory_append_unsupportedr    sy    $()<$=!DXKK.12YF	#P
 		
 	
 	

 
 
s   A!!
A/c                     [        U 5      u  pp4[        S5      n[        R                  " [        SS9   [        XSU4SSS.UD6  S S S 5        g ! , (       d  f       g = f)Ns   0000z5writing to existing in-memory object is not supportedrC   r   r   r   )r   r   r<   rN   r  r   r  s         r3   &test_write_memory_existing_unsupportedr    sV    $()<$=!DXWF	E
 	f
S9FSdS	
 
 
s   A
Ac           	      (   [        U5      u  p#pE[        R                  " [        SS9   [	        U S-  S5       n[        XdU4SSS.UD6  SSS5        SSS5        [        R                  " [        SS9   [        U S	-  S
5       nUR	                  SS
5       n[        XdU4SSS.UD6  SSS5        SSS5        SSS5        g! , (       d  f       N|= f! , (       d  f       N= f! , (       d  f       NA= f! , (       d  f       NJ= f! , (       d  f       g= f)zEVerify that writing to an open file handle is not currently supportedz3writing to an open file handle is not yet supportedrC   r  wbr   r   r   Nztest.geojson.zipr  )r   r<   rN   r  r   r   r   )r?   r/   r0   r1   r2   r   r=  zs           r3   test_write_open_file_handler    s     %))<$=!DX 
#X
 (^+T2a!zR)6RTR 3
 
#X
 X 22C8A,a:VivVQUV - 9
 
	 32
 
 -, 98
 
s^   CB?	C2DC2C!&C2.D?
C		C
C!
C/+C22
D 	<D
D)rs  rb  ra  zread_encoding,write_encodingwin32z&must specify write encoding on Windowsr    )Nr    )r    r    c                 &   [         R                  " [        R                  S5      /[        S9nSnSnSn[         R                  " U/[        S9[         R                  " U/[        S9[         R                  " U/[        S9/nXVU/n	SSUS.n
U S	U 3-  n[        XX40 U
D6  [        XS
9u  n  p[         R                  " XS   5      (       d   e[         R                  " X5      (       d   e[         R                  " U	[        XS
9S   5      (       d   eg )Nr  r      العربية   ᓀᐦᐃᔭᐍᐏᐣ   中文r_   r   r   r   r   re  r   r!   )	r`   r   r&  r'  r(  r   r   r   r
   )r?   r6   read_encodingwrite_encodingr2   arabiccreemandarinr   r!   r0   r   r  r1   r  s                  r3   test_encoding_ior    s   0 xx	C	DEVH F"DH
&(
$v&
(6*J
 H%F$[nUDE#-'H	(j9D9+/+Q(KA>>&h"78888>>*8888>>&)H"Mh"WXXXXr5   c                 X   [         R                  " [        R                  S5      /[        S9nSnSnSn[         R                  " U/[        S9[         R                  " U/[        S9[         R                  " U/[        S9/nUS S US S U/nSS	S
S.n	U S-  n
[        XXx40 U	D6  [        XS9u  n  p[         R                  " XS   5      (       d   e[         R                  " X}5      (       d   e[         R                  " U[        XS9S   5      (       d   eUb  U
R                  S5      R                  5         [        XS9u  n  p[         R                  " XS   5      (       d   e[         R                  " X}5      (       d   e[         R                  " U[        XS9S   5      (       d   eg g )Nr  r   r  r  r  r#   r\   r_   r   r    r  r   r  r!   r   )r`   r   r&  r'  r(  r   r   r   r
   r   unlink)r?   r  r  r2   r  r  r  r   r!   r0   r   r  r1   r  s                 r3   test_encoding_io_shapefiler    s   . xx	C	DEVH F"DH
&(
$v&
(6*J Raj$r(H-F$[gND*$H 
(j9D9+/+Q(KA>>&h"78888>>*8888>>&)H"Mh"WXXXX  V$++-/3H/U,Q~~f(&;<<<<~~j<<<<~~Ih?I
 
 	
 
 !r5   c                 J   Uu  p4[         R                  " [        R                  S5      /[        S9n[         R                  " U/[        S9/nU/nSSUS.nU SU 3-  n	[        XXg40 UD6  [        R                  " [        5         [        U	5        SSS5        [        R                  " [        5         [        U	5        SSS5        [        XS9u  n
  pU
S	   S
   U:X  d   eUS
   U:X  d   e[        XS9S	   S
   U:X  d   eg! , (       d  f       Nx= f! , (       d  f       N[= f)a7  Verify that we write non-UTF data to the data source

IMPORTANT: this may not be valid for the data source and will likely render
them unusable in other tools, but should successfully roundtrip unless we
disable writing using other encodings.

NOTE: FlatGeobuff driver cannot handle non-UTF data in GDAL >= 3.9
r  r   r_   r   r  re  Nr  r!   r   )r`   r   r&  r'  r(  r   r<   rN   UnicodeDecodeErrorr   r
   )r?   r6   encoded_textr   textr2   r   r!   r0   r   r  r1   r  s                r3   test_non_utf8_encoding_ior  4  s    "NH xx	C	DEVH ((D601JVF$[hODE#-'H	(j9D9 
)	*X 
+ 
)	*( 
+ ,0+L(KAx #t+++Q4'''X1(;A>$FFF 
+	* 
+	*s   D3D
D
D"c                 R   Uu  p#[         R                  " [        R                  S5      /[        S9n[         R                  " U/[        S9/nU/nSSUS.nU S-  n[        XXV40 UD6  [        U5      u  n	  pU	S   S   U:X  d   eUS   U:X  d   e[        U5      S   S   U:X  d   eUR                  S	5      R                  5         UR                  U5      R                  S
5      n[        U5      u  n  pUS   S   U:X  d   eUS   U:X  d   e[        U5      S   S   U:X  d   e[        XS9u  n	  pU	S   S   U:X  d   eUS   U:X  d   e[        XS9S   S   U:X  d   e [        SS05        [        XS9n
[        S5      S:X  d   e [        SS 05        g ! [        SS 05        f = f)Nr  r   r_   r   r  r   r!   r   r   r   r  SHAPE_ENCODINGCP1254)r`   r   r&  r'  r(  r   r   r
   r   r  encodedecoder   r   )r?   r  r   r  r2   r   r!   r0   r   r  r1   r  miscodedbad_metabad_field_datas                  r3   #test_non_utf8_encoding_io_shapefiler  [  s    !NH xx	C	DEVH ((D601JVF$[hOD*$H	(j9D9
 ,0>(KAx #t+++Q4'''Xx(+t333  '') {{8$++L9H%)(^"HaHa H,,,!(((Xx(+x777 ,0+L(KAx #t+++Q4'''X1(;A>$FFF:!18 <=-%&678CCC 	 !14 89!14 89s   !'F F&c                 X   [         R                  " [        R                  S5      /S-  [        S9n[         R                  " / SQSS9/n[         R                  " / SQ5      /nS/nSS	S
.nU S-  n[        XaX$U40 UD6  [        U5      SS  u  px[         R                  " Xq5      (       d   e[         R                  R                  US   [         R                  " S[         R                  S/5      5        [         R                  " SS/5      /n[        R                  " [        5         [        XaX$U40 UD6  S S S 5        [         R                  " / SQ5      /S-  n[        R                  " [        5         [        XaX$U40 UD6  S S S 5        g ! , (       d  f       N\= f! , (       d  f       g = f)Nr  r\   r   r   r  )FTFr  r_   r   r  r  rM   r   r   FT)r`   r   r&  r'  r(  r   r   r   testingassert_allcloser  r<   rN   rm   )	r?   r2   r   
field_maskr!   r0   r   r  r  s	            r3   test_write_with_maskr    sX   xx	C	DEIH ((9G45J((/01JWF$[9D.(H	(j*EE%)(^AB%7"O>>/4444JJ}Q/1bffa.1IJ ((E4=)*J	z	"h*jIDI 
# ((/01A5J	z	"h*jIDI 
#	" 
#	"
 
#	"s   %F
2F

F
F)c                 l   [        U 5       u  p[        U[        5      (       d   e[        U[        R                  R
                  5      (       d   eUR                  5       n[        R                  R                  [        R                  " U5      S5      S:X  d   e S S S 5        g ! , (       d  f       g = f)Ns   arrow_array_streamr   )r   
isinstancedictpyogrio_io_ArrowStream__arrow_c_stream__ctypes	pythonapiPyCapsule_IsValid	py_object)r/   r0   readercapsules       r3   0test_open_arrow_capsule_protocol_without_pyarrowr    s     
'	(NT$%%%%&'++":":;;;;++-..  )+@ 	
 
)	(	(s   BB%%
B3zpyarrow is installedc                     [         R                  " [        5         [        U SS9 n S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NT)use_pyarrow)r<   rN   ImportErrorr   rn   s     r3    test_open_arrow_error_no_pyarrowr    s=    
 
{	#+>! ? 
$	#>> 
$	#s   A
9A

A	A


A)wr)  r  r   sysior   zipfiler   numpyr`   r   r  r   r   r   r	   r
   r   pyogrio._compatr   r   r   pyogrio.errorsr   r   r   pyogrio.rawr   r   r   pyogrio.tests.conftestr   r   r   r   r   r<   r^   r  r4   markparametrizerA   rH   rP   rT   rW   rb   rg   ro   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  paramskipifr3  r6  r:  valuesr>  rA  rF  r`  filterwarningsri  rm  ro  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  platformr  r  r  r  r  r  r  )r   s   0r3   <module>r&     s4      
       A @ H H / /  	
:. (+ )+4*+$  

 !	NO	F8R(	>f@UV	i 89k:RS	KK 2s)4K 5K"4
?3
63
 !:;- <-
5.. 
!Q02- -
 X X
 	UG$	:UENK "
	
 "	
2*3 4* . . . .G(.J*A"  dL%9:4 ;4$$&:<!@##LH ++$$ 9,U % 	
	<E<E~ (2 )2, '89R :R  nn&&F>> 	&*I6$" @A(>@P'QR
F S B
FF @A(>@P'QR	F S B	F 0&, 1&,R(PV 02 12$,@	$$7&  34; 5;& 9i"89)' :)'X <>!*I  @ @8 @AIv#671 8 B1"O $4m#DE
 F
& Iv#67
 8
(TW*  :;"++$$'0X % 	
 	++$$'0X % 	
 	!*Y+ <,Y2 "++$$'0X % 	
 	++$$'0X % 	
 	!*(
+*(
V  34#G 5#GL1:hJ8
  K(>? @s,  		zs   ,Y6 
Z
Z
6Z ?Z 