Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions src/pystatsv1/trackd/__init__.py
Original file line number Diff line number Diff line change
@@ -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",
]
15 changes: 15 additions & 0 deletions src/pystatsv1/trackd/_errors.py
Original file line number Diff line number Diff line change
@@ -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."""
16 changes: 16 additions & 0 deletions src/pystatsv1/trackd/_types.py
Original file line number Diff line number Diff line change
@@ -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]
8 changes: 8 additions & 0 deletions tests/test_trackd_imports.py
Original file line number Diff line number Diff line change
@@ -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