diff --git a/python/helpers/StdlibTypes.properties b/python/helpers/StdlibTypes.properties index 9e4299b0d484..0cc9d7d78116 100644 --- a/python/helpers/StdlibTypes.properties +++ b/python/helpers/StdlibTypes.properties @@ -1,15 +1,5 @@ # Python stdlib -## 2. Built-in functions - -__builtin__.open = \ - :type name: string \n\ - :type mode: string \n\ - :type buffering: int \n\ - :type encoding: string or None \n\ - :type errors: string or None \n\ - :rtype: file \n\ - ## 5.4. Numeric types @@ -1371,16 +1361,16 @@ cStringIO.OutputType.__iter__ = \ ## 8.1. datetime datetime.date.today = \ - :rtype: datetime.date \n\ + :rtype: date \n\ datetime.date.fromtimestamp = \ - :rtype: datetime.date \n\ + :rtype: date \n\ datetime.date.fromordinal = \ - :rtype: datetime.date \n\ + :rtype: date \n\ datetime.date.replace = \ - :rtype: datetime.date \n\ + :rtype: date \n\ datetime.date.toordinal = \ :rtype: int \n\ @@ -1405,24 +1395,24 @@ datetime.date.strftime = \ :rtype: string \n\ datetime.date.__add__ = \ - :type y: datetime.timedelta \n\ - :type other: datetime.timedelta \n\ - :rtype: datetime.date \n\ + :type y: timedelta \n\ + :type other: timedelta \n\ + :rtype: date \n\ datetime.date.__radd__ = \ - :type y: datetime.timedelta \n\ - :type other: datetime.timedelta \n\ - :rtype: datetime.date \n\ + :type y: timedelta \n\ + :type other: timedelta \n\ + :rtype: date \n\ datetime.date.__sub__ = \ - :type y: datetime.date or datetime.timedelta \n\ - :type other: datetime.date or datetime.timedelta \n\ - :rtype: datetime.date or datetime.timedelta \n\ + :type y: date or timedelta \n\ + :type other: date or timedelta \n\ + :rtype: date or timedelta \n\ datetime.date.__rsub__ = \ - :type y: datetime.date \n\ - :type other: datetime.date \n\ - :rtype: datetime.timedelta \n\ + :type y: date \n\ + :type other: date \n\ + :rtype: timedelta \n\ datetime.time.isoformat = \ :rtype: bytes \n\ @@ -1432,108 +1422,108 @@ datetime.time.strftime = \ :rtype: string \n\ datetime.time.utcoffset = \ - :rtype: datetime.timedelta or None \n\ + :rtype: timedelta or None \n\ datetime.time.dst = \ - :rtype: datetime.timedelta or None \n\ + :rtype: timedelta or None \n\ datetime.ime.tzname = \ :rtype: string \n\ datetime.timedelta.__add__ = \ - :type y: T <= datetime.timedelta or datetime.date or datetime.datetime \n\ - :type other: T <= datetime.timedelta or datetime.date or datetime.datetime \n\ + :type y: T <= timedelta or date or datetime \n\ + :type other: T <= timedelta or date or datetime \n\ :rtype: T \n\ datetime.timedelta.__radd__ = \ - :type y: datetime.timedelta or datetime.date or datetime.datetime \n\ - :type other: datetime.timedelta or datetime.date or datetime.datetime \n\ - :rtype: datetime.timedelta or datetime.date or datetime.datetime \n\ + :type y: timedelta or date or datetime \n\ + :type other: timedelta or date or datetime \n\ + :rtype: timedelta or date or datetime \n\ datetime.timedelta.__sub__ = \ - :type y: datetime.timedelta or datetime.date or datetime.datetime \n\ - :type other: datetime.timedelta or datetime.date or datetime.datetime \n\ - :rtype: datetime.timedelta or datetime.date or datetime.datetime \n\ + :type y: timedelta or date or datetime \n\ + :type other: timedelta or date or datetime \n\ + :rtype: timedelta or date or datetime \n\ datetime.timedelta.__rsub__ = \ - :type y: datetime.timedelta or datetime.date or datetime.datetime \n\ - :type other: datetime.timedelta or datetime.date or datetime.datetime \n\ - :rtype: datetime.timedelta or datetime.date or datetime.datetime \n\ + :type y: timedelta or date or datetime \n\ + :type other: timedelta or date or datetime \n\ + :rtype: timedelta or date or datetime \n\ datetime.timedelta.__mul__ = \ :type y: int or long \n\ :type other: int or long \n\ - :rtype: datetime.timedelta \n\ + :rtype: timedelta \n\ datetime.timedelta.__rmul__ = \ :type y: int or long \n\ :type other: int or long \n\ - :rtype: datetime.timedelta \n\ + :rtype: timedelta \n\ datetime.timedelta.__div__ = \ :type y: int or long \n\ :type other: int or long \n\ - :rtype: datetime.timedelta \n\ + :rtype: timedelta \n\ datetime.timedelta.__truediv__ = \ :type y: int or long \n\ :type other: int or long \n\ - :rtype: datetime.timedelta \n\ + :rtype: timedelta \n\ datetime.datetime.today = \ - :rtype: datetime.datetime \n\ + :rtype: datetime \n\ datetime.datetime.now = \ - :type tz: datetime.tzinfo or None \n\ - :rtype: datetime.datetime \n\ + :type tz: tzinfo or None \n\ + :rtype: datetime \n\ datetime.datetime.utcnow = \ - :rtype: datetime.datetime \n\ + :rtype: datetime \n\ datetime.datetime.fromtimestamp = \ :type timestamp: int or long or float \n\ - :type tz: datetime.tzinfo or None \n\ - :rtype: datetime.datetime \n\ + :type tz: tzinfo or None \n\ + :rtype: datetime \n\ datetime.datetime.utcfromtimestamp = \ :type timestamp: int or long or float \n\ - :rtype: datetime.datetime \n\ + :rtype: datetime \n\ datetime.datetime.fromordinal = \ :type ordinal: int \n\ - :rtype: datetime.datetime \n\ + :rtype: datetime \n\ datetime.datetime.combine = \ - :type date: datetime.date \n\ - :type time: datetime.time \n\ - :rtype: datetime.datetime \n\ + :type date: date \n\ + :type time: time \n\ + :rtype: datetime \n\ datetime.datetime.strptime = \ :type date_string: string \n\ :type format: string \n\ - :rtype: datetime.datetime \n\ + :rtype: datetime \n\ datetime.datetime.date = \ - :rtype: datetime.date \n\ + :rtype: date \n\ datetime.datetime.time = \ - :rtype: datetime.time \n\ + :rtype: time \n\ datetime.datetime.timetz = \ - :rtype: datetime.time \n\ + :rtype: time \n\ datetime.datetime.replace = \ - :rtype: datetime.datetime \n\ + :rtype: datetime \n\ datetime.datetime.astimezone = \ - :type tz: datetime.tzinfo \n\ - :rtype: datetime.datetime \n\ + :type tz: tzinfo \n\ + :rtype: datetime \n\ datetime.datetime.utcoffset = \ - :rtype: datetime.timedelta or None \n\ + :rtype: timedelta or None \n\ datetime.datetime.dst = \ - :rtype: datetime.timedelta or None \n\ + :rtype: timedelta or None \n\ datetime.datetime.tzname = \ :rtype: string \n\ @@ -1561,19 +1551,19 @@ datetime.datetime.strftime = \ :rtype: string \n\ datetime.datetime.__add__ = \ - :type y: datetime.timedelta \n\ - :type other: datetime.timedelta \n\ - :rtype: datetime.datetime \n\ + :type y: timedelta \n\ + :type other: timedelta \n\ + :rtype: datetime \n\ datetime.datetime.__radd__ = \ - :type y: datetime.timedelta \n\ - :type other: datetime.timedelta \n\ - :rtype: datetime.datetime \n\ + :type y: timedelta \n\ + :type other: timedelta \n\ + :rtype: datetime \n\ datetime.datetime.__sub__ = \ - :type y: datetime.datetime or datetime.timedelta \n\ - :type other: datetime.datetime or datetime.timedelta \n\ - :rtype: datetime.datetime or datetime.timedelta \n\ + :type y: datetime or timedelta \n\ + :type other: datetime or timedelta \n\ + :rtype: datetime or timedelta \n\ ## 8.3. collections diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/DateTodayReturnType/a.py b/python/testData/inspections/PyUnresolvedReferencesInspection/DateTodayReturnType/a.py new file mode 100644 index 000000000000..d85a24eba4b7 --- /dev/null +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/DateTodayReturnType/a.py @@ -0,0 +1,4 @@ +from datetime import date + + +print(date.today().strftime('%y')) diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/DateTodayReturnType/datetime.py b/python/testData/inspections/PyUnresolvedReferencesInspection/DateTodayReturnType/datetime.py new file mode 100644 index 000000000000..49f7e133ca69 --- /dev/null +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/DateTodayReturnType/datetime.py @@ -0,0 +1,15 @@ +class datetime(object): + def date(self): + return 'foo' + + +class date(object): + def __init__(self, year, month, day): + pass + + @classmethod + def today(cls): + return date(0, 0, 0) + + def strftime(self, fmt): + return 'bar' \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java index fe5a51684aa6..df5c1c17cbc0 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java @@ -281,6 +281,10 @@ public class PyUnresolvedReferencesInspectionTest extends PyTestCase { doMultiFileTest("a.py"); } + public void testDateTodayReturnType() { + doMultiFileTest("a.py"); + } + private void doTest() { myFixture.configureByFile(TEST_DIRECTORY + getTestName(true) + ".py"); myFixture.enableInspections(PyUnresolvedReferencesInspection.class);