# Path: shrubbery/authentication/exceptions.py
# class AuthenticationError(Exception): pass
# 
# class Http403(Exception): pass
# 
# Path: shrubbery/conf/base.py
# class Setting(object):
# class Registry(object):
# class SettingsBase(type):
# class Settings(object):
#     def __init__(self, validators=None, legacy_setting=None, help=None, resolve_callable=False, **kwargs):
#     def normalize(self, value):
#     def __get__(self, instance, cls=None):
#     def __set__(self, instance, value):
#     def __delete__(self, instance):
#     def __init__(self):
#     def __getitem__(self, module_name):
#     def __getattr__(self, name):
#     def __new__(cls, name, bases, attribs):     
#     def instance(cls):
#     def configure(cls, config):
#     def __init__(self, config=None):
#     def __iter__(self):
#     def __getitem__(self, name):
#     def __setitem__(self, name, value):
#     def __delitem__(self, name):
#     def as_dict(self):
#     def load(self, config):
#     def validate(self):
#     def app_module(self):
#     def app_label(self):
#     def missing_setting(self, setting):


import threading
from functools import wraps
from django.utils.importlib import import_module
from shrubbery.authentication.exceptions import AuthenticationError, Http403
from shrubbery.conf import settings


_authentication_contexts = None

def get_authentication_contexts():
    global _authentication_contexts
    if _authentication_contexts is None:
        _authentication_contexts = []

# Path: shrubbery/authentication/exceptions.py
# class AuthenticationError(Exception): pass
# 
# class Http403(Exception): pass
# 
# Path: shrubbery/conf/base.py
# class Setting(object):
# class Registry(object):
# class SettingsBase(type):
# class Settings(object):
#     def __init__(self, validators=None, legacy_setting=None, help=None, resolve_callable=False, **kwargs):
#     def normalize(self, value):
#     def __get__(self, instance, cls=None):
#     def __set__(self, instance, value):
#     def __delete__(self, instance):
#     def __init__(self):
#     def __getitem__(self, module_name):
#     def __getattr__(self, name):
#     def __new__(cls, name, bases, attribs):     
#     def instance(cls):
#     def configure(cls, config):
#     def __init__(self, config=None):
#     def __iter__(self):
#     def __getitem__(self, name):
#     def __setitem__(self, name, value):
#     def __delitem__(self, name):
#     def as_dict(self):
#     def load(self, config):
#     def validate(self):
#     def app_module(self):
#     def app_label(self):
#     def missing_setting(self, setting):


# Path: shrubbery/authentication/contexts.py
import threading
from functools import wraps
from django.utils.importlib import import_module
from shrubbery.authentication.exceptions import AuthenticationError, Http403
from shrubbery.conf import settings



_authentication_contexts = None

def get_authentication_contexts():
    global _authentication_contexts
    if _authentication_contexts is None:
        _authentication_contexts = []

        for path in settings['shrubbery.authentication'].CONTEXTS: