
    vj&                     r   d dl mZmZ d dlmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ erd dlmZmZ eZnd	 Zd d
lmZ  G d de      Z ede	      Z G d d      Z G d d      Z G d d      ZdedefdZ  ed      Z! ed      Z" G d dee!e"f         Z#de$de$de%fdZ&y)     )wrapsupdate_wrapper)	signature	isbuiltincurrentframe)TypeVarCallablecastTYPE_CHECKINGAny)isa)warn)UserDict)multidispatchDispatchErrorRETURN)overloadr   c                     | S N )xs    ;/DATA/.local/lib/python3.12/site-packages/cadquery/utils.py<lambda>r      s        )multimethodc                   0    e Zd ZdZd Zdedef   ddfdZy)r   z1
        Multidispatch without register.
        c                    t               j                  j                  j                  |j                        }t        |t              r|S t        t        j                  |       |      }t               |_        g |_        i |_        |S r   )r   f_backf_localsget__name__
isinstancer   r   dict__new__setpendinggenerics
signatures)clsfunchomonymselfs       r   r$   zmultidispatch.__new__   sd    "n++4488GG';/!$,,s"3T:D5DLDM DOKr   r*   .returnNc                 :    d| vr|| d<   y | j                  |       y )Nr   )register)r,   r*   s     r   __init__zmultidispatch.__init__,   s    ~Rd#r   )r!   
__module____qualname____doc__r$   r	   r   r0   r   r   r   r   r      s(    			$#v+!6 	$4 	$r   r   	TCallable)boundc                   "    e Zd Zd ZdedefdZy)deprecate_kwargc                      || _         || _        y r   )name	new_value)r,   r9   r:   s      r   r0   zdeprecate_kwarg.__init__7   s    	"r   fr-   c                 N     t               fd       }t        t        |      S )Nc                       t              j                  | i |}j                  |j                  vr*t	        dj                   dj
                   t                | i |S )NzDefault value of z$ will change in the next release to )r   bindr9   kwargsr   r:   FutureWarning)argsr?   f_sig_boundr;   r,   s      r   wrappedz)deprecate_kwarg.__call__.<locals>.wrapped=   sl     ,)A,++T<V<Kyy 2 22'		{2VW[WeWeVfg!
 d%f%%r   r   r
   r4   r,   r;   rC   s   `` r   __call__zdeprecate_kwarg.__call__<   s(    	q
	& 

	& Iw''r   Nr!   r1   r2   r0   r4   rF   r   r   r   r7   r7   6   s    #
() (	 (r   r7   c                       e Zd Zd Zy)	deprecatec                 .    t              fd       }|S )Nc                  N    t        j                   dt                | i |S )Nz% will be removed in the next release.)r   r!   r@   )rA   r?   r;   s     r   rC   z#deprecate.__call__.<locals>.wrappedO   s+     AJJ<DE}Ud%f%%r   )r   rE   s    ` r   rF   zdeprecate.__call__N   s     	q	& 
	& r   N)r!   r1   r2   rF   r   r   r   rI   rI   M   s    r   rI   c                   "    e Zd Zd ZdedefdZy)deprecate_kwarg_namec                      || _         || _        y r   )r9   new_name)r,   r9   rO   s      r   r0   zdeprecate_kwarg_name.__init__c   s    	 r   r;   r-   c                 N     t               fd       }t        t        |      S )Nc                      j                   |v r+t        dj                    dj                   dt                | i |S )NzKwarg <z> will be removed. Please use <>)r9   r   rO   r@   )rA   r?   r;   r,   s     r   rC   z.deprecate_kwarg_name.__call__.<locals>.wrappedi   sJ     yyF"dii[(GVWX!
 d%f%%r   rD   rE   s   `` r   rF   zdeprecate_kwarg_name.__call__h   s(    	q	& 
	& Iw''r   NrG   r   r   r   rM   rM   b   s    !
() (	 (r   rM   r;   r-   c                     t        |       rd}|S | j                  rt        | j                        nd}| j                  j                  |z
  }|S )Nr   )r   __defaults__len__code__co_argcount)r;   rv
n_defaultss      r   	get_arityrZ   w   sF    | I -.NNS(
ZZ##j0Ir   KVc                        e Zd ZU dZeeee   f   ed<    fdZ	dedef fdZ
edeeee   f   fd       Z fd	Zdefd
Z xZS )BiDictz$
    Bi-directional dictionary.
    _invc                 2    i | _         t        |   |i | y r   )r_   superr0   )r,   rA   r?   	__class__s      r   r0   zBiDict.__init__   s    	$)&)r   kvc                     t         |   ||       || j                  v r| j                  |   j                  |       y |g| j                  |<   y r   )ra   __setitem__r_   append)r,   rc   rd   rb   s      r   rf   zBiDict.__setitem__   sB    Aq!		>IIaL"3DIIaLr   r-   c                     | j                   S r   )r_   )r,   s    r   invz
BiDict.inv   s     yyr   c                 V    t         |           | j                  j                          y r   )ra   clearr_   )r,   rb   s    r   rk   zBiDict.clear   s    		r   c                     | j                   j                  |      }|| j                  v r1| j                  |   }|j                  |       |s| j                  |= y y y r   )datapopr_   remove)r,   rc   rd   ri   s       r   __delitem__zBiDict.__delitem__   sS    IIMM! 		>))A,CJJqM IIaL  r   )r!   r1   r2   r3   r#   r\   listr[   __annotations__r0   rf   propertyri   rk   rp   __classcell__)rb   s   @r   r^   r^      sn     q$q'z
*Q 1  T!T!W*%  
!Q !r   r^   objrA   c                 V    t        | t        t        t        t           df   |            S )zu
    Replacement for the instance_of method of typish, which
    now uses the isa method of the runtype package.
    .)r   r
   tupletyper   )ru   rA   s     r   instance_ofry      s%    
 sDtCy#~.566r   N)'	functoolsr   r   inspectr   r   r   typingr   r	   r
   r   r   runtyper   warningsr   collectionsr   r   r   _multidispatchr   r   r   classmethodmypyclassmethodr4   r7   rI   rM   intrZ   r[   r\   r^   objectboolry   r   r   r   <module>r      s    + 6 6 > >      I!O "O'$ $2 Kx0	( (.	 	*( (*	 	s 	 CLCL,!Xad^ ,!^7V 7F 7t 7r   