b2ee03ef60
Adds `is_finite`, `is_infinite` and `is_nan` methods. `decimal.Decimal` class needs to implement `is_finite` for `parse` method from `dateutil.parser`.
34 lines
1.5 KiB
Python
34 lines
1.5 KiB
Python
# QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
|
|
# Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
import math
|
|
|
|
class Decimal(float):
|
|
'''This is required for backwards compatibility with users performing operations over expected decimal types.
|
|
NOTE: previously we converted C# decimal into python Decimal, but now its converted to python float due to performance.'''
|
|
def __init__(self, obj):
|
|
self = obj
|
|
|
|
def is_finite(self):
|
|
'''Return True if the argument is a finite number, and False if the argument
|
|
is infinite or a NaN.'''
|
|
return not self.is_infinite() and not self.is_nan()
|
|
|
|
def is_infinite(self):
|
|
'''Return True if the argument is either positive or negative infinity and
|
|
False otherwise.'''
|
|
return math.isinf(self)
|
|
|
|
def is_nan(self):
|
|
'''Return True if the argument is a (quiet or signaling) NaN and False
|
|
otherwise.'''
|
|
return math.isnan(self) |