o
    h5                     @   s  d dl mZ d dlZd dlZd dlZd dlmZ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 ejejejejjejdk dddejejejejejej ej!ej"ej#ej$fZ%ej&ej'ej(ej)ej*ej+ej,ej-ej.ej/ejeej0d	d
ejjejdk dddej1ej2ej3fZ4e4dd Z5ej6ej+fej7ej(ffZ8ej9de
e ej9de%dd Z:ej9de%dd Z;ej9de%dd Z<ej9de
ej9de4dd Z=ej9de4dd Z>ej9de4dd Z?dd Z@ej9de
ej9de8d d! ZAej9de
ej9de8d"d# ZBej9dd$d% e8D d&d' ZCej9de8d(d) ZDej9dd*d% e8D d+d, ZEej9dd-d% e8D d.d/ ZFd0d1 ZGd2d3 ZHd4d5 ZIejjejdk ddd6d7 ZJej9de
d8d9 ZKej9ded:d; ZLejjejdk d<dej9ded=d> ZMejjejdk d<dej9ded?d@ ZNej9dAedBfedBfedCfedBfgdDdE ZOdFdG ZPej9dHedfdefdIgdJdK ZQdLdM ZRdNdO ZSej9dHedfdefdIgdPdQ ZTdRdS ZUej9dTg dUdVdW ZVdXdY ZWej9dZeg d[dBfeg d\dCfeg d[dBfeg d\dCfeg d]dBfeg d^dBfedBfedBfedBfd_g
d`da ZXdbdc ZYej9de
ej9de5ddde ZZej9de
dfdg Z[ej9de
dh didj Z\dkdl Z]dS )m    )partialN)
LinearRing
LineStringPoint)	all_typesall_types_mall_types_zall_types_zmemptygeometry_collectionignore_invalidline_stringlinear_ringpointpolygon      r   zGEOS < 3.12)reason)marksg      ?distance)r   
   r   zGEOS < 3.10geometryfuncc                 C   s.   || | g}|j dksJ |jtjksJ d S )N   )shapedtypenpbool_)r   r   actual r#   X/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/tests/test_predicates.pytest_unary_arrayH   s   r%   c                 C   s<   t jdt jd}| t|d}||u sJ |jt jksJ d S Nr#   r   outr    r
   uint8r   r   r   r)   r"   r#   r#   r$   test_unary_with_kwargsP   s   r-   c                 C   s0   | t jt jfv r| d sJ d S | d rJ d S N)shapelyis_valid_input
is_missing)r   r#   r#   r$   test_unary_missingX   s   r2   ac                 C   sh   t t| o
tjdk  || | gt}W d    n1 sw   Y  |jdks*J |jtjks2J d S )Nr   r   )	r   r/   is_emptygeos_versionr   r   r   r    r!   )r3   r   r"   r#   r#   r$   test_binary_array`   s
   r6   c                 C   s>   t jdt jd}| tt|d}||u sJ |jt jksJ d S r&   r*   r,   r#   r#   r$   test_binary_with_kwargsk   s   r7   c                 C   s4   | t td d gt d td g}|  sJ d S r.   )r    arrayr   allr   r"   r#   r#   r$   test_binary_missings   s   "r;   c                  C   s^   t g d} t ddg}ttjdk  t| |jsJ W d    d S 1 s(w   Y  d S )N)r   r   )r   r   )r   r   )r   r   )      )   r>   r   )r   r   r/   r5   intersectionr4   )r3   br#   r#   r$   test_binary_empty_resulty   s
   "rB   zfunc, func_binc                 C   s   t t| o
tjdk  || | gdd}|| | gtdd}W d    n1 s)w   Y  |jdks5J |jtjks=J tj	
|| d S )Nr   r   r   r   )r   r/   r4   r5   r   r   r   r    r!   testingassert_allclose)r3   r   func_binr"   expectedr#   r#   r$   test_xy_array   s   rG   c                 C   s   t | dd }tt | ot jdk # ||g dg d}|| tddtddtdd	g}W d    n1 s:w   Y  tj|| d S )
Nc                 S      | S r.   r#   xr#   r#   r$   <lambda>       z)test_xy_array_broadcast.<locals>.<lambda>r   r   r>   r   r>   r   r   r   r>   r   r   )	r/   	transformr   r4   r5   r   r    rC   rD   )r3   r   rE   a2r"   rF   r#   r#   r$   test_xy_array_broadcast   s   $rQ   c                 C      g | ]}|d  qS r   r#   .0funcsr#   r#   r$   
<listcomp>       rW   c                 C   sR   t tdd }| |g dg d}| |ddgddgddgg}tj|| d S )	Nc                 S   rH   r.   r#   rI   r#   r#   r$   rK      rL   z"test_xy_array_2D.<locals>.<lambda>rM   rN   r   r>   r   r   )r/   rO   r   r    rC   rD   )r   polygon2r"   rF   r#   r#   r$   test_xy_array_2D   s   rZ   c                 C   s:   | t ttgdd}|ttgtdd}tj|| d S )Nr   r   )_prepare_with_copyr   r   r   r    rC   rD   )r   rE   r"   rF   r#   r#   r$   test_xy_prepared   s   r\   c                 C   rR   rS   r#   rT   r#   r#   r$   rW      rX   c                 C   sT   t jdt jd}ttdd }| ||j|j|d}||u s J |jt jks(J d S )Nr#   r'   c                 S   rH   r.   r#   rI   r#   r#   r$   rK      rL   z%test_xy_with_kwargs.<locals>.<lambda>r(   )	r    r
   r+   r/   rO   r   rJ   yr   )r   r)   point2r"   r#   r#   r$   test_xy_with_kwargs   s
   r_   c                 C   rR   rS   r#   rT   r#   r#   r$   rW      rX   c              	   C   s\   | t tttd gt tjt jtjtjgt tjtjt jtjg}t j|g d d S )N)TFFF)r    r8   r   rJ   nanr]   rC   rD   r:   r#   r#   r$   test_xy_missing   s   ra   c                  C   s   t dd} t dd}t j| |d g| dd}tj|g d |jtjks(J t j| |d g| dd}tj|g d	 |jtjksDJ t | |  d
u sPJ t | | du s\J t j| |ddtj	gd}tj|g d d S )N2      I@ffffff@皙?)	toleranceTFF皙?TTFTFFTF)
r/   pointsequals_exactr    rC   rD   r   r!   itemr`   p1p2r"   r#   r#   r$   test_equals_exact_tolerance   s   rr   c                  C   s@   t ddg} t ddg}t| |rJ tj| |ddsJ d S )Nr<   r>   r>   T)	normalize)r   r/   rm   l1l2r#   r#   r$   test_equals_exact_normalize   s   rx   c                  C   s   t ddg} t ddg}t| |rJ t ddg} t ddg}t| |r(J t| |s0J t  t dtjfdg} t dtjfdg}W d    n1 sPw   Y  t| |s]J t| |reJ d S )Nr<   rs   )r   r   r   )r>   r>   r   )r   r   r>   )r>   r>   r>   r   )r   r/   equals_identicalrm   r   r    r`   ru   r#   r#   r$   test_equals_identical   s   rz   c                  C   s   t dd} t dd}t j| |d g| dd}tj|g d |jtjks(J t j| |d g| dd}tj|g d	 |jtjksDJ t j| |ddtj	gd}tj|g d
 d S )Nrb   rc   rd   re   rf   r   rh   ri   rj   rk   )
