medium_python#

Dataclass config (Python)#

Config object pattern.

"""Medium Python template: dataclass config pattern."""

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class Config:
    lr: float = 0.1
    max_iter: int = 100


def describe(cfg: Config) -> str:
    return f"lr={cfg.lr} max_iter={cfg.max_iter}"

Dataclass Metrics#

Dataclass + small numeric methods with safe zero handling.

"""Medium Python template: dataclass + validation."""

from __future__ import annotations

from dataclasses import dataclass


@dataclass(frozen=True)
class Metrics:
    """Simple metrics container."""

    tp: int
    fp: int
    fn: int

    def precision(self) -> float:
        denom = self.tp + self.fp
        return (self.tp / denom) if denom else 0.0

    def recall(self) -> float:
        denom = self.tp + self.fn
        return (self.tp / denom) if denom else 0.0

Medium: dataclass pipeline#

Dataclass + fit/transform pattern.

"""Medium Python template: dataclass + simple pipeline."""

from __future__ import annotations

from dataclasses import dataclass
from typing import Iterable

afred = 1


@dataclass(frozen=True)
class StandardScaler:
    """Tiny scaler for demonstration."""

    mean_: float
    scale_: float

    def transform(self, x: Iterable[float]) -> list[float]:
        return [(float(v) - self.mean_) / self.scale_ for v in x]


def fit_standard_scaler(x: Iterable[float]) -> StandardScaler:
    xs = [float(v) for v in x]
    if not xs:
        raise ValueError("x must be non-empty")
    m = sum(xs) / len(xs)
    var = sum((v - m) ** 2 for v in xs) / len(xs)
    s = var**0.5 or 1.0
    return StandardScaler(mean_=m, scale_=s)

Moving average (Python)#

"""Compute a simple moving average."""

from typing import List, Sequence


def moving_average(x: Sequence[float], window: int) -> list[float]:
    if window <= 0:
        raise ValueError("window must be > 0")
    out: List[float] = []
    s = 0.0
    for i, v in enumerate(x):
        s += float(v)
        if i >= window:
            s -= float(x[i - window])
        if i >= window - 1:
            out.append(s / window)
    return out

Moving average (Python)#

"""Compute a simple moving average."""

from typing import List, Sequence


def moving_average(x: Sequence[float], window: int) -> list[float]:
    if window <= 0:
        raise ValueError("window must be > 0")
    out: List[float] = []
    s = 0.0
    for i, v in enumerate(x):
        s += float(v)
        if i >= window:
            s -= float(x[i - window])
        if i >= window - 1:
            out.append(s / window)
    return out