Ë
    ~ìqj>  ã                   óž   — d Z ddlZddlZddlmZmZ ddlmZmZ ddl	m
Z
 ddlZddlmZ ddlmZ  G d„ d	«      Zd
„ Zefdee   dee   fd„Zy)z!Decorators for Shapely functions.é    N)ÚCallableÚIterable)Ú	lru_cacheÚwraps)Úunwrap)Úlib©ÚUnsupportedGEOSVersionErrorc                   ó   — e Zd ZdZd„ Zd„ Zy)Úrequires_geosz,Decorator to require a minimum GEOS version.c                 óŽ   — |j                  d«      dk7  rt        d«      ‚t        d„ |j                  d«      D «       «      | _        y)z8Create a decorator that requires a minimum GEOS version.ú.é   z.Version must be <major>.<minor>.<patch> formatc              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)Úint)Ú.0Úxs     úN/var/www/html/truck-me/venv/lib/python3.12/site-packages/shapely/decorators.pyú	<genexpr>z)requires_geos.__init__.<locals>.<genexpr>   s   è ø€ Ò@¨œS ŸVÑ@ùs   ‚N)ÚcountÚ
ValueErrorÚtupleÚsplitÚversion)Úselfr   s     r   Ú__init__zrequires_geos.__init__   s:   € à�=‰=˜Ó Ò"ÜÐMÓNÐNÜÑ@¨W¯]©]¸3Ó-?Ô@Ó@ˆ�ó    c                 óú  ‡‡— t         j                  | j                  k\  }t        j                  j                  d«      dk(  }|r|s‰S  dj                  ‰j                  g| j                  ¢­Ž Š|rt        ‰«      ˆfd„«       }nt        ‰«      ˆfd„«       }|j                  }|rU|j                  d«      dz   }d}	 |||z      d	k(  r|d
z  }nnŒ|j                  ddj                  d	|z  ‰«      d
«      |_	        |S )zReturn the wrapped function.ÚSPHINX_DOC_BUILDÚ1z%'{}' requires at least GEOS {}.{}.{}.c                  ó   •—  ‰| i |¤ŽS r   © )ÚargsÚkwargsÚfuncs     €r   Úwrappedz'requires_geos.__call__.<locals>.wrapped$   s   ø€ á˜TÐ, VÑ,Ð,r   c                  ó   •— t        ‰«      ‚r   r	   )r$   r%   Úmsgs     €r   r'   z'requires_geos.__call__.<locals>.wrapped*   s   ø€ ä1°#Ó6Ð6r   z

r   r   ú é   z

{}.. note:: {}

)r   Úgeos_versionr   ÚosÚenvironÚgetÚformatÚ__name__r   Ú__doc__ÚfindÚreplace)	r   r&   Úis_compatibleÚis_doc_buildr'   ÚdocÚpositionÚindentr)   s	    `      @r   Ú__call__zrequires_geos.__call__   s  ù€ ä×(Ñ(¨D¯L©LÑ8ˆÜ—z‘z—~‘~Ð&8Ó9¸SÑ@ˆÙ¡ØˆKà<Ð5×<Ñ<Ø�M‰Mð
Ø ŸL™Lò
ˆñ ä�4‹[ó-ó ñ-ô
 �4‹[ó7ó ð7ð �o‰oˆÙà—x‘x Ó'¨!Ñ+ˆHàˆFØØ�x &Ñ(Ñ)¨SÒ0Ø˜a‘K‘Fàð	 ð
 "Ÿk™kØÐ0×7Ñ7¸¸f¹ÀcÓJÈAóˆGŒOð ˆr   N)r1   Ú
__module__Ú__qualname__r2   r   r:   r#   r   r   r   r      s   „ Ù6òAó%r   r   c                 ó.   ‡ — t        ‰ «      ˆ fd„«       }|S )zØEnable multithreading.

    To do this, the writable flags of object type ndarrays are set to False.

    NB: multithreading also requires the GIL to be released, which is done in
    the C extension (ufuncs.c).
    c            	      ór  •— | D �cg c]3  }t        |t        j                  «      sŒ|j                  t        k(  sŒ2|‘Œ5 c}|j                  «       D ��cg c]8  \  }}|dvr/t        |t        j                  «      r|j                  t        k(  r|‘Œ: c}}z   }|D �cg c]  }|j                  j                  ‘Œ }}	 |D ]  }d|j                  _        Œ  ‰| i |¤Žt        ||«      D ]  \  }}||j                  _        Œ S c c}w c c}}w c c}w # t        ||«      D ]  \  }}||j                  _        Œ w xY w)N>   ÚoutÚwhereF)	Ú
