
    (&hDD                        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
mZmZmZmZ ej                            d          Z ej        e
           ej        e
            ej        e
          ej        j        k    z           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j"        dk    reej#        fz  Ze ej$        ej#        ffz  Z  ej%        d d dd           ej%        ddd	d	           ej%        d
d
dd           ej%        dddd          gZ& ej        e
           ej        e
            ej'        e
          dk    z           Z(ej        )                    de
          ej        )                    de          d                         Z*ej        )                    de          d             Z+ej        )                    de          ej        )                    de          ej        )                    dg d          d                                     Z,ej        )                    d e-dd                    ej        )                    de           d                         Z.ej        )                    de           d             Z/ej        )                    de           d             Z0ej        )                    de           d             Z1ej        )                    d e-d                    ej        )                    de           d                         Z2ej        )                    d e-d                    ej        )                    de           d                         Z3ej        )                    de           d             Z4ej        )                    d e-dd                    ej        )                    de           d                          Z5ej        )                    d e-dd                    ej        )                    de           d!                         Z6ej        )                    de!          d"             Z7ej        )                    de!          d#             Z8ej        )                    d e-dd                    ej        )                    de!          ej        )                    dd dg          d$                                     Z9ej        )                    de!          d%             Z:ej        )                    d e-d                    ej        )                    de!          d&                         Z;ej        )                    d e-d                    ej        )                    de!          d'                         Z<ej        )                    d e-dd                    ej        )                    de!          d(                         Z=ej        )                    d e-dd
                    d)             Z>d* Z?d+ Z@ej        )                    d,d- e(D             d. e(D             z             d/             ZAej        )                    d0 ej%        d1d1dd           ej%        d d2d3d          gd  ed4          f ej%        d1d1dd           ej%        d d2d3d          gd1 ed4          f ej%        d1d1dd           ej%        d d2d3d          gd eg d5          f ej%        d1d1dd           ej%        d d2d3d          gd eg d6          f ej%        d1d1dd           ej%        d d2d3d          gd7 e            fg          d8             ZBd9 ZCd: ZDd; ZEd< ZFd= ZGd> ZHd? ZId@ ZJdA ZKdS )B    N)GeometryGeometryCollectionPolygon)assert_geometries_equal)	all_typesemptyignore_invalidpointpolygonz?ignore:The symmetric_difference_all function:DeprecationWarning      r               	   
   afuncc                 z   |t           j        u rG| j        dk    r<t          j        |           dk    r$t           j        dk    rt          j        d            || t                    }t          |t                    sJ  || | gt                    }|j
        dk    sJ t          |d         t                    sJ d S )Nr   r   )r   r   r   z(GEOS 3.9.5 crashes with mixed collectionr   r   )shapely
difference	geom_typeget_num_geometriesgeos_versionpytestxfailr
   
