5 Version 2.4 (2011-11-05)
6 ------------------------
10 * USE_DATETIME: survive bad values from RAR
11 * Fix bug in corrupt unicode filename handling
12 * dumprar: make unicode chars work with both pipe and console
14 Version 2.3 (2011-07-03)
15 ------------------------
19 * Support .seek() method on file streams. (Kristian Larsson)
20 * Support .readinto() method on file streams. Optimized implementation
21 is available on Python 2.6+ where ``memoryview`` is available.
22 * Support file comments - ``RarInfo.comment`` contains decompressed data if available.
23 * File objects returned by ``RarFile.open()`` are ``io.RawIOBase``-compatible.
24 They can further wrapped with ``io.BufferedReader` and ``io.TextIOWrapper``.
25 * Now .getinfo() uses dict lookup instead of sequential scan when
26 searching archive entry. This speeds up prococessing for archives that
28 * Option ``rarfile.UNICODE_COMMENTS`` to decode both archive and file comments to unicode.
29 It uses ``TRY_ENCODINGS`` for list of encodings to try. If off, comments are
30 left as byte strings. Default: 0
31 * Option ``rarfile.PATH_SEP`` to change path separator. Default: ``r'\'``,
32 set ``rarfile.PATH_SEP='/'`` to be compatibe with zipfile.
33 * Option ``rarfile.USE_DATETIME`` to convert timestamps to datetime objects.
34 Default: 0, timestamps are tuples.
35 * Option ``rarfile.TRY_ENCODINGS`` to allow tuning attempted encoding list.
36 * Reorder RarInfo fiels to better show zipfile-compatible fields.
37 * Standard regtests to make sure various features work
41 * Drop ``RarInfo.unicode_filename``, plain ``RarInfo.filename`` is already unicode since 2.0.
42 * .read(-1) reads now until EOF. Previously it returned empty buffer.
46 * Make encrypted headers work with Python 3.x bytes() and with old 2.x 'sha' module.
47 * Simplify ``subprocess.Popen()`` usage when launching ``unrar``. Previously
48 it tried to optimize and work around OS/Python bugs, but this is not
50 * Use temp rar file hack on multi-volume archives too.
51 * Always .wait() on unrar, to avoid zombies
52 * Convert struct.error to BadRarFile
53 * Plug some fd leaks. Affected: Jython, PyPy.
54 * Broken archives are handled more robustly.
56 Version 2.2 (2010-08-19)
57 ------------------------
61 * Relaxed volume naming. Now it just calculates new volume name by finding number
62 in old one and increasing it, without any expectations what that number should be.
63 * Files with 4G of compressed data in one colume were handled wrong. Fix.
64 * DOS timestamp seconds need to be multiplied with 2.
65 * Correct EXTTIME parsing.
69 * Compressed size is per-volume, sum them together, so that user sees complete
70 compressed size for files split over several volumes.
71 * dumprar: Show unknown bits.
72 * Use ``struct.Struct()`` to cache unpack formats.
73 * Support missing ``os.devnull``. (Python 2.3)
75 Version 2.1 (2010-07-31)
76 ------------------------
80 * Minimal implmentation for .extract(), .extractall(), .testrar().
81 They are simple shortcuts to ``unrar`` invocation.
82 * Accept RarInfo object where filename is expected.
83 * Include dumprar.py in .tgz. It can be used to visualize RAR structure
85 * Support for encrypted file headers.
89 * Don't read past ENDARC, there could be non-RAR data there.
90 * RAR 2.x: It does not write ENDARC, but our volume code expected it. Fix that.
91 * RAR 2.x: Support more than 200 old-style volumes.
95 * Load comment only when requested.
96 * Cleanup of internal config variables. They should have now final names.
97 * .open(): Add mode=r argument to match zipfile.
98 * Doc and comments cleanup, minimize duplication.
99 * Common wrappers for both compressed and uncompressed files,
100 now .open() also does CRC-checking.
102 Version 2.0 (2010-04-29)
103 ------------------------
107 * Python 3 support. Still works with 2.x.
108 * Parses extended time fields. (.mtime, .ctime, .atime)
109 * .open() method. This makes possible to process large
110 entries that do not fit into memory.
111 * Supports password-protected archives.
112 * Supports archive comments.
116 * Uses subprocess module to launch unrar.
117 * .filename is always Unicode string, .unicode_filename is now deprecated.
118 * .CRC is unsigned again, as python3 crc32() is unsigned.
120 Version 1.1 (2008-08-31)
121 ------------------------
125 * Replace os.tempnam() with tempfile.mkstemp(). (Jason Moiron)
126 * Fix infinite loop in _extract_hack on unexpected EOF
127 * RarInfo.CRC is now signed value to match crc32()
128 * RarFile.read() now checks file crc
133 * throw proper exceptions (subclasses of rarfile.Error)
134 * RarInfo has fields pre-initialized, so they appear in help()
135 * rename RarInfo.data to RarInfo.header_data
136 * dont use "print" when header parsing fails
137 * use try/finally to delete temp rar
139 Version 1.0 (2005-08-08)
140 ------------------------