File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1111import decimal # NOQA
1212import orderly_set # NOQA
1313import collections # NOQA
14+ import fractions
1415import ipaddress
1516import base64
1617from copy import deepcopy , copy
@@ -79,6 +80,7 @@ class UnsupportedFormatErr(TypeError):
7980 'datetime.time' ,
8081 'datetime.timedelta' ,
8182 'decimal.Decimal' ,
83+ 'fractions.Fraction' ,
8284 'uuid.UUID' ,
8385 'orderly_set.sets.OrderedSet' ,
8486 'orderly_set.sets.OrderlySet' ,
@@ -635,6 +637,13 @@ def _serialize_decimal(value):
635637 return float (value )
636638
637639
640+ def _serialize_fraction (value ):
641+ if value .denominator == 1 :
642+ return value .numerator
643+ else :
644+ return float (value )
645+
646+
638647def _serialize_tuple (value ):
639648 if hasattr (value , '_asdict' ): # namedtuple
640649 return value ._asdict ()
@@ -655,6 +664,7 @@ def _serialize_bytes(value):
655664
656665JSON_CONVERTOR = {
657666 decimal .Decimal : _serialize_decimal ,
667+ fractions .Fraction : _serialize_fraction ,
658668 SetOrdered : list ,
659669 orderly_set .StableSetEq : list ,
660670 set : list ,
You can’t perform that action at this time.
0 commit comments