summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraylu <lurayl@gmail.com>2015-05-12 18:35:52 -0700
committerraylu <lurayl@gmail.com>2015-05-12 18:35:52 -0700
commitc755db9a8931fcf98d0bc3feb067e8770a866cbe (patch)
tree2b66fd11b19e31608211c515be20d6691afbb861
parentc8cf9abf3254915a65c352981a604bcfb3005d49 (diff)
downloadastroid-pylint-480.tar.gz
Add brain module for dateutil.parser.parsepylint-480
-rw-r--r--astroid/brain/pydateutil.py15
-rw-r--r--astroid/tests/unittest_brain.py18
2 files changed, 33 insertions, 0 deletions
diff --git a/astroid/brain/pydateutil.py b/astroid/brain/pydateutil.py
new file mode 100644
index 0000000..0b45412
--- /dev/null
+++ b/astroid/brain/pydateutil.py
@@ -0,0 +1,15 @@
+"""Astroid hooks for dateutil"""
+
+import textwrap
+
+from astroid import MANAGER, register_module_extender
+from astroid.builder import AstroidBuilder
+
+def dateutil_transform():
+ return AstroidBuilder(MANAGER).string_build(textwrap.dedent('''
+ import datetime
+ def parse(timestr, parserinfo=None, **kwargs):
+ return datetime.datetime()
+ '''))
+
+register_module_extender(MANAGER, 'dateutil.parser', dateutil_transform)
diff --git a/astroid/tests/unittest_brain.py b/astroid/tests/unittest_brain.py
index b0e0608..3eae3f9 100644
--- a/astroid/tests/unittest_brain.py
+++ b/astroid/tests/unittest_brain.py
@@ -47,6 +47,12 @@ try:
except ImportError:
HAS_ENUM = False
+try:
+ import dateutil # pylint: disable=unused-import
+ HAS_DATEUTIL = True
+except ImportError:
+ HAS_DATEUTIL = False
+
class HashlibTest(unittest.TestCase):
def test_hashlib(self):
"""Tests that brain extensions for hashlib work."""
@@ -285,5 +291,17 @@ class EnumBrainTest(unittest.TestCase):
self.assertTrue(clazz.is_subtype_of(int_type),
'IntEnum based enums should be a subtype of int')
+
+@unittest.skipUnless(HAS_DATEUTIL, "This test requires the dateutil library.")
+class DateutilBrainTest(unittest.TestCase):
+ def test_parser(self):
+ module = AstroidBuilder().string_build(dedent("""
+ from dateutil.parser import parse
+ d = parse('2000-01-01')
+ """))
+ d_type = next(module['d'].infer())
+ self.assertEqual(d_type.qname(), "datetime.datetime")
+
+
if __name__ == '__main__':
unittest.main()