o
    Zh                     @   s&  d Z ddlZddlZddlZddlmZmZmZmZm	Z	m
Z
 ddlmZ G dd deZejjep5ejdkdd	ejjejd
koHejdd dkdd	dd Zejjedd	dd Zejdddgdd Zejjedd	ejdg ddd Zdd Zdd Zed kre  dS dS )!z
Tests for dochelpers.py
    N)	getargtxtgetargspecfromtextgetdocgetobjgetsignaturefromtext	isdefined)PY2c                   @   s   e Zd ZdddZdS )Test   c                 C   s   d S N )selfxyr   r   a/var/www/html/lang_env/lib/python3.10/site-packages/spyder_kernels/utils/tests/test_dochelpers.pymethod   s   zTest.methodN)r
   )__name__
__module____qualname__r   r   r   r   r   r	      s    r	   ntzOnly works on Linux and Mac)reasondarwinr
   )      zFails on Mac with Python 3.8c                   C   s   t tjddgksJ t tjrJ ttdddddksJ t tr%J tdd	d
s-J tds3J tdd	d
r;J tddksCJ tdrIJ tddksQJ tddksYJ dS )zTest dochelpers.zx, zy=2zFunction of builtins module(...)zReturn a new list containing all items from the iterable in ascending order.

A custom key function can be supplied to customize the sort order, and the
reverse flag can be set to request the result in descending order.sorted)Znoteargspec	docstringnamez
numpy.takeT)Zforce_import
__import__zzzglobalszglobals().keysz+scipy.signal.zscipy.signalz4.4N)r   r	   r   __init__r   r   r   r   r   r   r   r   test_dochelpers    s    
r$   zFails in Python 2c                  C   sD   ddl } t| j}|d }|r|dkr|dsJ |d s J dS )z
    Test that we can get documentation for objects for which Python can't get a
    signature directly because it gives an error.

    This is a regression test for issue spyder-ide/spyder#21148
    r   Nr   r   (r   )numpyr   where
startswith)npdoc	signaturer   r   r   test_no_signature@   s
   
r,   ztext, name, expected	foo(x, y)foo(x, y)r.    r0   c                 C      t | ||ks	J d S r   r   textr   expectedr   r   r   test_getsignaturefromtext_py2O   s   r8   zDon't work in Python 2)r-   r1   )zfoo(x)r2   z(x))zfoo(x = {})r2   z(x = {}))z1a(x, y)r2   r2   )z
a1(x, y=2)r2   (x, y=2))
   ΣΔ(x, y)u   ΣΔr0   )r:   r2   r0   )u   ΣΔ(x, y) foo(a, b)r2   r0   )z1a(x, y) foo(a, b)r2   z(a, b))u   foo(a, b = 1)

ΣΔ(x, y=2)r2   z
(a, b = 1))u   1a(a, b = 1)

ΣΔ(x, y=2)r2   r9   )u   2(3 + 5) 3*(99) ΣΔ(x, y)r2   r0   )r0   r2   r2   )zfoo (a=1, b = 2)r2   r2   )foo()r2   r2   )r;   r/   r2   c                 C   r3   r   r4   r5   r   r   r   test_getsignaturefromtextZ   s   "r<   c                  C   s"   dd } t | j}|dksJ dS )zv
    Test that we can get at least one signature from an object with multiple
    ones declared in its docstring.
    c                   S      dS )z7
        foo(x, y) foo(a, b)
        foo(c, d)
        Nr   r   r   r   r   r/          z test_multisignature.<locals>.foor0   N)r   __doc__r/   r+   r   r   r   test_multisignature   s   
rA   c                  C   s$   dd } t | j}|dsJ dS )zZ
    Test that we can get signatures splitted into multiple lines in a
    docstring.
    c                   S   r=   )zE
        foo(x,
            y)

        This is a docstring.
        Nr   r   r   r   r   r/      r>   z%test_multiline_signature.<locals>.fooz(x, N)r   r?   r(   r@   r   r   r   test_multiline_signature   s   
rB   __main__)r?   ossysZpytestZspyder_kernels.utils.dochelpersr   r   r   r   r   r   Zspyder_kernels.py3compatr   objectr	   markZskipifr   platformversion_infor$   r,   Zparametrizer8   r<   rA   rB   r   mainr   r   r   r   <module>   sF    

 