Pull to refresh

Comments 6

Хороша работа.
Но:
1. "TAR (а так же его версии..." - это не версии. Архив - tar, gzip, bzip[2], xz, zstd - это компрессоры (поверх архива).
2. .enswith('...') - не очень хорошая идея. Не кроссплатформенная. На Windows.TaR.GZ сломается.
3. Угадывать формат архива по расширению - тоже нехорошая идея. Погуглите mimetypes. Оно вам раскопает, что .tgz и tar.gz - это одно и то же (правда с tar.<compressed> пойдут нюансы :-).

Спасибо за советы, а по поводу Windows.TaR.GZ - На винде проверял, не ломается. а по mimetypes - очень хорошая идея, мне лично очень поможет :)

На винде проверял, не ломается

Linux, macOS - сломается.

Да, это я знаю, и буду чинить. Сначала разберусь с .endswith((".gz", ".bz2", ".xz")) а потом уже займусь этим

Да ладно, шучу. На самом деле я бы рекомендовал просмотреть код. У меня там сразу под капотом всё приводится к нижнему регистру через pathlib:ext = "".join(archive.suffixes).lower()Так что за регистр на Linux/macOS можно не переживать, он не сломается)

Прогоните фаззинг тесты и сделайте возможность проверять на zip-бомбы.

И что-то не очень понимаю назначения библиотеки. Вы НЕ написали библиотеку "для архивов", вы написали собственную обертку над библиотекой py7zr и встроенными zipfile и tarfile. Не вижу requirements.txt для установки внешних зависимостей, не вижу ни манифестов ни упоминаний с какой версии python это всё может запускаться и тп. Тестов кстати тоже нет, так что даже непонятно что вы там на рязани запускали.

По поводу "обертки" - это паттерн "Фасад", его задача как раз и заключается в том, чтобы спрятать под капот разношерстные низкоуровневые инструменты и дать разработчику единый удобный API. Писать алгоритмы сжатия с нуля на чистом Python никто в здравом уме не будет

Sign up to leave a comment.

Articles