o
    Jf                     @   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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!0d	eej!0d
e)dd Z1ej!0d	eej!0d
e/dd Z2ej!0d	eej!0dedd Z3ej!0d
e)dd Z4ej!0d
e/dd Z5ej!0d	eej!0d
e/dd Z6dd Z7dd Z8dd Z9ej!0d	e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!0d$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!0d$eefeg d,e	d-d.gfeg d/eeg d0eg d1gfeefegegfgd2d3 Z>ej!j"ej#d k d!dej!0d$eefeg d4eg d/geg d4eeg d5eg d0ggfedegedegfgd6d7 Z?ej!0d$eefe	d8d-ge	d-d.gfgd9d: Z@d;d< ZAd=d> ZBd?d@ ZCdAdB ZDdCdD ZEej!j"ej#dk ddej!0d$eg dEedFdGgfeg dHeg dIfeg dJeg dKfeg dLg dMgd'eg dLg dNgd'feeg dOeg dPgeeg dQeg dRgfeefeefeefeefeefeefeefgdSdT ZFej!j"ej#dUk dVdej!0dWeg dQdXggdYdZ ZGej!j"ej#dk ddd[d\ ZHej!j"ej#dk ddej!0dWd]d^gd_d` ZIej!j"ej#dak dbdej!0d$edFdcgedcdFgfeg dIeg ddfeg dQeg defeg dLg dNgd'eg dfg dggd'feje	dFdcgdhdigge	dcdFgdidhggej!j"ej#djk dkddeeg dQeg dRgeeg deeg dlgfeefeefeefeefeefeefeefgdmdn ZJej!j"ej#dak dbddodp ZKej!j"ej#dak dbdej!0dqdrdsgdtdu ZLej!0d$ed d e fedvdvedvdvfedvdwe fedFdxge fedydzgedydzgfeg d{e fed|d}ged~dgfgdd ZMej!0de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 ZNej!0d	edd ZOdd ZPej!0dqeeegdd ZQdd ZRdd ZSdd ZTej!j"ejUdk dddd ZVdd ZWdd ZXdd ZYej!j"ejUdk dddd ZZdd Z[ej!j"ej#dk ddej!0d	eej!0ddd gdd Z\ej!j"ej#dk ddej!0d	edd Z]ej!j"ej#dk ddej!0d	eeeegdd Z^ej!j"ej#dk ddej!0d	eeegdd Z_ej!j"ej#dk dddd Z`ej!j"ej#dk ddej!0dedFdgdedFdgfeg dLdeg dLfedFdgdeg dfeg dLdeg dfedFdgedFdggdeg dedFdggfedFdgedFdggdgeg dedFdggfedFdgedFdggddgeg deg dgfgdd Zaej!j"ej#d k d!dej!0d	edd Zbej!j"ej#d k d!dej!0deg dâe*edddfedGdge*edsddfe
ddge*eddXdsfedXdXedXdXfe e fgddɄ Zcej!j"ej#dk ddej!0d	edd̈́ Zdej!0d
ejeejfgej!0de
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dXdXedXdXfe e fgddք Zgej!j"ej#dUkp-ej#d k ddej!0de
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dXdXedXdXfe e fgddۄ Zhdd݄ Ziej!j"ej#dk dddd߄ ZjdS )    N)
GeometryGeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygonassert_geometries_equal)	all_types	ArrayLike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'   k/home/deployuser/azure_apps/autowriter/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   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&   



