a
    1$e                     @   s  d dl mZ d dlmZmZmZmZmZmZ d dl	m
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Zd dlZejrd dlZnejrd dlZejjG dd dZejjG d	d
 d
Zejj G dd dZ!ejjG dd dZ"ejj#ej$ dddd Z%dS )    )sqrt)PointPolygonMultiPolygonboxGeometryCollection
LineString)assert_array_equalN)_compat)GeoDataFrame	GeoSeries	read_filedatasetsc                   @   sr   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
dej	jejdddd Zdd Zdd Zdd ZdS )TestSeriesSindexc                 C   s   t g d}t g d}td||gidd}|jr6J |j |jsFJ d|jj_|jrZJ |j |jsjJ t||g}|jrJ |j |jsJ d|j_|jrJ |j |jsJ dS )zTest the has_sindex method.r   r      r   r   r   r   r   r   r   geomgeometryN)r   r   
has_sindexsindexr   values_sindexr   )selft1t2ds r#   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/geopandas/tests/test_sindex.pytest_has_sindex   s$    







z TestSeriesSindex.test_has_sindexc                 C   s*   t td}|jrJ t|jdks&J dS )z7Tests creating a spatial index from an empty GeoSeries.Zdtyper   N)r   objectr   lenr   r"   r#   r#   r$   test_empty_geoseries4   s    

z%TestSeriesSindex.test_empty_geoseriesc                 C   sd   t tddg}|jjdks J |jd}tt|dks@J |jd}tt|dks`J d S )Nr   r   r,   r   r   )r-   r,   r,   )r   r   r   sizeintersectionr(   list)r   r"   hitsr#   r#   r$   
test_point:   s    zTestSeriesSindex.test_pointc                 C   s,   t t g}|jrJ t|jdks(J dS )z9Tests that a single empty Point results in an empty tree.r   N)r   r   r   r(   r)   r#   r#   r$   test_empty_pointB   s    
z!TestSeriesSindex.test_empty_pointc                 C   sF   t g d}t g d}t g d}t|||g}|jjdksBJ d S )Nr   r   r   r   r   r      )r   r   r   r.   )r   r   r    sqr"   r#   r#   r$   test_polygonsH   s
    zTestSeriesSindex.test_polygonsz-ignore:The series.append method is deprecatedzappend removed in pandas 2.0reasonc                 C   st   t g d}t g d}t g d}t|||g}t|||gg d}||}t|dks`J |jjdkspJ d S )Nr   r   r4   )r5            )r   r   appendr(   r   r.   )r   r   r    r6   r"   tr#   r#   r$   test_polygons_appendO   s    
z%TestSeriesSindex.test_polygons_appendc                 C   sD   t tddg}|jjd u s J |jjdks0J |jjd us@J d S )Nr   r   )r   r   r   r   r   r.   r)   r#   r#   r$   test_lazy_build[   s    z TestSeriesSindex.test_lazy_buildc                 C   s8   t tddg}|j}tdd|jd< |j|us4J d S )Nr   r   r   r   iloc)r   r"   original_indexr#   r#   r$   test_rebuild_on_item_changea   s    z,TestSeriesSindex.test_rebuild_on_item_changec                 C   sx   t tddtddg}|j}|jd d }|j|us:J |jd d  }|j|u sVJ |jd d d }|j|ustJ d S )Nr   r   r,   rA   )r   r"   rC   slicedr#   r#   r$   test_rebuild_on_sliceg   s    z&TestSeriesSindex.test_rebuild_on_sliceN)__name__
__module____qualname__r%   r*   r2   r3   r7   pytestmarkfilterwarningsskipifcompatPANDAS_GE_20r?   r@   rD   rF   r#   r#   r#   r$   r      s   

