devel_numpy_c_api_python#
Devel NumPy: optional#
Optional NumPy import pattern.
"""Devel NumPy Python template: optional NumPy usage."""
from __future__ import annotations
from typing import Sequence
def maybe_mean(x: Sequence[float]) -> float:
"""Compute mean; uses NumPy if installed, otherwise pure Python."""
try:
import numpy as np # type: ignore
except Exception:
xs = [float(v) for v in x]
if not xs:
raise ValueError("empty")
return sum(xs) / len(xs)
arr = np.asarray(x, dtype=float)
if arr.size == 0:
raise ValueError("empty")
return float(arr.mean())
NumPy conversion (Python)#
Optional NumPy usage with explicit import.
"""Devel Python template: NumPy usage (optional dependency)."""
from __future__ import annotations
from typing import Any
def as_float64_array(x: Any):
"""Convert input to a float64 NumPy array.
Raises ImportError if NumPy is not installed.
"""
import numpy as np # noqa: PLC0415
return np.asarray(x, dtype=np.float64)
Dataclass Point (Python)#
"""Dataclass example."""
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: float
y: float
def norm2(p: Point) -> float:
return (p.x * p.x + p.y * p.y) ** 0.5
Dataclass Point (Python)#
"""Dataclass example."""
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: float
y: float
def norm2(p: Point) -> float:
return (p.x * p.x + p.y * p.y) ** 0.5
Dataclass Point (Python)#
"""Dataclass example."""
from dataclasses import dataclass
@dataclass(frozen=True)
class Point:
x: float
y: float
def norm2(p: Point) -> float:
return (p.x * p.x + p.y * p.y) ** 0.5