Source code for mangadap.survey.util

# Licensed under a 3-clause BSD style license - see LICENSE.rst
# -*- coding: utf-8 -*-
"""
Provides a set of utility function that should **only be used for the
survey-level execution of the DAP**.

----

.. include license and copyright
.. include:: ../include/copy.rst

----

.. include common links, assuming primary doc root is up one directory
.. include:: ../include/links.rst
"""
import subprocess
import os


[docs]def product_version(product='mangadap', simple=False): """ Get currently loaded SDSS product version by parsing the output of the system call to {$product}_version. Args: product (str): (Optional) The name of the product simple (bool): (Optional) If True, only the first element of the reported version is returned. Returns: str : Version identifier """ try: version = subprocess.check_output('%s_version' % product, shell=True) if type(version) is bytes: version = version.decode('utf-8') version = version.split(' ')[0].rstrip('\n') if simple else version.rstrip('\n') except Exception as e: # print_frame('Exception') # print(e) version = None return version
[docs]def module_version(product='mangadap'): """ Return the version of the specified product among the currently loaded modules. Args: product (str): (Optional) The name of the product Returns: str : Version identifier """ try: modules = os.environ['LOADEDMODULES'] except: # print_frame('Exception') # modules = None return None # TODO: Re-raise the exception? # Parse the loaded version(s) of product versions = [module.split('/')[1] for module in modules.split(':') if module.split('/')[0]==product] # If there is more than one version or no versions return None if len(versions) != 1: if len(versions) > 1: print('Multiple versions found for module {0}'.format(product)) else: print('Module {0} is not loaded'.format(product)) return None # Return the version return versions[0]