# $SnapHashLicense:
#
# SnapLogic - Open source data services
#
# Copyright (C) 2009, SnapLogic, Inc. All rights reserved.
#
# See http://www.snaplogic.org for more information about
# the SnapLogic project.
#
# This program is free software, distributed under the terms of
# the GNU General Public License Version 2. See the LEGAL file
# at the top of the source tree.
#
# "SnapLogic" is a trademark of SnapLogic, Inc.
#
#
# $
# $Id: __init__.py 7193 2009-04-08 22:18:36Z dmitri $
""" The main SnapLogic package """
__docformat__ = "epytext en"
def get_component_list():
"""
Retrieve the list of components contained within this package.
This function is used by component registration and discovery and is required for all component packages.
It should return a list of all component classes contained within the package. These should be the class objects
not their names.
In order for component registration to function properly, a naming style for component modules and classes should
be observed. The file the component is located in must match the class name exactly (including case) except for the
'.py' suffix. This is necessary because the component's module name is used to identify the component both for
config file names and within the SnapLogic server.
The L{snaplogic.cc.registration} module provides some helper functions to make this task easier for component
pacakge writers. Most notable is the L{registration.discover_package_components} method.
For small packages, it may however be easier to just import the component classes and return them as a list.
Example::
# File: my_package/__init__.py
def get_component_list():
from my_package.component_a import ComponentA
from my_package.component_b import ComponentB
return [ComponentA, ComponentB]
@return: The list of component classes contained within this package.
@rtype: list
"""
from snaplogic.cc import registration
from snaplogic.common.snap_exceptions import SnapValueError
comps = registration.discover_package_components("snaplogic.components", ['TestComps', 'DBUtils', 'FileUtils',
'computils', 'test', 'unported'])
try:
comps.extend(registration.discover_package_components("snaplogic.components.TestComps", ['test', 'unported']))
except SnapValueError, e:
# Ignore when the TestComps dir is missing. This happens when installed.
pass
try:
comps.extend(registration.discover_package_components("snaplogic.components.TestComps.upgrade"))
except SnapValueError, e:
# Ignore when the upgrade test dir is missing. This happens when installed.
pass
return comps
|