Significant effort was put in to supporting enumerated strings and string lists in a "loose" way (thereby keeping forward compatibility), by providing the Unknown case, where any string value that does not confirm to the expectations of the enumeration are still provided to the user.
This issue centers around the fact that the same loose parsing does not apply to other types, such as DateTime, f64, DecimalIntegerRange, etc. This means that a playlist author could provide a value for a property yet the library will indicate that none exists. This at the very least hides validation issues (and would make any application of this library as a validator very difficult), but worse, where there are bugs in parsing (such as #18) it could lead to valid values being hidden as None from the user.
The counterpoint is that we don't want to make the public API cumbersome to use, by putting optional typing everywhere, so care should be taken to find a solution that enhances visibility without complicating any integrations.
Significant effort was put in to supporting enumerated strings and string lists in a "loose" way (thereby keeping forward compatibility), by providing the
Unknowncase, where any string value that does not confirm to the expectations of the enumeration are still provided to the user.This issue centers around the fact that the same loose parsing does not apply to other types, such as
DateTime,f64,DecimalIntegerRange, etc. This means that a playlist author could provide a value for a property yet the library will indicate that none exists. This at the very least hides validation issues (and would make any application of this library as a validator very difficult), but worse, where there are bugs in parsing (such as #18) it could lead to valid values being hidden asNonefrom the user.The counterpoint is that we don't want to make the public API cumbersome to use, by putting optional typing everywhere, so care should be taken to find a solution that enhances visibility without complicating any integrations.