igvteam / igv-reports

Python application to generate self-contained pages embedding IGV visualizations, with no dependency on original input files.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Handshake failure error when used with Python 3.10

ManavalanG opened this issue · comments

I ran into error when using igv-reports with Python 3.10. Here is what I tried to resolve the issue:

  • Installed igv-reports using conda. I didn't specify or pin python version here. Config file used:
name: igvreports

channels:
  - conda-forge
  - bioconda

dependencies:
  - igv-reports==1.7
  • Conda installed python 3.10. I don't have specific version info beyond this as I deleted the conda env during debugging :)

  • igv-reports ran into error when test command was run.

$ create_report test/data/variants/variants.vcf.gz \
> --genome hg38 \
> --flanking 1000 \
> --info-columns GENE TISSUE TUMOR COSMIC_ID GENE SOMATIC \
> --tracks test/data/variants/variants.vcf.gz test/data/variants/recalibrated.bam \
> --output examples/example_genome.html
Traceback (most recent call last):
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connectionpool.py", line 467, in _make_request
    self._validate_conn(conn)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connectionpool.py", line 1092, in _validate_conn
    conn.connect()
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connection.py", line 635, in connect
    sock_and_verified = _ssl_wrap_socket_and_match_hostname(
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connection.py", line 776, in _ssl_wrap_socket_and_match_hostname
    ssl_sock = ssl_wrap_socket(
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/util/ssl_.py", line 466, in ssl_wrap_socket
    ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/util/ssl_.py", line 510, in _ssl_wrap_socket_impl
    return ssl_context.wrap_socket(sock, server_hostname=server_hostname)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/ssl.py", line 513, in wrap_socket
    return self.sslsocket_class._create(
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/ssl.py", line 1071, in _create
    self.do_handshake()
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/ssl.py", line 1342, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1007)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connectionpool.py", line 790, in urlopen
    response = self._make_request(
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connectionpool.py", line 491, in _make_request
    raise new_e
urllib3.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1007)

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

Traceback (most recent call last):
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/requests/adapters.py", line 486, in send
    resp = conn.urlopen(
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/connectionpool.py", line 844, in urlopen
    retries = retries.increment(
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/urllib3/util/retry.py", line 515, in increment
    raise MaxRetryError(_pool, url, reason) from reason  # type: ignore[arg-type]
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='igv.org', port=443): Max retries exceeded with url: /genomes/genomes.json (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1007)')))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/user/foo/.conda/envs/igvreports/bin/create_report", line 10, in <module>
    sys.exit(main())
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/igv_reports/report.py", line 346, in main
    create_report(args)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/igv_reports/report.py", line 61, in create_report
    genome = get_genome(args.genome)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/igv_reports/genome.py", line 9, in get_genome
    r = requests.get(genomes_url)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/requests/api.py", line 73, in get
    return request("get", url, params=params, **kwargs)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
  File "/data/user/foo/.conda/envs/igvreports/lib/python3.10/site-packages/requests/adapters.py", line 517, in send
    raise SSLError(e, request=request)
requests.exceptions.SSLError: HTTPSConnectionPool(host='igv.org', port=443): Max retries exceeded with url: /genomes/genomes.json (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1007)')))
  • I didn't see any igv-reports specific code in the error message. So I hypothesized python version may be the issue here and then chose to pin the python ver 3.8 in conda env.
name: igvreports

channels:
  - conda-forge
  - bioconda

dependencies:
  - igv-reports==1.7
  - python=3.8
  • Test command ran successfully in the new created conda env
$ create_report test/data/variants/variants.vcf.gz \
> --genome hg38 \
> --flanking 1000 \
> --info-columns GENE TISSUE TUMOR COSMIC_ID GENE SOMATIC \
> --tracks test/data/variants/variants.vcf.gz test/data/variants/recalibrated.bam \
> --output examples/example_genome.html
[E::hts_idx_load3] Could not load local index file 'https://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/ncbiRefSeq.txt.gz.tbi' : No such file or directory
Working on variant 1/13
Working on variant 2/13
Working on variant 3/13
Working on variant 4/13
Working on variant 5/13
Working on variant 6/13
Working on variant 7/13
Working on variant 8/13
Working on variant 9/13
Working on variant 10/13
Working on variant 11/13
Working on variant 12/13
Working on variant 13/13

OS used: Red Hat Enterprise Linux v7.9

Thanks for the report, we will update the python requirement to 3.8.