# Path: ariba/common.py
# class Error (Exception): pass
# def syscall(cmd, allow_fail=False, verbose=False, verbose_filehandle=sys.stdout, print_errors=True, shell=True):
# def decode(x):
# def cat_files(infiles, outfile):
# def download_file(url, outfile, max_attempts=3, sleep_time=2, verbose=False):
# def rmtree(input_dir):


import shutil
import subprocess
import os
import re
import sys
from distutils.version import LooseVersion
from ariba import common
}


min_versions = {
    'bowtie2': '2.1.0',
    'cdhit': '4.6',
    'nucmer': '3.1',
    'spades': '3.11.0'
}

prog_optional = set([
    'spades'
])

class ExternalProgs:
    def __init__(self, verbose=False, fail_on_error=True, using_spades=False):
        self.progs = {}
        self.version_report = []
        self.all_deps_ok = True
        self.versions = {}
        self.using_spades = using_spades

        if verbose:
            print('{:_^79}'.format(' Checking dependencies and their versions '))

        errors = []
        warnings = []

        for prog in sorted(prog_to_default):
            if prog == 'spades' and not self.using_spades:

# Path: ariba/common.py
# class Error (Exception): pass
# def syscall(cmd, allow_fail=False, verbose=False, verbose_filehandle=sys.stdout, print_errors=True, shell=True):
# def decode(x):
# def cat_files(infiles, outfile):
# def download_file(url, outfile, max_attempts=3, sleep_time=2, verbose=False):
# def rmtree(input_dir):


# Path: ariba/external_progs.py
import shutil
import subprocess
import os
import re
import sys
from distutils.version import LooseVersion
from ariba import common

}


min_versions = {
    'bowtie2': '2.1.0',
    'cdhit': '4.6',
    'nucmer': '3.1',
    'spades': '3.11.0'
}

prog_optional = set([
    'spades'
])

class ExternalProgs:
    def __init__(self, verbose=False, fail_on_error=True, using_spades=False):
        self.progs = {}
        self.version_report = []
        self.all_deps_ok = True
        self.versions = {}
        self.using_spades = using_spades

        if verbose:
            print('{:_^79}'.format(' Checking dependencies and their versions '))

        errors = []
        warnings = []

        for prog in sorted(prog_to_default):
            if prog == 'spades' and not self.using_spades:

                continue