r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestFrameSindexc                 C   s@   t dt dddd tt dt dD d}t|dd| _d S )	Nr;   r   c                 S   s   g | ]\}}t ||qS r#   r   .0xyr#   r#   r$   
<listcomp>{       z0TestFrameSindex.setup_method.<locals>.<listcomp>)ABr   r   r   )rangezipr   dfr   datar#   r#   r$   setup_methodw   s
    zTestFrameSindex.setup_methodc                 C   sP   d| j _| j jjdksJ t| j jd}t|dks<J |d dksLJ d S )Nz	epsg:4326r;   )      @ra   r:   r:      r   r5   )r]   Zcrsr   r.   r0   r/   r(   )r   r1   r#   r#   r$   test_sindex   s
    zTestFrameSindex.test_sindexc                 C   s>   | j jjjd u sJ | j jjdks&J | j jjjd us:J d S )Nr;   )r]   r   r   r   r   r.   r   r#   r#   r$   r@      s    zTestFrameSindex.test_lazy_buildc                 C   sX   | j jd usJ | j j}| j jdd ttddtddD dd | j j|usTJ d S )Nc                 S   s   g | ]\}}t ||qS r#   rR   rS   r#   r#   r$   rW      rX   zGTestFrameSindex.test_sindex_rebuild_on_set_geometry.<locals>.<listcomp>r;   
   T)inplace)r]   r   Zset_geometryr\   r[   )r   rC   r#   r#   r$   #test_sindex_rebuild_on_set_geometry   s     z3TestFrameSindex.test_sindex_rebuild_on_set_geometryc                 C   sp   | j j}| j jd d }|j|us&J | j j}| j jd d  }|j|u sLJ | j jd d d }|j|uslJ d S )Nr   r,   )r]   r   rB   )r   rC   rE   r#   r#   r$   test_rebuild_on_row_slice   s    z)TestFrameSindex.test_rebuild_on_row_slicec                 C   s:   | j j}| j d }|j|u s J | j j}|j|u s6J dS )z?Selecting a single column should not rebuild the spatial index.r   N)r]   r   r   )r   rC   Zgeometry_colr#   r#   r$   $test_rebuild_on_single_col_selection   s
    
z4TestFrameSindex.test_rebuild_on_single_col_selectionc                 C   s   | j j}| j ddg }tjr6tjjjs6|j|usDJ n|j|u sDJ | j ddg }tjrrtjjjsr|j|usJ n|j|u sJ dS )z2Selecting a subset of columns preserves the index.r   rY   N)r]   r   rN   rO   pdoptionsmodeZcopy_on_write)r   rC   Zsubset1Zsubset2r#   r#   r$   &test_rebuild_on_multiple_col_selection   s    z6TestFrameSindex.test_rebuild_on_multiple_col_selectionc                 C   sV   | j  }|j}|jdddd |jr*J |j}||us<J |j g dksRJ d S )NrY   FT)Z	ascendingrf   )r:   r5   rb   r   r   )r]   copyr   Zsort_valuesr   indextolistr   ZgdfZ
old_sindexZ
new_sindexr#   r#   r$   test_rebuild_on_update_inplace   s    

z.TestFrameSindex.test_rebuild_on_update_inplacec                 C   sB   | j  }|j}|jddidd |js,J |j}||u s>J d S )NrY   ZAAT)columnsrf   )r]   rn   r   renamer   rq   r#   r#   r$   test_update_inplace_no_rebuild   s    

z.TestFrameSindex.test_update_inplace_no_rebuildN)rG   rH   rI   r`   rc   r@   rg   rh   ri   rm   rr   ru   r#   r#   r#   r$   rP   u   s   		rP   c                   @   s   e Zd Zdd Zdd ZdS )TestJoinSindexc                 C   s   t jd}t|| _d S )NZnybb)	geopandasr   get_pathr   boros)r   Znybb_filenamer#   r#   r$   r`      s    zTestJoinSindex.setup_methodc                    s$  j j}|d}fdd|D }|ddgks4J j j d dk    j}|d} fdd|D }|dgksxJ j j d dk j}|d}fd	d|D f}|dgksJ  jd
dtdksJ jjdksJ j}|d}fdd|D }|ddgks J d S )N)g.AgHzbAc                    s   g | ]} j j| d  qS ZBoroName)ry   rB   rT   hitrd   r#   r$   rW      rX   z1TestJoinSindex.test_merge_geo.<locals>.<listcomp>ZBronxZQueensZBoroCoder5   c                    s   g | ]} j | d  qS rz   rB   r{   )firstr#   r$   rW      rX   c                    s   g | ]} j | d  qS rz   r}   r{   )secondr#   r$   rW      rX   outer)howr;   c                    s   g | ]} j | d  qS rz   r}   r{   )mergedr#   r$   rW      rX   )ry   r   r/   merger(   r.   )r   treer1   resr#   )r~   r   r   r   r$   test_merge_geo   s*    



