
    h=1              	       x   d dl Z d dlZd dlmZ d dlmZmZ d dlZd dlZd dl	m
Z
 d dlmZmZ d dlZ	 d dlZdZe j$                  d        Zej(                  j+                  d	g d
dd ed      df ed      df ed      dfddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5 ed6      d6f      d7        Zd8 Zd9 Zej(                  j3                  e d:;      d<        Zej(                  j3                  e d:;      d=        Zd> Zej(                  j3                  e d:;      d?        Zd@ Zej(                  j3                  e d:;      dA        ZdB Z ej(                  j3                  e d:;      dC        Z!ej(                  j3                  e d:;      dD        Z"ej(                  jF                  dE        Z$ej(                  jF                  ej(                  j3                  e d:;      dF               Z%ej(                  jF                  dG        Z&ej(                  jF                  ej(                  j3                  e d:;      dH               Z'ejP                  dI        Z)ej(                  jF                  dJ        Z*ej(                  jF                  ej(                  j3                  e d:;      dK               Z+ej(                  j+                  d	 edL       e, edL            f edM      dMfg      dN        Z-dO Z.y# e$ r dZY  w xY w)P    N)Path)ZIP_DEFLATEDZipFile)
HAS_PYPROJ)get_vsi_path_or_buffervsi_pathTFc              #      K   t        j                         }t        j                  t        |              	 d  t        j                  |       y # t        j                  |       w xY wwN)osgetcwdchdirstr)pathcurdirs     J/var/www/html/immo/lib/python3.12/site-packages/pyogrio/tests/test_path.py
change_cwdr      sA     YY[FHHSY
s   3A*A A*A''A*zpath, expected)	data.gpkgr   )data.gpkg.zipr   )data.shp.zipr   r   r   r   )/home/user/data.gpkgr   )/home/user/data.gpkg.zipr   )/home/user/data.shp.zipr   )C:\User\Documents\data.gpkgr   )C:\User\Documents\data.gpkg.zipr   )C:\User\Documents\data.shp.zipr   )zfile:///home/user/data.gpkgr   )zfile:///home/user/data.gpkg.zipr   )zfile:///home/user/data.shp.zipr   )"/home/folder # with hash/data.gpkgr   )zhttps://testing/data.gpkgz"/vsicurl/https://testing/data.gpkg)zs3://testing/data.gpkgz/vsis3/testing/data.gpkg)zgs://testing/data.gpkgz/vsigs/testing/data.gpkg)zaz://testing/data.gpkgz/vsiaz/testing/data.gpkg)zadl://testing/data.gpkg/vsiadls/testing/data.gpkg)zadls://testing/data.gpkgr   )zhdfs://testing/data.gpkgz/vsihdfs/testing/data.gpkg)zwebhdfs://testing/data.gpkgz/vsiwebhdfs/testing/data.gpkg)zzip://data.zipz/vsizip/data.zip)ztar://data.tarz/vsitar/data.tar)zgzip://data.gzz/vsigzip/data.gz)ztar://./my.tar!my.geojsonz/vsitar/./my.tar/my.geojson)z'zip://home/data/shapefile.zip!layer.shpz)/vsizip/home/data/shapefile.zip/layer.shp)zzip+s3://testing/shapefile.zipz#/vsizip/vsis3/testing/shapefile.zip)z2zip+https://s3.amazonaws.com/testing/shapefile.zipz>/vsizip/vsicurl/https://s3.amazonaws.com/testing/shapefile.zip)test.zipz/vsizip/test.zip)z/a/b/test.zipz/vsizip//a/b/test.zip)za/b/test.zipz/vsizip/a/b/test.zip)ztest.zip!item.shpz/vsizip/test.zip/item.shp)ztest.zip!/a/b/item.shp/vsizip/test.zip/a/b/item.shp)ztest.zip!a/b/item.shpr   )r   r   )zzip:///test.zip/a/b/item.shpz/vsizip//test.zip/a/b/item.shp)z)https://s3.amazonaws.com/testing/test.zipz9/vsizip/vsicurl/https://s3.amazonaws.com/testing/test.zip)z7https://s3.amazonaws.com/testing/test.zip!/a/b/item.shpzF/vsizip/vsicurl/https://s3.amazonaws.com/testing/test.zip/a/b/item.shp)zs3://testing/test.zipz/vsizip/vsis3/testing/test.zip)z"s3://testing/test.zip!a/b/item.shpz+/vsizip/vsis3/testing/test.zip/a/b/item.shp)/vsimem/data.gpkgr    r    c                 $    t        |       |k(  sJ y r
   r   r   expecteds     r   test_vsi_pathr%      s    R D>X%%%    c                  $    t        d      dk(  sJ y )Nzs4://test/data.geojsonr"    r&   r   test_vsi_path_unknownr)   k   s    ,-1IIIIr&   c                    | \  }}dt        |      z   }t        j                  j                  |      }t	        |d         dk(  sJ t        j
                  |      }|d   dk(  sJ t        j                  |      }t	        |d         dk(  sJ y Nzip://      featuresr   r   pyogriorawreadlen	read_inforead_boundsnaturalearth_lowres_vsir   _results       r    test_vsi_handling_read_functionsr;   p   s     &GD!c$iD[[d#Fvay>S   t$F*$$$  &Fvay>S   r&   zGeoPandas not available)reasonc                 t    | \  }}dt        |      z   }t        j                  |      }t        |      dk(  sJ y Nr,   r.   r   r1   read_dataframer4   r7   s       r    test_vsi_handling_read_dataframerA      s;    %GD!c$iD##D)Fv;#r&   c                     | dz  }t        j                  |      }t        |      dk(  sJ t        j                  t        |            }t        |      dk(  sJ y N+naturalearth_lowres/naturalearth_lowres.shpr.   )r1   r@   r4   r   )data_dirr   dfs      r   test_path_absoluterG      sU     CCD				%Br7c>> 
		D		*Br7c>>r&   c                 <   d}t        |       5  t        j                  j                  |      }t	        |d         dk(  sJ t        j
                  |      }|d   dk(  sJ t        j                  |      }t	        |d         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)NrD   r-   r.   r/   r   )r   r1   r2   r3   r4   r5   r6   rE   r   r:   s      r   test_path_relativerJ      s    8D	H	 %!!$'6!9~$$$""4(j!S((($$T*6!9~$$$% % %s   A:BBc                     t        |       5  t        j                  d      }t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY wrC   )r   r1   r@   r4   )rE   rF   s     r   test_path_relative_dataframerL      s@    	H	 ##$QR2w#~~  s	   &<Ac                    dt        | dz        z   }t        j                  j                  |      }t	        |d         dk(  sJ t        j
                  |      }|d   dk(  sJ t        j                  |      }t	        |d         dk(  sJ y )Nfile://rD   r-   r.   r/   r   r0   rI   s      r   test_uri_local_filerO      s    s8&SSTTD[[d#Fvay>S   t$F*$$$  &Fvay>S   r&   c                 p    dt        | dz        z   }t        j                  |      }t        |      dk(  sJ y )NrN   rD   r.   r?   )rE   urirF   s      r   test_uri_local_file_dataframerR      s7    
