From ff1ba2c0c38b297f1f4451b6f667b1a56699767d Mon Sep 17 00:00:00 2001 From: Nicholas Karlson Date: Mon, 19 Jan 2026 03:09:01 -0800 Subject: [PATCH] Chore: add Track D mini-library package skeleton --- src/pystatsv1/trackd/__init__.py | 19 +++++++++++++++++++ src/pystatsv1/trackd/_errors.py | 15 +++++++++++++++ src/pystatsv1/trackd/_types.py | 16 ++++++++++++++++ tests/test_trackd_imports.py | 8 ++++++++ 4 files changed, 58 insertions(+) create mode 100644 src/pystatsv1/trackd/__init__.py create mode 100644 src/pystatsv1/trackd/_errors.py create mode 100644 src/pystatsv1/trackd/_types.py create mode 100644 tests/test_trackd_imports.py diff --git a/src/pystatsv1/trackd/__init__.py b/src/pystatsv1/trackd/__init__.py new file mode 100644 index 0000000..b0fe20e --- /dev/null +++ b/src/pystatsv1/trackd/__init__.py @@ -0,0 +1,19 @@ +"""Track D (Business): accounting-oriented statistics, forecasting, and data analysis. + +This subpackage will gradually grow from thin chapter-runner scripts into a reusable +mini-library: data loading, schema checks, feature engineering helpers, forecasting +baselines, and report builders. +""" + +from __future__ import annotations + +from ._errors import TrackDDataError, TrackDSchemaError # noqa: F401 +from ._types import DataFrame, DataFrames, PathLike # noqa: F401 + +__all__ = [ + "DataFrame", + "DataFrames", + "PathLike", + "TrackDDataError", + "TrackDSchemaError", +] diff --git a/src/pystatsv1/trackd/_errors.py b/src/pystatsv1/trackd/_errors.py new file mode 100644 index 0000000..9bca9a2 --- /dev/null +++ b/src/pystatsv1/trackd/_errors.py @@ -0,0 +1,15 @@ +"""Exceptions for Track D helpers.""" + +from __future__ import annotations + + +class TrackDError(Exception): + """Base exception for Track D helpers.""" + + +class TrackDDataError(TrackDError): + """Raised when Track D input data is missing or invalid.""" + + +class TrackDSchemaError(TrackDError): + """Raised when Track D input data fails schema/contract checks.""" diff --git a/src/pystatsv1/trackd/_types.py b/src/pystatsv1/trackd/_types.py new file mode 100644 index 0000000..273c302 --- /dev/null +++ b/src/pystatsv1/trackd/_types.py @@ -0,0 +1,16 @@ +"""Shared types for Track D helpers. + +These are intentionally lightweight. Track D functions should accept common "path +like" inputs and return pandas DataFrames. +""" + +from __future__ import annotations + +from pathlib import Path +from typing import TypeAlias + +import pandas as pd + +PathLike: TypeAlias = str | Path +DataFrame: TypeAlias = pd.DataFrame +DataFrames: TypeAlias = dict[str, pd.DataFrame] diff --git a/tests/test_trackd_imports.py b/tests/test_trackd_imports.py new file mode 100644 index 0000000..4bbbbea --- /dev/null +++ b/tests/test_trackd_imports.py @@ -0,0 +1,8 @@ +from __future__ import annotations + +import importlib + + +def test_trackd_imports() -> None: + mod = importlib.import_module("pystatsv1.trackd") + assert mod is not None