Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2 tests fail: AssertionError: assert <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD> == zoneinfo.ZoneInfo(key='America/New_York') #328

Open
yurivict opened this issue Feb 13, 2024 · 10 comments

Comments

@yurivict
Copy link

========================================================================================= FAILURES ==========================================================================================
__________________________________________________________________________________ test_basic_information ___________________________________________________________________________________

    def test_basic_information():
        assert mcal_iepa._EC_NOT_INITIALIZED
>       assert mcal_iepa.tz == ZoneInfo("America/New_York") == ecal_iepa.tz
E       AssertionError: assert <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD> == zoneinfo.ZoneInfo(key='America/New_York')
E        +  where <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD> = <pandas_market_calendars.class_registry.IEPA object at 0x2cd91801de20>.tz
E        +  and   zoneinfo.ZoneInfo(key='America/New_York') = ZoneInfo('America/New_York')

tests/test_market_calendar.py:1590: AssertionError
______________________________________________________________________________________ test_time_zone _______________________________________________________________________________________

    def test_time_zone():
>       assert xnys_cal.tz == ZoneInfo("America/New_York")
E       AssertionError: assert <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD> == zoneinfo.ZoneInfo(key='America/New_York')
E        +  where <DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD> = <pandas_market_calendars.class_registry.XNYS object at 0x2cd917d70250>.tz
E        +  and   zoneinfo.ZoneInfo(key='America/New_York') = ZoneInfo('America/New_York')

tests/test_XNYS_calendar.py:19: AssertionError
======================================================================== 2 failed, 1404 passed in 479.86s (0:07:59) =========================================================================

Version: 4.4.0
pandas-2.0.3
python-3.9
FreeBSD 14.0

@rsheftel
Copy link
Owner

Can you provide more information, as all tests pass on every configuration I test

@yurivict
Copy link
Author

yurivict commented Jun 17, 2024

Tests are run with this command:

===>   py311-pandas-market-calendars-4.4.0_1 depends on file: /usr/local/bin/python3.11 - found
cd /usr/ports/finance/py-pandas-market-calendars/work-py311/pandas_market_calendars-4.4.0 && /usr/bin/env -i HOME=/usr/ports/finance/py-pandas-market-calendars/work-py311  PWD="${PWD}"  __MAKE_CONF=/nonexistent OSVERSION=1401500 PATH=/usr/local/libexec/ccache:/usr/ports/finance/py-pandas-market-calendars/work-py311/.bin:/home/yuri/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin TERM=xterm-256color XDG_DATA_HOME=/usr/ports/finance/py-pandas-market-calendars/work-py311  XDG_CONFIG_HOME=/usr/ports/finance/py-pandas-market-calendars/work-py311  XDG_CACHE_HOME=/usr/ports/finance/py-pandas-market-calendars/work-py311/.cache  HOME=/usr/ports/finance/py-pandas-market-calendars/work-py311 PATH=/usr/local/libexec/ccache:/usr/ports/finance/py-pandas-market-calendars/work-py311/.bin:/home/yuri/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin PKG_CONFIG_LIBDIR=/usr/ports/finance/py-pandas-market-calendars/work-py311/.pkgconfig:/usr/local/libdata/pkgconfig:/usr/local/share/pkgconfig:/usr/libdata/pkgconfig MK_DEBUG_FILES=no MK_KERNEL_SYMBOLS=no SHELL=/bin/sh NO_LINT=YES PREFIX=/usr/local  LOCALBASE=/usr/local  CC="cc" CFLAGS="-O2 -pipe  -fstack-protector-strong -fno-strict-aliasing "  CPP="cpp" CPPFLAGS=""  LDFLAGS=" -fstack-protector-strong " LIBS=""  CXX="c++" CXXFLAGS="-O2 -pipe -fstack-protector-strong -fno-strict-aliasing  " CCACHE_DIR="/tmp/.ccache" BSD_INSTALL_PROGRAM="install  -s -m 555"  BSD_INSTALL_LIB="install  -s -m 0644"  BSD_INSTALL_SCRIPT="install  -m 555"  BSD_INSTALL_DATA="install  -m 0644"  BSD_INSTALL_MAN="install  -m 444" /usr/local/bin/python3.11 -m pytest -k '' -rs -v -o addopts= 
==================================================================================== test session starts ====================================================================================
platform freebsd14 -- Python 3.11.9, pytest-8.1.1, pluggy-1.5.0 -- /usr/local/bin/python3.11
cachedir: .pytest_cache
hypothesis profile 'default' -> database=DirectoryBasedExampleDatabase(PosixPath('/usr/ports/finance/py-pandas-market-calendars/work-py311/pandas_market_calendars-4.4.0/.hypothesis/examples'))
Using --randomly-seed=1342849725
rootdir: /usr/ports/finance/py-pandas-market-calendars/work-py311/pandas_market_calendars-4.4.0
configfile: pyproject.toml
plugins: xdist-3.5.0, timeout-2.1.0, time-machine-2.11.0, rerunfailures-11.1.2, flaky-3.8.1, cov-4.1.0, hypothesis-6.98.18, mock-3.10.0, randomly-3.12.0, asyncio-0.23.7, env-0.6.2, aspectlib-2.0.0, datadir-1.5.0
asyncio: mode=Mode.STRICT
collected 1406 items                                                                                                                                                                        

