From dd5e88f3c01830b826013f5c4490f8d34676f992 Mon Sep 17 00:00:00 2001 From: Andrew Date: Fri, 21 Jun 2024 23:46:24 +0100 Subject: [PATCH 1/2] skip some locales --- pint/testsuite/helpers.py | 14 +++++++++++--- pint/testsuite/test_babel.py | 8 ++++---- pint/testsuite/test_issues.py | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/pint/testsuite/helpers.py b/pint/testsuite/helpers.py index c9106b75a..50331d1d1 100644 --- a/pint/testsuite/helpers.py +++ b/pint/testsuite/helpers.py @@ -128,9 +128,17 @@ def requires_numpy_at_least(version): ) -requires_babel = pytest.mark.skipif( - not HAS_BABEL, reason="Requires Babel with units support" -) +def requires_babel(tested_locales=[]): + if not HAS_BABEL: + return pytest.mark.skip("Requires Babel with units support") + import babel + + locales_available = all( + [loc in babel.localedata.locale_identifiers() for loc in tested_locales] + ) + return pytest.mark.skipif(locales_available, reason="Tested locales not available.") + + requires_not_babel = pytest.mark.skipif( HAS_BABEL, reason="Requires Babel not to be installed" ) diff --git a/pint/testsuite/test_babel.py b/pint/testsuite/test_babel.py index 2dd66d58d..9adcb04a9 100644 --- a/pint/testsuite/test_babel.py +++ b/pint/testsuite/test_babel.py @@ -16,7 +16,7 @@ def test_no_babel(func_registry): distance.format_babel(locale="fr_FR", length="long") -@helpers.requires_babel() +@helpers.requires_babel(["fr_FR", "ro_RO"]) def test_format(func_registry): ureg = func_registry dirname = os.path.dirname(__file__) @@ -36,7 +36,7 @@ def test_format(func_registry): assert mks.format_babel(locale="fr_FR") == "métrique" -@helpers.requires_babel() +@helpers.requires_babel(["fr_FR", "ro_RO"]) def test_registry_locale(): ureg = UnitRegistry(fmt_locale="fr_FR") dirname = os.path.dirname(__file__) @@ -60,7 +60,7 @@ def test_registry_locale(): assert mks.format_babel(locale="fr_FR") == "métrique" -@helpers.requires_babel() +@helpers.requires_babel(["fr_FR"]) def test_unit_format_babel(): ureg = UnitRegistry(fmt_locale="fr_FR") volume = ureg.Unit("ml") @@ -85,7 +85,7 @@ def test_no_registry_locale(func_registry): distance.format_babel() -@helpers.requires_babel() +@helpers.requires_babel(["fr_FR"]) def test_str(func_registry): ureg = func_registry d = 24.1 * ureg.meter diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py index 3f3d69e67..97eca3cde 100644 --- a/pint/testsuite/test_issues.py +++ b/pint/testsuite/test_issues.py @@ -913,7 +913,7 @@ def test_issue1674(self, module_registry): arr_of_q * q_arr, np.array([Q_(2, "m^2"), Q_(8, "m s")], dtype="object") ) - @helpers.requires_babel() + @helpers.requires_babel(["es_ES"]) def test_issue_1400(self, sess_registry): q1 = 3.1 * sess_registry.W q2 = 3.1 * sess_registry.W / sess_registry.cm From 7576b2f10aa8e5a069b36bec88b30c7e12f68c93 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 22 Jun 2024 00:04:28 +0100 Subject: [PATCH 2/2] skip some locales --- pint/testsuite/helpers.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pint/testsuite/helpers.py b/pint/testsuite/helpers.py index 50331d1d1..d317e0755 100644 --- a/pint/testsuite/helpers.py +++ b/pint/testsuite/helpers.py @@ -131,12 +131,21 @@ def requires_numpy_at_least(version): def requires_babel(tested_locales=[]): if not HAS_BABEL: return pytest.mark.skip("Requires Babel with units support") - import babel - locales_available = all( - [loc in babel.localedata.locale_identifiers() for loc in tested_locales] + import locale + + default_locale = locale.getlocale(locale.LC_NUMERIC) + locales_unavailable = False + try: + for loc in tested_locales: + locale.setlocale(locale.LC_NUMERIC, loc) + except locale.Error: + locales_unavailable = True + locale.setlocale(locale.LC_NUMERIC, default_locale) + + return pytest.mark.skipif( + locales_unavailable, reason="Tested locales not available." ) - return pytest.mark.skipif(locales_available, reason="Tested locales not available.") requires_not_babel = pytest.mark.skipif(