Spec-Zone.ru › Wagtail

Руководство по программированию на Python

PEP8

Мы просим, чтобы все вклады в Python соответствовали руководству по стилю PEP8. Все файлы должны быть отформатированы с помощью автоформатера black. Это будет выполнено pre-commit при соответствующей настройке.

  • В репозитории проекта находится файл .editorconfig. Рекомендуется использовать текстовый редактор с поддержкой EditorConfig, чтобы избежать проблем с отступами и пробелами. Для Python и HTML файлов используется 4 пробела для отступа.

Кроме того, строки импорта должны быть отсортированы в соответствии с правилами isort 5.6.4. Если вы установили зависимости для тестирования Wagtail (pip install -e '.[testing]'), вы можете проверить свой код, выполнив make lint. Также вы можете проверить только проверки Python, выполнив make lint-server.

Вы можете запустить всю форматирование Python с помощью make format. Аналогично проверке, вы можете отформатировать только файлы python/шаблонов, выполнив make format-server.

Совместимость с Django

Wagtail разработан для совместимости с несколькими версиями Django. Иногда это требует выполнения одного фрагмента кода для последних версий Django и другого фрагмента кода для более старых версий Django. В таких случаях всегда проверяйте, какая версия Django используется, изучив django.VERSION:

import django

if django.VERSION >= (1, 9):
    # Use new attribute
    related_field = field.rel
else:
    # Use old, deprecated attribute
    related_field = field.related

Всегда сравнивайте с версией, используя оператор больше или равно (>=), чтобы код для новых версий Django обрабатывался первым.

Не используйте try ... except при проверке, обладает ли объект атрибутом или методом, введённым в более новых версиях Django, так как это не ясно выражает, почему используется try ... except. Явное сравнение с версией Django делает намерение кода очень ясным.

# Do not do this
try:
    related_field = field.rel
except AttributeError:
    related_field = field.related

Если код должен использовать что-то, что изменилось во многих версиях Django, подумайте о создании функции, которая оборачивает проверку:

import django

def related_field(field):
    if django.VERSION >= (1, 9):
        return field.rel
    else:
        return field.related

Если Django представил новую функцию, которая, по вашему мнению, была бы очень полезной для Wagtail, но недоступна в более старых версиях Django, поддерживаемых Wagtail, эту функцию можно скопировать в Wagtail. Если пользователь запускает новую версию Django, которая имеет эту функцию, она должна быть импортирована из Django. В противном случае следует использовать версию, входящую в состав Wagtail. Должна быть включена ссылка на исходный код Django, откуда взята эта функция:

import django

if django.VERSION >= (1, 9):
    from django.core.validators import validate_unicode_slug
else:
    # Taken from https://github.com/django/django/blob/1.9/django/core/validators.py#L230
    def validate_unicode_slug(value):
            # Code left as an exercise to the reader
            pass

Тесты

Wagtail имеет набор тестов, которые мы стремимся улучшать и расширять. Смотрите Тестирование.

Мы выполняем непрерывную интеграцию, чтобы убедиться, что никакие коммиты или запросы на вытягивание не приводят к сбоям тестов. Если ваши вклады добавляют функциональность в Wagtail, пожалуйста, включите дополнительные тесты для её покрытия; если ваши вклады изменяют существующую функциональность, пожалуйста, соответственно обновите соответствующие тесты.

© 2014-present Torchbox Ltd and individual contributors.
All rights are reserved.
Licensed under the BSD License.
https://docs.wagtail.org/en/stable/contributing/python_guidelines.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API