Package libqutrub ::
Package src ::
Module classverb
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 """
24 Verb Class for conjugation
25 @author: Taha Zerrouki
26 @contact: taha dot zerrouki at gmail dot com
27 @copyright: Arabtechies, Arabeyes, Taha Zerrouki
28 @license: GPL
29 @date:2009/06/02
30 @version: 0.9
31 """
32 import copy
33 from ar_ctype import *
34 from ar_verb import *
35 from verb_const import *
36 from conjugatedisplay import *
37 import sys,re,string
38 import pyarabic.araby as araby
39
41 """
42 A Class to represent a conjugated stem
43 """
44
45
46
47 tense=u"";
48 """ the actual tense"""
49 letters=u"";
50 """ letters of the conjugated stem"""
51 marks=u"";
52 """ marks of the conjugated stem"""
54 """
55 init method
56 @param tense: the given tense;
57 @type tense: unicode.
58 @param letters: the word letters;
59 @type letters: unicode.
60 @param marks: the word marks;
61 @type marks: unicode.
62 """
63 self.tense=tense;
64 self.letters=letters;
65 self.marks=marks;
66
68 """
69 Verb Class: represent a verb, prepare it to be conjugated and store the conjugation result
70 """
71 verb=u"";
72
73 internal_verb=u"";
74 word_letters=u"";
75 word_marks=u"";
76 unvocalized=u"";
77 vlength=0;
78 vtype=u"";
79 future_type=u'';
80 transitive=u"";
81 hamza_zaida=False;
82 teh_zaida=False;
83 future_form=u"";
84 conj_display=None;
85 tab_conjug_stem=None;
86
87
89 """
90 init method
91 @param verb: the given verb;
92 @type verb: unicode.
93 @param transitive: the verb is transitive or not;
94 @type transitive: Boolean.
95 @param future_type: The mark of the third radical letter in the verb, used for triletiral verb only. Default value is Fatha;
96 @type future_type: unicode; one arabic letter (Fatha, Damma, Kasra).
97 """
98 self.verb=verb;
99 self.internal_verb=normalize(verb);
100 self.future_type=future_type;
101 (self.word_letters,self.word_marks)=uniformate_verb(verb);
102
103 self.past_haraka=araby.secondlastChar(self.word_marks);
104 self.word_marks=uniformate_alef_origin(self.word_marks,self.internal_verb,self.future_type);
105
106 self.transitive=transitive;
107 self.hamza_zaida=False;
108 self.teh_zaida=False;
109
110
111 self.tab_conjug_stem={};
112 verb=self.verb;
113
114 tab_type=[u"",u"",u"",u"فعل ثلاثي",u"فعل رباعي",u"فعل خماسي",u"فعل سداسي",u"فعل سباعي",u"فعل ثماني",u"فعل تساعي"];
115 verb=normalize(verb);
116
117 self.unvocalized=araby.stripHarakat(verb);
118 verb_nm=self.unvocalized;
119 self.vlength=len(verb_nm);
120 self.vtype=tab_type[self.vlength];
121
122
123 self.hamza_zaida=self.is_hamza_zaida(verb_nm);
124
125
126 self.teh_zaida=self.is_teh_zaida(verb_nm);
127
128
129
130
131
132
133 self.prepare_past_stem();
134 self.prepare_passive_past_stem();
135 if self.is_irregular_verb():
136 self.prepare_irregular_future_and_imperative_stem();
137
138 else:
139 self.prepare_future_and_imperative_stem();
140
141
142
143 self.conj_display=conjugatedisplay(self.verb);
144 if self.transitive :
145 self.conj_display.add_attribut(u"اللزوم/التعدي",u"متعدي");
146 else :
147 self.conj_display.add_attribut(u"اللزوم/التعدي",u"لازم");
148 self.conj_display.add_attribut(u"الفعل",self.verb);
149 self.conj_display.add_attribut(u"نوع الفعل",self.vtype);
150 self.future_form=self.conjugate_tense_pronoun(TenseFuture,PronounHuwa);
151 self.conj_display.set_future_form(self.future_form);
152 if self.transitive : self.conj_display.settransitive();
153 self.conj_display.setbab(self.future_type);
154
155
156
157
159 """
160 Set the display mode as:
161 - 'Text':
162 - 'HTML':
163 - 'HTMLColoredDiacritics':
164 - 'DICT':
165 - 'CSV':
166 - 'GUI':
167 - 'TABLE':
168 - 'XML':
169 - 'TeX':
170 - 'ROWS':
171 @param mode: the given mode to display result;
172 """
173 self.conj_display.setmode(mode)
174
176 """
177 Get The conjugation display class with result.
178 @return: an object with result.
179 @rtype: conjugatedisplay class;
180 """
181 return copy.copy(self.conj_display)
182
183
184
186 """
187 Determine if the verb starts with Teh and the Teh is not original like تفاعل,
188 Tafa3ala. The verb starting by adde teh change the first vowel of teh, the future mark will be fatha, else kasra, e.g: yatafa3'a'lu (teh added), yafta3'i'lu ( non added teh);
189 @param verb_normalized_unvocalized: the unvovalized form f the verb.
190 @type verb_normalized_unvocalized: unicde;
191 @return: return True if the start Teh is not original
192 @rtype: boolean;
193 """
194
195
196
197
198
199 return ( len(verb_normalized_unvocalized)==5 and verb_normalized_unvocalized.startswith(TEH))
200
201
203 """
204 Function to determine if the first HAMZA in the verb is not original
205 ترجع إذا كانت الهمزة الأولى في الفعل غير أصليةDetermine if the verb starts with Hamza and the Teh is not original like أضرب
206 @param verb_normalized_unvocalized: the unvovalized form f the verb.
207 @type verb_normalized_unvocalized: unicde;
208 @return: return True if the start Teh is not original
209 @rtype: boolean;
210 """
211
212
213
214
215
216
217
218
219 verb=verb_normalized_unvocalized;
220 if len(verb)!=4 or not verb.startswith(HAMZA) :return False;
221 elif len(verb)==4 and verb.startswith(HAMZA) and verb[1]!=ALEF and verb[2]!=SHADDA:
222 return True;
223 else : return False;
224
226 """
227 Treat Harakat to be homogenized with letters in conjugation.
228 إذا كان طول الحركات ألأصلية للفعل أقل من طول حركات الماضي المبني للمجهول
229 هذا يعني وجود حركة طويلة
230 نقوم بتحويل الحركة الطويلة إلى ما يوافقها
231
232 @param original_harakat: given original harakatof the verb.
233 @type original_harakat: unicode.
234 @param applied_harakat: given harakat to be applied to verb.
235 @type applied_harakat: unicode.
236 @return: nesw harakat to be applied to the verb.
237 @rtype: unicode.
238 """
239 marks=original_harakat;
240 new_marks=applied_harakat;
241
242
243
244 if len(marks)<len(new_marks):
245 alef_haraka_pos=marks.find(ALEF_HARAKA);
246 if alef_haraka_pos<0:
247 alef_haraka_pos=marks.find(ALEF_WAW_HARAKA);
248 if alef_haraka_pos<0:
249 alef_haraka_pos=marks.find(ALEF_YEH_HARAKA);
250 if alef_haraka_pos>=0 and alef_haraka_pos+1<len(new_marks):
251 first=new_marks[alef_haraka_pos];
252 second=new_marks[alef_haraka_pos+1];
253 changed_haraka=tab_homogenize_alef_haraka[first][second];
254 new_marks=new_marks[:alef_haraka_pos]+changed_haraka+new_marks[alef_haraka_pos+2:]
255 return new_marks;
256
257
258
259
261 """
262 Prepare the conjugation stems for future tenses (future, jussive, subjective) and imperative tense. Those stems will be concatenated with conjugation affixes. This function store results in self.tab_conjug_stem. This function prepare conjugation stems for the following tenses:
263 - TenseFuture : تصريف الفعل المضارع
264 - TenseJussiveFuture : تصريف الفعل المضارع المجزوم
265 - TenseSubjunctiveFuture : تصريف الفعل المضارع المنصوب
266 - TenseConfirmedFuture: المضارع المؤكد الثقيل
267 - TensePassiveFuture :تصريف الفعل المضارع المبني للمجهول
268 - TensePassiveJussiveFuture: تصريف الفعل المضارع المجزوم المني للمجهول
269 - TensePassiveSubjunctiveFuture:تصريف الفعل المضارع المنصوب
270 - TensePassiveConfirmedFuture:المضارع المؤكد الثقيل المنبي للمجهول
271 - TenseImperative:الفعل الامر
272 - TenseConfirmedImperative: الفعل الامر المؤكد.
273 """
274 letters=self.word_letters;
275 marks=self.word_marks;
276 future_letters=letters;
277
278 if self.vlength==3:
279 first_future_mark=FATHA;
280 first_passive_future_mark=DAMMA;
281 future_marks=SUKUN+self.future_type+FATHA;
282 passive_future_marks=SUKUN+FATHA+FATHA;
283
284
285
286
287 elif self.vlength==4:
288 first_future_mark=DAMMA;
289 first_passive_future_mark=DAMMA;
290 future_marks=FATHA+SUKUN+KASRA+DAMMA;
291 passive_future_marks=FATHA+SUKUN+FATHA+DAMMA;
292
293 elif self.vlength==5:
294 first_future_mark=FATHA;
295 first_passive_future_mark=DAMMA;
296 if letters.startswith(TEH):
297 future_marks=FATHA+FATHA+SUKUN+FATHA+DAMMA;
298 passive_future_marks=FATHA+FATHA+SUKUN+FATHA+DAMMA;
299 else :
300 future_marks=FATHA+SUKUN+FATHA+KASRA+DAMMA;
301 passive_future_marks=FATHA+SUKUN+FATHA+FATHA+DAMMA;
302
303 elif self.vlength==6:
304 first_future_mark=FATHA;
305 first_passive_future_mark=DAMMA;
306 future_marks=FATHA+SUKUN+FATHA+SUKUN+KASRA+DAMMA;
307 passive_future_marks=FATHA+SUKUN+FATHA+SUKUN+FATHA+DAMMA;
308
309
310
311
312 if len(marks)<len(future_marks):
313 future_marks=self.homogenize_harakat(marks,future_marks)
314 passive_future_marks=self.homogenize_harakat(marks,passive_future_marks)
315 imp_marks=future_marks;
316 imp_letters=future_letters;
317
318 if letters.startswith(ALEF) or self.hamza_zaida:
319 future_letters=letters[1:];
320 future_marks=future_marks[1:]
321 passive_future_marks=passive_future_marks[1:];
322 passive_letters=letters[1:];
323
324 elif self.vlength==3 and self.word_letters.startswith(WAW) and (self.future_type==KASRA or (self.future_type==FATHA and self.word_marks==FATHA+FATHA+FATHA)):
325 future_letters=letters[1:];
326 future_marks=future_marks[1:]
327
328 passive_letters=letters;
329 else:
330 future_letters=letters;
331 passive_letters=letters;
332 new_marks=first_future_mark+future_marks;
333 passive_marks=first_passive_future_mark+passive_future_marks;
334
335
336 if imp_letters.startswith(ALEF):
337 imp_letters=letters[1:];
338 imp_marks=imp_marks[1:]
339 elif self.vlength==3 and self.word_letters.startswith(WAW) and (self.future_type==KASRA or (self.future_type==FATHA and self.word_marks==FATHA+FATHA+FATHA)):
340 imp_letters=letters[1:];
341 imp_marks=imp_marks[1:]
342 else:
343 imp_letters=letters;
344
345
346
347
348 if self.vlength==3 and passive_letters.endswith(ALEF_MAMDUDA):
349 passive_letters=passive_letters[:-1]+ALEF_MAKSURA;
350
351
352
353
354
355 self.tab_conjug_stem[TenseFuture]=conjug_stem(TenseFuture,future_letters,new_marks);
356
357 self.tab_conjug_stem[TenseJussiveFuture]=conjug_stem(TenseJussiveFuture,future_letters,new_marks);
358 self.tab_conjug_stem[TenseSubjunctiveFuture]=conjug_stem(TenseSubjunctiveFuture,future_letters,new_marks);
359
360 self.tab_conjug_stem[TenseConfirmedFuture]=conjug_stem(TenseConfirmedFuture,future_letters,new_marks);
361
362
363 self.tab_conjug_stem[TensePassiveFuture]=conjug_stem(TensePassiveFuture,passive_letters,passive_marks);
364
365 self.tab_conjug_stem[TensePassiveJussiveFuture]=conjug_stem(TensePassiveJussiveFuture,passive_letters,passive_marks);
366 self.tab_conjug_stem[TensePassiveSubjunctiveFuture]=conjug_stem(TensePassiveSubjunctiveFuture,passive_letters,passive_marks);
367
368 self.tab_conjug_stem[TensePassiveConfirmedFuture]=conjug_stem(TensePassiveConfirmedFuture,passive_letters,passive_marks);
369
370
371 self.tab_conjug_stem[TenseImperative]=conjug_stem(TenseImperative,imp_letters,imp_marks);
372
373 self.tab_conjug_stem[TenseConfirmedImperative]=conjug_stem(TenseConfirmedImperative,imp_letters,imp_marks);
374
375
377 """
378 Prepare the conjugation stems for past tense.
379 Those stems will be concatenated with conjugation affixes.
380 This function store results in self.tab_conjug_stem. This function prepare conjugation stems for the following tenses:
381 - TensePast: الفعل الماضي.
382 """
383 self.past_stem=self.internal_verb;
384 self.tab_conjug_stem[TensePast]=conjug_stem(TensePast,self.word_letters,self.word_marks);
385
386
422
424 """
425 Conjugate a verb in a given tense with a pronoun.
426 @param tense: given tense;
427 @type tense: unicode name of the tense;
428 @param pronoun: given pronoun;
429 @type pronoun: unicode name of the pronoun;
430 @return: conjugated verb;
431 @rtype: unicode;
432 """
433
434 pre_val=TableTensePronoun[tense][pronoun][0];
435
436 suf_val=TableTensePronoun[tense][pronoun][1];
437 stem_l=self.tab_conjug_stem[tense].letters;
438 stem_m=self.tab_conjug_stem[tense].marks;
439
440
441
442
443 if pre_val!=u"":
444 pre_val_l=pre_val;
445 pre_val_m=stem_m[0];
446 stem_m=stem_m[1:];
447 else:
448 pre_val_l=u"";
449 pre_val_m=u"";
450
451
452
453 suf_val=TATWEEL+suf_val;
454
455 (suf_val_l,suf_val_m)=uniformate_suffix(suf_val);
456
457 conj_l=pre_val_l+stem_l+suf_val_l;
458
459 conj_m=pre_val_m+stem_m[:-1]+suf_val_m;
460
461 conj_l=pre_val_l+stem_l+suf_val_l[1:];
462
463
464 conj_m=treat_sukun2(conj_l,conj_m,self.future_type);
465
466 conj=standard2(conj_l,conj_m);
467 return conj;
468
469
470
471
472
473
474
476 """
477 Conjugate a verb with a list of tenses.
478 @param listtense: given tense;
479 @type listtense: list of unicode;
480 @return: conjugated verb ;
481 @rtype: the type is given according to the display mode;
482 """
483 for tense in listtense:
484 if tense==TensePast:
485 conj_ana=self.conjugate_tense_pronoun(tense,PronounAna);
486 self.conj_display.add(tense,PronounAna,conj_ana);
487 conj_ana_without_last_mark=conj_ana[:-1];
488 self.conj_display.add(tense,PronounAnta,conj_ana_without_last_mark+FATHA);
489 self.conj_display.add(tense,PronounAnti,conj_ana_without_last_mark+KASRA);
490 self.conj_display.add(tense,PronounAntuma,conj_ana+MEEM+FATHA+ALEF);
491 self.conj_display.add(tense,PronounAntuma_f,conj_ana+MEEM+FATHA+ALEF);
492 self.conj_display.add(tense,PronounAntum,conj_ana+MEEM);
493 self.conj_display.add(tense,PronounAntunna,conj_ana+NOON+SHADDA+FATHA)
494 self.conj_display.add(tense,PronounAna,conj_ana);
495
496 conj_nahnu=self.conjugate_tense_pronoun(tense,PronounNahnu);
497 self.conj_display.add(tense,PronounNahnu,conj_nahnu);
498
499 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
500 self.conj_display.add(tense,PronounHunna,conj_hunna);
501
502 conj_huma=self.conjugate_tense_pronoun(tense,PronounHuma);
503 self.conj_display.add(tense,PronounHuma,conj_huma);
504
505 conj_hum=self.conjugate_tense_pronoun(tense,PronounHum);
506 self.conj_display.add(tense,PronounHum,conj_hum);
507
508 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
509 self.conj_display.add(tense,PronounHunna,conj_hunna);
510
511 conj_huwa=self.conjugate_tense_pronoun(tense,PronounHuwa);
512 self.conj_display.add(tense,PronounHuwa,conj_huwa);
513 conj_hya=self.conjugate_tense_pronoun(tense,PronounHya);
514 self.conj_display.add(tense,PronounHya,conj_hya);
515 self.conj_display.add(tense,PronounHuma_f,conj_hya[:-1]+FATHA+ALEF);
516 elif tense ==TensePassivePast:
517 conj_ana=self.conjugate_tense_pronoun(tense,PronounAna);
518 self.conj_display.add(tense,PronounAna,conj_ana);
519 conj_ana_without_last_mark=conj_ana[:-1];
520 self.conj_display.add(tense,PronounAnta,conj_ana_without_last_mark+FATHA);
521 self.conj_display.add(tense,PronounAnti,conj_ana_without_last_mark+KASRA);
522 self.conj_display.add(tense,PronounAntuma,conj_ana+MEEM+FATHA+ALEF);
523 self.conj_display.add(tense,PronounAntuma_f,conj_ana+MEEM+FATHA+ALEF);
524 self.conj_display.add(tense,PronounAntum,conj_ana+MEEM);
525 self.conj_display.add(tense,PronounAntunna,conj_ana+NOON+SHADDA+FATHA)
526 self.conj_display.add(tense,PronounAna,conj_ana);
527
528 conj_nahnu=self.conjugate_tense_pronoun(tense,PronounNahnu);
529 self.conj_display.add(tense,PronounNahnu,conj_nahnu);
530
531 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
532 self.conj_display.add(tense,PronounHunna,conj_hunna);
533
534 conj_hunna=self.conjugate_tense_pronoun(tense,PronounHunna);
535 self.conj_display.add(tense,PronounHunna,conj_hunna);
536
537 conj_huwa=self.conjugate_tense_pronoun(tense,PronounHuwa);
538 self.conj_display.add(tense,PronounHuwa,conj_huwa);
539
540 if conj_huwa.endswith(YEH+HAMZA+FATHA) :
541 self.conj_display.add(tense,PronounHya,conj_huwa[:-2]+YEH_HAMZA+FATHA+TEH+SUKUN);
542 self.conj_display.add(tense,PronounHuma_f,conj_huwa[:-2]+YEH_HAMZA+FATHA+TEH+FATHA+ALEF);
543
544 self.conj_display.add(tense,PronounHuma,conj_huwa[:-2]+YEH_HAMZA+FATHA+ALEF);
545
546
547 self.conj_display.add(tense,PronounHum,conj_huwa[:-2]+YEH_HAMZA+DAMMA+WAW+ALEF);
548
549 else :
550 self.conj_display.add(tense,PronounHya,conj_huwa+TEH+SUKUN);
551 self.conj_display.add(tense,PronounHuma_f,conj_huwa+TEH+FATHA+ALEF);
552 self.conj_display.add(tense,PronounHuma,conj_huwa+ALEF);
553 if conj_huwa.endswith(KASRA+YEH+FATHA):
554 self.conj_display.add(tense,PronounHum,conj_huwa[:-3]+DAMMA+WAW+ALEF);
555 else:
556 self.conj_display.add(tense,PronounHum,conj_huwa[:-1]+DAMMA+WAW+ALEF);
557 elif tense in (TenseFuture,TensePassiveFuture,TenseJussiveFuture,TenseSubjunctiveFuture,TenseConfirmedFuture,TensePassiveJussiveFuture,TensePassiveSubjunctiveFuture,TensePassiveConfirmedFuture):
558 conj_ana=self.conjugate_tense_pronoun(tense,PronounAna);
559 self.conj_display.add(tense,PronounAna,conj_ana);
560
561 conj_anta=self.conjugate_tense_pronoun(tense,PronounAnta);
562 self.conj_display.add(tense,PronounAnta,conj_anta);
563 conj_anta_without_future_letter=conj_anta[1:];
564
565 self.conj_display.add(tense,PronounNahnu,NOON+conj_anta_without_future_letter);
566 self.conj_display.add(tense,PronounHuwa,YEH+conj_anta_without_future_letter);
567 self.conj_display.add(tense,PronounHya,TEH+conj_anta_without_future_letter);
568
569 conj_anti=self.conjugate_tense_pronoun(tense,PronounAnti);
570 self.conj_display.add(tense,PronounAnti,conj_anti);
571
572 conj_antuma=self.conjugate_tense_pronoun(tense,PronounAntuma);
573 self.conj_display.add(tense,PronounAntuma,conj_antuma);
574 self.conj_display.add(tense,PronounAntuma_f,conj_antuma);
575 self.conj_display.add(tense,PronounHuma_f,conj_antuma);
576 self.conj_display.add(tense,PronounHuma,YEH+conj_antuma[1:]);
577
578 conj_antum=self.conjugate_tense_pronoun(tense,PronounAntum);
579 self.conj_display.add(tense,PronounAntum,conj_antum);
580 self.conj_display.add(tense,PronounHum,YEH+conj_antum[1:]);
581
582 conj_antunna=self.conjugate_tense_pronoun(tense,PronounAntunna);
583 self.conj_display.add(tense,PronounAntunna,conj_antunna);
584 self.conj_display.add(tense,PronounHunna,YEH+conj_antunna[1:]);
585 elif tense ==TenseImperative or tense ==TenseConfirmedImperative:
586 for pron in ImperativePronouns:
587 conj=self.conjugate_tense_pronoun(tense,pron);
588 self.conj_display.add(tense,pron,conj);
589 if not self.transitive:
590 for tense in TablePassiveTense:
591 for pron in PronounsTableNotPassiveForUntransitive:
592 self.conj_display.add(tense,pron,u"");
593
594 result=self.conj_display.display(self.conj_display.mode,listtense);
595 if result: return result;
596
597
598
599
600
601
602
603
605 """
606 Return True if the verb is irregular, founded in the irregular verb table
607 إرجاع إّذا كان الفعل ضاذا.
608 الأفعال العربية الخاصة هي
609 رأى، أكل أمر سأل،
610 ج- إذا كان يتصرف من باب (مَنَعَ يَمْنَعُ)، تحذف واوه, نحو: وَضَعَ، يَضَعُ، وَجَأَ يَجَأُ، وَدَعَ يَدَعُ، وَزَعَ يَزَعُ، وَضَأَ يَضَأُ، وَطَأَ يَطَأُ، وَقَعَ يَقَعُ، وَلَغَ يَلَغُ، وَهَبَ يَهَبُ، عدا خمسة أفعال هي: (وَبَأ)، و(وَبَهَ)، و(وَجَعَ)، و(وَسَعَ)، و(وَهَلَ)، فلا تحذف منها الواو؛ فنقول: يَوْبَأُ، يَوْبَهُ، يَوْجَعُ، يَوْسَعُ، يَوْهَلُ. الأفعال (وَبَأ)، و(وَبَهَ)، و(وَجَعَ)، و(وَسَعَ)، و(وَهَلَ)، الفعل وبَأ يوبأ
611
612 @return:True if irregular;
613 @rtype: Boolean;
614 """
615 if len(self.word_letters)!=3: return False;
616 else:
617
618 key=self.word_letters+self.past_haraka+self.future_type
619 if IrregularVerbsConjug.has_key(key ):
620 return True;
621
622
623 return False;
624
637
650
663
664
665
666
667
668
670 """
671 Prepare the conjugation stems for future tenses (future, jussive, subjective) and imperative tense.
672 Those stems will be concatenated with conjugation affixes.
673 """
674
675 if self.is_irregular_verb():
676 (l,m)=self.get_irregular_future_stem();
677
678
679 self.tab_conjug_stem[TenseFuture]=conjug_stem(TenseFuture,l,m);
680 self.tab_conjug_stem[TenseJussiveFuture]=conjug_stem(TenseJussiveFuture,l,m);
681 self.tab_conjug_stem[TenseSubjunctiveFuture]=conjug_stem(TenseSubjunctiveFuture,l,m);
682 self.tab_conjug_stem[TenseConfirmedFuture]=conjug_stem(TenseConfirmedFuture,l,m);
683
684
685 (l1,m1)=self.get_irregular_passivefuture_stem();
686
687 self.tab_conjug_stem[TensePassiveFuture]=conjug_stem(TensePassiveFuture,l1,m1);
688 self.tab_conjug_stem[TensePassiveJussiveFuture]=conjug_stem(TensePassiveJussiveFuture,l1,m1);
689 self.tab_conjug_stem[TensePassiveSubjunctiveFuture]=conjug_stem(TensePassiveSubjunctiveFuture,l1,m1);
690 self.tab_conjug_stem[TensePassiveConfirmedFuture]=conjug_stem(TensePassiveConfirmedFuture,l1,m1);
691
692
693 (l2,m2)=self.get_irregular_imperative_stem();
694 self.tab_conjug_stem[TenseImperative]=conjug_stem(TenseImperative,l2,m2);
695 self.tab_conjug_stem[TenseConfirmedImperative]=conjug_stem(TenseConfirmedImperative,l2,m2);
696
697 return False;
698