Coverage for src/wiktextract/extractor/ru/tags.py: 85%

41 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-11-03 05:44 +0000

1from typing import Union 

2 

3from .models import WordEntry 

4 

5# https://ru.wiktionary.org/wiki/Викисловарь:Условные_сокращения 

6# Стиль 

7STYLE_TAGS: dict[str, Union[str, list[str]]] = { 

8 "бран.": "offensive", 

9 "вульг.": "vulgar", 

10 "высок.": "honorific", 

11 "гипокор.": "familiar", 

12 "груб.": "vulgar", 

13 "детск.": "childish", 

14 "диал.": "dialectal", 

15 # "дисфм.": "дисфемизм", 

16 "жарг.": "slang", 

17 "ирон.": "ironic", 

18 "истор.": "historical", 

19 # "канц.": "канцелярское", 

20 "книжн.": "literary", 

21 "ласк.": "diminutive", 

22 # "мол.": "молодёжное", 

23 "нар.-поэт.": "poetic", 

24 "нар.-разг.": "colloquial", 

25 # "научн.": "научное", 

26 "неодобр.": "disapproving", 

27 "неол.": "neologism", 

28 "обсц.": "vulgar", 

29 "офиц.": "formal", 

30 # "патет.": "патетическое", 

31 "поэт.": "poetic", 

32 "презр.": "contemplative", 

33 "пренебр.": "derogatory", 

34 "прост.": "colloquial", 

35 # "проф.": "профессиональное", 

36 # "публиц.": "публицистическое", 

37 "разг.": "colloquial", 

38 "рег.": "regional", 

39 "ритор.": "rhetoric", 

40 "сленг.": "slang", 

41 "сниж.": "reduced", 

42 # "советск.": "советизм", 

43 "спец.": "special", 

44 "старин.": "archaic", 

45 "табу": "taboo", 

46 # "торж.": "торжественное", 

47 "трад.-нар.": "traditional", 

48 "трад.-поэт.": ["traditional", "poetic"], 

49 # "увелич.": "увеличительное", 

50 "уменьш.": "diminutive", 

51 "умласк.": ["diminutive", "endearing"], 

52 "унич.": "pejorative", 

53 "усилит.": "emphatic", 

54 "устар.": "obsolete", 

55 "фам.": "familiar", 

56 # "школьн.": "школьное", 

57 "шутл.": "humorous", 

58 "эвф.": "euphemistic", 

59 # "экзот.": "экзотизм", 

60 "экспр.": "expressively", 

61 # "эррат.": "эрративное", 

62 # Категория:Стилистические пометы 

63 "неофиц.": "informal", 

64 "одобр.": "approving", 

65 "сленг": "slang", 

66 "уважит.": "polite", 

67 "уничиж.": "derogatory", 

68} 

69 

70# Предметные области 

