o
    »¼tfð  ã                   @   s(   d dl mZ dd„ ZG dd„ deƒZdS )é    )Ú	TraitTypec                 C   sn   | j jd| j j… }g }g }|D ]}||v r| || ¡ q| |¡ q|r3td | j jd |¡¡ƒ‚| |Ž S )z·
    Call callback with only the args it wants from args

    Example
    >>> def cb(a):
    ...    return a * 5

    >>> print(call_with_asked_args(cb, {'a': 4, 'b': 8}))
    20
    Nz-{}() missing required positional argument: {}z, )Ú__code__Úco_varnamesÚco_argcountÚappendÚ	TypeErrorÚformatÚco_nameÚjoin)ÚcallbackÚargsZasked_arg_namesZasked_arg_valuesZmissing_argsZasked_arg_name© r   úc/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/jupyter_server_proxy/utils.pyÚcall_with_asked_args   s   ÿÿr   c                   @   s   e Zd ZdZdZdd„ ZdS )ÚCallablezwA trait which is callable.
    Notes
    -----
    Classes are callable, as are instances
    with a __call__() method.z
a callablec                 C   s   t |ƒr|S |  ||¡ d S )N)ÚcallableÚerror)ÚselfÚobjÚvaluer   r   r   Úvalidate/   s   zCallable.validateN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z	info_textr   r   r   r   r   r   &   s    r   N)Z	traitletsr   r   r   r   r   r   r   Ú<module>   s    "