zTestJoinSindex.test_merge_geoN)rG   rH   rI   r`   r   r#   r#   r#   r$   rv      s   rv   c                %   @   s
  e Zd Zdd Zejddg fddgfdddgfd	dgffd
d Zejddddeddfdd Z	ejdde
ddddg fde
dddddgfde
ddddddgfdeddgddgfde
ddddg fde
dddddgfde
ddddddgfdeddgg fde
ddddg fde
ddddg fde
dddddgfdeddgg fd e
ddddg fd e
ddd!d!dgfd e
ddd"d"dgfd e
ddd#d#ddgfd eddgg fd$e
dddddgfd$e
ddd"d"g fd e
ddd%d%dgfd&e
ddddddgfd&e
d'd'd(d(g fd&e
ddddddgfd)e
ddddg fd)e
ddd!d!dgfd)e
ddd!d!dgfd)e
ddd"d"dgfd)e
ddd#d#ddgfd)e
ddd%d%g ffd*d+ Zd,d- Zejd.dg fe g fe g fe g fe g fgd/d0 Zd1d2 Zejd3d4g d5g d6gfd7g d5g d6gffd8d9 Zejdddgg g gfddgdgdggfddgddgddggfddgg g gfddgdgdggfddgddgddggfdddgdgdggfdd:dgg d;g d<gfdd=gg g gfdd>gg g gfdd?gdgdggfd dgg g gfd d@gdgdggfd dAgdgdggfd dBgdgdggfd dCgddgddggfd dDgdgdggfd$dEgdgdggfd$dFgg g gfd&dGgddgddggfd&dHgg g gfd&dgddgddggfd)dgg g gfd)d@gdgdggfd)dAgdgdggfd)dBgdgdggfd)dCgddgddggfd)dDgg g gffdIdJ ZejdKe gg g gfe dgg g gfdgg g gfde
dddddgdgdggfgdLdM ZdNdO ZdPdQ ZdRdS Zejdddg g gfddg g gfd d:dgdggffdTdU Zejd3d4g d5g d6gfd7g d5g d6gffdVdW ZejjejpBejdXdYdZd[ Zejjejppejonej   d\dYd]d^ Z!ejjejpejoej  d_dYejd`d4d7gejdaddgdgdggfddgdgdggfgdbdc Z"ejjejp
ejo
ej  d_dYejd`d4d7gejdaddd	gddgddggfdddegddgddggfgdfdg Z#ejjejpejoej  d_dYejd`d4d7gejdadg g gfdgg g gfgdhdi Z$ejjejpejoej  d_dYejdjd4d7gejdkd4dg d;g dlge%de%de%dmgffd7dddgddgge%de%dmgffd4dddgddgge%de%dgffd7ddgdgge%dgffgdndo Z&ejjej dpdYejdjd4d7gejdqd7dd7g drg drgddg ffd7dd4g drg dsgde%d#g ffd4dd7g drg drgddg ffd4dd4g dtg dugdve%d#g ffd7dwd4g dxg dygdzdg ffd4dwd4g d{g d|gd}dg ffgd~d Z'ejjej	pej	oej   ddYdd Z(dd Z)dd Z*dd Z+dd Z,ejdg ddd Z-dS )TestPygeosInterfacec                 C   sP   ddd t tdtdD tddddg i}t|dd| _t|d | _d S )Nr   c                 S   s   g | ]\}}t ||qS r#   rR   rS   r#   r#   r$   rW      rX   z4TestPygeosInterface.setup_method.<locals>.<listcomp>r;   re      r   )r\   r[   r   r   r]   r(   expected_sizer^   r#   r#   r$   r`      s    z TestPygeosInterface.setup_methodztest_geom, expectedr,   r,         r   )r   r         ?r   r   r   r   r   r   r   r   c                 C   s    t | jj|}t|| dS )z2Tests the `intersection` method with valid inputs.N)r0   r]   r   r/   r	   )r   	test_geomexpectedr   r#   r#   r$   test_intersection_bounds_tuple  s    z2TestPygeosInterface.test_intersection_bounds_tupler   )r,   r,   r   r   Nc                 C   s   t jr@tt | jj| W d   q|1 s40    Y  n<tttf | jj| W d   n1 sr0    Y  dS )z4Tests the `intersection` method with invalid inputs.N)	rN   
USE_PYGEOSrJ   raises	TypeErrorr]   r   r/   	Exceptionr   r   r#   r#   r$   &test_intersection_invalid_bounds_tuple  s
    .z:TestPygeosInterface.test_intersection_invalid_bounds_tuplezpredicate, test_geom, expectedr,   r   r   r   
