
    -i}                         d Z edk    r8ddlZej                            d           ej                            d           ddlZddlZddlZddlmZ  G d d          Z	d	 Z
edk    r e
             dS dS )
z8
Cache system for extrcat features for words relations.
__main__    Nz../z../../support/)areprc                   V    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd ZdS )cachez3
        cache for word morphological analysis
    Fc                    i | _         t          j                            t          j                            d          d          }|s|}n=t          j                            t          j                            |          d          }	 t          j        |d          | _        dS #  t          d|           d| _        Y dS xY w)z%
        Create Analex Cache
        ~z.thaalabCache.pickledbFz!Can't Open data base cache_pickleN)
r   ospathjoin
expanduserdirnamepickledbloaddbprint)selfdp_pathDB_PATHs      U/var/www/html/speakWrite/venv/lib/python3.11/site-packages/sylajone/cache_pickledb.py__init__zcache.__init__   s    
 
',,rw11#668PQQ 	WGGgll27??7#;#;=UVVG	}We44DGGG	5w???DGGGGs   B$ $C c                 X    d| _         | j        r| j                                         dS dS )z2
        Delete instance and clear cache

        N)r   r   dump)r   s    r   __del__zcache.__del__0   s2    
 
7 	GLLNNNNN	 	    c                 \    | j         D ]#}|                     || j         |                    $dS )zupdate data base N)r   add_checkedr   words     r   updatezcache.update8   s?     J 	5 	5DT4:d#34444	5 	5r   c                 b    	 t          | j                            |                    S #  Y dS xY w)z% return if ``word`` is already cachedF)boolr   getr   s     r   is_already_checkedzcache.is_already_checked=   s3    	D))***	55s   &) .c                 L    g }| j         r| j                             |          }|S )z# return checked ``word`` form cache)r   r"   )r   r   results      r   get_checkedzcache.get_checkedE   s+     7 	'W[[&&Fr   c                 N    | j         r| j                             ||           dS dS )z  add checked ``word`` form cacheN)r   set)r   r   datas      r   r   zcache.add_checkedN   s2    7 	$GKKd#####	$ 	$r   c                     || j         v rdS |                     |          r9|                     |          }|| j         |<   t          | j         |                   S i | j         |<   i S )z test if word exists in cacheT)r   r#   r&   r!   )r   r   stored_datas      r   exists_cache_wordzcache.exists_cache_wordU   ss     4:4&&t,, "..t44#.
4 DJt,--- $&
4 	r   c                     |                      |           | j                            |i                               |i                               |d          S )Nr   r,   r   r"   )r   	word_prevword_currelations       r   get_relation_freqzcache.get_relation_freqe   sL    y)))z~~i,,002>>BB8QOOOr   c                     |                      |           | j                            |i                               |i           S )z test if two words are relatedr.   )r   r/   r0   s      r   
is_relatedzcache.is_relatedi   s>     	y)))z~~i,,002>>>r   c                    || j         vrF|                     |          r!|                     |          }|| j         |<   d S ||dii| j         |<   d S || j         |         vr|di| j         |         |<   d S || j         |         |         vrd| j         |         |         |<   d S | j         |         |         |xx         dz  cc<   d S )N   )r   r#   r&   )r   r/   r0   r1   r+   s        r   add_relationzcache.add_relationr   s     DJ&&&&y11 D"..y99(3
9%%%)18A.(C
9%%% TZ	222/7mDJy!(+++TZ	28<<<89DJy!(+H555Jy!(+H555:55555r   c                     t          d           | j        rD| j                                        D ],}t          || j                            |                     +dS dS )z# display all contents of data base z7aranasyn.cache: dislay all records in Thaalib Database N)r   r   getallr"   )r   keys     r   display_allzcache.display_all   sm     	IJJJ7 	-w~~'' - -c47;;s++,,,,	- 	-- -r   N)F)__name__
__module____qualname____doc__r   r   r   r#   r&   r   r,   r2   r4   r7   r;    r   r   r   r      s            "  5 5 5
    $ $ $   Q Q Q@ @ @; ; ;,- - - - -r   r   c                  "    t                      } d S )N)r   )mycaches    r   mainlyrC      s    ggGGGr   )r?   r<   sysr
   appendr	   r   pyarabic.arabreprr   r   rC   r@   r   r   <module>rG      s     ZJJJHOOEHOO$%%% 



 				  # # # # # #s- s- s- s- s- s- s- s-j   Z
FHHHHH r   