Help with error


SSLCertVerificationError Traceback (most recent call last)
File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connectionpool.py:464, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
463 try:
→ 464 self._validate_conn(conn)
465 except (SocketTimeout, BaseSSLError) as e:

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connectionpool.py:1093, in HTTPSConnectionPool._validate_conn(self, conn)
1092 if conn.is_closed:
→ 1093 conn.connect()
1095 # TODO revise this, see Emit a warning when proxy_is_verified is False · Issue #2791 · urllib3/urllib3 · GitHub

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connection.py:741, in HTTPSConnection.connect(self)
739 server_hostname_rm_dot = server_hostname.rstrip(“.”)
→ 741 sock_and_verified = _ssl_wrap_socket_and_match_hostname(
742 sock=sock,
743 cert_reqs=self.cert_reqs,
744 ssl_version=self.ssl_version,
745 ssl_minimum_version=self.ssl_minimum_version,
746 ssl_maximum_version=self.ssl_maximum_version,
747 ca_certs=self.ca_certs,
748 ca_cert_dir=self.ca_cert_dir,
749 ca_cert_data=self.ca_cert_data,
750 cert_file=self.cert_file,
751 key_file=self.key_file,
752 key_password=self.key_password,
753 server_hostname=server_hostname_rm_dot,
754 ssl_context=self.ssl_context,
755 tls_in_tls=tls_in_tls,
756 assert_hostname=self.assert_hostname,
757 assert_fingerprint=self.assert_fingerprint,
758 )
759 self.sock = sock_and_verified.socket

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connection.py:920, in _ssl_wrap_socket_and_match_hostname(sock, cert_reqs, ssl_version, ssl_minimum_version, ssl_maximum_version, cert_file, key_file, key_password, ca_certs, ca_cert_dir, ca_cert_data, assert_hostname, assert_fingerprint, server_hostname, ssl_context, tls_in_tls)
918 server_hostname = normalized
→ 920 ssl_sock = ssl_wrap_socket(
921 sock=sock,
922 keyfile=key_file,
923 certfile=cert_file,
924 key_password=key_password,
925 ca_certs=ca_certs,
926 ca_cert_dir=ca_cert_dir,
927 ca_cert_data=ca_cert_data,
928 server_hostname=server_hostname,
929 ssl_context=context,
930 tls_in_tls=tls_in_tls,
931 )
933 try:

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\util\ssl_.py:480, in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir, key_password, ca_cert_data, tls_in_tls)
478 context.set_alpn_protocols(ALPN_PROTOCOLS)
→ 480 ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
481 return ssl_sock

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\util\ssl_.py:524, in _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname)
522 return SSLTransport(sock, ssl_context, server_hostname)
→ 524 return ssl_context.wrap_socket(sock, server_hostname=server_hostname)

File C:\FITCHDEV\Python\3.12\Lib\ssl.py:455, in SSLContext.wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, session)
449 def wrap_socket(self, sock, server_side=False,
450 do_handshake_on_connect=True,
451 suppress_ragged_eofs=True,
452 server_hostname=None, session=None):
453 # SSLSocket class handles server_hostname encoding before it calls
454 # ctx._wrap_socket()
→ 455 return self.sslsocket_class._create(
456 sock=sock,
457 server_side=server_side,
458 do_handshake_on_connect=do_handshake_on_connect,
459 suppress_ragged_eofs=suppress_ragged_eofs,
460 server_hostname=server_hostname,
461 context=self,
462 session=session
463 )

File C:\FITCHDEV\Python\3.12\Lib\ssl.py:1041, in SSLSocket._create(cls, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname, context, session)
1040 raise ValueError(“do_handshake_on_connect should not be specified for non-blocking sockets”)
→ 1041 self.do_handshake()
1042 except:

File C:\FITCHDEV\Python\3.12\Lib\ssl.py:1319, in SSLSocket.do_handshake(self, block)
1318 self.settimeout(None)
→ 1319 self._sslobj.do_handshake()
1320 finally:

SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)

During handling of the above exception, another exception occurred:

SSLError Traceback (most recent call last)
File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connectionpool.py:787, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
786 # Make the request on the HTTPConnection object
→ 787 response = self._make_request(
788 conn,
789 method,
790 url,
791 timeout=timeout_obj,
792 body=body,
793 headers=headers,
794 chunked=chunked,
795 retries=retries,
796 response_conn=response_conn,
797 preload_content=preload_content,
798 decode_content=decode_content,
799 **response_kw,
800 )
802 # Everything went great!

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connectionpool.py:488, in HTTPConnectionPool._make_request(self, conn, method, url, body, headers, retries, timeout, chunked, response_conn, preload_content, decode_content, enforce_content_length)
487 new_e = _wrap_proxy_error(new_e, conn.proxy.scheme)
→ 488 raise new_e
490 # conn.request() calls http.client.*.request, not the method in
491 # urllib3.request. It also calls makefile (recv) on the socket.

SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)

The above exception was the direct cause of the following exception:

