Skip to content

Commit aef1153

Browse files
committed
rename & test
1 parent 8b0fdf1 commit aef1153

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

qlib/finco/utils.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,23 @@
33
from 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

1724
def parse_json(response):
1825
try:

tests/finco/test_utils.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
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()

0 commit comments

Comments
 (0)