
    eC                     v    d Z ddlmZ ddlmZ ddlZerddlmZ ej                  ddZ	d Z
d	 Zd
 Zd Zd Zy)z2Provides utility functions for use by QtPy itself.    )wraps)TYPE_CHECKINGN)QAction)wrapperc                2     |di |}| |_         ||_         |S )zDCreate a __cause__-chained wrapper error for a missing optional dep. )	__cause__)
attr_errorimport_errorr   wrapper_kwargs
qtpy_errors        -/usr/lib/python3/dist-packages/qtpy/_utils.py _wrap_missing_optional_dep_errorr      s'     *>*J'L'J    c                 N    t        d|d|       }| |v rt        |fi ||    S |S )z5Wrap AttributeError in a special error if it matches.zmodule z has no attribute )AttributeErrorr   )namemodule_nameoptional_namesr
   s       r   getattr_missing_optional_depr       sL    
+ 24(;J ~/
T"
 	
 r   c                     |s|s| j                         S t        |d   |       r;t        |      dk(  r|s|d   j                         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kwargss      r   possibly_static_execr!   -   st    xxz$q'3t9>&7<<>!tAw||T!"X000388T$V$$r   c                     |s|s| j                         S t        |d   |       r;t        |      dk(  r|s|d   j                         S  |d   j                   |dd i |S  | j                   |i |S r   )exec_r   r   r   s      r   possibly_static_exec_r$   ;   st    yy{$q'3t9>&7==?"tAw}}d12h1&11399d%f%%r   c                   ddl m} ddlm}m} t        d t        |t        ||j                  t        t        f|t        g      D              rt        |      dk(  r!|\  }} || |      }|j                  |       |S t        |      dk(  r#|\  }}}	 || ||	      }|j                  |       |S t        |      dk(  r|\  }}}	}
 || ||	|
|      }|S  || g| S t        d t        ||t        ||j                  t        t        f|t        g      D              rt        |      dk(  r)|\  }}} || ||      }|j                   ||             |S t        |      dk(  r+|\  }}}}	 || |||	      }|j                   ||             |S t        |      d	k(  r|\  }}}}	}
 || |||	|
 ||            }|S  || g| S  || g| S )
zIRe-order arguments of `addAction` to backport compatibility with Qt>=6.3.r   )QObject)QIconQKeySequencec              3   :   K   | ]  \  }}t        ||        y wNr   .0argts      r   	<genexpr>zadd_action.<locals>.<genexpr>T   s#      C 	3            c              3   :   K   | ]  \  }}t        ||        y wr*   r+   r,   s      r   r0   zadd_action.<locals>.<genexpr>n   s#      C 	3r1      )qtpy.QtCorer&   
qtpy.QtGuir'   r(   allzipstrStandardKeyintbytesr   setShortcut)selfold_add_actionr   r&   r'   r(   textshortcutactionreceivermembericons               r   
add_actionrH   I   s-   #.  |77cB	
  t9>!ND(#D$/Fx(  Y!^'+$D(H#D$9Fx(  Y!^/3,D(Hf#D$&(KF  "$...
 |77cB	
  t9>#' D$#D$5F|H56" ! Y!^-1*D$(#D$h?F|H56  Y!^592D$(F#X&F  "$...$&&&r   c                 H     t         t                f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                  D    |v r|j                        |<    | i |S r*   )pop)r   r    from_kwarg_namefuncto_kwarg_names     r   _from_kwarg_name_to_kwarg_name_zEstatic_method_kwargs_wrapper.<locals>._from_kwarg_name_to_kwarg_name_   s0     f$$*JJ$?F=!T$V$$r   )staticmethodr   )rM   rL   rN   rO   s   ``` r   static_method_kwargs_wrapperrQ      s+     
4[%  %
 +*r   )__doc__	functoolsr   typingr   qtpyqtpy.QtWidgetsr   QtModuleNotInstalledErrorr   r   r!   r$   rH   rQ   r   r   r   <module>rX      sD    9    & **	
%&G'T+r   