o
    Zq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mZ d dl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d d dkZed d dkZ ed d d	k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-ej.ej%ej/ej'j(ejdk dddfZ0ej1ej2ej3ej4ej5fZ6ej'7deej'7de0dd Z8ej'7deej'7de6dd Z9ej'7deej'7dedd Z:ej'7de0dd Z;ej'7de6dd Z<ej'7deej'7de6dd Z=dd  Z>d!d" Z?d#d$ Z@ej'7ded%d& ZAd'd( ZBej'7d)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. ZCd/d0 ZDej'7d)eefeg d1e	d2d3gfeg d4eeg d5eg d6gfeefegegfgd7d8 ZEej'7d)eefeg d9eg d4geg d9eeg d:eg d5ggfedegedegfgd;d< ZFej'j(ejdk ddej'7d)eefeg d1eg d1feg d4eeg d5eg d6gfeefegegfgd=d> ZGej'j(ejdk ddej'7d)eefeg d1e feg d4eeg d5eg d6gfeefegegfgd?d@ ZHej'j(ejdkdAddBdC ZIej'j(ejdk ddej'7dDeJdEdFgdGeKdHfdEdGdIgeKdJfdKdGeLdLfdEdIeLdMfgdNdO ZMej'7d)eefe	dPd2ge	d2d3gfgdQdR ZNdSdT ZOdUdV ZPdWdX ZQdYdZ ZRd[d\ ZSej'j(ejd
k ddej'7d)eg d]ed^d_gfeg d`eg dafeg dbeg dcfeg ddg degd,eg ddg dfgd,feeg dgeg dhgeeg dieg djgfeefeefeefeefeefeefeefgdkdl ZTej'j(ejdmk dndej'7doeg didggdpdq ZUej'j(ejd
k dddrds ZVej'j(ejd
k ddej'7dodtdugdvdw ZWej'7d)ed^dxgedxd^gfeg daeg dyfeg dieg dzfeg ddg dfgd,eg d{g d|gd,fe	d^dxgd}d~gge	dxd^gd~d}ggfeeg dieg djgeeg dzeg dgfeefeefeefeefeefeefeefgdd ZXdd ZYej'7dddgdd ZZej'7d)ed d e feddeddfedde fed^dge feddgeddgfeg de feddgeddgfgdd Z[ej'7de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 Z\ej'7dedd Z]dd Z^ej'7deeegdd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhej'j(ejdk ddej'7deej'7ddd gdd Ziej'j(ejdk ddej'7dedd Zjej'j(ejdk ddej'7deeeegdd Zkej'j(ejdk ddej'7deeegdd Zlej'j(ejdk ddddÄ Zmej'j(ejdk ddej'7ded^dgded^dgfeg dddeg ddfed^dgdeg dȢfeg dddeg dɢfed^dged^dggdeg dȢed^dggfed^dged^dggdgeg dȢed^dggfed^dged^dggddgeg dȢeg d̢gfgdd΄ Znej'7deddЄ Zoej'7deg dҢe1eddǃdǡfed_dge1eddǃdǡfe
ddge1edddfeddeddfe e fgdd؄ Zpej'7deddڄ Zqej'7dejrejsgej'7de
g dۢeg dܢfeg dݢeg dޢfeg dߢeg dfedudgedudgfeddeddfe e fgdd Ztej'j(ejdmkddej'7de
g dۢeg dfeg dݢeg dޢfeg dߢeg dfedudgedudgfeddeddfe e fgdd Zudd Zvej'j(ejd
k dddd Zwej'j(ejdk ddG dd dZxej'j(ejdmk dnddd Zyej'j(ejdmkdddd Zzej'7dedd Z{ej'7ddgdd Z|dd Z}dd Z~ej'7dedd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d Zdd ZdS (      N)GeometryGeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygongeos_version)UnsupportedGEOSVersionErrorassert_geometries_equal)	ArrayLike	all_typesemptyempty_line_stringempty_pointempty_polygonignore_invalidline_stringmulti_pointpointpoint_z   )   	   )r   
   )r      r   r   r   zGEOS < 3.11)reason)Zmarks)r   r   r   zGEOS < 3.10geometryfuncc                 C   s   | j r t| dkr |tju r trtdk str tdk r td || | g}|j	dks-J |d d u s<t