71TOPICS = { 

72 "авиац.": "aeronautics", 

73 "автомоб.": "automotive", 

74 "агрон.": "agriculture", 

75 "алхим.": "pseudoscience", 

76 "альп.": "sports", 

77 "анат.": "medicine", 

78 "антроп.": "anthropology", 

79 "артилл.": "weaponry", 

80 "археол.": "history", 

81 "архит.": "architecture", 

82 "астрол.": "astrology", 

83 "астрон.": "astronomy", 

84 "библейск.": "religion", 

85 "биол.": "biology", 

86 "биохим.": "biochemistry", 

87 "ботан.": "botany", 

88 "бухг.": "finance", 

89 "вет.": "zoology pathology", 

90 "воен.": "military", 

91 "гастрон.": "medicine", 

92 "генет.": ["biology", "medicine"], 

93 "геогр.": "geography", 

94 "геод.": "geography", 

95 "геол.": "geology", 

96 "геометр.": "geometry", 

97 "геофиз.": "geology", 

98 "геральд.": "heraldry", 

99 "гидрол.": "geography", 

100 "гидротехн.": "engineering", 

101 "гляциол.": "geography", 

102 "горн.": "mining", 

103 "дипл.": "politics", 

104 "ж.-д.": "railways", 

105 "живоп.": "arts", 

106 # "животн.": "животноводство", 

107 "зоол.": "zoology", 

108 "игр.": "games", 

109 "информ.": "computing", 

110 "искусств.": "art-history", 

111 "ислам.": "Islam", 

112 "ихтиол.": "ichthyology", 

113 # "йогич.": "йогическое", 

114 "карт.": "card-games", 

115 "керам.": ["chemistry", "engineering"], 

116 "кино": "film", 

117 "кинол.": "dogs", 

118 "комп.": "computing", 

119 "косм.": "astronomy", 

120 "кулин.": "cuisine", 

121 # "культурол.": "культурологическое", 

122 "лес.": "business", 

123 "лингв.": "linguistics", 

124 "матем.": "mathematics", 

125 "машин.": "engineering", 

126 "мед.": "medicine", 

127 "металл.": "metallurgy", 

128 "метеорол.": "meteorology", 

129 "мех.": "mechanical-engineering", 

130 "микробиол.": "microbiology", 

131 "минер.": "mineralogy", 

132 "мифол,": "mythology", 

133 "морск.": "nautical", 

134 "муз.": "music", 

135 # "нефтегаз.": "нефтегазовая промышленность и нефтепереработка", 

136 "нумизм.": "numismatics", 

137 "океан.": "oceanography", 

138 "оккульт.": "mysticism", 

139 "опт.": ["physics", "engineering"], 

140 "орнитол.": "ornithology", 

141 "охотн.": "hunting", 

142 "палеонт.": "paleontology", 

143 "паразит.": "medicine", 

144 "парикмах.": "hairdressing", 

145 "плотн.": "carpentry", 

146 "полигр.": "printing", 

147 "полит.": "politics", 

148 "портн.": "textiles", 

149 "прогр.": "programming", 

150 "психиатр.": "psychiatry", 

151 "психол.": "psychology", 

152 "пчел.": "agriculture", 

153 "радио.": ["radio", "engineering"], 

154 "радиоэл.": ["radio", "electricity"], 

155 "рекл.": "marketing", 

156 "религ.": "religion", 

157 "рыбол.": "fishing", 

158 "с.-х.": "agriculture", 

159 "сексол.": "sexuality", 

160 # "скорн.": "скорняжное дело", 

161 "социол.": "sociology", 

162 # "спелеол.": "спелеологический", 

163 "спорт.": "sports", 

164 "стат.": "statistics", 

165 "столярн.": "carpentry", 

166 "строит.": "construction", 

167 "театр.": "theater", 

168 "текст.": "textiles", 

169 "телеком.": "telecommunications", 

170 "техн.": "engineering", 

171 "торг.": "commerce", 

172 "управл.": "management", 

173 "фант.": "fantasy", 

174 "фарм.": "pharmacology", 

175 "физ.": "physics", 

176 "физиол.": "physiology", 

177 "филат.": "philately", 

178 "филол.": "philology", 

179 "филос.": "philosophy", 

180 "фин.": "finance", 

181 "фолькл.": "folklore", 

182 "фотогр.": "photography", 

183 "хим.": "chemistry", 

184 "хоз.": "economics", 

185 # "хореогр.": "хореографическое", 

186 "церк.": "religion", 

187 "цирк.": "circus", 

188 "цитол.": "cytology", 

189 "шахм.": "chess", 

190 "швейн.": "sewing", 

191 "экол.": "ecology", 

192 "экон.": "economics", 

193 "эл.-техн.": "electrical-engineering", 

194 "эл.-энерг.": "electricity", 

195 "энтомол.": "entomology", 

196 "этногр": "ethnography", 

197 "этнолог.": "ethnology", 

198 "ювел.": "jewelry", 

199 "юр.": "legal", 

200 # Категория:Стилистические пометы 

201 "бизн.": "business", 

202} 

