1
2
3
4 """
5 Adapter for the C{decimal} module.
6
7 @since: 0.4
8 """
9
10 import decimal
11
12 import pyamf
13
14
16 """
17 Called when an instance of L{decimal.Decimal} is about to be encoded to
18 an AMF stream.
19
20 @param x: The L{decimal.Decimal} instance to encode.
21 @param encoder: The L{pyamf.BaseEncoder} instance about to perform the
22 operation.
23 @return: If the encoder is in 'strict' mode then C{x} will be converted to
24 a float. Otherwise an L{pyamf.EncodeError} with a friendly message is
25 raised.
26 """
27 if encoder is not None and isinstance(encoder, pyamf.BaseEncoder):
28 if encoder.strict is False:
29 return float(x)
30
31 raise pyamf.EncodeError('Unable to encode decimal.Decimal instances as '
32 'there is no way to guarantee exact conversion. Use strict=False to '
33 'convert to a float.')
34
35 if hasattr(decimal, 'Decimal'):
36 pyamf.add_type(decimal.Decimal, convert_Decimal)
37