o
    Zqi                     @   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   ^/home/app/PaddleOCR-VL/.venv_paddleocr/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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 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	   Zgeos_version_stringany	isnumericrstripr   r   )expectedactualr   r   r   test_geos_version    s   

r.   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	   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   




r0   c                   C      dS )zKDocstring that will be mocked.
    A multiline.

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

        Some description.
        Nr   )selfr   r   r   r2   J   r3   zSomeClass.funcN)__name__
__module____qualname__r2   r   r   r   r   r4   I   s    r4   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   r@   version)3.10.0r   z3.9.2c                 C   s"   t | t}|  |tu sJ d S r   )r   r2   rA   r   wrappedr   r   r   test_requires_geos_okb   s   rE   )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    rA   indent)	r   r2   pytestraisesr   errorsZUnsupportedGEOSVersionError__doc__r@   rC   r   r   r   test_requires_geos_not_oki   s
   rM   z3.9.0rB   c                 C   s&   t | t}|jt| ddksJ dS )z8The requires_geos decorator always adapts the docstring.rF   rG   N)r   r2   rL   r@   rA   r   r   rD   r   r   r   test_requires_geos_doc_buildr   s   rO   c                 C   s(   t | tj}|jt| ddksJ dS )z@The requires_geos decorator adjusts methods docstrings correctlyz        rG   N)r   r4   r2   rL   r@   rN   r   r   r   test_requires_geos_methodz   s   rP   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   
rX   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   Zdtype*   r   )npemptyr   rI   rJ   
ValueErrorrX   Zarrr   r   r   &test_multithreading_enabled_raises_arg   s   r`   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 )NrY   rZ   r[   r_   )	r\   r]   r   rI   rJ   r^   rX   flags	writeabler_   r   r   r   (test_multithreading_enabled_raises_kwarg   s
   rc   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 )NrY   rZ   Fr[   )	r\   r]   r   ra   rb   rI   rJ   r^   rX   r_   r   r   r   *test_multithreading_enabled_preserves_flag   s   rd   zargs,kwargsrY   rZ   r   ar   outwherec                 C   s*   t dg| R i |}|d dksJ d S )Nr[   r   )rX   )rU   rV   resultr   r   r   test_multithreading_enabled_ok   s   ri   ))r   r<   inspectr   	itertoolsr   stringr   r   Zunittestr   numpyr\   rI   r   Zshapely.decoratorsr   r   Zfixturer   r   r   r.   r0   r2   r4   r@   markZparametrizerE   rM   rO   rP   rX   r`   rc   rd   r]   floatr   ri   r   r   r   r   <module>   s\    

	





