Source code for flowtool.info

""" Self-Info command for flowtool.
    May be helpful in debugging version conflicts sometimes.

"""
import sys
import pip
import click
from flowtool.style import colors, echo

from pkg_resources import iter_entry_points
from operator import attrgetter

[docs]def get_extensions(): """ Get a list of installed flowtool extensions. Recognized by their name starting with flowtool. >>> len(get_extensions()) > 0 True """ dists = pip.get_installed_distributions() flows = [d for d in dists if d.project_name.startswith('flowtool')] return flows
[docs]def get_commands(): """ Get a list of installed flowtool commands. Recognized through their entry point: flowtool_commands >>> len(get_commands()) > 1 True """ return sorted(iter_entry_points('flowtool_commands'), key=attrgetter('name'))
@click.command() def show_info(): """ Gather and show runtime/environment info. """ echo.bold(' - flowtool information dump -') echo.bold() echo.bold(colors.cyan('python executable:'), (sys.executable)) echo.bold(colors.cyan('python version:'), str(sys.version_info)) echo.bold() echo.bold(colors.cyan('flowtool_packages:')) for e in sorted(get_extensions(), key=attrgetter('project_name')): echo.white(' -', colors.cyan(e.project_name), '(%s)' % e.version) echo.bold() echo.bold(colors.cyan('installed commands:')) for c in get_commands(): echo.white(' -', colors.green(c.name), '(from %s)' % c.dist.project_name)