File tree Expand file tree Collapse file tree 2 files changed +34
-4
lines changed
Expand file tree Collapse file tree 2 files changed +34
-4
lines changed Original file line number Diff line number Diff line change 33from fuzzywuzzy import fuzz
44
55
6- class Singleton (type ):
6+ class SingletonMeta (type ):
77 _instance = None
88
99 def __call__ (cls , * args , ** kwargs ):
1010 if cls ._instance is None :
11- cls ._instance = super (Singleton , cls ).__call__ (* args , ** kwargs )
11+ cls ._instance = super (SingletonMeta , cls ).__call__ (* args , ** kwargs )
1212 return cls ._instance
1313
14- class SingletonBaseClass (metaclass = Singleton ):
15- pass
14+
15+ class SingletonBaseClass (metaclass = SingletonMeta ):
16+ """
17+ Because we try to support defining Singleton with `class A(SingletonBaseClass)` instead of `A(metaclass=SingletonMeta)`
18+ This class becomes necessary
19+
20+ """
21+ # TODO: Add move this class to Qlib's general utils.
22+
1623
1724def parse_json (response ):
1825 try :
Original file line number Diff line number Diff line change 1+ import unittest
2+ from qlib .finco .utils import SingletonBaseClass
3+
4+
5+ class TimeUtils (unittest .TestCase ):
6+
7+ def test_singleton (self ):
8+ # self.assertEqual(self.to_str(data.tail()), self.to_str(res))
9+ closure_checker = []
10+
11+ class A (SingletonBaseClass ):
12+
13+ def __init__ (self ) -> None :
14+ closure_checker .append (0 )
15+
16+ A ()
17+ self .assertEqual (len (closure_checker ), 1 )
18+ A ()
19+ self .assertEqual (len (closure_checker ), 1 )
20+
21+
22+ if __name__ == "__main__" :
23+ unittest .main ()
You can’t perform that action at this time.
0 commit comments