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:
- Zakładam, że masz już zainstalowaną bibliotekę black. Jeżeli nie to pip install black.
- Do naszych ustawień visual studio code (plik settings.json) dodajemy wpis:
"python.formatting.provider": "black" - 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 🙂