
    rbiY                        d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d d	lmZm Z m!Z!m"Z" d dl#Z# e            5  d d
l$m%Z%m&Z&m'Z' ddd           n# 1 swxY w Y   	 d dl(Z(n# e)$ r Y nw xY wd Z*d Z+d Z,d Z-e#j.        /                    dddddd e#j0        dde#j.        1                    edk     d                     e#j0        dde#j.        1                    d e            vd                    g          d             Z2e#j.        /                    dg d           d!             Z3e#j.        /                    dd"g          d#             Z4e#j.        /                    d$g d%          d&             Z5d' Z6d( Z7d) Z8d* Z9d+ Z:e#j.        /                    d,g d-          d.             Z;d/ Z<d0 Z=d1 Z>d2 Z?d3 Z@d4 ZAd5 ZBd6 ZCd7 ZDd8 ZEe#j.        /                    d9g d:          d;             ZFd< ZGe"e#j.        /                    d=d>d d gd?d@dAg          dB                         ZHe"dC             ZIe"e#j.        /                    dDdEdFgfdGdHdIgfdJg dKfdLg dMfg          dN                         ZJdO ZKe#j.        /                    dPg dQdRS          dT             ZLe#j.        /                    dPg  ejM                    dUdRS          dV             ZNe#j.        /                    d,dWdXg          dY             ZOdZ ZPd[ ZQd\ ZRe#j.        /                    d]i d^d_gfd`daid^dbgfdcddid^dbgfdcdRid^dbgfg          de             ZSdf ZTdg ZUe#j.        /                    dhg di          dj             ZVe#j.        /                    dkdldmg          dn             ZWdo ZXdp ZYdq ZZdr Z[e#j.        /                    dsg dt          du             Z\dv Z]dw Z^dx Z_dy Z`dz Zad{ ZbdS )|    )PathN)allclosearray_equal)__gdal_geos_version____gdal_version__detect_write_driverget_gdal_config_optionget_gdal_data_pathlist_driverslist_layersread_bounds	read_infoset_gdal_config_optionsvsi_listtree
vsi_rmtree
vsi_unlink)
GDAL_GE_38)GDALEnv)DataLayerErrorDataSourceErrorreadwrite)DRIVERS	START_FIDprepare_testfilerequires_shapely)has_gdal_datahas_proj_dataogr_driver_supports_writec                  &    t                      sJ d S N)r        g/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/pyogrio/tests/test_core.pytest_gdal_datar&   .        ??r$   c                  &    t                      sJ d S r"   )r   r#   r$   r%   test_proj_datar)   4   r'   r$   c                  L    t          t                      t                    sJ d S r"   )
isinstancer
   strr#   r$   r%   test_get_gdal_data_pathr-   :   s'     (**C0000000r$   c                  P    t           t          t           t                    sJ d S d S r"   )r   r+   tupler#   r$   r%   test_gdal_geos_versionr0   @   s*     (J7Le,T,T(((((((r$   zpath,expected)ztest.shpESRI Shapefile)ztest.shp.zipr1   )ztest.geojsonGeoJSON)ztest.geojsonl
GeoJSONSeq)z	test.gpkgGPKGztest.gpkg.zipr4   )      r   z)writing *.gpkg.zip requires GDAL >= 3.7.0)reason)markszPG:dbname=test
PostgreSQLz/PostgreSQL path test requires PostgreSQL driverc                 0    t          |           |k    sJ d S r"   )r   )pathexpecteds     r%   test_detect_write_driverr=   D   s#    8 t$$000000r$   r;   )ztest.svgztest.testztest.foozFOO:testc                     t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nz Could not infer driver from pathmatchpytestraises
ValueErrorr   r;   s    r%   $test_detect_write_driver_unsupportedrG   c   s     
z)K	L	L	L " "D!!!" " " " " " " " " " " " " " " " " "   9= =ztest.xmlc                     t          j        t          d          5  t          |            d d d            d S # 1 swxY w Y   d S )Nzmultiple drivers are available r@   rB   rF   s    r%   -test_detect_write_driver_multiple_unsupportedrJ   r   s    	z)J	K	K	K " "D!!!" " " " " " " " " " " " " " " " " "rH   zdriver,expected))r1   T)r2   T)r3   T)r4   T)HTTPF)OAPIFFc                 0    t          |           |k    sJ d S r"   )r    )driverr<   s     r%   test_ogr_driver_supports_writerO   x   s#     %V,,888888r$   c                  :   t                      } dD ]}|| v sJ d}| |         |k    sJ t          d          }d |                                 D             }t          |          t          |          k    sJ t          d          }d |                                 D             }t          |          t          |          k    sJ t          dd          }d	 |                                 D             }t          |          t          |          k    sJ d S )
N)r1   r2   r3   r4   OpenFileGDBrwT)r   c                 D    i | ]\  }}|                     d           ||S )r)
startswith.0kvs      r%   
<dictcomp>z%test_list_drivers.<locals>.<dictcomp>   s/    JJJAS8I8IJ1JJJr$   )r   c                 D    i | ]\  }}|                     d           ||S )w)endswithrV   s      r%   rZ   z%test_list_drivers.<locals>.<dictcomp>   s-    HHHA