203 

204# Жаргон 

205SLANG_TOPICS = { 

206 "автомоб. жарг.": "motorcycling", 

207 "арест.": "prison", 

208 "воен. жарг.": "military", 

209 "жарг. аним.": "anime", 

210 # "жарг. викип.": "жаргон википроектов" 

211 "интернет.": "Internet", 

212 "комп. жарг.": "computer", 

213 # "студ. жарг.": "студенческий жаргон", 

214 "техн. жарг.": "technical", 

215 "крим. и крим. жарг.": "criminology", 

216 "полит. жарг.": "politics", 

217 "жарг. нарк.": "drugs", 

218 "жарг. ЛГБТ": "LGBT", 

219 # "жарг. гом.": "жаргон гомосексуалов", 

220} 

221 

222# Грамматические категории 

223GRAMMATICAL_TAGS = { 

224 "3л.": "impersonal", 

225 "адъектив.": "adjective", 

226 "безл.": "impersonal", 

227 "вводн. сл.": "parenthetic", 

228 "вин. п.": "accusative", 

229 "вопр.": "interrogative", 

230 # "восклиц.": "в восклицательных предложениях", 

231 "гл.": "verb", 

232 "дат. п.": "dative", 

233 "ед. ч.": "singular", # Шаблон:ед 

234 "ж. р.": "feminine", 

235 "женск.": "feminine", 

236 "им. п.": "nominative", 

237 "исх. п.": "ablative", 

238 "исч.": "countable", 

239 "м. р.": "masculine", 

240 "местн. п.": "locative", 

241 "метоним.": "metonymically", 

242 "мн. ч.": "plural", # Шаблон:мн, Шаблон:мн. 

243 "неисч.": "uncountable", 

244 "неодуш.": "inanimate", 

245 "неперех.": "intransitive", 

246 "нескл.": "indeclinable", 

247 # "обобщ": "", 

248 # "общ.": "", 

249 "одуш.": "animate", 

250 # "отриц.": "", 

251 "перех.": "transitive", 

252 # "повел.": "", 

253 "предик.": "predicative", 

254 # "предл. п.": "", 

255 "прил.": "adjective", 

256 # "прош.": "", 

257 # "разд. п.": "", 

258 "род. п.": "genitive", 

259 "собир.": "collective", 

260 "статив.": "stative", 

261 "субстантивир.": "substantive", 

262 "сущ.": "noun", 

263 "тв. п.": "instrumental", 

264 # https://ru.wiktionary.org/wiki/Категория:Шаблоны:Условные_сокращения 

265 "м.": "masculine", # Шаблон:m 

266 "ср.": "neuter", # Шаблон:n 

267 "ж.": "feminine", # Шаблон:f 

268 "ж. мн.": ["feminine", "plural"], # Шаблон:f.pl 

269 "несов.": "imperfective", # Шаблон:impf 

270 "м./ж.": ["masculine", "feminine"], # Шаблон:m/f 

271 "ср./м.": ["neuter", "masculine"], # Шаблон:n/m 

272 "сов.": "perfective", # Шаблон:pf 

273 # Шаблон:прил ru 1a^ 

274 "муж. р.": "masculine", 

275 "ср. р.": "neuter", 

276 "жен. р.": "feminine", 

277 "неод.": "inanimate", 

278 "т.": "instrumental", 

279 "п.": "prepositional", 

280 "кратк. форма": "short-form", 

281 # Шаблон:мест ru п1*b 

282 "с.": "neuter", 

283 "в. (^(одуш.)/_(неодуш.))": ["accusative", "animate", "inanimate"], 

284 # Шаблон:словоформы tt 

285 "прит.": "possessive", 

286 "1-е": "first-person", 

287 "2-е": "second-person", 

288 "3-е": "third-person", 

289 # Template:гл ru ^bСВ 

290 "пр. действ. прош.": ["active", "participle", "past"], 

291 "деепр. прош.": ["adverbial", "participle", "past"], 

292 "пр. страд. прош.": ["passive", "participle", "past"], 

293 "прич. страд. прош.": ["passive", "participle", "past"], 

294 # Template:гл ru 2a 

295 "пр. действ. наст.": ["active", "participle", "present"], 

296 "деепр. наст.": ["adverbial", "participle", "present"], 

297 "пр. страд. наст.": ["passive", "participle", "present"], 

298} 

