Подтвердить что ты не робот

Почему модуль регистрации Python не соответствует соглашениям PEP8?

Это просто любопытство с историческими целями:

Мне было интересно, знает ли кто-нибудь, почему очень широко используемый (и основной модуль) logging не следует за Python Соглашение об именовании PEP-8.

Например, в

>>> import logging
>>> log = logging.getLogger("hello")

Я ожидаю, что это будет get_logger, но это не так.

Когда речь заходит о именах функций, в стандарте PEP8 говорится:

mixedCase разрешается только в контекстах, где это уже преобладающий стиль (например, threading.py), чтобы сохранить назад совместимость.

Был ли это случай? Если да, то с каким другим logging веществом он должен был поддерживать обратную совместимость? Или это просто, что разработчики logging чувствовали себя как использование имен верблюжьих дел?

Конечно, модуль хорошо документирован и не имеет большого значения вообще. Мне просто интересно.

4b9b3361

Ответ 1

Модуль logging был разработан отдельной компанией в 2001 году и был в значительной степени основан на Log4j. Как таковой он следует соглашениям об именах, выбранным автором оригинала, которые отражают выбор Log4j; последний имеет метод getLogger().

Только через год PEP 282 предлагалось добавить его в стандартную библиотеку, и к этому времени было назначено соглашение об именах.

Это известная проблема с пакетом, но это не единственный пакет, нарушающий PEP. Из связанной Wiki:

PEP8 говорит, что важна последовательность с этим руководством по стилю. Согласованность в рамках проекта более важна. Согласованность внутри одного модуля или функции наиболее важна.

  • Итак, правда, но не может быть изменено из-за обратной совместимости. logging2 может быть. - techtonik
    • Это низкий приоритет прямо сейчас, если нет инициативы по обеспечению остальной части stdlib для соответствия PEP8. - VinaySajip

И последнее, но не менее важное: styleleguide имеет смысл сказать, применяя стилегиды:

Глупое согласование - это Хобгоблин Маленьких Разумов

Руководство по стилю - это последовательность. Важное значение имеет согласованность с этим руководством по стилю. Согласованность в рамках проекта более важна. Согласованность внутри одного модуля или функции наиболее важна.

Но самое главное: знать, когда быть непоследовательным - иногда руководство по стилю просто не применяется. Когда вы сомневаетесь, используйте свое лучшее суждение. Посмотрите на другие примеры и решите, что выглядит лучше всего. И не стесняйтесь спрашивать!

В частности: не нарушайте обратную совместимость только для соответствия этому PEP!

"Фиксация" logging нарушит совместимость, которая просто не стоит.