intersectswithin      ?Q?      ?re         r;   containsjt?      ?rb   touchesr   ZcoversMbP?Gz?Zcontains_properlyc                 C   s    | j jj||d}t|| dS )z@Tests the `query` method with valid inputs and valid predicates.	predicateNr]   r   queryr	   r   r   r   r   r   r#   r#   r$   
test_query!  s    dzTestPygeosInterface.test_queryc                 C   s<   t t | jjd W d   n1 s.0    Y  dS )z/Tests the `query` method with invalid geometry.ZnotavalidgeomNrJ   r   r   r]   r   r   rd   r#   r#   r$   test_query_invalid_geometry  s    z/TestPygeosInterface.test_query_invalid_geometryztest_geom, expected_valuec                 C   s   | j j|}t|| dS )z-Tests the `query` method with empty geometry.Nr   )r   r   expected_valuer   r#   r#   r$   test_query_empty_geometry  s    z-TestPygeosInterface.test_query_empty_geometryc                 C   sN   t dddd}tt" | jjj|dd W d   n1 s@0    Y  dS )z1Tests the `query` method with invalid predicates.r,   r   testr   N)r   rJ   r   
ValueErrorr]   r   r   r   r#   r#   r$   test_query_invalid_predicate  s    z0TestPygeosInterface.test_query_invalid_predicatezsort, expectedT)r   r   r   r   r   rb   Fc           
   
   C   s   t tg dg}t tg dtg dtg dg}g d}tj|d}tj|d}|jjd }|jj||d}t|t|ksJ zt	|| W nN t
y }	 z6|du rtd	|d
|   |	W Y d}	~	n
d}	~	0 0 dS )zYCheck that results from `query` don't depend on the
        order of geometries.
        r   )r5   r   r5   r5   r   r5   )r,   r   r   r   )r,   r5   r   )r;   r5   )r;   r;   )r5   r;   r   r   r   sortFnrtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
Expected:
 {}
	Got:
 {}
N)r   r   rw   r   r   r   r   r   sortedr	   AssertionErrorrJ   xfailformatrp   )
r   r   r   
test_polys
tree_polystree_dftest_dfZtest_geor   er#   r#   r$   test_query_sorting  s2    


z&TestPygeosInterface.test_query_sortingr+   )r   r   r   )r   r   r   )r   r   r   r   )r   r   re   re   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r,   r,   rb   rb   )re   re   r   r   )r,   r,   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                 C   s@   t jdd |D tt|d}| jjj||d}t|| dS )zVTests the `query_bulk` method with valid
        inputs and valid predicates.
        c                 S   s   g | ]}t | qS r#   )r   )rT   r   r#   r#   r$   rW   =  rX   z7TestPygeosInterface.test_query_bulk.<locals>.<listcomp>ro   r   Nrw   r   r[   r(   r]   r   r   r	   r   r#   r#   r$   test_query_bulk  s
    iz#TestPygeosInterface.test_query_bulkztest_geoms, expected_valuec                 C   s2   t j|tt|d}| jj|}t|| dS )z5Tests the `query_bulk` method with an empty geometry.r   Nr   )r   Z
test_geomsr   r   r#   r#   r$   test_query_bulk_empty_geometryB  s    z2TestPygeosInterface.test_query_bulk_empty_geometryc                 C   s2   t jg td}g g g}| jj|}t|| dS )z8Tests the `query_bulk` method with an empty input array.r&   N)nparrayr'   r]   r   r   r	   )r   
test_arrayr   r   r#   r#   r$   !test_query_bulk_empty_input_arrayV  s    z5TestPygeosInterface.test_query_bulk_empty_input_arrayc                 C   s@   d}t t | jj| W d   n1 s20    Y  dS )z`
        Tests the `query_bulk` method with invalid input for the `geometry` parameter.
        Z