c(%RRS
SC				$Br7c>>r&   c                 t   | \  }}dt        |      z   }t        j                  j                  |      }t	        |d         dk(  sJ t        j
                  |      }|d   dk(  sJ t        j                  |      }t	        |d         dk(  sJ t        j                  j                  |      }t	        |d         dk(  sJ t        j
                  |      }|d   dk(  sJ t        j                  |      }t	        |d         dk(  sJ d|j                  z   }t        |j                        5  t        j                  j                  |      }t	        |d         dk(  sJ t        j
                  |      }|d   dk(  sJ t        j                  |      }t	        |d         dk(  sJ 	 d d d        y # 1 sw Y   y xY wr+   )
r   r1   r2   r3   r4   r5   r6   namer   parent)r8   r   path_vsipath_zipr:   relative_paths         r   test_zip_pathrY      s   ,ND(#d)#H [[h'Fvay>S   x(F*$$$  *Fvay>S    [[h'Fvay>S   x(F*$$$  *Fvay>S    tyy(M	DKK	  %!!-06!9~$$$""=1j!S((($$]36!9~$$$% % %s   *A:F..F7c                 x   | \  }}dt        |      z   }t        j                  |      }t        |      dk(  sJ t        j                  |      }t        |      dk(  sJ t	        |j
                        5  t        j                  d|j                  z         }t        |      dk(  sJ 	 d d d        y # 1 sw Y   y xY wr>   )r   r1   r@   r4   r   rU   rT   )r8   r   rV   rW   rF   s        r   test_zip_path_dataframer[      s    ,ND(#d)#H 
			)Br7c>> 
			)Br7c>> 
