o
    i<                     @   s  d dl Zd dlZd dlZd dl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 dd eD ZejejejejfZejejfejejfejejffZejejffZed d d	d	ed
d
ddedddded	d	ddgZdd eD Zej !deej !dedd Z"ej j#ej$dkddej !deej !dd dgdd Z%ej j#ej$dk ddej !dedd Z&ej j#ej$dk ddej !deej !deej !dg ddd Z'ej !d e(dd	ej !d!ed"d# Z)ej !d!ed$d% Z*ej !d!ed&d' Z+ej !d!ed(d) Z,ej !d*e(d+ej !d!ed,d- Z-ej !d*e(d+ej !d!ed.d/ Z.ej !d!ed0d1 Z/ej !d e(dd+ej !d!ed2d3 Z0ej !d e(dd+ej !d!ed4d5 Z1ej j#ej$dkddej !d!eej !dd dgd6d7 Z2ej j#ej$dk ddej !d!ed8d9 Z3ej j#ej$dk ddej !d!ed:d; Z4ej j#ej$dk ddej !d e(dd	ej !d!eej !dd dgd<d= Z5ej j#ej$dk ddej !d!ed>d? Z6ej j#ej$dk ddej !d*e(d+ej !d!ed@dA Z7ej j#ej$dk ddej !d*e(d+ej !d!edBdC Z8ej j#ej$dk ddej !d e(dd+ej !d!edDdE Z9ej j#ej$dFk dGdej !d e(dddHdI Z:ej j#ej$dFk dGddJdK Z;ej j#ej$dFk dGddLdM Z<ej j#ej$dFk dGdej !dNdOd eD dPd eD  dQdR Z=ej j#ej$dk ddej !dSedTdTd	d	ed dUdVdgd edWfedTdTd	d	ed dUdVdgdTedWfedTdTd	d	ed dUdVdgdeg dXfedTdTd	d	ed dUdVdgdeg dYfedTdTd	d	ed dUdVdgdZe fgd[d\ Z>ej j#ej$dk ddd]d^ Z?dS )_    N)GeometryGeometryCollectionPolygon)UnsupportedGEOSVersionError)assert_geometries_equal   )	all_typesemptygeometry_collectionmulti_polygonpointpolygonc                 C   s   g | ]}t |d ks|qS )   )shapelyget_type_id).0g r   \/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/shapely/tests/test_set_operations.py
<listcomp>   s    r         r      	   
   c                 C   s&   g | ]}t |s|ttfvr|qS r   )r   is_emptyr   r   )r   geomr   r   r   r   (   s    afuncc                 C   s|   |t jkr|tkrt jdkr| jtjjdd ||t	}t
|ts%J |||gt	}|jdks3J t
|d ts<J d S )N)      r   z*https://github.com/libgeos/geos/issues/797reasonr   r   )r   
differencer
   geos_versionnode
add_markerpytestmarkxfailr   
isinstancer   shape)requestr   r   actualr   r   r   test_set_operation_array/   s   


r/   )r   r   r   zGEOS >= 3.9r!   	grid_sizec                 C   s@   t jtdd | tt| W d    d S 1 sw   Y  d S Nz*grid_size parameter requires GEOS >= 3.9.0matchr(   raisesr   r   )r   r0   r   r   r   &test_set_operations_prec_not_supportedB   s
   "r6   z
GEOS < 3.9c                 C   sD   t jtdd | ttdgd W d    d S 1 sw   Y  d S Nz.grid_size parameter only accepts scalar valuesr2   r   r0   r(   r5   
ValueErrorr   )r   r   r   r   +test_set_operation_prec_nonscalar_grid_sizeL   s
   "r;   )r   r   r   c                 C   s   || | gt |d}|jdksJ t|d tsJ tj| |d}tjt |d}|||g|}tt|t| s>J d S )Nr8   r#   r   )	r   r,   r+   r   r   set_precisionequals	normalizeall)r   r   r0   r.   bpoint2expectedr   r   r   test_set_operation_prec_arrayU   s   $rC   nzfunc, related_funcc                 C   sJ   |t d |  }t d }td| D ]	}||t | }qt||s#J d S )Nr   r   reduce_test_dataranger   r=   )rD   r   related_funcr.   rB   ir   r   r   test_set_operation_reduce_1dimg   s
   rJ   c                 C   s.   t dd}| |d d g}t ||sJ d S )Nr   )r   Pointr=   )r   rH   r   r.   r   r   r   %test_set_operation_reduce_single_geomr   s   rL   c                 C   s|   t gd gd }| |d d}t|tsJ | |dd}|jdks"J | |dd}|jdks/J | |dd}|jdks<J d S )	Nr   r   axisr   r#   r   r   r   r+   r   r,   r   rH   datar.   r   r   r   test_set_operation_reduce_axisy   s   rT   c                 C   sr   | t jdtdtksJ t jdtd}| |tksJ | |dd tgd ks+J | |dd g ks7J d S )N)r   )dtype)r   r   r   rM   r   r   )npr	   objecttolist)r   rH   arr_empty_2Dr   r   r   test_set_operation_reduce_empty   s
   rZ   none_positionr   c                 C   s@   t d d }||d  | |}|t d t d }t|| d S Nr   r   r   rF   insertr   r   rH   r[   	test_datar.   rB   r   r   r   "test_set_operation_reduce_one_none   s
   ra   c                 C   sL   t d d }||d  ||d  | |}|t d t d }t|| d S r\   r]   r_   r   r   r   "test_set_operation_reduce_two_none   s   rb   c                 C   s   | t d gt ks
