Create a new :class:`Singleton` class

        :param name: Name of the new class (Used in its __repr__ if no object_name)
        :type name: str
        :param dict: Optional dictionary of the classes' attributes
        :type dict: Optional[Dict[str, Any]]
        :param object_name: Name of an instance of the singleton. Used in __repr__.
        :type object_name: Optional[str]
        :return: A new Singleton instance
        :rtype: Singleton

def create(mcs, name, dict=None, object_name=None):
        """
        Create a new :class:`Singleton` class

        :param name: Name of the new class (Used in its __repr__ if no object_name)
        :type name: str
        :param dict: Optional dictionary of the classes' attributes
        :type dict: Optional[Dict[str, Any]]
        :param object_name: Name of an instance of the singleton. Used in __repr__.
        :type object_name: Optional[str]
        :return: A new Singleton instance
        :rtype: Singleton
        """
        if dict is None:
            dict = {}
        _repr = name + '()' if object_name is None else object_name

        def __repr__(self=None):
            return _repr
        dict.setdefault('__repr__', __repr__)
        return mcs(name, (object,), dict)