Coverage for src/wiktextract/extractor/pt/tags.py: 90%

20 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-11 10:26 +0000

1from .models import WordEntry 

2 

3# Predefinição:gramática 

4HEAD_LINE_TAGS = { 

5 "masculino": "masculine", 

6 "feminino": "feminine", 

7 "género comum": "common", 

8 "dois géneros": "dual", 

9 "comum aos dois géneros": ["common", "dual"], 

10 # Predefinição:gramática/core 

11 # {{int:}} not implemented 

12 "comum aos dois gêneros": ["common", "dual"], 

13 "neutro": "neutral", 

14 "masculino plural": ["masculine", "plural"], 

15 "masculino singular": ["masculine", "singular"], 

16 "masculino de dois números": "masculine", 

17 "masculino comum aos dois números": ["masculine", "common"], 

18 "masculino invariável": ["masculine", "invariable"], 

19 "masculino dual": ["masculine", "dual"], 

20 "feminino plural": ["feminine", "plural"], 

21 "feminino singular": ["feminine", "singular"], 

22 "feminino de dois números": "feminine", 

23 "feminino comum aos dois números": ["feminine", "common"], 

24 "feminino invariável": ["feminine", "invariable"], 

25 "feminino dual": ["feminine", "dual"], 

26 "género comum e plural": ["common", "plural"], 

27 "género comum e singular": ["common", "singular"], 

28 "género comum e comum aos dois números": "common", 

29 "dois géneros plural": "plural", 

30 "dois géneros singular": "singular", 

31 "comum aos dois géneros plural": ["common", "plural"], 

32 "comum aos dois géneros singular": ["common", "singular"], 

33 "comum aos dois géneros e aos dois números": "common", 

34 "comum aos dois gêneros plural": ["common", "plural"], 

35 "comum aos dois gêneros singular": ["common", "singular"], 

36 "comum aos dois gêneros e aos dois números": "common", 

37 "neutro plural": ["neutral", "plural"], 

38 "neutro singular": ["neutral", "singular"], 

39 "neutro de dois números": "neutral", 

40 "neutro comum aos dois números": ["neutral", "common"], 

41 "neutro invariável": ["neutral", "invariable"], 

42 "neutro dual": ["neutral", "dual"], 

43 "plural": "plural", 

44 "singular": "singular", 

45 "sem plural": "no-plural", 

46 "singular e plural": ["singular", "plural"], 

47 # "dois números": "", 

48 "comum aos dois números": "common", 

49 "dual": "dual", 

50 "invariável": "invariable", 

51 # "uniforme": "", 

52 # "biforme": "", 

53 "contável": "countable", 

54 "incontável": "uncountable", 

55 "primeira pessoa": "first-person", 

56 "primeira pessoa do singular": ["first-person", "singular"], 

57 "primeira pessoa do plural": ["first-person", "plural"], 

58 "segunda pessoa": "second-person", 

59 "segunda pessoa do singula": ["second-person", "singular"], 

60 "segunda pessoa do plural": ["second-person", "plural"], 

61 "terceira pessoa": "third-person", 

62 "terceira pessoa do singular": ["third-person", "singular"], 

63 "terceira pessoa do plural": ["third-person", "plural"], 

64 "cardinal": "cardinal", 

65 "ordinal": "ordinal", 

66 "multiplicativo": "multiplicative", 

67 # "fracionário": "", 

68 "distributivo": "distributive", 

69 "coletivo": "collective", 

70 "pessoal": "personal", 

71 "demonstrativo": "demonstrative", 

72 "possessivo": "possessive", 

73 "relativo": "relative", 

74 "interrogativo": "interrogative", 

75 # "tratamento": "", 

76 "indefinido": "indefinite", 

77 "definido": "definite", 

78 # "próprio": "", 

79 "comum": "common", 

80 "concreto": "concrete", 

81 "abstrato": "abstract", 

82 "composto": "compound", 

83 # "simples": "", 

84 # "primitivo": "", 

85 # "derivado": "", 

86 "animado": "animate", 

87 "inanimado": "inanimate", 

88 "intransitivo": "intransitive", 

89 "transitivo": "transitive", 

90 "transitivo indireto": ["indirect", "transitive"], 

91 "transitivo direto": ["direct", "transitive"], 

92 "transitivo direto e indireto": ["direct", "indirect", "transitive"], 

93 "pronominal": "pronominal", 

94 "pronominal transitivo indireto": ["pronominal", "indirect", "transitive"], 

95 "bitransitivo": "ditransitive", 

96 "reflexivo": "reflexive", 

97 "auxiliar": "auxiliary", 

98 "impessoal": "impersonal", 

99 "predicativo": "predicative", 

100 "com valor de verbo": "verb", 

101 "de lugar": "place", 

102 # "de modo": "", 

103 # "de tempo": "", 

104 # "de intensidade": "", 

105 "maiúscula": "capitalized", 

106 "minúscula": "lowercase", 

107} 

