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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mZ ejej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'f	Z(ej)ej*ej+ej,ej-fZ.ej /d
eej /de(dd Z0ej /d
eej /de.dd Z1ej /d
eej /dedd Z2ej /de(dd Z3ej /de.dd Z4ej /d
eej /de.dd Z5dd Z6dd Z7dd Z8ej /d
edd  Z9ej j!ej"d!k d"dd#d$ Z:ej j!ej"d!k d"dej /d%eefeefeeg d&eg d'geg d&g d'gd(feefegegfgd)d* Z;ej j!ej"d!k d"dd+d, Z<ej j!ej"d!k d"dej /d%eefeg d-e	d.d/gfeg d0eeg d1eg d2gfeefegegfgd3d4 Z=ej j!ej"d!k d"dej /d%eefeg d5eg d0geg d5eeg d6eg d1ggfedegedegfgd7d8 Z>ej /d%eefe	d9d.ge	d.d/gfgd:d; Z?d<d= Z@d>d? ZAd@dA ZBdBdC ZCdDdE ZDej j!ej"dk ddej /d%eg dFedGdHgfeg dIeg dJfeg dKeg dLfeg dMg dNgd(eg dMg dOgd(feeg dPeg dQgeeg dReg dSgfeefeefeefeefeefeefeefgdTdU ZEej j!ej"dVk dWdej /dXeg dRdYggdZd[ ZFej j!ej"dk ddd\d] ZGej j!ej"dk ddej /dXd^d_gd`da ZHej j!ej"dbk dcdej /d%edGddgedddGgfeg dJeg defeg dReg dffeg dMg dOgd(eg dgg dhgd(feje	dGddgdidjgge	dddGgdjdiggej j!ej"dkk dldd	eeg dReg dSgeeg dfeg dmgfeefeefeefeefeefeefeefgdndo ZIej j!ej"dbk dcddpdq ZJej j!ej"dbk dcdej /drdsdgdtdu ZKej /d%ed d e fedvdvedvdvfedvdwe fedGdxge fedydzgedydzgfeg d{e fed|d}ged~dgfgdd ZLej /deddgd(de feddgd(de feddgd(deddgd(feg dg dgd(deg dfgdd ZMej /d
edd ZNdd ZOej /dreeegdd ZPdd ZQdd ZRdd ZSej j!ejTdk dddd ZUdd ZVdd ZWdd ZXej j!ejTdk dddd ZYdd ZZej j!ej"dk ddej /d
eej /ddd gdd Z[ej j!ej"dk ddej /d
edd Z\ej j!ej"dk ddej /d
eeeegdd Z]ej j!ej"dk ddej /d
eeegdd Z^ej j!ej"dk dddd Z_ej j!ej"dk ddej /dedGdgdedGdgfeg dMdeg dMfedGdgdeg dfeg dMdeg dfedGdgedGdggdeg dedGdggfedGdgedGdggdgeg dedGdggfedGdgedGdggddgeg deg dgfgdd Z`ej j!ej"d!k d"dej /d
edd Zaej j!ej"d!k d"dej /deg dâe)edddfedHdge)edddfe
ddge)eddYdfedYdYedYdYfe e fgddɄ Zbej j!ej"dk ddej /d
edd̈́ Zcej j!ej"dk ddej /de
g d΢eg dϢfeg dТeg dѢfeg dҢeg dӢfed_dged_dgfedYdYedYdYfe e fgddք Zdej j!ej"dk ddej /de
g d΢eg dϢfeg dТeg dѢfeg dҢeg dӢfed_dged_dgfedYdYedYdYfe e fgdd؄ Zeej j!ej"dk ddddڄ ZfdS )    N)
GeometryGeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)assert_geometries_equal   )
	all_typesemptyempty_line_stringempty_pointempty_polygonignore_invalidline_stringmulti_pointpointpoint_z      r   zGEOS < 3.11)reason)marksgeometryfuncc                 C   s@   || | g}|j dksJ |d d u st|d tsJ d S d S N   r   )shape
isinstancer   r   r   actual r&   Z/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/shapely/tests/test_constructive.pytest_no_args_array:   s   &r(   c                 C   s   |t ju r2t | dvr2t jdk r2tjtdd || | gd W d    d S 1 s+w   Y  d S t|t ju oCt | dkoCt jdk  || | gd}W d    n1 sWw   Y  |j	dkscJ t
|d tslJ d S )	Nr   r!   r   zonly accept linestringsmatch        r   r      r   r    )shapelyoffset_curveget_type_idgeos_versionpytestraisesr   r   voronoi_polygonsr"   r#   r   r$   r&   r&   r'   test_float_arg_arrayB   s&   



r6   	referencec                 C   s<   t j| | g||gdd}|jdksJ t|d tsJ d S )N      ?	tolerancer    r   )r/   snapr"   r#   r   )r   r7   r%   r&   r&   r'   test_snap_arrayY   s   r<   c                 C   s   | d }|d u s
J d S Nr&   r   r%   r&   r&   r'   test_no_args_missinga   s   r?   c                 C   s   | d d}|d u sJ d S )Nr8   r&   r>   r&   r&   r'   test_float_arg_missingg      
r@   c                 C   s   || t d}|d u sJ d S )Nnan)floatr$   r&   r&   r'   test_float_arg_nanm   s   rD   c                   C   D   t jtdd tjtddd W d    d S 1 sw   Y  d S )N'invalid' is not a valid optionr*   r   invalid)	cap_styler3   r4   
ValueErrorr/   bufferr   r&   r&   r&   r'   test_buffer_cap_style_invalidt      "rL   c                   C   rE   )NrF   r*   r   rG   
join_stylerI   r&   r&   r&   r'   test_buffer_join_style_invalidy   rM   rP   c                  C   s    t jd tdd} | d u sJ d S )Nr8   r9   )r/   r;   r   r%   r&   r&   r'   test_snap_none~   s   rR   c                 C   s"   t j| ttjd}|d u sJ d S )Nr9   )r/   r;   r   nprB   r   r%   r&   r&   r'   test_snap_nan_float   s   rU   )r      r   z
GEOS < 3.8c                  C      t d } | d u sJ d S r=   r/   
build_arearQ   r&   r&   r'   test_build_area_none   rA   rZ   zgeom,expected)r   r   )r   r   r   r   )r   r   r[   )r   r   r!   r!   r)   r]   )holesc                 C   s&   t | }||usJ ||ksJ d S r=   rX   geomexpectedr%   r&   r&   r'   test_build_area   s   
rc   c                  C   rW   r=   )r/   
make_validrQ   r&   r&   r'   test_make_valid_none   rA   re   )r[   r]   r)   r]   r[   )r]   r)   )r[   r]   )r[   r^   r!   r   r   r!   r[   )r]   r^   rf   r]   )r[   rg   r]   r[   c                 C   s,   t | }||usJ t ||ksJ d S r=   )r/   rd   	normalizer`   r&   r&   r'   test_make_valid   s   
ri   )r[   r^   rg   r[   )r]   r[   rg   r]   c                 C   s,   t | }tt |t |ksJ d S r=   )r/   rd   rS   allrh   r`   r&   r&   r'   test_make_valid_1d   s   
"rk   )r]   r[   c                 C   s   t | }||ksJ d S r=   )r/   rh   r`   r&   r&   r'   test_normalize   s   
rl   c                  C   sL   t tjdk  ttd} W d    n1 sw   Y  t| s$J d S )Nr-          @)r   r/   r2   r0   r   is_emptyrQ   r&   r&   r'   test_offset_curve_empty   s   ro   c                  C   sH   t ttgddg} | d t tdksJ | d t tdks"J d S )N       g      r   r   r/   r0   r   resultr&   r&   r'    test_offset_curve_distance_array  s   rt   c                  C   s0   t jtddddd} t td}| |ksJ d S )Nrp   r!   mitrerm   )	quad_segsrO   mitre_limitrq   )result1result2r&   r&   r'   test_offset_curve_kwargs  s
   
rz   c                  C   s   d} t jt| d tjttgdtddgd W d    n1 s#w   Y  t jt| d tjttgdddgd	 W d    n1 sFw   Y  t jt| d tjttgdd
dgd W d    d S 1 sjw   Y  d S )Nonly accepts scalar valuesr*   r   rV   	   )rv   roundbevelrN   g      @g      @)rw   )r3   r4   	TypeErrorr/   r0   r   rS   arraymsgr&   r&   r'   #test_offset_curve_non_scalar_kwargs  s    "r   c                   C   rE   )NrF   r*   r8   rG   rN   )r3   r4   rJ   r/   r0   r   r&   r&   r&   r'   $test_offset_curve_join_style_invalid%  rM   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   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[   r   r]   r   r   r[   )r^   r^   r!   r   r\   r   r!   r^   r[   r   r]   r   r[   )r^   r   r\   r   r^   c                 C   s   t t| d| d S )Nr   )r   r/   remove_repeated_pointsra   rb   r&   r&   r'   test_remove_repeated_points*  s   1r   r-   zGEOS < 3.12zgeom, tolerancer!   c                 C   sB   t jtjdd t| | W d    d S 1 sw   Y  d S )NzInvalid number of pointsr*   )r3   r4   r/   r   r   ra   r:   r&   r&   r'   *test_remove_repeated_points_invalid_result^  s   "r   c                  C   sz   t d dd u s
J t d gd d gksJ tg d} tddg}t d | gd}|d d u s4J t|d | d S )Nr   )r[   r[   r]   r[   r]   r   )r/   r   tolistr   r   r   rb   rs   r&   r&   r'    test_remove_repeated_points_nonei  s   r   )Not a geometryr   r]   c                 C   s@   t jtdd t| | W d    d S 1 sw   Y  d S Nz)One of the arguments is of incorrect typer*   )r3   r4   r   r/   r   r   r&   r&   r'   (test_remove_repeated_points_invalid_typeu  s   "r   )r      r   z
GEOS < 3.7r)   )r[   r   r)   r[   r[   r   r]   r   r[   )r[   r   r   r   r[   )r^   r   r   r   r^   r\   r   )r   rV   r   zGEOS < 3.8.1)r^   r   r\   r   r^   c                 C   s   t t| | d S r=   )r   r/   reverser   r&   r&   r'   test_reverse|  s   8r   c                  C   st   t d d u s	J t d g d gksJ tg d} tg d}t d | g}|d d u s1J t|d | d S )Nr   r   r   r   )r/   r   r   r   r   r   r&   r&   r'   test_reverse_none  s   r   ra   r   c                 C   s>   t jtdd t|  W d    d S 1 sw   Y  d S r   )r3   r4   r   r/   r   )ra   r&   r&   r'   test_reverse_invalid_type  s   "r      r   )   )r   r   )   r   )r   r   r   r   r   r   r   )      r   )r   r   c                 C   s    t | dddd}t|| d S )Nr   r   r/   clip_by_rectr   r`   r&   r&   r'   test_clip_by_rect  s   r   zgeom, rect, expected)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]   )r   r   r   )r   r   r]   )r   r   (   r   )r   r   r   r   )r   r   )r   r   r   r   r   r   r   r   c                 C   s    t j| g|R  }t|| d S r=   r   )ra   rectrb   r%   r&   r&   r'   test_clip_by_rect_polygon  s   -r   c                 C   sJ   t | | gdddd}|jdksJ |d d u s!t|d ts#J d S d S )Nr,   r8   r    r   )r/   r   r"   r#   r   rT   r&   r&   r'   test_clip_by_rect_array  s   &r   c                  C   s"   t d dddd} | d u sJ d S Nr   r   )r/   r   rQ   r&   r&   r'   test_clip_by_rect_missing  s   r   c                 C   s$   t | dddd}|t ksJ d S r   )r/   r   r   )ra   r%   r&   r&   r'   test_clip_by_rect_empty  s   r   c                  C   sX   d} t jt| d tttgdddtddg W d    d S 1 s%w   Y  d S )Nr{   r*   r   r   )r3   r4   r   r/   r   r   rS   r   r   r&   r&   r'   #test_clip_by_rect_non_scalar_kwargs&  s   ""r   c               	   C   s   t ddgt ddgt ddgt ddgt ddgt ddgtddd g} t| }t|dks3J ttg d	tg d
g}||ksGJ d S )Nr[   r]   r   r   r      r   r   r   r[   r]   r   r[   r]   r[   r   r]   )r   r
   r/   
