python-iso639 2025.11.16__tar.gz → 2026.1.31__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.1.31}/CHANGELOG.md +5 -0
  2. {python_iso639-2025.11.16/src/python_iso639.egg-info → python_iso639-2026.1.31}/PKG-INFO +8 -9
  3. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/README.md +3 -3
  4. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/pyproject.toml +5 -6
  5. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/__init__.py +1 -2
  6. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/_data/iso-639-3.tab +4 -2
  7. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/_data/iso-639-3_Name_Index.tab +4 -2
  8. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/language.py +2 -26
  9. {python_iso639-2025.11.16 → python_iso639-2026.1.31/src/python_iso639.egg-info}/PKG-INFO +8 -9
  10. python_iso639-2026.1.31/src/python_iso639.egg-info/requires.txt +8 -0
  11. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/tests/test_language.py +2 -2
  12. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/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.1.31}/LICENSE.txt +0 -0
  15. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/MANIFEST.in +0 -0
  16. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/setup.cfg +0 -0
  17. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/_data/__init__.py +0 -0
  18. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/_data/iso-639-3-macrolanguages.tab +0 -0
  19. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/_data/iso-639-3_Retirements.tab +0 -0
  20. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/iso639/py.typed +0 -0
  21. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/python_iso639.egg-info/SOURCES.txt +0 -0
  22. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/python_iso639.egg-info/dependency_links.txt +0 -0
  23. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/python_iso639.egg-info/not-zip-safe +0 -0
  24. {python_iso639-2025.11.16 → python_iso639-2026.1.31}/src/python_iso639.egg-info/top_level.txt +0 -0