tests/test_cme_bond_calendar.py::test_2020_noon_15_holidays PASSED                                                                                                                    [  0%]
tests/test_cme_bond_calendar.py::test_time_zone PASSED                                                                                                                                [...]

Now they are still failing with Python-3.11

Could you please tell me what other information can I provide?

@yurivict
Copy link
Author

yurivict commented Jun 17, 2024

The failures boil down to this script failing:

$ cat x.py 

from pandas_market_calendars import get_calendar, get_calendar_names
import exchange_calendars as ecal
from zoneinfo import ZoneInfo

mcal_iepa = get_calendar("IEPA")
ecal_iepa = ecal.get_calendar("IEPA")

print(f'mcal_iepa.tz={mcal_iepa.tz} ecal_iepa.tz={ecal_iepa.tz}')
assert True
assert mcal_iepa._EC_NOT_INITIALIZED
assert mcal_iepa.tz == ZoneInfo("America/New_York") == ecal_iepa.tz
$ python3.11 x.py 
mcal_iepa.tz=America/New_York ecal_iepa.tz=America/New_York
Traceback (most recent call last):
  File "/usr/ports/finance/py-pandas-market-calendars/x.py", line 12, in <module>
    assert mcal_iepa.tz == ZoneInfo("America/New_York") == ecal_iepa.tz
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError

Replacing the last line with the following fixes the failure:

assert str(mcal_iepa.tz) == str(ZoneInfo("America/New_York")) == str(ecal_iepa.tz)

The reason seems to be that it compares different objects all of which are represented with the same string "America/New_York".

@rsheftel
Copy link
Owner

That test passes on my local machine and the TOX build here on GitHub. I would suggest trying a new environment with a fresh installation

@yurivict
Copy link
Author

I have a fresh installation. I installed from the port from scratch.

@yurivict
Copy link
Author

py311-backports.zoneinfo-0.2.1_1 is used for ZoneInfo.
For whatever reason it returns a different object compared to the one that pandas_market_calendars uses.

@rsheftel
Copy link
Owner

That may be your issue. Perhaps the backport ZoneInfo is not identical to the real ZoneInfo

@rsheftel
Copy link
Owner

The complete run of the tests on all versions and infrastructure is here:

https://github.com/rsheftel/pandas_market_calendars/actions/runs/9556424978

@yurivict
Copy link
Author

What is the script that is used to test pandas_market_calendars?

@rsheftel
Copy link
Owner

Here is an intro on how to run pytest

https://docs.pytest.org/en/latest/how-to/usage.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants