Обновлены задания и тесты курса/книги “Python для сетевых инженеров”

В репозитории с заданиями к курсу/книге “Python для сетевых инженеров” сделано несколько изменений.

Обновление заданий и тестов

В репозитории с заданиями и примерами кода сделаны такие изменения:

  • добавлены тесты для разделов 4-7 и для всех заданий, кроме раздела 25 (базы данных)
  • для проверки заданий тестами сделана новая утилита pyneng
  • обновлены задания, большинство по мелочам, уточнение формулировки, приведение к одному формату
  • удалены несколько заданий: 5.2b, 7.2c
  • задание 11.2 разбито на два 11.2 и 11.2a
  • изменены задания 18.3 и 19.4
  • Файл common_functions.py в каталоге exercises переименован в pyneng_common_functions.py, чтобы не было путанницы с модулем common_functions в PyPi. Если у вас есть и обновленные задания ии старые, оставляйте оба файла в каталоге exercises

Задания в книге обновлены.

Если вы уже делаете задания, можно клонировать репозиторий с заданиями локально и затем вручную скопировать обновленные каталоге себе. Второй вариант - создать новый репозиторий, как написано ниже и скопировать решенные задания в новый репозиторий.

В любом случае, лучше использовать новую версию, так как там исправлены ошибки/неточности и улучшены тесты.

Новая утилита для проверки заданий - pyneng

Утилита pyneng это обычный скрипт pyneng.py, который находится в репозитории заданий pyneng-examples-exercises. После правильной установки скрипта, он будет доступен по имени pyneng в любом каталоге репозитория.

Скрипт упрощает запуск тестов, так как не надо указывать никакие параметры, по умолчанию вывод настроен на подробный и запускается с плагином pytest-clarity, который улучшает diff при отличиях в решении и правильном решении. Также скрываются некоторые вещи, например, warning которые показывает pytest, чтобы не отвлекать от задачи.

Тесты по-прежнему можно запускать с помощью pytest, если вы уже к нему привыкли или ранее использовали. Скрипт pyneng всего лишь обертка вокруг запуска pytest.

Вторая часть работы скрипта - копирование заданий. Эта часть сделана для удобства, чтобы не надо было искать ответы и задумана так, что сначала задание должно пройти тест и только после этого pyneng -a отработает и покажет ответы (скопирует их в текущий каталог). Для копирования ответов, скрипт клонирует репозиторий ответов в домашний каталог пользователя, копирует нужные ответы и удаляет репозиторий ответов.

С утилитой pyneng процесс работы будет выглядеть так:

  1. Выполнение заданий
  2. Проверка, что задание отрабатывает как нужно python task_4_2.py или запуск скрипта в редакторе/IDE
  3. Проверка заданий тестами pyneng 1-5
  4. Если тесты проходят, смотрим варианты решения pyneng 1-5 -a

Подробнее о том как работать с утилитой

Шаблон репозитория

Репозиторий с заданиями по-прежнему лучше всего использовать как шаблон для создания своего репозитория. Это существенно облегчит создание своего репозитория и будет меньше нюансов при работе с заданиями.

Для создания своего репозитория на основе шаблона нужно:

  • залогиниться на GitHub
  • открыть репозиторий с заданиями
  • нажать “Use this template” и создать новый репозиторий на основе этого шаблона
  • в открывшемся окне надо ввести название репозитория
  • после этого готов новый репозиторий с копией всех файлов из исходного репозитория с заданиями