
    Ipjb                        S SK r 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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)\&RT                  RW                  S\"5      S 5       r,S r-S r.S r/S r0\%S 5       r1S r2S r3\&RT                  RW                  SSS/ SQ4SS// 4S/ SQSS/4SSS/SS/4/5      S 5       r4\&RT                  RW                  S S!S"/5      S# 5       r5S$ r6S% r7S& r8S' r9S( r:\&RT                  RW                  S)/ S*Q5      S+ 5       r;S, r<S- r=S. r>\%\&RT                  RW                  S/S0S S /S1.S2S3/5      S4 5       5       r?\%S5 5       r@\%\&RT                  RW                  S6S7S8/4S9S:S;/4S</ S=Q4S>/ S?Q4/5      S@ 5       5       rA\%SA 5       rB\%SB 5       rCSC rDSD rESE rFSF rGSG rH\&RT                  RW                  SHSSI/5      SJ 5       rISK rJSL rKSM rLSN rMSO rNSP rOSQ rP\&RT                  RW                  SRSS\&R                  " ST\&RT                  R                  \SU:  SVSW9SX9/5      SY 5       rS\&RT                  RW                  S\"5      SZ 5       rT\&RT                  RW                  S[S\/5      S] 5       rU\&RT                  RW                  S^\"R                  " 5        V s1 s H  n U S_;  d  M  U iM     sn 5      S` 5       rWSa rXSb rYSc rZ\&RT                  R                  Sd5      \&RT                  RW                  S[SeSf/5      Sg 5       5       r\Sh r]\&RT                  R                  Sd5      \&RT                  RW                  S[SeSf/5      Si 5       5       r^Sj r_\&RT                  RW                  SSkSl/5      Sm 5       r`Sn ra\&RT                  RW                  SSkSl/5      So 5       rbSp rcSq rdSr reSs rfSt rg\&RT                  RW                  SSkSu/5      Sv 5       rh\&RT                  RW                  SwSxSy/5      Sz 5       ri\$\&RT                  R                  S{\" 5       ;  S|SW9S} 5       5       rj\&RT                  R                  Sd5      \&RT                  RW                  S^S~S/5      S 5       5       rkS rl\&RT                  RW                  S^SS/5      S 5       rm\&RT                  RW                  S^S~S/5      S 5       rnS roS rp\&RT                  RW                  S/ SQ5      \&RT                  RW                  S\&R                  " SS\&RT                  R                  \R                  S:H  SSW9SX9\&R                  " SS\&RT                  R                  \R                  S:H  SSW9SX9SS/5      S 5       5       rr\&RT                  RW                  S\&R                  " SS\&RT                  R                  \R                  S:H  SSW9SX9\&R                  " SS\&RT                  R                  \R                  S:H  SSW9SX9SS/5      S 5       rs\&RT                  RW                  SSkSu/5      S 5       rtS ruS rvS rw\&RT                  R                  \SSW9S 5       rxg! \( 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GDAL_GE_313HAS_PYARROWHAS_SHAPELY)DataLayerErrorDataSourceErrorFeatureError)
