you are checking that key is in versions_info, but "release_channel" could still throw a KeyError (in theory)

Also, what happens later if channel is None?

I think it'd be nicer to write it this way anyway, if you always expect the key to be there (looks like you do):

```
try:
    channel = versions_info[key]['release_channel'].lower()
except KeyError:
    # handle it somehow
```

And if you can't handle it don't bother with try and just let it bubble up and crash.