o
    Jfv                     @   s  d dl Z d dlZ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 dd Zdd Zd	d
 Zdd Zeddeg deg deg de
dge	g dgeeg dgeeddggZejje  dkddejdedd Zejdedd Zdd Zdd Zdd Zejjej dk dd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(g d)ejd*g d+d,d- Z#ejjej dk ddd.d/ Z$d0d1 Z%ejd(g d2d3d4 Z&ejd(g d5d6d7 Z'ejd8ej(d9e)d:d;ejjej dk ddd<d=e)d>d?fd@e)dAdBfgdCdD Z*ejd(g dEdFdG Z+ejd(dHdIgdJdK Z,dLdM Z-dNdO Z.dS )P    N)GeometryCollection
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)ShapelyDeprecationWarning)assert_geometries_equalc                   C      t t du s	J d S NF)boolr	    r   r   u/home/deployuser/azure_apps/autowriter/venv/lib/python3.10/site-packages/shapely/tests/geometry/test_geometry_base.pytest_polygon      r   c                   C   r   r   )r   r   r   r   r   r   test_linestring   r   r   c                   C   r   r   )r   r   r   r   r   r   
test_point   r   r   c                   C   r   r   )r   r   r   r   r   r   test_geometry_collection"   r   r      )r   r   r   r   r   r   r   r   PyPyz.Setting custom attributes doesn't fail on PyPy)reasongeomc                 C   s6   t t d| _W d    d S 1 sw   Y  d S )Ntest)pytestraisesAttributeErrorname)r   r   r   r   test_setattr_disallowed2   s   "r"   c                 C   s   t | }d S )N)weakrefref)r   _r   r   r   test_weakrefable<   s   r&   c                   C   s:   t t td W d    d S 1 sw   Y  d S )NzPOINT (1 1))r   r   	TypeErrorshapelyGeometryr   r   r   r   test_base_class_not_callableA   s   "r*   c                  C   sN   t dd} tt |  }W d    n1 sw   Y  || jks%J d S Nr   )r   r   warnsr
   geometryType	geom_typer   r.   r   r   r   test_GeometryType_deprecatedF   s
   

r0   c                  C   sL   t dd} tt | j}W d    n1 sw   Y  || jks$J d S r+   )r   r   r,   r
   typer.   r/   r   r   r   test_type_deprecatedO   s
   
r2   )   
   r   zGEOS < 3.10c                  C   s2   t ddg} | jdd}|t g dsJ d S )Nr   r   r4      )max_segment_length)r   )r   r6   r5   )r   
segmentizeequals)lineresultr   r   r   test_segmentizeX   s   r<   )r3      r   z
GEOS < 3.7c                  C   s<   ddg} t | }| }|jd d  | d d d ksJ d S )Nr   )r      )r   reversecoords)rA   r:   r;   r   r   r   test_reverse_   s   $rB   )r3   	   r   z
GEOS < 3.9op)unionintersection
differencesymmetric_difference	grid_size)r   r   r>   c                 C   sV   t dddd}t dddd}t|| ||d}tt | |||d}||ks)J d S )Nr   g      @r>   r3   )rI   )r(   boxgetattr)rD   rI   geom1geom2r;   expectedr   r   r   test_binary_op_grid_sizeg   s
   rO   c                  C   sB   t dd} tddg}| |ddu sJ | |ddu sJ d S )Nr   r   r5         ?Fg      ?T)r   r   dwithin)pointr:   r   r   r   test_dwithinu   s   
rS   c                  C   s@   t g d} tddg}| |du sJ | |du sJ d S )N)r   r4   r4   )r4   ir   )r4   r   FT)r	   r   contains_properlycontains)polygonr:   r   r   r   test_contains_properly}   s   rX   )convex_hullenvelopeoriented_envelopeminimum_rotated_rectanglec                 C   s4   t g d}t|| }tt| |}||ksJ d S )N)r   r5   rT   )r   rK   r(   )rD   r   r;   rN   r   r   r   test_constructive_properties   s   
r]   )crossesrV   rU   
covered_bycoversdisjointr9   
intersectsoverlapstoucheswithinc                    sh   t g dtg d}t |}t|tjsJ tj fdd|D td}tj	
|| d S )Nr   r   r   )r   r   r   r   )rP   rP   r   c                       g | ]	}t  |qS r   rK   .0prD   rW   r   r   
<listcomp>       z9test_array_argument_binary_predicates.<locals>.<listcomp>dtyper	   r(   pointsrK   
isinstancenpndarrayarrayr   testingassert_array_equalrD   rs   r;   rN   r   rm   r   %test_array_argument_binary_predicates   s   r{   z
op, kwargsrQ   rP   )distance)marksequals_exactg{Gz?)	tolerancerelate_patternz	T*F**F***)patternc                    sr   t g dtg d}t|fi  }t|tjs J tj fdd|D td}tj	
|| d S )Nrf   rg   c                    s"   g | ]}t |fi  qS r   ri   rj   kwargsrD   rW   r   r   rn      s   " z:test_array_argument_binary_predicates2.<locals>.<listcomp>rp   rr   )rD   r   rs   r;   rN   r   r   r   &test_array_argument_binary_predicates2   s    r   )rG   rF   rH   rE   c                    sl   t g d ttg dd}t |}t|tjs J tj fdd|D t	d}t
|| d S )Nrf   rg   rP   c                    s   g | ]	}t  |qS r   ri   )rk   grJ   rD   r   r   rn      ro   z2test_array_argument_binary_geo.<locals>.<listcomp>rp   )r	   r(   bufferrs   rK   rt   ru   rv   rw   objectr   )rD   polygonsr;   rN   r   r   r   test_array_argument_binary_geo   s   
r   r|   hausdorff_distancec                    sh   t g dtg d}t |}t|tjsJ tj fdd|D dd}tj	|| d S )Nrf   rg   c                    rh   r   ri   rj   rm   r   r   rn      ro   z-test_array_argument_float.<locals>.<listcomp>float64rp   )
r	   r(   rs   rK   rt   ru   rv   rw   rx   ry   rz   r   rm   r   test_array_argument_float   s   r   c                     s   t g d tg d}  | }t|tjsJ tj fdd| D td}t|| t	g d} 
|}t|tjsAJ tj fdd|D dd}tj|| d S )	N)r   r   r   r   rP   r   c                       g | ]}  |qS r   )line_interpolate_pointrk   dr:   r   r   rn          z.test_array_argument_linear.<locals>.<listcomp>rp   rg   c                    r   r   )line_locate_pointrj   r   r   r   rn      r   r   )r   ru   rw   r   rt   rv   r   r   r(   rs   r   rx   ry   )	distancesr;   rN   rs   r   r   r   test_array_argument_linear   s   


r   c                     s\   t dd tg d}  | }t|tjsJ tj fdd| D td}t|| d S )Nr   r   c                    r   r   )r   r   rR   r   r   rn      r   z.test_array_argument_buffer.<locals>.<listcomp>rp   )r   ru   rw   r   rt   rv   r   r   )r   r;   rN   r   r   r   test_array_argument_buffer   s   

r   )/platformr#   numpyru   r   r(   r   r   r   r   r   r   r   r	   shapely.errorsr
   shapely.testingr   r   r   r   r   geometries_all_typesmarkskipifpython_implementationparametrizer"   r&   r*   r0   r2   geos_versionr<   rB   rO   rS   rX   r]   r{   paramdictr   r   r   r   r   r   r   r   r   <module>   s    (





		

	







	


