
    AHj
                        d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
mZ d dlmZ e	rd dlmZ dZdd	Zdd
ZddZddZy)    )annotationsN)partial)isawaitable	signature)TYPE_CHECKINGAnyCallable)
active_app)App   c                v   	 | j                   S # t        $ r Y nw xY wt        | t              rBt	        | j
                        t        | j                        t        | j                        z   z
  }n2t        | d      r| j                  } t	        |       dz
  }nt	        |       }	 || _         |S # t        $ r Y |S w xY w),Count the number of parameters in a callable__self__   )_param_countAttributeError
isinstancer   _count_parametersfunclenargskeywordshasattr__func__	TypeError)r   param_counts     I/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/_callback.pycount_parametersr      s        $ '		2		NS//
 
z	"}}'-1'-'   s    	"B+ +	B87B8c                >    t        t        |       j                        S )r   )r   r   
parameters)r   s    r   r   r   (   s    y))**    c                f   K   d}t        |       } | |d|  }t        |      r
| d{   }|S 7 w)Invoke a callback with an arbitrary number of parameters.

    Args:
        callback: The callable to be invoked.

    Returns:
        The return value of the invoked callable.
    TN)r   r   )callbackparams_rich_traceback_guardparameter_countresults        r   _invoker)   -   sC      !&x0Ov./0F6M s   &1/1c                |   K   	 t        j                         bdj                  v rTd fd}t	        j
                         j                  t        |      }	 t         g|  d{   |j                          S t         g|  d{   S # t        $ r dY w xY w7 9# |j                          w xY w7 ,w)r#   Ndebugc                 Z     J  j                   j                  d dt         d       y)z(Log a message regarding a slow callback.Nz	Callback z is still pending after z seconds)logwarningINVOKE_TIMEOUT_WARNING)appr$   s   r   log_slowzinvoke.<locals>.log_slowQ   s3    ?"?GGOOH:%=>T=UU]^r!   )returnNone)
r
   getLookupErrorfeaturesasyncioget_running_loop
call_laterr/   r)   cancel)r$   r%   r1   call_later_handler0   s   `   @r   invoker<   >   s     nn
 7cll2	 $446AA"H
	' 3F33$$&X////+  " 4$$&/s]   B<B ?B<B% )B#*B% - B<B:B<B B<B  B<#B% %B77B<)r   r	   r2   int)r$   r	   r%   objectr2   r   )r$   zCallable[..., Any]r%   r>   r2   r   )
__future__r   r7   	functoolsr   inspectr   r   typingr   r   r	   textualr
   textual.appr   r/   r   r   r)   r<    r!   r   <module>rF      s<    "   * / /   .+
""0r!   