|d ts>J d S d S )Nr   )r   r   r   )r   r   r   z;GEOS < 3.9.3 or GEOS < 3.10.3 crashes with empty geometriesr   )is_emptyshapelyZget_num_geometriesnodegeos39r   geos310pytestZxfailshape
isinstancer   r"   r#   actual r/   f/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/shapely/tests/test_constructive.pytest_no_args_arrayG   s   

&r1   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$   )r&   offset_curveget_type_idr   r*   raisesr   r   voronoi_polygonsr+   r,   r   r-   r/   r/   r0   test_float_arg_arrayY   s&   



r=   	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"   r>   r.   r/   r/   r0   test_snap_arrayp   s   rC   c                 C   s   | d }|d u s
J d S Nr/   r#   r.   r/   r/   r0   test_no_args_missingx   s   rF   c                 C   s   | d d}|d u sJ d S )Nr?   r/   rE   r/   r/   r0   test_float_arg_missing~   s   
rG   c                 C   s   || t d}|d u sJ d S )Nnan)floatr-   r/   r/   r0   test_float_arg_nan   s   rJ   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 optionr4   r3   invalid)Z	cap_styler*   r;   
ValueErrorr&   bufferr   r/   r/   r/   r0   test_buffer_cap_style_invalid      "rQ   c                   C   rK   )NrL   r4   r3   rM   
join_stylerN   r/   r/   r/   r0   test_buffer_join_style_invalid   rR   rU   c                  C   s    t jd tdd} | d u sJ d S )Nr?   r@   )r&   rB   r   r.   r/   r/   r0   test_snap_none   s   rW   c                 C   s"   t j| ttjd}|d u sJ d S )Nr@   )r&   rB   r   nprH   r"   r.   r/   r/   r0   test_snap_nan_float   s   rZ   c                  C      t d } | d u sJ d S rD   r&   Z
build_arearV   r/   r/   r0   test_build_area_none      
r]   zgeom,expected)r   r   )r   r   r   r   )r   r   r_   )r3   r3   r   r   r2   ra   Zholesc                 C   s&   t | }||usJ ||ksJ d S rD   r\   geomexpectedr.   r/   r/   r0   test_build_area   s   
rg   c                  C   r[   rD   )r&   
make_validrV   r/   r/   r0   test_make_valid_none   r^   ri   )r_   ra   r2   ra   r_   )ra   r2   )r_   ra   )r_   rb   r   r   r   r   r_   )ra   rb   rj   ra   )r_   rk   ra   r_   c                 C   s,   t | }||usJ t ||ksJ d S rD   r&   rh   	normalizerd   r/   r/   r0   test_make_valid   s   
rn   )r_   rb   rk   r_   )ra   r_   rk   ra   c                 C   s,   t | }tt |t |ksJ d S rD   )r&   rh   rX   allrm   rd   r/   r/   r0   test_make_valid_1d   s   
"rp   c                 C   s0   t j| dd}||usJ t ||ksJ d S )N	structuremethodrl   rd   r/   r/   r0   test_make_valid_structure  s   rt   c                 C   s2   t j| ddd}||usJ t ||ksJ d S )Nrq   Frs   keep_collapsedrl   rd   r/   r/   r0   .test_make_valid_structure_keep_collapsed_false   s   rw   zGEOS >= 3.10c                  C   sD   t jtdd tjt dd} W d    d S 1 sw   Y  d S )Nz:The 'structure' method is only available in GEOS >= 3.10.0r4   rq   rr   )r*   r;   rO   r&   rh   r
   )_r/   r/   r0   *test_make_valid_structure_unsupported_geos?  s
   "ry   z)method, keep_collapsed, error_type, errorZlineworkrq   Tz!method only accepts scalar valuesFz)keep_collapsed only accepts scalar valuesunknownzUnknown method: unknownz=The 'linework' method does not support 'keep_collapsed=False'c                 C   sF   t j||d tjt | |d}W d    d S 1 sw   Y  d S )Nr4   ru   )r*   r;   r&   rh   r
   )rs   rv   Z
