U
    wy]                      @   s  d ddddddddd	d
dgZ ddlmZ ddlmZ ddlmZ ddlmZ dZ	dZ
e	e
fdd Ze	e
fddZefddZefddZefddZefddZefddZefdd Zefd!d"Zefd#d$Zefd%d&Zefd'd(Zefd)d*Zefd+d,Zd-efd.efd/efgd/efd0efd-efgd0efd/efd.efgd.efd-efd0efgd1Zd2d Zd3d Zzdd4lmZ W n ek
r   Y nX e Z e fd5dZ!zdd6lm!Z! W n ek
r   Y nX G d7d dZ"zdd8lm"Z" W n ek
r   Y nX G d9d	 d	eZ#d:d; Z$ed<d=d>d?d@gZ%G dAdB dBe&Z'e fe(e)he*e+e,fdCdDZ-dXdGdZ.dHdI Z/zddJlm/Z/ W n ek
r   Y nX dKdL Z0dYdNdOZ1dPdQ Z2dRdS Z3dTd
 Z4G dUd dZ5e Z6G dVdW dWZ7dMS )Zupdate_wrapperwrapsWRAPPER_ASSIGNMENTSWRAPPER_UPDATEStotal_ordering
cmp_to_key	lru_cachereducepartialpartialmethodsingledispatchsingledispatchmethod    )get_cache_token)
namedtuple)recursive_repr)RLock)
__module____name____qualname____doc____annotations__)__dict__c              	   C   sf   |D ]4}zt ||}W n tk
r*   Y qX t| || q|D ]}t | |t ||i  q>|| _| S N)getattrAttributeErrorsetattrupdateZ__wrapped__)wrapperwrappedassignedupdatedattrvalue r#   F/home/stadmin/Documents/SimTableSoftware/Python-3.8.0/Lib/functools.pyr   !   s    c                 C   s   t t| ||dS )Nr   r   r    )r	   r   r%   r#   r#   r$   r   ?   s     c                 C   s$   |  |}||kr|S | o"| |kS r   __lt__selfotherNotImplementedZ	op_resultr#   r#   r$   _gt_from_ltW   s    
r,   c                 C   s   |  |}|p| |kS r   r&   r(   r#   r#   r$   _le_from_lt^   s    
r-   c                 C   s   |  |}||kr|S | S r   r&   r(   r#   r#   r$   _ge_from_ltc   s    
r.   c                 C   s$   |  |}||kr|S | p"| |kS r   __le__r(   r#   r#   r$   _ge_from_lej   s    
r1   c                 C   s"   |  |}||kr|S |o | |kS r   r/   r(   r#   r#   r$   _lt_from_leq   s    
r2   c                 C   s   |  |}||kr|S | S r   r/   r(   r#   r#   r$   _gt_from_lex   s    
r3   c                 C   s$   |  |}||kr|S | o"| |kS r   __gt__r(   r#   r#   r$   _lt_from_gt   s    
r6   c                 C   s   |  |}|p| |kS r   r4   r(   r#   r#   r$   _ge_from_gt   s    
r7   c                 C   s   |  |}||kr|S | S r   r4   r(   r#   r#   r$   _le_from_gt   s    
r8   c                 C   s$   |  |}||kr|S | p"| |kS r   __ge__r(   r#   r#   r$   _le_from_ge   s    
r;   c                 C   s"   |  |}||kr|S |o | |kS r   r9   r(   r#   r#   r$   _gt_from_ge   s    
r<   c                 C   s   |  |}||kr|S | S r   r9   r(   r#   r#   r$   _lt_from_ge   s    
r=   r5   r0   r:   r'   )r'   r0   r5   r:   c                    sV    fddt D }|stdt|}t | D ]"\}}||kr.||_t || q. S )Nc                    s(   h | ] }t  |d t t|d k	r|qS r   )r   object).0opclsr#   r$   	<setcomp>   s      z!total_ordering.<locals>.<setcomp>z6must define at least one ordering operation: < > <= >=)_convert
ValueErrormaxr   r   )rB   ZrootsrootZopnameZopfuncr#   rA   r$   r      s    c                    s   G  fdddt }|S )Nc                       sZ   e Zd ZdgZdd Z fddZ fddZ fdd	Z fd
dZ fddZ	dZ
dS )zcmp_to_key.<locals>.Kobjc                 S   s
   || _ d S r   rH   )r)   rH   r#   r#   r$   __init__   s    zcmp_to_key.<locals>.K.__init__c                    s    | j |j dk S Nr   rI   r)   r*   mycmpr#   r$   r'      s    zcmp_to_key.<locals>.K.__lt__c                    s    | j |j dkS rK   rI   rL   rM   r#   r$   r5      s    zcmp_to_key.<locals>.K.__gt__c                    s    | j |j dkS rK   rI   rL   rM   r#   r$   __eq__   s    zcmp_to_key.<locals>.K.__eq__c                    s    | j |j dkS rK   rI   rL   rM   r#   r$   r0      s    zcmp_to_key.<locals>.K.__le__c                    s    | j |j dkS rK   rI   rL   rM   r#   r$   r:      s    zcmp_to_key.<locals>.K.__ge__N)r   r   r   	__slots__rJ   r'   r5   rO   r0   r:   __hash__r#   rM   r#   r$   K   s   rR   )r>   )rN   rR   r#   rM   r$   r      s    )r   c                 C   sZ   t |}|tkr>zt|}W qB tk
