Skip to content

Commit ecba5e1

Browse files
authoredJul 1, 2023
Merge pull request #37 from pnewstein/main
Enum for languages
·
v0.34.0v0.10.2
2 parents 2ebd106 + 80f5e38 commit ecba5e1

File tree

6 files changed

+231
-22
lines changed

6 files changed

+231
-22
lines changed
 

‎pythorhead/comment.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from typing import Any, List, Literal, Optional
1+
from typing import Any, List, Literal, Optional, Union
22

33
from pythorhead.requestor import Request, Requestor
4-
from pythorhead.types import CommentSortType, ListingType
4+
from pythorhead.types import CommentSortType, ListingType, LanguageType
55

66

77
class Comment:
@@ -72,7 +72,7 @@ def create(
7272
content: str,
7373
form_id: Optional[str] = None,
7474
parent_id: Optional[int] = None,
75-
language_id: Optional[int] = None,
75+
language_id: Union[int, LanguageType, None] = None,
7676
) -> Optional[dict]:
7777
"""
7878
Create a comment.
@@ -82,7 +82,7 @@ def create(
8282
content (str)
8383
form_id (Optional[int], optional): Defaults to None.
8484
parent_id (Optional[int], optional): Defaults to None.
85-
language_id (Optional[int], optional): Defaults to None.
85+
language_id (Union[int, LanguageType], optional): Defaults to None.
8686
8787
Returns:
8888
Optional[dict]: created comment data if successful
@@ -97,7 +97,10 @@ def create(
9797
if parent_id is not None:
9898
create_comment["parent_id"] = parent_id
9999
if language_id is not None:
100-
create_comment["language_id"] = language_id
100+
if isinstance(language_id, LanguageType):
101+
create_comment["language_id"] = language_id.value
102+
else:
103+
create_comment["language_id"] = language_id
101104

102105
return self._requestor.api(
103106
Request.POST,
@@ -111,7 +114,7 @@ def edit(
111114
content: Optional[str] = None,
112115
distinguished: Optional[bool] = None,
113116
form_id: Optional[str] = None,
114-
language_id: Optional[int] = None,
117+
language_id: Union[int, LanguageType, None] = None,
115118
) -> Optional[dict]:
116119
"""
117120
Edit a comment.
@@ -121,7 +124,7 @@ def edit(
121124
content (Optional[str], optional): Defaults to None.
122125
distinguished (Optional[bool], optional): Defaults to None.
123126
form_id (Optional[str], optional): Defaults to None.
124-
language_id (Optional[int], optional): Defaults to None.
127+
language_id (Union[int, LanguageType], optional): Defaults to None.
125128
126129
Returns:
127130
Optional[dict]: edited comment data if successful
@@ -136,7 +139,10 @@ def edit(
136139
if form_id is not None:
137140
edit_comment["form_id"] = form_id
138141
if language_id is not None:
139-
edit_comment["language_id"] = language_id
142+
if isinstance(language_id, LanguageType):
143+
edit_comment["language_id"] = language_id.value
144+
else:
145+
edit_comment["language_id"] = language_id
140146

141147
return self._requestor.api(
142148
Request.PUT,

‎pythorhead/community.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
from typing import Any, List, Optional
1+
from typing import List, Optional, Union
2+
23

34
from pythorhead.requestor import Request, Requestor
4-
from pythorhead.types import ListingType, SortType
5+
from pythorhead.types import ListingType, SortType, LanguageType
56

67

78
class Community:
@@ -16,6 +17,7 @@ def create(
1617
icon: Optional[str] = None,
1718
nsfw: Optional[bool] = None,
1819
posting_restricted_to_mods: Optional[bool] = None,
20+
discussion_languages: Optional[List[Union[int, LanguageType]]] = None,
1921
) -> Optional[dict]:
2022
"""
2123
Create a community
@@ -27,6 +29,7 @@ def create(
2729
icon (str, optional): Defaults to None
2830
nsfw (bool, optional): Defaults to None
2931
posting_restricted_to_mods (bool, optional): Defaults to None
32+
discussion_languages: (List[Union[int, LanguageType]], optional): Defaults to None
3033
3134
Returns:
3235
Optional[dict]: post data if successful
@@ -43,6 +46,9 @@ def create(
4346
new_community["nsfw"] = nsfw
4447
if [posting_restricted_to_mods] is not None:
4548
new_community["[posting_restricted_to_mods]"] = [posting_restricted_to_mods]
49+
if discussion_languages is not None:
50+
new_community["discussion_languages"] = [l.value for l in discussion_languages
51+
if isinstance(l, LanguageType)]
4652

4753
return self._requestor.api(Request.POST, "/community", json=new_community)
4854

‎pythorhead/post.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from typing import Any, List, Literal, Optional
1+
from typing import Any, List, Literal, Optional, Union
22

33
from pythorhead.requestor import Request, Requestor
4-
from pythorhead.types import FeatureType, ListingType, SortType
4+
from pythorhead.types import FeatureType, ListingType, SortType, LanguageType
55

66

77
class Post:
@@ -86,7 +86,7 @@ def create(
8686
body: Optional[str] = None,
8787
nsfw: Optional[bool] = None,
8888
honeypot: Optional[str] = None,
89-
language_id: Optional[int] = None,
89+
language_id: Union[int, LanguageType, None] = None,
9090
) -> Optional[dict]:
9191
"""
9292
Create a post
@@ -98,7 +98,7 @@ def create(
9898
body (str, optional): Defaults to None.
9999
nsfw (bool, optional): Defaults to None.
100100
honeypot (str, optional): Defaults to None.
101-
language_id (int, optional): Defaults to None.
101+
language_id (Union[int, LanguageType], optional): Defaults to None.
102102
103103
Returns:
104104
Optional[dict]: post data if successful
@@ -117,7 +117,10 @@ def create(
117117
if honeypot is not None:
118118
new_post["honeypot"] = honeypot
119119
if language_id is not None:
120-
new_post["language_id"] = language_id
120+
if isinstance(language_id, LanguageType):
121+
new_post["language_id"] = language_id.value
122+
else:
123+
new_post["language_id"] = language_id
121124

122125
return self._requestor.api(Request.POST, "/post", json=new_post)
123126

@@ -167,7 +170,7 @@ def edit(
167170
url: Optional[str] = None,
168171
body: Optional[str] = None,
169172
nsfw: Optional[bool] = None,
170-
language_id: Optional[int] = None,
173+
language_id: Union[int, LanguageType, None] = None,
171174
) -> Optional[dict]:
172175
"""
173176
@@ -179,7 +182,7 @@ def edit(
179182
url (str, optional): Defaults to None.
180183
body (str, optional): Defaults to None.
181184
nsfw (bool, optional): Defaults to None.
182-
language_id (int, optional): Defaults to None.
185+
language_id (Union[int, LanguageType], optional): Defaults to None.
183186
184187
Returns:
185188
Optional[dict]: post data if successful
@@ -196,7 +199,10 @@ def edit(
196199
if nsfw is not None:
197200
edit_post["nsfw"] = nsfw
198201
if language_id is not None:
199-
edit_post["language_id"] = language_id
202+
if isinstance(language_id, LanguageType):
203+
edit_post["language_id"] = language_id.value
204+
else:
205+
edit_post["language_id"] = language_id
200206

201207
return self._requestor.api(Request.PUT, "/post", json=edit_post)
202208

‎pythorhead/site.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
from typing import Any, List, Optional
1+
from typing import Any, List, Optional, Union
22

33
from pythorhead.requestor import Request, Requestor
4-
from pythorhead.types import ListingType
4+
from pythorhead.types import ListingType, LanguageType
55

66

77
class Site:
@@ -37,7 +37,7 @@ def edit(
3737
legal_information: Optional[str] = None,
3838
application_email_admins: Optional[bool] = None,
3939
hide_modlog_mod_names: Optional[bool] = None,
40-
discussion_languages=None,
40+
discussion_languages: Optional[List[Union[int, LanguageType]]] = None,
4141
slur_filter_regex: Optional[str] = None,
4242
actor_name_max_length: Optional[int] = None,
4343
rate_limit_message: Optional[int] = None,
@@ -84,7 +84,7 @@ def edit(
8484
legal_information (str, optional): Defaults to None.
8585
application_email_admins (bool, optional): Defaults to None.
8686
hide_modlog_mod_names (bool, optional): Defaults to None.
87-
discussion_languages (LanguageType, optional): Defaults to None.
87+
discussion_languages: (List[Union[int, LanguageType]], optional): Defaults to None
8888
slur_filter_regex (str, optional): Defaults to None.
8989
actor_name_max_length (int, optional): Defaults to None.
9090
rate_limit_message (int, optional): Defaults to None.
@@ -112,6 +112,7 @@ def edit(
112112
Returns:
113113
Optional[dict]: post data if successful
114114
"""
115+
discussion_languages = [l.value for l in discussion_languages if isinstance(l, LanguageType)]
115116
edit_site: dict[str, Any] = {
116117
key: value for key, value in locals().items() if value is not None and key != "self"
117118
}

‎pythorhead/types/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from .feature import FeatureType
22
from .listing import ListingType
33
from .sort import CommentSortType, SortType
4+
from .language import LanguageType

‎pythorhead/types/language.py

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
from enum import Enum
2+
3+
# from https://github.com/LemmyNet/lemmy/blob/c216153dfb3cb2d08b72fa466fe522b3c7accde7/migrations/2022-06-21-123144_language-tags/up.sql
4+
5+
class LanguageType(Enum):
6+
UNDETERMINED = 0
7+
AA = 1 # Afaraf
8+
AB = 2 # аҧсуа бызшәа
9+
AE = 3 # avesta
10+
AF = 4 # Afrikaans
11+
AK = 5 # Akan
12+
AM = 6 # አማርኛ
13+
AN = 7 # aragonés
14+
AR = 8 # اَلْعَرَبِيَّةُ
15+
AS = 9 # অসমীয়া
16+
AV = 10 # авар мацӀ
17+
AY = 11 # aymar aru
18+
AZ = 12 # azərbaycan dili
19+
BA = 13 # башҡорт теле
20+
BE = 14 # беларуская мова
21+
BG = 15 # български език
22+
BI = 16 # Bislama
23+
BM = 17 # bamanankan
24+
BN = 18 # বাংলা
25+
BO = 19 # བོད་ཡིག
26+
BR = 20 # brezhoneg
27+
BS = 21 # bosanski jezik
28+
CA = 22 # Català
29+
CE = 23 # нохчийн мотт
30+
CH = 24 # Chamoru
31+
CO = 25 # corsu
32+
CR = 26 # ᓀᐦᐃᔭᐍᐏᐣ
33+
CS = 27 # čeština
34+
CU = 28 # ѩзыкъ словѣньскъ
35+
CV = 29 # чӑваш чӗлхи
36+
CY = 30 # Cymraeg
37+
DA = 31 # dansk
38+
DE = 32 # Deutsch
39+
DV = 33 # ދިވެހި
40+
DZ = 34 # རྫོང་ཁ
41+
EE = 35 # Eʋegbe
42+
EL = 36 # Ελληνικά
43+
EN = 37 # English
44+
EO = 38 # Esperanto
45+
ES = 39 # Español
46+
ET = 40 # eesti
47+
EU = 41 # euskara
48+
FA = 42 # فارسی
49+
FF = 43 # Fulfulde
50+
FI = 44 # suomi
51+
FJ = 45 # vosa Vakaviti
52+
FO = 46 # føroyskt
53+
FR = 47 # Français
54+
FY = 48 # Frysk
55+
GA = 49 # Gaeilge
56+
GD = 50 # Gàidhlig
57+
GL = 51 # galego
58+
GN = 52 # Avañe\'ẽ
59+
GU = 53 # ગુજરાતી
60+
GV = 54 # Gaelg
61+
HA = 55 # هَوُسَ
62+
HE = 56 # עברית
63+
HI = 57 # हिन्दी
64+
HO = 58 # Hiri Motu
65+
HR = 59 # Hrvatski
66+
HT = 60 # Kreyòl ayisyen
67+
HU = 61 # magyar
68+
HY = 62 # Հայերեն
69+
HZ = 63 # Otjiherero
70+
IA = 64 # Interlingua
71+
ID = 65 # Bahasa Indonesia
72+
IE = 66 # Interlingue
73+
IG = 67 # Asụsụ Igbo
74+
II = 68 # ꆈꌠ꒿ Nuosuhxop
75+
IK = 69 # Iñupiaq
76+
IO = 70 # Ido
77+
IS = 71 # Íslenska
78+
IT = 72 # Italiano
79+
IU = 73 # ᐃᓄᒃᑎᑐᑦ
80+
JA = 74 # 日本語
81+
JV = 75 # basa Jawa
82+
KA = 76 # ქართული
83+
KG = 77 # Kikongo
84+
KI = 78 # Gĩkũyũ
85+
KJ = 79 # Kuanyama
86+
KK = 80 # қазақ тілі
87+
KL = 81 # kalaallisut
88+
KM = 82 # ខេមរភាសា
89+
KN = 83 # ಕನ್ನಡ
90+
KO = 84 # 한국어
91+
KR = 85 # Kanuri
92+
KS = 86 # कश्मीरी
93+
KU = 87 # Kurdî
94+
KV = 88 # коми кыв
95+
KW = 89 # Kernewek
96+
KY = 90 # Кыргызча
97+
LA = 91 # latine
98+
LB = 92 # Lëtzebuergesch
99+
LG = 93 # Luganda
100+
LI = 94 # Limburgs
101+
LN = 95 # Lingála
102+
LO = 96 # ພາສາລາວ
103+
LT = 97 # lietuvių kalba
104+
LU = 98 # Kiluba
105+
LV = 99 # latviešu valoda
106+
MG = 100 # fiteny malagasy
107+
MH = 101 # Kajin M̧ajeļ
108+
MI = 102 # te reo Māori
109+
MK = 103 # македонски јазик
110+
ML = 104 # മലയാളം
111+
MN = 105 # Монгол хэл
112+
MR = 106 # मराठी
113+
MS = 107 # Bahasa Melayu
114+
MT = 108 # Malti
115+
MY = 109 # ဗမာစာ
116+
NA = 110 # Dorerin Naoero
117+
NB = 111 # Norsk bokmål
118+
ND = 112 # isiNdebele
119+
NE = 113 # नेपाली
120+
NG = 114 # Owambo
121+
NL = 115 # Nederlands
122+
NN = 116 # Norsk nynorsk
123+
NO = 117 # Norsk
124+
NR = 118 # isiNdebele
125+
NV = 119 # Diné bizaad
126+
NY = 120 # chiCheŵa
127+
OC = 121 # occitan
128+
OJ = 122 # ᐊᓂᔑᓈᐯᒧᐎᓐ
129+
OM = 123 # Afaan Oromoo
130+
OR = 124 # ଓଡ଼ିଆ
131+
OS = 125 # ирон æвзаг
132+
PA = 126 # ਪੰਜਾਬੀ
133+
PI = 127 # पाऴि
134+
PL = 128 # Polski
135+
PS = 129 # پښتو
136+
PT = 130 # Português
137+
QU = 131 # Runa Simi
138+
RM = 132 # rumantsch grischun
139+
RN = 133 # Ikirundi
140+
RO = 134 # Română
141+
RU = 135 # Русский
142+
RW = 136 # Ikinyarwanda
143+
SA = 137 # संस्कृतम्
144+
SC = 138 # sardu
145+
SD = 139 # सिन्धी
146+
SE = 140 # Davvisámegiella
147+
SG = 141 # yângâ tî sängö
148+
SI = 142 # සිංහල
149+
SK = 143 # slovenčina
150+
SL = 144 # slovenščina
151+
SM = 145 # gagana fa\'a Samoa
152+
SN = 146 # chiShona
153+
SO = 147 # Soomaaliga
154+
SQ = 148 # Shqip
155+
SR = 149 # српски језик
156+
SS = 150 # SiSwati
157+
ST = 151 # Sesotho
158+
SU = 152 # Basa Sunda
159+
SV = 153 # Svenska
160+
SW = 154 # Kiswahili
161+
TA = 155 # தமிழ்
162+
TE = 156 # తెలుగు
163+
TG = 157 # тоҷикӣ
164+
TH = 158 # ไทย
165+
TI = 159 # ትግርኛ
166+
TK = 160 # Türkmençe
167+
TL = 161 # Wikang Tagalog
168+
TN = 162 # Setswana
169+
TO = 163 # faka Tonga
170+
TR = 164 # Türkçe
171+
TS = 165 # Xitsonga
172+
TT = 166 # татар теле
173+
TW = 167 # Twi
174+
TY = 168 # Reo Tahiti
175+
UG = 169 # ئۇيغۇرچە‎
176+
UK = 170 # Українська
177+
UR = 171 # اردو
178+
UZ = 172 # Ўзбек
179+
VE = 173 # Tshivenḓa
180+
VI = 174 # Tiếng Việt
181+
VO = 175 # Volapük
182+
WA = 176 # walon
183+
WO = 177 # Wollof
184+
XH = 178 # isiXhosa
185+
YI = 179 # ייִדיש
186+
YO = 180 # Yorùbá
187+
ZA = 181 # Saɯ cueŋƅ
188+
ZH = 182 # 中文
189+
ZU = 183 # isiZulu

0 commit comments

Comments
 (0)
Please sign in to comment.