isinstancer   shape)r   r   actuals      \/var/www/html/reinick/venv/lib/python3.11/site-packages/shapely/tests/test_set_operations.pytest_set_operation_arrayr$   8   s     	"""K///&q))Q.. I--?@@@T!U^^Ffh'''''T1a&%  F<4fQi*******    c                     | t           j        u rt          j        d           t          j        t
          d          5   | t          t          dg           d d d            d S # 1 swxY w Y   d S )N0disjoint_subset_union does not support grid_size.grid_size parameter only accepts scalar valuesmatch   	grid_size)r   disjoint_subset_unionr   skipraises
ValueErrorr
   )r   s    r#   +test_set_operation_prec_nonscalar_grid_sizer2   J   s    w,,,FGGG	J
 
 
 * * 	UEaS))))* * * * * * * * * * * * * * * * * *s   A%%A),A)r-   )r   r+   r   c                    |t           j        u rt          j        d            || | gt          |          }|j        dk    sJ t          |d         t                    sJ t          j        | |          }t          j        t          |          } |||g|          }t          j	        t          j
        |          t          j
        |                                                    sJ d S )Nr'   r,   r   r   )r   r.   r   r/   r
   r!   r    r   set_precisionequals	normalizeall)r   r   r-   r"   bpoint2expecteds          r#   test_set_operation_prec_arrayr;   T   s     w,,,FGGGT1a&%9555F<4fQi***** 	a9555A"5I>>>FtQFF##H>'+F33W5Fx5P5PQQUUWWWWWWWr%   nr+   zfunc, related_funcc                      |t           d |                    }t           d         }t          d|           D ]} ||t           |                   }t          j        ||          sJ d S )Nr   r+   reduce_test_dataranger   r5   )r<   r   related_funcr"   r:   is         r#   test_set_operation_reduce_1dimrC   g   su     T"2A2&''F"H1a[[ ? ?<*:1*=>>>&(+++++++r%   c                 z    t          j        dd          } | |d d g          }t          j        ||          sJ d S )Nr+   )r   Pointr5   )r   rA   geomr"   s       r#   %test_set_operation_reduce_single_geomrG   r   sG    =ADT4t$%%F>&$'''''''r%   c                    t           gdz  gdz  } | |d           }t          |t                    sJ  | |d          }|j        dk    sJ  | |d          }|j        dk    sJ  | |d          }|j        dk    sJ d S )	Nr   r   axisr   r   r+   r   r
   r    r   r!   r   rA   datar"   s       r#   test_set_operation_reduce_axisrP   y   s    GaK=1DT$T"""Ffh'''''T$QF<4T$QF<4T$R   F<4r%   c                 l    | t          j        dt                              t          k    sJ t          j        dt                    } | |          t          k    sJ  | |d                                          t          gdz  k    sJ  | |d                                          g k    sJ d S )N)r   )dtype)r   r   r   rI   r   r+   )npr   objecttolist)r   rA   arr_empty_2Ds      r#   test_set_operation_reduce_emptyrW      s    4V,,,--66668F&111L4&&&&41%%%,,..5'A+====41%%%,,.."444444r%   none_positionr   c                     t           d d         }|                    |d             | |          } |t           d         t           d                   }t          ||           d S Nr   r   r+   r?   insertr   r   rA   rX   	test_datar"   r:   s         r#   "test_set_operation_reduce_one_noner_      sh     !!$I]D)))T)__F|,Q/1A!1DEEHFH-----r%   c                     t           d d         }|                    |d            |                    |d             | |          } |t           d         t           d                   }t          ||           d S rZ   r[   r]   s         r#   "test_set_operation_reduce_two_nonera      s~     !!$I]D)))]D)))T)__F|,Q/1A!1DEEHFH-----r%   c                 @     | t           d g          t           k    sJ d S N)r   r   rA   s     r#   (test_set_operation_reduce_some_none_len2re      s)     4%''''''r%   c                 Z    t           |d g| z            t          g                      d S rc   r   r   r<   r   rA   s      r#   "test_set_operation_reduce_all_noneri      s3     DD$!,,.@.D.DEEEEEr%   c                      |d g| z  gdz  d                                           t          t          gk    sJ  |d gdz  g| z  d                                           t          t          gk    sJ d S )Nr   r+   rI   r   )rU   r   rh   s      r#   &test_set_operation_reduce_all_none_arrrk      s     4$!q q)))0022uenDDDD4$!q q)))0022uenDDDDDDr%   c                     t          j        t          d          5   | t          t          gdg           d d d            d S # 1 swxY w Y   d S )Nr(   r)   r+   r,   )r   r0   r1   r
   rd   s     r#   2test_set_operation_prec_reduce_nonscalar_grid_sizerm      s    	J
 
 
 , , 	eU^s++++, , , , , , , , , , , , , , , , , ,s   AAAc                 T     | t           t           gt          j                  }|J d S Nr,   )r
   rS   nan)r   rA   r"   s      r#   ,test_set_operation_prec_reduce_grid_size_nanrq      s)    T5%.BF333F>>>>>r%   c                      |t           d |          |          }t           d         }t          d|           D ]} ||t           |         |          }t          j        ||          sJ d S )Nr,   r   r+   r>   )r<   r   rA   r-   r"   r:   rB   s          r#   #test_set_operation_prec_reduce_1dimrs      s     T"2A2&)<<<F"H1a[[ T T<*:1*=SSS>&(+++++++r%   c                    t           gdz  gdz  } | |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   r+   )r-   rJ   r   r   rK   rL   rM   rN   s       r#   #test_set_operation_prec_reduce_axisru      s    GaK=1DT$!$///Ffh'''''T$!!,,,F<4T$!!,,,F<4T$!"---F<4r%   c                     t           d d         }|                    |d             | |d          } |t           d         t           d         d          }t          ||           d S Nr   r+   r,   r   r[   r]   s         r#   'test_set_operation_prec_reduce_one_nonerx      su     !!$I]D)))T)q)))F|,Q/1A!1DPQRRRHFH-----r%   c                     t           d d         }|                    |d            |                    |d             | |d          } |t           d         t           d         d          }t          ||           d S rw   r[   r]   s         r#   'test_set_operation_prec_reduce_two_nonerz      s     !!$I]D)))]D)))T)q)))F|,Q/1A!1DPQRRRHFH-----r%   c                 ^    t           |d g| z  d          t          g                      d S )Nr+   r,   rg   rh   s      r#   'test_set_operation_prec_reduce_all_noner|      s8     DD$!q999;Mb;Q;QRRRRRr%   c                 V   t          j        dddd          t          j        dddd          t          j        dddd          g}t          j        |d|                    }|d         }t          d|           D ]}t          j        |||                   }t          ||d           dS )zm
    This is tested separately from other set operations as it expects only
    non-overlapping polygons
    r   r+   r   r   NTr6   )r   boxcoverage_union_allr@   coverage_unionr   )r<   r^   r"   r:   rB   s        r#   test_coverage_union_reduce_1dimr      s     	Aq!QAq!QAq!QI
 '	"1"66F|H1a[[ B B)(IaLAAFH======r%   c                  d   d t          d          D             } t          j        | d           }t          |t                    sJ t          j        | d          }|j        dk    sJ t          j        | d          }|j        dk    sJ t          j        | d          }|j        dk    sJ d S )	Nc                 F    g | ]fd t          d          D             S )c           	      J    g | ]}t          j        ||d z   d z              S )r+   )r   r   ).0rB   js     r#   
