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 и черный. Это находит баланс между созданием более коротких файлов и уменьшением ошибок линтера с одной стороны, и поддержанием достаточно коротких строк и возможностью просмотра файлов бок о бок с другой.