pallets-eco / flask-mail

Flask-Mail adds SMTP mail sending to your Flask applications
https://flask-mail.readthedocs.io
BSD 3-Clause "New" or "Revised" License
608 stars 172 forks source link

add static type annotations #221

Closed davidism closed 5 months ago

davidism commented 5 months ago

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.