3H1HHHr$   r   c                 n    i | ]2\  }}|                     d           |                    d          /||3S )rT   r\   )rU   r]   rV   s      r%   rZ   z%test_list_drivers.<locals>.<dictcomp>   sR       AS0A0AFGjjQToo	1  r$   )r   itemslen)all_driversnameexpected_capabilitydriversr<   s        r%   test_list_driversre      sG   ..K S 8 8{"""""4 $777777%%%GJJ!2!2!4!4JJJHw<<3x==((((&&&GHH!2!2!4!4HHHHw<<3x==((((D111G $**,,  H w<<3x==((((((r$   c                    t          t          |           ddgg          sJ t          t          |d                   ddgg          sJ t          t          |          ddgg          sJ t          j        t          d          5  t          t          |          ddgg          sJ 	 d d d            n# 1 swxY w Y   t          t          |          d	d
gg          sJ t          t          |          ddgg          sJ t          t          |          ddgg          sJ t          t          |          dd gg          sJ d S )Nnaturalearth_lowresPolygon   MultiPolygonz/Measured \(M\) geometry types are not supportedr@   line_zmzLineString Zcurve
LineStringcurvepolygonmultisurfaceno_geometry)r   r   rC   warnsUserWarning)rg   naturalearth_lowres_vsinaturalearth_lowres_vsimemline_zm_file
curve_filecurve_polygon_filemultisurface_fileno_geometry_files           r%   test_list_layersrz      s    '((,A9+M*N     +A.//3H)2T1U     .//
	01     
M
 
 
 U U ;|44	>7R6STTTTTTU U U U U U U U U U U U U U U {:..'<1H0IJJJJJ{#566.)9T8UVVVVV%&&..)I(J    
 {#344t7L6MNNNNNNNs   #B88B<?B<c                 Z    t          |           }|j        dk    sJ |d         dk    sJ d S Nri      )r   r   r>   r   shape)geojson_byteslayerss     r%   test_list_layers_bytesr      s=    ''F<6!!!!$<6!!!!!!r$   c                 Z    t          |           }|j        dk    sJ |d         dk    sJ d S )Nr}   )r   ri   Pointr   )nonseekable_bytesr   s     r%   "test_list_layers_nonseekable_bytesr      s>    *++F<6!!!!$<7""""""r$   c                 Z    t          |           }|j        dk    sJ |d         dk    sJ d S r|   r   )geojson_fileliker   s     r%   test_list_layers_fileliker      s>    )**F<6!!!!$<6!!!!!!r$   testfile)rg   rt   rs   c                 X   |                     |           }t          |t                    s|n|d         }t          |          \  }}|j        dk    sJ |j        dk    sJ |d         t
          t          |          j                 k    sJ t          |d d df         g d          sJ d S )Nri   )   )   r   r        fg6oI2     f@g#EdX0)	getfixturevaluer+   r/   r   r   r   r   suffixr   )r   requestr;   fidsboundss        r%   test_read_boundsr      s    
 ""8,,D!$..;44DGDt$$LD&:<8####7iT

 122222F111a4L"G"G"GHHHHHHHr$   c                     t          |           \  }}|j        dk    sJ |j        dk    sJ t          |d d df         g d          sJ d S N)r5   )r   r5   r   r   r   r   r   )r   r   r   s      r%   test_read_bounds_bytesr      sh    }--LD&:<6!!!!F111a4L"G"G"GHHHHHHHr$   c                     t          |           \  }}|j        dk    sJ |j        dk    sJ t          |d d df         g d          sJ d S )Nri   r   ri   r   )ri   ri   ri   ri   r   )r   r   r   s      r%   "test_read_bounds_nonseekable_bytesr      sf    011LD&:<6!!!!F111a4L,,,///////r$   c                     t          |           \  }}|j        dk    sJ |j        dk    sJ t          |d d df         g d          sJ d S r   r   )r   r   r   s      r%   test_read_bounds_fileliker      si    /00LD&:<6!!!!F111a4L"G"G"GHHHHHHHr$   c                 N    t          | d          d         }|j        dk    sJ d S )Nr~   max_featuresri   r   r~   )r   r   )rg   r   s     r%   test_read_bounds_max_featuresr     s3    ,1===a@F<6!!!!!!r$   c                     t          j        t          d          5  t          | dz             ddd           dS # 1 swxY w Y   dS zFReading a multi-layer file without specifying a layer gives a warning.zMore than one layer found r@   sample.osm.pbfN)rC   rq   rr   r   data_dirs    r%   *test_read_bounds_unspecified_layer_warningr   	  s    	k)E	F	F	F 1 1H//0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   <A A c                     t          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )Nz'max_features' must be >= 0r@   r   rC   rD   rE   r   rg   s    r%   &test_read_bounds_negative_max_featuresr     s    	z)F	G	G	G : :'b9999: : : : : : : : : : : : : : : : : :   ;??c                     t          | d          d         d d df         }t          | d          \  }}|j        dk    sJ t          |d d df         |          sJ |d         dk    sJ d S )N   r   ri   
   skip_features)r      r   r   )rg   expected_boundsr   r   s       r%   test_read_bounds_skip_featuresr     s    !"5BGGGJ111b5QO2"EEELD&<8####F111a4L/222227b======r$   c                     t          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )Nz'skip_features' must be >= 0r@   r   r   r   r   s    r%   'test_read_bounds_negative_skip_featuresr     s    	z)G	H	H	H ; ;'r::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;r   c                 J   | j         dk    rRt          dk    rGt          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S t          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )N.gpkg)r5   r   r   zno such columnr@   invalidwherezInvalid SQL)r   r   rC   rD   r   r   rE   )naturalearth_lowres_all_exts    r%   test_read_bounds_where_invalidr   !  s`   ")W449IZ9W9W]>1ABBB 	F 	F39EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F ]:];;; 	F 	F39EEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs#   AAA9BBBc                     t          | d          \  }}|j        dk    sJ |j        dk    sJ |d         dk    sJ t          |d d df         g d          sJ d S )Nziso_a3 = 'CAN'r   r   r   r   r5   )gKRag.4iD@g tRJgwgT@r   )rg   r   r   s      r%   test_read_bounds_wherer   *  s    2:JKKKLD&:<6!!!!7a<<<<F111a4L"O"O"OPPPPPPPr$   bbox)r   r}   )ri   r~   r5   c                     t          j        t          d          5  t          | |           d d d            d S # 1 swxY w Y   d S )NzInvalid bboxr@   r   r   )rg   r   s     r%   test_read_bounds_bbox_invalidr   2  s    	z	8	8	8 4 4'd33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4r   c                 r   t          | d          \  }}|j        dk    sJ |j        dk    sJ t          | d          \  }}|j        dk    sJ t          j        ddg          }|t          | j                 z  }t          ||          sJ |j        d	k    sJ t          |j        g d
g dg          sJ d S )N)r   r   h㈵>r   r   r   )r   r   i   ir   r~   !   "   r   )gcϽTg-۠@gi5OSgd}$9#@)gW:E|Ug6s @gqy(Tg*A*o&@)	r   r   nparrayr   r   r   r   T)r   r   r   fids_expecteds       r%   test_read_bounds_bboxr   8  s   #*B  LD& :<6!!!!:ARSSSLD&:Hb"X&&MY:ABBMt]+++++<6!!!!@@@AAA	
      r$   maskr   )typecoordinatesz({"type": "Point", "coordinates": [0, 0]}r   c                     t          j        t          d          5  t          | |           d d d            d S # 1 swxY w Y   d S )Nz+'mask' parameter must be a Shapely geometryr@   r   r   )rg   r   s     r%   test_read_bounds_mask_invalidr   R  s     
z)V	W	W	W 4 4'd33334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4r   c           	          t          j        t          d          5  t          | dt	          j        dd                     d d d            d S # 1 swxY w Y   d S )Nz!cannot set both 'bbox' and 'mask'r@   r   i7   )r   r   )rC   rD   rE   r   shapelyr   r   s    r%   "test_read_bounds_bbox_mask_invalidr   `  s    	z)L	M	M	M 
 
&7gmDRT>U>U	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   &AAAzmask,expectedzPOINT (-105 55)r5   z/POLYGON ((-80 8, -80 10, -85 10, -85 8, -80 8))r   r   zPOLYGON ((
                6.101929 50.97085,
                5.773002 50.906611,
                5.593156 50.642649,
                6.059271 50.686052,
                6.374064 50.851481,
                6.101929 50.97085
            )))y         zGEOMETRYCOLLECTION (
                POINT (-7.7 53),
                POLYGON ((-80 8, -80 10, -85 10, -85 8, -80 8))
            ))r   r      c                     t          j        |          }t          | |          d         }t          j        |          t
          | j                 z   }t          ||          sJ d S )Nr   r   )r   from_wktr   r   r   r   r   r   )r   r   r<   r   r   s        r%   test_read_bounds_maskr   h  se    6 D!!D2>>>qADHX&&3N3U)VVMt]+++++++r$   c                 h   t          | d          \  }}t          L|j        dk    sJ t          j        g d          }|t
          | j                 z  }t          ||          sJ d S |j        dk    sJ t          j        ddg          }|t
          | j                 z  }t          ||          sJ d S )N)it   i-   r   )r   )r5   r         r   r   r   )r   r   r   r   r   r   r   r   )r   r   _r   s       r%   5test_read_bounds_bbox_intersects_vs_envelope_overlapsr     s     5<PQQQGD!$zT!!!!00#>#EFF4/////// zT!!!!!R))#>#EFF4///////r$   rg   ).shp.shp.zipr   	.gpkg.zipT)indirectc                    t          |           }|d         dk    sJ |d         dk    sJ |d         dk    sJ |d         j        dk    sJ |d	                                         g d
k    sJ |d         dk    sJ t          |d         d          sJ |d         d         du sJ |d         d         du sJ |d         d         du sJ |d         d         du sJ | j                            d          rU|d         dk    sJ |d         dk    sJ |d         dk    sJ |d         dk    sJ t          r|d         d         du sJ d S d S | j                            d           rL|d         d!k    sJ |d         d!k    sJ |d         d"k    sJ |d         d#k    sJ |d         d         du sJ d S t          d$| j                   )%N
layer_namerg   crsz	EPSG:4326encodingUTF-8fields   dtypes)int64objectr   r   float64featuresr   total_bounds)iLi   VIT@capabilitiesrandom_readTfast_spatial_filterFfast_feature_countfast_total_bounds)r   r   
fid_columnfidgeometry_namegeomgeometry_typerj   rN   r4   fast_set_next_by_index)r   r    rh   r1   ztest not implemented for ext )	r   r   tolistr   rb   r]   r   rE   r   rg   metas     r%   test_read_infor    s    ())D!66666;+%%%%
w&&&&>4''''>  ""&X&X&XXXXX
s""""D(*DEEEEE.$6666 56%???? 45==== 34<<<<(()?@@ WL!U****O$....O$6666H~'''' 	J'(@ATIIII	J 	JII		!	*	*+?	@	@ 
WL!R'''' O$****O$	1111H~!11111N#$<=EEEEEEU9L9SUUVVVr$   z.sqlitec                 d    t          |           }|d                                         dk    sJ d S )Nr   r   )r   upperr  s     r%   test_read_info_encodingr    s:     ())D
!!##w......r$   rt   rs   c                     |                     |           }t          |t                    s|n|d         }t          |          }|d         j        dk    sJ |d         dk    sJ d S )Nri   r   r   r   r   )r   r+   r/   r   r   )r   r   r;   r  s       r%   test_read_info_vsir    sr     ""8,,D!$..;44DGDT??D>4''''
s""""""r$   c                 f    t          |           }|d         j        dk    sJ |d         dk    sJ d S Nr   r   r   r5   r   r   )r   r  s     r%   test_read_info_bytesr    sC    ]##D>4''''
q      r$   c                 f    t          |           }|d         j        dk    sJ |d         dk    sJ d S )Nr   r   r   ri   r  )r   r  s     r%    test_read_info_nonseekable_bytesr    sD    &''D>4''''
q      r$   c                 f    t          |           }|d         j        dk    sJ |d         dk    sJ d S r  r  )r   r  s     r%   test_read_info_fileliker     sD    %&&D>4''''
q      r$   zdataset_kwargs,fields	top_levelintermediate_levelFLATTEN_NESTED_ATTRIBUTESYESintermediate_level_bottom_levelflatten_nested_attributesyesc                 `    t          | fi |}|d                                         |k    sJ d S )Nr   )r   r  )nested_geojson_filedataset_kwargsr   r  s       r%   test_read_info_dataset_kwargsr+    sA    8 (;;N;;D>  ""f,,,,,,r$   c                     t          j        t          d          5  t          | d           d d d            d S # 1 swxY w Y   d S )N$does not support open option INVALIDr@   r$  INVALID)rC   rq   RuntimeWarningr   r   s    r%   %test_read_info_invalid_dataset_kwargsr1    s    	n,R	S	S	S 6 6%u55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6r   c                     t          j        t          d          5  t          | dz  dd           d d d            d S # 1 swxY w Y   d S )NzCould not iterate over featuresr@   r   linesT)layerforce_feature_count)rC   rD   r   r   r   s    r%   ,test_read_info_force_feature_count_exceptionr6    s    	~-N	O	O	O X X(--WRVWWWWX X X X X X X X X X X X X X X X X Xs   ?AAzlayer, force, expected))pointsFr   )r7  Tr   )r3  Fr   )r3  T$   c                 N    t          | dz  ||d          }|d         |k    sJ d S )Nr   F)r4  r5  USE_CUSTOM_INDEXINGr   r   )r   r4  forcer<   r  s        r%   "test_read_info_force_feature_countr=    sH     ##!!	  D 
x''''''r$   z)force_total_bounds, expected_total_bounds)T)r   g     Vr   r  )FNc                     t          || d          }t          ||          }|t          |d         |          sJ d S |d         J d S )Nz	.geojsonl)dst_dirext)force_total_boundsr  )r   r   r   )tmp_pathrg   rA  expected_total_boundsgeojson_pathinfos         r%   !test_read_info_force_total_boundsrF  0  ss     $X;  L \6HIIID(^,.CDDDDDDDN#+++++r$   c                 d    t          |           }|d         ddgk    sJ |d         ddgk    sJ dS )z1Test if JSON fields types are returned correctly.	ogr_types	OFTStringogr_subtypesOFSTNoneOFSTJSONNr;  )r)  r  s     r%   test_read_info_jsonfieldrM  B  sL    ())Dk :::::J
#;;;;;;;r$   c                     t          j        t          d          5  t          | dz             ddd           dS # 1 swxY w Y   dS r   )rC   rq   rr   r   r   s    r%   (test_read_info_unspecified_layer_warningrO  I  s    	k)E	F	F	F / /(--.../ / / / / / / / / / / / / / / / / /r   c                     t          j        t          d          5  t          | dg           d d d            d S # 1 swxY w Y   d S )Nz&'layer' parameter must be a str or intr@   list_arg_is_invalid)r4  r   r   s    r%   test_read_info_invalid_layerrR  O  s    	z)Q	R	R	R H H'0E/FGGGGH H H H H H H H H H H H H H H H H Hr   c                 4    t          |           d         J d S )Nr  r;  )ry   s    r%   test_read_info_without_geometryrT  T  s"    %&&~6>>>>>r$   zname,value,expected))	CPL_DEBUGONT)rU  TT)rU  OFFF)rU  FFc                 V    t          | |i           t          |           }||k    sJ d S r"   r   r	   )rb   valuer<   actuals       r%   test_set_config_optionsr\  X  s:     T5M***#D))FXr$   c                      t          ddi           t          d          dk    sJ t          dd i           t          d          J d S )NfoobarrY  r#   r$   r%   test_reset_config_optionsr`  g  sY    UEN+++!%((E1111UDM***!%((00000r$   c                     t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   |                                 j        dk    sJ d S )NzNo such file or directoryr@   znon-existent.shpr  )rC   rD   r   r   
readouterrerr)capfds    r%   test_error_handlingre  o  s     
.I	J	J	J & &$%%%& & & & & & & & & & & & & & & !R''''''s   8<<c                     t          j        t          d          5  t          |d           d d d            n# 1 swxY w Y   |                                 j        dk    sJ d S )Nr-  r@   r$  r.  r  )rC   rq   r0  r   rb  rc  )rd  rg   s     r%   test_error_handling_warningrg  x  s     
n,R	S	S	S 6 6%u55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 !R''''''s   :>>c                    t          |           \  }}}}d|d<   d|d<   t          d          }t          d| j         d          }t          |||fi | t          |||fi | t	          d          }|                                |v sJ |                                |v sJ t	          dd	
          }|                                |vsJ |                                |v sJ t	          dd
          }|                                |v sJ |                                |vsJ t          |j                   t	          d          }|                                |v sJ |                                |vsJ t          |           dS )z<Test all basic functionalities of file handling in /vsimem/.Fspatial_indexrj   r  z-/vsimem/pyogrio_test_naturalearth_lowres.gpkgz/vsimem/pyogrio_dir_test/r   /vsimem/zpyogrio_dir_test*.gpkg)patternzpyogrio_test*.gpkgN)	r   r   stemr   r   as_posixr   parentr   )rg   r  r   geometry