108 

109TABLE_TAGS = { 

110 # Predefinição:flex.pt 

111 "Masculino": "masculine", 

112 "Feminino": "feminine", 

113 "Plural": "plural", 

114 "Singular": "singular", 

115 # Predefinição:flex.pt.subst.completa 

116 "Coletivo": "collective", 

117 "Normal": "standard", 

118 "Aumentativo": "augmentative", 

119 "Diminutivo": "diminutive", 

120 # Predefinição:conj.pt 

121 "Infinitivo impessoal": ["impersonal", "infinitive"], 

122 "Gerúndio": "gerund", 

123 "Particípio": "participle", 

124 "primeira": "first-person", 

125 "segunda": "second-person", 

126 "terceira": "third-person", 

127 "Modo\nIndicativo": "indicative", 

128 "Presente": "present", 

129 "Pretérito imperfeito": ["past", "continuative"], 

130 "Pretérito perfeito": "past", 

131 "Pretérito mais-que-perfeito": "pluperfect", 

132 "Futuro do presente": ["future", "present"], 

133 "Futuro do pretérito": ["future", "past"], 

134 "Modo\nSubjuntivo\n(Conjuntivo)": ["subjunctive", "conjunctive"], 

135 "Futuro": "future", 

136 "Modo\nImperativo": "imperative", 

137 "Afirmativo": "affirmative", 

138 "Negativo": "negative", 

139 "Infinitivo pessoal": ["personal", "infinitive"], 

140 # Predefinição:conj.en 

141 "Infinitivo": "infinitive", 

142 "Passado simples": "past", 

143} 

144 

145# https://pt.wiktionary.org/wiki/Predefinição:escopo/núcleo 

146GLOSS_TAGS = { 

147 "Grafia portuguesa": "Portugal", 

148 "Grafia brasileira": "Brazil", 

149 "histórico": "historical", 

150 "antigo": "archaic", 

151 "arcaico": "archaic", 

152 "em desuso": "obsolete", 

153 "obsoleto": "obsolete", 

154 "pouco comum": "uncommon", 

155 "raro": "rare", 

156 "obsceno": "vulgar", 

157 "coloquial": "colloquial", 

158 "familiar": "familiar", 

159 "informal": "informal", 

160 # "popular": "", 

161 "figurado": "figuratively", 

162 "depreciativo": "derogatory", 

163 "pejorativo": "pejorative", 

164 "poético": "poetic", 

165 "internetês": ["Internet", "slang"], 

166 "ironia": "ironic", 

167 # "alemanismo": "", 

168 # "italianismo": "Italianism", 

169 # "germanismo": "Germanism", 

170 # "francesismo": "", 

171 # "galicismo": "Gallicism", 

172 "anglicismo": "Anglicism", 

173 # "portuguesismo": "Portuguesism", 

174 # "estrangeirismo": "loanword", 

175 "regionalism": "regional", 

176 "Angola": "Angola", 

177 "Brasil": "Brazil", 

178 # "Amazônia": "Amazonia", 

179 "Nordeste do Brasil": "Northeast-Brazil", 

180 "Norte do Brasil": "North-Brazil", 

181 "Centro-Oeste do Brasil": "Central-West-Brazil", 

182 "Sudeste do Brasil": "Southeast-Brazil", 

183 "Sul do Brasil": "Southern-Brazil", 

184 "Acre": "Acre", 

185 "Alagoas": "Alagoas", 

186 "Amapá": "Amapá", 

187 "Amazonas": "Amazonas", 

188 "Bahia": "Bahia", 

189 "dialeto caipira": "dialectal", 

190 "Ceará": "Ceará", 

191 # "Distrito Federal": "Federal District", 

192 "Espírito Santo": "Espírito Santo", 

193 "Goiás": "Goias", 

194 "Maranhão": "Maranhão", 

195 "Mato Grosso": "Mato Grosso", 

196 "Mato Grosso do Sul": "Mato Grosso do Sul", 

197 "Minas Gerais": "Minas Gerais", 

198 "Pará": "Pará", 

199 "Paraíba": "Paraíba", 

200 "Paraná": "Paraná", 

201 "Pernambuco": "Pernambuco", 

202 "Piauí": "Piauí", 

203 "Rio de Janeiro": "Rio de Janeiro", 

204 "Rio Grande do Norte": "Rio Grande do Norte", 

205 "Rio Grande do Sul": "Rio Grande do Sul", 

206 "Rondônia": "Rondônia", 

207 "Roraima": "Roraima", 

208 # "baralhete": "", 

209 # "canteiros": "", 

210 # "alvanéis": "", 

211 # "telheiros": "", 

212 # "músicos": "", 

213 # "cesteiros": "", 

214 "transitivo": "transitive", 

215 "intransitivo": "intransitive", 

216 "reflexivo": "reflexive", 

217 "pronominal": "pronominal", 

218 "plural": "plural", 

219 "Portugal": "Portugal", 

220 "grafia brasileira": "Brazilian", 

221 "grafia portuguesa": "Portuguese", 

222 "grafia lusitana": "Lusitanian", 

223} 