J d S N)r	   r   rH   r   r   r   (test_set_operation_reduce_some_none_len2   s   re   c                 C   s   t |d g|  tg  d S rc   r   r   rD   r   rH   r   r   r   "test_set_operation_reduce_all_none   s   rh   c                 C   sT   |d g|  gd dd  ttgksJ |d gd g|  dd  ttgks(J d S )Nr   r   rM   r   )rX   r	   rg   r   r   r   &test_set_operation_reduce_all_none_arr   s   (,ri   c                 C   sB   t jtdd | ttg| W d    d S 1 sw   Y  d S r1   r4   )r   rH   r0   r   r   r   ,test_set_operation_prec_reduce_not_supported   s
   "rj   c                 C   sF   t jtdd | ttgdgd W d    d S 1 sw   Y  d S r7   r9   rd   r   r   r   2test_set_operation_prec_reduce_nonscalar_grid_size   s
   "rk   c                 C   s"   | t t gtjd}|d u sJ d S Nr8   )r   rV   nan)r   rH   r.   r   r   r   ,test_set_operation_prec_reduce_grid_size_nan   s   rn   c                 C   sR   |t d |  |d}t d }td| D ]}||t | |d}qt||s'J d S )Nr8   r   r   rE   )rD   r   rH   r0   r.   rB   rI   r   r   r   #test_set_operation_prec_reduce_1dim   s
   ro   c                 C   s   t gd gd }| |dd d}t|tsJ | |ddd}|jdks$J | |ddd}|jdks2J | |ddd}|jdks@J d S )	Nr   r   r   )r0   rN   r   r#   rO   rP   rQ   rR   r   r   r   #test_set_operation_prec_reduce_axis   s   rp   c                 C   sH   t d d }||d  | |dd}|t d t d dd}t|| d S Nr   r   r8   r   r]   r_   r   r   r   'test_set_operation_prec_reduce_one_none   s
   rr   c                 C   sT   t d d }||d  ||d  | |dd}|t d t d dd}t|| d S rq   r]   r_   r   r   r   'test_set_operation_prec_reduce_two_none   s   rs   c                 C   s    t |d g|  ddtg  d S )Nr   r8   rf   rg   r   r   r   'test_set_operation_prec_reduce_all_none  s    rt   )r      r   z
GEOS < 3.8c                 C   sz   t ddddt ddddt ddddg}t |d|  }|d }td| D ]
}t ||| }q)t||dd dS )z
    This is tested seperately from other set operations as it differs in two ways:
      1. It expects only non-overlapping polygons
      2. It expects GEOS 3.8.0+
    r   r   r   r   NT)r>   )r   boxcoverage_union_allrG   coverage_unionr   )rD   r`   r.   rB   rI   r   r   r   test_coverage_union_reduce_1dim  s   	ry   c                  C   s   dd t dD } tj| d d}t|tsJ tj| dd}|jdks%J tj| dd}|jdks3J tj| d	d}|jdksAJ d S )
Nc                    s"   g | ]  fd dt dD qS )c              	      s$   g | ]}t | |d   d  qS )r   )r   rv   )r   rI   jr   r   r   '  s   $ z>test_coverage_union_reduce_axis.<locals>.<listcomp>.<listcomp>r   )rG   )r   r   rz   r   r   '  s   " z3test_coverage_union_reduce_axis.<locals>.<listcomp>r   rM   r   r#   r   rO   rP   )rG   r   rw   r+   r   r,   )rS   r.   r   r   r   test_coverage_union_reduce_axis$  s   r|   c                  C   sV   t g d} tjtjdd t| t g d W d    d S 1 s$w   Y  d S )N)r   r   r   r   r   r   )r   r   r}   z6CoverageUnion cannot process incorrectly noded inputs.r2   )r~   )g?r   )r   r   )r   r   r~   )r   r(   r5   r   GEOSExceptionrx   r   r   r   r   &test_coverage_union_overlapping_inputs2  s   "r   zgeom_1, geom_2c                 C   s   g | ]}t |gqS r   r   )r   non_polygonr   r   r   r   D  s    c                 C   s   g | ]}t D ]}||gqqS r   )non_polygon_types)r   non_polygon_1non_polygon_2r   r   r   r   F  s    c                 C   sB   t jtjdd t| | W d    d S 1 sw   Y  d S )Nz)Unhandled geometry type in CoverageUnion.r2   )r(   r5   r   r   rx   )geom_1geom_2r   r   r   &test_coverage_union_non_polygon_inputs@  s
   "r   zgeom,grid_size,expected皙?皙?ffffff@)	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   d   c                 C   s"   t j| |d}t ||sJ d S rl   )r   	union_allr=   )r   r0   rB   r.   r   r   r   test_union_all_precT  s   >r   c                  C   sP   t ddddt ddddg} t j| dd}t j| dd}t ||s&J d S )	Nr   r   r   r   r   r   r   r8   )r   rv   unary_unionr   r=   )geomsr.   rB   r   r   r   test_uary_union_alias  s    r   )@numpyrV   r(   r   r   r   r   shapely.errorsr   shapely.testingr   commonr   r	   r
   r   r   r   all_single_typesr$   intersectionsymmetric_differenceunionSET_OPERATIONSintersection_allsymmetric_difference_allr   REDUCE_SET_OPERATIONSREDUCE_SET_OPERATIONS_PRECrv   rF   r   r)   parametrizer/   skipifr%   r6   r;   rC   rG   rJ   rL   rT   rZ   ra   rb   re   rh   ri   rj   rk   rn   ro   rp   rr   rs   rt   ry   r|   r   r   r   r   r   r   r   r   <module>   s    
	

	


	

	



<