r:   tdd Y qBX n|}|D ]}| ||}qF|S )Nz0reduce() of empty sequence with no initial value)iter_initial_missingnextStopIteration	TypeError)ZfunctionZsequenceZinitialZitr"   Zelementr#   r#   r$   r      s    )r   c                       sF   e Zd ZdZ fddZdd Ze dd Zdd	 Zd
d Z	  Z
S )r	   )funcargskeywordsr   __weakref__c                   sZ   t |stdt|dr4|j| }|j|}|j}tt| | }||_||_||_|S )Nz#the first argument must be callablerX   )	callablerW   hasattrrY   rZ   rX   superr	   __new__)rB   rX   rY   rZ   r)   	__class__r#   r$   r_     s    


zpartial.__new__c                O   s   | j |}| j| j||S r   rZ   rX   rY   )r)   rY   rZ   r#   r#   r$   __call__$  s    
zpartial.__call__c                 C   s   t | j}t| jg}|dd | jD  |dd | j D  t | jdkrld| dd	| dS | dd	| dS )	Nc                 s   s   | ]}t |V  qd S r   )repr)r?   xr#   r#   r$   	<genexpr>,  s     z#partial.__repr__.<locals>.<genexpr>c                 s   s    | ]\}}| d |V  qdS )=Nr#   r?   kvr#   r#   r$   rf   -  s     	functoolsz
functools.(, ))
typer   rd   rX   extendrY   rZ   itemsr   join)r)   qualnamerY   r#   r#   r$   __repr__(  s    
zpartial.__repr__c                 C   s*   t | | jf| j| j| jpd | jp$d ffS r   )ro   rX   rY   rZ   r   r)   r#   r#   r$   
__reduce__2  s     zpartial.__reduce__c                 C   s   t |tstdt|dkr0tdt| |\}}}}t|rrt |trr|d k	r`t |trr|d k	rzt |tsztdt|}|d kri }nt|tk	rt|}|d kri }|| _|| _|| _	|| _
d S )Nz(argument to __setstate__ must be a tuple   zexpected 4 items in state, got zinvalid partial state)
isinstancetuplerW   lenr\   dictro   r   rX   rY   rZ   )r)   staterX   rY   kwds	namespacer#   r#   r$   __setstate__6  s4    
zpartial.__setstate__)r   r   r   rP   r_   rc   r   rt   rv   r   __classcell__r#   r#   r`   r$   r	     s   
	)r	   c                   @   s@   e Zd Zdd Zde_dd Zdd Zdd	d
Zedd Z	dS )r
   c                  O   s   t | dkr| ^}}} nV| s&tdnHd|krZ|d}| ^}} dd l}|jdtdd ntdt | d  t| } t|st|d	std
	|t
|tr|j|_|j|  |_|j||_n||_| |_||_d S )N   z8descriptor '__init__' of partialmethod needs an argumentrX   r   z0Passing 'func' as keyword argument is deprecated)
stacklevelz8type 'partialmethod' takes at least one argument, got %d   __get__z${!r} is not callable or a descriptor)rz   rW   popwarningswarnDeprecationWarningry   r\   r]   formatrx   r
   rX   rY   rZ   )rY   rZ   r)   rX   r   r#   r#   r$   rJ   \  s6    

 

