aboutsummaryrefslogtreecommitdiff
path: root/docs/user_guide/pipeline_input_context/context_definition.md
blob: 9f4981c4b4918da09c9e0e883503bbbe58801c2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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).