
    h              	          d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZd dlZd dlmZ d dlmZmZmZmZ d dlZd dlmZmZmZmZ d dlmZmZ d dl m!Z!m"Z" d dl#Z#d d	l$m%Z%m&Z& d d
l'm(Z(m)Z) d dl*m+Z+m,Z, 	 d dl-Z- e ee-j\                        j^                         ed      k\  Z0	 d dl2Z2 e ee2j\                        j^                         ed      k\  Z3e#jh                  jk                  e- d      Z6e#jh                  jk                  e2 d      Z7dZ8e#jh                  js                  d      Z: e#jv                   e#jx                  de7       e#jx                  de6      g      d        Z=d Z>e#jv                  d        Z?e#jv                  d        Z@e#jv                  d        ZAe#jv                  d        ZBg dZCd ZDe#jh                  j                  d eC      d!        ZFe#jh                  j                  d eC      d"        ZGe#jh                  j                  d eC      d#        ZH e j                   d$d%d&d'd(d)d*      ZIe j                  j                  ZK ej                  d+      ZMeIj                  eM,      ZOeIeOfZPe#jh                  js                  d-      e#jh                  j                  d.ePd/0      e#jh                  j                  d eC      d1                      ZQd2d3gZRd4 ZSe#jh                  j                  d5eR      d6        ZTe#jh                  j                  d5eR      d7        ZUd8 ZVe#jh                  j                  d eC      d9        ZWe#jh                  j                  d eC      d:        ZXd; ZYe#jh                  j                  d eCd<gz         d=        ZZe#jh                  j                  d eC      d>        Z[d? Z\d@ Z]e#jh                  jk                  e dA      dB        Z^dC Z_dD Z`e#jh                  j                  d eC      dE        ZadF Zbe#jh                  js                  dG      e#jh                  j                  d eC      dH               ZcdIZddJ Zee#jh                  j                  e#jh                  j                  dKg dL      dM               ZgdN Zhe#jh                  jk                  e dA      dO        ZidP ZjdQ ZkdR ZldS ZmdT ZndU ZodV Zpe#jh                  jk                  e dA      dW        ZqdX ZrdY Zse#jh                  jk                  e0 dZ      d[        Ztd\ Zud] Zvd^ Zwd_ Zxe#jh                  js                  d`      da        Zydb Zzdc Z{e#jh                  js                  dd      de        Z|e#jh                  js                  dd      df        Z}dg Z~dh Zdi Zdj Zdk Zdl Ze#jh                  jk                  e3xs e2 dm      dn        Ze#jh                  js                  dd      do        Ze#jh                  jk                  e3 dp      dq        Ze#jh                  jk                  e dA      e#jh                  j                  drddsg      dt               Ze#jh                  jk                  e dA      e#jh                  j                  drddsg      du               Zdv Zdw Ze#jh                  jk                  e dA      dx        Ze#jh                  jk                  e dA      dy        Ze#jh                  jk                  e dA      dz        Zd{ Ze#jh                  js                  d|      d}        Z G d~ d      Ze#jh                  j                  d ddg      d        Zd Ze#jh                  j                  d ej&                  d      dg      d        Ze#jh                  jk                  e2du d      e#jh                  jk                  e3d      d               Ze#jh                  jk                  e3 d      d        Ze#jh                  jk                  e-du d      d        Ze#jh                  j                  dddg      d        Zd Ze6e7d               Ze#jh                  jk                  e-d      d        Ze#jh                  jk                  e2d      d        Ze6d        Zy# e1$ r dZ-dZ0Y w xY w# e1$ r dZ2dZ3Y w xY w)    N)OrderedDict)Version)is_datetime64_any_dtype)PointPolygonboxmapping)GeoDataFrame	GeoSeriespoints_from_xy	read_file)
HAS_PYPROJPANDAS_GE_30)_EXTENSION_TO_DRIVER_detect_driver)assert_geodataframe_equalassert_geoseries_equal)PACKAGE_DIRvalidate_boro_df)assert_frame_equalassert_series_equalz0.9.0Fz1.9.0zpyogrio not installed)reasonzfiona not installedz	epsg:4326z#ignore:Value:RuntimeWarning:pyogriofiona)markspyogrio)paramsc                     | j                   S )N)param)requests    O/var/www/html/immo/lib/python3.12/site-packages/geopandas/io/tests/test_file.pyenginer!   =   s     ==    c                 :    | dk(  rt        j                  d       y y )Nr   z$not supported for the pyogrio engine)pytestskipr!   s    r    skip_pyogrio_not_supportedr'   G   s    :; r"   c                      t        ||       }|S Nr&   )r   )r!   nybb_filenamedfs      r    df_nybbr,   L   s    	=	0BIr"   c            	      b    t        t        j                  j                  t        dddd            S N	geopandastestsdataznull_geom.geojson)r   ospathjoinr    r"   r    df_nullr6   R   s(    
[+w@ST r"   c                  P    t         j                  j                  t        dddd      S r.   )r2   r3   r4   r   r5   r"   r    	file_pathr8   Y   s    77<<['6CVWWr"   c            
          d} t         }t        t        t        |       t        |             D cg c]  \  }}t	        ||      ||z   ||z  d c}}|      }|S c c}}w )N
   )geometryvalue1value2crs)_CRSr
   zipranger   )Nr?   xyr+   s        r    	df_pointsrF   ^   sg    
A
C	 E!HeAh/	
1 q!AQG	
 
