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
« prev ^ index » next coverage.py v7.9.2, created at 2025-07-11 10:26 +0000
1from .models import WordEntry
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}
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}
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}
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}
241TAGS = {**HEAD_LINE_TAGS, **TABLE_TAGS, **GLOSS_TAGS, **OTHER_TAGS}
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}
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