o
    h                     @   s  d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlZd dlZd dlZd dlmZmZ ejdd Zejd	d
 Zdd Zdd Zdd Zdd ZG dd dZdd Zejdg ddd Zejdg ddd Zejdddgd d! Zejdddgd"d# Z ed$d% Z!d&d' Z"d(d) Z#d*d+ Z$ejd,ej%d-e&d.fi fd/d0ej%d-e&d.ifd1gfi fd/d0d1gifd/d2ej%d-e'd.ifd/d3ej%d-e'd.ifgd4d5 Z(dS )6    N)cleandoc)chain)ascii_lettersdigits)mock)multithreading_enabledrequires_geosc                   c   sB    t jjtjddd dV  W d    d S 1 sw   Y  d S )Ngeos_version)   
      )new3.10.1)r   patchobjectshapelylib r   r   R/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/tests/test_misc.pymocked_geos_version   s   "r   c                   c   s    dt jd< d V  t jd= d S )N1SPHINX_DOC_BUILD)osenvironr   r   r   r   sphinx_doc_build   s   
r   c                   C   s   t tjtsJ d S N)
isinstancer   __version__strr   r   r   r   test_version   s   r   c                  C   sT   dj tj } tj}tdd |D r"|d  r|t}|t}|| ks(J d S )Nz{}.{}.{}c                 s       | ]}|  V  qd S r   isalpha.0cr   r   r   	<genexpr>%       z$test_geos_version.<locals>.<genexpr>)	formatr   r	   geos_version_stringany	isnumericrstripr   r   )expectedactualr   r   r   test_geos_version    s   

r0   c                  C   sx   dj tjtj  } tjd\}}tdd |D r*|d  r%|t	}|t
}|t
}| d| | ks:J d S )Nz{}.{}.{}-CAPI-{}.{}.{}z-CAPI-c                 s   r    r   r!   r#   r   r   r   r&   8   r'   z)test_geos_capi_version.<locals>.<genexpr>r(   )r)   r   r	   geos_capi_versiongeos_capi_version_stringsplitr+   r,   r-   r   r   )r.   actual_geos_versionactual_geos_api_versionr   r   r   test_geos_capi_version-   s   




r6   c                   C      dS )zKDocstring that will be mocked.
    A multiline.

    Some description.
    Nr   r   r   r   r   funcA       r8   c                   @   s   e Zd Zdd ZdS )	SomeClassc                 C   r7   )zWDocstring that will be mocked.
        A multiline.

        Some description.
        Nr   )selfr   r   r   r8   J   r9   zSomeClass.funcN)__name__
__module____qualname__r8   r   r   r   r   r:   I   s    r:   c                  K   s2   dj di | }tjd d dkrt|d S |S )NzDocstring that will be mocked.
{indent}A multiline.

{indent}.. note:: 'func' requires at least GEOS {version}.

{indent}Some description.
{indent}   )r
      
r   )r)   sysversion_infor   )kwdsdocr   r   r   expected_docstringR   s   rF   version)3.10.0r   z3.9.2c                 C   s"   t | t}|  |tu sJ d S r   )r   r8   rG   r   wrappedr   r   r   test_requires_geos_okb   s   rK   )z3.10.2z3.11.0z3.11.1c                 C   sZ   t | t}ttjj |  W d    n1 sw   Y  |jt| ddks+J d S )N    rG   indent)	r   r8   pytestraisesr   errorsUnsupportedGEOSVersionError__doc__rF   rI   r   r   r   test_requires_geos_not_oki   s
   rT   z3.9.0rH   c                 C   s&   t | t}|jt| ddksJ dS )z8The requires_geos decorator always adapts the docstring.rL   rM   N)r   r8   rS   rF   rG   r   r   rJ   r   r   r   test_requires_geos_doc_buildr   s   rV   c                 C   s(   t | tj}|jt| ddksJ dS )z@The requires_geos decorator adjusts methods docstrings correctlyz        rM   N)r   r:   r8   rS   rF   rU   r   r   r   test_requires_geos_methodz   s   rW   c                 O   s2   t || D ]}t|dr| |d< |  S qd S )N__setitem__r   )r   valueshasattr)valueargskwargsargr   r   r   set_first_element   s   
r_   c                  C   s^   t jdtd} tt td|  W d    n1 sw   Y  d| d< | d dks-J d S )Nr   dtype*   r   )npemptyr   rO   rP   
ValueErrorr_   arrr   r   r   &test_multithreading_enabled_raises_arg   s   ri   c                  C   sT   t jdtd} tt td| d W d    n1 sw   Y  | jjs(J d S )Nr`   ra   rc   rg   )	rd   re   r   rO   rP   rf   r_   flags	writeablerg   r   r   r   (test_multithreading_enabled_raises_kwarg   s
   rl   c                  C   sZ   t jdtd} d| j_tt td|  W d    n1 s w   Y  | jjr+J d S )Nr`   ra   Frc   )	rd   re   r   rj   rk   rO   rP   rf   r_   rg   r   r   r   *test_multithreading_enabled_preserves_flag   s   rm   zargs,kwargsr`   ra   r   ar   outwherec                 C   s*   t dg| R i |}|d dksJ d S )Nrc   r   )r_   )r\   r]   resultr   r   r   test_multithreading_enabled_ok   s   rr   ))r   rB   inspectr   	itertoolsr   stringr   r   unittestr   numpyrd   rO   r   shapely.decoratorsr   r   fixturer   r   r   r0   r6   r8   r:   rF   markparametrizerK   rT   rV   rW   r_   ri   rl   rm   re   floatr   rr   r   r   r   r   <module>   s\    

	





