Fixed read error when initializing bytes
data in Python 3
#120
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The original code will throw
AttributeError: 'bytes' object has no attribute 'read'
when initializingpydub.AudioSegment
with abytes
object in Python 3. Since your code indends to support Python 3 by usingBytesIO
(aliased intoStringIO
),pydub.AudioSegment
should have acceptedbytes
data.The problematic line of code is this:
It only checks if
data
isbasestring
, which does not exist in Python 3. If data is ofbytes
in Python 3, it will go toelse
part and failed.Since you didn't use
six
, I added an extraisinstance
check here to make the code change as minimal as possible, though it may not be a good enough.FYI, my code which complains about this is here, and the error output is: