Repository navigation
3. Рамазанова Дарина Наимовна 614 - #181
darinaramazanova wants to merge 11 commits into
Conversation
| # measured per call from the data (see the function). | ||
| # TODO: задайте заголовки столбцов таблицы | ||
| TABLE_HEADERS: Final[tuple[str, ...]] = () | ||
| TABLE_HEADERS: Final[tuple[str, ...]] = ("ID", "name", "price", "quatity") |
There was a problem hiding this comment.
Опечатка в слове quantity. Из-за этого часть тестов не пройдена
|
|
||
| from .crud import ( # noqa: F401 | ||
| create_product, | ||
| delete_product, |
There was a problem hiding this comment.
Нарушение критерия M2. Импортированная функция delete_product ни разу не используется в этом модуле.
Минус 0.5 балла
| # TODO: реализуйте функцию | ||
| return False | ||
| parts = line.split() | ||
| if not parts: |
There was a problem hiding this comment.
Для разбора команд следовало использовать конструкцию match-case, т.к. эта конструкция идеально подходит для сопоставления шаблонов. Из-за использования ветвления получилось большое количество дублирования логики разбора команд (проверка количества слов + применение срезов). Это нарушение критерия S1. Минус балл
| command = parts[0] | ||
| if command == "help": | ||
| show_help() | ||
| elif command == "exit": |
There was a problem hiding this comment.
Нарушение критерия T1. Минус 0.25 балла
| return False | ||
| elif command == "show": | ||
| print(get_storage_str_representation(storage)) | ||
| elif command == "read" or command == "delete": |
There was a problem hiding this comment.
Вы используете один и тот же обработчик для команд read и delete. При этом в самом обработчике вы вызываете только функцию read_product, а команда delete_product нигде не выполняется. Отсюда ошибка, т.к. ваша CLI не умеет удалять продукты из БД.
Следовало разделить обработку этих команд.
| return True | ||
| name = " ".join(parts[1:-2]) | ||
| price = Decimal(parts[-2]) | ||
| quantity = int(parts[-1]) |
There was a problem hiding this comment.
Нарушение критерия S3. Минус балл
| updated = update_product(storage, product_id, (name, price, quantity)) | ||
| print_result(updated) | ||
| else: | ||
| print(f"'{line}' is not a command") |
There was a problem hiding this comment.
Можно было получить repr представление, используя возможности форматирования f-строк:
| print(f"'{line}' is not a command") | |
| print(f"{line!r} is not a command") |
| header_cells = [f"{header:<{widths[i]}}" for i, header in enumerate(TABLE_HEADERS)] | ||
| header_line = "| " + " | ".join(header_cells) + " |" | ||
| separator_cells = ["-" * (widths[i] + 2) for i in range(len(TABLE_HEADERS))] | ||
| separator_line = "|" + "|".join(separator_cells) + "|" |
There was a problem hiding this comment.
Нарушение критерия T8. Минус 0.25 балла
| # TODO: при необходимости добавьте свои вспомогательные функции | ||
|
|
||
|
|
||
| def get_storage_str_representation(storage: list[Product]) -> str: |
There was a problem hiding this comment.
Функция нарушает принцип единой ответственности, т.к. отвечает и за подсчет максимальной ширины столбцов, и за форматирование строк. Это нарушает критерий S2. Минус балл
No description provided.