299 

300# Прочие сокращения 

301OTHER_TAGS = { 

302 "букв.": "literary", 

303 # "искаж.": "искажённое", 

304 "неправ.": "irregular", 

305 "перен.": "figuratively", 

306 "редк.": "rare", 

307 # "тж.": "", # Шаблон:тж. 

308 "общая": "indefinite", 

309 "опред.": "definite", 

310 "счётн.": "count-form", 

311 "наречия": "adverb", 

312 "имена собственные": "proper-noun", 

313 "причастия": "participle", 

314 "деепричастия": ["adverbial", "participle"], 

315 "топонимы": "toponymic", 

316 "неопр.": "indefinite", 

317 "опр.": "definite", 

318 "imperfectum": "imperfect", 

319 "perfectum": "perfect", 

320 "gerundium": "gerund", 

321 "gerundivum": "gerundive", 

322 "plusquamperfectum": "pluperfect", 

323 "инфинитив": "infinitive", 

324 "герундий": "gerund", 

325 "предикативы": "predicative", 

326 "сша": "USA", 

327 "превосх. формы": "superior", 

328 "местоимения": "pronoun", 

329 "ум.-ласк.": "diminutive", 

330 "междометия": "interjection", 

331 # Template:гл cu IV 

332 "аорист": "aorist", 

333 "нетемат.": "non-thematic", 

334 "темат.": "thematic", 

335 "предлоги": "prepositional", 

336 # Template:спряжение es short 

337 "modo indicativo": "indicative", 

338 "presente": "present", 

339 "futuro": "future", 

340 "pretérito indefinido": ["past", "indefinite"], 

341 "presente de subjuntivo": ["present", "subjunctive"], 

342 "yo": ["first-person", "singular"], 

343 "tú": ["second-person", "singular"], 

344 "él\nella\nusted": ["third-person", "singular"], 

345 "nosotros\nnosotras": ["first-person", "plural"], 

346 "vosotros\nvosotras": ["second-person", "plural"], 

347 "ellos\nellas\nustedes": ["third-person", "plural"], 

348 "participio": "participle", 

349 "gerundio": "gerund", 

350 # Template:спряжение pt short 

351 "indicativo": "indicative", 

352 "pretérito perfeito": ["past", "perfect"], 

353 "subjuntivo": "subjunctive", 

354 "imperativo": "imperative", 

355 "eu": ["first-person", "singular"], 

356 "tu": ["second-person", "singular"], 

357 "você\nele / ela": ["third-person", "singular"], 

358 "nós": ["first-person", "plural"], 

359 "vós": ["second-person", "plural"], 

360 "vocês\neles / elas": ["third-person", "plural"], 

361 # Template:спряжение fr short 

362 "indicatif": "indicative", 

363 "présent": "present", 

364 "futur simple": "future", 

365 "imparfait": ["past", "imperfect"], 

366 "conditionnel présent": ["present", "conditional"], 

367 "je": ["first-person", "singular"], 

368 "il\nelle": ["third-person", "singular"], 

369 "nous": ["first-person", "plural"], 

370 "vous": ["second-person", "plural"], 

371 "ils\nelles": ["third-person", "plural"], 

372 "participe passé": ["past", "participle"], 

373 "participe présent": ["present", "participle"], 

374 # Template:спряжение it short 

375 "passato remoto": "past-remote", 

376 "presente\ndi congiuntivo": ["present", "subjunctive"], 

377 "io": ["first-person", "singular"], 

378 "egli\nella\nlei": ["third-person", "singular"], 

379 "noi": ["first-person", "plural"], 

380 "voi": ["second-person", "plural"], 

381 "essi\nesse\nloro": ["third-person", "plural"], 

382 # Template:спряжение ro short 

383 "modul indicativ": "indicative", 

384 "prezent": "present", 

385 "imperfect": "imperfect", 

386 "perfectul compus": ["compound", "perfect"], 

387 "viitorul i": "future-i", 

388 "el\nea": ["third-person", "singular"], 

389 "voi\ndumneavoastră": ["second-person", "plural"], 

390 "ei\nele": ["third-person", "plural"], 

391 "conjunctiv, p. 3": ["conjunctive", "third-person"], 

392 "participiu": "participle", 

393 "gerunziu": "gerund", 

394 # Template:спряжение sw short 

395 "изъявительное наклонение": "indicative", 

396 "настоящее": "present", 

397 "имперфект": "imperfect", 

398 "перфект": "perfect", 

399 "mimi": ["first-person", "singular"], 

400 "wewe": ["second-person", "singular"], 

401 "yeye (люди)": ["third-person", "singular"], 

402 "yeye (вещи)": ["third-person", "singular", "non-human"], 

403 "sisi": ["first-person", "plural"], 

404 "nyinyi": ["second-person", "plural"], 

405 "wao (люди)": ["third-person", "plural"], 

406 "wao (вещи)": ["third-person", "plural", "non-human"], 

407 "хабитуалис": "habitual", 

408} 