<listcomp>z>test_coverage_union_reduce_axis.<locals>.<listcomp>.<listcomp>  s1    ???W[Aq1ua!e,,???r%   r   )r@   )r   r   s    @r#   r   z3test_coverage_union_reduce_axis.<locals>.<listcomp>  s4    RRRA????eAhh???RRRr%   r   rI   r   r   r+   rK   rL   )r@   r   r   r    r   r!   )rO   r"   s     r#   test_coverage_union_reduce_axisr     s    RRqRRRD'4888Ffh''''''1555F<4'1555F<4'2666F<4r%   c                     t          g d          } t          g d          }t          j        dk    r?t          j        | |          }t          j        | |g          }t          ||d           d S t          j        t          j        d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S )N)r+   r+   r+   r   r   r   )r   r+   r   )r   )g?r+   )r   r+   )r   r   r   r   Tr~   z6CoverageUnion cannot process incorrectly noded inputs.r)   )	r   r   r   r   multipolygonsr   r   r0   GEOSException)r   otherresultr:   s       r#   &test_coverage_union_overlapping_inputsr     s   >>>??G>>>??Ez))'77('5)9::DAAAAAA ]!J
 
 
 	3 	3 "7E222		3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   B55B9<B9zgeom_1, geom_2c                      g | ]}t           |gS  )r   )r   non_polygons     r#   r   r   3  s    AAAg{AAAr%   c                 *    g | ]}t           D ]}||gS r   )non_polygon_types)r   non_polygon_1non_polygon_2s      r#   r   r   5  sD       .   
