| Home | Trees | Indices | Help |
|
|---|
|
|
1 # -*- coding: utf-8 -*-
2 """
3
4 @author: Fabio Erculiani <lxnay@sabayonlinux.org>
5 @contact: lxnay@sabayonlinux.org
6 @copyright: Fabio Erculiani
7 @license: GPL-2
8
9 B{Entropy Framework repository database plugin store module}.
10
11 """
12 from entropy.core import EntropyPluginStore
13 from entropy.db.skel import EntropyRepositoryPlugin
16
17 """
18 EntropyRepository plugin interface. This is the EntropyRepository part
19 aimed to handle connected plugins.
20 """
21
22 _PERMANENT_PLUGINS = {}
23
25 EntropyPluginStore.__init__(self)
26 permanent_plugs = EntropyRepositoryPluginStore.get_permanent_plugins()
27 for plug in permanent_plugs.values():
28 plug.add_plugin_hook(self)
29
31 """
32 Overloaded from EntropyPluginStore, adds support for hooks execution.
33 """
34 inst = entropy_repository_plugin
35 if not isinstance(inst, EntropyRepositoryPlugin):
36 raise AttributeError("EntropyRepositoryPluginStore: " + \
37 "expected valid EntropyRepositoryPlugin instance")
38 EntropyPluginStore.add_plugin(self, inst.get_id(), inst)
39 inst.add_plugin_hook(self)
40
42 """
43 Overloaded from EntropyPluginStore, adds support for hooks execution.
44 """
45 plugins = self.get_plugins()
46 plug_inst = plugins.get(plugin_id)
47 if plug_inst is not None:
48 plug_inst.remove_plugin_hook(self)
49 return EntropyPluginStore.remove_plugin(self, plugin_id)
50
51 @staticmethod
53 """
54 Add EntropyRepository permanent plugin. This plugin object will be
55 used across all the instantiated EntropyRepositoryPluginStore classes.
56 Each time a new instance is created, add_plugin_hook will be executed
57 for all the permanent plugins.
58
59 @param entropy_repository_plugin: EntropyRepositoryPlugin instance
60 @type entropy_repository_plugin: EntropyRepositoryPlugin instance
61 """
62 inst = entropy_repository_plugin
63 if not isinstance(inst, EntropyRepositoryPlugin):
64 raise AttributeError("EntropyRepositoryPluginStore: " + \
65 "expected valid EntropyRepositoryPlugin instance")
66 EntropyRepositoryPluginStore._PERMANENT_PLUGINS[inst.get_id()] = inst
67
68 @staticmethod
70 """
71 Remove EntropyRepository permanent plugin. This plugin object will be
72 removed across all the EntropyRepository instances around.
73 Please note: due to the fact that there are no destructors around,
74 the "remove_plugin_hook" callback won't be executed when calling this
75 static method.
76
77 @param plugin_id: EntropyRepositoryPlugin identifier
78 @type plugin_id: string
79 @raise KeyError: in case of unavailable plugin identifier
80 """
81 del EntropyRepositoryPluginStore._PERMANENT_PLUGINS[plugin_id]
82
83 @staticmethod
85 """
86 Return EntropyRepositoryStore installed permanent plugins.
87
88 @return: copy of internal permanent plugins dict
89 @rtype: dict
90 """
91 return EntropyRepositoryPluginStore._PERMANENT_PLUGINS.copy()
92
94 """
95 Overloaded from EntropyPluginStore, adds support for permanent plugins.
96 """
97 plugins = EntropyPluginStore.get_plugins(self)
98 plugins.update(EntropyRepositoryPluginStore.get_permanent_plugins())
99 return plugins
100
102 """
103 Return EntropyRepositoryPluginStore registered plugins metadata.
104
105 @return: plugins metadata
106 @rtype: dict
107 """
108 plugins = self.get_plugins()
109 meta = {}
110 for plugin_id in plugins:
111 meta.update(plugins[plugin_id].get_metadata())
112 return meta
113
115 """
116 Return EntropyRepositoryPlugin metadata value referenced by "key".
117
118 @param plugin_id. EntropyRepositoryPlugin identifier
119 @type plugin_id: string
120 @param key: EntropyRepositoryPlugin metadatum identifier
121 @type key: string
122 @return: metadatum value
123 @rtype: any Python object
124 @raise KeyError: if provided key or plugin_id is not available
125 """
126 plugins = self.get_plugins()
127 return plugins[plugin_id][key]
128
130 """
131 Set EntropyRepositoryPlugin stored metadata.
132
133 @param plugin_id. EntropyRepositoryPlugin identifier
134 @type plugin_id: string
135 @param key: EntropyRepositoryPlugin metadatum identifier
136 @type key: string
137 @param value: value to set
138 @type value: any valid Python object
139 @raise KeyError: if plugin_id is not available
140 """
141 plugins = self.get_plugins()
142 meta = plugins[plugin_id].get_metadata()
143 meta[key] = value
144
| Home | Trees | Indices | Help |
|
|---|
| Generated by Epydoc 3.0.1 on Sun Dec 13 00:16:29 2009 | http://epydoc.sourceforge.net |