Oh, I see. I had momentarily flaked that .get() would automatically default to None, r/t throwing an IndexError. If a default of None is really what you mean, my own preference would be that that were made explicit, so I could just read it and think a little less. :)

Except then we have this problem that coercing None to int() throws a TypeError, which looks like it's uncaught?  I guess I don't have an opinion about whether or not it's right to fail explicitly in this case, but I do have follow-on concerns:
* How does this look when it bubbles up to the user? 
* Does it bubble up in a way that will be easy for we-who-did-not-see-the-error to track down later? 

Also, not in this diff, but the punctuation on line 223 looks funny with that comma hanging out there.