aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3')
-rw-r--r--pygithub3/services/base.py14
-rw-r--r--pygithub3/services/issues/__init__.py21
-rw-r--r--pygithub3/services/issues/milestones.py16
-rw-r--r--pygithub3/tests/services/test_core.py13
4 files changed, 32 insertions, 32 deletions
diff --git a/pygithub3/services/base.py b/pygithub3/services/base.py
index 649b2b3..5fed1db 100644
--- a/pygithub3/services/base.py
+++ b/pygithub3/services/base.py
@@ -1,10 +1,13 @@
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
+from datetime import datetime
+
from pygithub3.core.client import Client
+from pygithub3.core.errors import NotFound
from pygithub3.core.result import smart, normal
from pygithub3.requests.base import Factory
-from pygithub3.core.errors import NotFound
+from pygithub3.resources.base import GITHUB_DATE_FORMAT
class Service(object):
@@ -41,6 +44,15 @@ class Service(object):
self._client = Client(**config)
self.request_builder = Factory()
+ def _normalize_date(self, key, _dict):
+ """ If ``key`` comes as ``datetime``, it'll normalize it """
+ try:
+ key = str(key)
+ date = datetime.strftime(_dict.get(key), GITHUB_DATE_FORMAT)
+ _dict.update({key: date})
+ except:
+ pass
+
@property
def remaining_requests(self):
return Client.remaining_requests
diff --git a/pygithub3/services/issues/__init__.py b/pygithub3/services/issues/__init__.py
index ada2dca..f17ee91 100644
--- a/pygithub3/services/issues/__init__.py
+++ b/pygithub3/services/issues/__init__.py
@@ -1,9 +1,6 @@
# -*- encoding: utf-8 -*-
-from datetime import datetime
-
from pygithub3.services.base import Service, MimeTypeMixin
-from pygithub3.resources.base import GITHUB_DATE_FORMAT
from .comments import Comments
from .events import Events
from .labels import Labels
@@ -30,7 +27,7 @@ class Issue(Service, MimeTypeMixin):
@high
:param str sort: 'created', 'updated' or 'comments'
:param str direction: 'asc' or 'desc'
- :param datetime since: Date filter
+ :param datetime since: Date filter (datetime or str in ISO 8601)
:returns: A :doc:`result`
.. warning::
@@ -38,12 +35,7 @@ class Issue(Service, MimeTypeMixin):
"""
params = dict(filter=filter, state=state, labels=labels, sort=sort,
direction=direction)
- try:
- date = datetime.strptime(since, GITHUB_DATE_FORMAT)
- params.update(since=date)
- except:
- pass
-
+ self._normalize_data('since', params)
request = self.request_builder('issues.list')
return self._get_result(request, **params)
@@ -60,7 +52,7 @@ class Issue(Service, MimeTypeMixin):
@high
:param str sort: 'created', 'updated' or 'comments'
:param str direction: 'asc' or 'desc'
- :param datetime since: Date filter
+ :param datetime since: Date filter (datetime or str in ISO 8601)
:returns: A :doc:`result`
.. note::
@@ -68,12 +60,7 @@ class Issue(Service, MimeTypeMixin):
"""
params = dict(milestone=milestone, state=state, assignee=assignee,
mentioned=mentioned, labels=labels, sort=sort, direction=direction)
- try:
- date = datetime.strptime(since, GITHUB_DATE_FORMAT)
- params.update(since=date)
- except:
- pass
-
+ self._normalize_data('since', params)
request = self.make_request('issues.list_by_repo', user=user,
repo=repo)
return self._get_result(request, **params)
diff --git a/pygithub3/services/issues/milestones.py b/pygithub3/services/issues/milestones.py
index fa0f95d..ac43a0c 100644
--- a/pygithub3/services/issues/milestones.py
+++ b/pygithub3/services/issues/milestones.py
@@ -1,10 +1,8 @@
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
-from datetime import datetime
-
from pygithub3.services.base import Service
-from pygithub3.resources.base import GITHUB_DATE_FORMAT
+
class Milestones(Service):
""" Consume `Milestones API
@@ -43,14 +41,6 @@ class Milestones(Service):
repo=repo, number=number)
return self._get(request)
- def _normalize_due_on(self, data):
- """ If ``due_on`` comes as ``datetime``, it'll normalize it """
- try:
- due_on = datetime.strptime(data.get('due_on'), GITHUB_DATE_FORMAT)
- data.update({'due_on': due_on})
- except:
- pass
-
def create(self, data, user=None, repo=None):
""" Create a milestone
@@ -64,7 +54,7 @@ class Milestones(Service):
.. note::
Remember :ref:`config precedence`
"""
- self._normalize_due_on(data)
+ self._normalize_date('due_on', data)
request = self.make_request('issues.milestones.create', user=user,
repo=repo, body=data)
return self._post(request)
@@ -83,7 +73,7 @@ class Milestones(Service):
.. note::
Remember :ref:`config precedence`
"""
- self._normalize_due_on(data)
+ self._normalize_date('due_on', data)
request = self.make_request('issues.milestones.update', user=user,
repo=repo, number=number, body=data)
return self._patch(request)
diff --git a/pygithub3/tests/services/test_core.py b/pygithub3/tests/services/test_core.py
index 8a2bbbe..556f3d9 100644
--- a/pygithub3/tests/services/test_core.py
+++ b/pygithub3/tests/services/test_core.py
@@ -1,8 +1,9 @@
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
-import requests
+from datetime import datetime
+import requests
from mock import patch
from pygithub3.tests.utils.core import TestCase
@@ -54,6 +55,16 @@ class TestServiceCalls(TestCase):
self.assertFalse(request_method.called)
self.assertIsInstance(result, base.Result)
+ def test_normalize_ok(self, request_method):
+ data = {'test': datetime(2012, 12, 12, 3, 3, 3)}
+ self.s._normalize_date('test', data)
+ self.assertEqual(data['test'], '2012-12-12T03:03:03Z')
+
+ def test_normalize_fail(self, request_method):
+ data = {'test': 'fail'}
+ self.s._normalize_date('test', data)
+ self.assertEqual(data['test'], 'fail')
+
@patch.object(requests.sessions.Session, 'request')
class TestMimeType(TestCase):