B I	
s    A
)ESRI Shapefile.shpGeoJSON.geojson)GPKG.gpkg)NrI   )N )NrL   )NrN   c                     |dk(  rdnt         |   }|dk(  r:t        j                  t        |             5 }|j                  |k(  sJ 	 d d d        y y # 1 sw Y   y xY w)NrO   rH   r   )r   r   openstrdriver)r8   extr!   expected_driverfdss        r    assert_correct_driverrW   {   sa    *-)&9Mc9ROZZI' 	13::000	1 	1 			1 	1s   AAz
driver,extc                 z   t         j                  j                  t        |       d|z         }|j	                  |||       t        j                  ||      }d|v sJ t        |      dk(  sJ t        j                  |d   j                  |d   k(        sJ t         j                  j                  t        |       d|z         }|j	                  |||       t        j                  ||      }d|v sJ t        |      dk(  sJ t        j                  |d	   j                  |d	   k(        sJ t        |||       y
)Test to_file and from_fileboros.rS   r!   r&   r;      BoroName	null_geom   NameN)r2   r3   r4   rR   to_filer
   	from_filelennpallvaluesrW   )tmpdirr,   r6   rS   rT   r!   tempfilenamer+   s           r    test_to_fileri      s    77<<FX^<LOOLO?			V	<Br7a<<66"Z.''7:+>>??? 77<<F[3->?LOOLO?			V	<Br7a<<66"V*##wv6777,V4r"   c                 r   t        j                  t        j                  j	                  t        |       d|z               }|j                  |||       t        j                  ||      }d|v sJ t        |      dk(  sJ t        j                  |d   j                  |d   k(        sJ t        |||       y)rY   rZ   r[   r&   r;   r\   r]   N)pathlibPathr2   r3   r4   rR   ra   r
   rb   rc   rd   re   rf   rW   )rg   r,   rS   rT   r!   temppathr+   s          r    test_to_file_pathlibrn      s     ||BGGLLVhnEFHOOHVFO;				8Br7a<<66"Z.''7:+>>???(C0r"   c           	         t         j                  j                  t        |       d|       }t	        g dt        dd      t        dd      t        dd      gdd      }|j                  |||	       t        ||
      }|dv ri|dk(  r5t        j                  j                  dk  r|d   j                  d      |d<   n/|dk(  r*t        j                  dk  r|d   j                  d      |d<   t        ||       t        |||       y)z>Test error raise when writing with a boolean column (GH #437).ztemp.)TFTr      r_   )colr;     r>   r[   r&   rI   rO   r   	   rq   int64r   )   rt   int32N)r2   r3   r4   rR   r
   r   ra   r   r   gdal_versionminorastyper   __gdal_version__r   rW   rg   rS   rT   r!   rh   r+   results          r    test_to_file_boolr~      s     77<<FuSE];L	&q!eAqk5A;?	
 
B JJ|F6J:|F3F
l W!3!3!9!9A!=5	((1BuIy W%=%=%F5	((1BuIfb),V4r"   i        rp      +   i\D  zAmerica/New_York)tzinfozEignore:Non-conformant content for record 1 in column b:RuntimeWarningtime)naive_datetimedatetime_with_timezone)idsc                    |dv rt        j                  d| d       t        j                  j	                  t        |       d|       }t        dd      }t        ddg||gd||gd	
      }|d   j                  j                  d      |d<   |j                  |||       t        ||      }t        |j                  dg      |j                  dg             |d   }	|d   j                  j                  d      }	|d   }
|d   j                  j                  >|	j                  j!                  t"              }	|
j                  j!                  t"              }
t%        |	|
       y)z6Test writing a data file with the datetime column typers   zDriver corresponding to ext z doesn't support dt fieldstest_datetimer         ?       @)abrr   r;   r?   r   ms)freqr[   r&   columnsN)r$   r%   r2   r3   r4   rR   r   r
   dtroundra   r   r   dropas_unittz
tz_convertutcr   )rg   rS   rT   r   r!   rh   pointr+   df_readexpectedactuals              r    test_to_file_datetimer      sB    l23%7QRS77<<F}SE-BCL!QKE	Cjd|,u~4
B gjjD)BsGJJ|F6J:V4Gbggseg4gllC5l6QR#wH#wzz!!$'HS\F	#wzz}}  ;;))#.%%c*&)r"   gpkggeojsonc           	      l   t         j                  j                  t        |      d|       }t	        dd| gt        dd      t        dd      t        dd      gd      }|dk(  r|j                  ||       |S ddd	id
}|dk(  rt        st        j                  d       |j                  ||d       |S )Nztest_invalid_datetime.z2014-08-26T10:01:23rp   dater;   r   r&   r   r   datetimer;   
propertiesr   z test requires fiona kwarg schemar   schemar!   )
r2   r3   r4   rR   r
   r   ra   r   r$   r%   )date_strrg   rT   r!   rh   r+   r   s          r    write_invalid_date_filer      s    77<<F/EcU-KLL	*,A8Lq!eAqk5A;?	

B i


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


<w
?r"   rT   c                 @   d}t        || ||      }t        ||      }|dk(  r8t        |d         sJ t        j                  |d   j
                  d         sJ y t        r|d   j                  dk(  s
J t        sJ t        |d   j
                  d   t              sJ y )Nz9999-99-99T00:00:00r&   r   r   rR   )r   r   r   pdisnailocr   dtypeobject
isinstancerR   rg   rT   r!   r   rh   ress         r    test_read_file_datetime_invalidr     s     %H*8VS&IL
L
0C
f}&s6{333wws6{''+,,,-9s6{  E)EEvEE#f+**2.444r"   c                 4   d}t        || ||      }t        ||      }t        r?|d   j                  dk(  sJ |d   j                  d   t        j                  d      k(  sJ y |d   j                  dk(  sJ t        |d   j                  d   t              sJ y )	Nz9999-12-31T00:00:00r&   r   zdatetime64[ms]r   z9999-12-31 00:00:00r   r   )	r   r   r   r   r   r   	Timestampr   rR   r   s         r    (test_read_file_datetime_out_of_bounds_nsr     s     %H*8VS&IL
L
0C6{  $44446{#r||4I'JJJJ 6{  H,,,#f+**1-s333r"   c                 >   t         j                  j                  t        |       d      }t	        ddgt        dd      t        dd      gd      }|j                  |       t        |      }t        |d         sJ |d   j                  j                  t        k(  sJ y )Nztest_mixed_datetime.geojsonz 2014-08-26 10:01:23.040001+02:00z 2019-03-07 17:31:43.118999+01:00rp   r   r   )r2   r3   r4   rR   r
   r   ra   r   r   r   r   r   )rg   rh   r+   r   s       r    %test_read_file_datetime_mixed_offsetsr   (  s    77<<F-JKL	 32 q!eAqk2	

B JJ|
L
!C"3v;///v;>>###r"   c                 n   t         j                  j                  t        |       d|z         }t	        ddd      }t	        dd      }t        dddgi||gt              }|j                  |||       t        j                  ||	      }t        |j                  |j                         t        |||       y
)9Test that 3D geometries are retained in writes (GH #612).test_3Dpointr   i  rp   r   r_   r   r[   r&   N)r2   r3   r4   rR   r   r
   r@   ra   rb   r   r;   rW   )	rg   rT   rS   r!   rh   point3dpoint2dr+   r   s	            r    test_to_file_with_point_zr   <  s     77<<F^c-ABLAq#GAqkG	sQFmw.@d	KBJJ|F6J:$$\&AG2;;(8(89,V4r"   c                    t         j                  j                  t        |       d|z         }t	        g dg dg dg dg      }t	        ddgddgddgddgg      }t        ddd	gi||gt        
      }|j                  |||       t        j                  ||      }t        |j                  |j                         t        |||       y)r   test_3Dpoly)r   r   r\   )r   rp   r\   )rp   rp   r\   )rp   r   r\   r   rp   r   r_   r   r[   r&   N)r2   r3   r4   rR   r   r
   r@   ra   rb   r   r;   rW   )	rg   rT   rS   r!   rh   poly3dpoly2dr+   r   s	            r    test_to_file_with_poly_zr   K  s     77<<F]S-@ALiIyABFq!fq!fq!fq!f56F	sQFmvv.>D	IBJJ|F6J:$$\&AG2;;(8(89,V4r"   c           
      V   t         j                  j                  t        |       d      }t        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g	}|j                  }t        |      D ci c]/  \  }}t        |      t	        j                   t#        |      |      1 }}}t%        ||      }	|	j'                  ||       yc c}}w )z)Test various integer type columns (GH#93)zint.shpr   r;   r&   N)r2   r3   r4   rR   rd   int8int16rw   ru   intpuint8uint16uint32uint64r;   	enumeratearangerc   r
   ra   )
