aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/pipeline_input_context/context_definition.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/user_guide/pipeline_input_context/context_definition.md')
-rw-r--r--docs/user_guide/pipeline_input_context/context_definition.md58
1 files changed, 58 insertions, 0 deletions
diff --git a/docs/user_guide/pipeline_input_context/context_definition.md b/docs/user_guide/pipeline_input_context/context_definition.md
new file mode 100644
index 0000000..9f4981c
--- /dev/null
+++ b/docs/user_guide/pipeline_input_context/context_definition.md
@@ -0,0 +1,58 @@
+Define a context class
+======================
+
+The [ArContext](../../argaze.md/#argaze.ArFeatures.ArContext) class defines a generic class interface to handle pipeline inputs according to [Python context manager feature](https://docs.python.org/3/reference/datamodel.html#context-managers).
+
+# Write Python context file
+
+A specific [ArContext](../../argaze.md/#argaze.ArFeatures.ArContext) can be defined into a Python file.
+
+Here is an example context defined into *my_context.py* file:
+
+```python
+from argaze import ArFeatures, DataFeatures
+
+class Example(ArFeatures.ArContext):
+
+ @DataFeatures.PipelineStepInit
+ def __init__(self, **kwargs):
+
+ # Init ArContext class
+ super().__init__()
+
+ # Init private attribute
+ self.__parameter = ...
+
+ @property
+ def parameter(self):
+ """Any required parameter."""
+ return self.__parameter
+
+ @parameter.setter
+ def parameter(self, parameter):
+ self.__parameter = parameter
+
+ @DataFeatures.PipelineStepEnter
+ def __enter__(self):
+
+ # Start context according any required parameter
+ ... self.parameter
+
+ # Assuming that timestamp, x and y values are available
+ ...
+
+ # Process timestamped gaze position
+ self._process_gaze_position(timestamp = timestamp, x = x, y = y)
+
+ return self
+
+ @DataFeatures.PipelineStepExit
+ def __exit__(self, exception_type, exception_value, exception_traceback):
+
+ # End context
+ ...
+```
+
+!!! note ""
+
+ The next chapter explains how to [load a context to connect it with a pipeline](configuration_and_connection.md). \ No newline at end of file