
    -i                     b   d Z edk    r8ddlZej                            d           ej                            d           ddlZddlZej        d         dk     rddlmZ ddl	m
Z
 nddlmZ ddlm
Z
 dd	lmZ dd
lmZ  G d de
          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/   )Database)	HashIndex)md5)areprc                   *     e Zd Z fdZd Zd Z xZS )
WithAIndexc                 R    d|d<    t          t          |           j        |i | d S )N32s
key_format)superr
   __init__)selfargskwargs	__class__s      L/var/www/html/speakWrite/venv/lib/python3.11/site-packages/sylajone/cache.pyr   zWithAIndex.__init__%   s5    $|(j$($9&99999    c                     |                     d          }|rZt          |t                    st          |          }t          |                    d                                                    i fS d S )Nautf8)get
isinstanceunicoder   encode	hexdigest)r   dataa_vals      r   make_key_valuezWithAIndex.make_key_value*   sf     	=eG,, 'u||F++,,6688"<<tr   c                     t          |t                    st          |          }t          |                    d                                                    S )Nr   )r   r   r   r   r   )r   keys     r   make_keyzWithAIndex.make_key2   sE    #w'' 	#,,C3::f%%&&00222r   )__name__
__module____qualname__r   r    r#   __classcell__)r   s   @r   r
   r
   #   sV        : : : : :
  3 3 3 3 3 3 3r   r
   c                       e Zd ZdZej                            ej                            d          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
    ~.thaalabCacheFc                    t          t          d          rt          j        }nAt          j                            t          j                            t                              }|s| j        }n=t          j        	                    t          j                            |          d          }i | _
        	 t          |          | _        | j                                        sO| j                                         t          | j        j        d          }| j                            |           dS | j                                         dS #  d| _        Y dS xY w)z%
        Create Analex Cache
        frozenr+   r   N)hasattrsysprefixospathdirnamerealpath__file__DB_PATHjoinr)   r   dbexistscreater
   	add_indexopen)r   
cache_pathbase	file_pathx_inds        r   r   zcache.__init__<   s    3!! 	?:DD7??27#3#3H#=#=>>D 	SIIRW__Z%@%@/RRI

	y))DG7>>##     "47<55!!%(((((	DGGGGs   3A:E
 /E
 
	Ec                 X    d| _         | j        r| j                                         dS dS )z:
        Delete instance and clear cache
        
        N)r)   r8   close)r   s    r   __del__zcache.__del__X   s2    
 
7 	GMMOOOOO	 	r   c                 \    | j         D ]#}|                     || j         |                    $dS )zupdate data base N)r)   add_checkedr   words     r   updatezcache.updatea   s?     J 	5 	5DT4:d#34444	5 	5r   c                 d    	 t          | j                            d|                    S #  Y dS xY w)Nr   F)boolr8   r   rF   s     r   is_already_checkedzcache.is_already_checkedg   s5    	C..///	55s   '* /c                     	 | j                             d|d          }|                    dd          }|r|                    dg           S g S #  g cY S xY w)Nr   Twith_docdocFd)r8   r   )r   rG   xys       r   get_checkedzcache.get_checkedn   sd    	C55AeE""A uuS}}$)	IIIs   A
A A Ac                 $   ||d}	 | j                             d|d          }n	#  d}Y nxY w|r=||d         d<   |d         }d|d<   | j         r| j                             |           d S d S | j         r| j                             |           d S d S )	N)r   rP   r   TrM   FrO   rP   rH   )r8   r   rH   insert)r   rG   r   idatasavedrO   s         r   rE   zcache.add_checkedx   s    d##	GKKTDK99EE	EEE 	& $E%L<C CMw $s#####$ $ w &u%%%%%& &s   % +c                     || j         v rdS |                     |          r9|                     |          }|| j         |<   t          | j         |                   S i | j         |<   i S )z test if word exists in cacheT)r)   rK   rS   rJ   )r   rG   stored_datas      r   exists_cache_wordzcache.exists_cache_word   ss     4:4&&t,, "..t44#.
4 DJt,--- $&
4 	r   c                     |                      |           | j                            |i                               |i                               |d          S )Nr   rZ   r)   r   )r   	word_prevword_currelations       r   get_relation_freqzcache.get_relation_freq   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]   r^   s      r   
is_relatedzcache.is_related   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)   rK   rS   )r   r]   r^   r_   rY   s        r   add_relationzcache.add_relation   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        rT| j                            dd          D ]9}t          |d         d         t          |d         d                              8dS dS )z# display all contents of data base z7aranasyn.cache: dislay all records in Thaalib Database r   TrM   rO   rP   N)printr8   allr   )r   currs     r   display_allzcache.display_all   s     	IJJJ7 	AC$77 A Ad5k#&d5k#.>(?(?@@@@	A 	AA Ar   N)F)r$   r%   r&   __doc__r1   r2   r7   
expanduserr6   r   rC   rH   rK   rS   rE   rZ   r`   rb   re   rj    r   r   r)   r)   7   s          gll27--c22ODDG   8  5 5 5    & & &"   Q Q Q@ @ @; ; ;,A A A A Ar   r)   c                  "    t                      } d S )N)r)   )mycaches    r   mainlyrp      s    ggGGGr   )rk   r$   r/   r2   appendr1   version_infoCodernityDB.databaser   CodernityDB.hash_indexr   codernitydb3.databasecodernitydb3.hash_indexhashlibr   pyarabic.arabreprr   r
   r)   rp   rm   r   r   <module>ry      sz    ZJJJHOOEHOO$%%% 



 				A------0000000 /.....111111       # # # # # #3 3 3 3 3 3 3 3(KA KA KA KA KA KA KA KAZ   Z
FHHHHH r   