rg   rF   r!   rh   	int_typesr;   ir   r1   r+   s
             r    test_to_file_typesr   Z  s    77<<FY7L






		
		
		
I !!H "),Au 	A		#h-u55D  
dX	.BJJ|FJ+s   4D%)OGR_GMTz.gmtc                    t         j                  j                  t        |       d|       }|j                  }t        |      }t        j                  dt        j                  gdz  t        j                               |d<   |j                  |||       t        j                  ||      }|j                         }	|	d   j                  d	      |	d<   t        ||	d
       t         j                  j                  t        |       d|       }
|j!                         }|j                  |
||       t        j                  |
|      }|dk(  r|d   j"                  dk(  sJ y |d   j"                  dk(  sJ y )Nzint32.r   rp   r\   r   r1   r[   r&   float64T
check_likezint32_2.r   rw   ru   )r2   r3   r4   rR   r;   r
   r   arrayrd   nan
Int32Dtypera   rb   copyrz   r   dropnar   )rg   rF   r!   rS   rT   rh   r;   r+   r   r   tempfilename2df2df2_reads                r    test_to_file_int32r   q  s:   77<<FvcU^<L!!H	x	(B1bff+/ABvJJJ|F6J:$$\&AGwwyH'..y9HVgxDAGGLLV.>?M
))+CKKfVK<%%mFCH%%000 %%000r"   c                    t         j                  j                  t        |       d|       }|j                  }t        |      }t        j                  dt        j                  gdz  t        j                               |d<   |j                  |||       t        j                  ||      }|j                         }	|	d   j                  d	      |	d<   t        ||	d
       y )Nzint64.r   rp   r\   r   r1   r[   r&   r   Tr   )r2   r3   r4   rR   r;   r
   r   r   rd   r   
Int64Dtypera   rb   r   rz   r   )
rg   rF   r!   rS   rT   rh   r;   r+   r   r   s
             r    test_to_file_int64r     s    77<<FvcU^<L!!H	x	(B1bff+/ABvJJJ|F6J:$$\&AGwwyH'..y9HVgxDAr"   c                     t        dg      }t        j                  j                  t	        |       d      }t        j                  t              5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr;   r   test.shpr&   )	r
   r2   r3   r4   rR   r$   warnsUserWarningra   )rg   r!   input_empty_dfrh   s       r    test_to_file_emptyr     sZ    !:,7N77<<FZ8L	k	" <|F;< < <s   A--A6c                    t         j                  j                  t        |       d      }t	        g d      }d|d}|dk(  rDt        j                  t              5  |j                  dd j                  |||       ddd       y|j                  dd j                  |||       d	dl
} |j                  |      5 }|j                  }ddd       |k(  sJ y# 1 sw Y   yxY w# 1 sw Y   xY w)
zY
    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   Nr_   r   r   )r2   r3   r4   rR   r   r$   raises
ValueErrorr   ra   r   rQ   r   )	rg   r,   r!   rh   r   r   r   fresult_schemas	            r    test_to_file_schemar     s     77<<FZ8L	
J $:>F]]:& 	QLL!$$\&$P	Q 	Q 	Ra  fV LUZZ% 	%HHM	% &&&	Q 	Q	% 	%s   "C<C%C"%C.zpyproj not installedc                    t        ||      }t        j                  j                  t	        |       d      }|j                  ||       t        j                  ||      }|j                  |j                  k(  sJ |dk(  r9t        j                  t        d      5  |j                  |d|       ddd       y|j                  |d|       t        j                  ||      }|j                  d	k(  sJ |j                  dd
      }|j                  |d|       t        j                  ||      }|j                  dk(  sJ y# 1 sw Y   yxY w)zU
    Ensure that the file is written according to the crs
    if it is specified
    r&   zcrs.shpr   zPassing 'crs' is not supportedmatchi  )r?   r!   Nz	epsg:3857T)allow_overridei  	epsg:2263)r   r2   r3   r4   rR   ra   r
   rb   r?   r$   r   r   set_crs)rg   r!   r*   r+   rh   r}   r   s          r    test_to_file_crsr     s#    
=	0B77<<FY7L JJ|FJ+##L@F::]]:-MN 	>JJ|fJ=	> JJ|fJ5##L@F::$$$ **T$*
/CKK$vK6			V	<B66[   	>s   EEc                 $   t         j                  j                  t        |       d      }|j                  dd j                         }dg|d<   t        j                  t        d      5  |j                  |d|	       ddd       y# 1 sw Y   yxY w)
z
    Ensure that a warning about truncation is given when a geodataframe with
    column names longer than 10 characters is saved to shapefile
    r   Nrp   z the column name is 11 characters0123456789Az8Column names longer than 10 characters will be truncatedr   rH   r[   )
r2   r3   r4   rR   r   r   r$   r   r   ra   )rg   rF   r!   rh   r+   s        r    test_to_file_column_lenr     s    
 77<<FZ8L			 	 	"B;<B}	U
 I 	

