Closed cmyr closed 7 months ago
Now that I think about it we were already enforcing that the lib contains only a dict, just previously it would have been simpler to change this and also accept other plist data types. So no changes in our behaviour. (And we're about to release a new minor anyway, so a breaking change wouldn't be a big deal anyway)
I'm curious how you figured this out? - I played with it briefly and found it surprisingly opaque what the problem was. Admittedly I'm not over-familiar with norad or quick-xml but ... I'd still have expected more clues than I got.
Something in quick-xml's internals changed in this version in a way that broke our admittedly hacky plist parsing.
Although the journey was long, the fix was easy: we need to explicitly handle the 'dict' key as a field when we are deserializing the lib.
This also includes a few more explicit 'skip_serializing_if' annotations, since once we were working again we were writing out empty strings in places where we hadn't been on the previous quick-xml.
One note on this impl that just occurs to me: it is possible now that deserialization will fail if the section of some object contains something other than a dict; we can discuss in review whether or not this is a problem.