224 

225OTHER_TAGS = { 

226 "comparativo de superioridade": ["comparative", "superior"], 

227 "superlativo absoluto sintético": ["absolute", "superlative"], 

228 "superlativo relativo de superioridade": [ 

229 "relative", 

230 "superlative", 

231 "superior", 

232 ], 

233 "Gentílico": "demonym", 

234 "Galiza": "Galicia", 

235 "popular": "popular", 

236 "Romanização": "romanization", 

237 "X-SAMPA": "X-SAMPA", 

238 "AFI": "IPA", 

239} 

240 

241TAGS = {**HEAD_LINE_TAGS, **TABLE_TAGS, **GLOSS_TAGS, **OTHER_TAGS} 

242 

243# https://pt.wiktionary.org/wiki/Predefinição:escopo/núcleo 

244TOPICS = { 

245 "anatomia": "anatomy", 

246 "arquitetura": "architecture", 

247 "botânica": "botany", 

248 "ciência da computação": "computing", 

249 "comunicação": "communications", 

250 # "ciência dos materiais": "", 

251 "engenharia": "engineering", 

252 # "pedagogia": "pedagogy", 

253 # "cronônimo": "chrononym", 

254 "basquetebol": "basketball", 

255 "beisebol": "baseball", 

256 "críquete": "cricket", 

257 "desporto": "sports", 

258 "esporte": "sports", 

259 "ténis": "tennis", 

260 "tênis": "tennis", 

261 "esgrima": "fencing", 

262 "geografia": "geography", 

263 # "toponímia": "", 

264 # "territory": "", 

265 "zoologia": "zoology", 

266 "ornitologia": "ornithology", 

267 # "artrópodes": "", 

268 "entomologia": "entomology", 

269 "ictiologia": "ichthyology", 

270 "veterinária": "veterinary", 

271 # "antropónimo": "", 

272 "alimentação": "food", 

273 "arte": "arts", 

274 "aeronáutica": "aeronautics", 

275 "aritmética": "arithmetic", 

276 "Meteorologia": "meteorology", 

277 "design": "design", 

278 "patologia": "pathology", 

279 "etnologia": "ethnology", 

280 "farmacologia": "pharmacology", 

281 "transporte": "transport", 

282 "Ginecologia": "gynecology", 

283 "linguística": "linguistics", 

284 "indústria têxtil": "textiles", 

285 "mídia": "media", 

286 "ciência da informação": "information-science", 

287 "ludologia": "ludology", 

288 "náutica": "nautical", 

289 "mitologia": "mythology", 

290 "mineralogia": "mineralogy", 

291 "mobiliário": "furniture", 

292 "numismática": "numismatics", 

293 # "Esoterismo": "", 

294 "profissão": "profession", 

295 # "parapsiquismo": "", 

296 "vestuário": "clothing", 

297 "direito": "law", 

298 "química": "chemistry", 

299 "videojogo": "video-games", 

300 "vídeo game": "video-games", 

301 "viticultura": "viticulture", 

302 "País": "country", 

303 "religião": "religion", 

304 "antropônimo": "anthroponym", 

305 "Cristianismo": "Christianity", 

306 "medicina": "medicine", 

307} 

308 

309 

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

311 raw_tags = [] 

312 for raw_tag in data.raw_tags: 

313 if raw_tag in TAGS or raw_tag.lower() in TAGS: 

314 tr_tag = TAGS.get(raw_tag, TAGS.get(raw_tag.lower())) 

315 if isinstance(tr_tag, str): 

316 data.tags.append(tr_tag) 

317 elif isinstance(tr_tag, list): 317 ↛ 312line 317 didn't jump to line 312 because the condition on line 317 was always true

318 data.tags.extend(tr_tag) 

319 elif (raw_tag in TOPICS or raw_tag.lower() in TOPICS) and hasattr( 319 ↛ 322line 319 didn't jump to line 322 because the condition on line 319 was never true

320 data, "topics" 

321 ): 

322 data.topics.append(TOPICS.get(raw_tag, TOPICS.get(raw_tag.lower()))) 

323 else: 

324 raw_tags.append(raw_tag) 

325 data.raw_tags = raw_tags