@@ -17,6 +17,11 @@ major/minor/micro version numbers like `05` (it'd have to be just `5`).
17
17
  ### Fixed
18
18
  ### Security
19
19
 
20
+ ## [2026.1.31]
21
+
22
+ ### Changed
23
+ * Updated the ISO 639 data from SIL to the latest 2026-01-15 release.
24
+
20
25
  ## [2025.11.16]
21
26
 
22
27
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-iso639
3
- Version: 2025.11.16
3
+ Version: 2026.1.31
4
4
  Summary: ISO 639 language codes, names, and other associated information
5
5
  Author-email: "Jackson L. Lee" <jacksonlunlee@gmail.com>
6
6
  License: Apache 2.0
@@ -28,12 +28,11 @@ Requires-Python: >=3.10
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE.txt
30
30
  Provides-Extra: dev
31
- Requires-Dist: black==25.11.0; extra == "dev"
32
- Requires-Dist: build==1.3.0; extra == "dev"
31
+ Requires-Dist: black==26.1.0; extra == "dev"
32
+ Requires-Dist: build==1.4.0; extra == "dev"
33
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"
34
+ Requires-Dist: mypy==1.19.1; extra == "dev"
35
+ Requires-Dist: pytest==9.0.2; extra == "dev"
37
36
  Requires-Dist: twine==6.2.0; extra == "dev"
38
37
  Dynamic: license-file
39
38
 
@@ -248,7 +247,7 @@ A `Language` instance has the following attributes:
248
247
  | `status` | `str` | ✗ | One of {(A)ctive, (R)etired}, describing the ISO 639-3 code |
249
248
  | `name` | `str` | ✗ | Reference language name in ISO 639-3 |
250
249
  | `comment` | `str` | ✓ | Comment from ISO 639-3 |
251
- | `other_names` | `List[Name]` | ✓ | Other print and inverted names [2] |
250
+ | `other_names` | `list[Name]` | ✓ | Other print and inverted names [2] |
252
251
  | `macrolanguage` | `str` | ✓ | Macrolanguage |
253
252
  | `retire_reason` | `str` | ✓ | Retirement reason, one of {(C)hange, (D)uplicate, (N)on-existent, (S)plit, (M)erge} |
254
253
  | `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 +306,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
307
306
  ```python
308
307
  >>> import iso639
309
308
  >>> iso639.DATA_LAST_UPDATED
310
- datetime.date(2025, 10, 15)
309
+ datetime.date(2026, 1, 15)
311
310
  ```
312
311
 
313
312
  * `ALL_LANGUAGES`: The list of all `Language` objects based on the included language code data
@@ -317,7 +316,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
317
316
  >>> type(iso639.ALL_LANGUAGES)
318
317
  <class 'set'>
319
318
  >>> len(iso639.ALL_LANGUAGES)
320
- 8311
319
+ 8313
321
320
  ```
322
321
 
323
322
  ## Links
@@ -209,7 +209,7 @@ A `Language` instance has the following attributes:
209
209
  | `status` | `str` | ✗ | One of {(A)ctive, (R)etired}, describing the ISO 639-3 code |
210
210
  | `name` | `str` | ✗ | Reference language name in ISO 639-3 |
211
211
  | `comment` | `str` | ✓ | Comment from ISO 639-3 |
212
- | `other_names` | `List[Name]` | ✓ | Other print and inverted names [2] |
212
+ | `other_names` | `list[Name]` | ✓ | Other print and inverted names [2] |
213
213
  | `macrolanguage` | `str` | ✓ | Macrolanguage |
214
214
  | `retire_reason` | `str` | ✓ | Retirement reason, one of {(C)hange, (D)uplicate, (N)on-existent, (S)plit, (M)erge} |
215
215
  | `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 +268,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
268
268
  ```python
269
269
  >>> import iso639
270
270
  >>> iso639.DATA_LAST_UPDATED
271
- datetime.date(2025, 10, 15)
271
+ datetime.date(2026, 1, 15)
272
272
  ```
273
273
 
274
274
  * `ALL_LANGUAGES`: The list of all `Language` objects based on the included language code data
@@ -278,7 +278,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
278
278
  >>> type(iso639.ALL_LANGUAGES)
279
279
  <class 'set'>
280
280
  >>> len(iso639.ALL_LANGUAGES)
281
- 8311
281
+ 8313
282
282
  ```
283
283
 
284
284
  ## Links
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-iso639"
7
- version = "2025.11.16"
7
+ version = "2026.1.31"
8
8
  description = "ISO 639 language codes, names, and other associated information"
9
9
  readme = "README.md"
10
10
  requires-python = ">= 3.10"
@@ -34,12 +34,11 @@ classifiers = [
34
34
 
35
35
  [project.optional-dependencies]
36
36
  dev = [
37
- "black == 25.11.0",
38
- "build == 1.3.0",
37
+ "black == 26.1.0",
38
+ "build == 1.4.0",
39
39
  "flake8 == 7.3.0",
40
- "mypy == 1.18.2",
41
- "pytest == 9.0.0",
42
- "requests == 2.32.5",
40
+ "mypy == 1.19.1",
41
+ "pytest == 9.0.2",
43
42
  "twine == 6.2.0",
44
43
  ]
45
44
 
@@ -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, 1, 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -3758,6 +3759,7 @@ lex Luang Luang
3758
3759
  ley Lemolang Lemolang
3759
3760
  lez Lezghian Lezghian
3760
3761
  lfa Lefa Lefa
3762
+ lfb Buu (Cameroon) Buu (Cameroon)
3761
3763
  lfn Lingua Franca Nova Lingua Franca Nova
3762
3764
  lga Lungga Lungga
3763
3765
  lgb Laghu Laghu
@@ -3991,7 +3993,7 @@ lue Luvale Luvale
3991
3993
  luf Laua Laua
3992
3994
  lug Ganda Ganda
3993
3995
  luh Leizhou Chinese Chinese, Leizhou
3994
- lui Luiseno Luiseno
3996
+ lui Luiseño Luiseño
3995
3997
  luj Luna Luna
3996
3998
  luk Lunanakha Lunanakha
3997
3999
  lul Olu'bo Olu'bo
@@ -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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-iso639
3
- Version: 2025.11.16
3
+ Version: 2026.1.31
4
4
  Summary: ISO 639 language codes, names, and other associated information
5
5
  Author-email: "Jackson L. Lee" <jacksonlunlee@gmail.com>
6
6
  License: Apache 2.0
@@ -28,12 +28,11 @@ Requires-Python: >=3.10
28
28
  Description-Content-Type: text/markdown
29
29
  License-File: LICENSE.txt
30
30
  Provides-Extra: dev
31
- Requires-Dist: black==25.11.0; extra == "dev"
32
- Requires-Dist: build==1.3.0; extra == "dev"
31
+ Requires-Dist: black==26.1.0; extra == "dev"
32
+ Requires-Dist: build==1.4.0; extra == "dev"
33
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"
34
+ Requires-Dist: mypy==1.19.1; extra == "dev"
35
+ Requires-Dist: pytest==9.0.2; extra == "dev"
37
36
  Requires-Dist: twine==6.2.0; extra == "dev"
38
37
  Dynamic: license-file
39
38
 
@@ -248,7 +247,7 @@ A `Language` instance has the following attributes:
248
247
  | `status` | `str` | ✗ | One of {(A)ctive, (R)etired}, describing the ISO 639-3 code |
249
248
  | `name` | `str` | ✗ | Reference language name in ISO 639-3 |
250
249
  | `comment` | `str` | ✓ | Comment from ISO 639-3 |
251
- | `other_names` | `List[Name]` | ✓ | Other print and inverted names [2] |
250
+ | `other_names` | `list[Name]` | ✓ | Other print and inverted names [2] |
252
251
  | `macrolanguage` | `str` | ✓ | Macrolanguage |
253
252
  | `retire_reason` | `str` | ✓ | Retirement reason, one of {(C)hange, (D)uplicate, (N)on-existent, (S)plit, (M)erge} |
254
253
  | `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 +306,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
307
306
  ```python
308
307
  >>> import iso639
309
308
  >>> iso639.DATA_LAST_UPDATED
310
- datetime.date(2025, 10, 15)
309
+ datetime.date(2026, 1, 15)
311
310
  ```
312
311
 
313
312
  * `ALL_LANGUAGES`: The list of all `Language` objects based on the included language code data
@@ -317,7 +316,7 @@ e.g., [`dataclasses.asdict`](https://docs.python.org/3/library/dataclasses.html#
317
316
  >>> type(iso639.ALL_LANGUAGES)
318
317
  <class 'set'>
319
318
  >>> len(iso639.ALL_LANGUAGES)
320
- 8311
319
+ 8313
321
320
  ```
322
321
 
323
322
  ## Links
@@ -0,0 +1,8 @@
1
+
2
+ [dev]
3
+ black==26.1.0
4
+ build==1.4.0
5
+ flake8==7.3.0
6
+ mypy==1.19.1
7
+ pytest==9.0.2
8
+ twine==6.2.0
@@ -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, 1, 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 == 8313, "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