o
    i&                     @   s"   d dl Z G dd dZdd ZdS )    Nc                   @   s   e Zd ZdZdS )Invalidz)Marker object for not serializable-objectN)__name__
__module____qualname____doc__ r   r   T/home/ubuntu/.local/lib/python3.10/site-packages/espnet2/utils/get_default_kwargs.pyr      s    r   c                    s6    fdd t | j}dd | D } |}|S )zGet the default values of the input function.

    Examples:
        >>> def func(a, b=3):  pass
        >>> get_default_kwargs(func)
        {'b': 3}

    c                    s   t | tu r t| S t| tr t| S t| trDtdd | D s'tS i }|  D ]\}} |}|tt	j
jfvrA|||< q-|S t| trcg }| D ]} |}|tu r[t  S || qM|S | t	j
jd fv rm| S t| ttttttfrz| S tS )Nc                 s   s    | ]}t |tV  qd S )N)
isinstancestr).0kr   r   r   	<genexpr>   s    z@get_default_kwargs.<locals>.yaml_serializable.<locals>.<genexpr>)typetuplelistr	   setdictallr   itemsinspect	Parameteremptyappendfloatintcomplexboolr
   bytes)valueretvalr   vv2yaml_serializabler   r   r#      s6   


z-get_default_kwargs.<locals>.yaml_serializablec                 S   s   i | ]}|j |jqS r   )namedefault)r   pr   r   r   
<dictcomp>6   s    z&get_default_kwargs.<locals>.<dictcomp>)r   	signature
parametersvalues)funcparamsdatar   r"   r   get_default_kwargs   s
   
#r.   )r   r   r.   r   r   r   r   <module>   s    