&   r%   c                 h   t           j        dk    r҈fd |           } |          }t          |          dk    rT||k    rNt                      5  t          j        | |          }d d d            n# 1 swxY w Y   | |          k    sJ d S t          j        t           j        d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S t          j        t           j        d          5  t          j        | |           d d d            d S # 1 swxY w Y   d S )Nr   c                     t          | d          r/| j        s(t                      }| j        D ]}| |          z  }|S | j                            d                              dd          hS )NgeomsMulti
LinearRing
LineString)hasattris_emptysetr   r   lstripreplace)rF   gtsparteffective_geom_typess      r#   r   zDtest_coverage_union_non_polygon_inputs.<locals>.effective_geom_types>  s~    tW%% dm ee J 6 6D//555CC
N))'22::<VVWWr%   r+   z Overlay input is mixed-dimensionr)   z)Unhandled geometry type in CoverageUnion.)r   r   lenr	   r   r   r0   r   )geom_1geom_2geom_types_1geom_types_2r   r   s        @r#   &test_coverage_union_non_polygon_inputsr   0  sM    z))	X 	X 	X 	X 	X ,+F33++F33|!!ll&B&B!! @ @ /??@ @ @ @ @ @ @ @ @ @ @ @ @ @ @  #7#7#?#???????%-O   7 7 &vv6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 ]!)T
 
 
 	3 	3 "66222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s6   A66A:=A:4CCCD''D+.D+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                 `    t          j        | |          }t          j        ||          sJ d S ro   )r   	union_allr5   )rF   r-   r:   r"   s       r#   test_union_all_precr   Z  s8    z ty999F>&(+++++++r%   c                      t          j        dddd          t          j        dddd          g} t          j        | d          }t          j        | d          }t          j        ||          sJ d S )	Nr   r   r   r   r   r   r+   r,   )r   r   unary_unionr   r5   )r   r"   r:   s      r#   test_uary_union_aliasr     st    [c1a(('+ac2*F*FGE !444F !444H>&(+++++++r%   c                      t          j        d          5  t          j        t          t          d            d d d            d S # 1 swxY w Y   d S )Nz>positional argument `grid_size` for `difference` is deprecatedr)   )r   deprecated_callr   r   r
   r   r%   r#   $test_difference_deprecate_positionalr     s    		N
 
 
 / / 	5%.../ / / / / / / / / / / / / / / / / /   !AAAc                      t          j        d          5  t          j        t          t          d            d d d            d S # 1 swxY w Y   d S )Nz@positional argument `grid_size` for `intersection` is deprecatedr)   )r   r   r   intersectionr
   r   r%   r#   &test_intersection_deprecate_positionalr     s    		P
 
 
 1 1 	UE40001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1r   c                      t          j        d          5  t          j        t          t          gd            d d d            d S # 1 swxY w Y   d S )Nz?positional argument `axis` for `intersection_all` is deprecatedr)   )r   r   r   intersection_allr
   r   r%   r#   *test_intersection_all_deprecate_positionalr     s    		O
 
 
 7 7 	 %6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7   "AA	A	c                      t          j        d          5  t          j        t          t          d            d d d            d S # 1 swxY w Y   d S )NzHpositional argument `grid_size` for `symmetric_difference` is deprecatedr)   )r   r   r   symmetric_differencer
   r   r%   r#   .test_symmetric_difference_deprecate_positionalr     s    		X
 
 
 9 9 	$UE48889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9r   c                      t          j        d          5  t          j        t          t          gd            d d d            d S # 1 swxY w Y   d S )NzGpositional argument `axis` for `symmetric_difference_all` is deprecatedr)   )r   r   r   symmetric_difference_allr
   r   r%   r#   2test_symmetric_difference_all_deprecate_positionalr     s    		W
 
 
 ? ? 	(%>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?r   c                      t          j        d          5  t          j        t          t          d            d d d            d S # 1 swxY w Y   d S )Nz9positional argument `grid_size` for `union` is deprecatedr)   )r   r   r   unionr
   r   r%   r#   test_union_deprecate_positionalr     s    		I
 
 
 * * 	eUD)))* * * * * * * * * * * * * * * * * *r   c                  B   t          j        d          5  t          j        t          t          gd            d d d            n# 1 swxY w Y   t          j        d          5  t          j        t          t          gd d            d d d            d S # 1 swxY w Y   d S )Nz=positional argument `grid_size` for `union_all` is deprecatedr)   zJpositional arguments `grid_size` and `axis` for `union_all` are deprecated)r   r   r   r   r
   r   r%   r#   #test_union_all_deprecate_positionalr     s)   		M
 
 
 0 0 	5%.$///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
	
 
 
 6 6 	5%.$555	6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s#   "AAA$#BBBc                      t          j        dddd          t          j        dddd          g} t          j        d          5  t          j        | d            d d d            d S # 1 swxY w Y   d S )Nr   r+   r   zApositional argument `axis` for `coverage_union_all` is deprecatedr)   )r   r   r   r   r   )rO   s    r#   ,test_coverage_union_all_deprecate_positionalr     s    K1a##W[Aq!%<%<=D		Q
 
 
 / / 	"4.../ / / / / / / / / / / / / / / / / /s   A''A+.A+)LnumpyrS   r   r   r   r   r   shapely.testingr   shapely.tests.commonr   r   r	   r
   r   markfilterwarnings
