
    Ti                     `    d dl Z d dlmZ d dlZd dlZd dlmZ d Z ej	        edd          Z
dS )    N)islice)affine_transformc           	      J   | dS | j         rt          j        d          S | j        	 j        j        }n# t          $ r cY S w xY wd t          |t          |dd                    D             fd}t           |            d           \  }}t          ||          S )zCompute the oriented envelope (minimum rotated rectangle).

    This is a fallback implementation for GEOS < 3.12 to have the correct
    minimum area behaviour.
    NzPOLYGON EMPTYc              3   `   K   | ])\  }}|d          |d          z
  |d         |d         z
  fV  *dS )r      N ).0pt1pt2s      }/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/shapely/algorithms/_oriented_envelope.py	<genexpr>z._oriented_envelope_min_area.<locals>.<genexpr>   sW        C 
Q#a&#a&3q6/*         r   c            
   3      K   D ]X\  } }t          j        | dz  |dz  z             }| |z  ||z  }}| |}}t          	||||ddf          j        }|||||ddffV  Yd S )N   r   )mathsqrtr   envelope)
dxdylengthuxuyvxvytransf_rectedgeshulls
           r   _transformed_rectsz7_oriented_envelope_min_area.<locals>._transformed_rects!   s       	8 	8FB Yr1ur1u}--F&["v+BS"B +4"b"b!Q1GHHQK RRA 677777	8 	8r   c                     | d         j         S )Nr   )area)rs    r   <lambda>z-_oriented_envelope_min_area.<locals>.<lambda>2   s    adi r   )key)is_emptyshapelyfrom_wktconvex_hullexteriorcoordsAttributeErrorzipr   minr   )geometrykwargsr)   r   r   
inv_matrixr   r   s         @@r   _oriented_envelope_min_arear0   
   s     t 1000 D%    FF61d$;$;<<  E
8 8 8 8 8 8" ""4"4"6"6<O<OPPPKK444s   7 AAr   )r   	itertoolsr   numpynpr%   shapely.affinityr   r0   
frompyfunc&_oriented_envelope_min_area_vectorizedr   r   r   <module>r7      sz                - - - - - -)5 )5 )5X *7A* * & & &r   