Проектът реализира алгоритъма за компресия LZW, като се полза 64K или 16MB речник. При запълване речникът се изпразва и пълни наново.
Проектът е разработен от Светлин Анков
Реализира компресията. Изпълнява се чрез извикване като метод или от command prompt-а. При извикване без параметри ще даде хелп.
- process_command_line(arguments, automated = False) – Обработва аргументите от CMD
- compress(file_in, file_out, buffer_size, large_dict) – Инициализира компресията
- compress_more(f, o, buffer_size, dict_size_large, flen, read_overall, t) – Реализира самата компресия. Работи докато речника се запълни или входния буфер се запълни. Викан многократно от compress докато файлът бъде прочетен. При всяко извикване речникът се прави наново.
- output_code_for_pattern_to_disc(buffer_writer, position, o) – Записва output буфера на диска.
- output_code_for_pattern(buffer_writer, position, code, large_dict) – Записва код в текущия буфер.
Реализира декомпресията. Изпълнява се чрез извикване като метод или от command prompt-а. При извикване без параметри ще даде хелп.
- process_command_line(arguments, automated = False) – Обработва аргументите от CMD
- decompress(file_in, file_out, buffer_size, large_dict) – Инициализира декомпресията. Проверява дали файлът започва с магическия код, ако не хвърля ArchiveError.
- decompress_more(f, o, buffer_size, dict_size_large, flen, read_overall, t) – Реализира самата декомпресия. Работи докато няма повече за четене или е прочетена команда „FLUSH DICTIONARY“. Викан многократно от decompress докато файлът бъде прочетен. При всяко извикване речникът се прави наново.
- def get_input_code(f, large_dict) – Прочита един (дву или три байтов) код.
- def output_pattern_for_code(o, pattern) – За момента просто записва шаблон на диска.
Съдържа константи ползвани при декомпресията и компресията.
Сравнява файлове байт по байт. Използва се от Unit тестовете.
Тестове
- test_compression_basic – Тества със случайни изрязъци от wiki.xml-а. Общо взето занимава се с малка файлове
- test_compression_additional – Допълнителен тест върху файлове от различни типове.
- test_compression_wiki – Тест за компресия на BG WikiDUMP, като ползва най-тежките настройки. Освен Sanity Check, проверява дали е достигнато изисканото ниво на компресия (30%)
Данните за тестовете
Тази докемунтация