Skip to content

Commit

Permalink
Merge pull request #76 from singer-contrib/fix-tests
Browse files Browse the repository at this point in the history
Fix reading binary files/streams by adjusting encoding to match mode
  • Loading branch information
ets authored Jan 6, 2024
2 parents 1c9a462 + 4072661 commit f538266
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ celerybeat-schedule
.env

# virtualenv
.venv/
venv/
ENV/

Expand Down
5 changes: 5 additions & 0 deletions tap_spreadsheets_anywhere/format_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,11 @@ def get_streamreader(uri, universal_newlines=True, newline='', open_mode='r', en
SCHEME_SEP = "://"
kwargs = kwarg_dispatch.get(uri.split(SCHEME_SEP, 1)[0], lambda: {})()

# When reading in binary mode, undefine `encoding`.
# Otherwise, `smart_open` will return a `TextIOWrapper` in `"r"` mode.
# However, reading binary streams needs a `BufferedReader`.
if "b" in open_mode:
encoding = None
streamreader = smart_open.open(uri, open_mode, newline=newline, errors='surrogateescape', encoding=encoding, **kwargs)

if not universal_newlines and isinstance(streamreader, StreamReader):
Expand Down

0 comments on commit f538266

Please sign in to comment.