X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Fplugin.py;h=6888cb12f33b1352d56b567f941e9800b352c59f;hb=f5567ea88d172767b34373bc6e402da8bfd85ef8;hp=5198bdf32abfa3bb8e9ba9a86e397af5f9bc1154;hpb=ce4923b0c7a2de36eba95725334d251e9aa08aad;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/plugin.py b/src/bindings/python/bt2/bt2/plugin.py index 5198bdf3..6888cb12 100644 --- a/src/bindings/python/bt2/bt2/plugin.py +++ b/src/bindings/python/bt2/bt2/plugin.py @@ -1,33 +1,14 @@ -# The MIT License (MIT) +# SPDX-License-Identifier: MIT # # Copyright (c) 2017 Philippe Proulx -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. from bt2 import native_bt, object, utils import collections.abc -import bt2.component +from bt2 import component as bt2_component import os.path -import bt2 -def find_plugins(path, recurse=True, fail_on_load_error=False): +def find_plugins_in_path(path, recurse=True, fail_on_load_error=False): utils._check_str(path) utils._check_bool(recurse) utils._check_bool(fail_on_load_error) @@ -47,20 +28,64 @@ def find_plugins(path, recurse=True, fail_on_load_error=False): if status == native_bt.__BT_FUNC_STATUS_NOT_FOUND: return - utils._handle_func_status(status, 'failed to find plugins') + utils._handle_func_status(status, "failed to find plugins") + assert plugin_set_ptr is not None + return _PluginSet._create_from_ptr(plugin_set_ptr) + + +def find_plugins( + find_in_std_env_var=True, + find_in_user_dir=True, + find_in_sys_dir=True, + find_in_static=True, + fail_on_load_error=False, +): + utils._check_bool(find_in_std_env_var) + utils._check_bool(find_in_user_dir) + utils._check_bool(find_in_sys_dir) + utils._check_bool(find_in_static) + utils._check_bool(fail_on_load_error) + plugin_set_ptr = None + + status, plugin_set_ptr = native_bt.bt2_plugin_find_all( + int(find_in_std_env_var), + int(find_in_user_dir), + int(find_in_sys_dir), + int(find_in_static), + int(fail_on_load_error), + ) + + if status == native_bt.__BT_FUNC_STATUS_NOT_FOUND: + return + + utils._handle_func_status(status, "failed to find plugins") assert plugin_set_ptr is not None return _PluginSet._create_from_ptr(plugin_set_ptr) -def find_plugin(name, fail_on_load_error=False): +def find_plugin( + name, + find_in_std_env_var=True, + find_in_user_dir=True, + find_in_sys_dir=True, + find_in_static=True, + fail_on_load_error=False, +): utils._check_str(name) utils._check_bool(fail_on_load_error) - status, ptr = native_bt.bt2_plugin_find(name, int(fail_on_load_error)) + status, ptr = native_bt.bt2_plugin_find( + name, + int(find_in_std_env_var), + int(find_in_user_dir), + int(find_in_sys_dir), + int(find_in_static), + int(fail_on_load_error), + ) if status == native_bt.__BT_FUNC_STATUS_NOT_FOUND: return - utils._handle_func_status(status, 'failed to find plugin') + utils._handle_func_status(status, "failed to find plugin") assert ptr is not None return _Plugin._create_from_ptr(ptr) @@ -109,12 +134,12 @@ class _PluginVersion: return self._extra def __str__(self): - extra = '' + extra = "" if self._extra is not None: extra = self._extra - return '{}.{}.{}{}'.format(self._major, self._minor, self._patch, extra) + return "{}.{}.{}{}".format(self._major, self._minor, self._patch, extra) class _PluginComponentClassesIterator(collections.abc.Iterator): @@ -136,7 +161,7 @@ class _PluginComponentClassesIterator(collections.abc.Iterator): self._at += 1 comp_cls_type = self._plugin_comp_cls._comp_cls_type - comp_cls_pycls = bt2.component._COMP_CLS_TYPE_TO_GENERIC_COMP_CLS_PYCLS[ + comp_cls_pycls = bt2_component._COMP_CLS_TYPE_TO_GENERIC_COMP_CLS_PYCLS[ comp_cls_type ] comp_cls_ptr = comp_cls_pycls._bt_as_component_class_ptr(comp_cls_ptr) @@ -156,7 +181,7 @@ class _PluginComponentClasses(collections.abc.Mapping): if cc_ptr is None: raise KeyError(key) - return bt2.component._create_component_class_from_ptr_and_get_ref( + return bt2_component._create_component_class_from_const_ptr_and_get_ref( cc_ptr, self._comp_cls_type )