Won't this cause issues in Py3, as you're modifying a dict you're iterating?  I had to wrap attrs.items() in list()
Also, why not just use:
    current_fields.append((key, attrs.pop(key)))
?