Newer
Older
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
# Adding new functions/tests
## Interface
- All user exposed quality checks and processing algorithms need to implement the following interface:
```python
der yourTestFunction(
data: pandas.DataFrame,
field: str,
flagger: saqc.flagger.BaseFlagger,
*args: Any,
**kwargs: Any
) -> (pd.DataFrame, saqc.flagger.BaseFlagger)
```
## Argument Descriptions
| Name | Description |
| ---- | ----------- |
| `data` | The actual dataset |
| `field` | The field/column within `data`, the function is checking/processing |
| `flagger` | A instance of a flagger, responsible for the translation of test results into quality attributes |
| `args` | Any other arguments needed to parametrize the function |
| `kwargs` | Any other keyword arguments needed tp parametrize the function |
## Integrate into SaQC
In order make your function available to the system it needs to be registered. We provide the decorator
[`register`](saqc/functions/register.py) in the module `saqc.functions.register`, to integrate your
test functions into SaQC and expose them via a name of your choice. A complete, yet useless example might
look like that:
```python
@register("myFunc")
def yourTestFunction(data, field, flagger, *args, **kwargs):
return data, flagger
```
## Example
The function [`flagRange`](saqc/funcs/functions.py) provides a simple, yet complete implementation of the
entire test function contribution process. You might want to look into this implementation before you start.
# Adding a new flagger
TODO
# Testing
SaQC comes with an extensive test suite based on [pytest](https://docs.pytest.org/en/latest/). In order to
run all tests use:
```sh
python -m pytest .
```
# Coding conventions
We use (black)[https://black.readthedocs.io/en/stable/]
## Imports
Only absolute imports are accepted