From df1d2fb26e99ea742d707b524afffe5c8806ee5a Mon Sep 17 00:00:00 2001 From: Hernan Date: Sat, 21 Dec 2019 00:57:21 -0300 Subject: Improved babel experience 1. UnitRegistry now has an optional keyword argument (`locale`) that can be used to define the default value for `Quantity.format_babel` locale argument. 2. When Babel is not installed, `Quantity.format_babel` display a nicer and more informative exception. Closes #899, #904 --- pint/compat.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'pint/compat.py') diff --git a/pint/compat.py b/pint/compat.py index 4ec3633..24fa769 100644 --- a/pint/compat.py +++ b/pint/compat.py @@ -13,6 +13,18 @@ from io import BytesIO from numbers import Number +def missing_dependency(package, display_name=None): + display_name = display_name or package + + def _inner(*args, **kwargs): + raise Exception( + "This feature requires %s. Please install it by running:\n" + "pip install %s" % (display_name, package) + ) + + return _inner + + def tokenizer(input_string): for tokinfo in tokenize.tokenize(BytesIO(input_string.encode("utf-8")).readline): if tokinfo.type != tokenize.ENCODING: @@ -121,12 +133,14 @@ try: from babel import Locale as Loc from babel import units as babel_units + babel_parse = Loc.parse + HAS_BABEL = hasattr(babel_units, "format_unit") except ImportError: HAS_BABEL = False if not HAS_BABEL: - Loc = babel_units = None # noqa: F811 + babel_parse = babel_units = missing_dependency("Babel") # noqa: F811 # Define location of pint.Quantity in NEP-13 type cast hierarchy by defining upcast and # downcast/wrappable types -- cgit v1.2.1