polygonizer1   r   r   )linesrs   rb   r&   r&   r'   test_polygonize,  s"   









r   c                  C   st  t ddgt ddgt ddgg} ttg dg}tt| }t|tjs*J ||ks0J tt| g}t|tj	sAJ |j
dksHJ |d |ksPJ t| | g}|j
dks^J t|}t|tj	skJ |j
dksrJ |d |kszJ |d	 |ksJ t| | g| | g| | gg}|j
d
ksJ t|}t|tj	sJ |j
dksJ | D ]}||ksJ qd S )Nr[   r]   r   r   r   r   r   r    r   r   r!   r   r   )r   r   r   r/   r   rS   r   r#   r   ndarrayr"   flattenr   rb   rs   arrresr&   r&   r'   test_polygonize_arrayB  s6   




r   z1.15z8axis keyword for generalized ufunc introduced in np 1.15c                  C   sl   t ddgt ddgt ddgg} t| | g}tj|dd}|jdks&J tj|dd}|jdks4J d S )	Nr[   r]   r   r   axisr    r   r   )r   rS   r   r/   r   r"   r   r   rs   r&   r&   r'   test_polygonize_array_axisc  s   


r   c                  C   s    t d d g} | t ksJ d S r=   )r/   r   r   rr   r&   r&   r'   test_polygonize_missingt  s   r   c                  C   s  d t ddgt ddgt ddgt ddgd t ddgt ddgt ddgtddd g} t| }t|d	ks9J td
d |D sDJ |\}}}}ttg dtg dg}||ks^J |t kseJ tt ddgt ddgg}||ksyJ |t ksJ d S )Nr[   r]   r   r   r   r   )d   r   r   r   c                 s   s    | ]
}t |d kV  qdS )r   N)r/   r1   .0ra   r&   r&   r'   	<genexpr>      z'test_polygonize_full.<locals>.<genexpr>r   r   )r   r
   r/   polygonize_fulllenrj   r   r   )r   rs   polygonscutsdanglesrG   expected_polygonsexpected_danglesr&   r&   r'   test_polygonize_fullz  s8   