open_arrowreadwrite)
DRIVER_EXTDRIVERSprepare_testfilerequires_pyarrow_apirequires_shapelyc                 R   [        U 5      u  pp4US   S:X  d   e[        S:  a  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   r   shapetolistlen)naturalearth_lowresmeta_geometryr%   s        U/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/pyogrio/tests/test_raw_io.py	test_readr8   (   s     $%8 9DX;+%%% g% 	_*	
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_dirr:   r   r   r!   )MultiPolygonr"   Unknownr#   r$   r%   r&   r(   r'   r   )	r   pytestskipr   existsr   r0   r1   r2   )tmp_pathr3   r:   testfiler4   r5   r6   r%   s           r7   test_read_autodetect_driverrE   C   s     k**>? 33OH?? $XDX;+%%% $JJJJ
w&&&>4'''>  " '    v;!x=Cq	N***r9   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    r7   )test_read_arrow_unspecified_layer_warningrL   ^   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 openedrG   invalid)layerzLayer '-1' could not be openedzLayer '2' could not be opened   )r@   raisesr   r   r3   s    r7   test_read_invalid_layerrT   d   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[         S:  a  SOSn[        [        U 5      SU//5      (       d   e[        U 5      S   nUR                  S:X  d   eg )Nr   r"   r>   r3   rQ   )   )r   r   r	   r   r0   )naturalearth_lowres_vsir5   	geom_typer6   s       r7   test_vsi_read_layersrY   o   sg    !8A-7	^I+,0Ey/Q.R    +,Q/H>>V###r9   c                 (    [        U SS9S   nUb   eg )NF)read_geometryrQ   )r   )r3   r6   s     r7   test_read_no_geometryr\   z   s     'u=a@Hr9   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   )r[   maskrQ   r   CAN)r   shapelyPointnpr   r3   r6   r%   s      r7   test_read_no_geometry__maskrf      sZ    ]]4$ b	
H >>&)eW----r9   c                 r    [        U SSS9SS  u  p[        R                  " US   S/5      (       d   eUb   eg )NF)     @[     K@rh   ri   )r[   bboxrQ   r   ra   )r   rd   r   re   s      r7   test_read_no_geometry__bboxrk      sO    ) b	
H >>&)eW----r9   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-emptyrG   Fcolumnsr[   return_fidsr@   rR   
ValueErrorr   r3   r5   s     r7   (test_read_no_geometry_no_columns_no_fidsrs      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)rn   r[   r%   zFailed for )r   r   )r3   descrrn   exp_columnsr4   _fids	_geometry_fieldss           r7   test_read_columnsr      s=     '+E'#D tH~{33J{5'5JJ3r9   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 )NrQ   r   r   rP   )r   maxr2   rd   r   )naturalearth_lowres_all_extr   expected_geometryexpected_fieldsr6   r%   expected_counts          r7   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Jr9   c                 ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)Nz'skip_features' must be >= 0rG   rP   r   rp   rS   s    r7    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 )NrQ   max_featuresr   rP   r   r2   rd   r   )r3   r   r   r6   r%   s        r7   test_read_max_featuresr      s    )-.A)B12)F&/a@DHx=Avay>Q>>(bq$9::::>>&*ob&9"1&=>>>>r9   c                 ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)Nz'max_features' must be >= 0rG   rP   r   rp   rS   s    r7   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 whererQ   rV   r'   r   iso_a3 = 'CAN'   r   ra   z+POP_EST >= 10000000 AND POP_EST < 100000000K   i i ziso_a3 = 'INVALID')r   r2   minr   re   s      r7   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r9   c                 ~    [         R                  " [        SS9   [        U SS9  S S S 5        g ! , (       d  f       g = f)NzInvalid SQLrG   rN   r   rp   rS   s    r7   test_read_where_invalidr      s'    	z	7 	2 
8	7	7r   rj   ))r   )r   rQ   r   rQ   r   c                 |    [         R                  " [        SS9   [        XS9  S S S 5        g ! , (       d  f       g = f)NzInvalid bboxrG   rj   rp   )r3   rj   s     r7   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   rQ   r   i   ir   r   PANCRIr   )r   r6   r%   s      r7   test_read_bboxr     s|    7>VW	H x=A7>OPQRQSTHx=A>>&)eU^4444r9   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'))rj   sqlr   r   ra   r   r   r%   s     r7   test_read_bbox_sqlr     sT    #!R 		F
 vay>Q>>&)eW----r9   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'))rj   r   r   r   ra   r   r   s     r7   test_read_bbox_wherer     sT    #!, 		F
 vay>Q>>&)eW----r9   r`   rc   )typecoordinatesz({"type": "Point", "coordinates": [0, 0]}rN   c                 |    [         R                  " [        SS9   [        XS9  S S S 5        g ! , (       d  f       g = f)Nz+'mask' parameter must be a Shapely geometryrG   r`   rp   )r3   r`   s     r7   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'rG   r   r^   r_   )rj   r`   )r@   rR   rq   r   rb   rc   rS   s    r7   test_read_bbox_mask_invalidr   1  s8    	z)L	M '8w}}TSU?VW 
N	M	Ms   !A
Azmask,expectedzPOINT (-105 55)ra   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   rQ   r   )rb   from_wktr   rd   r   r2   )r   r`   expectedr6   r%   s        r7   test_read_maskr   7  sZ    6 D!D7CABGH>>&)X....x=CM)))r9   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   ra   r   rb   boxr2   rd   r   r   s     r7   test_read_mask_sqlr   Z  sc    #[[r4,R 		F
 vay>Q>>&)eW----r9   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   ra   r   r   s     r7   test_read_mask_wherer   e  sc    #[[r4,, 		F
 vay>Q>>&)eW----r9   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ro   r   )r   r   r'   )fidsro   r   r   rP   )r   rd   arrayr2   r   )	r3   expected_fidsr   r   subsetr   indexr6   r%   s	            r7   test_read_fidsr   p  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 +r9   c                 L   [         R                  " [        [        R                  " S5      S9   [        U S/S9  S S S 5        [         R                  " [        [        R                  " S5      S9   [        U S/S9  S S S 5        g ! , (       d  f       NP= f! , (       d  f       g = f)NzAAttempt to read shape with feature id (-1) out of available rangerG   rP   )r   zBAttempt to read shape with feature id (200) out of available ranger   )r@   rR   r   reescaper   rS   s    r7   test_read_fids_out_of_boundsr     s    	iiO

 	 t,
 
iiP

 	 u-
 

 

 
s   B/B
B
B#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 ofrG   r   r   )r   r   )it   r   -   )r   rj   r'   )r   r   )r   r   )r   r   -C6?r   r   )r   r`   )r@   rR   rq   r   r   rb   rc   rS   s    r7   #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   TrQ   )ro   r   r   r   int64dtype)r   r   rd   r   r   r   )r3   r   s     r7   test_read_return_fidsr     s    #$Q'D<<#7:D<<#QUVW	D ::!!!>>$!Qw ?@@@@r9   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 )NFTrm   rV   r   )r   r2   )r3   r5   r   r6   
field_datas        r7   test_read_return_only_fidsr     sX    $(Ru$%!AX t9z?ar9   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   rB   with_suffixopen)rC   r3   r#   r4   r5   r6   r   filenamer:   expected_encodingcpg_fileresult_encodings               r7   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   rB   rC   r3   r4   r5   r6   r   r   s          r7   test_write_gpkgr     sT    $()<$=!DXKK.12+%H	(j@@4@??r9   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   rO   second)r   r   rB   rd   r   r	   r   s          r7   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   r9   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   rB   jsonloadsr   r2   set
differencekeys)rC   r3   r4   r5   r6   r   r   datas           r7   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    r9   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   rV   r.   r/   )r   r   rB   r0   r2   rC   r3   r4   r5   r6   r   r   r%   s           r7   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9r9   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   rV   r   r   rB   r0   r1   r2   r  s           r7   test_write_no_geomr  &  s     %))<$=!DXH D +%H	(j@@4@ ?? $XDX; (((
w&&&>4'''>  " '    v;!vay>S   r9   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   rV   r  )
rC   r3   r4   r5   r6   r   r   result_metaresult_geometryresult_field_datas
             r7   test_write_no_geom_datar  F  s    %))<$=!DX H +%H	(j@@4@ ??9=h6KOu%%%'///z"g---x &&$...x '') .     !Q&&& #$+++"""r9   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 fieldrG   r   N)r6   r   r%   )r@   rR   rq   r    r9   r7   test_write_no_geom_no_fieldsr  l  s4    	F
 	kDT$G	
 
 
rt   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'  rc   r   )r!   r   r%   ztest.gdbTARGET_ARCGIS_VERSIONARCGIS_PRO_3_2_OR_LATERr  z&Integer64 will be written as a Float64rG   r   OpenFileGDBr   r   r%   )rd   r   bytesfromhexobjectr   
contextlibnullcontextr@   rI   RuntimeWarningr   r   astyper   ranger2   r   )rC   r  r   expected_field_datar   expected_metar   write_paramsctxr4   r5   r6   r   is                 r7   test_write_openfilegdbr9  u  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 )Nr<   z$Append to .gpkg.zip is not supportedr>   r!   r  r  rV   appendTib  )r@   rA   r   r   rB   r
   )rC   r3   r:   r4   r5   r6   r   r   s           r7   test_write_appendr<    s    
