11import logging
22
33from verbecc .src .defs .types .gender import Gender
4+ from verbecc .src .defs .types .mood import Mood
5+ from verbecc .src .defs .types .tense import Tense
6+ from verbecc .src .defs .types .conjugation import ConjugationInfo
47from verbecc .src .defs .constants .config import DEVEL_MODE
58
69logging_level = logging .CRITICAL + 1 # effectively disables logging
2932 InvalidMoodError ,
3033 InvalidTenseError ,
3134)
32- from verbecc .src .defs .types .data_types import (
35+ from verbecc .src .defs .types .conjugation import (
3336 PersonConjugation ,
3437 TenseConjugation ,
3538 MoodConjugation ,
@@ -54,7 +57,7 @@ def __init__(self, lang: str):
5457
5558 def conjugate (
5659 self ,
57- infinitive ,
60+ infinitive : str ,
5861 include_alternates : bool = False ,
5962 gender : Gender = Gender .Masculine ,
6063 conjugate_pronouns : bool = True ,
@@ -74,26 +77,26 @@ def conjugate(
7477 alternates_behavior = AlternatesBehavior .All
7578 co = self ._get_conj_obs (infinitive )
7679 moods : MoodsConjugation = {}
77- for mood in co .template .moods :
78- moods [mood ] = self ._conjugate_mood (
79- co , mood , alternates_behavior , gender , conjugate_pronouns
80+ for mood_name , _ in co .template .mood_templates . items () :
81+ moods [mood_name ] = self ._conjugate_mood (
82+ co , mood_name , alternates_behavior , gender , conjugate_pronouns
8083 )
8184 return {
82- "verb" : {
83- "infinitive" : co .verb .infinitive ,
84- "predicted" : co .verb .predicted ,
85- "pred_score" : co .verb .pred_score ,
86- "template" : co .verb .template ,
87- "translation_en" : co .verb .translation_en ,
88- "stem" : co .verb_stem ,
89- } ,
85+ "verb" : ConjugationInfo (
86+ co .verb .infinitive ,
87+ co .verb .predicted ,
88+ co .verb .pred_score ,
89+ co .verb .template ,
90+ co .verb .translation_en ,
91+ co .verb_stem ,
92+ ). data ,
9093 "moods" : moods ,
9194 }
9295
9396 def conjugate_mood (
9497 self ,
9598 infinitive : str ,
96- mood_name : str ,
99+ mood_name : Mood ,
97100 alternates_behavior : AlternatesBehavior = AlternatesBehavior .FirstOnly ,
98101 gender : Gender = Gender .Masculine ,
99102 conjugate_pronouns : bool = True ,
@@ -139,8 +142,8 @@ def get_verbs_that_start_with(self, query: str, max_results: int) -> List[str]:
139142 def conjugate_mood_tense (
140143 self ,
141144 infinitive : str ,
142- mood_name : str ,
143- tense_name : str ,
145+ mood_name : Mood ,
146+ tense_name : Tense ,
144147 alternates_behavior : AlternatesBehavior = AlternatesBehavior .FirstOnly ,
145148 gender : Gender = Gender .Masculine ,
146149 conjugate_pronouns : bool = True ,
@@ -153,12 +156,12 @@ def conjugate_mood_tense(
153156 def _conjugate_mood (
154157 self ,
155158 co : ConjugationObjects ,
156- mood_name : str ,
159+ mood_name : Mood ,
157160 alternates_behavior : AlternatesBehavior ,
158161 gender : Gender = Gender .Masculine ,
159162 conjugate_pronouns : bool = True ,
160163 ) -> MoodConjugation :
161- if mood_name not in co .template .moods :
164+ if mood_name not in co .template .mood_templates . keys () :
162165 raise InvalidMoodError
163166 ret = {}
164167 ret .update (
@@ -176,8 +179,8 @@ def _conjugate_mood(
176179 def _conjugate_mood_tense (
177180 self ,
178181 co : ConjugationObjects ,
179- mood_name : str ,
180- tense_name : str ,
182+ mood_name : Mood ,
183+ tense_name : Tense ,
181184 alternates_behavior : AlternatesBehavior ,
182185 gender : Gender = Gender .Masculine ,
183186 conjugate_pronouns : bool = True ,
@@ -201,10 +204,10 @@ def _conjugate_mood_tense(
201204 conjugate_pronouns = conjugate_pronouns ,
202205 )
203206 else :
204- mood = co .template .moods [mood_name ]
205- if tense_name not in mood . tenses :
207+ mood_template = co .template .mood_templates [mood_name ]
208+ if tense_name not in mood_template . tense_templates :
206209 raise InvalidTenseError
207- tense_template = mood . tenses [tense_name ]
210+ tense_template = mood_template . tense_templates [tense_name ]
208211 return self ._conjugate_simple_mood_tense (
209212 co .verb_stem ,
210213 mood_name ,
@@ -221,14 +224,14 @@ def _conjugate_mood_tense(
221224 def _get_simple_conjugations_for_mood (
222225 self ,
223226 co : ConjugationObjects ,
224- mood_name : str ,
227+ mood_name : Mood ,
225228 alternates_behavior : AlternatesBehavior ,
226229 gender : Gender = Gender .Masculine ,
227230 conjugate_pronouns : bool = True ,
228231 ) -> MoodConjugation :
229232 ret = {}
230- mood = co .template .moods [mood_name ]
231- for tense_name in mood . tenses :
233+ mood_template = co .template .mood_templates [mood_name ]
234+ for tense_name in mood_template . tense_templates :
232235 ret [tense_name ] = self ._conjugate_mood_tense (
233236 co ,
234237 mood_name ,
@@ -242,7 +245,7 @@ def _get_simple_conjugations_for_mood(
242245 def _get_compound_conjugations_for_mood (
243246 self ,
244247 co : ConjugationObjects ,
245- mood_name : str ,
248+ mood_name : Mood ,
246249 alternates_behavior : AlternatesBehavior ,
247250 gender : Gender ,
248251 conjugate_pronouns = True ,
@@ -264,10 +267,10 @@ def _get_compound_conjugations_for_mood(
264267 def _conjugate_compound (
265268 self ,
266269 co : ConjugationObjects ,
267- mood_name : str ,
268- tense_name : str ,
269- aux_mood_name : str ,
270- aux_tense_name : str ,
270+ mood_name : Mood ,
271+ tense_name : Tense ,
272+ aux_mood_name : Mood ,
273+ aux_tense_name : Tense ,
271274 aux_uses_alternate : bool ,
272275 alternates_behavior : AlternatesBehavior ,
273276 gender : Gender = Gender .Masculine ,
@@ -283,18 +286,20 @@ def _conjugate_compound(
283286 ):
284287 return ret
285288 persons_mood_name = mood_name
286- if mood_name not in co .template .moods :
289+ if mood_name not in co .template .mood_templates . keys () :
287290 persons_mood_name = self ._inflector ._get_indicative_mood_name ()
288291 persons = [
289292 pe .person
290- for pe in co .template .moods [persons_mood_name ]
291- .tenses [aux_tense_name ]
293+ for pe in co .template .mood_templates [persons_mood_name ]
294+ .tense_templates [aux_tense_name ]
292295 .person_endings
293296 ]
294297 aux_verb = self ._inflector ._get_auxilary_verb (co , mood_name , tense_name )
295298 aux_co = self ._get_conj_obs (aux_verb )
296299 aux_tense_template = copy .deepcopy (
297- aux_co .template .moods [aux_mood_name ].tenses [aux_tense_name ]
300+ aux_co .template .mood_templates [aux_mood_name ].tense_templates [
301+ aux_tense_name
302+ ]
298303 )
299304 aux_person_endings = []
300305 for pe in aux_tense_template .person_endings :
@@ -347,8 +352,8 @@ def _conjugate_compound(
347352 def _conjugate_compound_primary_verb (
348353 self ,
349354 co : ConjugationObjects ,
350- mood_name : str ,
351- tense_name : str ,
355+ mood_name : Mood ,
356+ tense_name : Tense ,
352357 persons : List [Person ],
353358 aux_verb : str ,
354359 aux_conj : List [str ],
@@ -385,7 +390,7 @@ def _conjugate_compound_primary_verb(
385390 p_conj = self ._conjugate_simple_mood_tense (
386391 co .verb_stem ,
387392 p_mood ,
388- co .template .moods [p_mood ].tenses [p_tense ],
393+ co .template .mood_templates [p_mood ].tense_templates [p_tense ],
389394 False ,
390395 AlternatesBehavior .FirstOnly ,
391396 gender = gender ,
@@ -502,7 +507,7 @@ def _conjugate_compound_primary_verb(
502507 def _conjugate_simple_mood_tense (
503508 self ,
504509 verb_stem : str ,
505- mood_name : str ,
510+ mood_name : Mood ,
506511 tense_template : TenseTemplate ,
507512 is_reflexive : bool = False ,
508513 alternates_behavior : AlternatesBehavior = AlternatesBehavior .FirstOnly ,
0 commit comments