DKK	  ##Htyy$892w#~~  s   33B00B9c                    t        j                  |d      }t        j                  |j                  |j                  dk(     | dz         t        j                  |j                  |j                  dk(     | dz         | dz  }t        |dt        d	
      5 }dD ]E  }t        s|dk(  rd| }|j                  | |z  |       d| }|j                  | |z  d|        G 	 d d d        t        j                  |      }|j                  d   dk(  sJ t        j                  | d      }|j                  d   dk(  sJ t        j                  | d      }|j                  d   dk(  sJ t        j                  d| d      }|j                  d   dk(  sJ t        j                  d| d      }|j                  d   dk(  sJ y # 1 sw Y   xY w)Nziso_a3 in ('CAN', 'PER'))whereCANz	test1.shpPERz	test2.shpr   w   )modecompressioncompresslevel)dbfprjshpshxrf   ztest1.ztest2.z/a/b/r   z
!test1.shpz!/a/b/test2.shpr,   z/vsizip/z/a/b/test2.shp)	r1   r@   write_dataframelociso_a3r   r   r   write)tmp_pathnaturalearth_lowresrF   r   outextfilenames          r   test_detect_zip_pathrr      s    
		 3;U	VBBFF299#56;8NOBFF299#56;8NOj D	C\	K 	?s/ 	?C#,u~HIIh)84u~HIIh)U8*+=>	?	? 
			%B99Q<5    
		4&
 3	4B99Q<5   			4& 8	9B99Q<5    
		&o >	?B99Q<5    
		(4& ?	@B99Q<5   ;	? 	?s   AGGc                      d} t         j                  j                  |       }t        |d         dk(  sJ t        j                  |       }|d   dk(  sJ t        j
                  |       }t        |d         dk(  sJ y )N{https://raw.githubusercontent.com/geopandas/pyogrio/main/pyogrio/tests/fixtures/naturalearth_lowres/naturalearth_lowres.shpr-   r.   r/   r   r1   r2   r3   r4   r5   r6   urlr:   s     r   test_urlrx     s}     HC[[c"Fvay>S   s#F*$$$  %Fvay>S   r&   c                  N    d} t        t        j                  |             dk(  sJ y )Nrt   r.   )r4   r1   r@   )rw   s    r   test_url_dataframerz   +  s(     HCw%%c*+s222r&   c                      d} t         j                  j                  |       }t        |d         dk(  sJ t        j                  |       }|d   dk(  sJ t        j
                  |       }t        |d         dk(  sJ y )N:zip+https://s3.amazonaws.com/fiona-testing/coutwildrnp.zipr-   C   r/   r   ru   rv   s     r   test_url_with_zipr~   3  sz    
FC[[c"Fvay>Rs#F*###  %Fvay>Rr&   c                  R    d} t        j                  |       }t        |      dk(  sJ y )Nr|   r}   r1   r@   r4   )rw   rF   s     r   test_url_with_zip_dataframer   A  s*     GC				$Br7b==r&   c                 (    | j                  dd       y )NAWS_NO_SIGN_REQUESTYES)setenv)monkeypatchs    r   aws_env_setupr   I  s    ,e4r&   c                     d}t         j                  j                  |      }t        |d         dk(  sJ t        j                  |      }|d   dk(  sJ t        j
                  |      }t        |d         dk(  sJ y )N&zip+s3://fiona-testing/coutwildrnp.zipr-   r}   r/   r   ru   )r   rw   r:   s      r   test_uri_s3r   N  sz    
2C[[c"Fvay>Rs#F*###  %Fvay>Rr&   c                 N    t        j                  d      }t        |      dk(  sJ y )Nr   r}   r   )r   rF   s     r   test_uri_s3_dataframer   \  s%     
		 H	IBr7b==r&   z/tmp/test.gpkgz/vsimem/test.gpkgc                 $    t        |       |k(  sJ y)aG  Verify that get_vsi_path_or_buffer retains forward slashes in /vsimem paths.

    The /vsimem paths should keep forward slashes for GDAL to recognize them as such.
    However, on Windows systems, forward slashes are by default replaced by backslashes,
    so this test verifies that this doesn't happen for /vsimem paths.
    N)r   r#   s     r   )test_get_vsi_path_or_buffer_obj_to_stringr   c  s     "$'8333r&   c                 @    | dz  }t        |      t        |      k(  sJ y )Nz	test.gpkg)r   r   )rm   r   s     r   .test_get_vsi_path_or_buffer_fixtures_to_stringr   t  s#    k!D!$'3t9444r&   )/
contextlibr   pathlibr   zipfiler   r   r1   pyogrio.rawpyogrio._compatr   pyogrio.utilr   r   pytest	geopandashas_geopandasImportErrorcontextmanagerr   markparametrizer%   r)   r;   skipifrA   rG   rJ   rL   rO   rR   rY   r[   rr   networkrx   rz   r~   r   fixturer   r   r   r   r   r   r(   r&   r   <module>r      s    	  )   & 9 M
   D"D 	+D 	)	D
 
k	K(D 
o	0D 
n	~.D 	9D 	AD 	?D 	ID 	QD 	OD 	@D 	HD  	F!D" 	U#D& 	L'D( 	?)D* 	?+D, 	?-D. 	B/D0 	C1D2 	C3D4 	I5D8 	/9D: 	/;D< 	/=D> 	E?D@	
ADJ 	RKDL	
MDV 	)WDX 	3YDZ 	1[D^ 	;_D` 	DaDb 	CcDd 	KeDf 	KgDj	
kDr	
sDz 	D{D|	
}DD 	3EDF 
!	"$78GDGP&QGP&J
!  %.GH I %.GH I% %.GH I	! %.GH I"%J %.GH I$ %.GH$! I$!N 
! 
! %.GH3 I 3 
  
  %.GH I  5 5 
  
  %.GH I 
 		T*:%;!<=	!	"$78445G  Ms   L. .L98L9