blob: f51e466d06fab2b3a1cfb21860e34696ebcbe687 [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
SPDX-License-Identifier: GPL-3.0-or-later
Copyright (c) 2023 Savoir-faire Linux
Base class for singleton objects.
"""
class Singleton:
def __init__(self, decorated):
self._decorated = decorated
def instance(self):
try:
return self._instance
except AttributeError:
self._instance = self._decorated()
return self._instance
def __call__(self):
raise TypeError("Singletons must be accessed through `instance()`.")
def __instancecheck__(self, inst):
return isinstance(inst, self._decorated)