diff --git a/dvc/analytics.py b/dvc/analytics.py index 06bcb3bef..3df5af1e8 100644 --- a/dvc/analytics.py +++ b/dvc/analytics.py @@ -129,10 +129,9 @@ class Analytics(object): else: raise NotImplementedError - def _collect(self, args=None, ret=None): + def collect(self): from dvc.scm import SCM from dvc.project import Project, NotDvcProjectError - from dvc.command.daemon import CmdDaemonAnalytics self.info[self.PARAM_DVC_VERSION] = VERSION self.info[self.PARAM_IS_BINARY] = is_binary() @@ -146,6 +145,11 @@ class Analytics(object): except NotDvcProjectError: pass + def collect_cmd(self, args, ret): + from dvc.command.daemon import CmdDaemonAnalytics + + assert isinstance(ret, int) or ret is None + if ret is not None: self.info[self.PARAM_CMD_RETURN_CODE] = ret @@ -161,7 +165,7 @@ class Analytics(object): return fobj.name @staticmethod - def _is_enabled(cmd): + def _is_enabled(cmd=None): from dvc.config import Config from dvc.project import Project, NotDvcProjectError from dvc.command.daemon import CmdDaemonBase @@ -190,18 +194,24 @@ class Analytics(object): .format('en' if enabled else 'dis')) return enabled - def send(self, detach=True, cmd=None, args=None, ret=None): - import requests + @staticmethod + def send_cmd(cmd, args, ret): from dvc.daemon import Daemon - if not self._is_enabled(cmd): + if not Analytics._is_enabled(cmd): return - if detach: # pragma: no cover - Daemon()(['analytics', self.dump()]) + a = Analytics() + a.collect_cmd(args, ret) + Daemon()(['analytics', a.dump()]) + + def send(self): + import requests + + if not self._is_enabled(): return - self._collect(args=args, ret=ret) + self.collect() Logger.debug("Sending analytics: {}".format(self.info)) diff --git a/dvc/command/daemon.py b/dvc/command/daemon.py index 1e4a02380..eb3802577 100644 --- a/dvc/command/daemon.py +++ b/dvc/command/daemon.py @@ -30,6 +30,6 @@ class CmdDaemonAnalytics(CmdDaemonBase): from dvc.analytics import Analytics analytics = Analytics.load(self.args.target) - analytics.send(detach=False) + analytics.send() return 0 diff --git a/dvc/main.py b/dvc/main.py index 1a691f7cc..0560a127a 100644 --- a/dvc/main.py +++ b/dvc/main.py @@ -30,6 +30,6 @@ def main(argv=None): Logger.error('Unexpected error', ex) ret = 255 - Analytics().send(detach=True, cmd=cmd, args=args, ret=ret) + Analytics().send_cmd(cmd, args, ret) return ret diff --git a/tests/test_analytics.py b/tests/test_analytics.py index 4ff9a94cd..9d5c37b9f 100644 --- a/tests/test_analytics.py +++ b/tests/test_analytics.py @@ -20,7 +20,7 @@ def _clean_getenv(key, default=None): class TestAnalytics(TestDir): def test(self): a = Analytics() - a._collect() + a.collect() self.assertTrue(isinstance(a.info, dict)) self.assertNotEqual(a.info, {}) self.assertTrue(a.PARAM_USER_ID in a.info.keys())