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 | |
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.
-rw-r--r-- | buildstream/_elementfactory.py | 56 | ||||
-rw-r--r-- | buildstream/_plugincontext.py (renamed from buildstream/_plugin.py) | 0 | ||||
-rw-r--r-- | buildstream/_sourcefactory.py | 56 | ||||
-rw-r--r-- | buildstream/element.py | 42 | ||||
-rw-r--r-- | buildstream/source.py | 43 |
5 files changed, 112 insertions, 85 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() diff --git a/buildstream/_plugin.py b/buildstream/_plugincontext.py index 040fe3ab6..040fe3ab6 100644 --- a/buildstream/_plugin.py +++ b/buildstream/_plugincontext.py diff --git a/buildstream/_sourcefactory.py b/buildstream/_sourcefactory.py new file mode 100644 index 000000000..98ddb1211 --- /dev/null +++ b/buildstream/_sourcefactory.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 .source import Source + +# A SourceFactory creates Source 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 Source plugins +# +class _SourceFactory(_PluginContext): + + def __init__(self, plugin_base, searchpath=None): + + if searchpath is None: + searchpath = [] + + searchpath.insert(0, _site_info['source_plugins']) + super().__init__(plugin_base, Source, searchpath) + + # create(): + # + # Create a Source object, the pipeline uses this to create Source + # objects on demand for a given pipeline. + # + # Args: + # kind (str): The kind of Source to create + # + # Returns: A newly created Source object of the appropriate kind + # + # Raises: PluginError + # + def create(self, kind): + source_type = self.lookup(kind) + return source_type() diff --git a/buildstream/element.py b/buildstream/element.py index c242d7f9b..2cc76d0af 100644 --- a/buildstream/element.py +++ b/buildstream/element.py @@ -18,12 +18,7 @@ # Authors: # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> -from buildstream.config import _site_info -from buildstream._plugin import _PluginContext -################################################ -# Base Element Class # -################################################ class Element(): """Base Element class. @@ -38,40 +33,3 @@ class Element(): class wide default configuration is overridden from other sources, such as the Element declarations in the project YAML. """ - -################################################ -# Element Factory # -################################################ -# -# 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() diff --git a/buildstream/source.py b/buildstream/source.py index edb3e2d32..0d7681f6a 100644 --- a/buildstream/source.py +++ b/buildstream/source.py @@ -18,52 +18,9 @@ # Authors: # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> -from buildstream.config import _site_info -from buildstream._plugin import _PluginContext - -################################################ -# Base Source Class # -################################################ class Source(): """Base Source class. All Sources derive from this class, this interface defines how the core will be interacting with Sources. """ - -################################################ -# Source Factory # -################################################ -# -# A SourceFactory creates Source 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 Source plugins -# -class _SourceFactory(_PluginContext): - - def __init__(self, plugin_base, searchpath=None): - - if searchpath is None: - searchpath = [] - - searchpath.insert(0, _site_info['source_plugins']) - super().__init__(plugin_base, Source, searchpath) - - # create(): - # - # Create a Source object, the pipeline uses this to create Source - # objects on demand for a given pipeline. - # - # Args: - # kind (str): The kind of Source to create - # - # Returns: A newly created Source object of the appropriate kind - # - # Raises: PluginError - # - def create(self, kind): - source_type = self.lookup(kind) - return source_type() |