
    -i/                     b    d dl mZ d dlmZ  G d d          Zd Zedk    r e             dS dS )    )AnyNc                       e Zd ZdZi fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d%S )&	VerbTuplezL
    A object to handle the verb tuple gotten from arramooz dictionary 
    c                 R    t          |          | _        ddddddddddd	
| _        d
S )z"
        Init verb tuples
         u   فعل ثلاثيu   فعل رباعيu   فعل خماسيu   فعل سداسيu   فعل سباعيu   فعل ثمانيu   فعل تساعي)
r                           	   N)dict	verb_dicttab_type)selfr   s     P/var/www/html/speakWrite/venv/lib/python3.11/site-packages/arramooz/verbtuple.py__init__zVerbTuple.__init__"   s?     i2"///////1 1    c                     | j         S )z6
         return the all features for  a verb
        )r   r   s    r   get_features_dictzVerbTuple.get_features_dict;   s     ~r   c                 8    | j                             |d          S )z8
         return the asked feature form  a verb
        r   r   get)r   features     r   get_featurezVerbTuple.get_featureA   s     ~!!'2...r   c                 8    | j                             dd          S )z6
         return the vocalized form of a verb
        	vocalizedr   r   r   s    r   get_vocalizedzVerbTuple.get_vocalizedG        ~!!+r222r   c                 8    | j                             dd          S )z8
         return the unvocalized form of a verb
        unvocalizedr   r   r   s    r   get_unvocalizedzVerbTuple.get_unvocalizedM        ~!!-444r   c                 8    | j                             dd          S )z7
         return the normalized form of a verb
        
normalizedr   r   r   s    r   get_normalizedzVerbTuple.get_normalizedS   s     ~!!,333r   c                 8    | j                             dd          S )z4
         return the stamped form of a verb
        stampedr   r   r   s    r   get_stampedzVerbTuple.get_stampedY   s     ~!!)R000r   c                 8    | j                             dd          S )z,
         return the root of a verb
        rootr   r   r   s    r   get_rootzVerbTuple.get_root_   s     ~!!&"---r   c                     dS )z,
         return the wazn of a verb
        r    r   s    r   get_waznzVerbTuple.get_waznf   	     rr   c                 8    | j                             dd          S )z3
         return the future mark of a verb
        future_typer   r   r   s    r   get_future_typezVerbTuple.get_future_typeo   r'   r   c                 R    t          | j                            dd                    S )z4
         return True if verb is transitive
        
transitiver   boolr   r   r   s    r   is_transitivezVerbTuple.is_transitiveu   $     DN&&|Q77888r   c                 R    t          | j                            dd                    S )z4
         return True if verb is triliteral
        
triliteralr   r:   r   s    r   is_triliteralzVerbTuple.is_triliteral{   r=   r   c                 R    t          | j                            dd                    S )z;
         return True if verb is double transitive
        double_transr   r:   r   s    r   is_double_transitivezVerbTuple.is_double_transitive   $     DN&&~q99:::r   c                 R    t          | j                            dd                    S )zJ
         return True if verb is transitive to brain having being
        think_transr   r:   r   s    r   is_think_transitivezVerbTuple.is_think_transitive   s$     DN&&}a88999r   c                 R    t          | j                            dd                    S )zN
         return True if verb is transitive to brain non having being
        unthink_transr   r:   r   s    r   is_unthink_transitivezVerbTuple.is_unthink_transitive   s$     DN&&::;;;r   c                 R    t          | j                            dd                    S )z>
         return True if verb is reflexive transitive
        reflexive_transr   r:   r   s    r   is_reflexive_transitivez!VerbTuple.is_reflexive_transitive   s%     DN&&'8!<<===r   c                 R    t          | j                            dd                    S )zD
         return True if verb accept past tense conjugation
        pastr   r:   r   s    r   accept_pastzVerbTuple.accept_past   s$     DN&&vq11222r   c                 R    t          | j                            dd                    S )F
         return True if verb accept future tense conjugation
        futurer   r:   r   s    r   accept_futurezVerbTuple.accept_future   s$     DN&&x33444r   c                 R    t          | j                            dd                    S )rR   