error_typeerrorrx   r/   r/   r0   test_make_valid_invalid_paramsG  s   "r|   )ra   r_   c                 C   s   t | }||ksJ d S rD   )r&   rm   rd   r/   r/   r0   test_normalizee  s   
r}   c                  C   sL   t tjdk  ttd} W d    n1 sw   Y  t| s$J d S )Nr7          @)r   r&   r   r9   r   r%   rV   r/   r/   r0   test_offset_curve_emptyu  s   r   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   r3   r&   r9   r   resultr/   r/   r0    test_offset_curve_distance_array}  s   r   c                  C   s0   t jtddddd} t td}| |ksJ d S )Nr   r   Zmitrer~   )	quad_segsrT   mitre_limitr   )result1result2r/   r/   r0   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 valuesr4   r3      r   )r   roundZbevelrS         @      @)r   )r*   r;   	TypeErrorr&   r9   r   rX   arraymsgr/   r/   r0   #test_offset_curve_non_scalar_kwargs  s    "r   c                   C   rK   )NrL   r4   r?   rM   rS   )r*   r;   rO   r&   r9   r   r/   r/   r/   r0   $test_offset_curve_join_style_invalid  rR   r   )r_   r_   r3   r   r_   r   )r_   r2   r2   r3   r   r_   )r_   r2   r   r_   )r_   r_   r   ra   r   r_   )r_   r   ra   r   r_   )r_   r   r   r   r   r   r   r_   )rb   rb   r      r   r   r   r   rb   rb   r   r   r   rb   )r_   r_   r   ra   r   r3   r_   )rb   rb   r   r   r`   r   r   rb   r_   r   ra   r   r_   )rb   r   r`   r   rb   c                 C   s   t t| d| d S Nr   )r   r&   remove_repeated_pointsre   rf   r/   r/   r0   test_remove_repeated_points  s   1r   r7   zGEOS < 3.12zgeom, tolerancec                 C   sB   t jtjdd t| | W d    d S 1 sw   Y  d S )NzInvalid number of pointsr4   )r*   r;   r&   r   r   re   rA   r/   r/   r0   *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 )Nr3   )r_   r_   ra   r_   ra   r   )r&   r   tolistr   r   r"   rf   r   r/   r/   r0    test_remove_repeated_points_none  s   r   )Not a geometryr3   ra   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 typer4   )r*   r;   r   r&   r   r   r/   r/   r0   (test_remove_repeated_points_invalid_type  s   "r   r2   )r_   r   r2   r_   r_   r   ra   r   r_   r_   r   r   r   r_   )rb   r   r   r   rb   r`   r   )rb   r   r`   r   rb   c                 C   s   t t| | d S rD   )r   r&   reverser   r/   r/   r0   test_reverse  s   4r   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   r3   )r&   r   r   r   r   r   r/   r/   r0   test_reverse_none)  s   r   re   r   r3   c                 C   s>   t jtdd t|  W d    d S 1 sw   Y  d S r   )r*   r;   r   r&   r   )re   r/   r/   r0   test_reverse_invalid_type4  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   rd   r/   r/   r0   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   )ra   )r3   r   r   )r   r3   ra   )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 rD   r   )re   rectrf   r.   r/   r/   r0   test_clip_by_rect_polygonR  s   -r   c                 C   s   | j rAt| tjjkrAtrtdk strtdk strAtdk rAt	
t t| | gdddd W d    d S 1 s:w   Y  d S t| | gdddd}|jdksSJ |d d u sbt|d tsdJ d S d S )N)r   r   r   )r   r      )r   r   r   r6   r?   r$   r   )r%   r&   r:   ZGeometryTypeZPOINTr(   r   r)   geos311r*   r;   r   r   r+   r,   r   rY   r/   r/   r0   test_clip_by_rect_array  s*   
&r   c                  C   s"   t d dddd} | d u sJ d S Nr   r3   )r&   r   rV   r/   r/   r0   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   )re   r.   r/   r/   r0   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   r4   r   r3   )r*   r;   r   r&   r   r   rX   r   r   r/   r/   r0   #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_   ra   r   r   r   r   r   r      r_   ra   r   r_   ra   r_   r   ra   )r   r
   r&   
