From fef5459b9427a347decc9dd35691d50e7c5e8f2a Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Mon, 16 Jun 2025 23:15:03 +0900 Subject: [PATCH] Replace deprecated getdefaultlocale ... because getdefautlocale was deprecated in Python 3.11 . Also add context manager for locale override to make sure it is reset to the original values even when something goes wrong during sort. Change-Id: Ifeda733a8ea5b867615308318397fbe295313e2d --- os_collect_config/local.py | 13 +++++++++---- os_collect_config/tests/test_local.py | 11 +++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/os_collect_config/local.py b/os_collect_config/local.py index 913af37..2b59555 100644 --- a/os_collect_config/local.py +++ b/os_collect_config/local.py @@ -95,8 +95,13 @@ class Collector: # Now sort specifically by C locale def locale_aware_by_first_item(data): return locale.strxfrm(data[0]) - save_locale = locale.getdefaultlocale() - locale.setlocale(locale.LC_ALL, 'C') - sorted_content = sorted(final_content, key=locale_aware_by_first_item) - locale.setlocale(locale.LC_ALL, save_locale) + + save_locale = locale.getlocale() + try: + locale.setlocale(locale.LC_ALL, 'C') + sorted_content = sorted( + final_content, key=locale_aware_by_first_item) + finally: + locale.setlocale(locale.LC_ALL, save_locale) + return sorted_content diff --git a/os_collect_config/tests/test_local.py b/os_collect_config/tests/test_local.py index ae11400..049fb2d 100644 --- a/os_collect_config/tests/test_local.py +++ b/os_collect_config/tests/test_local.py @@ -114,11 +114,14 @@ class TestLocal(testtools.TestCase): def wrong_sort_listdir(path): ret = unpatched_listdir(path) - save_locale = locale.getdefaultlocale() - locale.setlocale(locale.LC_ALL, 'C') - bad_sort = sorted(ret, reverse=True) - locale.setlocale(locale.LC_ALL, save_locale) + save_locale = locale.getlocale() + try: + locale.setlocale(locale.LC_ALL, 'C') + bad_sort = sorted(ret, reverse=True) + finally: + locale.setlocale(locale.LC_ALL, save_locale) return bad_sort + self.useFixture(fixtures.MonkeyPatch('os.listdir', wrong_sort_listdir)) local_md = self._call_collect()