Skip to content

centroid457/singleton_meta

Repository files navigation

singleton_meta (v0.1.3)

DESCRIPTION_SHORT

create perfect singletons

DESCRIPTION_LONG

designed for singletons creation

Features

  1. perfect singleton (maybe thread safe!)
  2. collect all instances
  3. check correct instantiating singletons in tree project

License

See the LICENSE file for license rights and limitations (MIT).

Release history

See the HISTORY.md file for release history.

Installation

pip install singleton-meta

Import

from singleton_meta import *

USAGE EXAMPLES

See tests and sourcecode for other examples.


1. example1.py

from singleton_meta import *

class MySingleton(SingletonByCallMeta):
    pass

class MySingleton2(SingletonByCallMeta):
    pass

class MySingleton(metaclass=SingletonMetaCallClass):
    pass


# ===============================
# 2. access to created instances
from singleton_meta import *

class Victim1(SingletonByCallMeta):
    attr = 1

class Victim2(SingletonByCallMeta):
    attr = 2

assert SingletonByCallMeta._SINGLETONS == []
Victim1()
assert SingletonByCallMeta._SINGLETONS == [Victim1(), ]
assert Victim1._SINGLETONS == [Victim1(), ]
assert Victim1()._SINGLETONS == [Victim1(), ]
Victim2()
assert SingletonByCallMeta._SINGLETONS == [Victim1(), Victim2(), ]


# ===============================
# 3. NOTICE: all your Singletons must be only last classes!
# don't use nesting from any Your Singletons!
from singleton_meta import *

class MySingleton(SingletonByCallMeta):  # OK
    pass

class MySingleton2(MySingleton):  # WRONG
    pass

About

2023=create perfect singletons

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published