
    )Jf                     ^    d Z ddlmZ ddlZddlZ G d de          Z G d de          ZdS )z,A simple store using only in-process memory.    )nonceNc                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ServerAssocsc                     i | _         d S N)assocsselfs    X/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/openid/store/memstore.py__init__zServerAssocs.__init__
   s        c                 $    || j         |j        <   d S r   )r   handle)r
   assocs     r   setzServerAssocs.set   s    $)EL!!!r   c                 6    | j                             |          S r   )r   getr
   r   s     r   r   zServerAssocs.get   s    {v&&&r   c                 :    	 | j         |= dS # t          $ r Y dS w xY w)NTF)r   KeyErrorr   s     r   removezServerAssocs.remove   s<    	F# 4  	 	 	55	s    
c                     d}t          | j                                                  D ]}||j        |j        k     r|}|S )zhReturns association with the oldest issued date.

        or None if there are no associations.
        N)listr   valuesissued)r
   bestr   s      r   r   zServerAssocs.best   sL    
 $+,,..// 	 	E|t{U\99r   c                     g }| j                                         D ]%\  }}|j        dk    r|                    |           &|D ]
}| j         |= t	          |          t	          | j                   fS )zoRemove expired associations.

        @return: tuple of (removed associations, remaining associations)
        r   )r   items	expiresInappendlen)r
   r   r   r   s       r   cleanupzServerAssocs.cleanup&   s    
 ![..00 	& 	&MFE!##f%%% 	$ 	$FF##6{{C,,,,r   N)	__name__
__module____qualname__r   r   r   r   r   r"    r   r   r   r   	   sn          * * *' ' '  	 	 	- - - - -r   r   c                   P    e Zd ZdZd Zd Zd ZddZd Zd Z	d	 Z
d
 Zd Zd ZdS )MemoryStorezcIn-process memory store.

    Use for single long-running processes.  No persistence supplied.
    c                 "    i | _         i | _        d S r   server_assocsnoncesr	   s    r   r   zMemoryStore.__init__:   s    r   c                 r    	 | j         |         S # t          $ r t                      x}| j         |<   |cY S w xY wr   )r+   r   r   )r
   
server_urlr   s      r   _getServerAssocszMemoryStore._getServerAssocs>   sO    	%j11 	 	 	6BnnDFT'
3MMM	s    $66c                 ~    |                      |          }|                    t          j        |                     d S r   )r/   r   copydeepcopy)r
   r.   r   r   s       r   storeAssociationzMemoryStore.storeAssociationE   s7    &&z22

4=''(((((r   Nc                     |                      |          }||                                S |                    |          S r   )r/   r   r   r
   r.   r   r   s       r   getAssociationzMemoryStore.getAssociationI   s:    &&z22>;;== ::f%%%r   c                 V    |                      |          }|                    |          S r   )r/   r   r5   s       r   removeAssociationzMemoryStore.removeAssociationP   s'    &&z22}}V$$$r   c                     t          |t          j                    z
            t          j        k    rdS t	          |          t          |          t	          |          f}|| j        v rdS d | j        |<   dS )NFT)abstimer   SKEWstrintr,   )r
   r.   	timestampsaltanonces        r   useNoncezMemoryStore.useNonceT   sh    y49;;&''%*445j//3y>>3t99=T[  5"&DK4r   c                    t          j                     }g }| j                                        D ]=}t          |d         |z
            t          j        k    r|                    |           >|D ]
}| j        |= t          |          S )N   )r;   r,   keysr:   r   r<   r    r!   )r
   nowexpiredrA   s       r   cleanupNonceszMemoryStore.cleanupNonces_   s    ikkk&&(( 	' 	'F6!9s?##ej00v&&& 	$ 	$FF##7||r   c                     g }d}| j                                         D ]8\  }}|                                \  }}||z  }|s|                    |           9|D ]
}| j         |= |S )Nr   )r+   r   r"   r    )r
   remove_urlsremoved_assocsr.   r   removed	remainings          r   cleanupAssociationszMemoryStore.cleanupAssociationsk   s    "&"4":":"<"< 	/ 	/J!'!1!1GYg%N /"":... & 	/ 	/J":..r   c                 B    | j         |j         k    o| j        |j        k    S r   r*   r
   others     r   __eq__zMemoryStore.__eq__y   s&    #u':: .,	/r   c                     | |k     S r   r&   rP   s     r   __ne__zMemoryStore.__ne__}   s    EM""r   r   )r#   r$   r%   __doc__r   r/   r3   r6   r8   rB   rH   rN   rR   rT   r&   r   r   r(   r(   4   s         
    ) ) )& & & &% % %	 	 	
 
 
  / / /# # # # #r   r(   )rU   openid.storer   r1   r;   objectr   r(   r&   r   r   <module>rX      s    2 2        (- (- (- (- (-6 (- (- (-VJ# J# J# J# J#& J# J# J# J# J#r   