Add static type annotation to the source and tests. Passes with mypy strict, pyright basic, and pyright --verifytypes. Add py.typed marker and classifier.
If Attachment.data is not given, an error is raised. The argument order is a bit weird, probalby because it makes more sense to read them in that order, but due to that data can be None in the signature, but must not be None when actually used.
If Attachment.content_type is not given, it is detected. mimetypes.guess_type is used on filename if filename is given. If that returns None, text/plain is used if data is a string, otherwise application/octet-stream is used. The code requires content_type to be set, but would previously just fail when building the message. This detection seemed preferrable to an error.
Add static type annotation to the source and tests. Passes with mypy strict, pyright basic, and pyright
--verifytypes
. Addpy.typed
marker and classifier.If
Attachment.data
is not given, an error is raised. The argument order is a bit weird, probalby because it makes more sense to read them in that order, but due to thatdata
can beNone
in the signature, but must not beNone
when actually used.If
Attachment.content_type
is not given, it is detected.mimetypes.guess_type
is used onfilename
if filename is given. If that returnsNone
,text/plain
is used ifdata
is a string, otherwiseapplication/octet-stream
is used. The code requirescontent_type
to be set, but would previously just fail when building the message. This detection seemed preferrable to an error.