python-iso639 2025.11.16__tar.gz → 2026.4.20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/CHANGELOG.md +10 -0
  2. {python_iso639-2025.11.16/src/python_iso639.egg-info → python_iso639-2026.4.20}/PKG-INFO +25 -13
  3. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/README.md +17 -3
  4. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/pyproject.toml +9 -11
  5. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/__init__.py +1 -2
  6. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/_data/iso-639-3.tab +17 -13
  7. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/_data/iso-639-3_Name_Index.tab +22 -4
  8. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/language.py +2 -26
  9. {python_iso639-2025.11.16 → python_iso639-2026.4.20/src/python_iso639.egg-info}/PKG-INFO +25 -13
  10. python_iso639-2026.4.20/src/python_iso639.egg-info/requires.txt +8 -0
  11. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/tests/test_language.py +2 -2
  12. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/tests/test_version_number.py +0 -1
  13. python_iso639-2025.11.16/src/python_iso639.egg-info/requires.txt +0 -9
  14. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/LICENSE.txt +0 -0
  15. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/MANIFEST.in +0 -0
  16. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/setup.cfg +0 -0
  17. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/_data/__init__.py +0 -0
  18. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/_data/iso-639-3-macrolanguages.tab +0 -0
  19. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/_data/iso-639-3_Retirements.tab +0 -0
  20. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/iso639/py.typed +0 -0
  21. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/python_iso639.egg-info/SOURCES.txt +0 -0
  22. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/python_iso639.egg-info/dependency_links.txt +0 -0
  23. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/python_iso639.egg-info/not-zip-safe +0 -0
  24. {python_iso639-2025.11.16 → python_iso639-2026.4.20}/src/python_iso639.egg-info/top_level.txt +0 -0