r   c                  C   s  t ddgt ddgt ddgg} ttg dg}tt| }t|dks*J tdd |D s5J |d |ks=J td	d |d
d  D sLJ tt| g}t|dks]J tdd |D shJ tdd |D ssJ |d d |ks}J tdd |d
d  D sJ t| | g}|j	dksJ t|}t|dksJ tdd |D sJ tdd |D sJ |d d |ksJ |d d
 |ksJ tdd |d
d  D sJ t| | g| | g| | gg}|j	dksJ t|}t|dksJ tdd |D sJ tdd |D sJ |d 
 D ]
}||ks*J q!|d
d  D ]}|
 D ]}|t ksBJ q8q2d S )Nr[   r]   r   r   r   c                 s       | ]	}t |tjV  qd S r=   )r#   r/   r   r   r&   r&   r'   r         z-test_polygonize_full_array.<locals>.<genexpr>r   c                 s       | ]}|t  kV  qd S r=   r   r   r&   r&   r'   r         r   c                 s   r   r=   r#   rS   r   r   r&   r&   r'   r     r   c                 s       | ]}|j d kV  qdS )r   Nr"   r   r&   r&   r'   r     r   c                 s   s    | ]
}|d  t  kV  qdS )r   Nr   r   r&   r&   r'   r     r   r   c                 s   r   r=   r   r   r   r&   r&   r'   r     r   c                 s   r   r    Nr   r   r&   r&   r'   r     r   c                 s   s$    | ]}|D ]}|t  kV  qqd S r=   r   )r   ra   gr&   r&   r'   r     s   " r   c                 s   r   r=   r   r   r&   r&   r'   r     r   c                 s   r   )r   Nr   r   r&   r&   r'   r     r   )r   r   r   r/   r   rS   r   r   rj   r"   r   r   r&   r&   r'   test_polygonize_full_array  sL   




