matten_data/lib.rs
1//! `matten-data` — a tiny table-to-Tensor preparation companion for small PoC
2//! datasets.
3//!
4//! # Status
5//!
6//! **Experimental (scaffold).** This crate is an approved, scope-locked companion
7//! (RFC-033) but currently contains no public API. Table ingestion and conversion
8//! land in later releases once RFC-034 (table model) and RFC-035 (CSV ingestion and
9//! numeric conversion) are accepted and implemented. Maturity is expressed by this
10//! Status label, not by the crate version: under lock-step family versioning
11//! (RFC-030) the crate shares the workspace family version.
12//!
13//! # What it will be
14//!
15//! A small helper for the boring step between table-like input and a numeric
16//! [`matten::Tensor`]:
17//!
18//! ```text
19//! small CSV / table-like data
20//! -> inspect schema
21//! -> select columns by name
22//! -> clean missing values explicitly
23//! -> convert to numeric explicitly
24//! -> matten::Tensor
25//! ```
26//!
27//! # What it is not
28//!
29//! `matten-data` is **not a dataframe library**. It has no joins, group-by, pivot,
30//! query DSL, lazy execution, indexing/`loc`/`iloc`, rolling/window operations,
31//! datetime engine, categorical dtype system, or large-data streaming. For those
32//! workloads use [Polars](https://pola.rs), [DataFusion](https://datafusion.apache.org),
33//! Pandas, or another dataframe/query tool.
34//!
35//! # Relationship to core `dynamic`
36//!
37//! Core `matten`'s `dynamic` feature is *value-level* ingestion (mixed values inside
38//! a `Tensor`, with explicit `try_numeric()`). `matten-data` is *table-level*
39//! preparation (headers, named columns, schema summary, table-shaped missing-value
40//! policy) whose end goal is a numeric `Tensor`. `matten-data` may use core
41//! `dynamic` internally, but it does not expose a second computation engine.
42//!
43//! # Dependency direction
44//!
45//! `matten-data` depends on core `matten`; core `matten` never depends on
46//! `matten-data`. The dependency-boundary CI check enforces this.
47
48#![forbid(unsafe_code)]
49
50// Reserved module boundaries for later RFCs. These are intentionally private and
51// empty in the scaffold; they are filled and selectively exposed only when their
52// RFCs are accepted and implemented. Do not add public API here in the scaffold.
53mod csv; // RFC-035: CSV ingestion
54mod error; // RFC-034 / RFC-035: MattenDataError
55mod numeric; // RFC-035: numeric conversion -> NumericTable -> Tensor
56mod schema; // RFC-034 / RFC-035: SchemaSummary / ColumnKind
57mod table; // RFC-034: Table model