r8   	referencec                 C   s<   t j| | g||gdd}|jdksJ t|d tsJ d S )N      ?	tolerancer!   r   )r1   snapr#   r$   r   )r   r9   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   rA   c                 C   s   | d d}|d u sJ d S )Nr:   r'   r@   r'   r'   r(   test_float_arg_missingg      
rB   c                 C   s   || t d}|d u sJ d S )Nnan)floatr%   r'   r'   r(   test_float_arg_nanm   s   rF   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r5   r6   
ValueErrorr1   bufferr   r'   r'   r'   r(   test_buffer_cap_style_invalidt      "rN   c                   C   rG   )NrH   r,   r+   rI   
join_stylerK   r'   r'   r'   r(   test_buffer_join_style_invalidy   rO   rR   c                  C   s    t jd tdd} | d u sJ d S )Nr:   r;   )r1   r=   r   r&   r'   r'   r(   test_snap_none~   s   rT   c                 C   s"   t j| ttjd}|d u sJ d S )Nr;   )r1   r=   r   nprD   r   r&   r'   r'   r(   test_snap_nan_float   s   rW   r      r   z
GEOS < 3.8c                  C      t d } | d u sJ d S r?   r1   
build_arearS   r'   r'   r(   test_build_area_none   rC   r]   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?   r[   geomexpectedr&   r'   r'   r(   test_build_area   s   
rf   c                  C   rZ   r?   )r1   
make_validrS   r'   r'   r(   test_make_valid_none   rC   rh   )r^   r`   r*   r`   r^   )r`   r*   )r^   r`   )r^   ra   r"   r   r   r"   r^   )r`   ra   ri   r`   )r^   rj   r`   r^   c                 C   s,   t | }||usJ t ||ksJ d S r?   )r1   rg   	normalizerc   r'   r'   r(   test_make_valid   s   
rl   )r^   ra   rj   r^   )r`   r^   rj   r`   c                 C   s,   t | }tt |t |ksJ d S r?   )r1   rg   rU   allrk   rc   r'   r'   r(   test_make_valid_1d   s   
"rn   )r`   r^   c                 C   s   t | }||ksJ d S r?   )r1   rk   rc   r'   r'   r(   test_normalize   s   
ro   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   r1   r4   r2   r   is_emptyrS   r'   r'   r(   test_offset_curve_empty   s   rr   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+   r1   r2   r   resultr'   r'   r(    test_offset_curve_distance_array  s   rw   c                  C   s0   t jtddddd} t td}| |ksJ d S )Nrs   r"   mitrerp   )	quad_segsrQ   mitre_limitrt   )result1result2r'   r'   r(   test_offset_curve_kwargs  s
   
r}   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+   rY   	   )ry   roundbevelrP         @      @)rz   )r5   r6   	TypeErrorr1   r2   r   rU   arraymsgr'   r'   r(   #test_offset_curve_non_scalar_kwargs  s    "r   c                   C   rG   )NrH   r,   r:   rI   rP   )r5   r6   rL   r1   r2   r   r'   r'   r'   r(   $test_offset_curve_join_style_invalid%  rO   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^   )ra   ra   r"      r   r   r   r"   ra   )ra   r   r   r   ra   )r^   r^   r   r`   r   r+   r^   )ra   ra   r"   r   r_   r   r"   ra   r^   r   r`   r   r^   )ra   r   r_   r   ra   c                 C   s   t t| d| d S )Nr   )r   r1   remove_repeated_pointsrd   re   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,   )r5   r6   r1   r   r   rd   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   )r1   r   tolistr   r   r   re   rv   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,   )r5   r6   r   r1   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^   )ra   r   r   r   ra   r_   r   )r   rY   r+   zGEOS < 3.8.1)ra   r   r_   r   ra   c                 C   s   t t| | d S r?   )r   r1   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+   )r1   r   r   r   r   r   r'   r'   r(   test_reverse_none  s   r   rd   r   r+   c                 C   s>   t jtdd t|  W d    d S 1 sw   Y  d S r   )r5   r6   r   r1   r   )rd   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   r1   clip_by_rectr   rc   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   )rd   rectre   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.   r:   r!   r   )r1   r   r#   r$   r   rV   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+   )r1   r   rS   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   )r1   r   r   )rd   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+   )r5   r6   r   r1   r   r   rU   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
   r1   
polygonizer3   r   r   )linesrv   re   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   r1   r   rU   r   r$   r   ndarrayr#   flattenr   re   rv   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   rU   r   r1   r   r#   r   r   rv   r'   r'   r(   test_polygonize_array_axisc  s   


