Pytanie Dlaczego moduł logowania Pythona nie stosuje się do konwencji PEP8?


To jest tylko ciekawostka z historycznych celów:

Zastanawiałem się, czy ktoś wie, dlaczego bardzo szeroko (i moduł podstawowy) wycięcie lasu  nie podąża za pythonami Konwencja nazewnictwa PEP-8.

Na przykład w

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

Spodziewałbym się, że tak get_logger, ale tak nie jest.

Jeśli chodzi o nazwy funkcji, standard PEP8 mówi:

mixedCase jest dozwolona tylko w kontekstach, w których już istnieje   dominujący styl (np. threading.py), aby zachować odwrotność   zgodność.

Czy tak było? Jeśli tak, z jakimi innymi logging Coś musiało utrzymywać kompatybilność wsteczną? A może tylko twórcy logging miałeś ochotę nazywać wielbłąda?

Oczywiście moduł jest dobrze udokumentowany i nie jest wielkim problemem w ogóle. Jestem po prostu ciekawy.


21
2018-04-10 16:24


pochodzenie


Ponieważ historycznie nie wszystkie moduły zostały opracowane w ciągu w standardowej bibliotece Python, a nie wszyscy autorzy postępują zgodnie z wytycznymi. - Martijn Pieters♦


Odpowiedzi:


The logging moduł został opracowany przez oddzielna firma w 2001 r. i był mocno oparty na Log4j. Jako taki jest zgodny z konwencjami nazewnictwa wybranymi przez autora, które odzwierciedlają wybory Log4j; ten ostatni ma getLogger() również metoda.

Dopiero rok później PEP 282 zaproponuje dodanie go do standardowej biblioteki, w którym to czasie konwencja nazewnictwa została ułożona w kamień.

To jest znany problem z pakietem, ale nie jest to jedyny pakiet naruszający PEP. Z połączonej Wiki:

PEP8 mówi - ważna jest zgodność z tym przewodnikiem. Konsekwencja w projekcie jest ważniejsza. Konsekwencja w obrębie jednego modułu lub funkcji jest najważniejsza.

  • Tak, prawda, ale nie można tego zmienić, ze względu na kompatybilność wsteczną. logowanie2 może. - techtonik      
    • Teraz jest to niski priorytet, chyba że istnieje inicjatywa, która sprawi, że reszta stdlib zostanie dostosowana do PEP8. - VinaySajip

Last but not least, the styleguide się ma to do powiedzenia na temat stosowania styleguides:

Głupia konsekwencja to Hobgoblin Małych Umysłów

Przewodnik po stylu jest o spójności. Konsekwencja z tym przewodnikiem po stylach jest ważna. Konsekwencja w projekcie jest ważniejsza. Konsekwencja w obrębie jednego modułu lub funkcji jest najważniejsza.

Ale najważniejsze: wiedzieć, kiedy być niekonsekwentnym - czasami przewodnik stylu nie ma zastosowania. W razie wątpliwości skorzystaj z najlepszej oceny. Spójrz na inne przykłady i zdecyduj, co wygląda najlepiej. I nie wahaj się zapytać!

W szczególności: nie łam się wstecznej zgodności tylko w celu spełnienia tego PEP!

'Ustalenie' logging złamie kompatybilność wsteczną, która nie jest tego warta.


28
2018-04-10 16:36



Wow, z pewnością zrobiłeś swoje badania! - Wouldn't You Like To Know
Niesamowite! Jestem świadomy, że PEP8 jest tylko wytyczną, ale byłem ciekawy czemu stało się to z modułem rejestrowania. :-) To jest świetna odpowiedź! - BorrajaX
Wiele modułów zapewnia obie wersje interfejsu API (uglyCase i python_case) dokładnie w celu zapewnienia kompatybilności wstecznej. - Mischa Arefiev
"Brak naprawy" logging (i inne), tj. brak zapewnienia rozsądnych aliasów przy zachowaniu BC, jest powodem, dla którego PHP wciąż jest wyśmiewane. - rr-
@rr: jest wiele innych powodów, aby wyśmiać PHP, niż ich niespójność w nazewnictwie. - Martijn Pieters♦