o
    bĎi'                     @   s>  d dl Z d dlmZ d dlZd dlZeedededdddfZ	e
ddZeg dZeg dZeg d	Zejg d
g dgdZeddgZeddggZeg dg dgZee
ddeddggZedZedZedZedZedZ edZ!edZ"e#egZ$e%egZ&eegZ'e(egZ)e
dddZ*eg dZ+eg dZ,eg dZ-ejg dg dgdZ.ed d!gZ/ed d!ggZ0eg d"g d#gZ1ee*e+gZ2ed$Z3ed%Z4ed&Z5ed'Z6ed(Z7ed)Z8ed*Z9e#e4gZ:e%e5gZ;ee6gZ<e(e5gZ=ed+Z>ed,Z?ed-Z@ed.ZAed/ZBed0ZCed1ZDed2ZEee>e?gZFed3ZGed4ZHed5ZIed6ZJed7ZKed8ZLed9ZMe#eHgZNe%eIgZOeeJgZPe(eIgZQed:ZRed;ZSed<ZTed=ZUed>ZVed?ZWed@ZXedAZYeeReSgZZedBZ[edCZ\edDZ]edEZ^edFZ_edGZ`edHZae#e\gZbe%e]gZcee^gZde(e]gZeeeeeeeeeeeeeee e!e"e$e&e'e)fZfe*e+e,e-e.e/e0e1e2e3e4e5e6e7e8e9e:e;e<e=fZge>e?e@eAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQfZheReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeefZiedRdJdKZjej  eejkejkfejkejkfgZlW d   n	1 sw   Y  edLdM ZmdNdO ZnG dPdQ dQZodS )S    N)contextmanager            )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   )holesr   )r	   r   ) @r   )皙@r   )r   r   )r   r   r   3   )4   r   )1   r   zGEOMETRYCOLLECTION EMPTYzPOINT EMPTYzLINESTRING EMPTYzPOLYGON EMPTYzMULTIPOINT EMPTYzMULTILINESTRING EMPTYzMULTIPOLYGON EMPTY)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   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GEOMETRYCOLLECTION Z EMPTYzPOINT Z EMPTYzLINESTRING Z EMPTYzPOLYGON Z EMPTYzMULTIPOINT Z EMPTYzMULTILINESTRING Z EMPTYzMULTIPOLYGON Z EMPTYzPOINT M (2 3 5)z"LINESTRING M (0 0 1, 1 0 2, 1 1 3)z0LINEARRING M (0 0 1, 1 0 2, 1 1 3, 0 1 2, 0 0 1)z/POLYGON M ((0 0 1, 2 0 2, 2 2 3, 0 2 2, 0 0 1))zjPOLYGON M ((0 0 1, 0 10 2, 10 10 3, 10 0 2, 0 0 1),
                  (2 2 6, 2 4 5, 4 4 4, 4 2 5, 2 2 6))zMULTIPOINT M ((0 0 3), (1 2 5))z"MULTILINESTRING M ((0 0 3, 1 2 5))zMULTIPOLYGON M (((0 0 1, 2 0 2, 2 2 3, 0 2 2, 0 0 1)),
       ((2.1 2.1 1.1, 2.2 2.1 1.2, 2.2 2.2 1.3, 2.1 2.2 1.4, 2.1 2.1 1.1)))zGEOMETRYCOLLECTION M EMPTYzPOINT M EMPTYzLINESTRING M EMPTYzPOLYGON M EMPTYzMULTIPOINT M EMPTYzMULTILINESTRING M EMPTYzMULTIPOLYGON M EMPTYzPOINT ZM (2 3 4 5)z)LINESTRING ZM (0 0 4 1, 1 0 4 2, 1 1 4 3)z;LINEARRING ZM (0 0 1 8, 1 0 2 7, 1 1 3 6, 0 1 2 9, 0 0 1 8)z:POLYGON ZM ((0 0 4 1, 2 0 4 2, 2 2 4 3, 0 2 4 2, 0 0 4 1))ztPOLYGON ZM ((0 0 4 1, 0 10 4 2, 10 10 4 3, 10 0 4 2, 0 0 4 1),
       (2 2 4 6, 2 4 4 5, 4 4 4 4, 4 2 4 5, 2 2 4 6))z$MULTIPOINT ZM ((0 0 4 3), (1 2 4 5))z'MULTILINESTRING ZM ((0 0 4 3, 1 2 4 5))zMULTIPOLYGON ZM (((0 0 4 1, 2 0 4 2, 2 2 4 3, 0 2 4 2, 0 0 4 1)),
       ((2.1 2.1 4 1.1, 2.2 2.1 4 1.2, 2.2 2.2 4 1.3, 2.1 2.2 4 1.4, 2.1 2.1 4 1.1)))zGEOMETRYCOLLECTION ZM EMPTYzPOINT ZM EMPTYzLINESTRING ZM EMPTYzPOLYGON ZM EMPTYzMULTIPOINT ZM EMPTYzMULTILINESTRING ZM EMPTYzMULTIPOLYGON ZM EMPTYTc                 c   sH    | rt jdd d V  W d    d S 1 sw   Y  d S d V  d S )Nignore)invalid)nperrstate)	condition r#   P/home/jeff/fluffinator/venv/lib/python3.10/site-packages/shapely/tests/common.pyignore_invalid   s   "
