def past_participle_dp5d(src_dict) -> list: name = src_dict['name'] gpm = list( filter(lambda x: x.idf == '.ГПм', get_past_tense_forms(src_dict)))[0].name if not name.endswith(('ся', 'сь')): word_forms = [ WordForm(f'{gpm[:-1]}дши', '.ДП'), ] else: word_forms = [ WordForm(f'{gpm[:-3]}дшись', '.ДП'), ] return word_forms
def past_participle_dp9_dash_and_4(src_dict) -> list: name = src_dict['name'] gpm = list( filter(lambda x: x.idf == '.ГПм', get_past_tense_forms(src_dict)))[0].name if not name.endswith(('ся', 'сь')): word_forms = [ WordForm(f'{name[:-2]}в', '.ДП1'), WordForm(f'{gpm}ши', '.ДП2'), ] else: word_forms = [ WordForm(f'{name[:-4]}вшись', '.ДП1'), WordForm(f'{gpm[:-2]}шись', '.ДП2'), ] return word_forms
def past_participle_dp7(src_dict) -> list: name = src_dict['name'] gpm = list( filter(lambda x: x.idf == '.ГПм', get_past_tense_forms(src_dict)))[0].name gnb2e = list( filter(lambda x: x.idf == '.ГНБ2е', get_present_future_forms(src_dict)))[0].name if not name.endswith(('ся', 'сь')): word_forms = [ WordForm(f'{gpm}ши', '.ДП'), WordForm(f'{gnb2e[:-3]}а', '.ДП!'), ] else: word_forms = [ WordForm(f'{gpm[:-2]}шись', '.ДП'), WordForm(f'{gnb2e[:-5]}ась', '.ДП!'), ] return word_forms
def past_participle_is_valid_ppd1d(src_dict) -> list: name = src_dict['name'] gpm = list( filter(lambda x: x.idf == '.ГПм', get_past_tense_forms(src_dict)))[0].name if not name.endswith(('ся', 'сь')): ppdmi = f'{gpm[:-1]}дший' word_forms = [ WordForm(ppdmi, '.ППДмИ'), WordForm(f'{ppdmi[:-2]}его', '.ППДмР'), WordForm(f'{ppdmi[:-2]}ему', '.ППДмД'), WordForm(ppdmi, '.ППДмВ'), WordForm(f'{ppdmi[:-2]}им', '.ППДмТ'), WordForm(f'{ppdmi[:-2]}ем', '.ППДмП'), WordForm(f'{ppdmi[:-2]}ая', '.ППДжИ'), WordForm(f'{ppdmi[:-2]}ей', '.ППДжР'), WordForm(f'{ppdmi[:-2]}ей', '.ППДжД'), WordForm(f'{ppdmi[:-2]}ую', '.ППДжВ'), WordForm(f'{ppdmi[:-2]}ей', '.ППДжТ1'), WordForm(f'{ppdmi[:-2]}ею', '.ППДжТ2'), WordForm(f'{ppdmi[:-2]}ей', '.ППДжП'), WordForm(f'{ppdmi[:-2]}ее', '.ППДсИ'), WordForm(f'{ppdmi[:-2]}его', '.ППДсР'), WordForm(f'{ppdmi[:-2]}ему', '.ППДсД'), WordForm(f'{ppdmi[:-2]}ее', '.ППДсВ'), WordForm(f'{ppdmi[:-2]}им', '.ППДсТ'), WordForm(f'{ppdmi[:-2]}ем', '.ППДсП'), WordForm(f'{ppdmi[:-2]}ие', '.ППДмнИ'), WordForm(f'{ppdmi[:-2]}их', '.ППДмнР'), WordForm(f'{ppdmi[:-2]}им', '.ППДмнД'), WordForm(f'{ppdmi[:-2]}ие', '.ППДмнВ'), WordForm(f'{ppdmi[:-2]}ими', '.ППДмнТ'), WordForm(f'{ppdmi[:-2]}их', '.ППДмнП'), ] else: ppdmi = f'{gpm[:-3]}дшийся' word_forms = [ WordForm(ppdmi, '.ППДмИ'), WordForm(f'{ppdmi[:-4]}егося', '.ППДмР'), WordForm(f'{ppdmi[:-4]}емуся', '.ППДмД'), WordForm(ppdmi, '.ППДмВ'), WordForm(f'{ppdmi[:-4]}имся', '.ППДмТ'), WordForm(f'{ppdmi[:-4]}емся', '.ППДмП'), WordForm(f'{ppdmi[:-4]}аяся', '.ППДжИ'), WordForm(f'{ppdmi[:-4]}ейся', '.ППДжР'), WordForm(f'{ppdmi[:-4]}ейся', '.ППДжД'), WordForm(f'{ppdmi[:-4]}уюся', '.ППДжВ'), WordForm(f'{ppdmi[:-4]}ейся', '.ППДжТ1'), WordForm(f'{ppdmi[:-4]}еюся', '.ППДжТ2'), WordForm(f'{ppdmi[:-4]}ейся', '.ППДжП'), WordForm(f'{ppdmi[:-4]}ееся', '.ППДсИ'), WordForm(f'{ppdmi[:-4]}егося', '.ППДсР'), WordForm(f'{ppdmi[:-4]}емуся', '.ППДсД'), WordForm(f'{ppdmi[:-4]}ееся', '.ППДсВ'), WordForm(f'{ppdmi[:-4]}имся', '.ППДсТ'), WordForm(f'{ppdmi[:-4]}емся', '.ППДсП'), WordForm(f'{ppdmi[:-4]}иеся', '.ППДмнИ'), WordForm(f'{ppdmi[:-4]}ихся', '.ППДмнР'), WordForm(f'{ppdmi[:-4]}имся', '.ППДмнД'), WordForm(f'{ppdmi[:-4]}иеся', '.ППДмнВ'), WordForm(f'{ppdmi[:-4]}имися', '.ППДмнТ'), WordForm(f'{ppdmi[:-4]}ихся', '.ППДмнП'), ] return word_forms
def get_group_word_form(src_dict: dict) -> GroupWordForm: name = src_dict['name'] inf_0 = src_dict['Inf_0'] if inf_0: info = [src_dict['Inf_0'], src_dict['Inf_1']] info += list( filter(None, [ src_dict['Inf_2'], src_dict['Inf_3'], src_dict['Inf_4'], src_dict['Inf_5'], src_dict['Inf_6'], src_dict['Inf_7'], src_dict['Inf_8'], src_dict['Inf_9'], src_dict['Inf_10'], src_dict['Inf_11'], src_dict['Inf_12'], ])) word_forms = [] if src_dict['Inf_3']: present_future_forms = get_present_future_forms(src_dict) word_forms += present_future_forms if src_dict['Inf_4']: past_tense_forms = get_past_tense_forms(src_dict) word_forms += past_tense_forms if src_dict['Inf_5']: imperative_mood_forms = get_imperative_mood_forms(src_dict) word_forms += imperative_mood_forms if src_dict['Inf_6']: joint_action_forms = get_joint_action_forms(src_dict) word_forms += joint_action_forms if src_dict['Inf_7']: present_participle_is_valid_forms = get_present_participle_is_valid( src_dict) word_forms += present_participle_is_valid_forms if src_dict['Inf_8']: passive_present_participle_forms = get_passive_present_participle( src_dict) word_forms += passive_present_participle_forms if src_dict['Inf_9']: past_participle_is_valid_forms = get_past_participle_is_valid( src_dict) word_forms += past_participle_is_valid_forms if src_dict['Inf_10']: passive_past_participle_forms = get_passive_past_participle( src_dict) word_forms += passive_past_participle_forms if src_dict['Inf_11']: present_participle_forms = get_present_participle(src_dict) word_forms += present_participle_forms if src_dict['Inf_12']: past_participle_forms = get_past_participle(src_dict) word_forms += past_participle_forms if name.endswith(('шел', 'шелся')): title_word_form = TitleWordForm(name, word_forms[0].idf, info, '') return GroupWordForm(title_word_form, word_forms[1:]) else: title_word_form = TitleWordForm(name, '.ГИ', info, '') return GroupWordForm(title_word_form, word_forms) else: title_word_form = TitleWordForm(name, '', [], '') return GroupWordForm(title_word_form, [])