o
    i                     @   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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d0d1 Z%d2d3 Z&ejd*g d4d5d6 Z'ejd*g d7d8d9 Z(ejd:ej)d;e*d<d=ejjej!d k d!dd>d?e*d@dAfdBe*dCdDfgdEdF Z+ejd*g dGdHdI Z,ejd*dJdKgdLdM Z-dNdO Z.dPdQ Z/dS )R    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   d/var/www/edux/Edux_v2/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   |  dtu s	J tj| | gtd}|| k}t|tjsJ | s$J | |k}t|tjs0J | s6J || k}t|tjsBJ | rHJ | |k}t|tjsTJ | rZJ d S )Nr   dtype)	__eq__NotImplementednparrayobject
isinstancendarrayallany)r   arrresultr   r   r   test_comparison_notimplementedA   s   r4   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_callable]   s   "r8   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_deprecatedb   s
   

r>   c                  C   sL   t dd} tt | j}W d    n1 sw   Y  || jks$J d S r9   )r   r   r:   r
   typer<   r=   r   r   r   test_type_deprecatedk   s
   
r@   )   
   r   zGEOS < 3.10c                  C   s2   t ddg} | jdd}|t g dsJ d S )Nr   r   rB      )max_segment_length)r   )r   rD   rC   )r   
segmentizeequals)liner3   r   r   r   test_segmentizet   s   rI   )rA      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)rN   rH   r3   r   r   r   test_reverse{   s   $rO   )rA   	   r   z
GEOS < 3.9op)unionintersection
differencesymmetric_difference	grid_size)r   r   rK   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      @rK   rA   )rV   )r6   boxgetattr)rQ   rV   geom1geom2r3   expectedr   r   r   test_binary_op_grid_size   s
   r\   c                  C   sB   t dd} tddg}| |ddu sJ | |ddu sJ d S )Nr   r   rC         ?Fg      ?T)r   r   dwithin)pointrH   r   r   r   test_dwithin   s   
r`   c                  C   s@   t g d} tddg}| |du sJ | |du sJ d S )N)r   rB   rB   )rB   ir   )rB   r   FT)r	   r   contains_properlycontains)polygonrH   r   r   r   test_contains_properly   s   re   )convex_hullenvelopeoriented_envelopeminimum_rotated_rectanglec                 C   s4   t g d}t|| }tt| |}||ksJ d S )N)r   rC   ra   )r   rX   r6   )rQ   r   r3   r[   r   r   r   test_constructive_properties   s   
rj   )crossesrc   rb   
covered_bycoversdisjointrG   
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   )r]   r]   r   c                       g | ]	}t  |qS r   rX   .0prQ   rd   r   r   
<listcomp>       z9test_array_argument_binary_predicates.<locals>.<listcomp>r'   r	   r6   pointsrX   r.   r+   r/   r,   r   testingassert_array_equalrQ   r~   r3   r[   r   rz   r   %test_array_argument_binary_predicates   s   r   z
op, kwargsr^   r]   )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 )Nrs   rt   c                    s"   g | ]}t |fi  qS r   rv   rw   kwargsrQ   rd   r   r   r{      s   " z:test_array_argument_binary_predicates2.<locals>.<listcomp>r'   r}   )rQ   r   r~   r3   r[   r   r   r   &test_array_argument_binary_predicates2   s    r   )rT   rS   rU   rR   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 )Nrs   rt   r]   c                    s   g | ]	}t  |qS r   rv   )rx   grW   rQ   r   r   r{      r|   z2test_array_argument_binary_geo.<locals>.<listcomp>r'   )r	   r6   bufferr~   rX   r.   r+   r/   r,   r-   r   )rQ   polygonsr3   r[   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 )Nrs   rt   c                    ru   r   rv   rw   rz   r   r   r{      r|   z-test_array_argument_float.<locals>.<listcomp>float64r'   )
r	   r6   r~   rX   r.   r+   r/   r,   r   r   r   r   rz   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   r]   r   c                       g | ]}  |qS r   )line_interpolate_pointrx   drH   r   r   r{          z.test_array_argument_linear.<locals>.<listcomp>r'   rt   c                    r   r   )line_locate_pointrw   r   r   r   r{     r   r   )r   r+   r,   r   r.   r/   r-   r   r6   r~   r   r   r   )	distancesr3   r[   r~   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   r_   r   r   r{     r   z.test_array_argument_buffer.<locals>.<listcomp>r'   )r   r+   r,   r   r.   r/   r-   r   )r   r3   r[   r   r   r   test_array_argument_buffer  s   

r   )0platformr#   numpyr+   r   r6   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&   r4   r8   r>   r@   geos_versionrI   rO   r\   r`   re   rj   r   paramdictr   r   r   r   r   r   r   r   r   <module>   s    (






		

	







	


