X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbindings%2Fpython%2Fbt2%2Fbt2%2Ftrace_class.py;h=76becf56c7effffefee7c08a49c359b4889a3977;hb=335a2da576e59d32c17de2ece1e7e339c50e9c25;hp=08d6cedc7d9758796f68105a7b8b57e0a410d935;hpb=f393c19b7abdcc7763d1e6bc045022edeebd283e;p=babeltrace.git diff --git a/src/bindings/python/bt2/bt2/trace_class.py b/src/bindings/python/bt2/bt2/trace_class.py index 08d6cedc..76becf56 100644 --- a/src/bindings/python/bt2/bt2/trace_class.py +++ b/src/bindings/python/bt2/bt2/trace_class.py @@ -27,56 +27,10 @@ __all__ = ['_TraceClass'] import bt2 from bt2 import native_bt, utils, object import bt2.stream_class -import uuid as uuidp import collections.abc import functools -class _TraceClassEnv(collections.abc.MutableMapping): - def __init__(self, trace_class): - self._trace_class = trace_class - - def __getitem__(self, key): - utils._check_str(key) - - borrow_entry_fn = native_bt.trace_class_borrow_environment_entry_value_by_name_const - value_ptr = borrow_entry_fn(self._trace_class._ptr, key) - - if value_ptr is None: - raise KeyError(key) - - return bt2.value._create_from_ptr_and_get_ref(value_ptr) - - def __setitem__(self, key, value): - if isinstance(value, str): - set_env_entry_fn = native_bt.trace_class_set_environment_entry_string - elif isinstance(value, int): - set_env_entry_fn = native_bt.trace_class_set_environment_entry_integer - else: - raise TypeError('expected str or int, got {}'.format(type(value))) - - status = set_env_entry_fn(self._trace_class._ptr, key, value) - utils._handle_func_status(status, - "cannot set trace class object's environment entry") - - def __delitem__(self, key): - raise NotImplementedError - - def __len__(self): - count = native_bt.trace_class_get_environment_entry_count(self._trace_class._ptr) - assert count >= 0 - return count - - def __iter__(self): - trace_class_ptr = self._trace_class_env._trace_class._ptr - - for idx in range(len(self)): - borrow_entry_fn = native_bt.trace_class_borrow_environment_entry_by_index_const - entry_name, _ = borrow_entry_fn(trace_class_ptr, idx) - assert entry_name is not None - yield entry_name - - class _StreamClassIterator(collections.abc.Iterator): def __init__(self, trace_class): self._trace_class = trace_class @@ -104,23 +58,9 @@ class _TraceClass(object._SharedObject, collections.abc.Mapping): _get_ref = staticmethod(native_bt.trace_class_get_ref) _put_ref = staticmethod(native_bt.trace_class_put_ref) - @property - def uuid(self): - uuid_bytes = native_bt.trace_class_get_uuid(self._ptr) - if uuid_bytes is None: - return - - return uuidp.UUID(bytes=uuid_bytes) - - def _uuid(self, uuid): - utils._check_type(uuid, uuidp.UUID) - native_bt.trace_class_set_uuid(self._ptr, uuid.bytes) - - _uuid = property(fset=_uuid) - # Instantiate a trace of this class. - def __call__(self, name=None): + def __call__(self, name=None, uuid=None, env=None): trace_ptr = native_bt.trace_create(self._ptr) if trace_ptr is None: @@ -131,6 +71,13 @@ class _TraceClass(object._SharedObject, collections.abc.Mapping): if name is not None: trace._name = name + if uuid is not None: + trace._uuid = uuid + + if env is not None: + for key, value in env.items(): + trace.env[key] = value + return trace # Number of stream classes in this trace class. @@ -161,10 +108,6 @@ class _TraceClass(object._SharedObject, collections.abc.Mapping): yield id - @property - def env(self): - return _TraceClassEnv(self) - def create_stream_class(self, id=None, name=None, packet_context_field_class=None,