-
Notifications
You must be signed in to change notification settings - Fork 56
Expand file tree
/
Copy pathchecksum.py
More file actions
47 lines (36 loc) · 2.83 KB
/
checksum.py
File metadata and controls
47 lines (36 loc) · 2.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import json
import hashlib
from typing import List
"""
В этом модуле обитают функции, необходимые для автоматизированной проверки результатов ваших трудов.
"""
def calculate_checksum(row_numbers: List[int]) -> str:
"""
Вычисляет md5 хеш от списка целочисленных значений.
ВНИМАНИЕ, ВАЖНО! Чтобы сумма получилась корректной, считать, что первая строка с данными csv-файла имеет номер 0
Другими словами: В исходном csv 1я строка - заголовки столбцов, 2я и остальные - данные.
Соответственно, считаем что у 2 строки файла номер 0, у 3й - номер 1 и так далее.
Надеюсь, я расписал это максимально подробно.
Хотя что-то мне подсказывает, что обязательно найдется человек, у которого с этим возникнут проблемы.
Которому я отвечу, что все написано в докстринге ¯\_(ツ)_/¯
:param row_numbers: список целочисленных номеров строк csv-файла, на которых были найдены ошибки валидации
:return: md5 хеш для проверки через github action
"""
row_numbers.sort()
return hashlib.md5(json.dumps(row_numbers).encode('utf-8')).hexdigest()
def serialize_result(variant: int, checksum: str) -> None:
"""
Метод для сериализации результатов лабораторной пишите сами.
Вам нужно заполнить данными - номером варианта и контрольной суммой - файл, лежащий в корне репозитория.
Файл называется, очевидно, result.json.
ВНИМАНИЕ, ВАЖНО! На json натравлен github action, который проверяет корректность выполнения лабораторной.
Так что не перемещайте, не переименовывайте и не изменяйте его структуру, если планируете успешно сдать лабу.
:param variant: номер вашего варианта
:param checksum: контрольная сумма, вычисленная через calculate_checksum()
"""
result_data = {
'variant': str(variant),
'checksum': checksum
}
with open('result.json', 'w', encoding='utf-8') as file:
json.dump(result_data, file, ensure_ascii=False, indent=4)