Skip to content

Commit 5dcd849

Browse files
committed
test(models): support float-style formatting for Fraction instances under Python 3.12 (python/cpython#100161)
1 parent 1da3a45 commit 5dcd849

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

tests/models/test_measurement.py

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import dataclasses
44
import decimal
55
import fractions
6+
import sys
67

78
import pytest
89

@@ -128,13 +129,23 @@ def test_unit_symbol(unit):
128129
)
129130
def test_format(measurement, format_spec):
130131
if format_spec and isinstance(measurement.magnitude, fractions.Fraction):
131-
with pytest.raises(TypeError):
132-
format(measurement, format_spec)
133-
else:
134-
formatted = format(measurement.magnitude, format_spec)
135-
if measurement.prefix.symbol or measurement._unit_symbol:
136-
formatted += f" {measurement.prefix.symbol}{measurement._unit_symbol}"
137-
assert format(measurement, format_spec) == formatted
132+
if sys.version_info < (3, 12):
133+
with pytest.raises(TypeError):
134+
format(measurement, format_spec)
135+
return
136+
137+
if format_spec == "n":
138+
with pytest.raises(
139+
ValueError,
140+
match="Invalid format specifier 'n' for object of type 'Fraction'",
141+
):
142+
format(measurement, format_spec)
143+
return
144+
145+
formatted = format(measurement.magnitude, format_spec)
146+
if measurement.prefix.symbol or measurement._unit_symbol:
147+
formatted += f" {measurement.prefix.symbol}{measurement._unit_symbol}"
148+
assert format(measurement, format_spec) == formatted
138149

139150

140151
def test_str(measurement):

0 commit comments

Comments
 (0)