
                             S SK r S SKJrJrJr   " S S5      r " S S5      r " S S5      r " S	 S
\ R                  5      r	g)    N)LRUCachecachedmethodkeysc                   l    \ rS rSrS
S jr\" S 5      S 5       r\" S \R                  S9S 5       r	Sr
g	)Cached   c                     Xl         X l        g Ncachecount)selfr   r   s      Aplatform/gsutil/third_party/cachetools/tests/test_cachedmethod.py__init__Cached.__init__   s    

    c                     U R                   $ r
   r   r   s    r   <lambda>Cached.<lambda>       tzzr   c                 H    U R                   nU =R                   S-  sl         U$ N   r   r   valuer   s      r   get
Cached.get       



a
r   c                     U R                   $ r
   r   r   s    r   r   r      r   r   keyc                 H    U R                   nU =R                   S-  sl         U$ r   r   r   s      r   get_typedmethodCached.get_typedmethod   r!   r   r   N)r   )__name__
__module____qualname____firstlineno__r   r   r   r   typedmethodkeyr&   __static_attributes__ r   r   r   r      sD     )* +
 )t/B/BC Dr   r   c                   D    \ rS rSrS r\" S S S9S 5       rS rS rS	r	g
)Locked   c                     Xl         SU l        g )Nr   r   r   r   s     r   r   Locked.__init__   s    

r   c                     U R                   $ r
   r   r   s    r   r   Locked.<lambda>   r   r   c                     U $ r
   r.   r   s    r   r   r6      s    Tr   )lockc                     U R                   $ r
   r   r   r   s     r   r   
Locked.get   s    zzr   c                 .    U =R                   S-  sl         g r   r   r   s    r   	__enter__Locked.__enter__!   s    

a
r   c                     g r
   r.   )r   excs     r   __exit__Locked.__exit__$   s    r   r   N)
r(   r)   r*   r+   r   r   r   r=   rA   r-   r.   r   r   r0   r0      s/     )0AB Cr   r0   c                   n    \ rS rSrS r\" S 5      S 5       r\" S \R                  S9S 5       r	S r
S	rg
)
Unhashable(   c                     Xl         g r
   r   r3   s     r   r   Unhashable.__init__)   s    
