23 lines
520 B
Python
23 lines
520 B
Python
"""
|
|
Singleton decorator definition
|
|
"""
|
|
|
|
from functools import wraps
|
|
|
|
|
|
def Singleton(cls):
|
|
"""
|
|
Decorator implementing the singleton pattern:
|
|
it restricts the instantiation of a class to one "single" instance.
|
|
"""
|
|
instances = {}
|
|
|
|
# https://github.com/sphinx-doc/sphinx/issues/3783
|
|
@wraps(cls)
|
|
def getinstance():
|
|
"""Find an instance or save newly created one"""
|
|
if cls not in instances:
|
|
instances[cls] = cls()
|
|
return instances[cls]
|
|
return getinstance
|