diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..5c2d62e --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +iso8601==0.1.10 \ No newline at end of file diff --git a/toggl/base.py b/toggl/base.py index 4e49ef1..431b24d 100644 --- a/toggl/base.py +++ b/toggl/base.py @@ -60,7 +60,12 @@ def __init__(self, api, **kwargs): self._update_attrs(kwargs) def _update_attrs(self, attrs): - for k, v in attrs.iteritems(): + try: + iteritems = dict.items # Python 3 + except AttributeError: + iteritems = dict.iteritems # Python 2 + + for k, v in iteritems(attrs): try: v = iso8601.parse_date(v) attrs[k] = v diff --git a/toggl/reports.py b/toggl/reports.py index ae62ea0..ed26f2b 100644 --- a/toggl/reports.py +++ b/toggl/reports.py @@ -2,6 +2,8 @@ from .session import Session +import sys + __all__ = ['Reports'] @@ -16,31 +18,36 @@ def parse_val(v): else: return v - for k, v in attribs.iteritems(): + try: + iteritems = dict.items # Python 3 + except AttributeError: + iteritems = dict.iteritems # Python 2 + + for k, v in iteritems(attribs): if isinstance(v, list): attribs[k] = [parse_val(el) for el in v] elif isinstance(v, dict): attribs[k] = parse_val(v) self.__dict__.update(attribs) - @property - def keys(self): - return self.__dict__.keys() - - def __unicode__(self): - if hasattr(self, '_unicode_value'): - if self._unicode_value is None: - return '(none)' + if sys.version_info[0] < 3: + @property + def keys(self): + return self.__dict__.keys() + + if sys.version_info[0] < 3: + def __unicode__(self): + if hasattr(self, '_unicode_value'): + if self._unicode_value is None: + return '(none)' + else: + return self._unicode_value else: - return self._unicode_value - else: - return super(Node, self).__unicode__() + return super(Node, self).__unicode__() - def __str__(self): - return unicode(self).encode('utf-8') - - def __contains__(self, key): - return key in self.__dict__ + if sys.version_info[0] < 3: + def __str__(self): + return self.__unicode__().encode('utf-8') class Reports(object): @@ -68,15 +75,23 @@ def request(self, type, workspace_id=None, **params): raise ValueError('missing workspace ID') workspace_id = self.workspace_id - for k, v in params.iteritems(): + try: + iteritems = dict.items # Python 3 + except AttributeError: + iteritems = dict.iteritems # Python 2 + + for k, v in iteritems(params): if isinstance(v, datetime) or isinstance(v, date): params[k] = v.strftime('%Y-%m-%d') params['workspace_id'] = workspace_id params['user_agent'] = self.USER_AGENT - data = self.session.get(type, **params) - return Node(**data) + if sys.version_info[0] < 3: + data = self.session.get(type, **params) + return Node(**data) + else: + return self.session.get(type, **params) @classmethod def _get_totals(cls, data): diff --git a/toggl/session.py b/toggl/session.py index 12d8702..120f862 100644 --- a/toggl/session.py +++ b/toggl/session.py @@ -1,5 +1,8 @@ import requests -from urllib import urlencode +try: + from urllib import urlencode +except ImportError: + from urllib.parse import urlencode import logging import json