Как определяется местоположение (предупреждения в) многострочной команды python?

#python #warnings

#python #предупреждения

Вопрос:

Этот код выдает четыре практически идентичных предупреждения:

 import warnings

warnings.warn("1")  # warning at this line 3
warnings.warn("2",
              stacklevel=1)  # warning at this line 5

warnings.warn("3",  # warning at this line 7
              )
warnings.warn(
    "4",)  # warning at this line 10

warnings.warn(
    "5",  # warning at this line 13
)
  

Что я заметил, так это то, что указанное местоположение немного отличается:

 c:Srcbug.py:3: UserWarning: 1
  warnings.warn("1")  # warning at this line 3
c:Srcbug.py:5: UserWarning: 2
  stacklevel=1)  # warning at this line 5
c:Srcbug.py:7: UserWarning: 3
  warnings.warn("3",  # warning at this line 7
c:Srcbug.py:10: UserWarning: 4
  "4",)  # warning at this line 10
c:Srcbug.py:13: UserWarning: 5
  "5",  # warning at this line 13

  

В частности, предупреждения 2 и 4 указывают на конечную строку команды, в то время как предупреждения 3 и 5 этого не делают (в основном, конечная строка ) игнорируется). Предназначено ли это? В идеале я бы предпочел, чтобы на консоли отображалась полная команда, а не только одна ее строка.

Комментарии:

1. Маркер будет установлен на последнюю инструкцию вызова.

2. @KlausD. звучит как ответ. Это где-нибудь задокументировано?