X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Fquery_executor.py;h=ebedffe8de242877eb7187ae3c01616f155c5594;hb=e5914347c8eea0f26c07348d0ac64dbe020de44a;hp=8e51f82522d1149efc5540a32ed5953ed9598ec4;hpb=57081273d1191fc79edc101af619fab96b72460d;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/query_executor.py b/src/bindings/python/bt2/bt2/query_executor.py index 8e51f825..ebedffe8 100644 --- a/src/bindings/python/bt2/bt2/query_executor.py +++ b/src/bindings/python/bt2/bt2/query_executor.py @@ -1,32 +1,21 @@ -# 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 + +from bt2 import native_bt +from bt2 import object as bt2_object +from bt2 import utils as bt2_utils from bt2 import interrupter as bt2_interrupter -from bt2 import component as bt2_component from bt2 import value as bt2_value import bt2 +def _bt2_component(): + from bt2 import component as bt2_component + + return bt2_component + + class _QueryExecutorCommon: @property def _common_ptr(self): @@ -42,19 +31,24 @@ class _QueryExecutorCommon: return native_bt.query_executor_get_logging_level(self._common_ptr) -class QueryExecutor(object._SharedObject, _QueryExecutorCommon): - _get_ref = staticmethod(native_bt.query_executor_get_ref) - _put_ref = staticmethod(native_bt.query_executor_put_ref) +class QueryExecutor(bt2_object._SharedObject, _QueryExecutorCommon): + @staticmethod + def _get_ref(ptr): + native_bt.query_executor_get_ref(ptr) + + @staticmethod + def _put_ref(ptr): + native_bt.query_executor_put_ref(ptr) def _as_query_executor_ptr(self): return self._ptr - def __init__(self, component_class, object, params=None, method_obj=None): - if not isinstance(component_class, bt2_component._ComponentClass): + def __init__(self, component_class, object_name, params=None, method_obj=None): + if not isinstance(component_class, _bt2_component()._ComponentClassConst): err = False try: - if not issubclass(component_class, bt2_component._UserComponent): + if not issubclass(component_class, _bt2_component()._UserComponent): err = True except TypeError: err = True @@ -63,7 +57,7 @@ class QueryExecutor(object._SharedObject, _QueryExecutorCommon): o = component_class raise TypeError("'{}' is not a component class object".format(o)) - utils._check_str(object) + bt2_utils._check_str(object_name) if params is None: params_ptr = native_bt.value_null @@ -78,15 +72,15 @@ class QueryExecutor(object._SharedObject, _QueryExecutorCommon): cc_ptr ): raise ValueError( - 'cannot pass a Python object to a non-Python component class' + "cannot pass a Python object to a non-Python component class" ) ptr = native_bt.bt2_query_executor_create( - cc_ptr, object, params_ptr, method_obj + cc_ptr, object_name, params_ptr, method_obj ) if ptr is None: - raise bt2._MemoryError('cannot create query executor object') + raise bt2._MemoryError("cannot create query executor object") super().__init__(ptr) @@ -96,16 +90,20 @@ class QueryExecutor(object._SharedObject, _QueryExecutorCommon): self._method_obj = method_obj def add_interrupter(self, interrupter): - utils._check_type(interrupter, bt2_interrupter.Interrupter) + bt2_utils._check_type(interrupter, bt2_interrupter.Interrupter) native_bt.query_executor_add_interrupter(self._ptr, interrupter._ptr) - def interrupt(self): - native_bt.query_executor_interrupt(self._ptr) + @property + def default_interrupter(self): + ptr = native_bt.query_executor_borrow_default_interrupter(self._ptr) + return bt2_interrupter.Interrupter._create_from_ptr_and_get_ref(ptr) def _set_logging_level(self, log_level): - utils._check_log_level(log_level) + bt2_utils._check_log_level(log_level) status = native_bt.query_executor_set_logging_level(self._ptr, log_level) - utils._handle_func_status(status, "cannot set query executor's logging level") + bt2_utils._handle_func_status( + status, "cannot set query executor's logging level" + ) logging_level = property( fget=_QueryExecutorCommon.logging_level, fset=_set_logging_level @@ -118,9 +116,9 @@ class QueryExecutor(object._SharedObject, _QueryExecutorCommon): def query(self): status, result_ptr = native_bt.query_executor_query(self._ptr) - utils._handle_func_status(status, 'cannot query component class') + bt2_utils._handle_func_status(status, "cannot query component class") assert result_ptr is not None - return bt2_value._create_from_ptr(result_ptr) + return bt2_value._create_from_const_ptr(result_ptr) class _PrivateQueryExecutor(_QueryExecutorCommon): @@ -129,7 +127,7 @@ class _PrivateQueryExecutor(_QueryExecutorCommon): def _check_validity(self): if self._ptr is None: - raise RuntimeError('this object is not valid anymore') + raise RuntimeError("this object is not valid anymore") def _as_query_executor_ptr(self): self._check_validity()