<(8
HI I Is   (BBc                    t        g dgg dt        dd      g      }t        j                  j	                  t        |       d      }t        j                  t        d      5  |j                  ||       d d d        y # 1 sw Y   y xY w)	Nrp   r_   rv   )r   r   r   rp   )r1   r   r;   zduplicate.shpz4GeoDataFrame cannot contain duplicated column names.r   r&   )
r
   r   r2   r3   r4   rR   r$   r   r   ra   )rg   r!   r+   rh   s       r    #test_to_file_with_duplicate_columnsr    sm    	I;5QRTU;-	XB77<<F_=L	P
 0 	

<
/0 0 0s   #B  B	c                    t         j                  j                  t        |       d|z         }|r|n
t	        |      }|j                  |||       |j                  |d||       t        j                  ||      }d|v sJ t        |      dk(  sJ t        j                  |gdz  d	
      }t        ||d	       |dk(  rt         j                  j                  t        |       d|z         }|j                  |||       |j                  |d	||       t        j                  ||      }t        |      t        |      dz  k(  sJ t         j                  j                  t        |       d|z         }|j                  |||       |j                  |d||       t        j                  ||      }d|v sJ t        |      dk(  sJ t        j                  |gdz  d	
      }t        ||d	       y)z+Test to_file with append mode and from_fileborosr[   r   )moderS   r!   r&   r;   r:   r_   T)ignore_index)check_less_preciser   boros2)appendrS   r!   r^      N)r2   r3   r4   rR   r   ra   r
   rb   rc   r   concatr   )	rg   r,   r6   rS   rT   r!   rh   r+   r   s	            r    test_append_filer    s    77<<FWs];LV>,#?FOOLO?OOLs6&OI			V	<Br7uyy'QT:Hb(tDww||CKC@VFCT&P##L@2w3w<!+,,, 77<<F[3->?LOOLO?OOLs6&OI			V	<Br7uyy'QT:Hb(tDr"   c                     t         j                  j                  t        |       d      }t	        j
                  t        d      5  |j                  |d|       d d d        y # 1 sw Y   y xY w)Nzdata.shpz"'mode' should be one of 'w' or 'a'r   r)r  r!   )r2   r3   r4   rR   r$   r   r   ra   )rg   r,   r!   rh   s       r    test_mode_unsupportedr    sP    77<<FZ8L	z)M	N ?3v>? ? ?s   A##A,z1ignore:'crs' was not provided:UserWarning:pyogrioc           	         |dk(  rt        j                  d       t        j                  j	                  t        |       d|z         }t        g dt        dd      t        dd      t        dd      gd      }|j                  |||	       t        ||
      }|dk(  rd|j                  j                  _        t        ||       y)z;Test handling of undefined CRS with GPKG driver (GH #1975).rN   z+GPKG is read with Undefined geographic SRS.r  )r   r   g      @r   rp   r_   )r   r;   r[   r&   rL   	EPSG:4326N)r$   xfailr2   r3   r4   rR   r
   r   ra   r   r;   r   r?   r   r|   s          r    test_empty_crsr     s     g~BC77<<FWs];L	 q!eAqk5A;?	

B JJ|F6J:|F3F
j +fb)r"   r   c                     t        ||       }t        |       t        r|j                  t        k(  sJ g d}|j
                  d d |k(  j                         sJ y )Nr&   )r   r]   r   r   r   )r   r   r   r?   NYBB_CRSr   re   )r!   r*   r+   expected_columnss       r    test_read_filer  A  sS    	=	0BRvv!!!KJJsO//44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.zipz*https://geonode.goosocean.org/download/480z5https://demo.pygeoapi.io/stable/collections/obs/itemsc                 V    t        ||       }t        |t        j                        sJ y r)   r   r   r/   r
   )r!   r  gdfs      r    test_read_file_urlr  J  s&    " C
'Cc911222r"   c                 `    d| z   }t        ||      }t        |t        j                        sJ y )Nzfile://r&   r  )r8   r!   	local_urir  s       r    test_read_file_local_urir  _  s.    I%I
If
-Cc911222r"   c                    | dk(  rt         st        j                  d       t        dgt	        dd      gd      }ddd	did
ddgddgd}t        t        j                  |      |       }t        |j                  d      |       y )Nr   zfixed in pyogrio 0.9.0zrow # 0r   rp   )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_pathr*  e  s    >,-ykaQR}UVH# ".	:%,c3ZH
	H 

