o
    Jf                     @   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ejjejdobejdkpbejdd dkdd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'd0d1 Z(ej d2ej)d3e*d4fi fd5d6ej)d3e*d4ifd7gfi fd5d6d7gifd5d8ej)d3e+d4ifd5d9ej)d3e+d4ifgd:d; Z,dS )<    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.7.1)r   patchobjectshapelylib r   r   c/home/deployuser/azure_apps/autowriter/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   win)r
      r2      )r
   r   z=GEOS_C_API_VERSION broken for GEOS 3.6.6 and 3.7.x on Windows)reasonc                  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&   =   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   




r:   c                   C      dS )zKDocstring that will be mocked.
    A multiline.

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

        Some description.
        Nr   )selfr   r   r   r<   O   r=   zSomeClass.funcN)__name__
__module____qualname__r<   r   r   r   r   r>   N   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}r3   )r
      
r   )r)   sysversion_infor   )kwdsdocr   r   r   expected_docstringW   s   	rI   version)z3.7.0r   z3.6.2c                 C   s   t | t}|tu sJ d S r   )r   r<   rJ   r   wrappedr   r   r   test_requires_geos_oki   s   rM   )z3.7.23.8.0z3.8.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    rJ   indent)	r   r<   pytestraisesr   errorsUnsupportedGEOSVersionError__doc__rI   rK   r   r   r   test_requires_geos_not_oko   s
   rW   z3.6.0rN   c                 C   s&   t | t}|jt| ddksJ dS )z8The requires_geos decorator always adapts the docstring.rO   rP   N)r   r<   rV   rI   rJ   r   r   rL   r   r   r   test_requires_geos_doc_buildx   s   rY   c                 C   s(   t | tj}|jt| ddksJ dS )z@The requires_geos decorator adjusts methods docstrings correctlyz        rP   N)r   r>   r<   rV   rI   rX   r   r   r   test_requires_geos_method   s   rZ   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   
rb   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   rR   rS   
ValueErrorrb   arrr   r   r   &test_multithreading_enabled_raises_arg   s   rl   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 )Nrc   rd   rf   rj   )	rg   rh   r   rR   rS   ri   rb   flags	writeablerj   r   r   r   (test_multithreading_enabled_raises_kwarg   s
   ro   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 )Nrc   rd   Frf   )	rg   rh   r   rm   rn   rR   rS   ri   rb   rj   r   r   r   *test_multithreading_enabled_preserves_flag   s   rp   zargs,kwargsrc   rd   r   ar   outwherec                 C   s*   t dg| R i |}|d dksJ d S )Nrf   r   )rb   )r_   r`   resultr   r   r   test_multithreading_enabled_ok   s   ru   )-r   rE   inspectr   	itertoolsr   stringr   r   unittestr   numpyrg   rR   r   shapely.decoratorsr   r   fixturer   r   r   r0   markskipifplatform
startswithr	   r:   r<   r>   rI   parametrizerM   rW   rY   rZ   rb   rl   ro   rp   rh   floatr   ru   r   r   r   r   <module>   sf    


	





