Positional arguments that are strings are checked differently depending on the class of the corresponding property being a string or not. This should be changed because it makes the parsing dependent on the state of the object and assumptions about the interpretation of the classes of object properties.
This was implemented for a reason, but reveals a fundamental ambiguity about being able to tell if a positional argument is a property name (keyword) or a property value (positional argument). If keywords are required to start with '-' then this would disappear: no property name is permitted to start with '-'. This may contradict current PACE conventions about the form of function arguments.
Positional arguments that are strings are checked differently depending on the class of the corresponding property being a string or not. This should be changed because it makes the parsing dependent on the state of the object and assumptions about the interpretation of the classes of object properties.
This was implemented for a reason, but reveals a fundamental ambiguity about being able to tell if a positional argument is a property name (keyword) or a property value (positional argument). If keywords are required to start with '-' then this would disappear: no property name is permitted to start with '-'. This may contradict current PACE conventions about the form of function arguments.