Source code for idaes.solvers

import os
import logging
import tarfile
import idaes
from shutil import copyfile
import urllib.request as ur
from pyomo.common.download import FileDownloader

_log = logging.getLogger(__name__)

[docs]def download_binaries(url=None, verbose=False): """ Download IDAES solvers and libraries and put them in the right location. Need to supply either local or url argument. Args: url (str): a url to download binary files to install files Returns: None """ if verbose: _log.setLevel(logging.DEBUG) idaes._create_lib_dir() idaes._create_bin_dir() solvers_tar = os.path.join(idaes.bin_directory, "idaes-solvers.tar.gz") libs_tar = os.path.join(idaes.lib_directory, "idaes-lib.tar.gz") fd = FileDownloader() arch = fd.get_sysinfo() if url is not None: if not url.endswith("/"): c = "/" else: c = "" solvers_from = c.join([url, "idaes-solvers-{}-{}.tar.gz".format(arch[0], arch[1])]) libs_from = c.join([url, "idaes-lib-{}-{}.tar.gz".format(arch[0], arch[1])]) _log.debug("URLs \n {}\n {}\n {}".format(url, solvers_from, libs_from)) _log.debug("Destinations \n {}\n {}".format(solvers_tar, libs_tar)) if arch[0] == 'darwin': raise Exception('Mac OSX currently unsupported') fd.set_destination_filename(solvers_tar) fd.get_binary_file(solvers_from) fd.set_destination_filename(libs_tar) fd.get_binary_file(libs_from) else: raise Exception("Must provide a location to download binaries") _log.debug("Extracting files in {}".format(idaes.bin_directory)) with tarfile.open(solvers_tar, 'r') as f: f.extractall(idaes.bin_directory) _log.debug("Extracting files in {}".format(idaes.lib_directory)) with tarfile.open(libs_tar, 'r') as f: f.extractall(idaes.lib_directory)