8,V<Gh..{;WEr"   c                    t        |       }t        j                  t        |       j                               }t	        ||      }t	        ||      }t        |t        j                        sJ t        |t        j                        sJ y r)   )rQ   ioStringIOreadr   r   r/   r
   )r8   r!   file_text_streamfile_stringiogdf_text_streamgdf_stringios         r    test_read_file_textior3  x  sl    IKKY 4 4 67M 0@O]6:Loy'='=>>>lI$:$:;;;r"   c                    t        | d      }t        j                  t        | d      j                               }t	        ||      }t	        ||      }t        |t        j                        sJ t        |t        j                        sJ y )Nrbr&   )rQ   r,  BytesIOr.  r   r   r/   r
   )r8   r!   file_binary_streamfile_bytesiogdf_binary_streamgdf_bytesios         r    test_read_file_bytesior;    st    i.::d9d388:;L!"4VDL8K')?)?@@@k9#9#9:::r"   c                 r    t        | dd      }t        ||      }t        |t        j                        sJ y )Nr5  r   )	bufferingr&   )rQ   r   r   r/   r
   )r8   r!   file_raw_streamgdf_raw_streams       r    test_read_file_raw_streamr@    s2    9da8Ov>Nni&<&<===r"   c                     t        j                  |       }t        ||      }t        |t        j
                        sJ y r)   )rk   rl   r   r   r/   r
   )r8   r!   path_objectgdf_path_objects       r    test_read_file_pathlibrD    s2    ,,y)KF;Ooy'='=>>>r"   c                     t        j                         }|j                  d       |j                  d       t	        j
                  ||       }t        |t        j                        sJ |j                          y )Ns   
    {
      "type": "Feature",
      "geometry": {
        "type": "Point",
        "coordinates": [0, 0]
      },
      "properties": {
        "name": "Null Island"
      }
    }
    r   r&   )	tempfileTemporaryFilewriteseekr/   r   r   r
   close)r!   tempgdf_tempfiles      r    test_read_file_tempfilerM    s_    !!#DJJ	 	IIaL&&tF;LlI$:$:;;;JJLr"   c                     t        j                  d      }|dd  }|j                  |d      5 }t        ||       }t	        |t
        j                        sJ 	 d d d        y # 1 sw Y   y xY w)Nfsspec   r5  r&   r$   importorskiprQ   r   r   r/   r
   )r!   r*   rO  r3   r   r  s         r    test_read_binary_file_fsspecrS    sg      *F D	T4	  7A&)#y556667 7 7s   *A!!A*c                     t        j                  d      }|j                  | d      5 }t        ||      }t	        |t
        j                        sJ 	 d d d        y # 1 sw Y   y xY w)NrO  r  r&   rQ  )r8   r!   rO  r   r  s        r    test_read_text_file_fsspecrU    sY      *F	Y	$ 7&)#y556667 7 7s   *AA%c                    t         j                  j                  t        j                         d      }t         j                  j                  t        j                         d      }t        j                  g dg dd      }t        |t        |j                  |j                        d      }t        |t        |j                  |j                              }|j                  |       |j                  |       t        j                  t        d	      5  t        ||| 
      }t!        ||       ddd       t        j                  t        d	      5  t        ||| 
      }t!        ||       ddd       t        j                  t        d	      5  t        ||| 
      }t!        ||       ddd       t#        j$                         5  t#        j&                  d       t        ||| 
      }t!        ||       ddd       t)        t        |j                  |j                        d      }t)        t        |j                  |j                              }t        j                  t        d	      5  t        ||| 
      }t!        ||       ddd       t        j                  t        d	      5  t        ||| 
      }t!        ||       ddd       t        j                  t        d	      5  t        ||| 
      }t!        ||       ddd       t#        j$                         5  t#        j&                  d       t        ||| 
      }t!        ||       ddd       y# 1 sw Y   -xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)zb
    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   rp   r_   rv   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>   )r2   r3   r4   rF  mkdtempr   	DataFramer
   r   rX  rW  ra   r$   r   r   r   r   warningscatch_warningssimplefilterr   )	r!   file_with_crsfile_without_crsr+   gdf_with_crsgdf_without_crsr1   series_with_crsseries_without_crss	            r    #test_read_file_crs_warning_messagesrg    s    GGLL!1!1!35HIMww||H$4$4$68NO	'(	

B  
^BLL"++>KL #
^BLL"++>O ',-	k)S	T 6_VL!$56 
O
 9 )VL!$8	9 
K
 9 )O!$89 
	 	 	" 6g&\&I!$56  r||R[[1{O #>",,#LM	k)S	T 6-?O!$56 
O
 9 )O!$8	9 
K
 9 )0B6R!$89 
	 	 	" 6g&_VL!$56 6]6 69 99 96 66 69 99 96 6s`   MM(M50N/N-N+N("0N4M%(M25M?NNN%(N14N=c                    |dd  }t        ||       }t        |t        j                        sJ t        d|z   |       }t        |t        j                        sJ t        |dz   |       }t        |t        j                        sJ y )NrP  r&   zfile+file://z	!nybb.shpr  r!   r*   r3   r  s       r    test_infer_zipped_filerj    s     D
D
(Cc911222 NT)&
9Cc911222 D;&v
6Cc911222r"   c                 f    d|dd  z   }t        ||       }t        |t        j                        sJ y )Nz/vsizip/rP  r&   r  ri  s       r    test_allow_legacy_gdal_pathrl    s5    ab))D
D
(Cc911222r"   zbug fixed in pyogrio 0.9.0c                     |dz  }|j                  dd       |dz  }t        j                  |dd  |       t        ||       }t	        |t
        j                        sJ y )Nzpath with # presentT)exist_okparentsznybb.ziprP  r&   )mkdirshutilr   r   r   r/   r
   )r!   r*   tmp_pathfolder_with_hash	read_pathr  s         r     test_read_file_with_hash_in_pathru  $  sb    "77D$7 :-I
KKab!9-
If
-Cc911222r"   c                     d}t        |||      }| | d   j                  ddg         }t        ||j                  d             y )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  .  sP    D MVDKwz*//(0CDEHk8+?+?T+?+JKr"   c                     t        dddd      }t        |||      }| | d   j                  ddg         }t        ||j	                  d	
             y )Nrx  ry  rz  r{  r|  r]   r~  r  Tr  )r   r   r  r   r  r  s         r    test_read_file_bbox_polygonr  :  s_    .0BDVD MVDKwz*//(0CDEHk8+?+?T+?+JKr"   c                 \    t        |d|      }t        || j                  dgd d f          y )Nrp   rowsr!   r   )r   r   r   r,   r!   r*   r  s       r    test_read_file_filtered__rowsr  C  s)    M&AKk7<<Q+?@r"   c                     t        |t        dd      |      }t        || j                  ddd d f   j	                  d             y )Nrp   rv   r  Tr  )r   slicer   r   r  r  s       r    #test_read_file_filtered__rows_slicer  H  s@    MaFKKk7<<!Q+?+K+KQU+K+VWr"   zAignore:Layer does not support OLC_FASTFEATURECOUNT:RuntimeWarningc           	         d}|dk(  r't        ||t        dd       |      }|j                  sJ |dk(  r>t        j                  t
        d      5  t        ||t        dd       |      }d d d        y t        ||t        dd       |      }|d	   j                  d
      |d	<   t        || j                  dd d d f   j                  d             y # 1 sw Y   y xY w)Nrw  r   r
  )r}  r  r!   r   z<'skip_features' must be between 0 and 1|Negative slice startr   r   r   ru   Tr  )
r   r  emptyr$   r   r   rz   r   r   r  )r,   r!   r*   r}  r  s        r    "test_read_file_filtered__rows_bboxr  M  s    D 5D>&
     ]]P
 	 $DuRvK		 	  5T?6
 #.j"9"@"@"IJ!ab!e,88d8C	
	 	s   CCc                 |    t        j                  t              5  t        |d|        d d d        y # 1 sw Y   y xY w)Nnot_a_slicer  )r$   r   	TypeErrorr   )r!   r*   s     r    $test_read_file_filtered_rows_invalidr  q  s3    	y	! D-mFCD D Ds   2;c                     t        j                  |d|       }d|j                  vsJ t        |t        j
                        rt        |t         j                        rJ y )NT)ignore_geometryr!   r;   )r/   r   r   r   r   r]  r
   )r!   naturalearth_lowrespdfs      r    test_read_file__ignore_geometryr  v  sU    


