sendgrid/sendgrid-python

Mail.add_header doesn't accept a dict

tzachyrm opened this issue · 2 comments

Issue Summary

The docs mentions that the Mail.add_header should accept a dict of key-value pairs. However, when passing a dict, the function fails.

Steps to Reproduce

  1. Initialize a new Mail object
  2. Call add_header with a dict. According to the docs this should work.

Code Snippet

from sendgrid .helpers.mail import Mail
Mail().add_header({"X": "y"})

Exception/Log

Traceback (most recent call last):
  File "/env/lib/python3.8/site-packages/sendgrid/helpers/mail/mail.py", line 466, in add_header
    if header.personalization is not None:
AttributeError: 'dict' object has no attribute 'personalization'

Technical details:

  • sendgrid-python version: 6.7.1
  • python version: 3.8

This issue has been added to our internal backlog to be prioritized. Pull requests and +1s on the issue summary will help it move up the backlog.

I sent a pull request for code to fix this issue.

As I mentioned in the pull request, the current implementation seems intended to only add the first key/value item if the header argument given to add_header is dict that has multiple key/values.

I believe this is non-intuitive and confusing to users. However, as long as the intent is not clear, I did not think this should be changed and kept it as is.