
    Pi
                     F    d dl mZ  G d d          Z G d d          ZdS )    )Lockc                   2    e Zd ZdZddgZd Zd Zd Zd ZdS )	ResponsibleGeneratorz?A generator that will help clean up when it is done being used.cleanupgenc                 "    || _         || _        d S N)r   r   )selfr   r   s      t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/rdflib/plugins/stores/concurrent.py__init__zResponsibleGenerator.__init__	   s        c                 .    |                                   d S r	   )r   r
   s    r   __del__zResponsibleGenerator.__del__   s    r   c                     | S r	    r   s    r   __iter__zResponsibleGenerator.__iter__   s    r   c                 *    t          | j                  S r	   )nextr   r   s    r   __next__zResponsibleGenerator.__next__   s    DH~~r   N)	__name__
__module____qualname____doc__	__slots__r   r   r   r   r   r   r   r   r      s`        IIE"I          r   r   c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
ConcurrentStorez0A store that allows concurrent reads and writes.c                 d    || _         d| _        t                      | _        g | _        g | _        d S Nr   )store_ConcurrentStore__visit_countr   _ConcurrentStore__lock!_ConcurrentStore__pending_removes_ConcurrentStore__pending_adds)r
   r    s     r   r   zConcurrentStore.__init__   s8    
  ff "$ r   c                     |\  }}}| j         dk    r| j                            |||f           d S | j                            |||f           d S r   )r!   r    addr$   appendr
   triplespos        r   r&   zConcurrentStore.add(   s^    	Aq""JNNAq!9%%%%%&&1ay11111r   c                     |\  }}}| j         dk    r| j                            |||f           d S | j                            |||f           d S r   )r!   r    remover#   r'   r(   s        r   r.   zConcurrentStore.remove/   s`    	Aq""Jq!Qi((((("))1a)44444r   c              #   4  K   |\  }}}| j                             |||f          }| j        }|                                  t	          || j                  D ]\  }}}	|||	f|vr|||	fV  | j        D ]%\  }}}	|||k    r|||k    r|||	k    r|||	fV  &d S r	   )r    triplesr#   _ConcurrentStore__begin_readr   _ConcurrentStore__end_readr$   )
r
   r)   suprobgpending_removesr*   r+   r,   s
             r   r0   zConcurrentStore.triples6   s      RJB|,,0+At?? 	 	GAq!q!9//Ag* 	 	GAq!rQwwZ277Z277Ag	 	r   c                 4    | j                                         S r	   )r    __len__r   s    r   r9   zConcurrentStore.__len__G   s    z!!###r   c                     | j         }|                                 | j        dz   | _        |                                 d S )N   )r"   acquirer!   release)r
   locks     r   __begin_readzConcurrentStore.__begin_readJ   s7    {!/!3r   c                    | j         }|                                 | j        dz
  | _        | j        dk    r| j        }|rR|                                \  }}}	 | j                            |||f           n#  t          |||d           Y nxY w|R| j        }|r7|                                \  }}}| j        	                    |||f           |7|
                                 d S )Nr;   r   zNot in store to remove)r"   r<   r!   r#   popr    r.   printr$   r&   r=   )r
   r>   r7   r*   r+   r,   pending_addss          r   
__end_readzConcurrentStore.__end_readP   s   {!/!3"""4O! =+//11	Aq=J%%q!Qi0000=!Q#;<<<<< " =  .L *(,,..	Aq
1ay)))  * 	s   A6 6BN)r   r   r   r   r   r&   r.   r0   r9   r1   r2   r   r   r   r   r      s        ::! ! !2 2 25 5 5  "$ $ $      r   r   N)	threadingr   r   r   r   r   r   <module>rF      s{                &J J J J J J J J J Jr   