o
    i@                     @   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k dddd Z dd Z!dd Z"dd Z#dd Z$ej%dddgd d! Z&d"d# Z'ej%d$g d%d&d' Z(d(d) Z)d*d+ Z*d,d- Z+d.d/ Z,d0d1 Z-d2d3 Z.ej%d$g d4d5d6 Z/d7d8 Z0d9d: Z1ej%dddgej%d;d<d=gd>d? Z2d@dA Z3dBdC Z4dDdE Z5dFdG Z6dHdI Z7dJdK Z8dLdM Z9dNdO Z:dPdQ Z;dRdS Z<dTdU Z=dVdW Z>dXdY Z?dZd[ Z@ej%d$g d4d\d] ZAd^d_ ZBej%d$g d4d`da ZCej%dbejDe	 fejEe fejFe
 fejGe fgdcdd ZHej%deejDefejEefejEefejFefejGefejGefejGefejGefejGefejGefejGefejGefgdfdg ZIej%deejDefejEefejFefejGefgdhdi ZJej%deejDefejDefejDefejEefejEefejEefejFefejFefejFefg	djdk ZKej%dldmdneg dofdmdpeg dqfgdrds ZLej%dld d ddgddgfdneg doeg dtgfd d ddgddgfdndpgeg doeg dugfgdvdw ZMej%dxejNejNejNejNgejNd ddgd ejNddgd d ejNdgd d dejNggdydz ZOd{d| ZPd}d~ ZQej%ddejRdgdd ZSej%deTddd ZUd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   V/var/www/edux/Edux_v2/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   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_ndim3   s   "r-   )r)   
   r   zGEOS < 3.10)reasonc                  C   s"   t tjtj} t| t   d S r   )r   r    npnanr
   r!   r"   r   r   r   test_points_nan_becomes_empty;   s   r2   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_coordsA   s   &

r8   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)   r6   r"   r   r   r   test_linestrings_from_xyL      r;   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)         r9   r:   )r   r=   )r   r>   r6   )xyr#   r   r   r   "test_linestrings_from_xy_broadcastQ   s   

rA   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   r6   r"   r   r   r   test_linestrings_from_xyz^   s   rB   dimr   r)   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   )r0   randomrandnasarrayr   r7   r
   swapaxes)rC   coordscoords1result1coords2result2coords3result3r   r   r   test_linestrings_bufferc   s   


"
rS   c                   C   :   t t td W d    d S 1 sw   Y  d S Nr4   )r*   r+   r,   r   r7   r   r   r   r   %test_linestrings_invalid_shape_scalart      "rV   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   GEOSExceptionr7   r0   ones)rX   r   r   r   test_linestrings_invalid_shapey   s   	"r^   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   r=   rD   rE   r=   r'   rG   r   r   r   )r.   r   r   )
r0   r]   r*   r+   r,   formatr   r7   rK   rJ   )msgrL   r   r   r   test_linestrings_invalid_ndim   s$   "
"rb   c                  C   *   t tdddd} t| tg d d S Nr   r   r   r   r4   r   r   r3   rf   r   linearringsr   r
   r   r"   r   r   r   test_linearrings   s   rj   c                  C   s*   t g dg d} t| tg d d S )N)r   r   r   r   )r)   r=   r>   r)   )r   r)   )r   r=   )r   r>   rk   r   ri   r
   r   r"   r   r   r   test_linearrings_from_xy   r<   rm   c                  C   s2   t tddddd d } t| tg d d S )Nr   r   re   rh   r"   r   r   r   test_linearrings_unclosed   s   ro   c                  C   s$   t g d} t| tg d d S )N)r3   r3   r3   )r3   r3   r3   r3   rl   r"   r   r   r   *test_linearrings_unclosed_all_coords_equal   s   rp   c                   C   rT   rU   )r*   r+   r,   r   ri   r   r   r   r   %test_linearrings_invalid_shape_scalar   rW   rq   )rY   rZ   r[   )r   r   r   )r   r   r   r5   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   )r0   r]   r*   r+   r,   r   ri   rX   rL   r   r   r   test_linearrings_invalid_shape      
"rv   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 )Nr_   r.   r)   r=   r'   r   r   )r0   rH   rI   r*   r+   r,   r`   r   ri   hstackr7   )ra   rM   rO   rQ   r   r   r   test_linearrings_invalid_ndim   s   ""ry   c                  C   sJ   t dt j} ttj t|  W d    d S 1 sw   Y  d S )N)r=   r   )r0   fullr1   r*   r+   r   r\   ri   rL   r   r   r   test_linearrings_all_nan   s   "r|   rF   rD   rG   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.   r=   rE   r   )r0   rH   rI   rJ   r   ri   rx   r
   )rC   rF   rM   rN   rO   rP   rQ   rR   r   r   r   test_linearrings_buffer   s   
"


r}   c               	   C   s0   t t tdddd} t| tg d d S rd   )r   polygonsri   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   rc   rd   )r   r~   r   r
   r	   r"   r   r   r   test_polygons  r<   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_raises  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   r\   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   r\   r~   r   r   r   r   r   r   !test_polygon_with_hole_wrong_type     "r   c                   C   r   r   )r*   r+   r   r   r\   r~   r   r   r   r   r   r   test_polygon_wrong_hole_type  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_hole  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)   r=        X@r   r"   r   r   r   test_polygon_with_2_holes!  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~   ri   r   r   r"   r   r   r   test_polygon_with_none_hole(  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.   r>   r   r   r         8@r   r~   r   r   tolistr"   r   r   r   test_2_polygons_with_same_hole4  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.   r>   r   r   r)   r=   r   g      7@r   r"   r   r   r   !test_2_polygons_with_2_same_holes;  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.   r>   r   r)   r   g      X@r   r   r"   r   r   r   $test_2_polygons_with_different_holesC  s
   r   c                   C   rT   rU   )r*   r+   r,   r   r~   r   r   r   r   /test_polygons_not_enough_points_in_shell_scalarK  rW   r   c                 C   rr   rs   r0   r]   r*   r+   r,   r   r~   ru   r   r   r   (test_polygons_not_enough_points_in_shellP  rw   r   c                   C   sB   t t ttdd W d    d S 1 sw   Y  d S )Nr   r=   r   r4   )r*   r+   r,   r   r~   r0   r]   r   r   r   r   /test_polygons_not_enough_points_in_holes_scalarf  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   rt   r   r   ru   r   r   r   (test_polygons_not_enough_points_in_holesk  s   
"r   zfunc,expectedc                 C   s"   | t jd gtd}t|| d S )N)dtype)r0   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   Tre   F)r3   rg   r4   rf   r3   c                 C      t j| d|i}t|| d S Nccwr   boxr
   rL   r   r   r#   r   r   r   test_box  s   r   )r   r   r5   r9   r3   r   )r3   r9   r5   r   r3   c                 C   r   r   r   r   r   r   r   test_box_array  s   r   rL   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   )r0   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   )r0   r   r   r    r   r   r   destroy_prepared)r   r   r   r   test_destroy_prepared  s   $

r   	geom_typern   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_missing  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_empty  s   r   )Vnumpyr0   r*   r   r   r   r   r   r   r   r   r	   shapely.testingr
   commonr   r   r   r   r   r   r   r   r   r   r$   r%   r&   r-   markskipifgeos_versionr2   r8   r;   rA   rB   parametrizerS   rV   r^   rb   rj   rm   ro   rp   rq   rv   ry   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   r1   r   r   r   MISSINGr   ranger   r   r   r   r   <module>   s<   (
,










	

	




	