zpartialmethod.__init__z#($self, func, /, *args, **keywords)c                 C   sN   d tt| j}d dd | j D }d}|j| jj| jj	| j
||dS )Nrm   c                 s   s   | ]\}}d  ||V  qdS )z{}={!r}N)r   rh   r#   r#   r$   rf     s   z)partialmethod.__repr__.<locals>.<genexpr>z*{module}.{cls}({func}, {args}, {keywords}))modulerB   rX   rY   rZ   )rr   maprd   rY   rZ   rq   r   ra   r   r   rX   )r)   rY   rZ   Zformat_stringr#   r#   r$   rt     s    

zpartialmethod.__repr__c                    s    fdd} j |_  |_|S )Nc                   s     j |} j| f j||S r   rb   )Zcls_or_selfrY   rZ   ru   r#   r$   _method  s    
z3partialmethod._make_unbound_method.<locals>._method)__isabstractmethod__Z_partialmethod)r)   r   r#   ru   r$   _make_unbound_method  s    z"partialmethod._make_unbound_methodNc                 C   s   t | jdd }d }|d k	rd|||}|| jk	rdt|f| j| j}z|j|_W n tk
rb   Y nX |d kr||  ||}|S )Nr   )	r   rX   r	   rY   rZ   __self__r   r   r   )r)   rH   rB   getresultZnew_funcr#   r#   r$   r     s    

zpartialmethod.__get__c                 C   s   t | jddS Nr   Fr   rX   ru   r#   r#   r$   r     s    z"partialmethod.__isabstractmethod__)N)
r   r   r   rJ   __text_signature__rt   r   r   propertyr   r#   r#   r#   r$   r
   T  s   "
c                 C   s   t | tr| j} q | S r   )rx   r	   rX   rX   r#   r#   r$   _unwrap_partial  s    
r   Z	CacheInfohitsmissesmaxsizeZcurrsizec                   @   s$   e Zd ZdZefddZdd ZdS )
_HashedSeq	hashvaluec                 C   s   || d d < ||| _ d S r   r   )r)   Ztuphashr#   r#   r$   rJ     s    z_HashedSeq.__init__c                 C   s   | j S r   r   ru   r#   r#   r$   rQ     s    z_HashedSeq.__hash__N)r   r   r   rP   r   rJ   rQ   r#   r#   r#   r$   r     s   r   c           
         s   | }|r&||7 }|  D ]}	||	7 }q|rh|| fdd| D 7 }|r|| fdd| D 7 }n$||dkr |d |kr|d S t|S )Nc                 3   s   | ]} |V  qd S r   r#   r?   rj   ro   r#   r$   rf     s     z_make_key.<locals>.<genexpr>c                 3   s   | ]} |V  qd S r   r#   r   r   r#   r$   rf     s     r   r   )rq   valuesr   )
rY   r}   typedZkwd_markZ	fasttypesry   ro   rz   keyitemr#   r   r$   	_make_key  s    
 r      Fc                    sn   t  tr dk r\d nDt rLt trL d } t| t}t||S  d k	r\td fdd}|S )Nr   r   z=Expected first argument to be an integer, a callable, or Nonec                    s   t |  t}t|| S r   )_lru_cache_wrapper
_CacheInfor   )user_functionr   r   r   r#   r$   decorating_function  s    z&lru_cache.<locals>.decorating_function)rx   intr\   boolr   r   r   rW   )r   r   r   r   r   r#   r   r$   r     s    


c                    s   t  td\ i d 	djjt 
g d d gd d < dkrhfdd}nNd kr	fdd}n* 	
fdd}	
fdd	}	
fd
d}||_||_|S )N)r   r   r      r   Fc                     s    d7  | |}|S Nr   r#   )rY   r}   r   )r   r   r#   r$   r   #  s    
z#_lru_cache_wrapper.<locals>.wrapperc                     sH   | |}|}|k	r*d7 |S d7 | |}| |< |S r   r#   )rY   r}   r   r   )cache	cache_getr   make_keyr   sentinelr   r   r#   r$   r   ,  s    

c               
      s>  
| |}	z |}|d k	r~|\}}}}||< ||<  }| |< < ||< |< d7 |W  5 Q R  S d7 W 5 Q R X | |}	 |krnr}	||	 < ||	< |	   }
 }d   < < |