r   c                  C   s    t d d g} | t ksJ d S r?   )r1   r   r   ru   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)r1   r3   .0rd   r'   r'   r(   	<genexpr>      z'test_polygonize_full.<locals>.<genexpr>r   r   )r   r
   r1   polygonize_fulllenrm   r   r   )r   rv   polygonscutsdanglesrI   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$   r1   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$   rU   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   rd   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   r1   r   rU   r   r   rm   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   rU   r   r1   r   r   rm   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>)r1   r   r   rm   ru   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   )r5   r6   r   r1   
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   )r1   r   rU   rD   rV   r'   r'   r(   &test_segmentize_max_segment_length_nan  s   r   c                 C      t j| dd}t||  d S Nr   r   r1   r   r   rV   r'   r'   r(   test_segmentize_empty  s   r   c                 C   r   r   r   rV   r'   r'   r(   test_segmentize_no_change  s   r   c                   C   s   t jd ddd u sJ d S r   )r1   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^   rj         ?)r^   r   rj   c                 C   s   t | |}t|| d S r?   r   )r   r<   re   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    )r1   minimum_bounding_circler#   r$   r   rV   r'   r'   r(   &test_minimum_bounding_circle_all_typesS  
   
r  zgeometry, expected)r   r  r   r  r   )r+   r   ra   r   r   c                 C   s   t | }t|| d S r?   )r1   r  r   r   re   r&   r'   r'   r(   test_minimum_bounding_circle^  s   
r
  )r   r   r   z
GEOS < 3.6c                 C   r  r    )r1   oriented_enveloper#   r$   r   rV   r'   r'   r(    test_oriented_envelope_all_types}  r  r  )r:   r:   )r:   r   )g      @r   )g      @rp   )r   r   )r  )r:   r   )r   r   )r   r:   r  )r`   )r   r+   r   )r`   )r   r   )r0   rY   r   r`   )r`   )r   r+   )r   r   r`   )r  )r         "@)g3333330@333333@)gffffff(@gffffffr  )r   r+   c                 C   s   || }t ||ddd d S )NTMbP?rk   r<   r   )r   re   r   r&   r'   r'   r(   test_oriented_envelope  s   !r  zGEOS >= 3.12)gɿgffffff?)r  g      @)gffffff@g333333@)r  g?r  )r  )r:   r  )      .@r  )r  r:   r  c                 C   sB   t j| }t jdk rt || sJ d S t||ddd d S )NrX   Tr  r  )r1   constructive_oriented_envelope_geosr4   equalsrm   r   r	  r'   r'   r(   #test_oriented_envelope_pre_geos_312  s   $
r  c                  C   sZ   t dddt dddg} tt| }t|tsJ t| }tt|| d S )Nr+   r"   )	r
   rM   r1   r  r   r$   r   rU   asarray)
geometriesr&   re   r'   r'   r(    test_oriented_evelope_array_like  s
    
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   rM   exteriorcoordsr1   concave_hullr   	interiorsget_num_coordinates)pmpr{   r|   result3result4r'   r'   r(   test_concave_hull_kwargs  s   
0r'  )knumpyrU   r5   r1   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   boundarycentroidconvex_hullparamr   markskipifr4   envelopeextract_unique_pointsnoderk   point_on_surfaceCONSTRUCTIVE_NO_ARGSrM   r2   delaunay_trianglessimplifyr7   CONSTRUCTIVE_FLOAT_ARGparametrizer)   r8   r>   rA   rB   rF   rN   rR   rT   rW   r]   rf   rh   rl   rn   ro   rr   rw   r}   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  minimum_rotated_rectangler  r  r  r'  r'   r'   r'   r(   <module>   sx   04
	












	








	







/










6





,

!
!+




















I	


	