polygonizer:   r   r   )linesr   rf   r/   r/   r0   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_   ra   r   r   r3   r   r   r$   r3   r   r   r   r   )r   r   r   r&   r   rX   r   r,   r   ndarrayr+   flattenr   rf   r   arrresr/   r/   r0   test_polygonize_array  s6   




r   c                  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_   ra   r   r3   Zaxisr$   r   r   )r   rX   r   r&   r   r+   r   r   r   r/   r/   r0   test_polygonize_array_axis  s   


r   c                  C   s    t d d g} | t ksJ d S rD   )r&   r   r   r   r/   r/   r0   test_polygonize_missing  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_   ra   r   r   r   r   d   r   r   r   c                 s   s    | ]
}t |d kV  qdS )r   N)r&   r:   .0re   r/   r/   r0   	<genexpr>      z'test_polygonize_full.<locals>.<genexpr>r   r   )r   r
   r&   polygonize_fulllenro   r   r   )r   r   ZpolygonscutsZdanglesrM   Zexpected_polygonsZexpected_danglesr/   r/   r0   test_polygonize_full  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_   ra   r   r   r   c                 s       | ]	}t |tjV  qd S rD   )r,   r&   r   r   r/   r/   r0   r         z-test_polygonize_full_array.<locals>.<genexpr>r   c                 s       | ]}|t  kV  qd S rD   r   r   r/   r/   r0   r         r3   c                 s   r   rD   r,   rX   r   r   r/   r/   r0   r   #  r   c                 s       | ]}|j d kV  qdS )r   Nr+   r   r/   r/   r0   r   $  r   c                 s   s    | ]
}|d  t  kV  qdS )r   Nr   r   r/   r/   r0   r   &  r   r   c                 s   r   rD   r   r   r   r/   r/   r0   r   ,  r   c                 s   r   r$   Nr   r   r/   r/   r0   r   -  r   c                 s   s$    | ]}|D ]}|t  kV  qqd S rD   r   )r   re   gr/   r/   r0   r   0  s   " r   c                 s   r   rD   r   r   r/   r/   r0   r   6  r   c                 s   r   )r   Nr   r   r/   r/   r0   r   7  r   )r   r   r   r&   r   rX   r   r   ro   r+   r   r   r/   r/   r0   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_   ra   r   r3   r   r   c                 s   r   r   r   r   r/   r/   r0   r   H  r   z2test_polygonize_full_array_axis.<locals>.<genexpr>r   c                 s   r   )r   Nr   r   r/   r/   r0   r   K  r   )r   rX   r   r&   r   r   ro   r   r/   r/   r0   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   rD   r   r   r/   r/   r0   r   R  r   z/test_polygonize_full_missing.<locals>.<genexpr>)r&   r   r   ro   r   r/   r/   r0   test_polygonize_full_missingN  s   r   max_segment_lengthc                 C   sB   t jtdd tj| |d W d    d S 1 sw   Y  d S )NZIllegalArgumentExceptionr4   r   )r*   r;   r   r&   
segmentize)r"   r   r/   r/   r0   *test_segmentize_invalid_max_segment_lengthU  s   "r  c                 C   s    t j| tjd}|d u sJ d S )Nr   )r&   r   rX   rH   rY   r/   r/   r0   &test_segmentize_max_segment_length_nan]  s   r  c                 C      t j| dd}t||  d S Nr   r   r&   r   r   rY   r/   r/   r0   test_segmentize_emptyd  s   r  c                 C   r  r  r  rY   r/   r/   r0   test_segmentize_no_changem  s   r  c                   C   s   t jd ddd u sJ d S r  )r&   r   r/   r/   r/   r0   test_segmentize_nonet  s   r  zgeometry,tolerance, expectedr   r   r   )r_   r   r   r   )	r_   r   r   r   r   r   r   r   r   r	  r_   rk         ?)r_   r   rk   c                 C   s   t | |}t|| d S rD   r  )r"   rA   rf   r.   r/   r/   r0   test_segmentizey  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 Nr$   r   )r&   minimum_bounding_circler+   r,   r   rY   r/   r/   r0   &test_minimum_bounding_circle_all_types  
   
