Fix bug __repr__ting an XmlModel on Python3 (doesn't define unicode) #6
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.
Note: This is a proposal. We could discuss this and if you will, you could help me to test better this change.
The
__repr__
implementation on classXmlModel
uses the functionunicode
which is only defined in Python 2. So in Python 3, thisraises an exception.
I changed the usage of
unicode
withsmart_str
fromdjango.utils.encoding
as it promises to usesmart_bytes
ifrunning in Python 2 and
smart_text
if Python 3.What happens is that Python 3 expects
__repr__
to return astr
not a bytestring. That's why changed the import logic andleverage on Django logic behind the
smart_*
methods handlingPython 2 and 3.