notanarrayNr   )r   r   r#   r#   r$   &test_query_bulk_invalid_input_geometry]  s    z:TestPygeosInterface.test_query_bulk_invalid_input_geometryc                 C   s`   d}d}t jt| gdgd}tt$ | jjj|j	|d W d   n1 sR0    Y  dS )z6Tests the `query_bulk` method with invalid predicates.r   r   0r   r   N)
rw   r   r   rJ   r   r   r]   r   r   r   )r   Ztest_geom_boundsZtest_predicater   r#   r#   r$   !test_query_bulk_invalid_predicatee  s
    z5TestPygeosInterface.test_query_bulk_invalid_predicatec                 C   s   t jt| gdgd}| jjj||d}t|| | jjj|j|d}t|| | jjj|jj|d}t|| | jjj|jj	 |d}t|| | jjj|jj	 |d}t|| dS )z\Tests that query_bulk can accept a GeoSeries, GeometryArray or
        numpy array.
        r   r   r   N)
rw   r   r   r]   r   r   r	   r   r   Zto_numpyr   r#   r#   r$   test_query_bulk_input_typeq  s    



z.TestPygeosInterface.test_query_bulk_input_typec           	   
   C   s   t tg dg}t tg dtg dtg dg}tj|d}tj|d}|jj|j|d}t|d t|d ks~J t|d t|d ksJ zt|| W nN t	y } z6|du rt
d	|d
|   |W Y d}~n
d}~0 0 dS )z^Check that results from `query_bulk` don't depend
        on the order of geometries.
        r   r   r   r   r   r   r   Fr   r   N)r   r   rw   r   r   r   r   r   r	   r   rJ   r   r   rp   )	r   r   r   r   r   r   r   r   r   r#   r#   r$   test_query_bulk_sorting  s0    



z+TestPygeosInterface.test_query_bulk_sortingz6RTree supports sindex.nearest with different behaviourr8   c                 C   sP   t dg i}tjtdd  |jjddd W d    n1 sB0    Y  d S )Nr   z&sindex.nearest using the rtree backendmatchr   rb   )Znum_results)rw   r   rJ   warnsFutureWarningr   nearestr   r]   r#   r#   r$   test_rtree_nearest_warns  s
    z,TestPygeosInterface.test_rtree_nearest_warnsz-PyGEOS < 0.10 does not support sindex.nearestc                 C   sL   t dg i}tjtdd |jd  W d    n1 s>0    Y  d S )Nr   zrequires pygeos >= 0.10r   )rw   r   rJ   r   NotImplementedErrorr   r   r   r#   r#   r$   test_pygeos_error  s    z%TestPygeosInterface.test_pygeos_errorz1PyGEOS >= 0.10 is required to test sindex.nearest
return_allzgeometry,expectedc                 C   sp   t tdtd}td|i}t|}|jj||d}t	|| t |}|jj||d}t	|| d S Nre   r   r   
modpointsr   arangerw   r   r   r   r   r	   )r   r   r   r   geomsr]   pr   r#   r#   r$   test_nearest_single  s    

z'TestPygeosInterface.test_nearest_singler   )r   r   c                 C   s   t tdtd}td|i}dd |D }|jj||d}t|| t |}|jj||d}t|| t	|}|jj||d}t|| t
| \}	}
t|	|
}|jj||d}t|| d S )Nre   r   c                 S   s   g | ]}t |qS r#   rR   )rT   r   r#   r#   r$   rW     rX   z:TestPygeosInterface.test_nearest_multi.<locals>.<listcomp>r   )r   r   r   r   rw   r   r   r   r	   r   r\   Zpoints_from_xy)r   r   r   r   r   r]   psr   r"   rU   rV   gar#   r#   r$   test_nearest_multi  s    




z&TestPygeosInterface.test_nearest_multic                 C   sD   t tdtd}td|i}|jj||d}t|| d S r   )	r   r   r   r   rw   r   r   r   r	   )r   r   r   r   r   r]   r   r#   r#   r$   test_nearest_none  s    z%TestPygeosInterface.test_nearest_nonereturn_distancez return_all,max_distance,expected)r   r   r;   2   c           	      C   s   t tdtd}td|i}tddtddg}|jj||||d}|rxt	|d |d  t	|d |d  nt	||d  d S )Nre   r   r   r   )r   max_distancer   r   r   )	r   r   r   r   r   r   r]   r   r   r#   r#   r$   test_nearest_max_distance%  s    z-TestPygeosInterface.test_nearest_max_distancezJshapely >= 2.0 is required to test sindex.nearest with parameter exclusivez*return_all,max_distance,exclusive,expected)r   r   rb   r5   r:   )r   r   r   rb   r5   )r   r   r   rb   rb   r5   r5   r:   )r   r   rb   r   r5   rb   r:   r5      g?)r   rb   r;   )r;   r;   r   r5   )r   rb   r;   r;   )r;   r;   r   rb   r:   c           
      C   s   t tdtd}|r0t|tddg}td|i}|}|jj	|||||d}	|rt
