diff options
author | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2016-11-12 15:52:37 +0900 |
---|---|---|
committer | Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> | 2016-11-12 15:52:37 +0900 |
commit | 1b07956fe7c15bf68c6eeb037d7685a1903d93b3 (patch) | |
tree | 4d3950c5a97107f0e78f5a3c17b12a449a5575b7 /buildstream/_elementfactory.py | |
parent | 64576e664d5419a28af972115f0bafabfe35acd6 (diff) | |
download | buildstream-1b07956fe7c15bf68c6eeb037d7685a1903d93b3.tar.gz |
Split up factory objects and base data model objects.
Better to have a separate file for each class clearly addressing
it's purpose with it's filename.
Source base data model -> source.py
SourceFactory -> _sourcefactory.py
Element base data model -> element.py
ElementFactory -> _elementfactory.py
Also moved the _plugin.py to _plugincontext.py, since the object
is infact _PluginContext, lets follow this rule all around for
code clarity.
Diffstat (limited to 'buildstream/_elementfactory.py')
-rw-r--r-- | buildstream/_elementfactory.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/buildstream/_elementfactory.py b/buildstream/_elementfactory.py new file mode 100644 index 000000000..1257c8795 --- /dev/null +++ b/buildstream/_elementfactory.py @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +# +# Copyright (C) 2016 Codethink Limited +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library. If not, see <http://www.gnu.org/licenses/>. +# +# Authors: +# Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> + +from ._plugincontext import _PluginContext +from .config import _site_info +from .element import Element + +# A ElementFactory creates Element instances +# in the context of a given factory +# +# Args: +# plugin_base (PluginBase): The main PluginBase object to work with +# searchpath (list): A list of external paths to search for Element plugins +# +class _ElementFactory(_PluginContext): + + def __init__(self, plugin_base, searchpath=None): + + if searchpath is None: + searchpath = [] + + searchpath.insert(0, _site_info['element_plugins']) + super().__init__(plugin_base, Element, searchpath) + + # create(): + # + # Create an Element object, the pipeline uses this to create Element + # objects on demand for a given pipeline. + # + # Args: + # kind (str): The kind of Element to create + # + # Returns: A newly created Element object of the appropriate kind + # + # Raises: PluginError + # + def create(self, kind): + element_type = self.lookup(kind) + return element_type() |