r%   c                 c   sX    t j| k r't  tjd|d d V  W d    d S 1 s w   Y  d S d V  d S )Nr   )category)shapelygeos_versionwarningscatch_warningsfilterwarnings)r(   r&   r#   r#   r$   ignore_warnings   s   

"
r,   c                 C   sJ   | j r#t| dkr#tjdk r| jdkrdS tjdk r#| jdr#dS dS )z6Older GEOS versions have various issues with "equals".r   )r   r   r   GeometryCollectionT)r      r   MultiF)is_emptyr'   get_num_geometriesr(   	geom_type
startswith)geomr#   r#   r$   )equal_geometries_abnormally_yield_unequal   s   r5   c                   @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )	ArrayLikezO
    Simple numpy Array like class that implements the
    ufunc protocol.
    c                 C   s   t || _d S Nr    asarray_array)selfarrayr#   r#   r$   __init__  s   zArrayLike.__init__c                 C   s
   t | jS r7   )lenr:   r;   r#   r#   r$   __len__
     
zArrayLike.__len__c                 C   s
   | j | S r7   )r:   )r;   keyr#   r#   r$   	__getitem  rA   zArrayLike.__getitemc                 C   s
   | j  S r7   )r:   __iter__r?   r#   r#   r$   rD     rA   zArrayLike.__iter__c                 C   s   t | jS r7   r8   r?   r#   r#   r$   	__array__  s   zArrayLike.__array__c                    s2   |dkr fdd|D }  ||i |S tS )N__call__c                    s"   g | ]}t | jr|jn|qS r#   )
isinstance	__class__r:   ).0argr?   r#   r$   
<listcomp>  s    z-ArrayLike.__array_ufunc__.<locals>.<listcomp>)rH   NotImplemented)r;   ufuncmethodinputskwargsr#   r?   r$   __array_ufunc__  s   
zArrayLike.__array_ufunc__N)
__name__
__module____qualname____doc__r=   r@   _ArrayLike__getitemrD   rE   rQ   r#   r#   r#   r$   r6     s    r6   )T)pr)   
contextlibr   numpyr    r'   pointsarangeboxpoint_polygon_testdataPointpoint
LineStringline_string
LinearRinglinear_ringPolygonpolygonpolygon_with_hole
MultiPointmulti_pointMultiLineStringmulti_line_stringmultipolygonsmulti_polygonr-   geometry_collectionfrom_wktemptyempty_pointempty_line_stringempty_polygonempty_multi_pointempty_multi_line_stringempty_multi_polygonmultipointsmulti_point_emptymultilinestringsmulti_line_string_emptymulti_polygon_emptygeometrycollectionsgeometry_collection_emptypoint_zline_string_zlinear_ring_z	polygon_zpolygon_with_hole_zmulti_point_zmulti_line_string_zmulti_polygon_zgeometry_collection_zempty_geometry_collection_zempty_point_zempty_line_string_zempty_polygon_zempty_multi_point_zempty_multi_line_string_zempty_multi_polygon_zmulti_point_empty_zmulti_line_string_empty_zmulti_polygon_empty_zgeometry_collection_empty_zpoint_mline_string_mlinear_ring_m	polygon_mpolygon_with_hole_mmulti_point_mmulti_line_string_mmulti_polygon_mgeometry_collection_mempty_geometry_collection_mempty_point_mempty_line_string_mempty_polygon_mempty_multi_point_mempty_multi_line_string_mempty_multi_polygon_mmulti_point_empty_mmulti_line_string_empty_mmulti_polygon_empty_mgeometry_collection_empty_mpoint_zmline_string_zmlinear_ring_zm
polygon_zmpolygon_with_hole_zmmulti_point_zmmulti_line_string_zmmulti_polygon_zmgeometry_collection_zmempty_geometry_collection_zmempty_point_zmempty_line_string_zmempty_polygon_zmempty_multi_point_zmempty_multi_line_string_zmempty_multi_polygon_zmmulti_point_empty_zmmulti_line_string_empty_zmmulti_polygon_empty_zmgeometry_collection_empty_zm	all_typesall_types_zall_types_mall_types_zmr%   nanline_string_nanr,   r5   r6   r#   r#   r#   r$   <module>   s   





































 
	