isinstanceÚnpÚndarrayÚdtypeÚobjectÚitemsÚflagsÚ	writeableÚzip)	r$   r%   ÚargÚnameÚ
array_argsÚarrÚ	old_flagsÚold_flagr&   s	           €r   r'   z'multithreading_enabled.<locals>.wrappedI   s)  ø€ ð  ö
Ø¤:¨c´2·:±:Õ#>À3Ç9Á9ÔPVÓCVŠCò
ð $Ÿ\™\›^÷
á��cØÐ+Ñ+Ü˜3¤§
¡
Ô+Ø—	‘	œVÒ#ò	 ó
ñ
ˆ
ð 5?Ö?¨S�S—Y‘Y×(Ó(Ð?ˆ	Ð?ð	/Ø!ò ,�Ø&+�—	‘	Õ#ð,á˜Ð( Ñ(ä!$ Z°Ó!;ò /‘��XØ&.�—	‘	Õ#ñ/ùò
ùó
ùò @øô "% Z°Ó!;ò /‘��XØ&.�—	‘	Õ#ñ/ús'   †C?¦C?ºC?Á=DÂD
Â:D Ä'D6)r   )r&   r'   s   ` r   Úmultithreading_enabledrP   @   s"   ø€ ô ˆ4ƒ[ó/ó ð/ð& €Nr   Úshould_be_kwargsÚcategoryc                 ó$   ‡ ‡— dt         fˆˆ fd„}|S )aS  Show warning if positional arguments are used that should be keyword.

    Parameters
    ----------
    should_be_kwargs : Iterable[str]
        Names of parameters that should be passed as keyword arguments.
    category : type[Warning], optional (default: DeprecationWarning)
        Warning category to use for deprecation warnings.

    Returns
    -------
    callable
        Decorator function that adds positional argument deprecation warnings.

    Examples
    --------
    >>> from shapely.decorators import deprecate_positional
    >>> @deprecate_positional(['b', 'c'])
    ... def example(a, b, c=None):
    ...     return a, b, c
    ...
    >>> example(1, 2)  # doctest: +SKIP
    DeprecationWarning: positional argument `b` for `example` is deprecated. ...
    (1, 2, None)
    >>> example(1, b=2)  # No warnings
    (1, 2, None)
    r&   c                 óv  •‡ ‡‡‡	— t        ‰ «      j                  }|j                  d |j                   }t	        |«      D ��ci c]  \  }}||“Œ
 }}}‰D �cg c]  }||v r||   |f‘Œ c}Š‰s‰ S t        ‰«      d   Š	t        d«      dt        fˆˆ fd„«       Št        ‰ «      ˆ
ˆ ˆˆ	fd„«       }|S c c}}w c c}w )Nr   é
   Ún_argsc                 óX  •— ‰D ��cg c]  \  }}|| k  sŒ|‘Œ }}}t        |«      dk(  rd|d   › d�}d}d}nRd}d}t        |«      dk(  rd	j                  d
„ |D «       «      }n'dj                  d„ |d d D «       «      }|d|d   › d�z  }d|› d|› d‰j                  › d|› d|› d�S c c}}w )Nr+   ú`r   Ú ÚisÚsÚarer   z and c              3   ó(   K  — | ]
  }d |› d �–— Œ y­w©rX   Nr#   ©r   Úus     r   r   zLdeprecate_positional.<locals>.decorator.<locals>.make_msg.<locals>.<genexpr>¡   s   è ø€ Ò+C¸¨a°¨s°!¬HÑ+Cùó   ‚z, c              3   ó(   K  — | ]
  }d |› d �–— Œ y­wr^   r#   r_   s     r   r   zLdeprecate_positional.<locals>.decorator.<locals>.make_msg.<locals>.<genexpr>£   s   è ø€ Ò(E°a¨1¨Q¨C¨q¬Ñ(Eùra   éÿÿÿÿz, and `zpositional argumentr*   z for `z` z( deprecated. Please use keyword argumentz	 instead.)ÚlenÚjoinr1   )	rV   ÚidxrK   ÚusedÚargs_txtÚplrÚisareÚdeprecate_positionsr&   s	          €€r   Úmake_msgz9deprecate_positional.<locals>.decorator.<locals>.make_msg•   sÚ   ø€ à*=×N™Y˜S $ÀÀvÃ’DÐNˆDÑNä�4‹y˜AŠ~Ø˜t A™w˜i q˜>�Ø�Ø‘à�Ø�Ü�t“9 ’>Ø&Ÿ|™|Ñ+C¸dÔ+CÓC‘Hà#Ÿy™yÑ(E¸4ÀÀ¸9Ô(EÓE�HØ '¨$¨r©(¨°1Ð 5Ñ5�Hð & c U¨!¨H¨:°V¸D¿M¹M¸?È"Ø�'ÐAÀ#ÀÀiðQðùó Os
   ‡B&•B&c                  ót   •—  ‰| i |¤Ž}t        | «      }|‰kD  rt        j                   ‰|«      ‰d¬«       |S )Nr   )rR   Ú
