When converting an email.message.Message with the policy set to email.policy.EmailPolicy with all default settings, I eventually end up with this exception: File "/usr/lib/python3.7/email/_header_value_parser.py", line 2727, in _fold_as_ew first_part = to_encode[:text_space] TypeError: slice indices must be integers or None or have an __index__ method Which is caused because text_space is a float of value +inf. This is set on line 2594 of the same file: maxlen = policy.max_line_length or float("+inf") For some reason policy.max_line_length is set to zero, even though the default should be 78 after a glance into the source. So there's maybe even two issues: 1.) The fallback for maxlen shouldn't be float("+inf"), as that is not an integer and thus can't be sliced by. I think a big integer would suffice instead, for example 100000000 2.) policy.max_line_length seems to lose it's value in the default settings somewhere along the way if it isn't explicitly set. Current workaround: Set max_line_length of the policy to a value (78 is default)
Indeed it is. Sorry I didn't find it before. So it seems that changing float("+inf") to sys.maxsize would solve the problem? I've tried it in an interactive shell: >>> a = "asd"; import sys >>> a[:sys.maxsize] 'asd'
Thanks for the confirmation. I would propose closing this as a duplicate. The PR on the other issue might fix your issue and is just waiting on a NEWS entry.