diff --git a/mpcontribs-api/mpcontribs/api/contributions/document.py b/mpcontribs-api/mpcontribs/api/contributions/document.py index b5a045387..feb9c86a8 100644 --- a/mpcontribs-api/mpcontribs/api/contributions/document.py +++ b/mpcontribs-api/mpcontribs/api/contributions/document.py @@ -33,11 +33,7 @@ lambda s: s.replace("%", " percent "), ], ) -if hasattr(ureg,"formatter"): - # for newer versions of pint - ureg.formatter.default_format = "~,P" -else: - ureg.default_format = "~,P" +ureg.formatter.default_format = "~,P" if "percent" not in ureg: # percent is native in pint >= 0.21 @@ -76,12 +72,12 @@ def format_cell(cell): return cell q = get_quantity(cell) - if not q or isnan(q.nominal_value): + if not q or isnan(q.magnitude.nominal_value): return cell q = truncate_digits(q) try: - return str(q.nominal_value) if isnan(q.std_dev) else str(q) + return str(q.magnitude.nominal_value) if isnan(q.magnitude.std_dev) else str(q) except Exception: return cell @@ -104,19 +100,16 @@ def get_quantity(s): try: parts[0] = ufloat_fromstr(parts[0]) - meas = ureg.Measurement(*parts) - if not hasattr(meas,"nominal_value") and (val := hasattr(meas,"value")): - meas.nominal_value = float(val) # Measurement.value is a `Quantity` object - return meas + return ureg.Measurement(*parts) except ValueError: return None def truncate_digits(q): - if isnan(q.nominal_value): + if isnan(q.magnitude.nominal_value): return q - v = Decimal(str(q.nominal_value)) + v = Decimal(str(q.magnitude.nominal_value)) vt = v.as_tuple() if vt.exponent >= 0: @@ -125,8 +118,8 @@ def truncate_digits(q): dgts = len(vt.digits) dgts = max_dgts if dgts > max_dgts else dgts s = f"{v:.{dgts}g}" - if not isnan(q.std_dev): - s += f"+/-{q.std_dev:.{dgts}g}" + if not isnan(q.magnitude.std_dev): + s += f"+/-{q.magnitude.std_dev:.{dgts}g}" if q.units: s += f" {q.units}" @@ -277,7 +270,7 @@ def make_quantities(path, key, value): return key, value # silently ignore "nan" - if isnan(q.nominal_value): + if isnan(q.magnitude.nominal_value): return False # ensure that the same units are used across contributions @@ -305,11 +298,11 @@ def make_quantities(path, key, value): q = truncate_digits(q) # return new value dict - display = str(q.value) if isnan(q.std_dev) else str(q) + display = str(q.value) if isnan(q.magnitude.std_dev) else str(q) value = { "display": display, - "value": q.nominal_value, - "error": q.std_dev, + "value": q.magnitude.nominal_value, + "error": q.magnitude.std_dev, "unit": str(q.units), } return key, value diff --git a/mpcontribs-api/setup.py b/mpcontribs-api/setup.py index 140203b0b..262a6fba6 100644 --- a/mpcontribs-api/setup.py +++ b/mpcontribs-api/setup.py @@ -32,7 +32,7 @@ "more-itertools", "nbformat", "notebook<7", - "pint", + "pint>=0.24", "psycopg2-binary", "pymatgen", "pyopenssl", @@ -44,9 +44,7 @@ "websocket_client", "zstandard", ], - extras_require={ - "dev": ["pytest", "flake8"] - }, + extras_require={"dev": ["pytest", "flake8"]}, license="MIT", zip_safe=False, )