В задании 4 осталось замечание о возвращаемом значении: build_mart_name печатает имя витрины, но возвращает None. По условию функция должна возвращать сформированную строку, чтобы её можно было использовать дальше. Исправь возврат результата и проверь именно возвращаемое значение на трёх примерах из задания.
Здесь поле проверяется в required_fields, из которого оно только что взято, поэтому отсутствие поля в row никогда не обнаруживается: даже validate_row({}) возвращает «Row is valid». Проверь, в каком объекте нужно искать обязательные поля. Также успешный return внутри цикла завершает проверку после первого поля: остальные поля не проверяются. Успех должен означать, что проверены все обязательные поля. Проверь случай row={"id": 1}, required_fields=["id", "email"] — ожидается «Missing field: email».
Имя процесса load_users зафиксировано в строке, а job_name подставляется вместо слова Job. Например, вызов log_job_start("load_orders") выведет «[INFO] load_orders load_users started in dev». По условию имя процесса должно браться из аргумента, сохраняя формат «[INFO] Job load_orders started in dev». Проверь, какая часть сообщения должна быть постоянной.
По условию build_mart_name должна возвращать готовую строку имени витрины, а сейчас возвращает кортеж из двух аргументов. Формирование имени выполняется снаружи, только при печати. Перенеси формирование строки внутрь функции и поправь использование возвращаемого результата. Угловые скобки в шаблоне обозначают подставляемые значения: для первого примера ожидается dm_orders, без символов < и >.
В задаче 5 нужно вывести результаты проверки наличия ключей name и email. Сейчас get() выводит значение и None, а не результаты проверки наличия. Кроме того, None может быть значением существующего ключа. Вспомни оператор проверки ключа из теории и примени проверку к обоим ключам.
В задаче 4 требуется вывести словарь после каждого удаления. Сейчас показано только состояние после обеих операций; добавь вывод промежуточного состояния после del.
В задаче 1 нужно отдельно вывести формат файла. Сейчас выводится тип самого словаря — <class 'dict'>. Обратись к значению, которое хранит формат файла.