Read in: English · Español · Français · Deutsch · Português (Brasil) · 日本語 · 中文(简体) · Русский
Бывало ли у вас такое, что причуда в стиле кода медленно сводит с ума? На работе наша команда следует стилю кода Black — с одним исключением: одинарные кавычки вместо двойных. Кажется безобидным, правда?
Оказывается, это крошечное отклонение порождает удивительное количество трений.
Усталость от «поиска и замены»
Конечно, я мог бы вручную искать и заменять кавычки. Но делать это раз за разом в разных файлах утомительно. Тогда я попробовал использовать Cursor, но это принесло целый новый набор проблем: большой расход токенов, медленную обработку и необходимость подталкивать его на каждом шагу, как упрямого робота-ассистента.
Это сбивало мой рабочий процесс.
На сцену выходит Unify (и uv)
У меня уже был установлен uv, так что подключить Unify было проще простого:
uv tool install --python=python3.10 unify
Этот параметр --python=python3.10 — ключевой: иначе uv по умолчанию берёт Python 3.13, что вызывает проблемы с lib2to3 (да, это всё ещё актуально!).
Traceback (most recent call last):
File "/Users/abramowi/.local/bin/unify", line 10, in <module>
sys.exit(main())
~~~~^^
File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 230, in main
return _main(sys.argv,
standard_out=sys.stdout,
standard_error=sys.stderr)
File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 210, in _main
if format_file(name, args=args, standard_out=standard_out):
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 144, in format_file
encoding = detect_encoding(filename)
File "/Users/abramowi/.local/share/uv/tools/unify/lib/python3.13/site-packages/unify.py", line 125, in detect_encoding
from lib2to3.pgen2 import tokenize as lib2to3_tokenize
ModuleNotFoundError: No module named 'lib2to3'
Unify зависит от него, так что более старая версия Python спасает положение.
Однострочная команда, которая всё исправила
Вот и всё, что нужно, чтобы переключиться на одинарные кавычки прямо в файле:
unify --quote "'" --in-place /path/to/file.py
И вот так, без лишней возни. Никакой траты токенов. Никакого подталкивания ИИ-инструментов к послушанию.
До и после
# Before
print("Hello, world!")
# After
print('Hello, world!')
Вывод
Иногда лучшее решение — точечное. Unify не просто привёл в порядок мой код — он вернул мне время и концентрацию. Если вы застряли в чистилище стилей кавычек, эта однострочная команда может стать вашим спасением.
