Intellisense не выводит timedelta с косвенным вычитанием объектов datetime - PullRequest
0 голосов
/ 12 марта 2020

Пытаясь сделать простую хронологию, как я делал, я наткнулся на это странное поведение:

from datetime import datetime

def main():
    delta_nows = datetime.now() - datetime.now()
    delta_utcnows = datetime.utcnow() - datetime.utcnow()
    delta_strps = datetime.strptime('2020-01-02', '%Y-%m-%d') - datetime.strptime('2020-01-01', '%Y-%m-%d')
    delta_dts = datetime(1,1,2,0,0,0,0) - datetime(1,1,1,0,0,0,0)

    delta_nows.total_seconds()
    delta_utcnows.total_seconds()
    delta_strps.total_seconds()
    delta_dts.total_seconds()

if __name__ == '__main__':
    main()

Пример Visual Studio 2019: Visual Studio example

В приведенном выше коде только delta_dts выводится как timedelta (остальные выводятся как datetime объекты), что означает, что intellisense не работает ни на одном из первых трех total_seconds() вызовов.

Во время выполнения все вызовы работают, и четыре переменные действительно являются timedelta объектами.

Я попытался перезапустить Visual Studio и компьютер, но поведение сохраняется. Это ошибка или я что-то упустил? Python Документы ясно говорят, что

timedelta = datetime1 - datetime2

, но Intellisense, похоже, не подхватывает косвенные datetime объекты, вычитаемые (объекты, возвращаемые из функций кроме конструктора).

Такое поведение появляется только в Visual Studio 2019 и не зависит от версии Python 3.x (протестировано на 3.5 и 3.7). На VS2017 все переменные являются timedelta объектами.

...