r   c                  C   s   t ddgt ddgt ddgg} t| | g}tj|dd}t|dks'J tdd |D s2J tj|d	d}t|dksAJ td
d |D sLJ d S )Nr[   r]   r   r   r   r   c                 s   r   r   r   r   r&   r&   r'   r     r   z2test_polygonize_full_array_axis.<locals>.<genexpr>r   c                 s   r   )r   Nr   r   r&   r&   r'   r     r   )r   rS   r   r/   r   r   rj   r   r&   r&   r'   test_polygonize_full_array_axis  s   


r   c                  C   s8   t d d g} t| dksJ tdd | D sJ d S )Nr   c                 s   r   r=   r   r   r&   r&   r'   r     r   z/test_polygonize_full_missing.<locals>.<genexpr>)r/   r   r   rj   rr   r&   r&   r'   test_polygonize_full_missing  s   r   )r   r   r   zGEOS < 3.10max_segment_lengthc                 C   sB   t jtdd tj| |d W d    d S 1 sw   Y  d S )NIllegalArgumentExceptionr*   r   )r3   r4   r   r/   
segmentize)r   r   r&   r&   r'   *test_segmentize_invalid_max_segment_length  s   "r   c                 C   s    t j| tjd}|d u sJ d S )Nr   )r/   r   rS   rB   rT   r&   r&   r'   &test_segmentize_max_segment_length_nan  s   r   c                 C      t j| dd}t||  d S Nr   r   r/   r   r   rT   r&   r&   r'   test_segmentize_empty  s   r   c                 C   r   r   r   rT   r&   r&   r'   test_segmentize_no_change  s   r   c                   C   s   t jd ddd u sJ d S r   )r/   r   r&   r&   r&   r'   test_segmentize_none  s   r   zgeometry,tolerance, expectedr   r   r   )r[   r   r   r   )	r[   r   r   r   r   r   r   r   r   r   r[   rg   g      ?)r[   r   rg   c                 C   s   t | |}t|| d S r=   r   )r   r:   rb   r%   r&   r&   r'   test_segmentize  s   Kr   c                 C   T   t | | g}|jdksJ |d d u st|d tsJ t d }|d u s(J d S r   )r/   minimum_bounding_circler"   r#   r   rT   r&   r&   r'   &test_minimum_bounding_circle_all_typesS  
   
r  zgeometry, expected)r   r   r   r   r   r   r   r^   r   r   c                 C   s   t | }t|| d S r=   )r/   r  r   r   rb   r%   r&   r&   r'   test_minimum_bounding_circle^  s   
r  )r   r   r   z
GEOS < 3.6c                 C   r   r   )r/   oriented_enveloper"   r#   r   rT   r&   r&   r'    test_oriented_envelope_all_types}  r  r  )r[   r   r   )r[   )r   r   r   r   r[   )r]   )r   r   r   )r]   )r   r   )r.   rV   r   r]   )r]   r   r   r   r]   )r	  r   r  r]   r	  )r   r   c                 C   "   t | }t || sJ d S r=   )r/   r  equalsrj   r  r&   r&   r'   test_oriented_envelope     
r  c                 C   r
  r=   )r/   minimum_rotated_rectangler  rj   r  r&   r&   r'   test_minimum_rotated_rectangle  r  r  c                  C   s   t dd} t| djjd d  | djjd d   }tj|dd}t|jdks-J tj|ddd}t|jd	ks>J tj|dd}tj|d	d}t	|t	|k sXJ d S )
Nr   r   r   g      ?)ratior   T)r  allow_holesr   )
r
   r   rK   exteriorcoordsr/   concave_hullr   	interiorsget_num_coordinates)pmprx   ry   result3result4r&   r&   r'   test_concave_hull_kwargs  s   
0r  )gnumpyrS   r3   r/   r   r   r   r   r   r   r   r	   r
   r   shapely.testingr   commonr   r   r   r   r   r   r   r   r   r   boundarycentroidconvex_hullparamr  markskipifr2   envelopeextract_unique_pointsnoderh   point_on_surfaceCONSTRUCTIVE_NO_ARGSrK   r0   delaunay_trianglessimplifyr5   CONSTRUCTIVE_FLOAT_ARGparametrizer(   r6   r<   r?   r@   rD   rL   rP   rR   rU   rZ   rc   re   ri   rk   rl   ro   rt   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __version__r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r&   r&   r&   r'   <module>   sl   00
	












	








	







/










6





,

!
!+




















I	


	