= |	|< n6 }|||g}| |<  < |<  kW 5 Q R X |S r   r#   )rY   r}   r   linkZ	link_prevZ	link_nextZ_keyr   ZlastZoldrootZoldkeyZ	oldresult)KEYNEXTPREVRESULTr   r   	cache_lenfullr   lockr   r   r   rG   r   r   r#   r$   r   ;  sB    

c                
      s,      W  5 Q R  S Q R X d S r   r#   r#   )r   r   r   r   r   r   r#   r$   
cache_infot  s    z&_lru_cache_wrapper.<locals>.cache_infoc                	      s<   .     d d gd d < d dW 5 Q R X d S )Nr   F)clearr#   )r   r   r   r   r   rG   r#   r$   cache_cleary  s
    z'_lru_cache_wrapper.<locals>.cache_clear)r>   r   r   __len__r   r   r   )r   r   r   r   r   r   r   r#   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   rG   r   r   r   r$   r     s*    *9	r   )r   c                 C   s   g }dd | D } | s|S | D ]2}|d }| D ]}||dd  kr.d } qq. qRq|d krbt d|| | D ]}|d |krp|d= qpqd S )Nc                 S   s   g | ]}|r|qS r#   r#   r?   sr#   r#   r$   
<listcomp>  s      z_c3_merge.<locals>.<listcomp>r   r   zInconsistent hierarchy)RuntimeErrorappend)Z	sequencesr   Zs1Z	candidateZs2Zseqr#   r#   r$   	_c3_merge  s"    
r   Nc           
         s  t t| jD ]$\}tdrt| j| } q8qd} rDt ng  t| jd | }g }t| j|d  } D ]0t| rttfdd| jD st| qt|D ] 	 q fdd|D } fdd|D } fdd|D }	t
| gg| | |	 |g |g |g S )	N__abstractmethods__r   c                 3   s   | ]}t | V  qd S r   )
issubclass)r?   b)baser#   r$   rf     s    z_c3_mro.<locals>.<genexpr>c                    s   g | ]}t | d qS abcs_c3_mror?   r   r   r#   r$   r     s     z_c3_mro.<locals>.<listcomp>c                    s   g | ]}t | d qS r   r   r   r   r#   r$   r     s     c                    s   g | ]}t | d qS r   r   r   r   r#   r$   r     s     )	enumeratereversed	__bases__r]   rz   listr   anyr   remover   )
rB   r   iZboundaryZexplicit_basesZabstract_basesZother_basesZexplicit_c3_mrosZabstract_c3_mrosZother_c3_mrosr#   )r   r   r$   r     sD    
r   c                    s   t j  fddfddD fddfddD t g }D ]}g }| D ]0}| krht|rh|fdd|jD  qh|s|| qX|jtd	d
 |D ] }|D ]}||kr|| qqqXt|dS )Nc                    s   |  kot | dot| S )N__mro__)r]   r   )typ)basesrB   r#   r$   
is_related  s    z _compose_mro.<locals>.is_relatedc                    s   g | ]} |r|qS r#   r#   r?   n)r   r#   r$   r     s      z _compose_mro.<locals>.<listcomp>c                    s&    D ]}| |kr| |j kr dS qdS )NTF)r   )r   r*   )typesr#   r$   is_strict_base  s    z$_compose_mro.<locals>.is_strict_basec                    s   g | ]} |s|qS r#   r#   r   )r   r#   r$   r     s      c                    s   g | ]}| kr|qS r#   r#   r   )type_setr#   r$   r     s      T)r   reverser   )setr   __subclasses__r   r   sortrz   r   )rB   r   mror   ZfoundsubZsubclsr#   )r   rB   r   r   r   r   r$   _compose_mro  s*    

r   c                 C   st   t | | }d }|D ]R}|d k	r\||krX|| jkrX|| jkrXt||sXtd|| qj||kr|}q||S )NzAmbiguous dispatch: {} or {})r   keysr   r   r   r   r   )rB   registryr   matchtr#   r#   r$   
_find_impl  s"    
 r   c                    s   dd l }dd l}i | d   fddd
 fdd	fdd}t| dd	| t< |_|_||_j	|_
