
    [j=1              	          S SK r S SKrS SKJr  S SKJrJr  S SKrS SKrS SK	J
r
  S SKJrJr  S SKr S SKrSr\ R$                  S 5       r\R(                  R+                  S	/ S
PSPSP\" S5      S4P\" S5      S4P\" S5      S4PSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPSPS PS!PS"PS#PS$PS%PS&PS'PS(PS)PS*PS+PS,PS-PS.PS/PS0PS1PS2PS3PS4PS5P\" S65      S64P5      S7 5       rS8 rS9 r\R(                  R3                  \(       + S:S;9S< 5       r\R(                  R3                  \(       + S:S;9S= 5       rS> r\R(                  R3                  \(       + S:S;9S? 5       rS@ r\R(                  R3                  \(       + S:S;9SA 5       rSB r \R(                  R3                  \(       + S:S;9SC 5       r!\R(                  R3                  \(       + S:S;9SD 5       r"\R(                  RF                  SE 5       r$\R(                  RF                  \R(                  R3                  \(       + S:S;9SF 5       5       r%\R(                  RF                  SG 5       r&\R(                  RF                  \R(                  R3                  \(       + S:S;9SH 5       5       r'\RP                  SI 5       r)\R(                  RF                  SJ 5       r*\R(                  RF                  \R(                  R3                  \(       + S:S;9SK 5       5       r+\R(                  R+                  S	\" SL5      \," \" SL5      5      4\" SM5      SM4/5      SN 5       r-SO r.g! \ a    Sr GN
f = f)P    N)Path)ZIP_DEFLATEDZipFile)
HAS_PYPROJ)get_vsi_path_or_buffervsi_pathTFc              #      #    [         R                  " 5       n[         R                  " [        U 5      5         S v   [         R                  " U5        g ! [         R                  " U5        f = f7fN)osgetcwdchdirstr)pathcurdirs     Z/var/www/html/Sattelite-Image/venv/lib/python3.13/site-packages/pyogrio/tests/test_path.py
change_cwdr      s@     YY[FHHSY
s   5A.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                 &    [        U 5      U:X  d   eg r
   r   r   expecteds     r   test_vsi_pathr%      s    R D>X%%%    c                  &    [        S5      S:X  d   eg )Nzs4://test/data.geojsonr"    r&   r   test_vsi_path_unknownr)   k   s    ,-1IIIIr&   c                 $   U u  pS[        U5      -   n[        R                  R                  U5      n[	        US   5      S:X  d   e[        R
                  " U5      nUS   S:X  d   e[        R                  " U5      n[	        US   5      S:X  d   eg 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                 v    U u  pS[        U5      -   n[        R                  " U5      n[        U5      S:X  d   eg Nr,   r.   r   r1   read_dataframer4   r7   s       r    test_vsi_handling_read_dataframerA      s9    %GDc$iD##D)Fv;#r&   c                     U S-  n[         R                  " U5      n[        U5      S:X  d   e[         R                  " [        U5      5      n[        U5      S:X  d   eg 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                 P   Sn[        U 5         [        R                  R                  U5      n[	        US   5      S:X  d   e[        R
                  " U5      nUS   S:X  d   e[        R                  " U5      n[	        US   5      S:X  d   e S S S 5        g ! , (       d  f       g = f)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                     [        U 5         [        R                  " S5      n[        U5      S:X  d   e S S S 5        g ! , (       d  f       g = frC   )r   r1   r@   r4   )rE   rF   s     r   test_path_relative_dataframerL      s7    	H	##$QR2w#~~ 
		s	   (>
Ac                 "   S[        U S-  5      -   n[        R                  R                  U5      n[	        US   5      S:X  d   e[        R
                  " U5      nUS   S:X  d   e[        R                  " U5      n[	        US   5      S:X  d   eg )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                 t    S[        U S-  5      -   n[        R                  " U5      n[        U5      S:X  d   eg )NrN   rD   r.   r?   )rE   urirF   s      r   test_uri_local_file_dataframerR      s7    
c(%RRS
SC				$Br7c>>r&   c                    U u  pS[        U5      -   n[        R                  R                  U5      n[	        US   5      S:X  d   e[        R
                  " U5      nUS   S:X  d   e[        R                  " U5      n[	        US   5      S:X  d   e[        R                  R                  U5      n[	        US   5      S:X  d   e[        R
                  " U5      nUS   S:X  d   e[        R                  " U5      n[	        US   5      S:X  d   eSUR                  -   n[        UR                  5         [        R                  R                  U5      n[	        US   5      S:X  d   e[        R
                  " U5      nUS   S:X  d   e[        R                  " U5      n[	        US   5      S:X  d   e S S S 5        g ! , (       d  f       g = f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   3A?F<<
G
c                    U u  pS[        U5      -   n[        R                  " U5      n[        U5      S:X  d   e[        R                  " U5      n[        U5      S:X  d   e[	        UR
                  5         [        R                  " SUR                  -   5      n[        U5      S:X  d   e S S S 5        g ! , (       d  f       g = f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   65B55
Cc                    [         R                  " USS9n[         R                  " UR                  UR                  S:H     U S-  5        [         R                  " UR                  UR                  S:H     U S-  5        U S-  n[        US[        S	S
9 nS HK  n[        (       d  US:X  a  M  SU 3nUR                  X-  U5        SU 3nUR                  X-  SU 35        MM     S S S 5        [         R                  " U5      nUR                  S   S:X  d   e[         R                  " U S35      nUR                  S   S:X  d   e[         R                  " U S35      nUR                  S   S:X  d   e[         R                  " SU S35      nUR                  S   S:X  d   e[         R                  " SU S35      nUR                  S   S:X  d   eg ! , (       d  f       N= f)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\	Ks/C:#,u~HIIh)84u~HIIh)U8*+=> 0 
L 
			%B99Q<5    
		4&
 3	4B99Q<5   			4& 8	9B99Q<5    
		&o >	?B99Q<5    
		(4& ?	@B99Q<5   ; 
L	Ks   AG
G!c                     Sn [         R                  R                  U 5      n[        US   5      S:X  d   e[         R                  " U 5      nUS   S:X  d   e[         R
                  " U 5      n[        US   5      S:X  d   eg )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                  R    Sn [        [        R                  " U 5      5      S:X  d   eg )Nrt   r.   )r4   r1   r@   )rw   s    r   test_url_dataframerz   +  s(     HCw%%c*+s222r&   c                     Sn [         R                  R                  U 5      n[        US   5      S:X  d   e[         R                  " U 5      nUS   S:X  d   e[         R
                  " U 5      n[        US   5      S:X  d   eg )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                  V    Sn [         R                  " U 5      n[        U5      S:X  d   eg )Nr|   r}   r1   r@   r4   )rw   rF   s     r   test_url_with_zip_dataframer   A  s*     GC				$Br7b==r&   c                 (    U R                  SS5        g )NAWS_NO_SIGN_REQUESTYES)setenv)monkeypatchs    r   aws_env_setupr   I  s    ,e4r&   c                    Sn[         R                  R                  U5      n[        US   5      S:X  d   e[         R                  " U5      nUS   S:X  d   e[         R
                  " U5      n[        US   5      S:X  d   eg )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                 R    [         R                  " S5      n[        U5      S:X  d   eg )Nr   r}   r   )r   rF   s     r   test_uri_s3_dataframer   \  s%     
		 H	IBr7b==r&   z/tmp/test.gpkgz/vsimem/test.gpkgc                 &    [        U 5      U:X  d   eg)a7  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                 B    U S-  n[        U5      [        U5      :X  d   eg )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   L7 7MM