PEP8 и SciPy#
Весь код SciPy на Python должен соответствовать PEP8 стилевые рекомендации, с исключением, что длина строки должна быть ограничена 88 символами вместо 79. Это настолько важно, что некоторые тесты непрерывной интеграции на GitHub будут проваливаться из-за определенных нарушений PEP8. Вот несколько советов по обеспечению соответствия PEP8 перед отправкой вашего кода:
Многие интегрированные среды разработки (IDE) имеют опции, автоматически проверяющие соответствие PEP8. Например, в Spyder, включить анализ стиля кода в реальном времени в Инструменты → Настройки → Редактор → Анализ кода/Интроспекция и "Автоматически удалять конечные пробелы при сохранении файлов" в Инструменты → Настройки → Редактор → Дополнительные настройки. Это может помочь вам исправлять проблемы PEP8 по мере написания кода.
Однако обратите внимание, что конфигурация линтинга SciPy может не полностью совпадать с конфигурацией вашей IDE. См. ниже, как запустить официальные проверки.
Рекомендуется оставлять существующие стилевые проблемы без изменений, если они не находятся в строках кода, которые вы уже изменяете. Эта практика обеспечивает постепенную очистку кодовой базы без выделения драгоценного времени ревью на чистку только стиля.
Перед отправкой Pull Request запустите линтер на изменениях, внесённых в вашей ветке функции. Проверки также будут выполнены во время непрерывной интеграции, но быстрее обнаружить их заранее.
Самый простой способ сделать это — установить наш pre-commit hook (один раз):
cp tools/pre-commit-hook.py .git/hooks/pre-commit
Это будет запускать проверки линтинга перед каждым коммитом.
Альтернативно, вы можете запустить проверку вручную из корневой директории SciPy:
python dev.py lint
Вы также можете запустить линтер на конкретных файлах, используя
--filesопция:python tools/lint.py --files scipy/odr/models.py scipy/ndimage
Если у вас есть существующий код с множеством проблем PEP8, рассмотрите использование
autopep8автоматически исправлять их перед включением кода в SciPy.
Ограничение длины строки в 88 символов было выбрано для соответствия настройкам по умолчанию популярных инструментов, таких как ruff и черный. Это находит баланс между созданием более коротких файлов и уменьшением ошибок линтера с одной стороны, и поддержанием достаточно коротких строк и возможностью просмотра файлов бок о бок с другой.