
    ^h                    v    S r SSKJr  SSKrSSKJrJrJr  SSKJ	r	J
r
Jr  SSKJrJr  SS jr\" S	\S
9rSS jrg)z&Useful decorators for Traitlets users.    )annotationsN)	Parameter	Signature	signature)AnyTypeTypeVar   )	HasTraits	Undefinedc                :    U [         :X  a  [        R                  $ U $ )z:Get default argument value, given the trait default value.)r   r   empty)values    T/home/james-whalen/.local/lib/python3.13/site-packages/traitlets/utils/decorators.py_get_defaultr      s    #y09??;e;    T)boundc                B   U R                  5       R                  5        VVs/ s H4  u  pUR                  S5      (       a  M  U[        UR                  5      4PM6     nnn[        U R                  5      n[        UR                  5      n/ nSn/ nSn	UR                   H  n
[        R                  " UR                  U
   5      nUR                  [        R                  L d  UR                  [        R                  L a  UR                  U5        Ms  UR                  [        R                  L a  UnM  UR                  [        R                   L a  UR                  U5        M  UR                  [        R"                  L d  M  Un	M     U	c  [%        SU  S35      e/ nXSS -  nUb  UR                  U5        X-  nUU VVs/ s H%  u  pX;  d  M  [        U[        R                   US9PM'     snn-  nUR                  U	5        ['        U5      U l        U $ s  snnf s  snnf )zYReturn a decorated class with a constructor signature that contain Trait names as kwargs._NzThe zh constructor does not take **kwargs, which means that the signature can not be expanded with trait names   )kinddefault)class_traitsitems
startswithr   default_valuer   __init__list
parameterscopyr   r   POSITIONAL_ONLYPOSITIONAL_OR_KEYWORDappendVAR_POSITIONALKEYWORD_ONLYVAR_KEYWORDRuntimeErrorr   __signature__)clsnamer   traitsold_signatureold_parameter_namesold_positional_parametersold_var_positional_parameterold_keyword_only_parametersold_var_keyword_parameterparameter_name	parameternew_parametersr   s                 r   signature_has_traitsr6      s
    ++-3355KDs# 	2|E//015   cll+M}778 "#' "$ $'22IIm66~FG	 NNi777~~!@!@@%,,Y7^^y777+4(^^y555'..y9^^y444(1%# 3* !(3%  A
 	
 N 33N $/:; 1N ##MD* 	F	$Y33WE# N 34!.1CJCls   HH HH)r   r   returnr   )r*   Type[T]r7   r8   )__doc__
__future__r   r!   inspectr   r   r   typingr   r   r	   	traitletsr   r   r   r   r6    r   r   <module>r?      s6    , "  3 3 % % ,<
 Cy!Cr   