MaxRetryError Traceback (most recent call last)
File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\requests\adapters.py:667, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
666 try:
→ 667 resp = conn.urlopen(
668 method=request.method,
669 url=url,
670 body=request.body,
671 headers=request.headers,
672 redirect=False,
673 assert_same_host=False,
674 preload_content=False,
675 decode_content=False,
676 retries=self.max_retries,
677 timeout=timeout,
678 chunked=chunked,
679 )
681 except (ProtocolError, OSError) as err:

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\connectionpool.py:841, in HTTPConnectionPool.urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, preload_content, decode_content, **response_kw)
839 new_e = ProtocolError(“Connection aborted.”, new_e)
→ 841 retries = retries.increment(
842 method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2]
843 )
844 retries.sleep()

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\urllib3\util\retry.py:519, in Retry.increment(self, method, url, response, error, _pool, _stacktrace)
518 reason = error or ResponseError(cause)
→ 519 raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type]
521 log.debug(“Incremented Retry for (url=‘%s’): %r”, url, new_retry)

MaxRetryError: HTTPSConnectionPool(host=‘cds.climate.copernicus.eu’, port=443): Max retries exceeded with url: /api/v2/retrieve/v1/processes/reanalysis-era5-pressure-levels (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)’)))

During handling of the above exception, another exception occurred:

SSLError Traceback (most recent call last)
Cell In[4], line 18
6 request = {
7 ‘product_type’: [‘reanalysis’],
8 ‘variable’: [‘geopotential’],
(…) 14 ‘data_format’: ‘netcdf’,
15 }
16 target = ‘download.nc’
—> 18 client.retrieve(dataset, request, target)

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\ecmwf\datastores\legacy_client.py:167, in LegacyClient.retrieve(self, name, request, target)
165 submitted: datastores.Remote | datastores.Results
166 if self.wait_until_complete:
→ 167 submitted = self.client.submit_and_wait_on_results(
168 collection_id=name,
169 request=request,
170 )
171 else:
172 submitted = self.client.submit(
173 collection_id=name,
174 request=request,
175 )

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\ecmwf\datastores\client.py:397, in Client.submit_and_wait_on_results(self, collection_id, request)
381 def submit_and_wait_on_results(
382 self, collection_id: str, request: dict[str, Any]
383 ) → datastores.Results:
384 “”“Submit a request and wait for the results to be ready.
385
386 Parameters
(…) 395 datastores.Results
396 “””
→ 397 return self._retrieve_api.submit(collection_id, request).get_results()

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\ecmwf\datastores\processing.py:793, in Processing.submit(self, collection_id, request)
792 def submit(self, collection_id: str, request: dict[str, Any]) → Remote:
→ 793 return self.get_process(collection_id).submit(request)

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\ecmwf\datastores\processing.py:782, in Processing.get_process(self, process_id)
780 def get_process(self, process_id: str) → Process:
781 url = f"{self.url}/processes/{process_id}"
→ 782 return Process.from_request(“get”, url, **self._request_kwargs)

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\ecmwf\datastores\processing.py:171, in ApiResponse.from_request(cls, method, url, headers, session, retry_options, request_options, download_options, sleep_max, cleanup, log_callback, log_messages, **kwargs)
165 inputs = kwargs.get(“json”, {}).get(“inputs”, {})
166 log(
167 logging.DEBUG,
168 f"{method.upper()} {url} {inputs or ‘’}“.strip(),
169 callback=log_callback,
170 )
→ 171 response = robust_request(
172 method, url, headers=headers, **request_options, **kwargs
173 )
174 log(logging.DEBUG, f"REPLY {response.text}”, callback=log_callback)
176 cads_raise_for_status(response)

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\multiurl\http.py:479, in robust..wrapped(url, *args, **kwargs)
476 return call(main_url, *args, **kwargs)
478 try:
→ 479 r = call(main_url, *args, **kwargs)
480 except requests.exceptions.SSLError:
481 raise

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\requests\sessions.py:589, in Session.request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
584 send_kwargs = {
585 “timeout”: timeout,
586 “allow_redirects”: allow_redirects,
587 }
588 send_kwargs.update(settings)
→ 589 resp = self.send(prep, **send_kwargs)
591 return resp

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\requests\sessions.py:703, in Session.send(self, request, **kwargs)
700 start = preferred_clock()
702 # Send the request
→ 703 r = adapter.send(request, **kwargs)
705 # Total elapsed time of the request (approximately)
706 elapsed = preferred_clock() - start

File c:\FITCHDEV\INDEX_ESG.venv\Lib\site-packages\requests\adapters.py:698, in HTTPAdapter.send(self, request, stream, timeout, verify, cert, proxies)
694 raise ProxyError(e, request=request)
696 if isinstance(e.reason, _SSLError):
697 # This branch is for urllib3 v1.22 and later.
→ 698 raise SSLError(e, request=request)
700 raise ConnectionError(e, request=request)
702 except ClosedPoolError as e:

SSLError: HTTPSConnectionPool(host=‘cds.climate.copernicus.eu’, port=443): Max retries exceeded with url: /api/v2/retrieve/v1/processes/reanalysis-era5-pressure-levels (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1010)’)))

the above error keeps showing up when i try use the API anyone know why