imperativer   r:   r   s    r   accept_imperativezVerbTuple.accept_imperative   r=   r   c                 R    t          | j                            dd                    S )zG
         return True if verb accept passive voice conjugation
        passiver   r:   r   s    r   accept_passivezVerbTuple.accept_passive   s$     DN&&y!44555r   c                 R    t          | j                            dd                    S )zH
         return True if verb accept confirmed mood conjugation
        	confirmedr   r:   r   s    r   accept_confirmedzVerbTuple.accept_confirmed   s$     DN&&{A66777r   c                 R    t          | j                            dd                    S )zF
         return True if verb accept future_moode conjugation
        future_mooder   r:   r   s    r   accept_future_moodezVerbTuple.accept_future_moode   rD   r   c                 >   |dv r|                                  rdS |dv r|                                 rdS |dv r|                                 rdS |dv r|                                 rdS |dv r|                                 rdS |dv r|                                 rdS dS )	H
         return True if verb accept conjugation in given tense
        )rO   u   الماضيT)rS   presentu   المضارع)rV   u
   الأمر)rY   u
   مجهول)r\   u   مؤكد)future_moodu
   منصوبu
   مرفوعu
   مجزومFrP   rT   rW   rZ   r]   r`   )r   tenses     r   accept_tensezVerbTuple.accept_tense   s     ,,,1A1A1C1C,4;;;@R@R@T@T;4000T5K5K5M5M04---$2E2E2G2G-4---$2G2G2I2I-4MMMRVRjRjRlRlM4ur   c                     |                                  oc|                                 oO|                                 o;|                                 o'|                                 o|                                 S )rb   re   r   s    r   accept_all_tenseszVerbTuple.accept_all_tenses   s     !! (  (""$$( !!( !!##	(
 %%''	(r   c                     dS )z@
         return True if the word  accept given suffix,
        Tr2   )r   suffixs     r   accept_suffixzVerbTuple.accept_suffix   s	    
 tr   c                     dS )zA
         return True if the word  accept given prefix, 
        Tr2   )r   prefixs     r   accept_prefixzVerbTuple.accept_prefix   s	     tr   c                 j    |                                                                  }d |D             }|S )z.
        return tags
        :return:
        c                     g | ]}||S r2   r2   ).0infs     r   
<listcomp>z&VerbTuple.get_tags.<locals>.<listcomp>  s    -------r   )get_tags_dictvalues)r   infoss     r   get_tagszVerbTuple.get_tags   s9    
 ""$$++-------r   c                 ^   dg}t          t          |                    }|                                 }|                                 }|                                 }|                                 }|dd}t          |          }| j                            |d          |d<   | 	                                }|rd|d<   nd|d<   t          j        |v rt          j        |v rd|d	<   n-t          j        |v rd
|d	<   nt          j        |v rd|d	<   nd|d	<   d|d<   |dk    r5|d         t          j        k    r9|d         t          j        t          j        t          j        fv rd|d<   n.d|d<   n'|d         t          j        k    r&|d         t          j        t          j        fv rd|d<   n|d         t          j        k    r*|dk    rd|d<   n|dk    rd|d<   n|dk    rd|d<   nd|d<   n|d         t          j        k    s|d         t          j        k    rd|d<   ny|d         t          j        k    s|d         t          j        k    rd|d<   nGd|d<   nA|dd         t          j        k    rd|d<   n#|dd         t          j        k    rd |d<   nd|d<   |d	         s|d         dk    rd	|d	<   |S )!z
        This function extract verb feaures:
        * length: 3,4,5,6
        * weakness: weak, well
        * safety: hamza, shadda
        * kind of weakness: waw, yeh
        * category of weakness
        u   فعلr   )u
   الفعلu   مضارعهu   طولu
   متعديu   تعديu   لازمu   مضعف مهموزu   سالمu   مضعفu
   مهموزu   علةr
   r   r	   u   لفيف مفروقu   مثال واويr   u   لفيف مقرونu   ضمةu   أجوف واويu   فتحةu   كسرةu   أجوف يائيu   أجوفu   ناقص واويu   ناقص يائيu   صحيحNu   ناقص)listsetr&   r"   r<   r7   lenr   r   r*   arabySHADDAHAMZAWAWALEFALEF_MAKSURAYEH)	r   	tags_listverb_nmverb_vocr9   r6   featuresvlengthverb_normalizeds	            r   ru   zVerbTuple.get_tags_dict  s    L	Y((	 &&((%%''''))
**,,!)2>> g,, M--gr::--//  	.#/HZ  #-HZ <7""u{o'E'E#8HZ  \g%%#-HZ  [O++#/HZ  #%HZ   a<<qzUY&& 1:U-? KKK)>HX&&)<HX&&uy((1:!3UY ???)>HX&uz)) (**)<HX&& J..)<HX&& J..)<HX&&)3HX&&uz))WQZ59-D-D%8""u111WQZ595L5L%8""%/""r"u~++%/""!333%/""%/"
# 	/(:j(H(H$.HZ r   c                 8    | j                             dd          S )z'
         return   get lemma, 
        r!   r   r   r   s    r   	get_lemmazVerbTuple.get_lemmaV  r#   r   c                     dS )z0
         return   get word definition,
        r   r2   r   s    r   get_definitionzVerbTuple.get_definition\  r4   r   c                     dS )z*
         return   get word note,
        r   r2   r   s    r   get_notezVerbTuple.get_noteb  r4   r   c                 4    | j                                         S )z(
        return tuple as string
        )r   __str__r   s    r   r   zVerbTuple.__str__h  s     ~%%'''r   c                 8    | j                             |d          S )"
        return attribute
        Nr   )r   keys     r   __getitem__zVerbTuple.__getitem__n  s     ~!!#t,,,r   c              #   H   K   | j                                         E d{V  dS )z
        :return:
        N)r   itemsr   s    r   __iter__zVerbTuple.__iter__t  s4       >'')))))))))))r   c                 8    | j                             ||          S )r   r   )r   r   defaults      r   r   zVerbTuple.getz  s     ~!!#w///r   N)'__name__
__module____qualname____doc__r   r   r   r"   r&   r*   r-   r0   r3   r7   r<   r@   rC   rG   rJ   rM   rP   rT   rW   rZ   r]   r`   rg   ri   rl   ro   rx   ru   r   r   r   r   r   r   r   r2   r   r   r   r      s9         "$ 1 1 1 12  / / /3 3 35 5 54 4 41 1 1. . .  5 5 59 9 99 9 9; ; ;: : :< < <> > >3 3 35 5 59 9 96 6 68 8 8; ; ;  &	( 	( 	(      O O Ob3 3 3    ( ( (- - -* * *0 0 0 0 0r   r   c                      d} i ddddddddd	d
dddddddddddddddddddddddddddf}t          |          }t          |           dS )Nu
   استقلrF   r   rY   r   r\   r!   u   اِسْتَقَلَّr,   u   ستقلr_   r?   rS   rI   rO   r%   r6   u   َrB   r)   rL   rV   r9   u   قللiG  )r/   id)r   print)wordvtuplevts      r   mainr     s   DmQ 1 4 	
 a A  q a ] U a M   A  A!"  %   F& 
6		B	"III1r   __main__)typingr   pyarabic.arabyr   r   r   r   r2   r   r   <module>r      s   0            a0 a0 a0 a0 a0 a0 a0 a0H  4 zDFFFFF r   