409 

410CASE_TAGS = { 

411 # Шаблон:сущ ru m a 1a 

412 "им.": "nominative", 

413 "р.": "genitive", 

414 "д.": "dative", 

415 "в.": "accusative", 

416 "тв.": "instrumental", 

417 "пр.": "prepositional", 

418 # Шаблон:сущ bg 7 

419 "зват.": "vocative", 

420 # Шаблон:сущ de (e)s er ern/n 

421 "ном.": "nominative", 

422 "ген.": "genitive", 

423 "дат.": "dative", 

424 "акк.": "accusative", 

425 # Шаблон:сущ cu (-а) 

426 # "м.": "locative", # conflict with gender tag 

427 "местный": "locative", 

428 "зв.": "vocative", 

429 # Template:падежи la 3 

430 "абл.": "ablative", 

431 "вок.": "vocative", 

432 # Template:гл la 1 

433 "supinum i": "supine-i", 

434 "supinum ii": "supine-ii", 

435 # Template:падежи tr 

436 "вин.": "accusative", 

437 "мест.": "locative", 

438 "род.": "genitive", 

439 # Template:сущ ru m ina 1c 

440 "местный падеж": "locative", 

441 "разделительный падеж": "partitive", 

442} 

443 

444TENSE_TAGS = { 

445 # Шаблон:Гл-блок 

446 "наст.": "present", 

447 "будущ.": "future", 

448 "прош.": "past", 

449 "будущее": "future", 

450 # Template:гл la 1 

451 "praesens": "present", 

452 "futūrum i": "future-i", 

453 "futūrum ii": "future-ii", 

454 "infīnitivus praesentis actīvi": ["infinitive", "present", "active"], 

455 "infīnitivus praesentis passīvi": ["infinitive", "present", "passive"], 

456 "participium praesentis actīvi": ["participle", "present", "active"], 

457 "infīnitivus perfecti actīvi": ["infinitive", "perfect", "active"], 

458 "participium perfecti passivi": ["participle", "perfect", "passive"], 

459 "participium futuri activi": ["participle", "future", "active"], 

460 # Template:гл en irreg 

461 "прош. вр.": "past", 

462 "прич. прош. вр.": ["past", "participle"], 

463 # Template:гл ru 2a-ся 

464 "наст./будущ.": ["present", "future"], 

465 # Template:гл ru 7b/b-дX 

466 "настоящее время": "present", 

467 "ед. число": "singular", 

468 "мн. число": "plural", 

469 "1-е лицо": "first-person", 

470 "2-е лицо": "second-person", 

471 "3-е лицо": "third-person", 

472 "прошедшее время": "past", 

473 "с. р.": "neuter", 

474 "повелительное наклонение": "imperative", 

475 "причастия": "participle", 

476 "действ. наст.": ["active", "present"], 

477 "действ. прош.": ["active", "past"], 

478 "страд. наст.": ["passive", "present"], 

479 "страд. прош.": ["passive", "past"], 

480 "деепричастия": ["adverbial", "participle"], 

481 "наст. вр.": "present", 

482 "будущее время": "future", 

483} 

