| 1 | .. -*-Mode: rst; -*- |
|---|
| 2 | |
|---|
| 3 | ======= |
|---|
| 4 | 0.8.1 |
|---|
| 5 | ======= |
|---|
| 6 | |
|---|
| 7 | * IMAPClient wasn't installing on Windows due to an extra trailing |
|---|
| 8 | slash in MANIFEST.in (#102). This is a bug in distutils. |
|---|
| 9 | * MANIFEST.in was fixed so that the main documentation index file |
|---|
| 10 | is included the source distribution. |
|---|
| 11 | * distribute_setup.py was updated to the 0.6.24 version. |
|---|
| 12 | * This release also contains some small documentation fixes. |
|---|
| 13 | |
|---|
| 14 | ===== |
|---|
| 15 | 0.8 |
|---|
| 16 | ===== |
|---|
| 17 | |
|---|
| 18 | OAUTH Support (#54) [NEW] |
|---|
| 19 | ------------------------- |
|---|
| 20 | OAUTH authentication is now supported using the oauth_login |
|---|
| 21 | method. This requires the 3rd party oauth2 package is |
|---|
| 22 | installed. Thanks to Johannes Heckel for contributing the patch to |
|---|
| 23 | this. |
|---|
| 24 | |
|---|
| 25 | IDLE Support (#50) [NEW] |
|---|
| 26 | ------------------------ |
|---|
| 27 | The IDLE extension is now supported through the new idle(), |
|---|
| 28 | idle_check() and idle_done() methods. See the example in |
|---|
| 29 | imapclient/examples/idle_example.py. |
|---|
| 30 | |
|---|
| 31 | NOOP Support (#74) [NEW] |
|---|
| 32 | ------------------------ |
|---|
| 33 | The NOOP command is now supported. It returns parsed untagged server |
|---|
| 34 | responses in the same format as idle_check() and idle_done(). |
|---|
| 35 | |
|---|
| 36 | Sphinx Based Docs (#5) [NEW] |
|---|
| 37 | ---------------------------- |
|---|
| 38 | Full documentation is now available under doc/html in the source |
|---|
| 39 | distribution and at http://imapclient.readthedocs.org/ online. |
|---|
| 40 | |
|---|
| 41 | Added rename_folder (#77) [NEW] |
|---|
| 42 | -------------------------------- |
|---|
| 43 | Renaming of folders was an obvious omission! |
|---|
| 44 | |
|---|
| 45 | Minor Features |
|---|
| 46 | -------------- |
|---|
| 47 | * interact.py can now read livetest.py INI files (#66) |
|---|
| 48 | * interact.py can now embed shells from ipython 0.10 and 0.11 (#98) |
|---|
| 49 | * interact.py and livetest.py are now inside the imapclient package so |
|---|
| 50 | they can be used even when IMAClient has been installed from PyPI |
|---|
| 51 | (#82) |
|---|
| 52 | * Added "debug" propety and setting of a log file (#90) |
|---|
| 53 | * "normalise_times" attribute allows caller to select whether |
|---|
| 54 | datetimes returned by fetch() are native or not (#96) (Thanks Andrew |
|---|
| 55 | Scheller) |
|---|
| 56 | * Added imapclient.version_info - a tuple that contains the IMAPClient |
|---|
| 57 | version number broken down into it's parts. |
|---|
| 58 | |
|---|
| 59 | Small Bug Fixes |
|---|
| 60 | --------------- |
|---|
| 61 | * getacl() was using wrong lexing class (#85) (Thanks josephhh) |
|---|
| 62 | * Removed special handling for response tuples without whitespace |
|---|
| 63 | between them. Post-process BODY/BODYSTRUCTURE responses |
|---|
| 64 | instead. This should not affect the external API. (#91) (Thanks |
|---|
| 65 | daishi) |
|---|
| 66 | * Fix incorrect msg_id for UID fetch when use_uid is False (#99) |
|---|
| 67 | |
|---|
| 68 | ============= |
|---|
| 69 | Version 0.7 |
|---|
| 70 | ============= |
|---|
| 71 | |
|---|
| 72 | BODY and BODYSTRUCTURE parsing fixes (#58) [API CHANGE] |
|---|
| 73 | ------------------------------------------------------- |
|---|
| 74 | The response values for BODY and BODYSTRUCTURE responses may include a |
|---|
| 75 | sequence of tuples which are not separated by whitespace. These should |
|---|
| 76 | be treated as a single item (a list of multiple arbitrarily nested |
|---|
| 77 | tuples) but IMAPClient was treating them as separate items. IMAPClient |
|---|
| 78 | now returns these tuples in a list to allow for consistent parsing. |
|---|
| 79 | |
|---|
| 80 | A BODYSTRUCTURE response for a multipart email with 2 parts would have |
|---|
| 81 | previously looked something like this:: |
|---|
| 82 | |
|---|
| 83 | (('text', 'html', ('charset', 'us-ascii'), None, None, 'quoted-printable', 55, 3), |
|---|
| 84 | ('text', 'plain', ('charset', 'us-ascii'), None, None, '7bit', 26, 1), |
|---|
| 85 | 'mixed', ('boundary', '===============1534046211==')) |
|---|
| 86 | |
|---|
| 87 | The response is now returned like this:: |
|---|
| 88 | |
|---|
| 89 | ([ |
|---|
| 90 | ('text', 'html', ('charset', 'us-ascii'), None, None, 'quoted-printable', 55, 3), |
|---|
| 91 | ('text', 'plain', ('charset', 'us-ascii'), None, None, '7bit', 26, 1) |
|---|
| 92 | ], |
|---|
| 93 | 'mixed', ('boundary', '===============1534046211==')) |
|---|
| 94 | |
|---|
| 95 | The behaviour for single part messages is unchanged. In this case the |
|---|
| 96 | first element of the tuple is a string specifying the major content |
|---|
| 97 | type of the message (eg "text"). |
|---|
| 98 | |
|---|
| 99 | An is_multipart boolean property now exists on BODY and BODYSTRUCTURE |
|---|
| 100 | responses to allow the caller to easily determine whether the response |
|---|
| 101 | is for a multipart message. |
|---|
| 102 | |
|---|
| 103 | Code that expects the previous response handling behaviour needs to be |
|---|
| 104 | updated. |
|---|
| 105 | |
|---|
| 106 | Live tests converted to use unittest2 (#4) |
|---|
| 107 | ------------------------------------------ |
|---|
| 108 | livetest.py now uses the unittest2 package to run the tests. This |
|---|
| 109 | provides much more flexibility that the custom approach that was used |
|---|
| 110 | before. Dependencies between tests are gone - each test uses a fresh |
|---|
| 111 | IMAP connection and is preceeded by the same setup. |
|---|
| 112 | |
|---|
| 113 | unittest2.main() is used to provide a number of useful command line |
|---|
| 114 | options and the ability to run a subset of tests. |
|---|
| 115 | |
|---|
| 116 | IMAP account parameters are now read using a configuration file |
|---|
| 117 | instead of command line arguments. See livetest-sample.ini for an |
|---|
| 118 | example. |
|---|
| 119 | |
|---|
| 120 | Added NAMESPACE support (#63) [API CHANGE] |
|---|
| 121 | ------------------------------------------ |
|---|
| 122 | namespace() method added and get_folder_delimiter() has been |
|---|
| 123 | deprecated. |
|---|
| 124 | |
|---|
| 125 | Added support for FETCH modifiers (#62) [NEW] |
|---|
| 126 | --------------------------------------------- |
|---|
| 127 | The fetch method now takes optional modifiers as the last |
|---|
| 128 | argument. These are required for extensions such as RFC 4551 |
|---|
| 129 | (conditional store). Thanks to Thomas Jost for the patch. |
|---|
| 130 | |
|---|
| 131 | =============== |
|---|
| 132 | Version 0.6.2 |
|---|
| 133 | =============== |
|---|
| 134 | |
|---|
| 135 | Square brackets in responses now parsed correctly (#55) |
|---|
| 136 | ------------------------------------------------------- |
|---|
| 137 | This fixes response handling for FETCH items such as |
|---|
| 138 | ``BODY[HEADER.FIELDS (from subject)]``. |
|---|
| 139 | |
|---|
| 140 | Example moved (#56) |
|---|
| 141 | ------------------- |
|---|
| 142 | The example has been moved to imapclient/examples directory and is |
|---|
| 143 | included when the IMAPClient is installed from PyPI. |
|---|
| 144 | |
|---|
| 145 | Distribute (#57) |
|---|
| 146 | ---------------- |
|---|
| 147 | The project is now packaged using Distribute instead of |
|---|
| 148 | setuptools. There should be no real functional change. |
|---|
| 149 | |
|---|
| 150 | =============== |
|---|
| 151 | Version 0.6.1 |
|---|
| 152 | =============== |
|---|
| 153 | |
|---|
| 154 | Python SSL bug patch |
|---|
| 155 | -------------------- |
|---|
| 156 | Automatically patch a bug in imaplib which can cause hangs when using |
|---|
| 157 | SSL (Python Issue 5949). The patch is only applied when the running |
|---|
| 158 | Python version is known to be affected by the problem. |
|---|
| 159 | |
|---|
| 160 | Doc update |
|---|
| 161 | ---------- |
|---|
| 162 | Updated the README to better reflect the current state of the project. |
|---|
| 163 | |
|---|
| 164 | ============= |
|---|
| 165 | Version 0.6 |
|---|
| 166 | ============= |
|---|
| 167 | |
|---|
| 168 | New response parser (#1, #45) |
|---|
| 169 | ----------------------------- |
|---|
| 170 | Command response lexing and parsing code rewritten from stratch to |
|---|
| 171 | deal with various bugs that surfaced when dealing with more complex |
|---|
| 172 | responses (eg. BODYSTRUCTURE and ENVELOPE). This change also fixes |
|---|
| 173 | various problems when interacting with Gmail and MS Exchange. |
|---|
| 174 | |
|---|
| 175 | XLIST extension support (#25) [NEW] |
|---|
| 176 | ----------------------------------- |
|---|
| 177 | Where the server supports it, xlist_folders() will return a mapping of |
|---|
| 178 | various common folder names to the actual server folder names. Gmail's |
|---|
| 179 | IMAP server supports this. |
|---|
| 180 | |
|---|
| 181 | Added COPY command support (#36) [NEW] |
|---|
| 182 | -------------------------------------- |
|---|
| 183 | New copy() method. |
|---|
| 184 | |
|---|
| 185 | Added interact.py [NEW] |
|---|
| 186 | ----------------------- |
|---|
| 187 | A script for interactive IMAPClient sessions. Useful for debugging and |
|---|
| 188 | exploration. Uses IPython if installed. |
|---|
| 189 | |
|---|
| 190 | Full SELECT response (#24) [API CHANGE] |
|---|
| 191 | --------------------------------------- |
|---|
| 192 | select_folder() now returns a dictionary with the full (parsed) SELECT |
|---|
| 193 | command response instead of just the message count. |
|---|
| 194 | |
|---|
| 195 | Full list responses (#24) [API CHANGE] |
|---|
| 196 | -------------------------------------- |
|---|
| 197 | The return value from list_folders(), list_sub_folders() and |
|---|
| 198 | xlist_folders() now include the IMAP folder flags and delimiter. |
|---|
| 199 | |
|---|
| 200 | Folder name character encoding (#21) [API CHANGE] |
|---|
| 201 | ------------------------------------------------- |
|---|
| 202 | Bytes that are greater than 0x7f in folder names are will cause an |
|---|
| 203 | exception when passed to methods that accept folder name arguments |
|---|
| 204 | because there is no unambigous way to handle these. Callers should |
|---|
| 205 | encode such folder names to unicode objects first. |
|---|
| 206 | |
|---|
| 207 | Folder names are now always returned as unicode objects. |
|---|
| 208 | |
|---|
| 209 | Message sequence number now always returned in FETCH responses |
|---|
| 210 | -------------------------------------------------------------- |
|---|
| 211 | Fetch responses now include a "SEQ" element which gives the message |
|---|
| 212 | (non-UID) sequence number. This allows for easy mapping between UIDs |
|---|
| 213 | and standard sequence IDs. |
|---|
| 214 | |
|---|
| 215 | Folder name handling fixes (#28, #42) |
|---|
| 216 | ------------------------------------- |
|---|
| 217 | Various folder name handling bugs fixed. |
|---|
| 218 | |
|---|
| 219 | |
|---|
| 220 | =============== |
|---|
| 221 | Version 0.5.2 |
|---|
| 222 | =============== |
|---|
| 223 | |
|---|
| 224 | Folder name quoting and escaping fixes (#28) |
|---|
| 225 | -------------------------------------------- |
|---|
| 226 | Correctly handle double quotes and backslashes in folder names when |
|---|
| 227 | parsing LIST and LSUB responses. |
|---|
| 228 | |
|---|
| 229 | Fixed fetch literal handling (#33) |
|---|
| 230 | ---------------------------------- |
|---|
| 231 | Fixed problem with parsing responses where a literal followed another |
|---|
| 232 | literal. |
|---|
| 233 | |
|---|
| 234 | |
|---|
| 235 | =============== |
|---|
| 236 | Version 0.5.1 |
|---|
| 237 | =============== |
|---|
| 238 | |
|---|
| 239 | License change |
|---|
| 240 | -------------- |
|---|
| 241 | Changed license from GPL to new BSD. |
|---|
| 242 | |
|---|
| 243 | ============= |
|---|
| 244 | Version 0.5 |
|---|
| 245 | ============= |
|---|
| 246 | |
|---|
| 247 | SSL support |
|---|
| 248 | ----------- |
|---|
| 249 | Support for SSL based connections by passing ssl=True when |
|---|
| 250 | constructing an IMAPClient instance. |
|---|
| 251 | |
|---|
| 252 | Transparent folder encoding |
|---|
| 253 | --------------------------- |
|---|
| 254 | Folder names are now encoded and decoded transparently if required |
|---|
| 255 | (using modified UTF-7). This means that any methods that return folder |
|---|
| 256 | names may return unicode objects as well as normal strings [API |
|---|
| 257 | CHANGE]. Additionally, any method that takes a folder name now accepts |
|---|
| 258 | unicode object too. Use the folder_encode attribute to control whether |
|---|
| 259 | encode/decoding is performed. |
|---|
| 260 | |
|---|
| 261 | Unquoted folder name handling fix |
|---|
| 262 | --------------------------------- |
|---|
| 263 | Unquoted folder names in server responses are now handled |
|---|
| 264 | correctly. Thanks to Neil Martinsen-Burrell for reporting this bug. |
|---|
| 265 | |
|---|
| 266 | Fixed handling of unusual characters in folder names |
|---|
| 267 | ---------------------------------------------------- |
|---|
| 268 | Fixed a bug with handling of unusual characters in folder names. |
|---|
| 269 | |
|---|
| 270 | Timezone handling [API CHANGE] |
|---|
| 271 | ------------------------------ |
|---|
| 272 | Timezones are now handled correctly for datetimes passed as input and for |
|---|
| 273 | server responses. This fixes a number of bugs with timezones. Returned |
|---|
| 274 | datetimes are always in the client's local timezone. |
|---|
| 275 | |
|---|
| 276 | More unit tests |
|---|
| 277 | --------------- |
|---|
| 278 | Many more unit tests added, some using Michael Foord's excellent |
|---|
| 279 | mock.py. (http://www.voidspace.org.uk/python/mock/) |
|---|
| 280 | |
|---|
| 281 | |
|---|