Mercurial > repos > iuc > pangolin
changeset 6:437e28791761 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/pangolin commit f53dc92d3cf6997da9ad21f01ad3fd3477aae068"
author | iuc |
---|---|
date | Wed, 07 Jul 2021 09:24:31 +0000 |
parents | 42a174224817 |
children | 7bb8726be37c |
files | fetch_latest_pangolearn.py pangolin.xml |
diffstat | 2 files changed, 45 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/fetch_latest_pangolearn.py Mon Jun 21 16:14:55 2021 +0000 +++ b/fetch_latest_pangolearn.py Wed Jul 07 09:24:31 2021 +0000 @@ -1,27 +1,42 @@ #!/usr/bin/env python +import argparse import json import os +import sys import tarfile # rely on the fact that pangolin itself uses the requests module import requests +from requests.adapters import HTTPAdapter -response = requests.get( - "https://api.github.com/repos/cov-lineages/pangoLEARN/releases/latest" -) -if response.status_code == 200: - details = json.loads(response.text) - response = requests.get(details["tarball_url"]) +parser = argparse.ArgumentParser(description='download latest pangoLEARN database') +parser.add_argument('--timeout', type=float, default=60.0, help="Timeout for connecting or downloading the pangoLEARN database (in seconds)") +parser.add_argument('--max_retries', type=int, default=5, help="How many times to retry fetching the pangoLEARN database") +args = parser.parse_args() + +try: + s = requests.Session() + s.mount('https://', HTTPAdapter(max_retries=args.max_retries)) + response = s.get( + "https://api.github.com/repos/cov-lineages/pangoLEARN/releases/latest" + ) if response.status_code == 200: - with open("pangolearn.tgz", "wb") as handle: - handle.write(response.content) - tf = tarfile.open("pangolearn.tgz") - pl_path = tf.next().name - tf.extractall() - tf.close() - os.rename(os.path.join(pl_path, "pangoLEARN"), "datadir") + details = json.loads(response.text) + response = s.get(details["tarball_url"], timeout=args.timeout) + if response.status_code == 200: + with open("pangolearn.tgz", "wb") as handle: + handle.write(response.content) + tf = tarfile.open("pangolearn.tgz") + pl_path = tf.next().name + tf.extractall() + tf.close() + os.rename(os.path.join(pl_path, "pangoLEARN"), "datadir") + else: + response.raise_for_status() else: response.raise_for_status() -else: - response.raise_for_status() +except (requests.ConnectionError, requests.HTTPError, requests.TooManyRedirects) as e: + sys.exit('Failed to download pangoLEARN database: {}'.format(e)) +except requests.Timeout: + sys.exit('Timeout while trying to download pangoLEARN database')
--- a/pangolin.xml Mon Jun 21 16:14:55 2021 +0000 +++ b/pangolin.xml Wed Jul 07 09:24:31 2021 +0000 @@ -1,4 +1,4 @@ -<tool id="pangolin" name="Pangolin" version="@TOOL_VERSION@+galaxy0" profile="20.01"> +<tool id="pangolin" name="Pangolin" version="@TOOL_VERSION@+galaxy1" profile="20.01"> <description>Phylogenetic Assignment of Outbreak Lineages</description> <macros> <token name="@TOOL_VERSION@">3.1.4</token> @@ -9,7 +9,7 @@ </requirements> <command detect_errors="exit_code"><![CDATA[ #if str($db.source) == "download" - python '$__tool_directory__/fetch_latest_pangolearn.py' && + python '$__tool_directory__/fetch_latest_pangolearn.py' --max_retries=$db.max_retries --timeout=$db.timeout && #else if str($db.source) == "builtin" ln -s $db.db_release.fields.path datadir && #end if @@ -51,6 +51,8 @@ <option value="default">Use default database built in to pangolin (not recommended)</option> </param> <when value="download"> + <param name="max_retries" label="Max download retries" help="How many times to retry downloading the pangoLEARN database" type="integer" value="5" /> + <param name="timeout" label="Download timeout" help="How many seconds to wait when downloading the pangoLEARN database" type="float" value="60.0" /> </when> <when value="builtin"> <param name="db_release" label="pangoLEARN release" type="select"> @@ -171,6 +173,17 @@ </assert_contents> </output> </test> + <test expect_failure="true"> + <param name="input1" value="test1.fasta" /> + <conditional name="db"> + <param name="source" value="download" /> + <param name="timeout" value="0.00001" /> + <param name="max_retries" value="1" /> + </conditional> + <assert_stderr> + <has_text text="timed out" /> + </assert_stderr> + </test> </tests> <help><![CDATA[