Python 2.X and 3.X

This section describes differences in using pytvdbapi in a Python 2.X environment and a Python 3.X environment. In particular it describes the differences and changes regarding unicode handling.

Unicode Vs. Str

In python 3, the unicode object has been removed and the standard str type always represent a unicode string [1].

Internally pytvdbapi works exclusively with unicode. That means that on Python 2.X all text attributes will be of type unicode and on Python 3 they will be of type str, all text attributes will be automatically converted as they are loaded.

>>> from pytvdbapi import api
>>> import sys
>>> db = api.TVDB('B43FF87DE395DF56')
>>> result = db.search('Alarm für cobra 11', 'de')
>>> show = result[0]
>>> if sys.version < '3':
...     assert type(show.SeriesName) is unicode
... else:
...     assert type(show.SeriesName) is str

pytvdbapi attempts to convert all text parameters passed into unicode, that means unicode on Python 2.X and str on python 3.X.

For example, both of these are valid:

>>> from pytvdbapi import api
>>> db = api.TVDB('B43FF87DE395DF56')

>>> result = db.search('Alarm für cobra 11', 'de')
>>> len(result)
3
>>> print(result[0])
<Show - Alarm für Cobra 11 - Die Autobahnpolizei>

And:

>>> result = db.search(u'Dexter', 'de')
>>> len(result)
3
>>> print(result[0])
<Show - Dexter>

Footnotes

[1]https://docs.python.org/3.3/howto/unicode.html

Table Of Contents

Previous topic

Getting Started

Next topic

Examples

This Page