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 == custom
Problem 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()
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