Source code for hupper.utils

import importlib
import json
import os
import subprocess
import sys

WIN = sys.platform == 'win32'


class Sentinel(object):
    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return '<{0}>'.format(self.name)


default = Sentinel('default')


def resolve_spec(spec):
    modname, funcname = spec.rsplit('.', 1)
    module = importlib.import_module(modname)
    func = getattr(module, funcname)
    return func


[docs] def is_watchdog_supported(): """Return ``True`` if watchdog is available.""" try: import watchdog # noqa: F401 except ImportError: return False return True
[docs] def is_watchman_supported(): """Return ``True`` if watchman is available.""" if WIN: # for now we aren't bothering with windows sockets return False try: sockpath = get_watchman_sockpath() return bool(sockpath) except Exception: return False
def get_watchman_sockpath(binpath='watchman'): """Find the watchman socket or raise.""" path = os.getenv('WATCHMAN_SOCK') if path: return path cmd = [binpath, '--output-encoding=json', 'get-sockname'] result = subprocess.check_output(cmd) result = json.loads(result) return result['sockname'] def is_stream_interactive(stream): return stream is not None and stream.isatty()