From 25298f3717bac0c646e73542f32e30833f90245b Mon Sep 17 00:00:00 2001 From: andrewgsavage Date: Tue, 11 Jun 2024 22:05:10 +0100 Subject: [PATCH 1/4] dimensionless --- pint/delegates/formatter/_format_helpers.py | 2 +- pint/testsuite/test_issues.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/pint/delegates/formatter/_format_helpers.py b/pint/delegates/formatter/_format_helpers.py index 995159e65..95fad1758 100644 --- a/pint/delegates/formatter/_format_helpers.py +++ b/pint/delegates/formatter/_format_helpers.py @@ -211,7 +211,7 @@ def formatter( neg_terms.append(power_fmt.format(key, fun(value))) if not pos_terms and not neg_terms: - return "" + return "dimensionless" if not as_ratio: # Show as Product: positive * negative terms ** -1 diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py index 2a0b7edf6..9a453685e 100644 --- a/pint/testsuite/test_issues.py +++ b/pint/testsuite/test_issues.py @@ -1255,3 +1255,14 @@ def test_issue1949(registry_empty): def test_issue1772(given, expected): ureg = UnitRegistry(non_int_type=decimal.Decimal) assert f"{ureg(given):Lx}" == expected + + +def test_issue2007(): + ureg = UnitRegistry() + q = ureg.Quantity(1, "") + assert f"{q:P}" == '1 dimensionless' + assert f"{q:C}" == '1 dimensionless' + assert f"{q:D}" == '1 dimensionless' + assert f"{q:H}" == '1 dimensionless' + assert f"{q:L}" == '1\\ dimensionless' + assert f"{q:Lx}" == '\\SI[]{1}{}' \ No newline at end of file From 8d0439a8f1e70d84c68bfbfd1f1f9c7e47b3510c Mon Sep 17 00:00:00 2001 From: andrewgsavage Date: Tue, 11 Jun 2024 22:41:55 +0100 Subject: [PATCH 2/4] dimensionless --- pint/delegates/formatter/_compound_unit_helpers.py | 4 +++- pint/delegates/formatter/_format_helpers.py | 4 +++- pint/testsuite/test_issues.py | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pint/delegates/formatter/_compound_unit_helpers.py b/pint/delegates/formatter/_compound_unit_helpers.py index 89bda87a2..2bef3faa8 100644 --- a/pint/delegates/formatter/_compound_unit_helpers.py +++ b/pint/delegates/formatter/_compound_unit_helpers.py @@ -254,7 +254,9 @@ def prepare_compount_unit( out = unit._units.items() else: out = unit - + print(out) + if len(out) == 0 and not "~" in spec: + out = {"dimensionless": 1}.items() # out: unit_name, unit_exponent if "~" in spec: diff --git a/pint/delegates/formatter/_format_helpers.py b/pint/delegates/formatter/_format_helpers.py index 95fad1758..8a2f37a59 100644 --- a/pint/delegates/formatter/_format_helpers.py +++ b/pint/delegates/formatter/_format_helpers.py @@ -131,6 +131,8 @@ def join_mu(joint_fstring: str, mstr: str, ustr: str) -> str: This avoids that `3 and `1 / m` becomes `3 1 / m` """ + if ustr == "": + return mstr if ustr.startswith("1 / "): return joint_fstring.format(mstr, ustr[2:]) return joint_fstring.format(mstr, ustr) @@ -211,7 +213,7 @@ def formatter( neg_terms.append(power_fmt.format(key, fun(value))) if not pos_terms and not neg_terms: - return "dimensionless" + return "" if not as_ratio: # Show as Product: positive * negative terms ** -1 diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py index 9a453685e..eb286d6c7 100644 --- a/pint/testsuite/test_issues.py +++ b/pint/testsuite/test_issues.py @@ -1264,5 +1264,6 @@ def test_issue2007(): assert f"{q:C}" == '1 dimensionless' assert f"{q:D}" == '1 dimensionless' assert f"{q:H}" == '1 dimensionless' - assert f"{q:L}" == '1\\ dimensionless' - assert f"{q:Lx}" == '\\SI[]{1}{}' \ No newline at end of file + # assert f"{q:L}" == '1\\ dimensionless' + assert f"{q:Lx}" == '\\SI[]{1}{}' + assert f"{q:~P}" == '1' \ No newline at end of file From 6a1938e7dd1cd309650d4ccd83efb7e1ce4133f0 Mon Sep 17 00:00:00 2001 From: andrewgsavage Date: Tue, 11 Jun 2024 22:45:21 +0100 Subject: [PATCH 3/4] dimensionless --- pint/delegates/formatter/_compound_unit_helpers.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pint/delegates/formatter/_compound_unit_helpers.py b/pint/delegates/formatter/_compound_unit_helpers.py index 2bef3faa8..01e71d896 100644 --- a/pint/delegates/formatter/_compound_unit_helpers.py +++ b/pint/delegates/formatter/_compound_unit_helpers.py @@ -254,9 +254,7 @@ def prepare_compount_unit( out = unit._units.items() else: out = unit - print(out) - if len(out) == 0 and not "~" in spec: - out = {"dimensionless": 1}.items() + # out: unit_name, unit_exponent if "~" in spec: From 6e420fecc45b05b7d298aac0509f969306145621 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 15 Jun 2024 09:52:24 +0100 Subject: [PATCH 4/4] format --- .../formatter/_compound_unit_helpers.py | 8 +++++++- pint/testsuite/test_issues.py | 20 ++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/pint/delegates/formatter/_compound_unit_helpers.py b/pint/delegates/formatter/_compound_unit_helpers.py index 01e71d896..d6970b12e 100644 --- a/pint/delegates/formatter/_compound_unit_helpers.py +++ b/pint/delegates/formatter/_compound_unit_helpers.py @@ -254,9 +254,15 @@ def prepare_compount_unit( out = unit._units.items() else: out = unit - + # out: unit_name, unit_exponent + if len(out) == 0: + if "~" in spec: + return ([], []) + else: + return ([("dimensionless", 1)], []) + if "~" in spec: if registry is None: raise ValueError( diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py index eb286d6c7..2fcc1f22c 100644 --- a/pint/testsuite/test_issues.py +++ b/pint/testsuite/test_issues.py @@ -1260,10 +1260,16 @@ def test_issue1772(given, expected): def test_issue2007(): ureg = UnitRegistry() q = ureg.Quantity(1, "") - assert f"{q:P}" == '1 dimensionless' - assert f"{q:C}" == '1 dimensionless' - assert f"{q:D}" == '1 dimensionless' - assert f"{q:H}" == '1 dimensionless' - # assert f"{q:L}" == '1\\ dimensionless' - assert f"{q:Lx}" == '\\SI[]{1}{}' - assert f"{q:~P}" == '1' \ No newline at end of file + assert f"{q:P}" == "1 dimensionless" + assert f"{q:C}" == "1 dimensionless" + assert f"{q:D}" == "1 dimensionless" + assert f"{q:H}" == "1 dimensionless" + + assert f"{q:L}" == "1\\ \\mathrm{dimensionless}" + # L returned '1\\ dimensionless' in pint 0.23 + + assert f"{q:Lx}" == "\\SI[]{1}{}" + assert f"{q:~P}" == "1" + assert f"{q:~C}" == "1" + assert f"{q:~D}" == "1" + assert f"{q:~H}" == "1"