|
| 1 | +**v0.47.0** |
| 2 | +* Changed the public API for `PropertiesStore` to improve the quality of its code. The properties type is now mandatory, and the intelligence field (and the related enum) has been removed. |
| 3 | + * Additionally, the `toBytes` and `__bytes__` methods will both generate based on the contents of this class, allowing for new properties to be created and for existing properties to be modified or removed if the class is set to writable on creation. |
| 4 | +* Added new method `Named.getPropNameByStreamID`. This method takes the ID of a stream (or property stream entry) and returns the property name (as a tuple of the property name/ID and the property set) that is stored there. Returns `None` if the stream is not used to store a named property. This name can be directly used (if it is not `None`) to get the `NamedPropertyBase` instance associated. This method is most useful for people looking at the raw data of a stream and trying to figure out what named property it refers to. |
| 5 | +* Fixed mistake in struct definitions that caused a float to require 8 bytes to unpack. |
| 6 | +* Added tests for `extract_msg.properties.props`. |
| 7 | +* Added basic tests for `extract_msg.attachments`. |
| 8 | +* Added validation tests for the `enums` and `constants` submodule. |
| 9 | +* Removed unneeded structs. |
| 10 | +* Fixed an issue where `PtypGuid` was being parsed by the wrong property type. Despite having a fixed size, it is still a variable length property. |
| 11 | +* Fixed *all* of the setters not working. I didn't know they needed to use the same name as the getter, and I *swear* they were working at some point with the current setup. Some sources online suggested the original form should work, which is even stranger. |
| 12 | +* Unified all line endings to LF instead of a mix of CRLF and LF. |
| 13 | +* Changed enums `BCTextFormat` and `BCLabelFormat` to `IntFlag` enums. The values that exist are for the individual flags and not the groups of flags. |
| 14 | +* Made `FieldInfo` writable, however it can no longer be directly converted to bytes since it requires additional information outside of itself to convert to bytes. It still retains a `toBytes` method, however it requires an argument for the additional data. |
| 15 | +* Fixed `UnsupportedAttachment` inverting the `skipNotImplemented` keyword argument. |
| 16 | +* Fixed `DMPaperSize` not being a subclass of `Enum`. |
| 17 | +* Extended values for `DMPaperSize`. |
| 18 | +* Removed unneeded structs. |
| 19 | +* Fixed exports for `extract_msg.constants.st`. |
| 20 | +* Updated various parts of the documentation to improve it and make it more consistent. |
| 21 | +* Fixed `Recipient.existsTypedProperty` and `AttachmentBase.existsTypedProperty` having the wrong return type. |
| 22 | +* Removed "TODO" markers on `OleStreamStruct` and finalized it to only handle the OLEStream for embedded objects. |
| 23 | +* Fixed type annotations for `extract_msg.utils.fromTimeStamp`. |
| 24 | +* Added new function `extract_msg.properties.prop.createNewProp`. This function allows a new property to be created with default data based on the name. The name MUST be an 8 character hex string, the first 4 characters being the value for the property ID and the second 4 being the value for the type. |
| 25 | +* Fixed `VariableLengthProp.reservedFlags` returning the wrong type. |
| 26 | +* Adjusted many of the property structs to make it easier to use them for packing. |
| 27 | +* Renamed some of the property structs to be more informative. |
| 28 | +* Fixed `ServerID` using the wrong struct (would have thrown an exception for not having enough data). |
| 29 | +* Unified signing for integer properties. All integer properties are considered unsigned by default when read directly from the MSG file, however specific property accessors may convert to signed if the property is specifically intended to be so. This does not necessarily include properties that are *stored* as integers but have a value that is not an integer, like `PtypCurrency`. |
| 30 | +* Changed `extract_msg.constants.NULL_DATE` to be a subclass of `datetime.datetime` instead of just a fixed value. Functions that return null dates may end up returning distinct versions of `NullDate` (the newly created subclass), however all instances of `NullDate` will register as being equal to each other. Existing equality comparisons to the `NULL_DATE` constant will all function as intended, however `is` checks may fail for some null dates. |
| 31 | +* Changed currency type to return a `Decimal` instance for higher precision. |
| 32 | +* Made `FixedLengthProp` and `VariableLengthProp` writable. Only the property `flags` from `PropBase` is writable. This also includes the ability to convert them to bytes based on their value. |
| 33 | +* Fixed many issues in `VariableLengthProp` regarding it's calculation of sizes. |
| 34 | +* Removed `hasLen` function. |
| 35 | +* Changed style to remove space between variable name and colon that separates the type. |
| 36 | +* Corrected `InvaildPropertyIdError` to `InvalidPropertyIdError`. |
| 37 | +* Updated to `olefile` version 0.47. |
| 38 | +* Updated `RTFDE` minimum version to 0.1.1. |
| 39 | +* Changed dependency named for `compressed-rtf` to remove minor typo (it *should* forward to the correct place regardless, but just to be safe). |
| 40 | +* Fixed issues with implementation of `OleWriter` when it comes to large sets of data. Most issues would fail silently and only be noticeable when trying to open the file. If your file is less than 2 GB, you would likely not have notices and issues at all. This includes adding a new exception that is throw from the `write` method, `TooManySectorsError`. |
| 41 | +* Fixed some issues with `OleWriter` that could cause entries to end up partially added if the data was an issue. |
| 42 | + |
1 | 43 | **v0.46.2** |
2 | 44 | * Adjusted typing information on regular expressions. They were using a subscript that was added in Python 3.9 (apparently that is something the type checker doesn't check for), which made the module incompatible with Python 3.8. If you are using Python 3.9 or higher a version check will switch to the more specific typing. |
3 | 45 |
|
|
0 commit comments