
    ,j&                        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&dS )     )wrapsupdate_wrapper)	signature	isbuiltincurrentframe)TypeVarCallablecastTYPE_CHECKINGAny)isa)warn)UserDict)multidispatchDispatchErrorRETURN)overloadr   c                     | S N )xs    H/DATA/AppData/hermes/venv/lib/python3.11/site-packages/cadquery/utils.py<lambda>r      s         )multimethodc                   8    e Zd ZdZd Zdedef         ddfdZdS )r   z1
        Multidispatch without register.
        c                 &   t                      j        j                            |j                  }t          |t                    r|S t          t          	                    |           |          }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__   sq    "nn+488GGG';// !$,,s"3"3T::D55DLDM DOKr   r*   .returnNc                 F    d| vr|| d<   d S |                      |           d S )Nr   )register)r,   r*   s     r   __init__zmultidispatch.__init__,   s0    ~~Rd#####r   )r!   
__module____qualname____doc__r$   r	   r   r0   r   r   r   r   r      sX        	 		 	 		$#v+!6 	$4 	$ 	$ 	$ 	$ 	$ 	$r   r   	TCallable)boundc                   $    e Zd Zd ZdedefdZdS )deprecate_kwargc                 "    || _         || _        d S r   )name	new_value)r,   r9   r:   s      r   r0   zdeprecate_kwarg.__init__7   s    	"r   fr-   c                 f     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=   sw     ,)A,,+T<V<<Ky 222g	ggW[Wegg!  
 1d%f%%%r   r   r
   r4   r,   r;   rC   s   `` r   __call__zdeprecate_kwarg.__call__<   sD    	q
	& 
	& 
	& 
	& 
	& 

	& Iw'''r   Nr!   r1   r2   r0   r4   rF   r   r   r   r7   r7   6   sE        # # #
() (	 ( ( ( ( ( (r   r7   c                       e Zd Zd ZdS )	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   s5     AJEEE}UUU1d%f%%%r   )r   rE   s    ` r   rF   zdeprecate.__call__N   s3    	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dS )deprecate_kwarg_namec                 "    || _         || _        d S r   )r9   new_name)r,   r9   rO   s      r   r0   zdeprecate_kwarg_name.__init__c   s    	 r   r;   r-   c                 f     t                     fd            }t          t          |          S )Nc                  r    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   sX     yF""XdiXXXXX!  
 1d%f%%%r   rD   rE   s   `` r   rF   zdeprecate_kwarg_name.__call__h   sD    	q	& 	& 	& 	& 	& 
	& Iw'''r   NrG   r   r   r   rM   rM   b   sE        ! ! !
() (	 ( ( ( ( ( (r   rM   r;   r-   c                     t          |           rd}n,| 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   sH    || 1 -.NAS(((
Z#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                 H    i | _          t                      j        |i | d S r   )r_   superr0   )r,   rA   r?   	__class__s      r   r0   zBiDict.__init__   s,    	$)&)))))r   kvc                     t                                          ||           || j        v r"| j        |                             |           d S |g| j        |<   d S r   )ra   __setitem__r_   append)r,   rc   rd   rb   s      r   rf   zBiDict.__setitem__   sY    Aq!!!	>>IaL"""""3DIaLLLr   r-   c                     | j         S r   )r_   )r,   s    r   invz
BiDict.inv   s     yr   c                 z    t                                                       | j                                         d S r   )ra   clearr_   )r,   rb   s    r   rk   zBiDict.clear   s,    	r   c                     | j                             |          }|| j        v r.| j        |         }|                    |           |s| j        |= d S d S d S r   )datapopr_   remove)r,   rc   rd   ri   s       r   __delitem__zBiDict.__delitem__   sd    IMM! 	>>)A,CJJqMMM  !IaLLL >! !r   )r!   r1   r2   r3   r#   r\   listr[   __annotations__r0   rf   propertyri   rk   rp   __classcell__)rb   s   @r   r^   r^      s           q$q'z
* * * * *Q 1       T!T!W*%    X    
!Q ! ! ! ! ! ! ! !r   r^   objrA   c                 x    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56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      sm   + + + + + + + + 6 6 6 6 6 6 6 6 6 6 > > > > > > > > > > > > > >                                   !$IIIIIIII!OO "kO''''''$ $ $ $ $ $ $ $2 GKx000	( ( ( ( ( ( ( (.	 	 	 	 	 	 	 	*( ( ( ( ( ( ( (*	 	s 	 	 	 	 GCLLGCLL,! ,! ,! ,! ,!Xad^ ,! ,! ,!^7V 7F 7t 7 7 7 7 7 7r   