field_datatest_file_pathtest_dir_pathfiless           r%   "test_vsimem_listtree_rmtree_unlinkrt    s    %))<$=$=!D!Xz!D*DIJJNT5H5MTTTUUM	.(J77$777	-:66666 $$E""$$----!!##u,,,, -EFFFE""$$E1111!!##u,,,,-ABBBE""$$----!!##50000 }#$$$$$E""$$----!!##50000 ~r$   c                 `   t          j        t          d          5  t          |            d d d            n# 1 swxY w Y   t          j        t          d          5  t          d           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          d           d d d            n# 1 swxY w Y   t          j        t
          d          5  t          d           d d d            n# 1 swxY w Y   |                                 t          d          v sJ d S )NzPath is not a directoryr@   Path does not existz/vsimem/non-existentz/path to in-memory file or directory is requiredz/vsimemrj  )rC   rD   NotADirectoryErrorr   FileNotFoundErrorOSErrorrm  r   rt   s    r%   test_vsimem_rmtree_errorr{    s/   	)1J	K	K	K / /-.../ / / / / / / / / / / / / / / 
(0E	F	F	F + +)***+ + + + + + + + + + + + + + + 
H
 
 
   	9               
H
 
 
   	:               &..00L4K4KKKKKKKsB   8<<A::A>A> B<<C C "C>>DDc                    t          j        t          d          5  t          | j                   d d d            n# 1 swxY w Y   t          j        t
          d          5  t          d           d d d            d S # 1 swxY w Y   d S )NzPath is a directoryr@   rv  z/vsimem/non-existent.gpkg)rC   rD   IsADirectoryErrorr   rn  rx  rz  s    r%   test_vsimem_unlink_errorr~    s   	(0E	F	F	F 6 6-45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 
