Black magic

Co jeżeli powiedziałbym ci, że zatrudnię dla ciebie kogoś kto pomoże utrzymać twój kod w pythonie w odpowiednim porządku? Ten ktoś zajmie się twoimi standardami. Jeżeli pracujesz w zespole programistycznym to znacznie ułatwi ci kooperację z innym, przyspieszy code review i ogolnie przyspieszy pracę. Przedstawiam Pana black https://github.com/psf/black robiącego tytułowy black magic

Początki

W najprostszym wypadku do użycia black magic wystarczy nam wywołanie prostej komendy:

black <<file name>>

Jeżeli nie masz jeszcze biblioteki to przedtem jeszcze:

pip install black

W rezultacie zobaczymy coś takiego:

Pozwoli nam na sformatowanie niechlujnego wyglądu kodu:

w coś co spełnia założone reguły:

Co potrafi Pan black?

Domyślnie black robi takie rzeczy jak:

  • standaryzacja użycia cudzysłowów
  • usunięcie zbędnych nawiasów np. z warunków if (condition):
  • usunięcie zbędnych pustych linii
  • umieszczenie argumentów wywołania funkcji, w miarę możliwości, w jednej linii
  • i wiele innych

Jak przystało na przydatne narzędzie black może być też konfigurowany tak by sprostać potrzebom ludzi pracujących z innymi standardami.

Przykładowo umieszczenie w pliku pyproject.toml:

[tool.black]
line-length = 75

zgodnie z intuicją sprawi, że nasz kod będzie przyjazny węższym ekranom:

Co jeszcze oferuje black?

  • Możesz skonfigurować integrację z systemem kontroli wersji i formatować kod przy użyciu pre-commit hooka.
  • Zignorować formatowanie części plików jeżeli nie chcesz do nich aplikować standardów
  • Użyć integracji z twoim ulubionym edytorem (Visual Studio Code, SublimeText 3, Vim, PyCharm)

Integracja z Visual Studio Code

Jako, że sam używam Visual Studio Code to pokażę, też w jaki sposób można z poziomu Visual Studio Code używać black. Wystarczy zrobić 2-3 proste czynności:

  1. Zakładam, że masz już zainstalowaną bibliotekę black. Jeżeli nie to pip install black.
  2. Do naszych ustawień visual studio code (plik settings.json) dodajemy wpis: "python.formatting.provider": "black"
  3. Za pomocą polecenia Format Document hmmm… formatujemy dokument 😉 Można też użyć skrótu Shift+Alt+F

Jeżeli chcemy w jakiś sposób sparametryzować formatowanie black’a i użyć niestandardowych ustawień formatowania, to w tym samym pliku używamy np. "python.formatting.blackArgs": ["--line-length", "90"]

Profit

Chyba nie muszę pisać ile czasu może nam to zaoszczędzić, jeżeli porównamy to z ręcznym formatowaniem kodu 🙂 

Dodaj komentarz