Source code for epicsarchiver.retrieval.archiver_retrieval.processor

"""Module for the retrieval processors."""

from __future__ import annotations

import enum
from dataclasses import dataclass


[docs] class ProcessorName(str, enum.Enum): """Preprocessors for data from the archiver. https://epicsarchiver.readthedocs.io/en/latest/user/userguide.html#processing-of-data """
[docs] FIRSTSAMPLE = "firstSample"
[docs] LASTSAMPLE = "lastSample"
[docs] FIRSTFILL = "firstFill"
[docs] LASTFILL = "lastFill"
[docs] MEAN = "mean"
[docs] MIN = "min"
[docs] MAX = "max"
[docs] COUNT = "count"
[docs] NCOUNT = "ncount"
[docs] NTH = "nth"
[docs] MEDIAN = "median"
[docs] STD = "std"
[docs] JITTER = "jitter"
[docs] IGNOREFLYERS = "ignoreflyers"
[docs] FLYERS = "flyers"
[docs] VARIANCE = "variance"
[docs] POPVARIANCE = "popvariance"
[docs] KURTOSIS = "kurtosis"
[docs] SKEWNESS = "skewness"
[docs] LINEAR = "linear"
[docs] LOESS = "loess"
[docs] OPTIMIZED = "optimized"
[docs] OPTIMLASTSAMPLE = "optimLastSample"
[docs] CAPLOTBINNING = "caplotbinning"
[docs] DEADBAND = "deadBand"
[docs] ERRORBAR = "errorbar"
@dataclass
[docs] class Processor: """Representation of a preprocessor."""
[docs] processor_name: ProcessorName
[docs] bin_size: int | None
[docs] def calc_pv_name(self, pv: str) -> str: """Calculate PV Name to request from the archiver. Args: pv (str): base pv name Returns: str: the preprocessor string """ if self.bin_size: return f"{self.processor_name.value}_{self.bin_size}({pv})" return f"{self.processor_name.value}({pv})"