'Decode and parse given torrent
@param torrent: handles: urls, file paths, string of torrent data
@type torrent: str
@raise AssertionError: Can be raised for a couple reasons:
- If _get_raw_torrent() couldn\'t figure out
what X{torrent} is
- if X{torrent} isn\'t a valid bencoded torrent file'

def __init__(self, torrent):

    self.torrent = torrent
    self._raw_torrent = None
    self._torrent_decoded = None
    self.file_type = None
    self._get_raw_torrent()
    assert (self._raw_torrent is not None), "Couldn't    get    raw_torrent."
    if (self._torrent_decoded is None):
        self._decode_torrent()
    assert isinstance(self._torrent_decoded, dict), 'Invalid    torrent    file.'
    self._parse_torrent()