r   c                     U R                   $ r
   r   r   s    r   r   Unhashable.<lambda>,   r   r   c                     U$ r
   r.   r:   s     r   get_defaultUnhashable.get_default,       r   c                     U R                   $ r
   r   r   s    r   r   rI   0   r   r   r#   c                     U$ r
   r.   r:   s     r   get_hashkeyUnhashable.get_hashkey0   rM   r   c                     [        S5      e)Nzunhashable type)	TypeErrorr   s    r   __hash__Unhashable.__hash__5   s    )**r   r   N)r(   r)   r*   r+   r   r   rK   r   hashkeyrP   rT   r-   r.   r   r   rD   rD   (   sF     )* + )t||< =+r   rD   c                   t    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rSrg)CachedMethodTest9   c                    [        0 5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        UR                  R	                  5         U R                  UR                  S5      S5        g )Nr   r         ?   )r   assertEqualr   r   clearr   cacheds     r   	test_dictCachedMethodTest.test_dict:   s    A*A*A*C!,C!,A*r   c                    [        [        SS95      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g 	Nr\   maxsizer   r   r[   g              r   r   r]   r&   r_   s     r   test_typedmethod_dict&CachedMethodTest.test_typedmethod_dictF       +,//2A6//2A6//2A6//4a8//4a8//4a8//2A6r   c                    [        [        SS95      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        UR                  R                  5         U R                  UR                  S5      S5        g )Nr\   re   r   r   r[   )r   r   r]   r   r   r^   r_   s     r   test_lruCachedMethodTest.test_lruQ   s    +,A*A*A*C!,C!,A*r   c                    [        [        SS95      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g rd   ri   r_   s     r   test_typedmethod_lru%CachedMethodTest.test_typedmethod_lru]   rl   r   c                 r   [        [        SS95      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g )Nr   re   r   r\   r[   rg   rh   )r   r   r]   r   r_   s     r   test_nospaceCachedMethodTest.test_nospaceh       +,A*A*A*C!,C!,r   c                 d   [        S 5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g )Nr   r   r\   r[   rg   rh   )r   r]   r   r_   s     r   test_nocacheCachedMethodTest.test_nocacheq       A*A*A*C!,C!,r   c                 <  ^^ SS K nSS KmSS Kn " UU4S jSTR                  5      m[	        UR                  5       T" S5      S9nU R                  UR                  S5      S5        UR                  5         U R                  UR                  S5      S5        UR                  S5      nU R                  US5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        UR                  S5      nU R                  US5        U R                  UR                  S5      S5        U R                  UR                  S5      S	5        UR                  R                  5         U R                  UR                  S5      S
5        g )Nr   c                   $   > \ rS rSrU U4S jrSrg)*CachedMethodTest.test_weakref.<locals>.Int   c                 F   > T" TR                   R                  X5      5      $ r
   )Fraction__add__)r   otherInt	fractionss     r   r   2CachedMethodTest.test_weakref.<locals>.Int.__add__   s    9--55dBCCr   r.   N)r(   r)   r*   r+   r   r-   )r   r   s   r   r   r}      s    D Dr   r   r   r   r\   r[   rg   rh      )weakrefr   gcr   r   WeakValueDictionaryr]   r   collectr&   r   r^   )r   r   r   r`   refr   r   s        @@r   test_weakrefCachedMethodTest.test_weakrefz   sE   	D 	D)$$ 	D 335SVDA*


A*jjma A*C!,$$Q'a //2A6//4a8A*r   c                 d   [        0 5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g )Nr   r   rg   r[   g       @   r0   r]   r   r_   s     r   test_locked_dict!CachedMethodTest.test_locked_dict   s    A*A*A*C!,C!,r   c                 d   [        S 5      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g )Nr   r   r[   r   r_   s     r   test_locked_nocache$CachedMethodTest.test_locked_nocache   rz   r   c                 r   [        [        SS95      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        U R                  UR                  S5      S5        g )	Nr   re   r   rg   r   r[   r   	   )r0   r   r]   r   r_   s     r   test_locked_nospace$CachedMethodTest.test_locked_nospace   rv   r   c                 ,   [        [        SS95      nU R                  UR                  S5      S5        U R                  UR                  S5      S5        U R	                  [
        5         UR                  S5        S S S 5        g ! , (       d  f       g = f)Nr   re   r   )rD   r   r]   rK   assertRaisesrS   rP   r_   s     r   test_unhashable CachedMethodTest.test_unhashable   so    HQ/0++A.2++A.2y)q! *))s   *B
Bc                    0 n[        U5      nU R                  [        U5      S5        U R                  UR                  R	                  US5      S5        U R                  [        U5      S5        U R                  UR                  S5      S5        U R                  [        U5      S5        U R                  UR                  S5      S5        U R                  [        U5      S5        g Nr   r   )r   r]   lenr   __wrapped__r   r   r`   s      r   test_wrappedCachedMethodTest.test_wrapped   s    UQ'//:A>UQ'A*UQ'A*UQ'r   c                 (   0 n[        U5      nU R                  UR                  R                  U5      U5        U R                  UR                  R                  [
        R                  5        U R                  UR                  R                  S 5        g r
   )r   assertIsr   r   	cache_keyr   	methodkey
cache_lockr   s      r   test_attributes CachedMethodTest.test_attributes   sa    fjj&&v.6fjj**DNN;fjj++T2r   c                 2   0 n[        U5      nU R                  UR                  R                  U5      U5        U R                  UR                  R                  [
        R                  5        U R                  UR                  R                  U5      U5        g r
   )r0   r   r   r   r   r   r   r   r   s      r   test_attributes_lock%CachedMethodTest.test_attributes_lock   sf    fjj&&v.6fjj**DNN;fjj++F3V<r   c                    0 n[        U5      nU R                  UR                  S5      S5        U R                  [        U5      S5        UR                  R	                  U5        U R                  [        U5      S5        g r   )r   r]   r   r   cache_clearr   s      r   
test_clearCachedMethodTest.test_clear   sb    A*UQ'

v&UQ'r   c                 r   0 n[        U5      nU R                  UR                  S5      S5        U R                  [        U5      S5        U R                  UR                  S5        UR                  R                  U5        U R                  [        U5      S5        U R                  UR                  S5        g )Nr   r   r\   rg   )r0   r]   r   r   r   r   r   s      r   test_clear_locked"CachedMethodTest.test_clear_locked   s    A*UQ'q)

v&UQ'q)r   r.   N)r(   r)   r*   r+   ra   rj   rn   rq   rt   rx   r   r   r   r   r   r   r   r   r   r   r-   r.   r   r   rX   rX   9   sR    
+	7
+	7--+<---"
(3=(	*r   rX   )
unittest
cachetoolsr   r   r   r   r0   rD   TestCaserX   r.   r   r   <module>r      s@     3 3 $  + +"q*x(( q*r   