a
    J5dW                     @   s  d dl Z d dl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oejdd dkdddd Zdd ZG dd dZ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'd0e(d1fi fd2d3e
j'd0e(d1ifd4gfi fd2d3d4gifd2d5e
j'd0e)d1ifd2d6e
j'd0e)d1ifgd7d8 Z*dS )9    N)chain)ascii_lettersdigits)mock)multithreading_enabledrequires_geosc                   c   s>   t jjtjddd dV  W d    n1 s00    Y  d S )Ngeos_version)         )new3.7.1)r   patchobjectshapelylib r   r   S/var/www/html/django/DPS/env/lib/python3.9/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1Z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 rD|d  r:|t}|t}|| ksPJ d S )Nz{}.{}.{}c                 s   s   | ]}|  V  qd S r   isalpha.0cr   r   r   	<genexpr>$       z$test_geos_version.<locals>.<genexpr>)	formatr   r   Zgeos_version_stringany	isnumericrstripr   r   )expectedactualr   r   r   test_geos_version   s    

r,   win   )r	   r
   z3GEOS_C_API_VERSION broken for GEOS 3.7.x on Windows)reasonc                  C   sx   dj tjtj  } tjd\}}tdd |D rT|d  rJ|t	}|t
}|t
}| d| | kstJ d S )Nz{}.{}.{}-CAPI-{}.{}.{}z-CAPI-c                 s   s   | ]}|  V  qd S r   r   r    r   r   r   r#   ;   r$   z)test_geos_capi_version.<locals>.<genexpr>r%   )r&   r   r   Zgeos_capi_versionZgeos_capi_version_stringsplitr'   r(   r)   r   r   )r*   Zactual_geos_versionZactual_geos_api_versionr   r   r   test_geos_capi_version,   s    




r1   c                   C   s   dS )zKDocstring that will be mocked.
    A multiline.

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

        Some description.
        Nr   )selfr   r   r   r2   M   s    zSomeClass.funcN)__name__
__module____qualname__r2   r   r   r   r   r3   L   s   r3   zDocstring that will be mocked.
{indent}A multiline.

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

{indent}Some description.
{indent}version)z3.7.0r   z3.6.2c                 C   s   t | t}|tu sJ d S r   )r   r2   r8   r   wrappedr   r   r   test_requires_geos_ok^   s    r;   )z3.7.23.8.0z3.8.1c                 C   s\   t | t}ttjj |  W d    n1 s60    Y  |jtj	| ddksXJ d S )N    r8   indent)
r   r2   pytestraisesr   errorsZUnsupportedGEOSVersionError__doc__expected_docstringr&   r9   r   r   r   test_requires_geos_not_okd   s    $rE   z3.6.0r<   c                 C   s(   t | t}|jtj| ddks$J dS )z8The requires_geos decorator always adapts the docstring.r=   r>   N)r   r2   rC   rD   r&   r8   r   r   r:   r   r   r   test_requires_geos_doc_buildm   s    rG   c                 C   s*   t | tj}|jtj| ddks&J dS )z@The requires_geos decorator adjusts methods docstrings correctlyz        r>   N)r   r3   r2   rC   rD   r&   rF   r   r   r   test_requires_geos_methodu   s    rH   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    
rP   c                  C   s^   t jdtd} tt td|  W d    n1 s80    Y  d| d< | d dksZJ d S )Nr   Zdtype*   r   )npemptyr   r@   rA   
ValueErrorrP   Zarrr   r   r   &test_multithreading_enabled_raises_arg   s
    (rX   c                  C   sT   t jdtd} tt td| d W d    n1 s:0    Y  | jjsPJ d S )NrQ   rR   rS   rW   )	rT   rU   r   r@   rA   rV   rP   flags	writeablerW   r   r   r   (test_multithreading_enabled_raises_kwarg   s    *r[   c                  C   sZ   t jdtd} d| j_tt td|  W d    n1 s@0    Y  | jjrVJ d S )NrQ   rR   FrS   )	rT   rU   r   rY   rZ   r@   rA   rV   rP   rW   r   r   r   *test_multithreading_enabled_preserves_flag   s
    (r\   zargs,kwargsrQ   rR   r   ar   outwherec                 C   s*   t dg| R i |}|d dks&J d S )NrS   r   )rP   )rM   rN   resultr   r   r   test_multithreading_enabled_ok   s    ra   )+r   sys	itertoolsr   stringr   r   Zunittestr   numpyrT   r@   r   Zshapely.decoratorsr   r   Zfixturer   r   r   r,   markZskipifplatform
startswithr   r1   r2   r3   rD   Zparametrizer;   rE   rG   rH   rP   rX   r[   r\   rU   floatr   ra   r   r   r   r   <module>   s`   


		





