diff --git a/plugin/packages/wakatime/wakatime/__init__.py b/plugin/packages/wakatime/wakatime/__init__.py index 596bb3b..05b0214 100644 --- a/plugin/packages/wakatime/wakatime/__init__.py +++ b/plugin/packages/wakatime/wakatime/__init__.py @@ -12,7 +12,7 @@ from __future__ import print_function __title__ = 'wakatime' -__version__ = '0.1.5' +__version__ = '0.2.0' __author__ = 'Alan Hamlett' __license__ = 'BSD' __copyright__ = 'Copyright 2013 Alan Hamlett' @@ -27,11 +27,18 @@ import re import sys import time import traceback -import urllib2 +try: + from urllib2 import HTTPError, Request, urlopen +except ImportError: + from urllib.error import HTTPError + from urllib.request import Request, urlopen from .log import setup_logging from .project import find_project -from .packages import argparse +try: + import argparse +except ImportError: + from .packages import argparse log = logging.getLogger(__name__) @@ -130,15 +137,16 @@ def send_action(project=None, tags=None, key=None, targetFile=None, if tags: data['tags'] = list(set(tags)) log.debug(data) - request = urllib2.Request(url=url, data=json.dumps(data)) + request = Request(url=url, data=str.encode(json.dumps(data))) user_agent = get_user_agent(plugin) request.add_header('User-Agent', user_agent) request.add_header('Content-Type', 'application/json') - request.add_header('Authorization', 'Basic %s' % base64.b64encode(key)) + auth = 'Basic %s' % bytes.decode(base64.b64encode(str.encode(key))) + request.add_header('Authorization', auth) response = None try: - response = urllib2.urlopen(request) - except urllib2.HTTPError as exc: + response = urlopen(request) + except HTTPError as exc: data = { 'response_code': exc.getcode(), 'response_content': exc.read(), diff --git a/plugin/packages/wakatime/wakatime/log.py b/plugin/packages/wakatime/wakatime/log.py index 3d61ea7..4023122 100644 --- a/plugin/packages/wakatime/wakatime/log.py +++ b/plugin/packages/wakatime/wakatime/log.py @@ -22,6 +22,9 @@ except ImportError: class CustomEncoder(json.JSONEncoder): def default(self, obj): + if isinstance(obj, bytes): + obj = bytes.decode(obj) + return json.dumps(obj) return super(CustomEncoder, self).default(obj) diff --git a/plugin/packages/wakatime/wakatime/projects/git.py b/plugin/packages/wakatime/wakatime/projects/git.py index 90a12b6..2feef1e 100644 --- a/plugin/packages/wakatime/wakatime/projects/git.py +++ b/plugin/packages/wakatime/wakatime/projects/git.py @@ -14,7 +14,10 @@ import os from subprocess import Popen, PIPE from .base import BaseProject -from ..packages.ordereddict import OrderedDict +try: + from collections import OrderedDict +except ImportError: + from ..packages.ordereddict import OrderedDict log = logging.getLogger(__name__) @@ -67,6 +70,8 @@ class Git(BaseProject): pass if stdout: for line in stdout.splitlines(): + if isinstance(line, bytes): + line = bytes.decode(line) line = line.split(' ', 1) if line[0] == '*': return line[1] diff --git a/plugin/packages/wakatime/wakatime/projects/subversion.py b/plugin/packages/wakatime/wakatime/projects/subversion.py index 30e3d7b..c8f54af 100644 --- a/plugin/packages/wakatime/wakatime/projects/subversion.py +++ b/plugin/packages/wakatime/wakatime/projects/subversion.py @@ -14,7 +14,10 @@ import os from subprocess import Popen, PIPE from .base import BaseProject -from ..packages.ordereddict import OrderedDict +try: + from collections import OrderedDict +except ImportError: + from ..packages.ordereddict import OrderedDict log = logging.getLogger(__name__) @@ -51,6 +54,8 @@ class Subversion(BaseProject): 'URL', ] for line in stdout.splitlines(): + if isinstance(line, bytes): + line = bytes.decode(line) line = line.split(': ', 1) if line[0] in interesting: info[line[0]] = line[1]