Skip to content

Can't send PDF in-memory or local pdf file via LetterEditable / LettersApi #211

@vaughnkoch

Description

@vaughnkoch

Hi, I'm trying to send a simple PDF file using the Lob Python SDK, but I'm running into errors. The key issue seems to be that the file param of LetterEditable will only accept a Python str value, which doesn't allow for in-memory PDFs.
It also does not upload local files like the API documents say it should. Uploading raw HTML works, but we need to upload PDF files.

Ideally I would like to pass an in-memory file, e.g. bytes or io.BytesIO. Here's what I see when I try to pass that:

lob_python.exceptions.ApiTypeError: Invalid type for variable 'file'. Required value type is str and passed type was bytes at ['file']

That error is being generated in lob_python, letter_editable.py:362:

self.file = file

because on line 120:

'file': (str,), # noqa: E501

and this is enforced via __setitem__ in ModelNormal and set_attribute in OpenApiModel.

Notes:

  • See this gist to see the failures: https://gist.github.com/vaughnkoch/7a727dfc066cd4f6d7b8986960208c7b
  • Suggestion: create a file_upload_type parameter, that would accept 'file-like-stream', 'html', 'url', etc. Then allow each of those in the file parameter.
  • I'm using python 3.12.3 and lob_python====5.1.3.
  • I've already brought this up with Lob support, who suggested I open this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions