o
    JfE                     @   s  d dl Zd dlZd dlZd dl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mZmZmZmZmZmZmZmZ dd Zdd Zd	d
 Zdd Zdd Zejjejdd dvdddd Z ejjejdd dvdddd Z!ejjejdd dkdddd Z"ejjejdk ddej#dej$ej%ej%gd ejjejd!k d"dd#ej$ej%ej%ej%gd$ejjejd!k d"dd#d%ej%gd&fej%d%gd'fej%d%ej%gd(fej%ej%d%gd)fgd*d+ Z&d,d- Z'd.d/ Z(d0d1 Z)d2d3 Z*ej#d4dd5gd6d7 Z+d8d9 Z,ej#d:g d;d<d= Z-d>d? Z.d@dA Z/dBdC Z0dDdE Z1dFdG Z2dHdI Z3ej#d:g dJdKdL Z4dMdN Z5dOdP Z6ej#d4dd5gej#dQdRdSgdTdU Z7dVdW Z8dXdY Z9dZd[ Z:d\d] Z;d^d_ Z<d`da Z=dbdc Z>ddde Z?dfdg Z@dhdi ZAdjdk ZBdldm ZCdndo ZDdpdq ZEej#d:g dJdrds ZFdtdu ZGej#d:g dJdvdw ZHej#dxejIe	 fejJe fejKe
 fejLe fgdydz ZMej#d{ejIefejJefejJefejKefejLefejLefejLefejLefejLefejLefejLefejLefgd|d} ZNej#d{ejIefejJefejKefejLefgd~d ZOej#d{ejIefejIefejIefejJefejJefejJefejKefejKefejKefg	dd ZPej#dddeg dfddeg dfgdd ZQej#dd d d%dgd%dgfdeg deg dgfd d d%dgd%dgfddgeg deg dgfgdd ZRej#dej%ej%ej%ej%gej%d d%d%gd ej%d%d%gd d ej%d%gd d d%ej%ggdd ZSdd ZTdd ZUej#ddejVdgdd ZWej#deXddd ZYdS )    N)GeometryCollectionGeometryType
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPolygon)assert_geometries_equal)	empty_polygongeometry_collectionline_stringlinear_ringmulti_line_stringmulti_pointmulti_polygonpointpolygonc                 C   s"   ||f||f| |f| |f||ffS N )x1y1x2y2r   r   g/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/shapely/tests/test_creation.pybox_tpl   s   "r   c                  C   s8   t ddgddgg} t| t ddt ddg d S )Nr      shapelypointsr
   Pointactualr   r   r   test_points_from_coords#   s   "r#   c                  C   s2   t dddg} t| t ddt ddg d S )Nr   r      r   r!   r   r   r   test_points_from_xy(   s   "r%   c                  C   s8   t ddddg} t| t dddt dddg d S )Nr$   r   r   r!   r   r   r   test_points_from_xyz-   s   &r&   c                   C   s|   t jtdd tg d W d    n1 sw   Y  t jtdd tdg W d    d S 1 s7w   Y  d S )Nz!dimension should be 2 or 3, got 4match)r   r$   r      z!dimension should be 2 or 3, got 1r   )pytestraises
ValueErrorr   r   r   r   r   r   test_points_invalid_ndim2   s   "r-   r   )r)   
   r)      r)      zGEOS not in 3.10, 3.11, 3.12)reasonc                  C   s"   t tjtj} | jdksJ d S NzPOINT EMPTYr   r   npnanwktr!   r   r   r   %test_points_nan_all_nan_becomes_empty:   s   r:   )r.   r0   zGEOS not in 3.10, 3.11c                  C   &   t tjtjtj} | jdksJ d S r5   r6   r!   r   r   r   +test_points_nan_3D_all_nan_becomes_empty_2DC   s   r<   r2   zGEOS != 3.12c                  C   r;   )NzPOINT Z EMPTYr6   r!   r   r   r   (test_points_nan_3D_all_nan_becomes_emptyL   s   r=   )r)   r3   r   zGEOS < 3.12zcoords,expected_wktzPOINT (NaN NaN))r)      r   zGEOS < 3.13)markszPOINT Z (NaN NaN NaN)r$   zPOINT (1 NaN)zPOINT (NaN 1)zPOINT Z (NaN 1 NaN)zPOINT Z (NaN NaN 1)c                 C   s   t | }|j|ksJ d S r   )r   r   r9   )coordsexpected_wktr"   r   r   r   test_points_handle_nan_allowR   s   
rB   c                  C   sH   t ddgddggddgddggg} t| tddgtddgg d S )Nr   r$   r   r   r   r$   r$   r   r   r   linestringsr
   r   r!   r   r   r   test_linestrings_from_coordso   s   &

rH   c                  C   s*   t ddgddg} t| tddg d S )Nr   r$   r   r)   r   r   r$   r)   rF   r!   r   r   r   test_linestrings_from_xyz      rK   c                  C   sF   ddg} ddgddgf}t | |}t|tddgtd	d
gg d S )Nr   r$   r   r)         rI   rJ   )r   rM   )r$   rN   rF   )xyr"   r   r   r   "test_linestrings_from_xy_broadcast   s   

rQ   c                  C   s,   t ddgddgd} t| tddg d S )Nr   r$   r   r)   )r   r   r   )r$   r)   r   rF   r!   r   r   r   test_linestrings_from_xyz   s   rR   dimr)   c                 C   s   t jdd| }t j|dd}t|}t j|dd}t|}t|| t jt t |dddddd}t t |dddd}t|}t|| d S )	Nr/   r)   CorderFr   r   r$   )r7   randomrandnasarrayr   rG   r
   swapaxes)rS   r@   coords1result1coords2result2coords3result3r   r   r   test_linestrings_buffer   s   


"
rb   c                   C   :   t t td W d    d S 1 sw   Y  d S NrD   )r*   r+   r,   r   rG   r   r   r   r   %test_linestrings_invalid_shape_scalar      "re   shape)r   r$   r   r$   r$   r   r$   r   c                 C   sB   t tj tt|  W d    d S 1 sw   Y  d S r   )r*   r+   r   GEOSExceptionrG   r7   ones)rg   r   r   r   test_linestrings_invalid_shape   s   	"rm   c                  C   sh  d} t jddd}tjt| dd t| W d    n1 s#w   Y  t jddd}tjt| dd t| W d    n1 sIw   Y  t t t ddd	d
d}t t t j	|dddd	d
d	}tjt| dd t| W d    n1 sw   Y  t d}tjt| d
d t| W d    d S 1 sw   Y  d S )N8The ordinate \(last\) dimension should be 2 or 3, got {})r/   r   rM   rT   rU   rM   r'   rW   r   r   r$   )r/   r   r$   )
r7   rl   r*   r+   r,   formatr   rG   r[   rZ   )msgr@   r   r   r   test_linestrings_invalid_ndim   s$   "
"rq   c                  C   *   t tdddd} t| tg d d S Nr   r$   r$   r   rD   r   r$   rC   ru   r   linearringsr   r
   r   r!   r   r   r   test_linearrings   s   ry   c                  C   s*   t g dg d} t| tg d d S )N)r   r$   r   r   )r)   rM   rN   r)   )r   r)   )r$   rM   )r   rN   rz   r   rx   r
   r   r!   r   r   r   test_linearrings_from_xy   rL   r|   c                  C   s2   t tddddd d } t| tg d d S )Nr   r$   rt   rw   r!   r   r   r   test_linearrings_unclosed   s   r~   c                  C   s$   t g d} t| tg d d S )N)rC   rC   rC   )rC   rC   rC   rC   r{   r!   r   r   r   *test_linearrings_unclosed_all_coords_equal   s   r   c                   C   rc   rd   )r*   r+   r,   r   rx   r   r   r   r   %test_linearrings_invalid_shape_scalar   rf   r   )rh   ri   rj   )r   r   r   )r$   r   r   rE   c                 C      t | }tt t| W d    n1 sw   Y  |d  d7  < tt t| W d    d S 1 s=w   Y  d S N.r$   r$   )r7   rl   r*   r+   r,   r   rx   rg   r@   r   r   r   test_linearrings_invalid_shape      
"r   c                  C   s  d} t jddd}tjt| dd t| W d    n1 s$w   Y  t 	||d d dgd d f f}tjt| dd t| W d    n1 sTw   Y  t jddd}tjt| dd t
| W d    d S 1 s|w   Y  d S )Nrn   r/   r)   rM   r'   r   r$   )r7   rX   rY   r*   r+   r,   ro   r   rx   hstackrG   )rp   r\   r^   r`   r   r   r   test_linearrings_invalid_ndim   s   ""r   c                  C   sJ   t dt j} ttj t|  W d    d S 1 sw   Y  d S )N)rM   r   )r7   fullr8   r*   r+   r   rk   rx   r@   r   r   r   test_linearrings_all_nan  s   "r   rV   rT   rW   c                 C   s   t jdd| }t j||d}t|}t ||d d dgd d f f}t j||d}t|}t|| t j|d |d}t|}t||d  d S )Nr/   rM   rU   r   )r7   rX   rY   rZ   r   rx   r   r
   )rS   rV   r\   r]   r^   r_   r`   ra   r   r   r   test_linearrings_buffer  s   
"


r   c               	   C   s0   t t tdddd} t| tg d d S rs   )r   polygonsrx   r   r
   r	   r!   r   r   r   test_polygon_from_linearring'  s   r   c                   C   s*   t td t t tjd tgdt d S )N)holes)r
   r   r   r   r   r   r   r   r   test_polygons_none,  s   r   c                  C   rr   rs   )r   r   r   r
   r	   r!   r   r   r   test_polygons1  rL   r   c                	   C   sP   t t ttddddtdddd W d    d S 1 s!w   Y  d S )Nr   r/   r$   r   )r*   r+   r,   r   r   r   r   r   r   r    test_polygon_no_hole_list_raises6  s   ""r   c                   C   s@   t ttjf tt W d    d S 1 sw   Y  d S r   )r*   r+   	TypeErrorr   rk   r   r   r   r   r   r   test_polygon_no_hole_wrong_type;  s   "r   c                   C   D   t ttjf tttg W d    d S 1 sw   Y  d S r   )r*   r+   r   r   rk   r   r   r   r   r   r   r   !test_polygon_with_hole_wrong_type@     "r   c                   C   r   r   )r*   r+   r   r   rk   r   r   r   r   r   r   r   test_polygon_wrong_hole_typeE  r   r   c                  C   s8   t tddddtddddg} t | dksJ d S )Nr   r/   r$   r        X@r   r   r   arear!   r   r   r   test_polygon_with_1_holeJ  s   "r   c               	   C   sD   t tddddtddddtddddg} t | dks J d S Nr   r/   r$   r   r)   rM        X@r   r!   r   r   r   test_polygon_with_2_holesO  s   &r   c                  C   sX   t t tddddt tddddd t tddddg} t | dks*J d S r   )r   r   rx   r   r   r!   r   r   r   test_polygon_with_none_holeV  s   r   c                  C   sN   t tddddtddddgtddddg} t |  ddgks%J d S )Nr   r/   rN   r$   r   r         8@r   r   r   r   tolistr!   r   r   r   test_2_polygons_with_same_holeb  s   (r   c               	   C   sZ   t tddddtddddgtddddtddddg} t |  dd	gks+J d S )
Nr   r/   rN   r$   r   r)   rM   r   g      7@r   r!   r   r   r   !test_2_polygons_with_2_same_holesi  s
   r   c               	   C   s^   t tddddtddddgtddddgtddddgg} t |  ddgks-J d S )	Nr   r/   rN   r$   r)   r   g      X@r   r   r!   r   r   r   $test_2_polygons_with_different_holesq  s
   r   c                   C   rc   rd   )r*   r+   r,   r   r   r   r   r   r   /test_polygons_not_enough_points_in_shell_scalary  rf   r   c                 C   r   r   r7   rl   r*   r+   r,   r   r   r   r   r   r   (test_polygons_not_enough_points_in_shell~  r   r   c                   C   sB   t t ttdd W d    d S 1 sw   Y  d S )Nr$   rM   r   rD   )r*   r+   r,   r   r   r7   rl   r   r   r   r   /test_polygons_not_enough_points_in_holes_scalar  s   "r   c                 C   s   t | }tt tt d| W d    n1 sw   Y  |d  d7  < tt tt d| W d    d S 1 sEw   Y  d S )Nr   r   r$   r   r   r   r   r   (test_polygons_not_enough_points_in_holes  s   
"r   zfunc,expectedc                 C   s"   | t jd gtd}t|| d S )N)dtype)r7   arrayobjectr
   )funcexpectedr"   r   r   r    test_create_collection_only_none  s   
r   zfunc,sub_geomc                 C   s"   | ||g}t |dksJ d S Nr   r   get_num_geometriesr   sub_geomr"   r   r   r   test_create_collection  s   r   c                 C   s&   | |d d |g}t |dksJ d S r   r   r   r   r   r   !test_create_collection_skips_none  s   
r   c                 C   s:   t t | |g W d    d S 1 sw   Y  d S r   )r*   r+   r   )r   r   r   r   r   &test_create_collection_wrong_geom_type  s   "r   zcoords,ccw,expected)r   r   r$   r$   Trt   F)rC   rv   rD   ru   rC   c                 C      t j| d|i}t|| d S Nccwr   boxr
   r@   r   r   r"   r   r   r   test_box  s   r   )r   r   rE   rI   rC   r   )rC   rI   rE   r   rC   c                 C   r   r   r   r   r   r   r   test_box_array  s   r   r@   c                 C   s   t j|  d u s	J d S r   )r   r   r   r   r   r   test_box_nan  s   r   c               
   C   s   t tddd tddddg} | d jdksJ | d jdks$J t|  | d jdks2J | d d u s:J | d jdksCJ | d j}t|  | d j|ksVJ d S Nr$   r   r   )r7   r   r   r   r   _geom_preparedprepare)arroriginalr   r   r   test_prepare,  s   $


r   c               
   C   s   t tddd tddddg} t|  | d jdks J | d jdks)J t|  | d jdks7J | d d u s?J | d jdksHJ t|  d S r   )r7   r   r   r   r   r   r   destroy_prepared)r   r   r   r   test_destroy_prepared;  s   $

r   	geom_typer}   c                 C   s$   t jd| d}t | sJ d S N)r   )r   )r   empty
is_missingallr   r"   r   r   r   test_empty_missingG  s   r      c                 C   sN   t jd| d}t |  sJ t | sJ t || k s%J d S r   )r   r   r   r   is_emptyget_type_idr   r   r   r   
test_emptyM  s   r   )Znumpyr7   r*   r   r   r   r   r   r   r   r   r	   shapely.testingr
   shapely.tests.commonr   r   r   r   r   r   r   r   r   r   r#   r%   r&   r-   markskipifgeos_versionr:   r<   r=   parametrizeparamr8   rB   rH   rK   rQ   rR   rb   re   rm   rq   ry   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   multipointsmultilinestringsmultipolygonsgeometrycollectionsr   r   r   r   r   r   r   r   r   MISSINGr   ranger   r   r   r   r   <module>   s   (
,















	

	




	