484 

485MOOD_TAGS = { 

486 # Шаблон:Гл-блок 

487 "повелит.": "imperative", 

488 # Template:гл la 1 

489 "indicatīvus": "indicative", 

490 "coniunctīvus": "conjunctive", 

491 "imperatīvus": "imperative", 

492} 

493 

494PERSON_TAGS = { 

495 # Шаблон:Гл-блок 

496 "я": ["first-person", "singular"], 

497 "ты": ["second-person", "singular"], 

498 "он\nона\nоно": ["third-person", "singular"], 

499 "он\nона": ["third-person", "singular"], 

500 "мы": ["first-person", "plural"], 

501 "вы": ["second-person", "plural"], 

502 "они": ["third-person", "plural"], 

503 # Template:гл la 1 

504 "1 p.": "first-person", 

505 "2 p.": "second-person", 

506 "3 p.": "third-person", 

507 # Template:гл en irreg 

508 "3-е л. ед. ч.": ["third-person", "singular"], 

509} 

510 

511VOICE_TAGS = { 

512 # Шаблон:Гл-блок 

513 "пр. действ.": "active", 

514 "деепр.": "adverbial", 

515 "пр. страд.": "passive", 

516 # Template:гл la 1 

517 "act.": "active", 

518 "pass.": "passive", 

519} 

520 

521NUMBER_TAGS = { 

522 # Шаблон:сущ cu (-а) 

523 "дв. ч.": "dual", 

524 "часто мн. ч.": ["often", "plural"], 

525 # Template:гл la 1 

526 "sing.": "singular", 

527 "plur.": "plural", 

528 "sg.": "singular", 

529 "pl.": "plural", 

530} 

531 

532TRANSLATION_TAGS = { 

533 # Шаблон:перев-блок 

534 # https://en.wikipedia.org/wiki/Azerbaijani_alphabet 

535 # https://ru.wiktionary.org/wiki/Модуль:languages/data 

536 "арабск.": "Arabic", 

537 "кир.": "Cyrillic", 

538 "лат.": "Latin", 

539 "лат": "Latin", 

540 "кана": "katakana", 

541 "сир.": "Syriac", 

542 "иуд.": "Jewish", 

543 "центральный": "Central", 

544 "демот.": "Demotic Greek", 

545 "кафар.": "Katharevousa", 

546 "мальдивский": "Maldivian", 

547 "традиц.": "traditional", 

548 "у": "Wu", 

549 "упрощ.": "simplified", 

550 "южноминьский": "Min", 

551 "курманджи": "Kurmanji", 

552 "сорани": "Sorani", 

553 "севернокурдский": "Kurmanji", 

554 "южнокурдский": "Southern Kurdish", 

555 "кириллица": "Cyrillic", 

556 "глаголица": "Glagolitic", 

557 "араб.": "Arabic", 

558 "письменный": "Written-Form", # italic tag 

559 "устный": "colloquial", 

560} 

561 

