50 lines
1.6 KiB
Diff
50 lines
1.6 KiB
Diff
From d2642df497ad0d0e66c3d46347df7b7b659b3c7d Mon Sep 17 00:00:00 2001
|
|
From: Vratislav Podzimek <vpodzime@redhat.com>
|
|
Date: Tue, 8 Mar 2016 16:56:43 +0100
|
|
Subject: [PATCH] Make sure we pass a locale-agnostic string to Decimal()
|
|
|
|
Decimal() doesn't take into account the current locale, but we get a localized
|
|
result from bs_convert_to().
|
|
|
|
Signed-off-by: Vratislav Podzimek <vpodzime@redhat.com>
|
|
---
|
|
src/python/bytesize.py | 12 ++++++++++--
|
|
tests/lbs_py_override_unittest.py | 26 ++++++++++++++++++++++++++
|
|
2 files changed, 36 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/python/bytesize.py b/src/python/bytesize.py
|
|
index 179719c..3a32b65 100644
|
|
--- a/src/python/bytesize.py
|
|
+++ b/src/python/bytesize.py
|
|
@@ -4,6 +4,8 @@ from ctypes import POINTER, byref
|
|
import six
|
|
from decimal import Decimal
|
|
|
|
+import locale
|
|
+
|
|
import gettext
|
|
_ = lambda x: gettext.translation("libbytesize", fallback=True).gettext(x) if x != "" else ""
|
|
|
|
@@ -356,9 +358,15 @@ class Size(object):
|
|
real_unit = unit_strs.get(unit)
|
|
if real_unit is None:
|
|
raise ValueError("Invalid unit specification: '%s'" % unit)
|
|
- return Decimal(self._c_size.convert_to(real_unit))
|
|
+ ret = self._c_size.convert_to(real_unit)
|
|
else:
|
|
- return Decimal(self._c_size.convert_to(unit))
|
|
+ ret = self._c_size.convert_to(unit)
|
|
+
|
|
+ radix = locale.nl_langinfo(locale.RADIXCHAR)
|
|
+ if radix != '.':
|
|
+ ret = ret.replace(radix, '.')
|
|
+
|
|
+ return Decimal(ret)
|
|
|
|
def human_readable(self, min_unit=B, max_places=2, xlate=True):
|
|
if isinstance(min_unit, six.string_types):
|
|
|
|
--
|
|
2.5.0
|
|
|