t||  |S )Nr   c                    s|    d k	r"t  } |kr"  | z|  }W nH tk
rv   z|  }W n tk
rh   t| }Y nX || < Y nX |S r   )r   r   KeyErrorr   )rB   Zcurrent_tokenZimpl)cache_tokendispatch_cacher   r#   r$   dispatch-  s    z singledispatch.<locals>.dispatchc                    s   |d krt  tr  fddS t di }|s@td d }ddlm} tt|| \} t  tstd|d	 d
| < d krt	 drt
   |S )Nc                    s
    | S r   r#   )f)rB   registerr#   r$   <lambda>M      z2singledispatch.<locals>.register.<locals>.<lambda>r   z(Invalid first argument to `register()`: zS. Use either `@register(some_class)` or plain `@register` on an annotated function.r   )get_type_hintszInvalid annotation for z. z is not a class.r   )rx   ro   r   rW   Ztypingr   rU   rS   rq   r]   r   r   )rB   rX   Zannr   Zargname)r   r   r   r   rA   r$   r   D  s(    


z singledispatch.<locals>.registerc                     s&   | st  d | d j| |S )Nz( requires at least 1 positional argumentr   )rW   ra   )rY   Zkw)r   funcnamer#   r$   r   e  s    zsingledispatch.<locals>.wrapperr   zsingledispatch function)N)r   weakrefZWeakKeyDictionaryr   r>   r   r   MappingProxyTyper   r   Z_clear_cacher   )rX   r   r   r   r#   )r   r   r   r   r   r   r$   r     s    !
c                   @   s4   e Zd Zdd Zd
ddZdddZedd	 ZdS )r   c                 C   s4   t |s t|ds t|dt|| _|| _d S )Nr   z  is not callable or a descriptor)r\   r]   rW   r   
dispatcherrX   r)   rX   r#   r#   r$   rJ   ~  s    
zsingledispatchmethod.__init__Nc                 C   s   | j j||dS )Nr   )r   r   )r)   rB   methodr#   r#   r$   r     s    zsingledispatchmethod.registerc                    s0    fdd}j |_ j|_t|j |S )Nc                     s$   j | d j}| | |S rK   )r   r   ra   r   )rY   kwargsr   rB   rH   r)   r#   r$   r     s    z-singledispatchmethod.__get__.<locals>._method)r   r   r   rX   )r)   rH   rB   r   r#   r   r$   r     s
    zsingledispatchmethod.__get__c                 C   s   t | jddS r   r   ru   r#   r#   r$   r     s    z)singledispatchmethod.__isabstractmethod__)N)N)r   r   r   rJ   r   r   r   r   r#   r#   r#   r$   r   w  s
   


c                   @   s&   e Zd Zdd Zdd ZdddZdS )	cached_propertyc                 C   s    || _ d | _|j| _t | _d S r   )rX   attrnamer   r   r   r   r#   r#   r$   rJ     s    zcached_property.__init__c                 C   s8   | j d kr|| _ n"|| j kr4td| j d|dd S )Nz?Cannot assign the same cached_property to two different names (z and z).)r   rW   )r)   ownernamer#   r#   r$   __set_name__  s    

zcached_property.__set_name__Nc              	   C   s   |d kr| S | j d krtdz
|j}W n8 tk
r`   dt|jd| j d}t|d Y nX || j t}|tkr| jn || j t}|tkr| 	|}z||| j < W n8 tk
r   dt|jd| j d}t|d Y nX W 5 Q R X |S )NzGCannot use cached_property instance without calling __set_name__ on it.zNo '__dict__' attribute on z instance to cache z
 property.zThe '__dict__' attribute on z7 instance does not support item assignment for caching )
r   rW   r   r   ro   r   r   
_NOT_FOUNDr   rX   )r)   instancer   r   msgvalr#   r#   r$   r     s2    


zcached_property.__get__)N)r   r   r   rJ   r  r   r#   r#   r#   r$   r     s   	r   )r   F)N)8__all__abcr   Zcollectionsr   Zreprlibr   _threadr   r   r   r   r   r+   r,   r-   r.   r1   r2   r3   r6   r7   r8   r;   r<   r=   rD   r   r   Z
_functoolsImportErrorr>   rT   r   r	   r
   r   r   r   r   r   strry   ro   rz   r   r   r   r   r   r   r   r   r   r  r   r#   r#   r#   r$   <module>   s         


AX	  

,t
-)\(