Skip to content

Commit

Permalink
Merge pull request #17 from cbenhagen/parse_datetime
Browse files Browse the repository at this point in the history
Use dateutil to replace parse_datetime
  • Loading branch information
blakev committed Mar 6, 2018
2 parents 6c7d2d6 + 8a83f51 commit 2e3aff5
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 44 deletions.
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
python-dateutil==2.6.1
requests==2.18.4

sphinxcontrib-napoleon
sphinx_rtd_theme
sphinx_rtd_theme
44 changes: 2 additions & 42 deletions syncthing/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@
import logging
import warnings
from collections import namedtuple
from datetime import datetime, timedelta

import requests
from dateutil.parser import parse as parse_datetime
from requests.exceptions import ConnectionError, ConnectTimeout

PY2 = sys.version_info[0] < 3
Expand All @@ -40,12 +40,11 @@

NoneType = type(None)
DEFAULT_TIMEOUT = 10.0
SYNCTHING_DATE_FMT = '%Y-%m-%dT%H:%M:%S.%f'

__all__ = ['SyncthingError', 'ErrorEvent', 'BaseAPI', 'System',
'Database', 'Statistics', 'Syncthing',
# methods
'keys_to_datetime', 'parse_datetime']
'keys_to_datetime']

ErrorEvent = namedtuple('ErrorEvent', 'when, message')
"""tuple[datetime.datetime,str]: used to process error lists more easily,
Expand All @@ -60,45 +59,6 @@ def _syncthing():
return Syncthing(KEY, HOST, PORT, 10.0, IS_HTTPS, SSL_CERT_FILE)


def parse_datetime(s, date_format=SYNCTHING_DATE_FMT):
""" Converts the time-string format from Syncthing into
a valid :obj:`.DateTime` object.
Args:
s (str): the time-string that needs to be formatted.
date_format (str): the datetime mask that's applied to
``s`` to isolate datetime components.
Returns:
:py:class:`~datetime.datetime.DateTime`
>>> parse_datetime(None) is None
True
>>> parse_datetime('')
''
>>> parse_datetime('2016-06-06T19:41:43.039284753+02:00')
datetime.datetime(2016, 6, 6, 21, 41, 43, 39284)
>>> parse_datetime('2016-06-06T19:41:43.039284753-02:00')
datetime.datetime(2016, 6, 6, 17, 41, 43, 39284)
>>> parse_datetime('2016-06-06T19:41:43.039284000-02:00')
datetime.datetime(2016, 6, 6, 17, 41, 43, 39284)
>>> parse_datetime('2016-06-06T19:41:43.039284')
datetime.datetime(2016, 6, 6, 19, 41, 43, 39284)
"""
if not s:
return s
obj = datetime.strptime(s[0:26], date_format)
offset = s[-6:].replace(':', '')
if offset[0] in '+-':
hours, minutes = offset[1:3], offset[3:]
delta = timedelta(hours=int(hours), minutes=int(minutes))
if offset[0] == '+':
obj += delta
else:
obj -= delta
return obj


def keys_to_datetime(obj, *keys):
""" Converts all the keys in an object to DateTime instances.
Expand Down

0 comments on commit 2e3aff5

Please sign in to comment.