
    rbi                        d dl mZ d dlZd dlZd dlmZmZmZm	Z	m
Z
mZ d dlZd dl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 dZn# e$ r d	ZY nw xY wej                            e d
          Z G d d          Z G d d          Zej        j        ej                            d           G d d                                  Z  G d d          Z!dS )    )sqrtN)GeometryCollection
LineStringMultiPolygonPointPolygonbox)GeoDataFrame	GeoSeries	read_file)_compat)assert_array_equal)	coo_arrayTFzscipy not installedreasonc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestSeriesSindexc                    t          g d          }t          g d          }t          d||gid          }|j        rJ |j         |j        sJ d|j        j        _        |j        rJ |j         |j        sJ t          ||g          }|j        rJ |j         |j        sJ d|j        _        |j        rJ |j         |j        sJ 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ss        k/var/www/html/mdtn/previsions/meteo_cartes/venv/lib/python3.11/site-packages/geopandas/tests/test_sindex.pytest_has_sindexz TestSeriesSindex.test_has_sindex    s    ---..---..&2r(+f===<	|$(
!<	|r2h<	|<	|    c                 v    t          t                    }|j        rJ t          |j                  dk    sJ dS )z7Tests creating a spatial index from an empty GeoSeries.dtyper   N)r   objectr    lenr#   r'   s     r(   test_empty_geoseriesz%TestSeriesSindex.test_empty_geoseries7   s?    F###818}}!!!!!!r*   c                 V   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   r4   r   r   )r5   r4   r4   )r   r   r    sizeintersectionr/   list)r#   r'   hitss      r(   
test_pointzTestSeriesSindex.test_point=   s    uQ{{m$$x}!!!!x$$^444::!####x$$%5664::!######r*   c                     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/   r0   s     r(   test_empty_pointz!TestSeriesSindex.test_empty_pointE   sB    uwwi  818}}!!!!!!r*   c                     t          g d          }t          g d          }t          g d          }t          |||g          }|j        j        dk    sJ d S )Nr   r   )r   r   r   r      )r   r   r    r6   )r#   r$   r%   sqr'   s        r(   test_polygonszTestSeriesSindex.test_polygonsK   sl    ---..---..55566r2rl##x}!!!!!!r*   c                     t          t          dd          g          }|j        j        J |j        j        dk    sJ |j        j        J d S )Nr   r   )r   r   r!   r"   r    r6   r0   s     r(   test_lazy_buildz TestSeriesSindex.test_lazy_buildR   sV    uQ{{m$$x'''x}!!!!x+++++r*   c                     t          t          dd          g          }|j        }t          dd          |j        d<   |j        |usJ d S )Nr   r   r   r    iloc)r#   r'   original_indexs      r(   test_rebuild_on_item_changez,TestSeriesSindex.test_rebuild_on_item_changeX   sL    uQ{{m$$!QKKq	x~------r*   c                    t          t          dd          t          dd          g          }|j        }|j        d d         }|j        |usJ |j        d d          }|j        |u sJ |j        d d d         }|j        |usJ d S )Nr   r   r4   rD   )r#   r'   rF   sliceds       r(   test_rebuild_on_slicez&TestSeriesSindex.test_rebuild_on_slice^   s    uQ{{E!QKK011}N2222}...."}N222222r*   N)__name__
__module____qualname__r)   r1   r:   r<   r@   rB   rG   rJ    r*   r(   r   r      s          ." " "$ $ $" " "" " ", , ,. . .3 3 3 3 3r*   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestFrameSindexc           	          t          d          t          dd          d t          t          d          t          d                    D             d}t          |d          | _        d S )N   r   c                 4    g | ]\  }}t          ||          S rN   r   .0xys      r(   
<listcomp>z0TestFrameSindex.setup_method.<locals>.<listcomp>q   $    EEETQU1a[[EEEr*   )ABr   r   r   )rangezipr
   dfr#   datas     r(   setup_methodzTestFrameSindex.setup_methodm   sc    qr1EESq588-D-DEEE
 

 tf555r*   c                     d| j         _        | j         j        j        dk    sJ t	          | j         j                            d                    }t          |          dk    sJ |d         dk    sJ d S )Nz	epsg:4326rR   )      @re      rf      r   r>   )r`   crsr    r6   r8   r7   r/   )r#   r9   s     r(   test_sindexzTestFrameSindex.test_sindexu   sk    !w~"a''''DGN//0@AABB4yyA~~~~Aw!||||||r*   c                     | j         j        j        j        J | j         j        j        dk    sJ | j         j        j        j        J d S )NrR   )r`   r   r!   r"   r    r6   r#   s    r(   rB   zTestFrameSindex.test_lazy_build|   sN    w&.666w~"a''''w&.:::::r*   c           
          | j         j        J | j         j        }| j                             d t          t	          dd          t	          dd                    D             d           | j         j        |usJ d S )Nc                 4    g | ]\  }}t          ||          S rN   rU   rV   s      r(   rZ   zGTestFrameSindex.test_sindex_rebuild_on_set_geometry.<locals>.<listcomp>   s$    EEETQU1a[[EEEr*   rR   
   T)inplace)r`   r    set_geometryr_   r^   )r#   rF   s     r(   #test_sindex_rebuild_on_set_geometryz3TestFrameSindex.test_sindex_rebuild_on_set_geometry   s    w~)))EESq"uQ||%D%DEEEt 	 	
 	
 	
 w~^333333r*   c                     | j         j        }| j         j        d d         }|j        |usJ | j         j        }| j         j        d d          }|j        |u sJ | j         j        d d d         }|j        |usJ d S )Nr   r4   )r`   r    rE   )r#   rF   rI   s      r(   test_rebuild_on_row_slicez)TestFrameSindex.test_rebuild_on_row_slice   s    bqb!}N2222aaa}....ddd#}N222222r*   c                 |    | j         j        }| j         d         }|j        |u sJ | j         j        }|j        |u sJ dS )z?Selecting a single column should not rebuild the spatial index.r   N)r`   r    r   )r#   rF   geometry_cols      r(   $test_rebuild_on_single_col_selectionz4TestFrameSindex.test_rebuild_on_single_col_selection   sP     wv"n4444w'"n444444r*   c                     | j         j        }| j         ddg         }t          j        s|j        |usJ n|j        |u sJ | j         ddg         }t          j        s|j        |usJ dS |j        |u sJ dS )z2Selecting a subset of columns preserves the index.r   r\   N)r`   r    compatPANDAS_GE_30)r#   rF   subset1subset2s       r(   &test_rebuild_on_multiple_col_selectionz6TestFrameSindex.test_rebuild_on_multiple_col_selection   s     '63-(" 	4>77777>^3333'3-(" 	4>777777>^333333r*   c                     | j                                         }|j        }|                    ddd           |j        rJ |j        }||usJ |j                                        g dk    sJ d S )Nr\   FT)	ascendingro   )rf   r>   rg   r   r   )r`   copyr    sort_valuesr   indextolistr#   gdf
old_sindex
new_sindexs       r(   test_rebuild_on_update_inplacez.TestFrameSindex.test_rebuild_on_update_inplace   s    gllnnZ
ud;;;>!!!Z
++++ y!!___444444r*   c                     | j                                         }|j        }|                    ddid           |j        sJ |j        }||u sJ d S )Nr\   AAT)columnsro   )r`   r   r    renamer   r   s       r(   test_update_inplace_no_rebuildz.TestFrameSindex.test_update_inplace_no_rebuild   s^    gllnnZ


C;
555~Z
Z''''''r*   N)rK   rL   rM   rc   ri   rB   rq   rs   rv   r|   r   r   rN   r*   r(   rP   rP   l   s        6 6 6  ; ; ;
4 4 43 3 35 5 54 4 4"5 5 5( ( ( ( (r*   rP   _setup_class_nybb_filenamec                       e Zd Zd Zd ZdS )TestJoinSindexc                 8    t          | j                  | _        d S )N)r   nybb_filenameborosrk   s    r(   rc   zTestJoinSindex.setup_method   s    t122


r*   c                      j         j        }|                    d          } fd|D             }|ddgk    sJ  j          j         d         dk              j        }|                    d          }fd|D             }|dgk    sJ  j          j         d         dk             j        }|                    d          }fd|D             f}|dgk    sJ                     d	
          t	                    dk    sJ j        j        dk    sJ j        }|                    d          }fd|D             }|ddgk    sJ d S )N)g.AgHzbAc                 @    g | ]}j         j        |         d          S BoroName)r   rE   )rW   hitr#   s     r(   rZ   z1TestJoinSindex.test_merge_geo.<locals>.<listcomp>   s'    @@@Ctzs#J/@@@r*   BronxQueensBoroCoder>   c                 6    g | ]}j         |         d          S r   rE   )rW   r   firsts     r(   rZ   z1TestJoinSindex.test_merge_geo.<locals>.<listcomp>   s$    ;;;suz#z*;;;r*   c                 6    g | ]}j         |         d          S r   r   )rW   r   seconds     r(   rZ   z1TestJoinSindex.test_merge_geo.<locals>.<listcomp>   s%    ===C ,===r*   outer)howrR   c                 6    g | ]}j         |         d          S r   r   )rW   r   mergeds     r(   rZ   z1TestJoinSindex.test_merge_geo.<locals>.<listcomp>   s%    <<<v{3
+<<<r*   )r   r    r7   merger/   r6   )r#   treer9   resr   r   r   s   `   @@@r(   test_merge_geozTestJoinSindex.test_merge_geo   s   z   !899@@@@4@@@w))))) 
4:j1A56|  !899;;;;d;;;wi DJz2a78}  !899=======?xj     V116{{a}!Q&&&&}  !899<<<<t<<<w)))))))r*   N)rK   rL   rM   rc   r   rN   r*   r(   r   r      s2        3 3 3* * * * *r*   r   c            '       d   e Zd Zd Zej                            ddg fddgfdddgfddgff          d	             Zej                            d
ddd edd          f          d             Z	ej                            dd ej
        de          df          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,                         Zd- Zej                            ej         d./          ej                            d0d ed1d1d2d2          g fd ed1d1d2d2          d!gfd edd          g f ed          d3z    edd          ddgf ed%          d3z
   eg d4           eg d5          gg dg d6gf ed%          d3z    eg d4           eg d5          gg d7g d8gfd%dg edd           edd          gg d9g d:gff          d;                         Zej                            ej         d./          d<             Zej                            d=g d>          d?             Zej                            ej        d@/          dA             Zej                            dBdg f e            g f e            g f e            g f e            g fg          dC             ZdD Zej                            dEdFg dGg dHgfdIg dGg dHgff          dJ             ZdK Zej                            dd ej
        de          df          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dLdgg dMg dNgfddOgg g gfddPgg g gfddQgdgd!ggfd"dgg g gfd"dRgdgdggfd"dSgdgdggfd"dTgdgdggfd"dUgddgddggfd"dVgdgd!ggfd&dWgdgdggfd&dXgg g gfd(dYgddgddggfd(dZgg g gfd(dgddgddggfd+dgg g gfd+dRgdgdggfd+dSgdgdggfd+dTgdgdggfd+dUgddgddggfd+dVgg g gff          d[                         Zej                            d\ e            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          d]             Z d^ Z!d_ Z"d` Z#ej                            dddg g gfddg g gfd"dLdgdggff          da             Z$ej                            dEdFg dGg dHgfdIg dGg dHgff          db             Z%ej                            dcdFdIg          ej                            ddddgdgdggfddgdgdggfg          de                         Z&ej                            dcdFdIg          ej                            dddfdgddgddggfdfdggddgddggfg          dh                         Z'ej                            dcdFdIg          ej                            dddg g gfdgg g gfg          di                         Z(ej                            djdFdIg          ej                            dkdFdg dMg dlg ed           ed           edm          gffdIdddgdd!gg ed           edm          gffdFdddgddgg ed           ed          gffdIddgdgg ed          gffg          dn                         Z)ej                            djdFdIg          ej                            dodIddIg dpg dpgd!dgz  ffdIddFg dpg dqgd! ed%          gz  ffdFddIg dpg dpgd!dgz  ffdFddFg drg dsgdt ed%          gz  ffdIdudFg dvg dwgdxdgz  ffdFdudFg dyg dzgd{dgz  ffg          d|                         Z*d} Z+d~ Z,d Z-d Z.ej                            dg d          d             Z/dS )TestShapelyInterfacec                     dd t          t          d          t          d                    D             t          dddd          gz   i}t          |d          | _        t          |d                   | _        d S )Nr   c                 4    g | ]\  }}t          ||          S rN   rU   rV   s      r(   rZ   z5TestShapelyInterface.setup_method.<locals>.<listcomp>   r[   r*   rR   rn      r   )r_   r^   r	   r
   r`   r/   expected_sizera   s     r(   rc   z!TestShapelyInterface.setup_method   s|    EESq588-D-DEEE2r2r""#$
 tf555 f..r*   ztest_geom, expectedr4   r4         r   )r   r         ?r   r   )r   r   r   r   r   r   c                 ~    t          | j        j                            |                    }t	          ||           dS )z2Tests the `intersection` method with valid inputs.N)r8   r`   r    r7   r   )r#   	test_geomexpectedr   s       r(   test_intersection_bounds_tuplez3TestShapelyInterface.test_intersection_bounds_tuple   s9     47>..y99::3)))))r*   r   )r4   r4   r   r   Nc                     t          j        t                    5  | j        j                            |           ddd           dS # 1 swxY w Y   dS )z4Tests the `intersection` method with invalid inputs.N)pytestraises	TypeErrorr`   r    r7   r#   r   s     r(   &test_intersection_invalid_bounds_tuplez;TestShapelyInterface.test_intersection_invalid_bounds_tuple  s     ]9%% 	3 	3GN''	222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3    AAAoutput_formatindicessparse)marksdensezpredicate, test_geom, expectedr4   r   r   r   
intersectswithin      ?Q?      ?rn         rR   containsjt?      ?rg   touchesr   coversMbP?Gz?contains_properlyc                 t   | j         j                            ||          }t          ||           |dk    rt	          j        t          | j                   t                    }d||<   | j         j                            |||          }|dk    r|                                }t          ||           dS dS )z@Tests the `query` method with valid inputs and valid predicates.	predicater   r,   Tr   r   r   N	r`   r    queryr   npzerosr/   booltodense)r#   r   r   r   r   r   r   s          r(   
test_queryzTestShapelyInterface.test_query  s    N gn""9	"BB3)))I%%HS\\666E"E(O'.&&Ym '  C ((kkmmsE***** &%r*   c                     t          j        t                    5  | j        j                            d           ddd           dS # 1 swxY w Y   dS )z/Tests the `query` method with invalid geometry.notavalidgeomNr   r   r   r`   r    r   rk   s    r(   test_query_invalid_geometryz0TestShapelyInterface.test_query_invalid_geometry  s    ]9%% 	2 	2GN  111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2r   zRequires GEOS 3.10r   zdistance, test_geom, expectedg      "@g#@g&.>r   )r   )rg   r   )rg   rg   )r   r   r   rg   )r   r   r   r   r   r   r   )r   r   rg   r   r   rg   r>   )r   r   r   r   r   r   r   )r   r   r   r   rg   r>   rf   c                 j    | j         j                            |d|          }t          ||           dS )zHTests the `query` method with predicates that require keyword arguments.dwithinr   distanceNr`   r    r   r   )r#   r   r   r   r   s        r(   test_query_dwithinz'TestShapelyInterface.test_query_dwithin  s9    p gn""9	H"UU3)))))r*   c                     t          j        t          d          5  | j        j                            t          dd          d           ddd           dS # 1 swxY w Y   dS )`Tests the `query` method with keyword arguments that are
        invalid for certain predicates.z8'distance' parameter is required for 'dwithin' predicatematchr   r   r   Nr   r   
ValueErrorr`   r    r   r   rk   s    r(   test_dwithin_no_distancez-TestShapelyInterface.test_dwithin_no_distance  s     ]X
 
 
 	C 	C GN  q!	 BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   0AA Ar   )
Nr   r   
covered_byr   crossesr   overlapsr   r   c                     d}t          j        t          |          5  | j        j                            t          dd          |d           ddd           dS # 1 swxY w Y   dS )r   zD'distance' parameter is only supported in combination with 'dwithin'r   r   r   Nr   )r#   r   msgs      r(   test_query_distance_invalidz0TestShapelyInterface.test_query_distance_invalid  s    $ U]:S111 	O 	OGN  q!	A NNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os   1AA #A z0Test for 'dwithin'-incompatible versions of GEOSc                     t          j        t          d          5  | j        j                            t          dd          dd           ddd           dS # 1 swxY w Y   dS )zTests whether a ValueError is raised when trying to use dwithin with
        incompatible versions of shapely or pyGEOS
        z-predicate = 'dwithin' requires GEOS >= 3.10.0r   r   r   r   Nr   rk   s    r(   test_dwithin_requirementsz.TestShapelyInterface.test_dwithin_requirements  s     ]M
 
 
 	O 	O GN  q!	A NNN	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	O 	Os   1AA!Aztest_geom, expected_valuec                 d    | j         j                            |          }t          ||           dS )z-Tests the `query` method with empty geometry.Nr   )r#   r   expected_valuer   s       r(   test_query_empty_geometryz.TestShapelyInterface.test_query_empty_geometry  s1     gn""9--3/////r*   c                     t          dddd          }t          j        t                    5  | j        j                            |d           ddd           dS # 1 swxY w Y   dS )1Tests the `query` method with invalid predicates.r4   r   testr   N)r	   r   r   r   r`   r    r   r   s     r(   test_query_invalid_predicatez1TestShapelyInterface.test_query_invalid_predicate  s    Bd++	]:&& 	> 	>GN  f ===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>s   "AA"Azsort, expectedT)r   r   r   r   r   rg   Fc                    t          t          g d          g          }t          t          g d          t          g d          t          g d          g          }g d}|j        d         }|j                            ||          }t          |          t          |          k    sJ 	 t          ||           dS # t          $ r8}|du r-t          j	        d| d	|
                                 d
           |d}~ww xY w)zYCheck that results from `query` don't depend on the
        order of geometries.
        r   )r>   r   r>   r>   r   r>   )r4   r   r   r   )r4   r>   r   )rR   r>   )rR   rR   )r>   rR   r   r   sortFkrtree results are known to be unordered, see https://github.com/geopandas/geopandas/issues/1337
Expected:
 
Got:
 
N)r   r   r!   r    r   sortedr   AssertionErrorr   xfailr   )r#   r  r   
test_polys
tree_polystest_geor   es           r(   test_query_sortingz'TestShapelyInterface.test_query_sorting  sM    (H(H(H I IJKK
88899:::;;88899
 

 99$Q'%%hT%:: c{{fX......
	sH----- 	 	 	u}}/#+/ / "jjll/ / /   G	s   /C 
D3C>>Dc                     t          j        t          d          5  t          dddd          }| j        j                            |d           d d d            d S # 1 swxY w Y   d S )Nz#Invalid output_format: 'dataarray'.r   r4   r   	dataarray)r   )r   r   r   r	   r`   r    r   r   s     r(   test_unsupported_outputz,TestShapelyInterface.test_unsupported_output0  s    ]:-RSSS 	G 	GBD$//IGN  + FFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   4AA!$A!r3   )r   r   r   )r   r   r   )r   r   r   r   )r   r   rn   rn   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r4   r4   rg   rg   )rn   rn   r   r   )r4   r4   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                    d |D             }| j         j                            ||          }t          ||           |dk    rt	          j        t          | j                   t          |          ft                    }|ddd         \  }}	d|||	f<   | j         j                            |||          }|d	k    r|                                }t          ||           dS dS )
zQTests the `query` method with valid
        inputs and valid predicates.
        c                      g | ]}t          | S rN   )r	   )rW   r   s     r(   rZ   z8TestShapelyInterface.test_query_bulk.<locals>.<listcomp>  s    777Tc4j777r*   r   r   r,   Nr4   Tr   r   r   )
r#   r   r   r   r   
test_geomsr   r   r   others
             r(   test_query_bulkz$TestShapelyInterface.test_query_bulk6  s    T 87Y777
gn"":"CC3)))I%%Hc$'llC
OO<DIIIE"44R4.KD%!%E$+'.&&i} '  C ((kkmmsE***** &%r*   ztest_geoms, expected_valuec                 d    | j         j                            |          }t          ||           dS )z2Tests the `query` method with an empty geometries.Nr   )r#   r  r   r   s       r(   test_query_bulk_empty_geometryz3TestShapelyInterface.test_query_bulk_empty_geometry  s1     gn"":..3/////r*   c                     t          j        g t                    }g g g}| j        j                            |          }t          ||           dS )z3Tests the `query` method with an empty input array.r,   N)r   arrayr.   r`   r    r   r   )r#   
test_arrayr   r   s       r(   !test_query_bulk_empty_input_arrayz6TestShapelyInterface.test_query_bulk_empty_input_array  sL    Xb///
bgn"":..3/////r*   c                     d}t          j        t                    5  | j        j                            |           ddd           dS # 1 swxY w Y   dS )z[
        Tests the `query` method with invalid input for the `geometry` parameter.
        
notanarrayNr   )r#   r  s     r(   &test_query_bulk_invalid_input_geometryz;TestShapelyInterface.test_query_bulk_invalid_input_geometry  s     "
]9%% 	- 	-GN  ,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s    A		AAc                     d}d}t          j        t                    5  | j        j                            t          | g|           ddd           dS # 1 swxY w Y   dS )r   r   r   r   N)r   r   r   r`   r    r   r	   )r#   test_geom_boundstest_predicates      r(   !test_query_bulk_invalid_predicatez6TestShapelyInterface.test_query_bulk_invalid_predicate  s    /]:&& 	U 	UGN  #'7"8!9^ TTT	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	U 	Us   *AAAc                    t          j        t          | gdg          }| j        j                            ||          }t          ||           | j        j                            |j        |          }t          ||           | j        j                            |j        j        |          }t          ||           | j        j                            |j        j        	                                |          }t          ||           | j        j                            |j        j        	                                |          }t          ||           dS )zWTests that query can accept a GeoSeries, GeometryArray or
        numpy array.
        0)r   r   N)
	geopandasr   r	   r`   r    r   r   r   r!   to_numpy)r#   r   r   r   r   s        r(   test_query_bulk_input_typez/TestShapelyInterface.test_query_bulk_input_type  sI    'i(9#GGG	 gn""9	"BB3))) gn""9#5"KK3)))gn""9#5#<	"RR3))) gn""%..00I # 
 
 	3)))gn""%..00I # 
 
 	3)))))r*   c                 ^   t          t          g d          g          }t          t          g d          t          g d          t          g d          g          }|j                            ||          }t	          |d                   t	          |d                   k    sJ t	          |d                   t	          |d                   k    sJ 	 t          ||           dS # t          $ r8}|du r-t          j        d| d	|	                                 d
           |d}~ww xY w)zYCheck that results from `query` don't depend
        on the order of geometries.
        r   r   r  r  r   r   Fr  r  r  N)
r   r   r    r   r  r   r  r   r	  r   )r#   r  r   r
  r  r   r  s          r(   test_query_bulk_sortingz,TestShapelyInterface.test_query_bulk_sorting  sf    (H(H(H I IJKK
88899:::;;88899
 

 %%jt%<< c!f~~!4!44444c!f~~!4!44444
	sH----- 	 	 	u}}/#+/ / "jjll/ / /   G	s   C* *
D,43D''D,
return_allzgeometry,expectedc                    t          j        t          j        d          t          j        d                    }t	          j        d|i          }t          |          }|j                            ||          }t          ||           t          j        |          }|j                            ||          }t          ||           d S Nrn   r   r+  
shapelypointsr   aranger&  r
   r   r    nearestr   )r#   r   r   r+  geomsr`   pr   s           r(   test_nearest_singlez(TestShapelyInterface.test_nearest_single%  s     ry}}bimm<<#Z$788(OOij993)))N8$$ij993)))))r*   r   )r   r   c                    t          j        t          j        d          t          j        d                    }t	          j        d|i          }d |D             }|j                            ||          }t          ||           t          j        |          }|j                            ||          }t          ||           t	          j	        |          }|j                            ||          }t          ||           t          | \  }	}
t	          j        |	|
          }|j                            ||          }t          ||           d S )Nrn   r   c                 ,    g | ]}t          |          S rN   rU   )rW   r5  s     r(   rZ   z;TestShapelyInterface.test_nearest_multi.<locals>.<listcomp>E  s    )))1eAhh)))r*   r.  )r0  r1  r   r2  r&  r
   r    r3  r   r   r_   points_from_xy)r#   r   r   r+  r4  r`   psr   r'   rX   rY   gas               r(   test_nearest_multiz'TestShapelyInterface.test_nearest_multi9  s9    ry}}bimm<<#Z$788)))))iz::3)))^H%%iz::3)))##ij993)))H~1%a++iz::3)))))r*   c                     t          j        t          j        d          t          j        d                    }t	          j        d|i          }|j                            ||          }t          ||           d S r-  )	r0  r1  r   r2  r&  r
   r    r3  r   )r#   r   r   r+  r4  r`   r   s          r(   test_nearest_nonez&TestShapelyInterface.test_nearest_noneV  sj     ry}}bimm<<#Z$788iZ@@3)))))r*   return_distancez return_all,max_distance,expected)r   r   rR   2   c                    t          j        t          j        d          t          j        d                    }t	          j        d|i          }t          dd          t          dd          g}|j                            ||||          }|r:t          |d         |d                    t          |d         |d                    d S t          ||d                    d S )Nrn   r   r   r   )r+  max_distancer?  r   r/  )	r#   r   rB  r+  r?  r4  r`   r:  r   s	            r(   test_nearest_max_distancez.TestShapelyInterface.test_nearest_max_distancee  s     ry}}bimm<<#Z$788CoouQ||,i!%+	   
 
  	1s1vx{333s1vx{33333sHQK00000r*   z*return_all,max_distance,exclusive,expected)r   r   rg   r>   rf   )r   r   r   rg   r>   )r   r   r   rg   rg   r>   r>   rf   )r   r   rg   r   r>   rg   rf   r>      g?)r   rg   rR   )rR   rR   r   r>   )r   rg   rR   rR   )rR   rR   r   rg   rf   c                    t          j        t          j        d          t          j        d                    }|r$t          j        |t          dd          g          }t          j        d|i          }|}|j        	                    |||||          }	|r:t          |	d         |d                    t          |	d         |d                    d S t          |	|d                    d S )NrR   r   rg   r   )r+  rB  r?  	exclusiver   )r0  r1  r   r2  appendr   r&  r
   r    r3  r   )
r#   r   rB  r+  r?  rF  r4  r`   r:  r   s
             r(   test_nearest_exclusivez+TestShapelyInterface.test_nearest_exclusive  s    ( ry||RYq\\:: 	4IeeAqkk]33E#Z$788i!%+   
 
  	1s1vx{333s1vx{33333sHQK00000r*   c                    t          dd          dt                      t          dd          t                      g}t          j        |          }|j                            t          dd                    d         dk    sJ dS )z8Tests building sindex with interleaved empty geometries.r   Nr   r   r>   )r   r&  r
   r    r   )r#   r4  r`   s      r(   test_empty_tree_geometriesz/TestShapelyInterface.test_empty_tree_geometries  so    q!dEGGU1a[[%''B#U333yuQ{{++A.!333333r*   c                 >    | j         j        j        | j        k    sJ dS )zTests the `size` property.N)r`   r    r6   r   rk   s    r(   	test_sizezTestShapelyInterface.test_size  s#    w~"d&8888888r*   c                 N    t          | j        j                  | j        k    sJ dS )z.Tests the `__len__` method of spatial indexes.N)r/   r`   r    r   rk   s    r(   test_lenzTestShapelyInterface.test_len  s(    47>""d&8888888r*   c                 ^   t          j        g t                    }|j        j        sJ t          j        dg          }|j        j        sJ t          j        t                      g          }|j        j        sJ t          j        t          dd          g          }|j        j        rJ dS )zTests the `is_empty` property.r,   Nr   )r&  r   r.   r    is_emptyr   )r#   empty	non_emptys      r(   test_is_emptyz"TestShapelyInterface.test_is_empty  s     #Bf555|$$$$#TF++|$$$$#UWWI..|$$$$'q!66	#,,,,,,r*   zpredicate, expected_shape))N)rg   i  )r   rg      )r   rT  )r   rg   r   )r   rV  )r   rV  )r   rV  c                     t          |          }t          |          }|j                            |j        |          }|j        |k    sJ dS )z1Tests output sizes for the naturalearth datasets.N)r   r    r   r   shape)r#   r   expected_shapenaturalearth_lowresnaturalearth_citiesworldcapitalsr   s           r(   test_integration_natural_earthz3TestShapelyInterface.test_integration_natural_earth  sS      -..011l  !2I>>yN******r*   )0rK   rL   rM   rc   r   markparametrizer   r   r   param
SCIPY_MARKr	   r   r   r   skipifrx   GEOS_GE_310r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r#  r(  r*  r6  r<  r>  rC  rH  rJ  rL  rN  rS  r^  rN   r*   r(   r   r      s       / / / [!2&#aS)Aq6"aSM		
 * * *
 [[>4uuQPQ{{*STT3 3 UT3 [)\V\(*%M%M%MwW  [(33r2tT**B/33tT3,,qc233q!Q??QF+
FF+,,A
 33r2tT22B7D$S)) Aq!QA 
FF+,,
 ss4tT22B7ss1aR(("-ss2r2r**QC0zz66"233R8Q1a"-Q5%001#6S#sC001#6RQ**QF3
FF+,,
 BAq))A3/D$S)) BB## D$1%%A E5$-- Aq!QA $Aq!Q $Aq%'' $CeU++ $Cc3'' $BAq!!A $BB##s^	
a aD+ +Ea a J+ 2 2 2
 [F..7KLL[' Cc3'' Cc3'' c3 Z  4'c3A Q$G44455G44455 |||, Q$G44455G44455 '&&(=(=(=> BsC%%1++.&&&(=(=(=>Y1	
4 4j* *k4 4 MLl*
 [F..7KLLC C MLC [	
 	
 	
 O O O [#U   O O O [#2J!!2&UWWbM\^^R WYYO	
	 	0 0	 	0
> > > [IIIyyy)*YYY			*+	
 ! ! !FG G G [)\V\(*%M%M%MwW  [(()B84*+qcA3Z8L>QFQF#3401B8<23qcA3Z@L>QFQF+;<02HIQCRSQT:V !78III&
 01B8<'"b2()QC!:6R %&qc
 )*qc

 ./1#s< Q!Q  !"qc

 (A3*5'(R #$Q!Q  +,R Q!Q  $R $%&qc
 $)*qc
 $%&qc
 $ Q!Q  $!"Ru_	
b bF+ +Gb b L+( [$ ! ""#b"X.  ""D)B84Vb"XCCdC--t4sQCjA	

 
0 0
 
0
0 0 0- - -U U U [('"b2/"b:1#s4	
 * * *6 [IIIyyy)*YYY			*+	
      F [\D%=99[D\QC!:&D\QC!:&	
 
* 
*  :9
* [\D%=99[fAA/0i Aq6Aq6"23	
 * *  :9** [\D%=99[B8Vb"X	
 * *  :9* [.u>>[*4999iii04499dd3iib2RSTDQFQF+dd3iib-BCD1AA'$$s))TT#YY)?@AA!qc
TT#YYK01		
 1 1  ?>1& [.u>>[4D%???OOO"Da1#g!NOD$///???!CQ$$q''] ST4///???!CQ!W MN***,D,D,DEqDDQRGG9}U	 CIII 6QC@A3lll;Q!WEF	
  1 1!  ?>"144 4 49 9 99 9 9- - - [#	
 	
 	
 + + + + +r*   r   )"mathr   numpyr   r0  shapely.geometryr   r   r   r   r   r	   r&  r
   r   r   r   rx   r   numpy.testingr   scipy.sparser   	HAS_SCIPYImportErrorr_  rc  rb  r   rP   skipusefixturesr   r   rN   r*   r(   <module>rn     s)                                 8 8 8 8 8 8 8 8 8 8 ' ' ' ' ' '  , , , , , ,&&&&&&II   III[I6KLL
J3 J3 J3 J3 J3 J3 J3 J3Z[( [( [( [( [( [( [( [(~ 566 *  *  *  *  *  *  * 76  *Fl+ l+ l+ l+ l+ l+ l+ l+ l+ l+s   A AA