
    rbi=1              	       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 dl	m
Z
 d dlmZmZ d dlZ	 d dlZdZn# e$ r dZY nw xY we j        d             Ze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                            e d:;          d<             Zej                            e d:;          d=             Zd> Zej                            e d:;          d?             Zd@ Zej                            e d:;          dA             ZdB Z ej                            e d:;          dC             Z!ej                            e d:;          dD             Z"ej        j#        dE             Z$ej        j#        ej                            e d:;          dF                         Z%ej        j#        dG             Z&ej        j#        ej                            e d:;          dH                         Z'ej(        dI             Z)ej        j#        dJ             Z*ej        j#        ej                            e d:;          dK                         Z+ej                            d	 edL           e, edL                    f edM          dMfg          dN             Z-dO Z.dS )P    N)Path)ZIP_DEFLATEDZipFile)
HAS_PYPROJ)get_vsi_path_or_buffervsi_pathTFc              #      K   t          j                    }t          j        t          |                      	 d V  t          j        |           d S # t          j        |           w xY wN)osgetcwdchdirstr)pathcurdirs     g/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/pyogrio/tests/test_path.py
change_cwdr      sa      Y[[FHSYY
s   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                 0    t          |           |k    sJ d S r
   r   r   expecteds     r   test_vsi_pathr%      s"    R D>>X%%%%%%    c                  0    t          d          dk    sJ d S )Nzs4://test/data.geojsonr"    r&   r   test_vsi_path_unknownr)   k   s#    ,--1IIIIIIIr&   c                 J   | \  }}dt          |          z   }t          j                            |          }t	          |d                   dk    sJ t          j        |          }|d         dk    sJ t          j        |          }t	          |d                   dk    sJ d S 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$iiD[d##Fvay>>S    t$$F*$$$$ &&Fvay>>S      r&   zGeoPandas not available)reasonc                     | \  }}dt          |          z   }t          j        |          }t          |          dk    sJ d S Nr,   r.   r   r1   read_dataframer4   r7   s       r    test_vsi_handling_read_dataframerA      sH    %GD!c$iiD#D))Fv;;#r&   c                     | dz  }t          j        |          }t          |          dk    sJ t          j        t          |                    }t          |          dk    sJ d S N+naturalearth_lowres/naturalearth_lowres.shpr.   )r1   r@   r4   r   )data_dirr   dfs      r   test_path_absoluterG      sa     CCD			%	%Br77c>>>> 
	D			*	*Br77c>>>>>>r&   c                 r   d}t          |           5  t          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            d S # 1 swxY w Y   d S )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   BB,,B03B0c                     t          |           5  t          j        d          }t          |          dk    sJ 	 d d d            d S # 1 swxY w Y   d S rC   )r   r1   r@   r4   )rE   rF   s     r   test_path_relative_dataframerL      s    	H		  #$QRR2ww#~~~~~                 s   *AAAc                 F   dt          | dz            z   }t          j                            |          }t	          |d                   dk    sJ t          j        |          }|d         dk    sJ t          j        |          }t	          |d                   dk    sJ d S )Nfile://rD   r-   r.   r/   r   r0   rI   s      r   test_uri_local_filerO      s    s8&SSTTTD[d##Fvay>>S    t$$F*$$$$ &&Fvay>>S      r&   c                     dt          | dz            z   }t          j        |          }t          |          dk    sJ d S )NrN   rD   r.   r?   )rE   urirF   s      r   test_uri_local_file_dataframerR      sA    