k:;$()<$=!DX +DD,&H	(j1D1??Xz*c111 
(j>>>Xz*c111r9   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  rV   )r   r;  )r   r   rB   r
   r@   rR   r   )	rC   r3   r   r:   r4   r5   r6   r   r   s	            r7   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,   )rn   r>   r!   r  Nr   )r   r   )r   r   r   rB   )	rC   r3   r   r4   r5   r6   r   r   fs	            r7   test_write_supportedrD    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 functionalityrG   r   TopoJSONN)r   r@   rR   r   r   r   s          r7   test_write_unsupportedrG    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.geojsonrN   T)AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_NO_SIGN_REQUESTz#Failed to write features to datasetrG   )r   r   r@   rR   r   r   )r3   r4   r5   r6   r   r   s         r7   test_write_gdalclose_errorrL    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rd   r   .0f1f2s      r7   	<genexpr>&assert_equal_result.<locals>.<genexpr>'  s      R4Q&"r~~b%%4Q   %'r   )	tolerance)rd   r   ru   zipr   rb   equals_exactfrom_wkb)
result1result2meta1index1	geometry1field_data1meta2index2	geometry2field_data2s
             r7   assert_equal_resultrf  !  s    ,3)E9,3)E9>>%/5?;;;;>>&))))RC4QRRRRR{ ##Y')9)9))DPW

#% 	 	 r9   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   rf  )rC   r3   r   r:   r4   r   r6   r   r   rC  bufferr]  s               r7   test_read_from_bytesro  2  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)Nrl  )r   r   rf  )
rW   pathvsi_pathr4   r   r6   r   rC  rn  r]  s
             r7   test_read_from_bytes_zippedrs  A  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rj  rm  )rC   r3   r   r:   r4   r   r6   r   r   rC  r]  s              r7   test_read_from_file_likeru  L  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   r0   r2   )nonseekable_bytesr4   r5   r6   s       r7    test_read_from_nonseekable_bytesrx  Z  s<     12DX>4'''x=Ar9   rh  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(  rc   r   Fr!   r   spatial_indexrk  c              3   R   #    U  H  u  p[         R                  " X5      v   M     g 7frO  rP  rQ  s      r7   rU  5test_read_write_data_types_numeric.<locals>.<genexpr>t  s      L4K&"r~~b%%4KrW  c              3   X   #    U  H   u  pUR                   UR                   :H  v   M"     g 7frO  r   rQ  s      r7   rU  r~  u  s!     J2Irxx288#2Is   (*))int8r$  )uint8r$  )uint16r%  )uint32r   )uint64r   r  .colr   )rd   r   r,  r-  r.  r   r   ru   rY  	enumerater   r   )rC   r:   r6   r   r%   r4   r   resultr8  r   result_dtypes              r7   "test_read_write_data_types_numericr  `  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::::|||+++%r9   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!  rQ   rc   r   Fr{  r   r   r  T)	equal_nan)rd   r   
datetime64r,  r-  r.  r   r   r  r   r2  )	rC   r   r%   r6   r4   r   r  idxfields	            r7   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 (r9   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_int64rc   r   Fr{  rk  r   )	rd   r   r,  r-  r.  r   r   r   r   )rC   r:   r6   r   r%   r4   r   r  s           r7   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1r9   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   rP   r  r&  r'  )r   r  rd   isnanr   )test_gpkg_nullsr%   r8  r  s       r7   &test_read_data_types_numeric_with_nullr    sh    /"1%Ff%xxb	"""" 6;;)+++;;)+++ &r9   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   rd   r  )datetime_filer  s     r7   test_read_datetime_millisecondr    sa    "1%E;;****8r}}%>????8r}}%>????r9   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,data2z, by prefixing the file path with '<DRIVER>:'rG   )r   r   r@   rR   r   r   )rC   test_unsupported_pathfiles      r7   test_read_unsupported_extr    sv    $'99	#S	)T

&'

=! 
* 
M
 	"#
 
	 
*	)
 
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:rQ   r   data1)r   r   r   r2   )rC   r  r  r5   r   s        r7   %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   rd   r  r   )datetime_tz_filer  s     r7   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6r9   rg  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   rQ   r%  r  rc   r   r!   r   rh  Fr|  rk  r   )rd   r   r,  r-  r.  r   r   r   )	rC   r:   r6   r   r%   r4   r   r  result_fieldss	            r7   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::::r9   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        [        (       a	  S
W;   d   eO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        [        (       a	  SU;   d   eO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        [        (       a	  SU;   d   eg SU;   d   eg ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N_= f)Nr!  rQ   r         ?r  rc   r   r  test.geojsonz{"col":null}z{ "col": null }r&  z$NaN of Infinity value found. SkippedrG   nan_as_nullFz"properties":{}z"properties": { }YES)r  WRITE_NON_FINITE_VALUESz{"col":NaN}z{ "col": NaN })rd   r   r,  r-  r.  nanr   r   r   r   r@   rI   r1  r/  r0  )
rC   r   r6   r   r%   r4   r   rC  contentr7  s
             r7   test_write_float_nan_nullr    s    xx	C	DEIH ((C=67JWF$[9D.(H 
(j9D9	h1&&( 
{((( G+++ 	ll>1WX$$&	h*PP%P 
	h1&&( 
{ G+++"g--- 
	
   % 
h1&&( 
{'''7***K 
 
	" 
