[Python-Dev] Standardize error message for non-pickleable types
On 2018-10-30 08:12, Serhiy Storchaka wrote:
> 29.10.18 23:17, MRAB ????:
>> 1. If you're pickling, then saying "pickle" is more helpful.
>> 2. In English the usual long form is "cannot". Error messages tend to
>> avoid abbreviations, and also tend to have lowercase after the colon, e.g.:
>> ??? "ZeroDivisionError: division by zero"
>> ??? "ValueError: invalid literal for int() with base 10: 'foo'"
>> 3. If it's failing on an object (singular), then it's clearer to say
>> 4. Articles tend to be omitted.
>> 5. Error messages tend to have quotes around the type name.
>> Therefore, my preference is for:
>> ??? "cannot pickle 'XXX' object"
> Thank you Matthew, I'll use your variant.
> Will something change the fact that in all these cases the pickling will
> be failed not just for specific object, but for all instances of the
> specified type?
Well, the other examples you gave did not say explicitly that all
instances of that type would fail.
If you look at what 'hash' says:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
that would suggest "TypeError: unpicklable type: 'list'", but I'm not
sure I'd like too much of "unpicklable", "unmarshallable",
"unserializable", etc. :-)