r/   rl   dwithinr    rC   assert_equalr   r!   rD   r`   ro   r#   r#   r$   test_dwithin   s   r}   c                 C   s.   t | rJ t jdkrt | rJ d S d S Nr   )r/   has_zr5   has_mr   r#   r#   r$   test_has_z_has_m_all_types   s
   
r   c                 C   sB   t | r
td t | sJ t jdkrt | rJ d S d S )N.GEOSHasZ with EMPTY geometries is inconsistentr   )r/   r4   pytestskipr   r5   r   r   r#   r#   r$   test_has_z_has_m_all_types_z	  s   


r   z,M coordinates not supported with GEOS < 3.12c                 C   s4   t | r
td t | rJ t | sJ d S )Nz.GEOSHasM with EMPTY geometries is inconsistentr/   r4   r   r   r   r   r   r#   r#   r$   test_has_m_all_types_m     

r   c                 C   s4   t | r
td t | sJ t | sJ d S )Nr   r   r   r#   r#   r$   test_has_z_has_m_all_types_zm  r   r   zgeometry,expectedFTc                 C      t | |ks	J d S r.   )r/   	is_closed)r   rF   r#   r#   r$   test_is_closed*  s   
r   c                  C   sB   t dd} t dd}t | |}t|tsJ |dksJ d S )Nr   r>   	FF0FFF0F2)r/   rl   relate
isinstancestrro   r#   r#   r$   test_relate7  s
   r   zg1, g2)NNc                 C   s   t | |d u s
J d S r.   )r/   r   g1g2r#   r#   r$   test_relate_none?  s   r   c                  C   sl   t g d} t dddd}t | |dksJ t | |ds"J t | |ds+J t | |dr4J d S )N)r<   )r>   r   rs   r   r   	11F00F212	*********z	F********)r/   linestringsboxr   relate_pattern)gr   r#   r#   r$   test_relate_patternD  s   r   c                   C   sN   t tjdk  tttd du sJ W d    d S 1 s w   Y  d S )Nr   r   T)r   r/   r5   r   r
   rn   r#   r#   r#   r$   test_relate_pattern_emptyM  s   "r   c                 C   s   t | |d du sJ d S )Nr   F)r/   r   rn   r   r#   r#   r$   test_relate_pattern_noneT  s   r   c                   C   s   t jtjdd tttd W d    n1 sw   Y  t jtjdd tttd W d    d S 1 s:w   Y  d S )NzShould be length 9matchz**z
**********)r   raisesr/   GEOSExceptionr   r   r   r#   r#   r#   r$   $test_relate_pattern_incorrect_lengthY  s   "r   pattern)s	   *********r   Nc                 C   sB   t jtdd ttt|  W d    d S 1 sw   Y  d S )Nzexpected stringr   )r   r   	TypeErrorr/   r   r   r   )r   r#   r#   r$   test_relate_pattern_non_stringa  s   "r   c                   C   sN   t jtdd ttgd tdgd  W d    d S 1 s w   Y  d S )Nzonly supports scalarr   r   r   )r   r   
ValueErrorr/   r   r   r   r#   r#   r#   r$   test_relate_pattern_non_scalarg  s   "r   zgeom, expected)r<   r   r>   rs   r<   )r<   rs   r   r<   )r<   rs   r   )r<   r   rs   )NFc                 C   r   r.   )r/   is_ccw)geomrF   r#   r#   r$   test_is_ccwl  s   r   c                 C   s   t | dd } t |  | S )z"Prepare without modifying in-placec                 S   rH   r.   r#   rI   r#   r#   r$   rK     rL   z$_prepare_with_copy.<locals>.<lambda>)r/   rO   preparer   r#   r#   r$   r[     s   
r[   c                 C   s`   t t| o
tjdk  || t}|t| t}W d    n1 s#w   Y  ||ks.J d S r~   )r   r/   r4   r5   r   r[   )r3   r   r"   resultr#   r#   r$   test_binary_prepared  s
   
r   c                 C   s   t t| s	J d S r.   )r/   is_preparedr[   r   r#   r#   r$   test_is_prepared_true  s   r   r.   c                 C   s   t | rJ d S r.   )r/   r   r   r#   r#   r$   test_is_prepared_false  s   r   c                   C   s4   t tt du sJ t tt du sJ d S )NTF)r/   containsr   rn   contains_properlyr#   r#   r#   r$   test_contains_properly  s   r   )^	functoolsr   numpyr    r   r/   r   r   r   shapely.tests.commonr   r   r   r	   r
   r   r   r   r   r   r   r   paramr   markskipifr5   r4   	is_simpleis_ringr   is_validr1   is_geometryr0   r   r   UNARY_PREDICATESdisjointtouches
intersectscrosseswithinr   r   overlapscovers
covered_byr{   equalsrm   ry   BINARY_PREDICATESBINARY_PREPARED_PREDICATEScontains_xyintersects_xyXY_PREDICATESparametrizer%   r-   r2   r6   r7   r;   rB   rG   rQ   rZ   r\   r_   ra   rr   rx   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   r   r   r   r   r#   r#   r#   r$   <module>   s   4





	

	




	




	
	


	

