
    jj              	       "   S SK r S SKrS SKrS SKr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rS SKJr  S SKJrJrJrJr  S SK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#  S SK$r$S S	K%J&r&J'r'  S S
K(J)r)J*r*  S SK+J,r,J-r-   S SK.r.\" \" \.R^                  5      R`                  5      \" S5      :  r1\" \" \.R^                  5      R`                  5      \" S5      :  r2\" \" \.R^                  5      R`                  5      \" S5      :  r3 S SK5r5\" \" \5R^                  5      R`                  5      \" S5      :  r6\$Rn                  Rq                  \.(       + SS9r9\$Rn                  Rq                  \5(       + SS9r:Sr;\$Rn                  Ry                  S5      r=\$R|                  " \$R~                  " S\:S9\$R~                  " S\9S9/S9S 5       r@S rA\$R|                  S 5       rB\$R|                  S 5       rC\$R|                  S 5       rD\$R|                  S 5       rE/ S QrFS! rG\$Rn                  R                  S"\F5      S# 5       rI\$Rn                  R                  S"\F5      S$ 5       rJ\$Rn                  R                  S"\F5      S% 5       rK\ R                   " S&S'S(S)S*S+S,5      rL\ R                  R                  rN\R                  " S-5      rP\LR                  \PS.9rR\L\R4rS\$Rn                  Ry                  S/5      \$Rn                  R                  S0\SS1S29\$Rn                  R                  S"\F5      S3 5       5       5       rTS4S5/rUS6 rV\$Rn                  R                  S7\U5      S8 5       rW\$Rn                  R                  S7\U5      S9 5       rXS: rY\$Rn                  R                  S"\F5      S; 5       rZ\$Rn                  R                  S"\F5      S< 5       r[S= r\\$Rn                  R                  S"\FS>/-   5      S? 5       r]\$Rn                  R                  S"\F5      S@ 5       r^SA r_SB r`\$Rn                  Rq                  \(       + SCS9SD 5       raSE rbSF rc\$Rn                  R                  S"\F5      SG 5       rdSH re\$Rn                  Ry                  SI5      \$Rn                  R                  S"\F5      SJ 5       5       rfSKrgSL rh\$Rn                  R                  \$Rn                  R                  SM/ SNQ5      SO 5       5       rj\$Rn                  R                  \$Rn                  R                  SMSP/5      \$Rn                  R                  SQSSR9SS 5       5       5       rlST rm\$Rn                  Rq                  \(       + SCS9SU 5       rnSV roSW rpSX rqSY rrSZ rsS[ rtS\ ru\$Rn                  Rq                  \(       + SCS9S] 5       rvS^ rwS_ rx\$Rn                  Rq                  \1(       + S`S9Sa 5       rySb rzSc r{Sd r|Se r}\$Rn                  Ry                  Sf5      Sg 5       r~Sh rSi r\$Rn                  Ry                  Sj5      Sk 5       r\$Rn                  Ry                  Sj5      Sl 5       rSm rSn rSo rSp rSq rSr r\$Rn                  Rq                  \6=(       d    \5(       + SsS9St 5       r\$Rn                  Ry                  Sj5      Su 5       r\$Rn                  Rq                  \6(       + SvS9Sw 5       r\$Rn                  Rq                  \(       + SCS9\$Rn                  R                  SxSSy/5      Sz 5       5       r\$Rn                  Rq                  \(       + SCS9\$Rn                  R                  SxSSy/5      S{ 5       5       rS| rS} r\$Rn                  Rq                  \(       + SCS9S~ 5       r\$Rn                  Rq                  \(       + SCS9S 5       r\$Rn                  Rq                  \(       + SCS9S 5       rS r\$Rn                  Ry                  S5      S 5       r " S S5      r\$Rn                  R                  S"SS/5      S 5       rS r\$Rn                  R                  S\GR0                  " S5      S/5      S 5       r\$Rn                  Rq                  \5SL SS9\$Rn                  Rq                  \6SS9S 5       5       r\$Rn                  Rq                  \6(       + SS9S 5       r\$Rn                  Rq                  \.SL SS9S 5       r\$Rn                  R                  SSS/5      S 5       rS r\9\:S 5       5       r\$Rn                  Rq                  \.SS9S 5       r\$Rn                  Rq                  \5SS9S 5       r  SS jr  SS jr\9S 5       rg! \4 a    Sr.Sr1Sr2Sr3 GNmf = f! \4 a    Sr5Sr6 GNNf = f)    N)OrderedDict)Version)is_datetime64_any_dtype)PointPolygonboxmapping)GeoDataFrame	GeoSeriespoints_from_xy	read_file)
HAS_PYPROJPANDAS_GE_30PANDAS_INFER_STR)_EXTENSION_TO_DRIVER_detect_driver)assert_geodataframe_equalassert_geoseries_equal)PACKAGE_DIRvalidate_boro_df)assert_frame_equalassert_series_equalz0.9.0z0.12.0z0.12.1Fz1.9.0zpyogrio not installed)reasonzfiona not installedz	epsg:4326z#ignore:Value:RuntimeWarning:pyogriofiona)markspyogrio)paramsc                     U R                   $ N)param)requests    _/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/geopandas/io/tests/test_file.pyenginer#   E   s     ==    c                 >    U S:X  a  [         R                  " S5        g g )Nr   z$not supported for the pyogrio engine)pytestskipr#   s    r"   skip_pyogrio_not_supportedr)   O   s    :; r$   c                     [        XS9nU$ Nr(   )r   )r#   nybb_filenamedfs      r"   df_nybbr.   T   s    	=	0BIr$   c            	      b    [        [        R                  R                  [        SSSS5      5      $ N	geopandastestsdataznull_geom.geojson)r   ospathjoinr    r$   r"   df_nullr8   Z   s(    
[+w@ST r$   c                  P    [         R                  R                  [        SSSS5      $ r0   )r4   r5   r6   r   r7   r$   r"   	file_pathr:   a   s    77<<['6CVWWr$   c            
          Sn [         n[        [        [        U 5      [        U 5      5       VVs/ s H  u  p#[	        X#5      X#-   X#-  S.PM     snnUS9nU$ s  snnf )N
   )geometryvalue1value2crs)_CRSr
   zipranger   )NrA   xyr-   s        r"   	df_pointsrH   f   sd    
A
C	 E!HeAh/	
/ qG/	
 
B I	
s   A
)ESRI Shapefile.shpGeoJSON.geojson)GPKG.gpkg)NrK   )N )NrN   )NrP   c                     US:X  a  SO[         U   nUS:X  a<  [        R                  " [        U 5      5       nUR                  U:X  d   e S S S 5        g g ! , (       d  f       g = f)NrQ   rJ   r   )r   r   openstrdriver)r:   extr#   expected_driverfdss        r"   assert_correct_driverrY      sX    *-)&9Mc9ROZZI'3::000 (' 		 ('s   A
A#z
driver,extc                    [         R                  R                  [        U 5      SU-   5      nUR	                  XcUS9  [
        R                  " XeS9nSU;   d   e[        U5      S:X  d   e[        R                  " US   R                  US   :H  5      (       d   e[         R                  R                  [        U 5      SU-   5      nUR	                  XcUS9  [
        R                  " XeS9nSU;   d   e[        U5      S:X  d   e[        R                  " US	   R                  US	   :H  5      (       d   e[        XdU5        g
)Test to_file and from_fileboros.rU   r#   r(   r=      BoroName	null_geom   NameN)r4   r5   r6   rT   to_filer
   	from_filelennpallvaluesrY   )tmpdirr.   r8   rU   rV   r#   tempfilenamer-   s           r"   test_to_filerk      s    77<<FX^<LOOLO?				<Br7a<<66"Z.''7:+>>???? 77<<F[3->?LOOLO?				<Br7a<<66"V*##wv67777,V4r$   c                 v   [         R                  " [        R                  R	                  [        U 5      SU-   5      5      nUR                  XRUS9  [        R                  " XTS9nSU;   d   e[        U5      S:X  d   e[        R                  " US   R                  US   :H  5      (       d   e[        XSU5        g)r[   r\   r]   r(   r=   r^   r_   N)pathlibPathr4   r5   r6   rT   rc   r
   rd   re   rf   rg   rh   rY   )ri   r.   rU   rV   r#   temppathr-   s          r"   test_to_file_pathlibrp      s     ||BGGLLVhnEFHOOHFO;				8Br7a<<66"Z.''7:+>>????(0r$   c           	         [         R                  R                  [        U 5      SU 35      n[	        / SQ[        SS5      [        SS5      [        SS5      /S.SS9nUR                  XAUS	9  [        XCS
9nUS;   am  US:X  a6  [        R                  R                  S:  a  US   R                  S5      US'   O1US:X  a+  [        R                  S:  a  US   R                  S5      US'   [        Xe5        [        XBU5        g)z>Test error raise when writing with a boolean column (GH #437).ztemp.)TFTr      ra   )colr=     r@   r]   r(   rK   rQ   r   	   rs   int64r   )   rv   int32N)r4   r5   r6   rT   r
   r   rc   r   r   gdal_versionminorastyper   __gdal_version__r   rY   ri   rU   rV   r#   rj   r-   results          r"   test_to_file_boolr      s     77<<FuSE];L	&q!eAqk5A;?	
 
B JJ|6J:|3F
l W!3!3!9!9A!=5	((1BuIy W%=%=%F5	((1BuIf),V4r$   i        rr      +   i\D  zAmerica/New_York)tzinfozEignore:Non-conformant content for record 1 in column b:RuntimeWarningtime)naive_datetimedatetime_with_timezone)idsc                    US;   a  [         R                  " SU S35        [        R                  R	                  [        U 5      SU 35      n[        SS5      n[        SS/X3/S.Xf/S	S
9nUS   R                  R                  SS9US'   UR                  XQUS9  [        XTS9n[        UR                  S/S9UR                  S/S95        US   n	US   R                  R                  S5      n	US   n
US   R                  R                  b>  U	R                  R!                  ["        5      n	U
R                  R!                  ["        5      n
[%        X5        g)z6Test writing a data file with the datetime column typeru   zDriver corresponding to ext z doesn't support dt fieldstest_datetimer         ?       @)abrt   r=   rA   r   ms)freqr]   r(   columnsN)r&   r'   r4   r5   r6   rT   r   r
   dtroundrc   r   r   dropas_unittz
tz_convertutcr   )ri   rU   rV   r   r#   rj   pointr-   df_readexpectedactuals              r"   test_to_file_datetimer      s8    l23%7QRS77<<F}SE-BCL!QKE	Cj|,~4
B gjjD)BsGJJ|6J:4Gbggseg4gllC5l6QR#wH#wzz!!$'HS\F	#wzz}}  ;;))#.%%c*)r$   gpkggeojsonc           	      l   [         R                  R                  [        U5      SU 35      n[	        SSU /[        SS5      [        SS5      [        SS5      /S.5      nUS:X  a  UR                  XCS9  U$ SSS	0S
.nUS:X  a!  [        (       d  [        R                  " S5        UR                  XFSS9  U$ )Nztest_invalid_datetime.z2014-08-26T10:01:23rr   dater=   r   r(   r   r   datetimer=   
propertiesr   z test requires fiona kwarg schemar   schemar#   )
r4   r5   r6   rT   r
   r   rc   r   r&   r'   )date_strri   rV   r#   rj   r-   r   s          r"   write_invalid_date_filer      s    77<<F/EcU-KLL	*,A8Lq!eAqk5A;?	

B i


<
/  &fj5IJYuuKK:;


<w
?r$   rV   c                 l   Sn[        X0X5      n[        XBS9nUS:X  aC  [        US   5      (       d   e[        R                  " US   R
                  S   5      (       d   eg [        (       a  US   R                  S:X  d   e[        (       d   e[        US   R
                  S   [        5      (       d   eg )Nz9999-99-99T00:00:00r(   r   r   rT   )r   r   r   pdisnailocr   dtypeobject
isinstancerT   ri   rV   r#   r   rj   ress         r"   test_read_file_datetime_invalidr     s     %H*8SIL
L
0C
f}&s6{3333wws6{''+,,,,-=-=s6{  E)II66II#f+**2.4444r$   c                    Sn[        X0X5      nUS:X  aB  [        (       a7  [        (       d,  [        R                  " [
        SS9   [        XBS9nS S S 5        O	[        XBS9n[        (       aB  WS   R                  S:X  d   eUS   R                  S   [        R                  " S	5      :X  d   eg [        (       a  WS   R                  S
:X  d   e [        WS   R                  S   [        5      (       d   eg ! , (       d  f       N= f)Nz9999-12-31T00:00:00r   z6Error parsing datetimes, original strings are returnedmatchr(   r   zdatetime64[ms]r   z9999-12-31 00:00:00rT   r   )r   PYOGRIO_GE_012r   r&   warnsUserWarningr   r   r   r   	Timestampr   r   rT   r   s         r"   (test_read_file_datetime_out_of_bounds_nsr   !  s     %H*8SIL~~ll\\W
 L8C
 

 4|6{  $44446{#r||4I'JJJJ .>-=s6{  E)KK8#f+**1-s3333
 
s   
C66
Dc                 J   [         R                  R                  [        U 5      S5      n[	        SS/[        SS5      [        SS5      /S.5      nUR                  U5        [        U5      n[        US   5      (       d   eUS   R                  R                  [        :X  d   eg )Nztest_mixed_datetime.geojsonz 2014-08-26 10:01:23.040001+02:00z 2019-03-07 17:31:43.118999+01:00rr   r   r   )r4   r5   r6   rT   r
   r   rc   r   r   r   r   r   )ri   rj   r-   r   s       r"   %test_read_file_datetime_mixed_offsetsr   6  s    77<<F-JKL	 32 q!eAqk2	

B JJ|
L
!C"3v;////v;>>###r$   c                 V   [         R                  R                  [        U 5      SU-   5      n[	        SSS5      n[	        SS5      n[        SSS/0XV/[        S9nUR                  XBUS9  [
        R                  " XCS	9n[        UR                  UR                  5        [        XAU5        g
)9Test that 3D geometries are retained in writes (GH #612).test_3Dpointr   i  rr   r   ra   r   r]   r(   N)r4   r5   r6   rT   r   r
   rB   rc   rd   r   r=   rY   )	ri   rV   rU   r#   rj   point3dpoint2dr-   r   s	            r"   test_to_file_with_point_zr   J  s     77<<F^c-ABLAq#GAqkG	sQFmw.@d	KBJJ|6J:$$\AG2;;(8(89,V4r$   c                    [         R                  R                  [        U 5      SU-   5      n[	        / SQ/ SQ/ SQ/ SQ/5      n[	        SS/SS/SS/SS//5      n[        SSS	/0XV/[        S
9nUR                  XBUS9  [
        R                  " XCS9n[        UR                  UR                  5        [        XAU5        g)r   test_3Dpoly)r   r   r^   )r   rr   r^   )rr   rr   r^   )rr   r   r^   r   rr   r   ra   r   r]   r(   N)r4   r5   r6   rT   r   r
   rB   rc   rd   r   r=   rY   )	ri   rV   rU   r#   rj   poly3dpoly2dr-   r   s	            r"   test_to_file_with_poly_zr   Y  s     77<<F]S-@ALiIyABFq!fq!fq!fq!f56F	sQFmv.>D	IBJJ|6J:$$\AG2;;(8(89,V4r$   c           
      F   [         R                  R                  [        U 5      S5      n[        R
                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  [        R                  /	nUR                  n[        U5       VVs0 s H-  u  pg[        U5      [        R                   " [#        U5      US9_M/     nnn[%        XS9n	U	R'                  X2S9  gs  snnf )z)Test various integer type columns (GH#93)zint.shpr   r=   r(   N)r4   r5   r6   rT   rf   int8int16ry   rw   intpuint8uint16uint32uint64r=   	enumeratearangere   r
   rc   )
ri   rH   r#   rj   	int_typesr=   ir   r3   r-   s
             r"   test_to_file_typesr   h  s    77<<FY7L






		
		
		
I !!H "),,HA 	A		#h-u55, 	  
d	.BJJ|J+s   4D)OGR_GMTz.gmtc                    [         R                  R                  [        U 5      SU 35      nUR                  n[        US9n[        R                  " S[        R                  /S-  [        R                  " 5       S9US'   UR                  XSUS9  [
        R                  " XRS9nUR                  5       n	U	S   R                  S	5      U	S'   [        XS
S9  [         R                  R                  [        U 5      SU 35      n
UR!                  5       nUR                  XUS9  [
        R                  " XS9nUS:X  a  US   R"                  S:X  d   eg US   R"                  S:X  d   eg )Nzint32.r   rr   r^   r   r3   r]   r(   float64T
check_likezint32_2.r   ry   rw   )r4   r5   r6   rT   r=   r
   r   arrayrf   nan
Int32Dtyperc   rd   copyr|   r   dropnar   )ri   rH   r#   rU   rV   rj   r=   r-   r   r   tempfilename2df2df2_reads                r"   test_to_file_int32r     s0   77<<FvcU^<L!!H	x	(B1bff+/ABvJJJ|6J:$$\AGwwyH'..y9HVgDAGGLLV.>?M
))+CKKVK<%%mCH%%000 %%000r$   c                    [         R                  R                  [        U 5      SU 35      nUR                  n[        US9n[        R                  " S[        R                  /S-  [        R                  " 5       S9US'   UR                  XSUS9  [
        R                  " XRS9nUR                  5       n	U	S   R                  S	5      U	S'   [        XS
S9  g )Nzint64.r   rr   r^   r   r3   r]   r(   r   Tr   )r4   r5   r6   rT   r=   r
   r   r   rf   r   
Int64Dtyperc   rd   r   r|   r   )
ri   rH   r#   rU   rV   rj   r=   r-   r   r   s
             r"   test_to_file_int64r     s    77<<FvcU^<L!!H	x	(B1bff+/ABvJJJ|6J:$$\AGwwyH'..y9HVgDAr$   c                     [        S/S9n[        R                  R                  [	        U 5      S5      n[
        R                  " [        5         UR                  X1S9  S S S 5        g ! , (       d  f       g = f)Nr=   r   test.shpr(   )	r
   r4   r5   r6   rT   r&   r   r   rc   )ri   r#   input_empty_dfrj   s       r"   test_to_file_emptyr     sO    !:,7N77<<FZ8L	k	"|; 
#	"	"s   A''
A5c                    [         R                  R                  [        U 5      S5      n[	        / SQ5      nSUS.nUS:X  aA  [
        R                  " [        5         UR                  SS R                  X5US9  SSS5        gUR                  SS R                  X5US9  S	SK
nUR                  " U5       nUR                  nSSS5        WU:X  d   eg! , (       d  f       g= f! , (       d  f       N(= f)
zM
Ensure that the file is written according to the schema
if it is specified

r   ))
Shape_Lengfloat:19.11)r_   zstr:40)BoroCodezint:10)
Shape_Arear   r   r   r   Nra   r   r   )r4   r5   r6   rT   r   r&   raises
ValueErrorr   rc   r   rS   r   )	ri   r.   r#   rj   r   r   r   fresult_schemas	            r"   test_to_file_schemar     s     77<<FZ8L	
J $:>F]]:&LL!$$\$P '& 	Ra  V LZZ%HHM & &&& '& &%s   C6C%
C"%
C3zpyproj not installedc                 x   [        X!S9n[        R                  R                  [	        U 5      S5      nUR                  XAS9  [        R                  " XAS9nUR                  UR                  :X  d   eUS:X  a4  [        R                  " [        SS9   UR                  USUS9  SSS5        gUR                  USUS9  [        R                  " XAS9nUR                  S	:X  d   eUR                  SS
S9nUR                  USUS9  [        R                  " XAS9nUR                  S:X  d   eg! , (       d  f       g= f)zI
Ensure that the file is written according to the crs
if it is specified
r(   zcrs.shpr   zPassing 'crs' is not supportedr   i  )rA   r#   Nz	epsg:3857T)allow_overridei  	epsg:2263)r   r4   r5   r6   rT   rc   r
   rd   rA   r&   r   r   set_crs)ri   r#   r,   r-   rj   r   r   s          r"   test_to_file_crsr     s    
=	0B77<<FY7L JJ|J+##L@F::]]:-MNJJ|fJ= O JJ|fJ5##L@F::$$$ **T$*
/CKK$vK6				<B66[    ONs   D++
D9c                 $   [         R                  R                  [        U 5      S5      nUR                  SS R                  5       nS/US'   [        R                  " [        SS9   UR                  USUS	9  SSS5        g! , (       d  f       g= f)
z
Ensure that a warning about truncation is given when a geodataframe with
column names longer than 10 characters is saved to shapefile
r   Nrr   z the column name is 11 characters0123456789Az8Column names longer than 10 characters will be truncatedr   rJ   r]   )
r4   r5   r6   rT   r   r   r&   r   r   rc   )ri   rH   r#   rj   r-   s        r"   test_to_file_column_lenr    sy    
 77<<FZ8L			 	 	"B;<B}	U
 	

<(8
H
 
 
s   &B
Bc                    [        / SQ// SQ[        SS5      /S9n[        R                  R	                  [        U 5      S5      n[        R                  " [        SS9   UR                  X1S9  S S S 5        g ! , (       d  f       g = f)	Nrr   ra   rx   )r   r   r   rr   )r3   r   r=   zduplicate.shpz4GeoDataFrame cannot contain duplicated column names.r   r(   )
r
   r   r4   r5   r6   rT   r&   r   r   rc   )ri   r#   r-   rj   s       r"   #test_to_file_with_duplicate_columnsr    sf    	I;5QRTU;-	XB77<<F_=L	P
 	

<
/
 
 
s   A77
Bc                    [         R                  R                  [        U 5      SU-   5      nU(       a  UO
[	        U5      nUR                  XcUS9  UR                  USX5S9  [        R                  " XeS9nSU;   d   e[        U5      S:X  d   e[        R                  " U/S-  S	S
9n[        XxS	S9  US:X  a~  [         R                  R                  [        U 5      SU-   5      nUR                  XcUS9  UR                  US	X5S9  [        R                  " XeS9n[        U5      [        U5      S-  :X  d   e[         R                  R                  [        U 5      SU-   5      nUR                  XcUS9  UR                  USX5S9  [        R                  " XeS9nSU;   d   e[        U5      S:X  d   e[        R                  " U/S-  S	S
9n[        XxS	S9  g)z+Test to_file with append mode and from_fileborosr]   r   )moderU   r#   r(   r=   r<   ra   T)ignore_index)check_less_preciser   boros2)appendrU   r#   r`      N)r4   r5   r6   rT   r   rc   r
   rd   re   r   concatr   )	ri   r.   r8   rU   rV   r#   rj   r-   r   s	            r"   test_append_filer    s    77<<FWs];LV>,#?FOOLO?OOLs6OI				<Br7uyy'QT:HbtDww||CKC@FCT&P##L@2w3w<!+,,, 77<<F[3->?LOOLO?OOLs6OI				<Br7uyy'QT:HbtDr$   c                     [         R                  R                  [        U 5      S5      n[        R
                  " [        SS9   UR                  USUS9  S S S 5        g ! , (       d  f       g = f)Nzdata.shpz"'mode' should be one of 'w' or 'a'r   r)r  r#   )r4   r5   r6   rT   r&   r   r   rc   )ri   r.   r#   rj   s       r"   test_mode_unsupportedr  (  sH    77<<FZ8L	z)M	N3v> 
O	N	Ns   A
A,z1ignore:'crs' was not provided:UserWarning:pyogrioc           	         US:X  a  [         R                  " S5        [        R                  R	                  [        U 5      SU-   5      n[        / SQ[        SS5      [        SS5      [        SS5      /S.5      nUR                  XAUS	9  [        XCS
9nUS:X  a  SUR                  R                  l        [        Xe5        g)z;Test handling of undefined CRS with GPKG driver (GH #1975).rP   z+GPKG is read with Undefined geographic SRS.r  )r   r   g      @r   rr   ra   )r   r=   r]   r(   rN   	EPSG:4326N)r&   xfailr4   r5   r6   rT   r
   r   rc   r   r=   r   rA   r   r~   s          r"   test_empty_crsr  .  s     g~BC77<<FWs];L	 q!eAqk5A;?	

B JJ|6J:|3F
j +f)r$   r   c                     [        XS9n[        U5        [        (       a  UR                  [        :X  d   e/ SQnUR
                  S S U:H  R                  5       (       d   eg )Nr(   )r   r_   r   r   r   )r   r   r   rA   NYBB_CRSr   rg   )r#   r,   r-   expected_columnss       r"   test_read_filer  O  sV    	=	0BRzvv!!!KJJsO//446666r$   url)zahttps://raw.githubusercontent.com/geopandas/geopandas/main/geopandas/tests/data/null_geom.geojsonz\https://raw.githubusercontent.com/geopandas/geopandas/main/geopandas/tests/data/nybb_16a.zipz5https://demo.pygeoapi.io/stable/collections/obs/itemsc                 X    [        XS9n[        U[        R                  5      (       d   eg r+   r   r   r1   r
   r#   r  gdfs      r"   test_read_file_urlr   X  s'     C
'Cc9112222r$   z*https://geonode.goosocean.org/download/480zSSL certificate issue)r   strictc                 X    [        XS9n[        U[        R                  5      (       d   eg r+   r  r  s      r"   test_read_file_url_flakyr#  k  s'     C
'Cc9112222r$   c                 b    SU -   n[        X!S9n[        U[        R                  5      (       d   eg )Nzfile://r(   r  )r:   r#   	local_urir  s       r"   test_read_file_local_urir&  {  s/    I%I
I
-Cc9112222r$   c                    U S:X  a!  [         (       d  [        R                  " S5        [        S/[	        SS5      /S.5      nSSS	S0S
SS/S.S./S.n[        [        R                  " U5      U S9n[        UR                  S5      U5        g )Nr   zfixed in pyogrio 0.9.0zrow # 0r   rr   )val_with_hashr=   FeatureCollectionFeaturer(  r   g        r   )typecoordinates)r+  r   r=   )r+  featuresr(   r  )
PYOGRIO_GE_090r&   r'   r
   r   r   jsondumpsr   r   )r#   r   r-  r   s       r"   "test_read_file_geojson_string_pathr1    s    >>,-ykaQR}UVH# ".	:%,c3ZH
	H 

8,V<Gh..{;WEr$   c                    [        U 5      n[        R                  " [        U 5      R                  5       5      n[	        X!S9n[	        X1S9n[        U[        R                  5      (       d   e[        U[        R                  5      (       d   eg r+   )rS   ioStringIOreadr   r   r1   r
   )r:   r#   file_text_streamfile_stringiogdf_text_streamgdf_stringios         r"   test_read_file_textior:    sn    IKKY 4 4 67M 0@O]:Loy'='=>>>>lI$:$:;;;;r$   c                     [        U S5      n[        R                  " [        U S5      R                  5       5      n[	        X!S9n[	        X1S9n[        U[        R                  5      (       d   e[        U[        R                  5      (       d   eg )Nrbr(   )rS   r3  BytesIOr5  r   r   r1   r
   )r:   r#   file_binary_streamfile_bytesiogdf_binary_streamgdf_bytesios         r"   test_read_file_bytesiorB    sv    i.::d9d388:;L!"4DL8K')?)?@@@@k9#9#9::::r$   c                 n    [        U SSS9n[        X!S9n[        U[        R                  5      (       d   eg )Nr<  r   )	bufferingr(   )rS   r   r   r1   r
   )r:   r#   file_raw_streamgdf_raw_streams       r"   test_read_file_raw_streamrG    s3    9da8O>Nni&<&<====r$   c                     [         R                  " U 5      n[        X!S9n[        U[        R
                  5      (       d   eg r+   )rm   rn   r   r   r1   r
   )r:   r#   path_objectgdf_path_objects       r"   test_read_file_pathlibrK    s3    ,,y)K;Ooy'='=>>>>r$   c                     [         R                  " 5       nUR                  S5        UR                  S5        [        R
                  " XS9n[        U[        R                  5      (       d   eUR                  5         g )Ns   
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [0, 0]
      },
      "properties": {
        "name": "Null Island"
      }
    }
    r   r(   )	tempfileTemporaryFilewriteseekr1   r   r   r
   close)r#   tempgdf_tempfiles      r"   test_read_file_tempfilerT    s`    !!#DJJ	 	IIaL&&t;LlI$:$:;;;;JJLr$   c                     [         R                  " S5      nUSS  nUR                  US5       n[        X@S9n[	        U[
        R                  5      (       d   e S S S 5        g ! , (       d  f       g = f)Nfsspec   r<  r(   r&   importorskiprS   r   r   r1   r
   )r#   r,   rV  r5   r   r  s         r"   test_read_binary_file_fsspecrZ    s_      *F D	T4	 A)#y556666 
!	 	 s   +A##
A1c                     [         R                  " S5      nUR                  U S5       n[        X1S9n[	        U[
        R                  5      (       d   e S S S 5        g ! , (       d  f       g = f)NrV  r  r(   rX  )r:   r#   rV  r   r  s        r"   test_read_text_file_fsspecr\    sQ      *F	Y	$)#y556666 
%	$	$s   +A
A,c                 d   [         R                  R                  [        R                  " 5       S5      n[         R                  R                  [        R                  " 5       S5      n[
        R                  " / SQ/ SQS.5      n[        U[        UR                  UR                  5      SS9n[        U[        UR                  UR                  5      S9nUR                  U5        UR                  U5        [        R                  " [        SS	9   [        XU S
9n[!        Xd5        SSS5        [        R                  " [        SS	9   [        X$U S
9n[!        Xe5        SSS5        [        R                  " [        SS	9   [        X%U S
9n[!        Xe5        SSS5        ["        R$                  " 5          ["        R&                  " S5        [        XU S
9n[!        Xd5        SSS5        [)        [        UR                  UR                  5      SS9n[)        [        UR                  UR                  5      5      n[        R                  " [        SS	9   [        XU S
9n[!        Xd5        SSS5        [        R                  " [        SS	9   [        X'U S
9n[!        Xe5        SSS5        [        R                  " [        SS	9   [        X(U S
9n[!        Xe5        SSS5        ["        R$                  " 5          ["        R&                  " S5        [        XU S
9n[!        Xd5        SSS5        g! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g= f)zV
Testing warning messages when one of, or both of, the
file or mask is missing a crs.
zfile_with_crs.shpzfile_without_crs.shp)r   rr   ra   rx   r  )Latitude	Longituder  r   r   z$There is no CRS defined in the mask.r   maskr#   Nz.There is no CRS defined in the source dataset.z7There is no CRS defined in the source dataset nor mask.errorr@   )r4   r5   r6   rM  mkdtempr   	DataFramer
   r   r_  r^  rc   r&   r   r   r   r   warningscatch_warningssimplefilterr   )	r#   file_with_crsfile_without_crsr-   gdf_with_crsgdf_without_crsr3   series_with_crsseries_without_crss	            r"   #test_read_file_crs_warning_messagesrn    s    GGLL!1!1!35HIMww||H$4$4$68NO	'(	

B  
^BLL"++>KL #
^BLL"++>O ',-	k)S	TVL!$5 
U 
O
 )VL!$8	
 
K
 )O!$8
 
	 	 	"g&&I!$5 
#  r||R[[1{O #>",,#LM	k)S	TO!$5 
U 
O
 )O!$8	
 
K
 )6R!$8
 
	 	 	"g&VL!$5 
#	"] 
U	T
 

 
 
#	" 
U	T
 

 
 
#	"s`   L%L7>M	1,MM-M?=N0,N!%
L47
M	
M
M*-
M<?
N
N!
N/c                    USS  n[        X S9n[        U[        R                  5      (       d   e[        SU-   U S9n[        U[        R                  5      (       d   e[        US-   U S9n[        U[        R                  5      (       d   eg )NrW  r(   zfile+file://z	!nybb.shpr  r#   r,   r5   r  s       r"   test_infer_zipped_filerq  '  s     D
D
(Cc9112222 NT)&
9Cc9112222 D;&v
6Cc9112222r$   c                 h    SUSS  -   n[        X S9n[        U[        R                  5      (       d   eg )Nz/vsizip/rW  r(   r  rp  s       r"   test_allow_legacy_gdal_pathrs  9  s6    ab))D
D
(Cc9112222r$   zbug fixed in pyogrio 0.9.0c                     US-  nUR                  SSS9  US-  n[        R                  " USS  U5        [        X@S9n[	        U[
        R                  5      (       d   eg )Nzpath with # presentT)exist_okparentsznybb.ziprW  r(   )mkdirshutilr   r   r   r1   r
   )r#   r,   tmp_pathfolder_with_hash	read_pathr  s         r"    test_read_file_with_hash_in_pathr|  @  sc    "77D$7 :-I
KKab!9-
I
-Cc9112222r$   c                 |    Sn[        X#US9nX S   R                  SS/5         n[        XER                  SS95        g )N7sw/A璢B`Ap/AxAbboxr#   r_   BronxQueensTr   )r   isinr   reset_indexr.   r#   r,   r  filtered_dfr   s         r"   test_read_file_bbox_tupler  J  sJ    D MVDKz*//(0CDEHk+?+?T+?+JKr$   c                     [        SSSS5      n[        X#US9nX S   R                  SS/5         n[        XER	                  S	S
95        g )Nr  r  r  r  r  r_   r  r  Tr  )r   r   r  r   r  r  s         r"   test_read_file_bbox_polygonr  V  sY    .0BDVD MVDKz*//(0CDEHk+?+?T+?+JKr$   c                 T    [        USUS9n[        X0R                  S/S S 24   5        g )Nrr   rowsr#   r   )r   r   r   r.   r#   r,   r  s       r"   test_read_file_filtered__rowsr  _  s'    M&AKk<<Q+?@r$   c                     [        U[        SS5      US9n[        X0R                  SS2S S 24   R	                  SS95        g )Nrr   rx   r  Tr  )r   slicer   r   r  r  s       r"   #test_read_file_filtered__rows_slicer  d  s>    MaFKKk<<!Q+?+K+KQU+K+VWr$   zAignore:Layer does not support OLC_FASTFEATURECOUNT:RuntimeWarningc           	         SnUS:X  a(  [        X#[        SS 5      US9nUR                  (       d   eUS:X  a8  [        R                  " [
        SS9   [        X#[        SS 5      US9nS S S 5        g [        X#[        SS 5      US9nUS	   R                  S
5      US	'   [        X@R                  SS 2S S 24   R                  SS95        g ! , (       d  f       g = f)Nr~  r   r  )r  r  r#   r   z<'skip_features' must be between 0 and 1|Negative slice startr   r   r   rw   Tr  )
r   r  emptyr&   r   r   r|   r   r   r  )r.   r#   r,   r  r  s        r"   "test_read_file_filtered__rows_bboxr  i  s    D 5D>&
     ]]P
 $uRvK	
 
  5T?6
 #.j"9"@"@"IJ!ab!e,88d8C	

 
s   C
Cc                     [         R                  " [        5         [        USU S9  S S S 5        g ! , (       d  f       g = f)Nnot_a_slicer  )r&   r   	TypeErrorr   )r#   r,   s     r"   $test_read_file_filtered_rows_invalidr    s&    	y	!-mFC 
"	!	!s   0
>c                     [         R                  " USU S9nSUR                  ;  d   e[        U[        R
                  5      (       a  [        U[         R                  5      (       a   eg )NT)ignore_geometryr#   r=   )r1   r   r   r   r   rd  r
   )r#   naturalearth_lowrespdfs      r"   test_read_file__ignore_geometryr    s[    


C
 S[[(((c2<<((CAWAW1X1XXX1Xr$   zKignore:The 'include_fields' and 'ignore_fields' keywords:DeprecationWarningc                 x    [         R                  " U/ SQU S9nUR                  R                  5       SS/:X  d   eg )N)pop_est	continentiso_a3
gdp_md_estignore_fieldsr#   namer=   r1   r   r   tolistr#   r  r  s      r"   test_read_file__ignore_fieldsr    s?     

FC
 ;;FJ#7777r$   c                 v    [         R                  " U/ SQU S9nUR                  R                  5       S/:X  d   eg )N)r  r  r  r  r  r  r=   r  r  s      r"   !test_read_file__ignore_all_fieldsr    s<     

NC
 ;;J<///r$   c                    [        U S-  5      n[        R                  " [        R                  " / SQSS9/ SQS.5      nUR                  USS9  [        R                  " X!S	9nUS
   R                  S5      US
'   [        U[        R                  5      (       d   e[        U[        R                  5      (       a   e[        XC5        g )Ntest.csvr  rw   r   )r   r   c)col1col2Findexr(   r  )rT   r   rd  rf   r   to_csvr1   r   r|   r   r
   r   )ri   r#   filenamer   r-   s        r"   test_read_file_missing_geometryr    s    6J&'H||)73_MH OOHEO*			X	5BF""7+BvJb",,''''"i445555r$r$   c                     U S-  n[        SS S /0[        SS5      [        SS5      /SS9nUR                  X!S	9  [        X!S	9n[	        X45        g )
N	test.gpkgr   rr   ra   rx   r  rt   r   r(   )r
   r   rc   r   r   )ry  r#   	test_pathr  read_gdfs        r"   test_read_file_None_attributer    sY    ;&I
	tTluQ{E!QK&@dC KK	K)2Hc,r$   c                     [        U S-  5      nUR                  USS9  [        R                  " USS0S9nUR                  R
                  S:X  d   eg )Nr  Fr  r=   r   )rT   r  r   read_csvr=   r   )ri   r.   r  r  s       r"   test_read_csv_dtyper    sN    6J&'HNN85N)
++hz:&>
?C<<+++r$   c                 F   [         (       d  U S:X  aF  [        R                  " USU S9nUR                  R	                  5       R                  5       S/:X  d   eg [        R                  " [        5         [        R                  " USSS9  S S S 5        g ! , (       d  f       g = f)Nr   zcontinent='Africa')wherer#   Africar   )	FIONA_GE_19r1   r   r  uniquer  r&   r   NotImplementedErrorr  s      r"   test_read_file__where_filterr    s    {f	)!!&

 }}##%,,.8*<<<]]./#* 0//s   2B
B c                     U S:X  a!  [         (       d  [        R                  " S5        [        R                  " USS/U S9nU S:X  a  [
        (       a  / SQO/ SQnUR                  R                  5       U:X  d   eg )	Nr   columns requires fiona 1.9+r  r  r   r#   r   r  r  r=   r  r  r=   r  r&   r'   r1   r   PYOGRIO_GE_0121r   r  r#   r  r  r   s       r"   test_read_file__columnsr    so    12


fi%8C Y?? 	(, 
 ;;8+++r$   c                     U S:X  a!  [         (       d  [        R                  " S5        [        R                  " U/ U S9nUR
                  R                  5       S/:X  d   eg )Nr   r  r  r=   )r  r&   r'   r1   r   r   r  r  s      r"   test_read_file__columns_emptyr    sM    12


12f
MC;;J<///r$   ztest for fiona < 1.9c                     [         R                  " [        5         [        R                  " U SS/SS9  S S S 5        g ! , (       d  f       g = f)Nr  r  r   r  )r&   r   r  r1   r   )r  s    r"   !test_read_file__columns_old_fionar    s5    	*	+&))<W	
 
,	+	+s	   =
Ac                     U S:X  a!  [         (       d  [        R                  " S5        [        R                  " USS/U S9nU S:X  a  [
        (       a  / SQO/ SQnUR                  R                  5       U:X  d   eg )	Nr   r  r  r  )include_fieldsr#   r   r  r  r  r  s       r"   test_read_file__include_fieldsr    sq     12


VY,?C Y?? 	(, 
 ;;8+++r$   r  c                    Un[         R                  " [        SS9   [        R                  " US/S/U S9  S S S 5        [         R                  " [        SS9   [        R                  " US/S/U S9  S S S 5        [         R                  " [        SS9   [        R                  " US/S/U S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N[= f! , (       d  f       g = f)NzCannot specify bothr   r  r  )r  r  r#   )r   r  r#   )r   r  r#   )r&   r   r   r1   r   )r#   r  r5   s      r"   ,test_read_file__columns_conflicting_keywordsr    s    D	z)>	?&)V	
 
@
 
z)>	?6(I;v	
 
@
 
z)>	?6(9+f	
 
@	? 
@	?
 
@	?
 
@	?s#   B5CC5
C
C
C%	file_likeTc                     U R                   n[        R                  " [        SSSS5      /[        S9nU(       a  [        UR                  SS5      S5      OUn[        XeUS	9nUR                   nXH:w  d   eUS
:X  d   eg )Nr  r  r  r  r   zip://rQ   r<  r  ra   r^   shaper1   r
   r   r  rS   replacer   )	r.   r#   r,   r  full_df_shaper  infiler  filtered_df_shapes	            r"   test_read_file_bbox_gdfr  3       MMM!!""""	
 
D <E]""8R0$7-  Ff=K#))---&&&r$   c                     U R                   n[        R                  " [        SSSS5      /[        S9nU(       a  [        UR                  SS5      S5      OUn[        XeUS	9nUR                   nXH:w  d   eUS
:X  d   eg )Nr  r  r  r  r   r  rQ   r<  r`  r  r  )	r.   r#   r,   r  r  ra  r  r  r  s	            r"   test_read_file_mask_gdfr  K  r  r$   c                     U R                   n[        SSSS5      n[        X$US9nUR                   nX6:w  d   eUS:X  d   eg Nr  r  r  r  r`  r  )r  r   r   r.   r#   r,   r  ra  r  r  s          r"   test_read_file_mask_polygonr  c  sU    MMM.0BDVD MVDK#))---&&&r$   c                     U R                   n[        [        SSSS5      5      n[        XUS9nUR                   nX6:w  d   eUS:X  d   eg r  )r  r	   r   r   )r.   r,   r#   r  ra  r  r  s          r"   test_read_file_mask_geojsonr  n  s]    MMM		
D MVDK#))---&&&r$   c                     U R                   n[        R                  " [        SSSS5      /[        S9nUR                  SSS9  [        X$US	9nUR                   nX6:w  d   eUS
:X  d   eg )Nr  r  r  r  r   rt   Tepsginplacer  r  )r  r1   r
   r   r  to_crsr   )r.   r#   r,   r  r  r  r  s          r"   &test_read_file_bbox_gdf_mismatched_crsr  ~  s}    MMM!!""""	
 
D 	KKT4K(MVDK#))---&&&r$   c                     U R                   n[        R                  " [        SSSS5      /[        S9nUR                  SSS9  [        X$R                  US	9nUR                   nX6:w  d   eUS
:X  d   eg )Nr  r  r  r  r   rt   Tr  r`  r  )r  r1   r
   r   r  r  r   r=   r  s          r"   &test_read_file_mask_gdf_mismatched_crsr    s    MMM!!""""	
 
D 	KKT4K(MfMK#))---&&&r$   c                 <   S[        SS5      [        SS5      /0n[        R                  " USS9nU S-  nUR                  USUS9  UR                  US	US9  [        R
                  " S
S9 n[        R                  " S5        [        XCSUS9  [        XCSUS9  U Vs/ s HC  nUR                  [        L d  M  S[        UR                  5      R                  5       ;   d  MA  UPME     nn[        U5      S:X  d   S5       e S S S 5        g s  snf ! , (       d  f       g = f)Nr=   rr   ra   r  r@   zout.gpkglayer1)layerr#   layer2T)recordalways)r  r  r#   )ra  r  r#   zspecify layer parameterr   zJ'Specify layer parameter' warning was raised, but the layer was specified.)r   r1   r
   rc   re  rf  rg  r   categoryr   rT   messagelowerre   )ry  r#   data1r  r:   capturedwarningspecify_layer_warningss           r"   4test_read_file_multi_layer_with_layer_arg_no_warningr    s    %1+uQ{34E

 
 K
8C:%IKK	&K9KK	&K9		 	 	-h')XfE)XfE $"
#;.  *S-A-G-G-II # 	 "
 )*a/ 	
X	
/ 
.	-"
	 
.	-s*   +1DD7%D D&DD
Dc                     Sn[        U6 n[        R                  " [        SS9   [	        XUS9  S S S 5        g ! , (       d  f       g = f)Nr~  z%mask and bbox can not be set togetherr   )r  ra  )r   r&   r   r   r   )r#   r,   r  ra  s       r"   $test_read_file_bbox_mask_not_allowedr    s:    D :D	z)P	Q-6 
R	Q	Qs	   8
AzCignore:Layer 'b'test_empty'' does not have any features:UserWarningc                    US:X  a!  [         (       d  [        R                  " S5        SSKJn  0 SSS[        SS	/5      S
.S.n[        U R                  S5      5      nU" 5          [         R                  " US40 UD6 n S S S 5        S S S 5        [        XAS9n[        U[        R                  5      (       d   e[        UR                  / SQ:H  5      (       d   eg ! , (       d  f       Nb= f! , (       d  f       Nk= f)Nr   ztest requires fiona to workr   )	fiona_envrQ   rJ   r   )Azint:9)Zzfloat:24.15r   )rA   crs_wktrU   r   ztest_empty.shpwr(   )r
  r  r=   )r   r&   r'   geopandas.io.filer	  r   rT   r6   rS   r   r   r1   r
   rg   r   )ri   r#   r	  metafname_r  s          r"   test_read_file_empty_shapefiler    s     5512+ "%~7K&LM
	D ,-.E	ZZs+d+q , 
 e+EeY334444u}} 667777 ,+ 
s$   $C,=C?C,
C)	%C,,
C:c                   &    \ rS rSrS rS rS rSrg)
FileNumberi  c                 J    [        U5      U l        X l        X0l        SU l        g )Nr   )rT   ri   baserV   fileno)selfri   r  rV   s       r"   __init__FileNumber.__init__  s    &k	r$   c                     U R                    U R                  S SU R                   3n[        R                  R                  U R                  U5      $ )N02d.)r  r  rV   r4   r5   r6   ri   )r  r  s     r"   __repr__FileNumber.__repr__  s>    ii[S 1488*=ww||DKK22r$   c                 B    U =R                   S-  sl         [        U 5      $ )Nrr   )r  repr)r  s    r"   __next__FileNumber.__next__  s    qDzr$   )r  rV   r  ri   N)__name__
__module____qualname____firstlineno__r  r  r"  __static_attributes__r7   r$   r"   r  r    s    3r$   r  )rJ   shp)rM   r   c                   ^^^ [        U SU5      mUUU4S jnUR                  5       n[        US   UR                  S9nU" USS9  U=R                  S-  sl        U" USS9  [        [        S[        U5      S-   5      5      Ul        [        US   UR                  S9nU" USS9  UR                  5       n[        US   UR                  S9R                  SS	S
9nU" USS9  [        UR                  S9nU" USS9  UR                  5       n[        US   UR                  S9nSUR                  l	        U" USS9  SUR                  l	        U" USS9  UR                  5       nUS   US   -
  US'   UR                  SS/SS9  [        XfR                  S9nU" USS9  SS /UR                  l        U" USS9  S S /UR                  l        U" USS9  UR                  5       n[        US   UR                  S9nUR                  R                  [        5      S-  Ul        U" USS9  SUR                  l	        U" USS9  UR                  5       n[        US   UR                  S9n[        R                  " [        [        U5      5      SS9Ul        UR                  R                  [         5      Ul        U" USS9  UR                  5       n[        US   UR                  S9n[        R                  " [        [        U5      5      SS9[        R"                  " S/[        U5      -  5      -   Ul        TS:X  a$  UR                  R                  [         5      Ul        U" USS9  SUR                  l	        U" USS9  g )Ncheckc                   > [        U R                  5      nUR                  S5        T
S:X  a  S/nO/ nU(       a   [        U R                  R                  5      nO#S /[        U R                  R                  5      -  nUS /:X  a  S/nOH[        U5      S:  a9  [        U5      (       d)  [        U5       H  u  pVUb  M
  S[        U5      -   XE'   M     [        T5      nU R                  UT
S TS9  [        UTS9n[        U5      S	:X  a  US S  n	O/ n	U(       a  X-  n	XS/-   -  n	[        UR                  5      U	:X  d   e[        T5      nU R                  R                  UT
S TS9  [        UTS9nU(       a  US/-   n	OUS/-   n	[        UR                  5      U	:X  d   e[        T5      nU R                  UT
S
TS9  [        UTS9n[        UR                  5      XB-   S/-   :X  d   e[        T5      nU R                  R                  UT
S
TS9  [        UTS9n[        UR                  5      US/-   :X  d   e[        T5      nU R                  UT
STS9  [        UTS9n[        U5      S	:X  a  US/-   n	OUS/-   n	[        UR                  5      U	:X  d   e[        T5      nU R                  R                  UT
STS9  [        UTS9n[        UR                  5      US/-   :X  d   eg )Nr=   rJ   FIDr  rr   level_)rU   r  r#   r(   r   TF)listr   remover  namesre   rg   r   rT   nextrc   r   r=   )r-   index_is_used
other_cols
driver_col
index_colslevel	index_colrj   df_checkexpected_colsrU   r#   fngens             r"   	do_checks+test_write_index_to_file.<locals>.do_checks  s   "**%
*%%%JJbhhnn-J#bhhnn"55J $!J_q Z$-j$9 $(03u:(=J% %:
 E{


<d6
J\&9z?a&qMMM'Mzl22H$$%666 E{
LtFS\&9&*5M&*5MH$$%666 E{


<d6
J\&9H$$%)@J<)OOOO E{
LtFS\&9H$$%zl)BBBB E{


<eF
K\&9z?a&*5M&*5MH$$%666 E{
LuVT\&9H$$%zl)BBBBr$   r>   r   F)r3  rr   r^   r   )axis	foo_indexTr  r?   value3)r  firstr<   centiledays)unitz
1999-12-27rJ   r   )r  r   r
   r=   r  r/  rD   re   r   r  	set_indexr1  r|   floatr   to_timedeltarT   to_datetime)	ri   rH   rU   rV   r#   r<  df_pr-   r;  s	     ` `   @r"   test_write_index_to_filerJ    s    vw,EIC` >>D	d8nt}}	=Bb& HHMHb& eAs2w{+,DJ	d8nt}}	=Bb& >>D	d8nt}}	=	B	B11	B	MBb& 
t}}	-Bb& >>D	d8nt}}	=BBHHMb% BHHMb% >>D(^d8n4DNNNHh'N6	d]]	3Bb% t_BHHNb% D\BHHNb% >>D	d8nt}}	=Bzz  '",BHb% BHHMb% >>D	d8nt}}	=BuSW~F;BHxxs#BHb% >>D	d8nt}}	=BuSW~F;bnn	R ? BH !!88??3'b% BHHMb%r$   c                     U S-  nUR                  U5        UR                  5       (       d   e[        UR                  S5      5      (       d   eg )Nzboros.invalidz*.shp)rc   is_dirr/  glob)ry  r.   shpdirs      r"   !test_to_file__undetermined_driverrO    sB    'FOOF==???G$%%%%r$   	test_filez~/test_file.geojsonc                    [         R                  " [        SSSS5      /[        S9nUR	                  U SS9  [         R
                  " XS9n[        X#SS9  [        R                  " [        R                  R                  U 5      5        g )	Nr   r<   r   rM   )rU   r(   T)	check_crs)r1   r
   r   rB   rc   r   r   r4   r0  r5   
expanduser)rP  r#   r  df_jsons       r"   test_write_read_filerU    si     
 
 3q!R+<*=4
HCKK	)K,!!);Gcd;IIbgg  +,r$   zFiona not availablezFiona >= 1.9 supports metadatac                     SS0nU S-  nSn[         R                  " [        US9   UR                  USSUS9  S S S 5        g ! , (       d  f       g = f)	Ntitletestr  z5'metadata' keyword is only supported for Fiona >= 1.9r   rO   r   rU   r#   metadata)r&   r   r  rc   )ry  rH   rZ  tmp_filer   s        r"   /test_to_file_metadata_unsupported_fiona_versionr\    sO      H+%HCE	*%	8(6'HU 
9	8	8s   A
Az#only Fiona >= 1.9 supports metadatac                     SS0nU S-  nUR                  USSUS9  [        R                  " U5       nUR                  5       nXR:X  d   e S S S 5        g ! , (       d  f       g = f)NrW  rX  r  rO   r   rY  )rc   r   rS   tags)ry  rH   rZ  r[  srcr^  s         r"   -test_to_file_metadata_supported_fiona_versionr`    s`     H+%HhvgQ 
H	xxz 
		s   A
A"zPyogrio not availablec                 ~    SS0nU S-  nUR                  USSUS9  [        R                  " U5      nUS   nXR:X  d   eg )NrW  rX  r  rO   r   rY  layer_metadata)rc   r   	read_info)ry  rH   rZ  r[  inforb  s         r"   test_to_file_metadata_pyogriore    sV     H+%Hhvi(S X&D*+N%%%r$   zdriver, extrI   rL   c                     SS0n[         R                  R                  [        U5      SU-   5      n[        R
                  " [        SS9   UR                  X`US9  S S S 5        g ! , (       d  f       g = f)NrW  TestrX  z('metadata' keyword is only supported forr   )rU   rZ  )r4   r5   r6   rT   r&   r   r  rc   )rU   rV   ri   rH   r#   rZ  rj   s          r"   (test_to_file_metadata_unsupported_driverrh    sa      H77<<FVc\:L	#M
 	,I
 
 
s   
A$$
A2c                     UR                   US'   [        R                  " [        SS9   UR	                  [
        R                  R                  [        U 5      S5      5        S S S 5        g ! , (       d  f       g = f)Ngeom2z'GeoDataFrame contains multiple geometryr   z
boros.gpkg)	r=   r&   r   r   rc   r4   r5   r6   rT   )ri   r.   s     r"   test_multiple_geom_cols_errorrk    sM    ''GG	z)R	SS[,?@ 
T	S	Ss   9A++
A9c                 8    S[         R                  l        SS KnUR                  S   nSUR                  S'   [         R
                  " U 5      nX!R                  S'   S [         R                  l        g ! WWR                  S'   S [         R                  l        f = f)Nr   r   rJ   r  )r1   options	io_enginer   supported_driversr   )r,   r   origr  s       r"   test_option_io_enginerq    s    +&/	# 	&&'7847 01.48 01&*	# 59 01&*	#s   AA3 3&Bztest for pyogrio not installedc                     [         R                  " [        SS9   [        R                  " USS9  S S S 5        [         R                  " [        SS9   UR                  U S-  SS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)N!the 'read_file' function requiresr   r   r(   the 'to_file' method requiresr  r&   r   ImportErrorr1   r   rc   ry  rH   r:   s      r"   %test_error_engine_unavailable_pyogriorx    sm    	{*M	NIi8 
O 
{*I	J([0C 
K	J 
O	N 
K	J   A.A?.
A<?
Bztest for fiona not installedc                     [         R                  " [        SS9   [        R                  " USS9  S S S 5        [         R                  " [        SS9   UR                  U S-  SS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nrs  r   r   r(   rt  r  ru  rw  s      r"   #test_error_engine_unavailable_fionar{    sm    	{*M	NIg6 
O 
{*I	J([0A 
K	J 
O	N 
K	Jry  c                 $   U R                  [        R                  R                  SS 5        U R                  [        R                  R                  SS 5        U R                  [        R                  R                  SS5        [        R
                  " [        SS9   [        R                  " USS9  S S S 5        [        R
                  " [        SS9   UR                  US-  SS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)	N_import_pyogrioc                      g r   r7   r7   r$   r"   <lambda>Ctest_error_monkeypatch_engine_unavailable_pyogrio.<locals>.<lambda>  s    dr$   r   pyogrio_import_errorzNo module named 'pyogrio'r   r(   r  	setattrr1   r3  filer&   r   rv  r   rc   monkeypatchry  rH   r:   s       r"   1test_error_monkeypatch_engine_unavailable_pyogrior    s     	))+<lK	))9d;13N 
{*E	FIi8 
G 
{*E	F([0C 
G	F 
G	F 
G	F   C0D0
C>
Dc                 $   U R                  [        R                  R                  SS 5        U R                  [        R                  R                  SS 5        U R                  [        R                  R                  SS5        [        R
                  " [        SS9   [        R                  " USS9  S S S 5        [        R
                  " [        SS9   UR                  US-  SS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)	N_import_fionac                      g r   r7   r7   r$   r"   r  Atest_error_monkeypatch_engine_unavailable_fiona.<locals>.<lambda>*  s    Dr$   r   fiona_import_errorzNo module named 'fiona'r   r(   r  r  r  s       r"   /test_error_monkeypatch_engine_unavailable_fionar  &  s     	))?LI	))7D9/1J 
{*C	DIg6 
E 
{*C	D([0A 
E	D 
E	D 
E	Dr  c                    [         R                  R                  [        U5      S5      nU R	                  USS9  U R                  U R                  S5      5      R	                  USS9  U R                  U R                  S5      R                  5      R	                  USS9  [        R                  " U SS	/   US
S9  [        R                  " U5      n[        R                  " / SQ/ SQS.5      n[        X45        g )Nzdataset.gpkgoriginal)r  rr   bufferedra   boundaryr>   r?   non-spatial)r  r  r  r  )r   r   
LineStringN)r  geometry_type)r4   r5   r6   rT   rc   set_geometrybufferr  r   write_dataframer1   list_layersr   rd  r   )rH   ri   rj   layersr   s        r"   test_list_layersr  7  s    77<<F^<Ll*59++A./77J7W9++A.778@@J A  8X&'] ""<0F||GE	
H v(r$   )returnN)r   r3  r/  r4   rm   rx  rM  re  zoneinfocollectionsr   packaging.versionr   numpyrf   pandasr   pandas.api.typesr   shapely.geometryr   r   r   r	   r1   r
   r   r   r   geopandas._compatr   r   r   r  r   r   r&   geopandas.testingr   r   geopandas.tests.utilr   r   pandas.testingr   r   r   __version__base_versionr.  r   r  rv  r   r  markskipifPYOGRIO_MARK
FIONA_MARKrB   filterwarnings
pytestmarkfixturer    r#   r)   r.   r8   r:   rH   driver_ext_pairsrY   parametrizerk   rp   r   	TEST_DATEtimezoner   ZoneInfoeasternr  test_date_easterndatetime_type_testsr   dt_extsr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  webr   r  r#  r&  r1  r:  rB  rG  rK  rT  rZ  r\  rn  rq  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  rJ  rO  rn   rU  r\  r`  re  rh  rk  rq  rx  r{  r  r  r  r7   r$   r"   <module>r     s1    	  	      # %   4 9 9  H H H H B  O > B WW%8%89FFG7L N WW%8%89FFG7L N gg&9&9:GGHGM O'%"3"34AABggFVVK {{!!g+6M!N[[E	2GH
  [[''(MN
 WJ/Yl3<
  
   X X 
 
" 	 '785 95, '78
1 9
1 '785 952 dBAq"e<	


.
/%%W%5  "34  K 
%Q   '78* 9*> 9
( (
5 )
5 (4 )4($( '785 95 '785 95,. '7;N:O'OP1 Q1. '78
B 9
B<'@ 
N+AB! C!<I 0 '78 E 9 EF? OP'78* 9 Q*8 7 		3 3
 	 	5 1%@3 A 3
3 
N+ABF CF$<;>?,77 
N+ABJ6 CJ6Z3$3 &/KL3 M3	LLA
X
 G

BD
Y Q88 Q00%$	-,", 0 K,u95KL
 M
 Q,,  O,IJ
 K
& 
N+ABudm4' 5 C', 
N+ABudm4' 5 C',''  
N+AB' C'( 
N+AB' C'( 
N+AB
 C
07 I886   ,.DEe&e&P& 7<< 569NO-- EUN+@AK(HIV J BV O,QR	  S	  Gu$-DE	& F	& .0GHJJA +  +" G$DED FD E"@AB BBD	D"B	B" ) )[0  GNNO	  EKs%   
Be+ /f  +e=<e= 
ff