#-----------------------------------------------------------------------------
# Copyright (c) 2012 - 2018, Anaconda, Inc. and Intake contributors
# All rights reserved.
#
# The full license is in the LICENSE file, distributed with this software.
#-----------------------------------------------------------------------------
'''

'''

from __future__ import print_function

import logging
log = logging.getLogger(__name__)

#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------

# Standard library imports
from importlib import import_module
import sys

# External imports

# Intake imports
from intake import __version__
from intake.cli.util import Subcommand

#-----------------------------------------------------------------------------
# API
#-----------------------------------------------------------------------------

class Info(Subcommand):
    ''' Display runtime information related to Intake

    '''

    name = "info"

    def initialize(self):
        pass

    def invoke(self, args):
        print("Python version      :  %s" % sys.version.split('\n')[0])
        print("IPython version     :  %s" % _version_from_module('IPython'))
        print("Tornado version     :  %s" % _version_from_module('tornado', 'version'))
        print("Dask version        :  %s" % _version_from_module('dask'))
        print("Pandas version      :  %s" % _version_from_module('pandas'))
        print("Numpy version       :  %s" % _version_from_module('numpy'))
        print("Intake version      :  %s" % __version__)

def _version_from_module(modname, version_attr="__version__"):
    try:
        mod = import_module(modname)
        return getattr(mod, version_attr)
    except ImportError:
        return "(not installed)"