r  zgeometry, expected)r	  r  r   r
  r	  )r3   r   rb   r   r   c                 C   s   t | }t|| d S rD   )r&   r  r   r"   rf   r.   r/   r/   r0   test_minimum_bounding_circle  s   
r  c                 C   r  r  )r&   oriented_enveloper+   r,   r   rY   r/   r/   r0    test_oriented_envelope_all_types  r  r  )r?   r?   )r?   r   )      @r   )g      @r~   )r   r   )r  )r?   r   )r   r   )r   r?   r  )ra   )r   r3   r   )ra   )r   r   )r8   r   r   ra   )ra   )r   r3   )r   r   ra   )r  )r         "@)g3333330@333333@)gffffff(@gffffffr  )r   r3   c                 C   s   || }t ||ddd d S NTgMbP?)rm   rA   r   )r"   rf   r#   r.   r/   r/   r0   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   s    t j| }t||ddd d S r  )r&   ZconstructiveZ_oriented_envelope_geosr   r  r/   r/   r0   #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 )Nr3   r   )	r
   rP   r&   r  r   r,   r   rX   asarray)
geometriesr.   rf   r/   r/   r0    test_oriented_evelope_array_likeD  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#  Zallow_holesr3   )
r
   r   rP   exteriorZcoordsr&   concave_hullr   	interiorsZget_num_coordinates)pmpr   r   Zresult3Zresult4r/   r/   r0   test_concave_hull_kwargsO  s   
0r)  c                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )$TestConstrainedDelaunayTriangulationz
    Only testing the number of triangles and their type here.
    This doesn't actually test the points in the resulting geometries.

    c                 C   sB   t tg d}t|jdksJ |jD ]	}t|tsJ qd S )Nr   )r   r   )Z   r,  )r,  r   r   r   )r&   constrained_delaunay_trianglesr   r   geomsr,   )selfpolysr'  r/   r/   r0   	test_polyf  s   

z.TestConstrainedDelaunayTriangulation.test_polyc                 C   sN   t tdtdg}t|}t|jdksJ |jD ]	}t|ts$J qd S )N)2   r   )<   r   r   r2  r+  r   )r	   r   r&   r-  r   r.  r,   )r/  Z	multipolyr0  r'  r/   r/   r0   test_multi_polygonn  s   

z7TestConstrainedDelaunayTriangulation.test_multi_polygonc                 C   s*   t dd}t|}t|jdksJ d S )Nr3   r   )r
   r&   r-  r   r.  )r/  r'  r0  r/   r/   r0   
test_pointz  s   