|	d |d  t
|	d |d  nt
|	|d  d S )Nr;   r   rb   r   )r   r   r   	exclusiver   )r   r   r   r   r=   r   rw   r   r   r   r	   )
r   r   r   r   r   r   r   r]   r   r   r#   r#   r$   test_nearest_exclusiveF  s     z*TestPygeosInterface.test_nearest_exclusivez:sindex.nearest exclusive parameter requires shapely >= 2.0c                    s~   ddl m   fddttdtdD }tj|d}tjt	dd  |j
j|d	d
 W d    n1 sp0    Y  d S )Nr   rR   c                    s   g | ]\}} ||fqS r#   r#   rS   rR   r#   r$   rW   |  rX   zJTestPygeosInterface.test_nearest_exclusive_unavailable.<locals>.<listcomp>r;   r   zrequires shapely >= 2.0r   T)r   )shapely.geometryr   r\   r   r   rw   r   rJ   r   r   r   r   r   r   r]   r#   rR   r$   "test_nearest_exclusive_unavailableu  s
    $z6TestPygeosInterface.test_nearest_exclusive_unavailablec                 C   sL   t dddt  t ddt  g}tj|d}|jt ddd dksHJ dS )z8Tests building sindex with interleaved empty geometries.r   Nr   r   r5   )r   rw   r   r   r   r   r#   r#   r$   test_empty_tree_geometries  s    z.TestPygeosInterface.test_empty_tree_geometriesc                 C   s   | j jj| jksJ dS )zTests the `size` property.N)r]   r   r.   r   rd   r#   r#   r$   	test_size  s    zTestPygeosInterface.test_sizec                 C   s   t | jj| jksJ dS )z.Tests the `__len__` method of spatial indexes.N)r(   r]   r   r   rd   r#   r#   r$   test_len  s    zTestPygeosInterface.test_lenc                 C   sn   t jg td}|jjsJ t dg}|jjs2J t t g}|jjsLJ t tddg}|jjrjJ dS )zTests the `is_empty` property.r&   Nr   )rw   r   r'   r   Zis_emptyr   )r   emptyZ	non_emptyr#   r#   r$   test_is_empty  s    z!TestPygeosInterface.test_is_emptyzpredicate, expected_shape))N)rb   i  )r   rb      )r   r   )r   rb   r   )overlapsr   )Zcrossesr   )r   r   c                 C   s>   t td}t td}|j|j|}|j|ks:J dS )z1Tests output sizes for the naturalearth datasets.Znaturalearth_lowresZnaturalearth_citiesN)r   r   rx   r   r   r   shape)r   r   Zexpected_shapeZworldcapitalsr   r#   r#   r$   test_integration_natural_earth  s    z2TestPygeosInterface.test_integration_natural_earth).rG   rH   rI   r`   rJ   rK   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   rN   r   USE_SHAPELY_20r   ZPYGEOS_GE_010r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r#   r#   r$   r      sv  	
	




b



)





c

	

(


*$$	 $   
r   zno rtree installedr8   c                  C   s   t g d} t g d}dd t| |gD }tt tj|}W d    n1 sZ0    Y  t|	dddgks~J d S )Nr   r   c                 s   s   | ]\}}||j d fV  qd S )N)Zbounds)rT   iitemr#   r#   r$   	<genexpr>  rX   z4test_old_spatial_index_deprecated.<locals>.<genexpr>r   r   r   )
r   	enumeraterJ   r   r   rw   r   ZSpatialIndexr0   r/   )r   r    streamidxr#   r#   r$   !test_old_spatial_index_deprecated  s    *r  )&mathr   r   r   r   r   r   r   r   Znumpy.testingr	   rw   r
   rN   r   r   r   r   rJ   numpyr   Zpandasrj   r   Zshapelyr   r   ZpygeosrK   Zskip_no_sindexr   rP   skiprv   r   rM   Z	HAS_RTREEr  r#   r#   r#   r$   <module>   s6    
Y_$     >