-
-
Notifications
You must be signed in to change notification settings - Fork 19.4k
Description
Code Sample, a copy-pastable example if possible
import datetime
import pandas
class CustomClass:
def __init__(self):
pass
def __eq__(self, other):
raise Exception("Custom Class eq")
custom = CustomClass()
var1 = datetime.timedelta(seconds=1)
var2 = pandas.Timedelta("1s")
# Following code raises CustomClass exception
var1 == custom
# Following code returns False, does not call CustomClass.__eq__
var2 == customProblem description
I am trying to implement a version of pytest.approx for Timedeltas, which basically returns a class with a custom __eq__ implementation.
`Timedelta("5s") == AproxTimedelta(...)
However it does not work with pandas Timedelta because it always return False, so the __eq__ of AproxTimedelta object is never called.
This is not the behavior for python datetime timedelta, as can be seen in the example script.
Expected Output
Exception("Custom Class eq") raised for both cases
Output of pd.show_versions()
Details
INSTALLED VERSIONS
commit: None
python: 3.6.3.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 158 Stepping 9, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None
pandas: 0.22.0
pytest: 3.5.0
pip: 10.0.0
setuptools: 38.5.1
Cython: 0.28.2
numpy: 1.14.1
scipy: 1.0.0
pyarrow: None
xarray: None
IPython: 6.3.1
sphinx: 1.7.1
patsy: None
dateutil: 2.6.1
pytz: 2017.2
blosc: None
bottleneck: None
tables: None
numexpr: None
feather: None
matplotlib: 2.1.1
openpyxl: 1.7.0
xlrd: 1.1.0
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None