From d6d31db5f04976cd051cc072372b6d0db3ad3773 Mon Sep 17 00:00:00 2001 From: Alan Hamlett Date: Tue, 1 Dec 2015 12:09:14 -0800 Subject: [PATCH] upgrade wakatime-cli to v4.1.8 --- plugin/packages/wakatime/logger.py | 12 +- plugin/packages/wakatime/main.py | 103 +++++++++--------- plugin/packages/wakatime/projects/git.py | 4 +- .../packages/wakatime/projects/mercurial.py | 4 +- .../projects/wakatime_project_file.py | 4 +- plugin/packages/wakatime/stats.py | 2 +- 6 files changed, 70 insertions(+), 59 deletions(-) diff --git a/plugin/packages/wakatime/logger.py b/plugin/packages/wakatime/logger.py index 19f8581..13d9454 100644 --- a/plugin/packages/wakatime/logger.py +++ b/plugin/packages/wakatime/logger.py @@ -11,9 +11,10 @@ import logging import os -import sys +import traceback from .compat import u +from .packages.requests.packages import urllib3 try: from collections import OrderedDict # pragma: nocover except ImportError: # pragma: nocover @@ -70,8 +71,9 @@ class JsonFormatter(logging.Formatter): del data['plugin'] return CustomEncoder().encode(data) - def formatException(self, exc_info): - return sys.exec_info[2].format_exc() + +def traceback_formatter(*args, **kwargs): + logging.getLogger('WakaTime').error(traceback.format_exc()) def set_log_level(logger, args): @@ -82,6 +84,7 @@ def set_log_level(logger, args): def setup_logging(args, version): + urllib3.disable_warnings() logger = logging.getLogger('WakaTime') for handler in logger.handlers: logger.removeHandler(handler) @@ -102,6 +105,9 @@ def setup_logging(args, version): handler.setFormatter(formatter) logger.addHandler(handler) + # add custom traceback logging method + logger.traceback = traceback_formatter + warnings_formatter = JsonFormatter(datefmt='%Y/%m/%d %H:%M:%S %z') warnings_formatter.setup( timestamp=args.timestamp, diff --git a/plugin/packages/wakatime/main.py b/plugin/packages/wakatime/main.py index 306ad77..3a4a677 100644 --- a/plugin/packages/wakatime/main.py +++ b/plugin/packages/wakatime/main.py @@ -412,59 +412,64 @@ def execute(argv=None): setup_logging(args, __version__) - exclude = should_exclude(args.entity, args.include, args.exclude) - if exclude is not False: - log.debug(u('Skipping because matches exclude pattern: {pattern}').format( - pattern=u(exclude), - )) - return 0 + try: + exclude = should_exclude(args.entity, args.include, args.exclude) + if exclude is not False: + log.debug(u('Skipping because matches exclude pattern: {pattern}').format( + pattern=u(exclude), + )) + return 0 - if args.entity_type != 'file' or os.path.isfile(args.entity): + if args.entity_type != 'file' or os.path.isfile(args.entity): - stats = get_file_stats(args.entity, entity_type=args.entity_type, - lineno=args.lineno, cursorpos=args.cursorpos) + stats = get_file_stats(args.entity, + entity_type=args.entity_type, + lineno=args.lineno, + cursorpos=args.cursorpos) - project = args.project or args.alternate_project - branch = None - if args.entity_type == 'file': - project, branch = get_project_info(configs, args) + project = args.project or args.alternate_project + branch = None + if args.entity_type == 'file': + project, branch = get_project_info(configs, args) - kwargs = vars(args) - kwargs['project'] = project - kwargs['branch'] = branch - kwargs['stats'] = stats - kwargs['hostname'] = args.hostname or socket.gethostname() - kwargs['timeout'] = args.timeout + kwargs = vars(args) + kwargs['project'] = project + kwargs['branch'] = branch + kwargs['stats'] = stats + kwargs['hostname'] = args.hostname or socket.gethostname() + kwargs['timeout'] = args.timeout - if send_heartbeat(**kwargs): - queue = Queue() - while True: - heartbeat = queue.pop() - if heartbeat is None: - break - sent = send_heartbeat( - project=heartbeat['project'], - entity=heartbeat['entity'], - timestamp=heartbeat['time'], - branch=heartbeat['branch'], - hostname=kwargs['hostname'], - stats=json.loads(heartbeat['stats']), - key=args.key, - isWrite=heartbeat['is_write'], - plugin=heartbeat['plugin'], - offline=args.offline, - hidefilenames=args.hidefilenames, - entity_type=heartbeat['type'], - proxy=args.proxy, - api_url=args.api_url, - timeout=args.timeout, - ) - if not sent: - break - return 0 # success + if send_heartbeat(**kwargs): + queue = Queue() + while True: + heartbeat = queue.pop() + if heartbeat is None: + break + sent = send_heartbeat( + project=heartbeat['project'], + entity=heartbeat['entity'], + timestamp=heartbeat['time'], + branch=heartbeat['branch'], + hostname=kwargs['hostname'], + stats=json.loads(heartbeat['stats']), + key=args.key, + isWrite=heartbeat['is_write'], + plugin=heartbeat['plugin'], + offline=args.offline, + hidefilenames=args.hidefilenames, + entity_type=heartbeat['type'], + proxy=args.proxy, + api_url=args.api_url, + timeout=args.timeout, + ) + if not sent: + break + return 0 # success - return 102 # api error + return 102 # api error - else: - log.debug('File does not exist; ignoring this heartbeat.') - return 0 + else: + log.debug('File does not exist; ignoring this heartbeat.') + return 0 + except: + log.traceback() diff --git a/plugin/packages/wakatime/projects/git.py b/plugin/packages/wakatime/projects/git.py index 2e8b561..091f5c9 100644 --- a/plugin/packages/wakatime/projects/git.py +++ b/plugin/packages/wakatime/projects/git.py @@ -44,9 +44,9 @@ class Git(BaseProject): with open(head, 'r', encoding=sys.getfilesystemencoding()) as fh: return u(fh.readline().strip().rsplit('/', 1)[-1]) except: - log.exception("Exception:") + log.traceback() except IOError: # pragma: nocover - log.exception("Exception:") + log.traceback() return None def _project_base(self): diff --git a/plugin/packages/wakatime/projects/mercurial.py b/plugin/packages/wakatime/projects/mercurial.py index 7cb3e5e..399edd5 100644 --- a/plugin/packages/wakatime/projects/mercurial.py +++ b/plugin/packages/wakatime/projects/mercurial.py @@ -42,9 +42,9 @@ class Mercurial(BaseProject): with open(branch_file, 'r', encoding=sys.getfilesystemencoding()) as fh: return u(fh.readline().strip().rsplit('/', 1)[-1]) except: - log.exception("Exception:") + log.traceback() except IOError: # pragma: nocover - log.exception("Exception:") + log.traceback() return u('default') def _find_hg_config_dir(self, path): diff --git a/plugin/packages/wakatime/projects/wakatime_project_file.py b/plugin/packages/wakatime/projects/wakatime_project_file.py index 2b9ada5..76fc7d2 100644 --- a/plugin/packages/wakatime/projects/wakatime_project_file.py +++ b/plugin/packages/wakatime/projects/wakatime_project_file.py @@ -41,9 +41,9 @@ class WakaTimeProjectFile(BaseProject): self._project_name = u(fh.readline().strip()) self._project_branch = u(fh.readline().strip()) except: - log.exception("Exception:") + log.traceback() except IOError: # pragma: nocover - log.exception("Exception:") + log.traceback() return True return False diff --git a/plugin/packages/wakatime/stats.py b/plugin/packages/wakatime/stats.py index 07b9bb7..2606fa4 100644 --- a/plugin/packages/wakatime/stats.py +++ b/plugin/packages/wakatime/stats.py @@ -191,5 +191,5 @@ def get_file_contents(file_name): with open(file_name, 'r', encoding=sys.getfilesystemencoding()) as fh: text = fh.read(512000) except: - log.exception("Exception:") + log.traceback() return text