Zen of Python
Фотография
нажмите — покажем
нажмите — покажем
Одинаковые файлы, разные ZIP: почему меняется хеш
Два архива распаковываются в одинаковые файлы, но их SHA-256 различаются. Причиной могут быть даты записей, их порядок, права или настройки сжатия.
В разборе воспроизводимых архивов используют поддержку SOURCE_DATE_EPOCH в Python 3.14. При записи через writestr() с именем файла переменная позволяет задать стабильную дату вместо текущей.
Дату лучше брать из неизменяемого события сборки, например коммита. Отдельно нужно сортировать имена, фиксировать содержимое и параметры сжатия. Явно переданный ZipInfo требует своей политики метаданных.
Проверка должна сравнивать байты двух сборок, а не только распакованные файлы. Для строгой воспроизводимости закрепите и версии инструментов: одинаковые исходники не гарантируют одинаковое сжатие в любой среде.
#python #сборка
🔥1
4 · 783 ·