bt2: Add `_Clock*Const` classes and adapt tests
[babeltrace.git] / src / bindings / python / bt2 / bt2 / trace.py
index 8a7e0d4426736fb06a9417e39b80262b69b7b214..fcfd16b1948dcf65edf7ebf79da0751934074461 100644 (file)
@@ -21,7 +21,6 @@
 # THE SOFTWARE.
 
 from bt2 import native_bt, object, utils
-from bt2 import field_class as bt2_field_class
 import collections.abc
 from bt2 import value as bt2_value
 from bt2 import stream as bt2_stream
@@ -32,7 +31,7 @@ import functools
 import uuid as uuidp
 
 
-class _TraceEnv(collections.abc.MutableMapping):
+class _TraceEnvironment(collections.abc.MutableMapping):
     def __init__(self, trace):
         self._trace = trace
 
@@ -116,6 +115,19 @@ class _Trace(object._SharedObject, collections.abc.Mapping):
         assert trace_class_ptr is not None
         return bt2_trace_class._TraceClass._create_from_ptr_and_get_ref(trace_class_ptr)
 
+    @property
+    def user_attributes(self):
+        ptr = native_bt.trace_borrow_user_attributes(self._ptr)
+        assert ptr is not None
+        return bt2_value._create_from_ptr_and_get_ref(ptr)
+
+    def _user_attributes(self, user_attributes):
+        value = bt2_value.create_value(user_attributes)
+        utils._check_type(value, bt2_value.MapValue)
+        native_bt.trace_set_user_attributes(self._ptr, value._ptr)
+
+    _user_attributes = property(fset=_user_attributes)
+
     @property
     def name(self):
         return native_bt.trace_get_name(self._ptr)
@@ -142,10 +154,10 @@ class _Trace(object._SharedObject, collections.abc.Mapping):
     _uuid = property(fset=_uuid)
 
     @property
-    def env(self):
-        return _TraceEnv(self)
+    def environment(self):
+        return _TraceEnvironment(self)
 
-    def create_stream(self, stream_class, id=None, name=None):
+    def create_stream(self, stream_class, id=None, name=None, user_attributes=None):
         utils._check_type(stream_class, bt2_stream_class._StreamClass)
 
         if stream_class.assigns_automatic_stream_id:
@@ -174,6 +186,9 @@ class _Trace(object._SharedObject, collections.abc.Mapping):
         if name is not None:
             stream._name = name
 
+        if user_attributes is not None:
+            stream._user_attributes = user_attributes
+
         return stream
 
     def add_destruction_listener(self, listener):
This page took 0.024451 seconds and 4 git commands to generate.