pytestmarkarrayr   get_type_idGeometryTypeGEOMETRYCOLLECTIONall_single_typesr   r   r   r   SET_OPERATIONSr   r   r   REDUCE_SET_OPERATIONSREDUCE_SET_OPERATIONS_PRECr   r.   disjoint_subset_union_allr   r?   get_dimensionsr   parametrizer$   r2   r;   r@   rC   rG   rP   rW   r_   ra   re   ri   rk   rm   rq   rs   ru   rx   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r#   <module>r      s
         9 9 9 9 9 9 9 9 9 9 3 3 3 3 3 3 Q Q Q Q Q Q Q Q Q Q Q Q Q Q[''E 
 28I&&Wi   w9%%)=)PPR   M	 w34%w'CD&   '0'-@B 
:%%w466N		*G,IJ 
 GK1aGK1aGK1aGK1b"	  BHY''Wi   $:G$:9$E$E$JK 
 i((00+ + 10 )(+  00* * 10* .//00iii00X X 10 10 0/X  eeAqkk**-/DEE, , FE +*, -/DEE( ( FE( -/DEE	  	  FE	  -/DEE5 5 FE5 %%((33-/DEE. . FE 43. %%((33-/DEE. . FE 43. -/DEE( ( FE( eeAqkk**-/DEEF F FE +*F eeAqkk**-/DEEE E FE +*E
 -/IJJ, , KJ, -/IJJ  KJ
 eeAqkk**-/IJJq!f--, , .- KJ +*, -/IJJ	  	  KJ	  %%((33-/IJJ. . KJ 43. %%((33-/IJJ. . KJ 43. eeAqkk**-/IJJS S KJ +*S eeAqkk**> > +*>$
  
  
 3 3 3$ AA/@AAA .  
 
3 3
 
3>  W[c1a((+'+ac2*F*FGG
 	
& W[c1a((+'+ac2*F*FGG
 	
& W[c1a((+'+ac2*F*FGGNNNOO	
 W[c1a((+'+ac2*F*FGGAAABB	
 W[c1a((+'+ac2*F*FGGII	
g8; ;x, ,y; ;x,
, , ,/ / /1 1 17 7 79 9 9? ? ?* * *	6 	6 	6/ / / / /r%   