Unify спас меня от ада ручной расстановки кавычек

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 не просто привёл в порядок мой код — он вернул мне время и концентрацию. Если вы застряли в чистилище стилей кавычек, эта однострочная команда может стать вашим спасением.

WordPress and DreamHost: Perfect Duo

Leave a Reply

Your email address will not be published. Required fields are marked *