stacklevel)rd   ÚwarningsÚwarn)r$   r%   ÚresultÚnrR   r&   rl   Ú	warn_froms       €€€€r   Úwrapperz8deprecate_positional.<locals>.decorator.<locals>.wrapper«   s;   ø€ á˜4Ð* 6Ñ*ˆFä�D“	ˆAØ�9Š}Ü—‘™h q›k°HÈÕKàˆMr   )	r   Ú__code__Úco_varnamesÚco_argcountÚ	enumerateÚminr   r   r   )r&   ÚcodeÚ	pos_namesrf   rK   Úname_to_idxrt   rk   rl   rs   rR   rQ   s   `      @@@€€r   Ú	decoratorz'deprecate_positional.<locals>.decorator€   sÞ   ü€ Ü�d‹|×$Ñ$ˆð ×$Ñ$Ð%7 t×'7Ñ'7Ð8ˆ	ä2;¸IÓ2F×G¡Y S¨$�t˜S‘yÐGˆÑGð )ö
àØ�{Ñ"ð ˜Ñ Ò%ò
Ðñ #ØˆKô Ð+Ó,¨QÑ/ˆ	ä	�2‹ð	œSõ 	ó 
ð	ô* 
ˆt‹ö	ó 
ð	ð ˆùó_ Hùò
s   ÁB0ÁB6)r   )rQ   rR   r}   s   `` r   Údeprecate_positionalr~   `   s   ù€ ð@5œö 5ðn Ðr   )r2   r-   ro   Úcollections.abcr   r   Ú	functoolsr   r   Úinspectr   ÚnumpyrB   Úshapelyr   Úshapely.errorsr
   r   rP   ÚDeprecationWarningÚstrÚtypeÚWarningr~   r#   r   r   ú<module>r‰      sV   ðÙ 'ã 	Û ß .ß &Ý ã å Ý 6÷.ñ .òbðD 1ñWØ˜s‘mðWà�7‰môWr   