562MORPHOLOGICAL_TEMPLATE_TAGS = { 

563 # "Шаблон:inflection/ru/noun/text" used in "сущ-ru" 

564 "одушевлённое": "animate", 

565 "неодушевлённое": "inanimate", 

566 "одушевлённое или неодушевлённое": ["animate", "inanimate"], 

567 "неодушевлённое или одушевлённое": ["animate", "inanimate"], 

568 "мужской род": "masculine", 

569 "женский род": "feminine", 

570 "средний род": "neuter", 

571 "общий род (может согласовываться с другими частями речи как мужского": "common", # noqa: E501 

572 "мужской или женский род": ["masculine", "feminine"], 

573 "мужской или средний род": ["masculine", "neuter"], 

574 "женский или мужской род": ["masculine", "feminine"], 

575 "женский или средний род": ["feminine", "neuter"], 

576 "средний или мужской род": ["masculine", "neuter"], 

577 "средний или женский род": ["feminine", "neuter"], 

578 "несклоняемое": "indeclinable", 

579 "адъективное": "adjective", 

580 "местоименное": "pronominal", 

581 # https://en.wikipedia.org/wiki/Russian_declension 

582 "1-е": "declension-1", 

583 "2-е": "declension-2", 

584 "3-е": "declension-3", 

585 "2-е (5-e)": ["declension-1", "declension-5"], 

586 # Шаблон:inflection/ru/adj 

587 "качественное": "qualitative", 

588 "относительное": "relative", 

589 "притяжательное": "possessive", 

590 # verb tags from "Шаблон:Гл-блок" 

591 "совершенный вид": "perfect", 

592 "несовершенный вид": "imperfective", 

593 "двувидовой": "biaspectual", 

594 "непереходный": "intransitive", 

595 "переходный": "transitive", 

596 "безличный": "impersonal", 

597 "возвратный": "reflexive", 

598} 

599 

600ALL_TAGS = { 

601 **STYLE_TAGS, 

602 **GRAMMATICAL_TAGS, 

603 **OTHER_TAGS, 

604 **CASE_TAGS, 

605 **TENSE_TAGS, 

606 **MOOD_TAGS, 

607 **PERSON_TAGS, 

608 **VOICE_TAGS, 

609 **NUMBER_TAGS, 

610 **TRANSLATION_TAGS, 

611} 

612 

613 

614def translate_raw_tags(data: WordEntry) -> None: 

615 raw_tags = [] 

616 for raw_tag in data.raw_tags: 

617 raw_tag_lower = raw_tag.lower() 

618 if raw_tag_lower in ALL_TAGS: 

619 tr_data = ALL_TAGS[raw_tag_lower] 

620 if isinstance(tr_data, str): 

621 data.tags.append(tr_data) 

622 elif isinstance(tr_data, list): 622 ↛ 616line 622 didn't jump to line 616 because the condition on line 622 was always true

623 data.tags.extend(tr_data) 

624 elif hasattr(data, "topics"): 

625 tr_data = "" 

626 if raw_tag_lower in TOPICS: 

627 tr_data = TOPICS[raw_tag_lower] 

628 elif raw_tag_lower in SLANG_TOPICS: 628 ↛ 632line 628 didn't jump to line 632 because the condition on line 628 was always true

629 tr_data = SLANG_TOPICS[raw_tag_lower] 

630 if "slang" not in data.tags: 630 ↛ 632line 630 didn't jump to line 632 because the condition on line 630 was always true

631 data.tags.append("slang") 

632 if isinstance(tr_data, str) and len(tr_data) > 0: 632 ↛ 634line 632 didn't jump to line 634 because the condition on line 632 was always true

633 data.topics.append(tr_data) 

634 elif isinstance(tr_data, list): 

635 data.topics.extend(tr_data) 

636 else: 

637 raw_tags.append(raw_tag) 

638 else: 

639 raw_tags.append(raw_tag) 

640 data.raw_tags = raw_tags