views-frames 1.10.1__tar.gz → 1.10.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. {views_frames-1.10.1 → views_frames-1.10.2}/PKG-INFO +3 -3
  2. {views_frames-1.10.1 → views_frames-1.10.2}/README.md +2 -2
  3. {views_frames-1.10.1 → views_frames-1.10.2}/pyproject.toml +1 -1
  4. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/feature_frame.py +12 -6
  5. {views_frames-1.10.1 → views_frames-1.10.2}/.gitignore +0 -0
  6. {views_frames-1.10.1 → views_frames-1.10.2}/LICENSE +0 -0
  7. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/__init__.py +0 -0
  8. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/_typing.py +0 -0
  9. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/_validation.py +0 -0
  10. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/conformance/__init__.py +0 -0
  11. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/index.py +0 -0
  12. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/io/__init__.py +0 -0
  13. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/io/arrow.py +0 -0
  14. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/io/npz.py +0 -0
  15. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/metadata.py +0 -0
  16. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/prediction_frame.py +0 -0
  17. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/protocols.py +0 -0
  18. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/py.typed +0 -0
  19. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/spatial_level.py +0 -0
  20. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames/target_frame.py +0 -0
  21. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/__init__.py +0 -0
  22. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/conformance.py +0 -0
  23. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/frames.py +0 -0
  24. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/grouping.py +0 -0
  25. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/module.py +0 -0
  26. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/proportional.py +0 -0
  27. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/py.typed +0 -0
  28. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/result.py +0 -0
  29. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_reconcile/validation.py +0 -0
  30. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/__init__.py +0 -0
  31. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/_common.py +0 -0
  32. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/aggregate.py +0 -0
  33. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/bimodality.py +0 -0
  34. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/collapse.py +0 -0
  35. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/config.py +0 -0
  36. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/conformance.py +0 -0
  37. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/exceedance.py +0 -0
  38. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/expected_shortfall.py +0 -0
  39. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/interval.py +0 -0
  40. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/point.py +0 -0
  41. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/py.typed +0 -0
  42. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/summarize_tower.py +0 -0
  43. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/tower.py +0 -0
  44. {views_frames-1.10.1 → views_frames-1.10.2}/src/views_frames_summarize/tower_point.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: views-frames
3
- Version: 1.10.1
3
+ Version: 1.10.2
4
4
  Summary: The VIEWS platform data-contract layer: immutable array+identifier frames (numpy only, root of the dependency DAG).
5
5
  Project-URL: Homepage, https://github.com/views-platform/views-frames
6
6
  Project-URL: Repository, https://github.com/views-platform/views-frames
@@ -36,7 +36,7 @@ Description-Content-Type: text/markdown
36
36
  > containers (`FeatureFrame`, `PredictionFrame`, and their anticipated siblings)
37
37
  > that every other repo depends on and that depends on nothing internal.
38
38
  >
