]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Prepare for 2.18.0 (#1248) master v2.18.0
authorAarni Koskela <akx@iki.fi>
Sun, 1 Feb 2026 12:21:04 +0000 (13:21 +0100)
committerGitHub <noreply@github.com>
Sun, 1 Feb 2026 12:21:04 +0000 (14:21 +0200)
* Update authors file

* Update changelog for 2.18.0

* Update copyright year

* Bump version

24 files changed:
AUTHORS
CHANGES.rst
LICENSE
babel/__init__.py
babel/core.py
babel/dates.py
babel/lists.py
babel/localedata.py
babel/localtime/__init__.py
babel/localtime/_fallback.py
babel/messages/__init__.py
babel/messages/catalog.py
babel/messages/checkers.py
babel/messages/extract.py
babel/messages/frontend.py
babel/messages/jslexer.py
babel/messages/mofile.py
babel/messages/plurals.py
babel/messages/pofile.py
babel/numbers.py
babel/plural.py
babel/support.py
babel/util.py
scripts/generate_authors.py

diff --git a/AUTHORS b/AUTHORS
index 89353ae0fd3f55f20a8a90e2fc897ce02840b63f..79e18d46d37b794bda83ba11d751e4c0fa86c1dc 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -24,6 +24,7 @@ Babel is written and maintained by the Babel team and various contributors:
 - Hugo van Kemenade
 - Jun Omae
 - Heungsub Lee
+- Boris Verkhovskiy
 - Jakob Schnitzer
 - Sachin Paliwal
 - Alex Willmer
@@ -49,6 +50,9 @@ Babel is written and maintained by the Babel team and various contributors:
 - Arturas Moskvinas
 - Leonardo Pistone
 - Hyunjun Kim
+- Bart Broere
+- Guillaume Gauvrit
+- clach04
 - wandrew004
 - James McKinney
 - Tomáš Hrnčiar
index dcd7aa28e596cd00c3a785df58c2c1c1abaa0960..b09e184e8a8698a1615f7d1a22bb3ddc22804304 100644 (file)
@@ -1,6 +1,61 @@
 Babel Changelog
 ===============
 
+Version 2.18.0
+--------------
+
+Happy 2026! This release is, coincidentally, also being made from FOSDEM.
+
+We will aspire for a slightly less glacial release cadence in this year;
+there are interesting features in the pipeline.
+
+Features
+~~~~~~~~
+
+* Core: Add `babel.core.get_cldr_version()` by @akx in :gh:`1242`
+* Core: Use CLDR 47 by @tomasr8 in :gh:`1210`
+* Core: Use canonical IANA zone names in zone_territories by @akx in :gh:`1220`
+* Messages: Improve extract performance via ignoring directories early during os.walk by @akx in :gh:`968`
+* Messages: Merge in per-format keywords and auto_comments by @akx in :gh:`1243`
+* Messages: Update keywords for extraction of dpgettext and dnpgettext by @mardiros in :gh:`1235`
+* Messages: Validate all plurals in Python format checker by @tomasr8 in :gh:`1188`
+* Time: Use standard library `timezone` instead of `FixedOffsetTimezone` by @akx in :gh:`1203`
+
+Bugfixes
+~~~~~~~~
+
+* Core: Fix formatting for "Empty locale identifier" exception added in #1164 by @akx in :gh:`1184`
+* Core: Improve handling of no-inheritance-marker in timezone data by @akx in :gh:`1194`
+* Core: Make the number pattern regular expression more efficient by @akx in :gh:`1213`
+* Messages: Keep translator comments next to the translation function call by @akx in :gh:`1196`
+* Numbers: Fix KeyError that occurred when formatting compact currencies of exactly one thousand in several locales  by @bartbroere in :gh:`1246`
+
+Other improvements
+~~~~~~~~~~~~~~~~~~
+
+* Core: Avoid unnecessary uses of `map()` by @akx in :gh:`1180`
+* Messages: Have init-catalog create directories too by @akx in :gh:`1244`
+* Messages: Optimizations for read_po by @akx in :gh:`1200`
+* Messages: Use pathlib.Path() in catalog frontend; improve test coverage by @akx in :gh:`1204`
+
+
+Infrastructure and documentation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* CI: Renovate CI & lint tools by @akx in :gh:`1228`
+* CI: Tighten up CI with Zizmor by @akx in :gh:`1230`
+* CI: make job permissions explicit by @akx in :gh:`1227`
+* Docs: Add SECURITY.md by @akx in :gh:`1229`
+* Docs: Remove u string prefix from docs by @verhovsky in :gh:`1174`
+* Docs: Update dates.rst with current unicode.org tr35 link by @clach04 in :gh:`1189`
+* General: Add some PyPI classifiers by @tomasr8 in :gh:`1186`
+* General: Apply reformatting by hand and with Ruff by @akx in :gh:`1202`
+* General: Test on and declare support for Python 3.14 by @akx in :gh:`1233`
+* Tests: Convert Unittest testcases with setup/teardown to fixtures by @akx in :gh:`1240`
+* Tests: Mark PyPy CI flake as xfail by @akx in :gh:`1197`
+* Tests: Move pytest config to `pyproject.toml` by @tomasr8 in :gh:`1187`
+* Tests: Unwrap most `unittest` test cases to bare functions by @akx in :gh:`1241`
+
 Version 2.17.0
 --------------
 
diff --git a/LICENSE b/LICENSE
index 6ddae98eb657f0b21ae58bbb16aafd323c91ff0f..96f467d27dc84909918ef70976c8f1207130ee12 100644 (file)
--- a/LICENSE
+++ b/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2025 by the Babel Team, see AUTHORS for more information.
+Copyright (c) 2013-2026 by the Babel Team, see AUTHORS for more information.
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions
index 0edfa9a8f3c5ce97977727e1178ff0fcd66d92c6..2fd88befa4c5cfa830a863e46fa229ecf19e2cf3 100644 (file)
@@ -12,7 +12,7 @@ This package is basically composed of two major parts:
    access to various locale display names, localized number and date
    formatting, etc.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
@@ -25,7 +25,7 @@ from babel.core import (
     parse_locale,
 )
 
-__version__ = '2.17.0'
+__version__ = '2.18.0'
 
 __all__ = [
     'Locale',
index 77de440e87ee753184a1abbbcd889a8e70907385..4210b46bba9cee294a53ebeaaee5f32118725304 100644 (file)
@@ -4,7 +4,7 @@ babel.core
 
 Core locale representation and locale data access.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 6142541c486d371b8cd0fca1010193667c8eef9c..69610a7f01ec4e3a6dbb0573fb349c08ef675bb8 100644 (file)
@@ -11,7 +11,7 @@ following environment variables, in that order:
  * ``LC_ALL``, and
  * ``LANG``
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 606d865dcdef7742d10bb305a8f27288a299b632..b6c859800304d4aea57aba65b4c167ec504c7ec1 100644 (file)
@@ -10,7 +10,7 @@ following environment variables, in that order:
  * ``LC_ALL``, and
  * ``LANG``
 
-:copyright: (c) 2015-2025 by the Babel Team.
+:copyright: (c) 2015-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 073643c571f3752d719f500a8db39a5ba835686b..2b225a142adf85ff790fbd0afaba4d032e6f92a9 100644 (file)
@@ -7,7 +7,7 @@ Low-level locale data access.
 :note: The `Locale` class, which uses this module under the hood, provides a
        more convenient interface for accessing the locale data.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 8076516ec7e78306c1b9b09483c80217149c7eb9..9eb95ab2e98e50b596fe563770112a0b11e177dc 100644 (file)
@@ -5,7 +5,7 @@ babel.localtime
 Babel specific fork of tzlocal to determine the local timezone
 of the system.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 6cd67b5ce078ee3d04e8fd451027740c55f292db..218813905b74c5aa6975455bdf4a73f053fb0c09 100644 (file)
@@ -4,7 +4,7 @@ babel.localtime._fallback
 
 Emulated fallback local timezone when all else fails.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 6e445e6b0d54f2ea224cf14d4d70ffcd26ba057b..8dde3f299b0f6a77bf6949c4820ccfdcb5560b90 100644 (file)
@@ -4,7 +4,7 @@ babel.messages
 
 Support for ``gettext`` message catalogs.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 8a08a226867c3d124648d27bd0b9d2bf815b1acf..9a9739a724120a273e1fffd1db3d266a2f16ba48 100644 (file)
@@ -4,7 +4,7 @@ babel.messages.catalog
 
 Data structures for message catalogs.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 28081160f718916a497872b8003a5b48402f8418..4026ab1b3274deead5cf3fce2a31ea647991cf54 100644 (file)
@@ -6,7 +6,7 @@ Various routines that help with validation of translations.
 
 :since: version 0.9
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index ad37085384fc2f015cac634cb761662bfeee00c5..6fad84304066521c225e26adc8a04a712ec63479 100644 (file)
@@ -12,7 +12,7 @@ simple plugins.
 The main entry points into the extraction functionality are the functions
 `extract_from_dir` and `extract_from_file`.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 884a7000681ff7d0011ae15d1529cda6268214af..f63dd9dedb09ce393ad9c3bd8a1a5955444f7eff 100644 (file)
@@ -4,7 +4,7 @@ babel.messages.frontend
 
 Frontends for the message extraction functionality.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index df503e9486a42b9c03ab808982e9f8f8f6853516..d751b58f7d21f87c1a2fb67fd41ee4151269aa50 100644 (file)
@@ -5,7 +5,7 @@ babel.messages.jslexer
 A simple JavaScript 1.5 lexer which is used for the JavaScript
 extractor.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 32ba07879dace772956414d26aa7908216771b91..1a6fedfcb5704bf1b1a065ba612d82d5aaf7b62b 100644 (file)
@@ -4,7 +4,7 @@ babel.messages.mofile
 
 Writing of files in the ``gettext`` MO (machine object) format.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index a03fb4eddacda272c5b12e2f0e7257930bfbaa2c..a66fdfe4156c0aba4deaf928a0e0557f85b48265 100644 (file)
@@ -4,7 +4,7 @@ babel.messages.plurals
 
 Plural form definitions.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 4a986ab366a899b731c93c14d43e2559cc83b56c..b9678a924d9ae9591cdceda4d29896cba4d065a5 100644 (file)
@@ -5,7 +5,7 @@ babel.messages.pofile
 Reading and writing of files in the ``gettext`` PO (portable object)
 format.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index fbc7eece94e5a25ee6c16e32c4a2a17603760906..2ef9031aae3c4de95736d533186458c5d654a1d8 100644 (file)
@@ -12,7 +12,7 @@ following environment variables, in that order:
  * ``LC_ALL``, and
  * ``LANG``
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index e368b1acf4ffaa77fb9c40310e969fbcb98b116f..90aa4952d13db3e5bf601ea687f4c58b042877f6 100644 (file)
@@ -4,7 +4,7 @@ babel.numbers
 
 CLDR Plural support.  See UTS #35.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index f1149112a45785f32484db45e28c562e5dbb27f8..8cc2492e87123d73a1f4fbcad4ce2fa58d7b2c7f 100644 (file)
@@ -7,7 +7,7 @@ in applications.
 
 .. note: the code in this module is not used by Babel itself
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index 001fd646f852a379b816db1bf0ce7d1ee3f50b06..a2bf728cca78ad65eb0c686ac732c3ea9050c110 100644 (file)
@@ -4,7 +4,7 @@ babel.util
 
 Various utility classes and functions.
 
-:copyright: (c) 2013-2025 by the Babel Team.
+:copyright: (c) 2013-2026 by the Babel Team.
 :license: BSD, see LICENSE for more details.
 """
 
index cd18f640ac98c97106b06398e2af68dc969343c6..c7387d7445d6f86055a0998c75f78a7dd7305677 100644 (file)
@@ -9,6 +9,7 @@ aliases = {
     re.compile("Jun Omae"): "Jun Omae",
     re.compile(r"^Hugo$"): "Hugo van Kemenade",
     re.compile(r"^Tomas R([.])?"): "Tomas R.",
+    re.compile(r"^Ruff$"): "",  # It's a robot
 }
 
 
@@ -22,7 +23,7 @@ def map_alias(name):
 def get_sorted_authors_list():
     authors = check_output(['git', 'log', '--format=%aN'], cwd=root_path).decode('UTF-8')
     counts = Counter(map_alias(name) for name in authors.splitlines())
-    return [author for (author, count) in counts.most_common()]
+    return [author for (author, count) in counts.most_common() if author]
 
 
 def get_authors_file_content():