(0E	F	F	F 0 0.///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s!   =AA#B  BB)cpathlibr   numpyr   r   r   pyogrior   r   r   r	   r
   r   r   r   r   r   r   r   r   pyogrio._compatr   pyogrio._envr   pyogrio.errorsr   r   pyogrio.rawr   r   pyogrio.tests.conftestr   r   r   r   rC   pyogrio._ogrr   r   r    r   ImportErrorr&   r)   r-   r0   markparametrizeparamskipifr=   rG   rJ   rO   re   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  keysr  r  r  r  r   r+  r1  r6  r=  rF  rM  rO  rR  rT  r\  r`  re  rg  rt  r{  r~  r#   r$   r%   <module>r     s	             ' ' ' ' ' ' ' '                              ' & & & & &             : : : : : : : : # # # # # # # #            WYY U U UTTTTTTTTTU U U U U U U U U U U U U U U	NNNN 	 	 	D	    1 1 1U U U &*#'+$$ 9,B %  	
 	
 	
 	+$$LLNN2H %  	
 	
 	
 61 17 61 
  	 	" "	 	"
 *.." " /."
 	 	 	 9 9 9) ) )0&O &O &OR" " "# # #" " " TTT 	I 	I	 	II I I0 0 0I I I" " "
1 1 1: : :
  ; ; ;
F F FQ Q Q !:!:!:;;4 4 <;4
  4 
!Q002 4 4  4
 
 
 
 	QC 	:RHE OO
	
 MM	
 2, ,3  4,0 0 0( EEEPT   "W "W "WJ 7\W\^^7Y7$   / / /
 -/HI # # #! ! !! ! !! ! ! 	k/01(%01	
 )%01	
 )$/1	
! 6- -7 6-
6 6 6
X X X
    	( 	( 	( /-}= , ,	 ,< < </ / /H H H
? ? ?      1 1 1( ( (( ( (! ! !HL L L(0 0 0 0 0s$   'A>>BB
B BB