s0   <F(F)F:!G
F&)
F7:
G
G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!  rQ   r   r  r'  r  rc   r   r  z
test.arrowr   r  FT)r   r  zpyarrow.compute)pyarrow.featherrd   r   r,  r-  r.  r  r   feather
read_tableis_null	to_pylistr@   importorskipis_nan)	rC   pyarrowr6   r   r%   r4   fnametablepcs	            r7   test_write_float_nan_null_arrowr  Q  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$-???r9   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   r2   	getbufferr	   rd   r   )
r3   r   r4   r5   r6   r   rn  actual_metaactual_geometryactual_field_datas
             r7   test_write_memoryr  q  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0r9   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 filerG   r  r   r   r   r@   rR   rq   r   r3   r4   r5   r6   r   rn  s         r7   !test_write_memory_driver_requiredr    sS    $()<$=!DXYF	B
 	f
N4vNN	
 
 
s   A
ArA  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 rG   r  Tr   rO   r;  r  r3   r   r4   r5   r6   r   rn  s          r7   $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 filesrG   r  Tr  )r   r   r   r@   rR   NotImplementedErrorr   r  s          r7   $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 supportedrG   r   r  r   )r   r   r@   rR   r  r   r  s         r7   &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 supportedrG   r  wbr   r  r   Nztest.geojson.zipr  )r   r@   rR   r  r   r   r   )rC   r3   r4   r5   r6   r   rC  zs           r7   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)ry  rh  rg  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      العربية   ᓀᐦᐃᔭᐍᐏᐣ   中文rc   r   r!   r   r#   rk  r#   r%   )	rd   r   r,  r-  r.  r   r   r   r
   )rC   r:   read_encodingwrite_encodingr6   arabiccreemandarinr   r%   r4   r   r  r5   r  s                  r7   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Xr9   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   rc   r   r$   r  r   r  r%   r   )rd   r   r,  r-  r.  r   r   r   r
   r   unlink)rC   r  r  r6   r  r  r  r   r%   r4   r   r  r5   r  s                 r7   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
 
 	
 
 !r9   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   rc   r   r  rk  Nr  r%   r   )rd   r   r,  r-  r.  r   r@   rR   UnicodeDecodeErrorr   r
   )rC   r:   encoded_textr#   textr6   r   r%   r4   r   r  r5   r  s                r7   test_non_utf8_encoding_ior  G  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   rc   r   r  r   r%   r   r   r   r  SHAPE_ENCODINGCP1254)rd   r   r,  r-  r.  r   r   r
   r   r  encodedecoder   r   )rC   r  r#   r  r6   r   r%   r4   r   r  r5   r  miscodedbad_metabad_field_datas                  r7   #test_non_utf8_encoding_io_shapefiler  n  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  rc   r   r  r  rQ   r   r   FT)rd   r   r,  r-  r.  r   r   r   testingassert_allcloser  r@   rR   rq   )	rC   r6   r   
field_maskr%   r4   r   r  r  s	            r7   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)r3   r4   readercapsules       r7   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@   rR   ImportErrorr   rr   s     r7    test_open_arrow_error_no_pyarrowr    s=    
 
{	#+>! ? 
$	#>> 
$	#s   A
9A

A	A


A)yr/  r  r  r   sysior   zipfiler   numpyrd   r   r  r   r   r   r	   r
   r   pyogrio._compatr   r   r   r   pyogrio.errorsr   r   r   pyogrio.rawr   r   r   pyogrio.tests.conftestr   r   r   r   r   r@   rb   r  r8   markparametrizerE   rL   rT   rY   r\   rf   rk   rs   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skipifr9  r<  r@  valuesrD  rG  rL  rf  filterwarningsro  rs  ru  rx  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   0r7   <module>r,     s7      	 
       N M H H / /  	
:6 (+ )+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2+ :2+j <>!*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(>? @W-  		Ls   2Y< 
Z	
%Z	
<ZZ