Commit 8859fa78219375cd6ab5686f3de022c3ab7a0a71
1 parent
7174d454
Exists in
master
and in
1 other branch
Data repositories class inherit from Singleton() which implements the pattern.
(close #7)
Showing
1 changed file
with
7 additions
and
3 deletions
Show diff stats
src/data.py
... | ... | @@ -45,9 +45,13 @@ def normalize_tags(string): |
45 | 45 | """ |
46 | 46 | return string.replace(':','_').replace('-','\'') |
47 | 47 | |
48 | -# FIXME Data repositories should be singleton | |
48 | +class Singleton(object): | |
49 | + def __new__(cls, *args, **kwargs): | |
50 | + if '_inst' not in vars(cls): | |
51 | + cls._inst = object.__new__(cls) | |
52 | + return cls._inst | |
49 | 53 | |
50 | -class DebtagsDB(debtags.DB): | |
54 | +class DebtagsDB(debtags.DB,Singleton): | |
51 | 55 | def __init__(self,path): |
52 | 56 | self.path = path |
53 | 57 | |
... | ... | @@ -72,7 +76,7 @@ class DebtagsDB(debtags.DB): |
72 | 76 | relevance_index(b))) |
73 | 77 | return normalize_tags(' '.join(sorted_relevant_tags[-qtd_of_tags:])) |
74 | 78 | |
75 | -class DebtagsIndex(xapian.WritableDatabase): | |
79 | +class DebtagsIndex(xapian.WritableDatabase,Singleton): | |
76 | 80 | def __init__(self,path): |
77 | 81 | self.path = path |
78 | 82 | self.db_md5 = 0 | ... | ... |