3
0
mirror of https://github.com/jlu5/PyLink.git synced 2025-01-11 12:42:34 +01:00

utils: add KeyedDefaultdict

This is a subclass of defaultdict allowing the key to be passed to the default factory.
This commit is contained in:
James Lu 2016-03-19 17:01:16 -07:00
parent abce18a5ba
commit 544d6e1041

View File

@ -10,11 +10,25 @@ import re
import inspect
import importlib
import os
import collections
from log import log
import world
import conf
class KeyedDefaultdict(collections.defaultdict):
"""
Subclass of defaultdict allowing the key to be passed to the default factory.
"""
def __missing__(self, key):
if self.default_factory is None:
# If there is no default factory, just let defaultdict handle it
super().__missing__(self, key)
else:
value = self[key] = self.default_factory(key)
return value
class NotAuthenticatedError(Exception):
"""
Exception raised by checkAuthenticated() when a user fails authentication