# Copyright (c) 2022, Dell Inc. or its subsidiaries. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # See the LICENSE file for details. # # This file is part of NVMe STorage Appliance Services (nvme-stas). # # Authors: Martin Belanger # '''Implementation of a singleton pattern''' class Singleton(type): '''metaclass implementation of a singleton pattern''' _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: # This variable declaration is required to force a # strong reference on the instance. instance = super(Singleton, cls).__call__(*args, **kwargs) cls._instances[cls] = instance return cls._instances[cls]