C
 S[[(((c2<<(CAWAW1XXX1Xr"   zKignore:The 'include_fields' and 'ignore_fields' keywords:DeprecationWarningc                 z    t        j                  |g d|       }|j                  j                         ddgk(  sJ y )N)pop_est	continentiso_a3
gdp_md_estignore_fieldsr!   namer;   r/   r   r   tolistr!   r  r  s      r    test_read_file__ignore_fieldsr    s?     

FC
 ;;FJ#7777r"   c                 x    t        j                  |g d|       }|j                  j                         dgk(  sJ y )N)r  r  r  r  r  r  r;   r  r  s      r    !test_read_file__ignore_all_fieldsr    s<     

NC
 ;;J<///r"   c                    t        | dz        }t        j                  t        j                  g dd      g dd      }|j                  |d       t        j                  ||	      }|d
   j                  d      |d
<   t        |t        j                        sJ t        |t        j                        rJ t        ||       y )Ntest.csvr  ru   r   )r   r   c)col1col2Findexr&   r  )rR   r   r]  rd   r   to_csvr/   r   rz   r   r
   r   )rg   r!   filenamer   r+   s        r    test_read_file_missing_geometryr    s    6J&'H||)73_MH OOHEO*			Xf	5BF""7+BvJb",,'''"i44555r8$r"   c                     | dz  }t        dd d git        dd      t        dd      gd      }|j                  ||	       t        ||	      }t	        ||       y )
N	test.gpkgr   rp   r_   rv   r
  rr   r   r&   )r
   r   ra   r   r   )rr  r!   	test_pathr  read_gdfs        r    test_read_file_None_attributer    s_    ;&I
	tTluQ{E!QK&@dC KK	&K)62Hc8,r"   c                     t        | dz        }|j                  |d       t        j                  |ddi      }|j                  j
                  dk(  sJ y )Nr  Fr  r;   r   )rR   r  r   read_csvr;   r   )rg   r,   r  r  s       r    test_read_csv_dtyper    sN    6J&'HNN85N)
++hz:&>
?C<<+++r"   c                 4   t         s| dk(  rGt        j                  |d|       }|j                  j	                         j                         dgk(  sJ y t        j                  t              5  t        j                  |dd       d d d        y # 1 sw Y   y xY w)Nr   zcontinent='Africa')wherer!   Africar   )	FIONA_GE_19r/   r   r  uniquer  r$   r   NotImplementedErrorr  s      r    test_read_file__where_filterr    s    f	)!!&

 }}##%,,.8*<<<]]./ 	#*	 	 	s   ,BBc                     | dk(  rt         st        j                  d       t        j                  |ddg|       }|j
                  j                         g dk(  sJ y )Nr   columns requires fiona 1.9+r  r  r   r!   r  r  r;   r  r$   r%   r/   r   r   r  r  s      r    test_read_file__columnsr    sS    12


fi%8C ;;#BBBBr"   c                     | dk(  rt         st        j                  d       t        j                  |g |       }|j
                  j                         dgk(  sJ y )Nr   r  r  r;   r  r  s      r    test_read_file__columns_emptyr    sK    12


12f
MC;;J<///r"   ztest for fiona < 1.9c                     t        j                  t              5  t        j                  | ddgd       d d d        y # 1 sw Y   y xY w)Nr  r  r   r  )r$   r   r  r/   r   )r  s    r    !test_read_file__columns_old_fionar    s>    	*	+ 
&))<W	

 
 
s	   >Ac                     | dk(  rt         st        j                  d       t        j                  |ddg|       }|j
                  j                         g dk(  sJ y )Nr   r  r  r  )include_fieldsr!   r  r  r  s      r    test_read_file__include_fieldsr    sU     12


VY,?C ;;#BBBBr"   r  c                    |}t        j                  t        d      5  t        j                  |dgdg|        d d d        t        j                  t        d      5  t        j                  |dgdg|        d d d        t        j                  t        d      5  t        j                  |dgdg|        d d d        y # 1 sw Y   xY w# 1 sw Y   UxY w# 1 sw Y   y xY w)NzCannot specify bothr   r  r  )r  r  r!   )r   r  r!   )r   r  r!   )r$   r   r   r/   r   )r!   r  r3   s      r    ,test_read_file__columns_conflicting_keywordsr    s    D	z)>	? 
&)V	


 
z)>	? 
6(I;v	


 
z)>	? 
6(9+f	

 

 


 


 
s#   CCCC
CC"	file_likeTc                     | j                   }t        j                  t        dddd      gt              }|rt        |j                  dd      d      n|}t        |||	      }|j                   }||k7  sJ |d
k(  sJ y )Nrx  ry  rz  r{  r   zip://rO   r5  r|  r_   r\   shaper/   r
   r   r  rQ   replacer   )	r,   r!   r*   r  full_df_shaper}  infiler  filtered_df_shapes	            r    test_read_file_bbox_gdfr         MMM!!""""	
 
D <E]""8R0$7-  Ff=K#))----&&&r"   c                     | j                   }t        j                  t        dddd      gt              }|rt        |j                  dd      d      n|}t        |||	      }|j                   }||k7  sJ |d
k(  sJ y )Nrx  ry  rz  r{  r   r  rO   r5  rY  r  r  )	r,   r!   r*   r  r  rZ  r  r  r  s	            r    test_read_file_mask_gdfr  #  r  r"   c                     | j                   }t        dddd      }t        |||      }|j                   }||k7  sJ |dk(  sJ y Nrx  ry  rz  r{  rY  r  )r  r   r   r,   r!   r*   r  rZ  r  r  s          r    test_read_file_mask_polygonr  ;  sZ    MMM.0BDVD MVDK#))----&&&r"   c                     | j                   }t        t        dddd            }t        |||      }|j                   }||k7  sJ |dk(  sJ y r  )r  r	   r   r   )r,   r*   r!   r  rZ  r  r  s          r    test_read_file_mask_geojsonr  F  sb    MMM		
D MVDK#))----&&&r"   c                     | j                   }t        j                  t        dddd      gt              }|j                  dd       t        |||	      }|j                   }||k7  sJ |d
k(  sJ y )Nrx  ry  rz  r{  r   rr   Tepsginplacer|  r  )r  r/   r
   r   r  to_crsr   )r,   r!   r*   r  r}  r  r  s          r    &test_read_file_bbox_gdf_mismatched_crsr  V  s    MMM!!""""	
 
D 	KKT4K(MVDK#))----&&&r"   c                     | j                   }t        j                  t        dddd      gt              }|j                  dd       t        ||j                  |	      }|j                   }||k7  sJ |d
k(  sJ y )Nrx  ry  rz  r{  r   rr   Tr  rY  r  )r  r/   r
   r   r  r  r   r;   r  s          r    &test_read_file_mask_gdf_mismatched_crsr  k  s    MMM!!""""	
 
D 	KKT4K(MfMK#))----&&&r"   c                 >   dt        dd      t        dd      gi}t        j                  |d      }| dz  }|j                  |d|       |j                  |d	|       t	        j
                  d
      5 }t	        j                  d       t        ||d|       t        ||d|       |D cg c];  }|j                  t        u r'dt        |j                        j                         v r|= }}t        |      dk(  sJ d       	 d d d        y c c}w # 1 sw Y   y xY w)Nr;   rp   r_   r  r>   zout.gpkglayer1)layerr!   layer2T)recordalways)r}  r  r!   )rZ  r  r!   zspecify layer parameterr   zJ'Specify layer parameter' warning was raised, but the layer was specified.)r   r/   r
   ra   r^  r_  r`  r   categoryr   rR   messagelowerrc   )rr  r!   data1r  r8   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   58D-A D-DDDc                     d}t        | }t        j                  t        d      5  t	        |||       d d d        y # 1 sw Y   y xY w)Nrw  z%mask and bbox can not be set togetherr   )r}  rZ  )r   r$   r   r   r   )r!   r*   r}  rZ  s       r    $test_read_file_bbox_mask_not_allowedr    sD    D :D	z)P	Q 7-d67 7 7s	   >AzCignore:Layer 'b'test_empty'' does not have any features:UserWarningc                    |dk(  rt         st        j                  d       ddlm} i dddt        dd	g      d
d}t        | j                  d            } |       5  t        j                  |dfi |5 }	 d d d        d d d        t        ||      }t        |t        j                        sJ t        |j                  g dk(        sJ y # 1 sw Y   WxY w# 1 sw Y   [xY w)Nr   ztest requires fiona to workr   )	fiona_envrO   rH   r   )Azint:9)Zzfloat:24.15r   )r?   crs_wktrS   r   ztest_empty.shpwr&   )r   r  r;   )r   r$   r%   geopandas.io.filer  r   rR   r4   rQ   r   r   r/   r
   re   r   )rg   r!   r  metafname_r  s          r    test_read_file_empty_shapefiler    s     512+ "%~7K&LM
	D ,-.E	 ZZs+d+ 	q	 eF+EeY33444u}} 66777	 	 s$   C5C7CC	CC"c                       e Zd Zd Zd Zd Zy)
FileNumberc                 N    t        |      | _        || _        || _        d| _        y )Nr   )rR   rg   baserT   fileno)selfrg   r  rT   s       r    __init__zFileNumber.__init__  s"    &k	r"   c                     | j                    | j                  dd| j                   }t        j                  j                  | j                  |      S )N02d.)r  r  rT   r2   r3   r4   rg   )r  r  s     r    __repr__zFileNumber.__repr__  s>    ii[S 1488*=ww||DKK22r"   c                 B    | xj                   dz  c_         t        |       S )Nrp   )r  repr)r  s    r    __next__zFileNumber.__next__  s    qDzr"   N)__name__
__module____qualname__r  r  r  r5   r"   r    r
  r
    s    3r"   r
  )rH   shp)rK   r   c                    t        | d|      fd}|j                         }t        |d   |j                        } ||d       |xj                  dz  c_         ||d       t        t        dt        |      dz               |_        t        |d   |j                        } ||d       |j                         }t        |d   |j                        j                  dd	
      } ||d       t        |j                        } ||d       |j                         }t        |d   |j                        }d|j                  _	         ||d       d|j                  _	         ||d       |j                         }|d   |d   z
  |d<   |j                  ddgd       t        ||j                        } ||d       dd g|j                  _         ||d       d d g|j                  _         ||d       |j                         }t        |d   |j                        }|j                  j                  t              dz  |_         ||d       d|j                  _	         ||d       |j                         }t        |d   |j                        }t        j                  t        t        |            d      |_        |j                  j                  t               |_         ||d       |j                         }t        |d   |j                        }t        j                  t        t        |            d      t        j"                  dgt        |      z        z   |_        dk(  r$|j                  j                  t               |_         ||d       d|j                  _	         ||d       y )Ncheckc                    t        | j                        }|j                  d       
dk(  rdg}ng }|r t        | j                  j                        }n#d gt        | j                  j                        z  }|d gk(  rdg}n@t        |      dkD  r2t        |      s't        |      D ]  \  }}|	dt        |      z   ||<    t              }| j                  |
d        t        |      }t        |      d	k(  r|d d  }	ng }	|r|	|z  }	|	|dgz   z  }	t        |j                        |	k(  sJ t              }| j                  j                  |
d        t        |      }|r|dgz   }	n|dgz   }	t        |j                        |	k(  sJ t              }| j                  |
d
       t        |      }t        |j                        ||z   dgz   k(  sJ t              }| j                  j                  |
d
       t        |      }t        |j                        |dgz   k(  sJ t              }| j                  |
d       t        |      }t        |      d	k(  r|dgz   }	n|dgz   }	t        |j                        |	k(  sJ t              }| j                  j                  |
d       t        |      }t        |j                        |dgz   k(  sJ y )Nr;   rH   FIDr  rp   level_)rS   r  r!   r&   r   TF)listr   remover  namesrc   re   r   rR   nextra   r   r;   )r+   index_is_used
other_cols
driver_col
index_colslevel	index_colrh   df_checkexpected_colsrS   r!   fngens             r    	do_checksz+test_write_index_to_file.<locals>.do_checks  s   "**%
*%%%JJbhhnn-J#bhhnn"55J $!J_q Z$-j$9 > y$(03u:(=Ju%>
 E{


<d6
J\&9z?a&qMMMZ'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)@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)r$  rp   r\   r   )axis	foo_indexTr  r=   value3)r  firstr:   centiledays)unitz
1999-12-27rH   r   )r
  r   r
   r;   r  r   rB   rc   r   r  	set_indexr"  rz   floatr   to_timedeltarR   to_datetime)	rg   rF   rS   rT   r!   r-  df_pr+   r,  s	     ` `   @r    test_write_index_to_filer:    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	dT]]	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                     | dz  }|j                  |       |j                         sJ t        |j                  d            sJ y )Nzboros.invalidz*.shp)ra   is_dirr   glob)rr  r,   shpdirs      r    !test_to_file__undetermined_driverr?    s=    'FOOF==??G$%%%r"   	test_filez~/test_file.geojsonc                 (   t        j                  t        dddd      gt              }|j	                  | d       t        j
                  | |      }t        ||d       t        j                  t        j                  j                  |              y )	Nr   r:   r   rK   )rS   r&   T)	check_crs)r/   r
   r   r@   ra   r   r   r2   r!  r3   
expanduser)r@  r!   r  df_jsons       r    test_write_read_filerE    sm     
 
 3q!R+<*=4
HCKK	)K,!!)F;Gc7d;IIbgg  +,r"   zFiona not availablezFiona >= 1.9 supports metadatac                     ddi}| dz  }d}t        j                  t        |      5  |j                  |dd|       d d d        y # 1 sw Y   y xY w)	Ntitletestr  z5'metadata' keyword is only supported for Fiona >= 1.9r   rM   r   rS   r!   metadata)r$   r   r  ra   )rr  rF   rJ  tmp_filer   s        r    /test_to_file_metadata_unsupported_fiona_versionrL    s\      H+%HCE	*%	8 V(6'HUV V Vs   AAz#only Fiona >= 1.9 supports metadatac                     ddi}| dz  }|j                  |dd|       t        j                  |      5 }|j                         }||k(  sJ 	 d d d        y # 1 sw Y   y xY w)NrG  rH  r  rM   r   rI  )ra   r   rQ   tags)rr  rF   rJ  rK  srcrN  s         r    -test_to_file_metadata_supported_fiona_versionrP    sk     H+%HhvgQ 
H	  xxzx     s   AAzPyogrio not availablec                     ddi}| dz  }|j                  |dd|       t        j                  |      }|d   }||k(  sJ y )NrG  rH  r  rM   r   rI  layer_metadata)ra   r   	read_info)rr  rF   rJ  rK  inforR  s         r    test_to_file_metadata_pyogriorU    sX     H+%Hhvi(S X&D*+NX%%%r"   zdriver, extrG   rJ   c                     ddi}t         j                  j                  t        |      d|z         }t	        j
                  t        d      5  |j                  || |       d d d        y # 1 sw Y   y xY w)NrG  TestrH  z('metadata' keyword is only supported forr   )rS   rJ  )r2   r3   r4   rR   r$   r   r  ra   )rS   rT   rg   rF   r!   rJ  rh   s          r    (test_to_file_metadata_unsupported_driverrX    sl      H77<<FVc\:L	#M
 J 	,vIJ J Js   A**A3c                     |j                   |d<   t        j                  t        d      5  |j	                  t
        j                  j                  t        |       d             d d d        y # 1 sw Y   y xY w)Ngeom2z'GeoDataFrame contains multiple geometryr   z
boros.gpkg)	r;   r$   r   r   ra   r2   r3   r4   rR   )rg   r,   s     r    test_multiple_geom_cols_errorr[    sY    ''GG	z)R	S AS[,?@A A As   9A--A6c                 8   	 dt         j                  _        dd l}|j                  d   }d|j                  d<   t        j
                  |       }||j                  d<   d t         j                  _        y # j                  d<   d t         j                  _        w xY w)Nr   r   rH   r  )r/   options	io_enginer   supported_driversr   )r*   r   origr  s       r    test_option_io_enginera    s    +&/	# 	&&'7847 01.48 01&*	# 59 01&*	#s   AA3 3&Bztest for pyogrio not installedc                    t        j                  t        d      5  t        j                  |d       d d d        t        j                  t        d      5  |j                  | dz  d       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)N!the 'read_file' function requiresr   r   r&   the 'to_file' method requiresr  r$   r   ImportErrorr/   r   ra   rr  rF   r8   s      r    %test_error_engine_unavailable_pyogriorh    s~    	{*M	N 9Ii89 
{*I	J D([0CD D9 9D D   A7B7B Bztest for fiona not installedc                    t        j                  t        d      5  t        j                  |d       d d d        t        j                  t        d      5  |j                  | dz  d       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nrc  r   r   r&   rd  r  re  rg  s      r    #test_error_engine_unavailable_fionark    s~    	{*M	N 7Ig67 
{*I	J B([0AB B7 7B Bri  c                    t         j                  j                  t        |      d      }| j	                  |d       | j                  | j                  d            j	                  |d       | j                  | j                  d      j                        j	                  |d       t        j                  | dd	g   |d
       t        j                  |      }t        j                  g dg dd      }t        ||       y )Nzdataset.gpkgoriginal)r  rp   bufferedr_   boundaryr<   r=   non-spatial)rm  rn  ro  rp  )r   r   
LineStringN)r  geometry_type)r2   r3   r4   rR   ra   set_geometrybufferro  r   write_dataframer/   list_layersr   r]  r   )rF   rg   rh   layersr   s        r    test_list_layersrx    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 vx(r"   )r   r,  r(  r2   rk   rq  rF  r^  zoneinfocollectionsr   packaging.versionr   numpyrd   pandasr   pandas.api.typesr   shapely.geometryr   r   r   r	   r/   r
   r   r   r   geopandas._compatr   r   r  r   r   r$   geopandas.testingr   r   geopandas.tests.utilr   r   pandas.testingr   r   r   __version__base_versionr'  rf  r   r  markskipifPYOGRIO_MARK
FIONA_MARKr@   filterwarnings
pytestmarkfixturer   r!   r'   r,   r6   r8   rF   driver_ext_pairsrW   parametrizeri   rn   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*  r3  r;  r@  rD  rM  rS  rU  rg  rj  rl  ru  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:  r?  rl   rE  rL  rP  rU  rX  r[  ra  rh  rk  rx  r5   r"   r    <module>r     s[
    	  	      # %   4 9 9  H H 6 B  O > B
 WW%8%89FFG7L N'%"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 H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
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%$	-,"C0 K,u95KL
 M
 QCC 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 ) )S.  GN  EKs$   /b7 8/c 7	cc	cc