src/ab/plugins/base_plugin.py (11 lines of code) (raw):
import threading
class BasePlugin(object):
_instance_lock = threading.Lock()
def __init__(self):
pass
def __new__(cls, *args, **kwargs):
if not hasattr(BasePlugin, "_instance"):
with BasePlugin._instance_lock:
if not hasattr(BasePlugin, "_instance"):
BasePlugin._instance = object.__new__(cls)
return BasePlugin._instance