Home | Trees | Indices | Help |
---|
|
1 # Software License Agreement (BSD License) 2 # 3 # Copyright (c) 2009, Willow Garage, Inc. 4 # All rights reserved. 5 # 6 # Redistribution and use in source and binary forms, with or without 7 # modification, are permitted provided that the following conditions 8 # are met: 9 # 10 # * Redistributions of source code must retain the above copyright 11 # notice, this list of conditions and the following disclaimer. 12 # * Redistributions in binary form must reproduce the above 13 # copyright notice, this list of conditions and the following 14 # disclaimer in the documentation and/or other materials provided 15 # with the distribution. 16 # * Neither the name of Willow Garage, Inc. nor the names of its 17 # contributors may be used to endorse or promote products derived 18 # from this software without specific prior written permission. 19 # 20 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 24 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 26 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 30 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 # POSSIBILITY OF SUCH DAMAGE. 32 # 33 # Revision $Id$ 34 35 """ 36 Plugin loader for roswtf. 37 """ 38 39 from __future__ import print_function 40 41 import os 42 import sys 43 44 import roslib 45 import rospkg 4648 """ 49 @return: list of static roswtf plugins, list of online 50 roswtf plugins 51 @rtype: [fn], [fn] 52 """ 53 rospack = rospkg.RosPack() 54 to_check = rospack.get_depends_on('roswtf', implicit=False) 55 static_plugins = [] 56 online_plugins = [] 57 for pkg in to_check: 58 m = rospack.get_manifest(pkg) 59 p_module = m.get_export('roswtf', 'plugin') 60 if not p_module: 61 continue 62 elif len(p_module) != 1: 63 print("Cannot load plugin [%s]: invalid 'plugin' attribute"%(pkg), file=sys.stderr) 64 continue 65 p_module = p_module[0] 66 try: 67 # load that packages namespace 68 roslib.load_manifest(pkg) 69 70 # import the specified plugin module 71 mod = __import__(p_module) 72 for sub_mod in p_module.split('.')[1:]: 73 mod = getattr(mod, sub_mod) 74 75 # retrieve the roswtf_plugin_static and roswtf_plugin_online functions 76 s_attr = o_attr = None 77 try: 78 s_attr = getattr(mod, 'roswtf_plugin_static') 79 except AttributeError: pass 80 try: 81 o_attr = getattr(mod, 'roswtf_plugin_online') 82 except AttributeError: pass 83 if s_attr: 84 static_plugins.append(s_attr) 85 if o_attr: 86 online_plugins.append(o_attr) 87 if s_attr is None and o_attr is None: 88 print("Cannot load plugin [%s]: no 'roswtf_plugin_static' or 'roswtf_plugin_online' attributes [%s]"%(p_module), file=sys.stderr) 89 else: 90 print("Loaded plugin", p_module) 91 92 except Exception: 93 print("Unable to load plugin [%s] from package [%s]"%(p_module, pkg), file=sys.stderr) 94 return static_plugins, online_plugins95
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Thu Jun 6 21:11:09 2019 | http://epydoc.sourceforge.net |