39
- > **Status:** **v1.10.0 — frozen API, published to PyPI** (frozen since v1.0.0, ADR-018; the
39
+ > **Status:** **v1.10.2 — frozen API, published to PyPI** (frozen since v1.0.0, ADR-018; the
40
40
  > v1.1 surface is
41
41
  > purely additive — the coherent posterior summary, ADR-019; v1.2.0 rebuilt the tower
42
42
  > `outside-in`, C-44; v1.3.0 makes the tower summary distribution-agnostic — no magnitude
@@ -53,7 +53,7 @@ Description-Content-Type: text/markdown
53
53
  > `research/figures/` tower-figure toolkit; v1.10.0 adds the **dense-grid fill**
54
54
  > primitive — `reindex_fill(other, *, fill_value)` on all three frames +
55
55
  > `SpatioTemporalIndex.cartesian` + the published `assert_reindex_fill_law`, ADR-026,
56
- > unblocking pandas-free FAO ingestion). This
56
+ > unblocking pandas-free FAO ingestion; v1.10.1 makes `io.arrow.load` fail loudly on a parquet whose row order breaks the wire contract, #199; v1.10.2 changes no behaviour — it arms the documentation check in CI, turns eleven falsification tests from README-wording checks into behaviour checks, and records ADR-027 declining the construction shortcut). This
57
57
  > README is the design
58
58
  > bible; the contract it specifies is realised in `src/views_frames/` (index, frames,
59
59
  > io, conformance suite) plus the `src/views_frames_summarize/` sibling package
@@ -4,7 +4,7 @@
4
4
  > containers (`FeatureFrame`, `PredictionFrame`, and their anticipated siblings)
5
5
  > that every other repo depends on and that depends on nothing internal.
6
6
  >
7
- > **Status:** **v1.10.0 — frozen API, published to PyPI** (frozen since v1.0.0, ADR-018; the
7
+ > **Status:** **v1.10.2 — frozen API, published to PyPI** (frozen since v1.0.0, ADR-018; the
8
8
  > v1.1 surface is
9
9
  > purely additive — the coherent posterior summary, ADR-019; v1.2.0 rebuilt the tower
10
10
  > `outside-in`, C-44; v1.3.0 makes the tower summary distribution-agnostic — no magnitude
@@ -21,7 +21,7 @@
21
21
  > `research/figures/` tower-figure toolkit; v1.10.0 adds the **dense-grid fill**
22
22
  > primitive — `reindex_fill(other, *, fill_value)` on all three frames +
23
23
  > `SpatioTemporalIndex.cartesian` + the published `assert_reindex_fill_law`, ADR-026,
24
- > unblocking pandas-free FAO ingestion). This
24
+ > unblocking pandas-free FAO ingestion; v1.10.1 makes `io.arrow.load` fail loudly on a parquet whose row order breaks the wire contract, #199; v1.10.2 changes no behaviour — it arms the documentation check in CI, turns eleven falsification tests from README-wording checks into behaviour checks, and records ADR-027 declining the construction shortcut). This
25
25
  > README is the design
26
26
  > bible; the contract it specifies is realised in `src/views_frames/` (index, frames,
27
27
  > io, conformance suite) plus the `src/views_frames_summarize/` sibling package
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "views-frames"
7
- version = "1.10.1"
7
+ version = "1.10.2"
8
8
  description = "The VIEWS platform data-contract layer: immutable array+identifier frames (numpy only, root of the dependency DAG)."
9
9
  authors = [
10
10
  { name = "Simon Polichinel von der Maase", email = "simmaa@prio.org" },
@@ -1,10 +1,11 @@
1
1
  """`FeatureFrame` — model inputs (X): ``y_features (N, F, S)`` float32.
2
2
 
3
3
  A sibling frame (no shared base; ADR-011 Option C). Relocated from
4
- views-datafactory. The sample axis is **always explicit** (ADR-012): legacy 2D
5
- ``(N, F)`` arrays are lifted to ``(N, F, 1)`` only through the explicit
6
- :meth:`from_2d` shim. Carries ``feature_names`` and a typed metadata header
7
- (ADR-013). ``from_grid`` is **not** here — it stays in views-datafactory.
4
+ views-datafactory. The sample axis is **always explicit** (ADR-012), so
5
+ unsampled features are stored as ``(N, F, 1)``; :meth:`from_2d` builds such a
6
+ frame from a 2-D ``(N, F)`` array by adding that trailing axis. Carries
7
+ ``feature_names`` and a typed metadata header (ADR-013). ``from_grid`` is
8
+ **not** here — it stays in views-datafactory.
8
9
  """
9
10
 
10
11
  from __future__ import annotations
@@ -38,7 +39,7 @@ class FeatureFrame:
38
39
  raise ValueError(
39
40
  "FeatureFrame y_features must be 3D (N, F, S) with an explicit "
40
41
  f"trailing sample axis (ADR-012), got ndim={values.ndim}. "
41
- "Use FeatureFrame.from_2d to lift a legacy (N, F) array."
42
+ "Use FeatureFrame.from_2d to build a frame from a 2-D (N, F) array."
42
43
  )
43
44
  if values.shape[0] != index.n_rows:
44
45
  raise ValueError(
@@ -62,7 +63,12 @@ class FeatureFrame:
62
63
  feature_names: list[str],
63
64
  metadata: FrameMetadata | None = None,
64
65
  ) -> FeatureFrame:
65
- """Lift a legacy 2D ``(N, F)`` array to ``(N, F, 1)`` (deprecated shim)."""
66
+ """Build a frame from a 2-D ``(N, F)`` array of unsampled features.
67
+
68
+ The sample axis is always explicit (ADR-012), so unsampled features are
69
+ stored as ``(N, F, 1)``. This adds that trailing axis for you. Raises
70
+ ``ValueError`` if the input is not 2-D.
71
+ """
66
72
  arr = coerce_values(y_features_2d)
67
73
  if arr.ndim != 2:
68
74
  raise ValueError(f"from_2d expects a 2D (N, F) array, got ndim={arr.ndim}")
File without changes
File without changes