z/TestConstrainedDelaunayTriangulation.test_pointc                 C   s"   t t }t|jdksJ d S r   )r&   r-  r   r   r.  )r/  r0  r/   r/   r0   test_empty_poly  s   z4TestConstrainedDelaunayTriangulation.test_empty_polyN)__name__
__module____qualname____doc__r1  r5  r6  r7  r/   r/   r/   r0   r*  ^  s    r*  c                  C   sd   t g d} tj| dd}|jd tg dsJ tj| dd}|jd tg ds0J d S )N)r  r?   )r  r~   )r?   r~   r  FZorderedr   )r   r   )r   r  r   r  r   r   r>  T)r   r   r@  r?  )r   r  rA  )r   r&   r<   r.  equalsr   )r(  r   Zresult_orderedr/   r/   r0   test_voronoi_polygons_ordered  s   



rC  c                  C   sN   t g d} tjtdd tj| dd W d    d S 1 s w   Y  d S )Nr<  z%Ordered Voronoi polygons require GEOSr4   Tr=  )r   r*   r;   r   r&   r<   )r(  r/   r/   r0   #test_voronoi_polygons_ordered_raise  s   "rD  c                 C   s   t | dvr&tjtdd t |  W d    d S 1 sw   Y  d S | jrHtjtdd t |  W d    d S 1 sAw   Y  d S t | | g}|jdksVJ |d d u set|d t	seJ t d }|d u spJ d S )N)r   r   zxArgument must be Polygonal or LinearRing|must be a Polygon or MultiPolygon|Operation not supported by GeometryCollectionr4   *Empty input(?: geometry)? is not supportedr$   r   )
r&   r:   r*   r;   r   maximum_inscribed_circler%   r+   r,   r   rY   r/   r/   r0   'test_maximum_inscribed_circle_all_types  s0   
		

rG  )%POLYGON ((0 5, 5 10, 10 5, 5 0, 0 5))zLINESTRING (5 5, 2.5 7.5)c                 C   s.   t | t |} }t | }t|| d S rD   )r&   from_wktrF  r   r  r/   r/   r0   test_maximum_inscribed_circle  s   

rJ  c                  C   s   t d} tjtdd t |  W d    n1 sw   Y  t d} tjtdd t |  W d    d S 1 s>w   Y  d S )NzPOINT EMPTYzJArgument must be Polygonal or LinearRing|must be a Polygon or MultiPolygonr4   zPOLYGON EMPTYrE  )r&   rI  r*   r;   r   rF  r"   r/   r/   r0   #test_maximum_inscribed_circle_empty  s   

	"rL  c                  C   sL   t d} tjtdd t j| dd W d    d S 1 sw   Y  d S )NrH  z'tolerance' should be positiver4   r   r@   )r&   rI  r*   r;   rO   rF  rK  r/   r/   r0   /test_maximum_inscribed_circle_invalid_tolerance  s   
"rM  c                 C   sH   t | | g}|jdksJ t|d tsJ t d }|d u s"J d S r  )r&   orient_polygonsr+   r,   r   rY   r/   r/   r0   test_orient_polygons_all_types  s
   
rO  c                  C   s  t g dg dgd} t| }|jjsJ |jd jrJ tj| dd}|jjr+J |jd js3J t| | g}t|}t|jdksGJ |jD ]}|jjsRJ |jd jrZJ qJtj|gddd }t|jdksnJ |jD ]}|jjryJ |jd jsJ qqt	t
dd| |g}t|}t|jd	ksJ |jd t
ddksJ |jd t| ksJ |jd t|ksJ d S )
Nr   r   rc   r   T)Zexterior_cwr   r3   r   )r   r&   rN  r$  Zis_ccwr&  r	   r   r.  r   r
   )polygonr   r(  re   gcr/   r/   r0   test_orient_polygons  s6   




rR  c                  C   s6   t tddtddgd g} t| }t||  d S )Nr   r_   ra   )rX   r   r
   r   r&   rN  r   )r   r   r/   r/   r0   (test_orient_polygons_non_polygonal_input  s   
rS  c                  C   sr   t g dg dgd} t| gd gd }t|}t|tjs#J |jdks*J t| }||k s7J d S )Nr   r   rc   r   r   r   )	r   rX   r   r&   rN  r,   r   r+   ro   rP  r!  r.   rf   r/   r/   r0   test_orient_polygons_array  s   