@@ -17,6 +17,16 @@ major/minor/micro version numbers like `05` (it'd have to be just `5`).
17
17
  ### Fixed
18
18
  ### Security
19
19
 
20
+ ## [2026.4.20]
21
+
22
+ ### Changed
23
+ * Updated the ISO 639 data from SIL to the latest 2026-04-15 release.
24
+
25
+ ## [2026.1.31]
26
+
27
+ ### Changed
28
+ * Updated the ISO 639 data from SIL to the latest 2026-01-15 release.
29
+
20
30
  ## [2025.11.16]
21
31
 
22
32
  ### Fixed
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-iso639
3
- Version: 2025.11.16
3
+ Version: 2026.4.20
4
4
  Summary: ISO 639 language codes, names, and other associated information
5
5
  Author-email: "Jackson L. Lee" <jacksonlunlee@gmail.com>
6
- License: Apache 2.0
6
+ License-Expression: Apache-2.0
7
7
  Project-URL: Source, https://github.com/jacksonllee/iso639
8
8
  Keywords: ISO 639,language codes,languages,linguistics
9
9
  Classifier: Development Status :: 5 - Production/Stable
@@ -11,7 +11,6 @@ Classifier: Intended Audience :: Developers
11
11
  Classifier: Intended Audience :: Education
12
12
  Classifier: Intended Audience :: Information Technology
13
13
  Classifier: Intended Audience :: Science/Research
14
- Classifier: License :: OSI Approved :: Apache Software License
15
14
  Classifier: Operating System :: OS Independent
16
15
  Classifier: Programming Language :: Python :: 3
17
16
  Classifier: Programming Language :: Python :: 3 :: Only
@@ -28,13 +27,12 @@ Requires-Python: >=3.10
28
27
  Description-Content-Type: text/markdown
29
28
  License-File: LICENSE.txt
30
29
  Provides-Extra: dev
31
- Requires-Dist: black==25.11.0; extra == "dev"
32
- Requires-Dist: build==1.3.0; extra == "dev"
33
- Requires-Dist: flake8==7.3.0; extra == "dev"
34
- Requires-Dist: mypy==1.18.2; extra == "dev"
35
- Requires-Dist: pytest==9.0.0; extra == "dev"
36
- Requires-Dist: requests==2.32.5; extra == "dev"
37
- Requires-Dist: twine==6.2.0; extra == "dev"
30
+ Requires-Dist: black; extra == "dev"
31
+ Requires-Dist: build; extra == "dev"
32
+ Requires-Dist: flake8; extra == "dev"
33
+ Requires-Dist: mypy; extra == "dev"
34
+ Requires-Dist: pytest; extra == "dev"
35
+ Requires-Dist: twine; extra == "dev"
38
36
  Dynamic: license-file
39
37
 
40
38
  # python-iso639
@@ -56,10 +54,24 @@ Current features:
56
54
 
57
55
  ## Installation
58
56
 
57
+ Using pip:
58
+
59
59
  ```bash
60
60
  pip install python-iso639
61
61
  ```
62
62
 
63
+ Using uv:
64
+
65
+ ```bash
66
+ uv add python-iso639
67
+ ```
68
+
69
+ Using conda:
70
+
71
+ ```bash
72
+ conda install -c conda-forge python-iso639
73
+ ```
74
+
63
75
  ## Usage
64
76
 
65
77
  `python-iso639` revolves around a `Language` class.
@@ -248,7 +260,7 @@ A `Language` instance has the following attributes:
248
260
  | `status` | `str` | ✗ | One of {(A)ctive, (R)etired}, describing the ISO 639-3 code |
249
261
  | `name` | `str` | ✗ | Reference language name in ISO 639-3 |
250
262
  | `comment` | `str` | ✓ | Comment from ISO 639-3 |
251
- | `other_names` | `List[Name]` | ✓ | Other print and inverted names [2] |
263
+ | `other_names` | `list[Name]` | ✓ | Other print and inverted names [2] |
252
264
  | `macrolanguage` | `str` | ✓ | Macrolanguage |
253
265
  | `retire_reason` | `str` | ✓ | Retirement reason, one of {(C)hange, (D)uplicate, (N)on-existent, (S)plit, (M)erge} |
254
266
  | `retire_change_to` | `str` | ✓ | ISO 639-3 code to which this language can be changed, if retirement reason is one of {(C)hange, (D)uplicate, (M)erge} |
@@ -307,7 +319,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
307
319
  ```python
308
320
  >>> import iso639
309
321
  >>> iso639.DATA_LAST_UPDATED
310
- datetime.date(2025, 10, 15)
322
+ datetime.date(2026, 4, 15)
311
323
  ```
312
324
 
313
325
  * `ALL_LANGUAGES`: The list of all `Language` objects based on the included language code data
@@ -317,7 +329,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
317
329
  >>> type(iso639.ALL_LANGUAGES)
318
330
  <class 'set'>
319
331
  >>> len(iso639.ALL_LANGUAGES)
320
- 8311
332
+ 8315
321
333
  ```
322
334
 
323
335
  ## Links
@@ -17,10 +17,24 @@ Current features:
17
17
 
18
18
  ## Installation
19
19
 
20
+ Using pip:
21
+
20
22
  ```bash
21
23
  pip install python-iso639
22
24
  ```
23
25
 
26
+ Using uv:
27
+
28
+ ```bash
29
+ uv add python-iso639
30
+ ```
31
+
32
+ Using conda:
33
+
34
+ ```bash
35
+ conda install -c conda-forge python-iso639
36
+ ```
37
+
24
38
  ## Usage
25
39
 
26
40
  `python-iso639` revolves around a `Language` class.
@@ -209,7 +223,7 @@ A `Language` instance has the following attributes:
209
223
  | `status` | `str` | ✗ | One of {(A)ctive, (R)etired}, describing the ISO 639-3 code |
210
224
  | `name` | `str` | ✗ | Reference language name in ISO 639-3 |
211
225
  | `comment` | `str` | ✓ | Comment from ISO 639-3 |
212
- | `other_names` | `List[Name]` | ✓ | Other print and inverted names [2] |
226
+ | `other_names` | `list[Name]` | ✓ | Other print and inverted names [2] |
213
227
  | `macrolanguage` | `str` | ✓ | Macrolanguage |
214
228
  | `retire_reason` | `str` | ✓ | Retirement reason, one of {(C)hange, (D)uplicate, (N)on-existent, (S)plit, (M)erge} |
215
229
  | `retire_change_to` | `str` | ✓ | ISO 639-3 code to which this language can be changed, if retirement reason is one of {(C)hange, (D)uplicate, (M)erge} |
@@ -268,7 +282,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
268
282
  ```python
269
283
  >>> import iso639
270
284
  >>> iso639.DATA_LAST_UPDATED
271
- datetime.date(2025, 10, 15)
285
+ datetime.date(2026, 4, 15)
272
286
  ```
273
287
 
274
288
  * `ALL_LANGUAGES`: The list of all `Language` objects based on the included language code data
@@ -278,7 +292,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
278
292
  >>> type(iso639.ALL_LANGUAGES)
279
293
  <class 'set'>
280
294
  >>> len(iso639.ALL_LANGUAGES)
281
- 8311
295
+ 8315
282
296
  ```
283
297
 
284
298
  ## Links
@@ -1,14 +1,14 @@
1
1
  [build-system]
2
- requires = ["setuptools >= 65.3.0", "wheel"]
2
+ requires = ["setuptools >= 77.0.0", "wheel"]
3
3
  build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-iso639"
7
- version = "2025.11.16"
7
+ version = "2026.4.20"
8
8
  description = "ISO 639 language codes, names, and other associated information"
9
9
  readme = "README.md"
10
10
  requires-python = ">= 3.10"
11
- license = { text = "Apache 2.0" }
11
+ license = "Apache-2.0"
12
12
  authors = [ { name = "Jackson L. Lee", email = "jacksonlunlee@gmail.com" } ]
13
13
  keywords = ["ISO 639", "language codes", "languages", "linguistics"]
14
14
  classifiers = [
@@ -17,7 +17,6 @@ classifiers = [
17
17
  "Intended Audience :: Education",
18
18
  "Intended Audience :: Information Technology",
19
19
  "Intended Audience :: Science/Research",
20
- "License :: OSI Approved :: Apache Software License",
21
20
  "Operating System :: OS Independent",
22
21
  "Programming Language :: Python :: 3",
23
22
  "Programming Language :: Python :: 3 :: Only",
@@ -34,13 +33,12 @@ classifiers = [
34
33
 
35
34
  [project.optional-dependencies]
36
35
  dev = [
37
- "black == 25.11.0",
38
- "build == 1.3.0",
39
- "flake8 == 7.3.0",
40
- "mypy == 1.18.2",
41
- "pytest == 9.0.0",
42
- "requests == 2.32.5",
43
- "twine == 6.2.0",
36
+ "black",
37
+ "build",
38
+ "flake8",
39
+ "mypy",
40
+ "pytest",
41
+ "twine",
44
42
  ]
45
43
 
46
44
  [project.urls]
@@ -3,13 +3,12 @@ from importlib.metadata import version
3
3
 
4
4
  from .language import ALL_LANGUAGES, Language, LanguageNotFoundError
5
5
 
6
-
7
6
  # __version__ is based on calendar versioning (https://calver.org/).
8
7
  # __version__ and DATA_LAST_UPDATED are intentionally kept separate.
9
8
  # While DATA_LAST_UPDATED is strictly the date for the ISO 639-3 data release,
10
9
  # __version__ can be bumped for changes other than data updates.
11
10
  __version__ = version("python-iso639")
12
- DATA_LAST_UPDATED = datetime.date(2025, 10, 15)
11
+ DATA_LAST_UPDATED = datetime.date(2026, 4, 15)
13
12
 
14
13
 
15
14
  __all__ = [
@@ -850,7 +850,7 @@ bnz I L Beezen
850
850
  boa I L Bora
851
851
  bob I L Aweer
852
852
  bod tib bod bo I L Tibetan
853
- boe I L Mundabli
853
+ boe I L Mundabli-Mufu
854
854
  bof I L Bolon
855
855
  bog I L Bamako Sign Language
856
856
  boh I L Boma
@@ -1532,7 +1532,7 @@ deh I L Dehwari
1532
1532
  dei I L Demisa
1533
1533
  del del del M L Delaware
1534
1534
  dem I L Dem
1535
- den den den M L Slave (Athapascan)
1535
+ den den den M L Slavey
1536
1536
  dep I E Pidgin Delaware
1537
1537
  deq I L Dendi (Central African Republic)
1538
1538
  der I L Deori
@@ -1751,6 +1751,7 @@ dyb I E Dyaberdyaber
1751
1751
  dyd I E Dyugun
1752
1752
  dyg I E Villa Viciosa Agta
1753
1753
  dyi I L Djimini Senoufo
1754
+ dyl I L Bhutanese Sign Language
1754
1755
  dym I L Yanda Dom Dogon
1755
1756
  dyn I L Dyangadi
1756
1757
  dyo I L Jola-Fonyi
@@ -2616,7 +2617,7 @@ imr I L Imroing
2616
2617
  ims I H Marsian
2617
2618
  imt I L Imotong
2618
2619
  imy I H Milyan
2619
- ina ina ina ia I C Interlingua (International Auxiliary Language Association)
2620
+ ina ina ina ia I C Interlingua (IALA)
2620
2621
  inb I L Inga
2621
2622
  ind ind ind id I L Indonesian
2622
2623
  ing I L Degexit'an
@@ -2661,7 +2662,7 @@ isn I L Isanzu
2661
2662
  iso I L Isoko
2662
2663
  isr I L Israeli Sign Language
2663
2664
  ist I L Istriot
2664
- isu I L Isu (Menchum Division)
2665
+ isu I L Isu
2665
2666
  isv I C Interslavic
2666
2667
  ita ita ita it I L Italian
2667
2668
  itb I L Binongan Itneg
@@ -3069,7 +3070,7 @@ kjk I L Highland Konjo
3069
3070
  kjl I L Western Parbate Kham
3070
3071
  kjm I L Kháng
3071
3072
  kjn I L Kunjen
3072
- kjo I L Harijan Kinnauri
3073
+ kjo I L Kinnauri Pahari
3073
3074
  kjp I L Pwo Eastern Karen
3074
3075
  kjq I L Western Keres
3075
3076
  kjr I L Kurudu
@@ -3348,7 +3349,7 @@ kup I L Kunimaipa
3348
3349
  kuq I L Karipuna
3349
3350
  kur kur kur ku M L Kurdish
3350
3351
  kus I L Kusaal
3351
- kut kut kut I L Kutenai
3352
+ kut kut kut I L Ktunaxa
3352
3353
  kuu I L Upper Kuskokwim
3353
3354
  kuv I L Kur
3354
3355
  kuw I L Kpagua
@@ -3573,6 +3574,7 @@ lex I L Luang
3573
3574
  ley I L Lemolang
3574
3575
  lez lez lez I L Lezghian
3575
3576
  lfa I L Lefa
3577
+ lfb I L Buu (Cameroon)
3576
3578
  lfn I C Lingua Franca Nova
3577
3579
  lga I L Lungga
3578
3580
  lgb I L Laghu
@@ -3784,7 +3786,7 @@ lue I L Luvale
3784
3786
  luf I L Laua
3785
3787
  lug lug lug lg I L Ganda
3786
3788
  luh I L Leizhou Chinese
3787
- lui lui lui I E Luiseno
3789
+ lui lui lui I E Luiseño
3788
3790
  luj I L Luna
3789
3791
  luk I L Lunanakha
3790
3792
  lul I L Olu'bo
@@ -3901,7 +3903,7 @@ mcy I L South Watut
3901
3903
  mcz I L Mawan
3902
3904
  mda I L Mada (Nigeria)
3903
3905
  mdb I L Morigi
3904
- mdc I L Male (Papua New Guinea)
3906
+ mdc I L Soq
3905
3907
  mdd I L Mbum
3906
3908
  mde I L Maba (Chad)
3907
3909
  mdf mdf mdf I L Moksha
@@ -3922,7 +3924,7 @@ mdu I L Mboko
3922
3924
  mdv I L Santa Lucía Monteverde Mixtec
3923
3925
  mdw I L Mbosi
3924
3926
  mdx I L Dizin
3925
- mdy I L Male (Ethiopia)
3927
+ mdy I L Male
3926
3928
  mdz I L Suruí Do Pará
3927
3929
  mea I L Menka
3928
3930
  meb I L Ikobi
@@ -6064,7 +6066,7 @@ sro I L Campidanese Sardinian
6064
6066
  srp srp srp sr I L Serbian
6065
6067
  srq I L Sirionó
6066
6068
  srr srr srr I L Serer
6067
- srs I L Sarsi
6069
+ srs I L Tsuut'ina
6068
6070
  srt I L Sauri
6069
6071
  sru I L Suruí
6070
6072
  srv I L Southern Sorsoganon
@@ -6207,7 +6209,7 @@ szl I L Silesian
6207
6209
  szn I L Sula
6208
6210
  szp I L Suabo
6209
6211
  szs I L Solomon Islands Sign Language
6210
- szv I L Isu (Fako Division)
6212
+ szv I L Isubu
6211
6213
  szw I L Sawai
6212
6214
  szy I L Sakizaya
6213
6215
  taa I L Lower Tanana
@@ -6656,6 +6658,7 @@ tuz I L Turka
6656
6658
  tva I L Vaghua
6657
6659
  tvd I L Tsuvadi
6658
6660
  tve I L Te'un
6661
+ tvg I E Tugunese
6659
6662
  tvi I L Tulai
6660
6663
  tvk I L Southeast Ambrym
6661
6664
  tvl tvl tvl I L Tuvalu
@@ -6961,7 +6964,7 @@ vun I L Vunjo
6961
6964
  vut I L Vute
6962
6965
  vwa I L Awa (China)
6963
6966
  waa I L Walla Walla
6964
- wab I L Wab
6967
+ wab I L Yote
6965
6968
  wac I E Wasco-Wishram
6966
6969
  wad I L Wamesa
6967
6970
  wae I L Walser
@@ -7604,7 +7607,7 @@ ykk I L Yakaikeke
7604
7607
  ykl I L Khlula
7605
7608
  ykm I L Kap
7606
7609
  ykn I L Kua-nsi
7607
- yko I L Yasa
7610
+ yko I L Iyasa
7608
7611
  ykr I L Yekora
7609
7612
  ykt I L Kathu
7610
7613
  yku I L Kuamasi
@@ -7791,6 +7794,7 @@ zha zha zha za M L Zhuang
7791
7794
  zhb I L Zhaba
7792
7795
  zhd I L Dai Zhuang
7793
7796
  zhi I L Zhire
7797
+ zhk I L Kurdish Sign Language
7794
7798
  zhn I L Nong Zhuang
7795
7799
  zho chi zho zh M L Chinese
7796
7800
  zhw I L Zhoa
@@ -880,7 +880,7 @@ bnz Beezen Beezen
880
880
  boa Bora Bora
881
881
  bob Aweer Aweer
882
882
  bod Tibetan Tibetan
883
- boe Mundabli Mundabli
883
+ boe Mundabli-Mufu Mundabli-Mufu
884
884
  bof Bolon Bolon
885
885
  bog Bamako Sign Language Bamako Sign Language
886
886
  boh Boma Boma
@@ -1599,7 +1599,7 @@ deh Dehwari Dehwari
1599
1599
  dei Demisa Demisa
1600
1600
  del Delaware Delaware
1601
1601
  dem Dem Dem
1602
- den Slave (Athapascan) Slave (Athapascan)
1602
+ den Slavey Slavey
1603
1603
  dep Pidgin Delaware Delaware, Pidgin
1604
1604
  deq Dendi (Central African Republic) Dendi (Central African Republic)
1605
1605
  der Deori Deori
@@ -1837,6 +1837,7 @@ dyb Dyaberdyaber Dyaberdyaber
1837
1837
  dyd Dyugun Dyugun
1838
1838
  dyg Villa Viciosa Agta Agta, Villa Viciosa
1839
1839
  dyi Djimini Senoufo Senoufo, Djimini
1840
+ dyl Bhutanese Sign Language Bhutanese Sign Language
1840
1841
  dym Yanda Dom Dogon Dogon, Yanda Dom
1841
1842
  dyn Dhanggatti Dhanggatti
1842
1843
  dyn Dyangadi Dyangadi
@@ -2759,6 +2760,7 @@ imr Imroing Imroing
2759
2760
  ims Marsian Marsian
2760
2761
  imt Imotong Imotong
2761
2762
  imy Milyan Milyan
2763
+ ina Interlingua (IALA) Interlingua (IALA)
2762
2764
  ina Interlingua (International Auxiliary Language Association) Interlingua (International Auxiliary Language Association)
2763
2765
  inb Inga Inga
2764
2766
  ind Indonesian Indonesian
@@ -2805,6 +2807,7 @@ isn Isanzu Isanzu
2805
2807
  iso Isoko Isoko
2806
2808
  isr Israeli Sign Language Israeli Sign Language
2807
2809
  ist Istriot Istriot
2810
+ isu Isu Isu
2808
2811
  isu Isu (Menchum Division) Isu (Menchum Division)
2809
2812
  isv Interslavic Interslavic
2810
2813
  ita Italian Italian
@@ -3235,7 +3238,7 @@ kjk Highland Konjo Konjo, Highland
3235
3238
  kjl Western Parbate Kham Kham, Western Parbate
3236
3239
  kjm Kháng Kháng
3237
3240
  kjn Kunjen Kunjen
3238
- kjo Harijan Kinnauri Kinnauri, Harijan
3241
+ kjo Kinnauri Pahari Pahari, Kinnauri
3239
3242
  kjp Pwo Eastern Karen Karen, Pwo Eastern
3240
3243
  kjq Western Keres Keres, Western
3241
3244
  kjr Kurudu Kurudu
@@ -3524,6 +3527,8 @@ kup Kunimaipa Kunimaipa
3524
3527
  kuq Karipuna Karipuna
3525
3528
  kur Kurdish Kurdish
3526
3529
  kus Kusaal Kusaal
3530
+ kut Ksanka Ksanka
3531
+ kut Ktunaxa Ktunaxa
3527
3532
  kut Kutenai Kutenai
3528
3533
  kuu Upper Kuskokwim Kuskokwim, Upper
3529
3534
  kuv Kur Kur
@@ -3758,6 +3763,7 @@ lex Luang Luang
3758
3763
  ley Lemolang Lemolang
3759
3764
  lez Lezghian Lezghian
3760
3765
  lfa Lefa Lefa
3766
+ lfb Buu (Cameroon) Buu (Cameroon)
3761
3767
  lfn Lingua Franca Nova Lingua Franca Nova
3762
3768
  lga Lungga Lungga
3763
3769
  lgb Laghu Laghu
@@ -3991,7 +3997,7 @@ lue Luvale Luvale
3991
3997
  luf Laua Laua
3992
3998
  lug Ganda Ganda
3993
3999
  luh Leizhou Chinese Chinese, Leizhou
3994
- lui Luiseno Luiseno
4000
+ lui Luiseño Luiseño
3995
4001
  luj Luna Luna
3996
4002
  luk Lunanakha Lunanakha
3997
4003
  lul Olu'bo Olu'bo
@@ -4113,6 +4119,7 @@ mcz Mawan Mawan
4113
4119
  mda Mada (Nigeria) Mada (Nigeria)
4114
4120
  mdb Morigi Morigi
4115
4121
  mdc Male (Papua New Guinea) Male (Papua New Guinea)
4122
+ mdc Soq Soq
4116
4123
  mdd Mbum Mbum
4117
4124
  mde Maba (Chad) Maba (Chad)
4118
4125
  mdf Moksha Moksha
@@ -4133,6 +4140,7 @@ mdu Mboko Mboko
4133
4140
  mdv Santa Lucía Monteverde Mixtec Mixtec, Santa Lucía Monteverde
4134
4141
  mdw Mbosi Mbosi
4135
4142
  mdx Dizin Dizin
4143
+ mdy Male Male
4136
4144
  mdy Male (Ethiopia) Male (Ethiopia)
4137
4145
  mdz Suruí Do Pará Suruí Do Pará
4138
4146
  mea Menka Menka
@@ -4397,6 +4405,7 @@ mod Mobilian Mobilian
4397
4405
  moe Innu Innu
4398
4406
  moe Montagnais Montagnais
4399
4407
  mog Mongondow Mongondow
4408
+ moh Kanien'kéha Kanien'kéha
4400
4409
  moh Mohawk Mohawk
4401
4410
  moi Mboi Mboi
4402
4411
  moj Monzombo Monzombo
@@ -5017,6 +5026,7 @@ nog Nogai Nogai
5017
5026
  noh Nomu Nomu
5018
5027
  noi Noiri Noiri
5019
5028
  noj Nonuya Nonuya
5029
+ nok Lhéchelesem Lhéchelesem
5020
5030
  nok Nooksack Nooksack
5021
5031
  nol Nomlaki Nomlaki
5022
5032
  non Old Norse Norse, Old
@@ -6375,6 +6385,7 @@ srp Serbian Serbian
6375
6385
  srq Sirionó Sirionó
6376
6386
  srr Serer Serer
6377
6387
  srs Sarsi Sarsi
6388
+ srs Tsuut'ina Tsuut'ina
6378
6389
  srt Sauri Sauri
6379
6390
  sru Suruí Suruí
6380
6391
  srv Southern Sorsoganon Sorsoganon, Southern
@@ -6522,6 +6533,7 @@ szn Sula Sula
6522
6533
  szp Suabo Suabo
6523
6534
  szs Solomon Islands Sign Language Solomon Islands Sign Language
6524
6535
  szv Isu (Fako Division) Isu (Fako Division)
6536
+ szv Isubu Isubu
6525
6537
  szw Sawai Sawai
6526
6538
  szy Sakizaya Sakizaya
6527
6539
  taa Lower Tanana Tanana, Lower
@@ -6989,6 +7001,9 @@ tuz Turka Turka
6989
7001
  tva Vaghua Vaghua
6990
7002
  tvd Tsuvadi Tsuvadi
6991
7003
  tve Te'un Te'un
7004
+ tvg Batavian Portuguese Creole Creole, Batavian Portuguese
7005
+ tvg Mardijker Creole Creole, Mardijker
7006
+ tvg Tugunese Tugunese
6992
7007
  tvi Tulai Tulai
6993
7008
  tvk Southeast Ambrym Ambrym, Southeast
6994
7009
  tvl Tuvalu Tuvalu
@@ -7310,6 +7325,7 @@ vut Vute Vute
7310
7325
  vwa Awa (China) Awa (China)
7311
7326
  waa Walla Walla Walla Walla
7312
7327
  wab Wab Wab
7328
+ wab Yote Yote
7313
7329
  wac Wasco-Wishram Wasco-Wishram
7314
7330
  wad Wamesa Wamesa
7315
7331
  wad Wondama Wondama
@@ -7981,6 +7997,7 @@ ykk Yakaikeke Yakaikeke
7981
7997
  ykl Khlula Khlula
7982
7998
  ykm Kap Kap
7983
7999
  ykn Kua-nsi Kua-nsi
8000
+ yko Iyasa Iyasa
7984
8001
  yko Yasa Yasa
7985
8002
  ykr Yekora Yekora
7986
8003
  ykt Kathu Kathu
@@ -8177,6 +8194,7 @@ zha Zhuang Zhuang
8177
8194
  zhb Zhaba Zhaba
8178
8195
  zhd Dai Zhuang Zhuang, Dai
8179
8196
  zhi Zhire Zhire
8197
+ zhk Kurdish Sign Language Kurdish Sign Language
8180
8198
  zhn Nong Zhuang Zhuang, Nong
8181
8199
  zho Chinese Chinese
8182
8200
  zhw Zhoa Zhoa
@@ -25,7 +25,6 @@ from ._data import (
25
25
  _COLUMN_TYPE,
26
26
  )
27
27
 
28
-
29
28
  _STRING_CLEANING_FUNCS = [lambda x: x.lower(), lambda x: x.title()]
30
29
 
31
30
 
@@ -33,41 +32,18 @@ class LanguageNotFoundError(Exception):
33
32
  pass
34
33
 
35
34
 
36
- @dataclass(frozen=True)
35
+ @dataclass(frozen=True, slots=True)
37
36
  class Name:
38
37
  """Represents an alternative name of a language."""
39
38
 
40
- __slots__ = ("print", "inverted")
41
39
  print: str
42
40
  inverted: str
43
41
 
44
42
 
45
- @dataclass(frozen=True)
43
+ @dataclass(frozen=True, slots=True)
46
44
  class Language:
47
45
  """Represents a language in the ISO 639-3 charts."""
48
46
 
49
- __slots__ = (
50
- # From the "codes" table
51
- "part3",
52
- "part2b",
53
- "part2t",
54
- "part1",
55
- "scope",
56
- "type",
57
- "status",
58
- "name",
59
- "comment",
60
- # From the "name_index" table
61
- "other_names",
62
- # From the "macrolanguages" table
63
- "macrolanguage",
64
- # From the "retirements" table
65
- "retire_reason",
66
- "retire_change_to",
67
- "retire_remedy",
68
- "retire_date",
69
- )
70
-
71
47
  # From the "codes" table
72
48
  part3: str
73
49
  part2b: str | None
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-iso639
3
- Version: 2025.11.16
3
+ Version: 2026.4.20
4
4
  Summary: ISO 639 language codes, names, and other associated information
5
5
  Author-email: "Jackson L. Lee" <jacksonlunlee@gmail.com>
6
- License: Apache 2.0
6
+ License-Expression: Apache-2.0
7
7
  Project-URL: Source, https://github.com/jacksonllee/iso639
8
8
  Keywords: ISO 639,language codes,languages,linguistics
9
9
  Classifier: Development Status :: 5 - Production/Stable
@@ -11,7 +11,6 @@ Classifier: Intended Audience :: Developers
11
11
  Classifier: Intended Audience :: Education
12
12
  Classifier: Intended Audience :: Information Technology
13
13
  Classifier: Intended Audience :: Science/Research
14
- Classifier: License :: OSI Approved :: Apache Software License
15
14
  Classifier: Operating System :: OS Independent
16
15
  Classifier: Programming Language :: Python :: 3
17
16
  Classifier: Programming Language :: Python :: 3 :: Only
@@ -28,13 +27,12 @@ Requires-Python: >=3.10
28
27
  Description-Content-Type: text/markdown
29
28
  License-File: LICENSE.txt
30
29
  Provides-Extra: dev
31
- Requires-Dist: black==25.11.0; extra == "dev"
32
- Requires-Dist: build==1.3.0; extra == "dev"
33
- Requires-Dist: flake8==7.3.0; extra == "dev"
34
- Requires-Dist: mypy==1.18.2; extra == "dev"
35
- Requires-Dist: pytest==9.0.0; extra == "dev"
36
- Requires-Dist: requests==2.32.5; extra == "dev"
37
- Requires-Dist: twine==6.2.0; extra == "dev"
30
+ Requires-Dist: black; extra == "dev"
31
+ Requires-Dist: build; extra == "dev"
32
+ Requires-Dist: flake8; extra == "dev"
33
+ Requires-Dist: mypy; extra == "dev"
34
+ Requires-Dist: pytest; extra == "dev"
35
+ Requires-Dist: twine; extra == "dev"
38
36
  Dynamic: license-file
39
37
 
40
38
  # python-iso639
@@ -56,10 +54,24 @@ Current features:
56
54
 
57
55
  ## Installation
58
56
 
57
+ Using pip:
58
+
59
59
  ```bash
60
60
  pip install python-iso639
61
61
  ```
62
62
 
63
+ Using uv:
64
+
65
+ ```bash
66
+ uv add python-iso639
67
+ ```
68
+
69
+ Using conda:
70
+
71
+ ```bash
72
+ conda install -c conda-forge python-iso639
73
+ ```
74
+
63
75
  ## Usage
64
76
 
65
77
  `python-iso639` revolves around a `Language` class.
@@ -248,7 +260,7 @@ A `Language` instance has the following attributes:
248
260
  | `status` | `str` | ✗ | One of {(A)ctive, (R)etired}, describing the ISO 639-3 code |
249
261
  | `name` | `str` | ✗ | Reference language name in ISO 639-3 |
250
262
  | `comment` | `str` | ✓ | Comment from ISO 639-3 |
251
- | `other_names` | `List[Name]` | ✓ | Other print and inverted names [2] |
263
+ | `other_names` | `list[Name]` | ✓ | Other print and inverted names [2] |
252
264
  | `macrolanguage` | `str` | ✓ | Macrolanguage |
253
265
  | `retire_reason` | `str` | ✓ | Retirement reason, one of {(C)hange, (D)uplicate, (N)on-existent, (S)plit, (M)erge} |
254
266
  | `retire_change_to` | `str` | ✓ | ISO 639-3 code to which this language can be changed, if retirement reason is one of {(C)hange, (D)uplicate, (M)erge} |
@@ -307,7 +319,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
307
319
  ```python
308
320
  >>> import iso639
309
321
  >>> iso639.DATA_LAST_UPDATED
310
- datetime.date(2025, 10, 15)
322
+ datetime.date(2026, 4, 15)
311
323
  ```
312
324
 
313
325
  * `ALL_LANGUAGES`: The list of all `Language` objects based on the included language code data
@@ -317,7 +329,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
317
329
  >>> type(iso639.ALL_LANGUAGES)
318
330
  <class 'set'>
319
331
  >>> len(iso639.ALL_LANGUAGES)
320
- 8311
332
+ 8315
321
333
  ```
322
334
 
323
335
  ## Links
@@ -0,0 +1,8 @@
1
+
2
+ [dev]
3
+ black
4
+ build
5
+ flake8
6
+ mypy
7
+ pytest
8
+ twine
@@ -132,7 +132,7 @@ def test_invalid_inputs():
132
132
 
133
133
 
134
134
  def test_data_last_updated():
135
- assert DATA_LAST_UPDATED == datetime.date(2025, 10, 15), "Need to update README.md"
135
+ assert DATA_LAST_UPDATED == datetime.date(2026, 4, 15), "Need to update README.md"
136
136
 
137
137
 
138
138
  def test_all_languages():
@@ -140,7 +140,7 @@ def test_all_languages():
140
140
  # Defining `len_all_languages` so that when the assertion fails,
141
141
  # the error message is more informative.
142
142
  len_all_languages = len(ALL_LANGUAGES)
143
- assert len_all_languages == 8311, "Need to update README.md"
143
+ assert len_all_languages == 8315, "Need to update README.md"
144
144
  lang = list(ALL_LANGUAGES)[0]
145
145
  assert type(lang) is Language
146
146
 
@@ -3,7 +3,6 @@ import re
3
3
 
4
4
  import iso639
5
5
 
6
-
7
6
  _REPO_DIR = os.path.dirname(os.path.dirname(__file__))
8
7
 
9
8
 
@@ -1,9 +0,0 @@
1
-
2
- [dev]
3
- black==25.11.0
4
- build==1.3.0
5
- flake8==7.3.0
6
- mypy==1.18.2
7
- pytest==9.0.0
8
- requests==2.32.5
9
- twine==6.2.0