a
    DfC                     @   sp   d Z ddlmZ ddlmZ ddlZer4ddlmZ ejdddZ	d	d
 Z
dd Zdd Zdd Zdd ZdS )z2Provides utility functions for use by QtPy itself.    )wraps)TYPE_CHECKINGN)QAction)wrapperc                K   s   |f i |}| |_ ||_ |S )zDCreate a __cause__-chained wrapper error for a missing optional dep.)	__cause__)
attr_errorZimport_errorr   Zwrapper_kwargsZ
qtpy_error r   X/nfs/NAS7/SABIOD/METHODE/ermites/ermites_venv/lib/python3.9/site-packages/qtpy/_utils.py _wrap_missing_optional_dep_error   s    r
   c                 C   s4   t d|d| }| |v r0t|fi ||  S |S )z5Wrap AttributeError in a special error if it matches.zmodule z has no attribute )AttributeErrorr
   )namemodule_nameZoptional_namesr   r   r   r	   getattr_missing_optional_dep    s    r   c                 O   sf   |s|s|   S t|d | rVt|dkr:|s:|d   S |d j |dd i |S | j |i |S zCCall `self.exec` when `self` is given or a static method otherwise.r      N)exec
isinstancelenclsargskwargsr   r   r	   possibly_static_exec-   s    r   c                 O   sf   |s|s|   S t|d | rVt|dkr:|s:|d   S |d j |dd i |S | j |i |S r   )exec_r   r   r   r   r   r	   possibly_static_exec_;   s    r   c             
   G   s  ddl m} ddlm}m} tdd t|t||jtt	f|t
gD rt|dkrp|\}}|| |}|| nht|dkr|\}}}	|| ||	}|| n:t|dkr|\}}}	}
|| ||	|
|}n|| g|R  S |S td	d t||t||jtt	f|t
gD rt|dkr>|\}}}|| ||}||| n|t|dkrv|\}}}}	|| |||	}||| nDt|d
kr|\}}}}	}
|| |||	|
||}n|| g|R  S |S || g|R  S )zIRe-order arguments of `addAction` to backport compatibility with Qt>=6.3.r   )QObject)QIconQKeySequencec                 s   s   | ]\}}t ||V  qd S Nr   .0argtr   r   r	   	<genexpr>T   s   zadd_action.<locals>.<genexpr>         c                 s   s   | ]\}}t ||V  qd S r   r   r    r   r   r	   r$   n   s      )Zqtpy.QtCorer   Z
qtpy.QtGuir   r   allzipstrZStandardKeyintbytesr   ZsetShortcut)selfZold_add_actionr   r   r   r   textZshortcutactionZreceivermemberZiconr   r   r	   
add_actionI   sr    



	r2   c                    s    t t fdd}|S )z
    Helper function to manage `from_kwarg_name` to `to_kwarg_name` kwargs name changes in static methods.

    Makes static methods accept the `from_kwarg_name` kwarg as `to_kwarg_name`.
    c                     s$    |v r|  |< | i |S r   )pop)r   r   from_kwarg_namefuncto_kwarg_namer   r	   _from_kwarg_name_to_kwarg_name_   s    zEstatic_method_kwargs_wrapper.<locals>._from_kwarg_name_to_kwarg_name_)staticmethodr   )r6   r5   r7   r8   r   r4   r	   static_method_kwargs_wrapper   s    r:   )__doc__	functoolsr   typingr   ZqtpyZqtpy.QtWidgetsr   ZQtModuleNotInstalledErrorr
   r   r   r   r2   r:   r   r   r   r	   <module>   s   J