rU  c                  C   sd   t g dg dgd} | tdddg}tt|}t|ts#J t|}tt	|| d S )Nr   r   rc   r   r3   )
r   r
   rP   r&   rN  r   r,   r   rX   r   rT  r/   r/   r0   test_orient_polygons_array_like%  s   
rV  c                
   C   s4  t jdd ttdd W d    n1 sw   Y  t jdd ttddd W d    n1 s6w   Y  t jdd ttdddd W d    n1 sUw   Y  t   ttddddd W d    n1 ssw   Y  t   ttdddddd	 W d    d S 1 sw   Y  d S )
Nz:positional argument `quad_segs` for `buffer` is deprecatedr4   r?   r   zLpositional arguments `quad_segs` and `cap_style` for `buffer` are deprecatedr   z[positional arguments `quad_segs`, `cap_style`, and `join_style` for `buffer` are deprecatedr   F)r*   deprecated_callr&   rP   r   r/   r/   r/   r0    test_buffer_deprecate_positional3  s*   

"rX  c                   C   s   t jdd ttdd W d    n1 sw   Y  t jdd ttddd W d    n1 s6w   Y  t jdd ttdddd W d    d S 1 sVw   Y  d S )	Nz@positional argument `quad_segs` for `offset_curve` is deprecatedr4   r?   r   zSpositional arguments `quad_segs` and `join_style` for `offset_curve` are deprecatedr   zcpositional arguments `quad_segs`, `join_style`, and `mitre_limit` for `offset_curve` are deprecatedr   )r*   rW  r&   r9   r   r/   r/   r/   r0   &test_offset_curve_deprecate_positionalH     "rY  c                   C   s@   t jdd ttdd W d    d S 1 sw   Y  d S )NzDpositional argument `preserve_topology` for `simplify` is deprecatedr4   r?   T)r*   rW  r&   simplifyr   r/   r/   r/   r0   "test_simplify_deprecate_positionalY  s
   "r\  c                   C   s   t jdd ttdd  W d    n1 sw   Y  t jdd ttdd d W d    n1 s6w   Y  t jdd ttdd dd W d    d S 1 sVw   Y  d S )NzDpositional argument `extend_to` for `voronoi_polygons` is deprecatedr4   r6   zWpositional arguments `extend_to` and `only_edges` for `voronoi_polygons` are deprecatedFzcpositional arguments `extend_to`, `only_edges`, and `ordered` for `voronoi_polygons` are deprecated)r*   rW  r&   r<   r   r/   r/   r/   r0   *test_voronoi_polygons_deprecate_positional`  rZ  r]  )numpyrX   r*   r&   r   r   r   r   r   r   r   r	   r
   r   r   Zshapely.errorsr   Zshapely.testingr   Zshapely.tests.commonr   r   r   r   r   r   r   r   r   r   r   r(   r)   r   boundaryZcentroidZconvex_hullparamr%  markZskipifenvelopeZextract_unique_pointsZminimum_clearance_liner'   rm   Zpoint_on_surfacer-  ZCONSTRUCTIVE_NO_ARGSrP   r9   Zdelaunay_trianglesr[  r<   ZCONSTRUCTIVE_FLOAT_ARGZparametrizer1   r=   rC   rF   rG   rJ   rQ   rU   rW   rZ   r]   rg   ri   rn   rp   rt   rw   ry   r   r   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  r  r  r  Zminimum_rotated_rectangler  r  r"  r)  r*  rC  rD  rG  rJ  rL  rM  rO  rR  rS  rU  rV  rX  rY  r\  r]  r/   r/   r/   r0   <module>   s
   44

	











	












	




	





	







/









3





,

!!+



















I
	




	
















%



	
	&