o
    e$,                     @   sr  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 ejejejejejejejejejejejejjejdk ddd	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j+d
dejjejdk ddd	ej,ej-fZ.e.dd Z/ej0ej&fej1ej#ffZ2ej3de
ej3de dd Z4ej3de dd Z5ej3de dd Z6ej3de
ej3de.dd Z7ej3de.dd Z8ej3de.dd Z9dd Z:ej3de
ej3d e2d!d" Z;ej3de
ej3d e2d#d$ Z<ej3dd%d& e2D d'd( Z=ej3d e2d)d* Z>ej3dd+d& e2D d,d- Z?ej3dd.d& e2D d/d0 Z@d1d2 ZAejjejdk ddd3d4 ZBej3d5ed6fed6fed7fed6fgd8d9 ZCd:d; ZDej3d<edfdefd=gd>d? ZEd@dA ZFdBdC ZGej3d<edfdefd=gdDdE ZHdFdG ZIej3dHg dIdJdK ZJdLdM ZKejjejdk ddej3dNeg dOd6feg dPd7feg dOd6feg dPd7feg dQd6feg dRd6fed6fed6fed6fdSg
dTdU ZLdVdW ZMej3de
ej3de/dXdY ZNej3de
ef dZd[ ZOej3de
edf d\d] ZPd^d_ ZQdS )`    )partialN)
LinearRing
LineStringPoint   )	all_typesemptygeometry_collectionignore_invalidline_stringlinear_ringpointpolygon)      r   z
GEOS < 3.7)reason)Zmarksg      ?Z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   MD:\Projects\ConvertPro\env\Lib\site-packages\shapely/tests/test_predicates.pytest_unary_arrayA   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_kwargsI   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_missingQ   s   r+   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 )Nr      r   r   )	r
   r(   is_emptygeos_versionr   r   r   r   r   )r,   r   r   r   r   r   test_binary_arrayY   s
   r1   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_kwargsd   s   r2   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_missingl   s   "r6   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
   r(   r0   intersectionr/   )r,   br   r   r   test_binary_empty_resultr   s
   "r<   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(   r/   r0   r   r   r   r   r   testingassert_allcloser,   r   func_binr   expectedr   r   r   test_xy_array{   s   rB   c                 C   s   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 s2w   Y  tj|| d S )Nr-   r   r   r   r   r   r   r   r   r   r   )r
   r(   r/   r0   r   r   r=   r>   r?   r   r   r   test_xy_array_broadcast   s
   $rE   c                 C      g | ]}|d  qS r   r   .0funcsr   r   r   
<listcomp>       rK   c                 C   sB   | t g dg d}| t ddgddgddgg}tj|| d S )NrC   rD   r   r   r   r   )r   r   r=   r>   )r   r   rA   r   r   r   test_xy_array_2D   s   rM   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   r=   r>   )r   r@   r   rA   r   r   r   test_xy_prepared   s   rO   c                 C   rF   rG   r   rH   r   r   r   rK      rL   c                 C   sD   t jdt jd}| ttjtj|d}||u sJ |jt jks J d S r!   )r   r   r$   r   xyr   r%   r   r   r   test_xy_with_kwargs   s   rR   c                 C   rF   rG   r   rH   r   r   r   rK      rL   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   r3   r   rP   nanrQ   r=   r>   r5   r   r   r   test_xy_missing   s   rT   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@皙?)Z	toleranceTFF皙?TTFTFFTF)
r(   pointsequals_exactr   r=   r>   r   r   itemrS   p1p2r   r   r   r   test_equals_exact_tolerance   s   rd   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 )NrU   rV   rW   rX   rY   r   rZ   r[   r\   r]   )
r(   r^   dwithinr   r=   Zassert_equalr   r   r>   rS   ra   r   r   r   test_dwithin   s   rf   zgeometry,expectedFTc                 C      t | |ks	J d S r'   )r(   	is_closed)r   rA   r   r   r   test_is_closed   s   
ri   c                  C   sB   t dd} t dd}t | |}t|tsJ |dksJ d S )Nr   r   Z	FF0FFF0F2)r(   r^   relate
isinstancestrra   r   r   r   test_relate   s
   rm   zg1, g2)NNc                 C   s   t | |d u s
J d S r'   )r(   rj   g1g2r   r   r   test_relate_none   s   rq   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)r7   )r   r   r   r   r   r   Z	11F00F212	*********z	F********)r(   Zlinestringsboxrj   relate_pattern)gr   r   r   r   test_relate_pattern   s   rw   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-   rs   T)r
   r(   r0   ru   r   r`   r   r   r   r   test_relate_pattern_empty   s   "rx   c                 C   s   t | |d du sJ d S )Nrs   F)r(   ru   r`   rn   r   r   r   test_relate_pattern_none  s   ry   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
**********)pytestraisesr(   ZGEOSExceptionru   r   r   r   r   r   r   $test_relate_pattern_incorrect_length  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 stringrz   )r|   r}   	TypeErrorr(   ru   r   r   )r   r   r   r   test_relate_pattern_non_string  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 scalarrz   r   rs   )r|   r}   
ValueErrorr(   ru   r   r   r   r   r   r   test_relate_pattern_non_scalar  s   "r   zgeom, expected)r7   r   r   rr   r7   )r7   rr   r   r7   )r7   rr   r   )r7   r   rr   )NFc                 C   rg   r'   )r(   is_ccw)ZgeomrA   r   r   r   test_is_ccw  s   r   c                 C   s   t | dd } t |  | S )z!Prepare without modifying inplacec                 S   s   | S r'   r   )rP   r   r   r   <lambda>/  s    z$_prepare_with_copy.<locals>.<lambda>)r(   Z	transformpreparer   r   r   r   rN   -  s   
rN   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 )Nr-   )r
   r(   r/   r0   r   rN   )r,   r   r   resultr   r   r   test_binary_prepared4  s
   
r   c                 C   s   t t| s	J d S r'   )r(   is_preparedrN   r   r   r   r   test_is_prepared_true?  s   r   c                 C   s   t | rJ d S r'   )r(   r   r   r   r   r   test_is_prepared_falseD  s   r   c                   C   s4   t tt du sJ t tt du sJ d S )NTF)r(   containsr   r`   contains_properlyr   r   r   r   test_contains_properlyI  s   r   )R	functoolsr   numpyr   r|   r(   r   r   r   commonr   r   r	   r
   r   r   r   r   r/   Z	is_simpleZis_ringrh   Zis_validr*   Zis_geometryr)   r   paramr   markZskipifr0   ZUNARY_PREDICATESZdisjointZtouchesZ
intersectsZcrossesZwithinr   r   overlapsZcoversZ
covered_byre   equalsr_   ZBINARY_PREDICATESZBINARY_PREPARED_PREDICATESZcontains_xyZintersects_xyZXY_PREDICATESZparametrizer    r&   r+   r1   r2   r6   r<   rB   rE   rM   rO   rR   rT   rd   rf   ri   rm   rq   rw   rx   ry   r~   r   r   r   rN   r   r   r   r   r   r   r   r   <module>   s    (




	

		



	

	
	

	