c(%RRSS
SC			$	$Br77c>>>>>>r&   c                    | \  }}dt          |          z   }t          j                            |          }t	          |d                   dk    sJ t          j        |          }|d         dk    sJ t          j        |          }t	          |d                   dk    sJ t          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                            |          }t	          |d                   dk    sJ t          j        |          }|d         dk    sJ t          j        |          }t	          |d                   dk    sJ 	 d d d            d S # 1 swxY w Y   d S 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     ty(M	DK	 	  % %!!-006!9~~$$$$"=11j!S(((($]336!9~~$$$$$% % % % % % % % % % % % % % % % % %s   BG&&G*-G*c                    | \  }}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            d S # 1 swxY w Y   d S r>   )r   r1   r@   r4   r   rU   rT   )r8   r   rV   rW   rF   s        r   test_zip_path_dataframer[      s   ,ND(#d))#H 
		)	)Br77c>>>> 
		)	)Br77c>>>> 
DK	 	   #Hty$8992ww#~~~~~                 s   >2B>>CC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 ]O}t          s|dk    rd| }|                    | |z  |           d| }|                    | |z  d|            P	 d d d            n# 1 swxY w Y   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 d S )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      sP    
	 3;U	V	V	VBBF29#56;8NOOOBF29#56;8NOOOj D	C\	K	K	K 	?s/ 	? 	?C #,,%~~HIIh)8444%~~HIIh)+=8+=+=>>>>	?	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 
		%	%B9Q<5     
	4 3 3 3	4	4B9Q<5    		4 8 8 8	9	9B9Q<5     
	 > > > >	?	?B9Q<5     
	 ?4 ? ? ?	@	@B9Q<5      s   AC,,C03C0c                      d} t           j                            |           }t          |d                   dk    sJ t          j        |           }|d         dk    sJ t          j        |           }t          |d                   dk    sJ d S )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                  X    d} t          t          j        |                     dk    sJ d S )Nrt   r.   )r4   r1   r@   )rw   s    r   test_url_dataframerz   +  s4     HCw%c**++s222222r&   c                      d} t           j                            |           }t          |d                   dk    sJ t          j        |           }|d         dk    sJ t          j        |           }t          |d                   dk    sJ d S )N:zip+https://s3.amazonaws.com/fiona-testing/coutwildrnp.zipr-   C   r/   r   ru   rv   s     r   test_url_with_zipr~   3  s    
FC[c""Fvay>>Rs##F*#### %%Fvay>>Rr&   c                  \    d} t          j        |           }t          |          dk    sJ d S )Nr|   r}   r1   r@   r4   )rw   rF   s     r   test_url_with_zip_dataframer   A  s1     GC			$	$Br77b======r&   c                 2    |                      dd           d S )NAWS_NO_SIGN_REQUESTYES)setenv)monkeypatchs    r   aws_env_setupr   I  s    ,e44444r&   c                     d}t           j                            |          }t          |d                   dk    sJ t          j        |          }|d         dk    sJ t          j        |          }t          |d                   dk    sJ d S )N&zip+s3://fiona-testing/coutwildrnp.zipr-   r}   r/   r   ru   )r   rw   r:   s      r   test_uri_s3r   N  s    
2C[c""Fvay>>Rs##F*#### %%Fvay>>Rr&   c                 X    t          j        d          }t          |          dk    sJ d S )Nr   r}   r   )r   rF   s     r   test_uri_s3_dataframer   \  s,     
	 H	I	IBr77b======r&   z/tmp/test.gpkgz/vsimem/test.gpkgc                 0    t          |           |k    sJ dS )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3333r&   c                 T    | dz  }t          |          t          |          k    sJ d S )Nz	test.gpkg)r   r   )rm   r   s     r   .test_get_vsi_path_or_buffer_fixtures_to_stringr   t  s1    k!D!$''3t99444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 9 9 9 9 9 9 9 MM   MMM    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 GP& &QG GP&J J J
! ! !  %.GHH  IH %.GHH  IH% % % %.GHH  IH	! 	! 	! %.GHH  IH"% "% "%J %.GHH  IH$ %.GHH$! $! IH$!N 
! 
! 
! %.GHH3 3 IH 3 
  
  
  %.GHH  IH  5 5 5 
  
  
  %.GHH  IH 
 			TT*:%;%;!<!<=	!	"	"$78 4 4 45 5 5 5 5s   9 AA