Skip to content

[Python][CI] test_download_tzdata_on_windows fails on Windows wheels due to CERTIFICATE_VERIFY_FAILED #45295

@raulcd

Description

@raulcd

Describe the bug, including details regarding any error messages, version, and platform.

Windows wheels have started failing on the 15th of January failing to validate a certificate when downloading https://data.iana.org/time-zones/tzdata-latest.tar.gz

Part of the log below:

 _______________________ test_download_tzdata_on_windows _______________________
...

self = <ssl.SSLSocket [closed] fd=-1, family=2, type=1, proto=0>, block = False

    @_sslcopydoc
    def do_handshake(self, block=False):
        self._check_connected()
        timeout = self.gettimeout()
        try:
            if timeout == 0.0 and block:
                self.settimeout(None)
>           self._sslobj.do_handshake()
E           ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1006)

Python311\Lib\ssl.py:1382: SSLCertVerificationError

During handling of the above exception, another exception occurred:

    @pytest.mark.skipif(sys.platform != "win32",
                        reason="Timezone database is already provided.")
    def test_download_tzdata_on_windows():
        tzdata_path = os.path.expandvars(r"%USERPROFILE%\Downloads\tzdata")
    
        # Download timezone database and remove data in case it already exists
        if (os.path.exists(tzdata_path)):
            shutil.rmtree(tzdata_path)
>       download_tzdata_on_windows()

Python311\Lib\site-packages\pyarrow\tests\test_util.py:223: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Python311\Lib\site-packages\pyarrow\util.py:248: in download_tzdata_on_windows
    with urlopen('https://data.iana.org/time-zones/tzdata-latest.tar.gz') as response:
Python311\Lib\urllib\request.py:216: in urlopen
    return opener.open(url, data, timeout)
Python311\Lib\urllib\request.py:519: in open
    response = self._open(req, data)
Python311\Lib\urllib\request.py:536: in _open
    result = self._call_chain(self.handle_open, protocol, protocol +
Python311\Lib\urllib\request.py:496: in _call_chain
    result = func(*args)
Python311\Lib\urllib\request.py:1391: in https_open
    return self.do_open(http.client.HTTPSConnection, req,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

Component(s)

Python, Continuous Integration

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions