paces 0.0.11__tar.gz → 0.0.13__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.
- {paces-0.0.11 → paces-0.0.13}/PKG-INFO +5 -5
- {paces-0.0.11 → paces-0.0.13}/docs/README.md +3 -3
- {paces-0.0.11 → paces-0.0.13}/docs/alignment/README.md +1 -1
- {paces-0.0.11 → paces-0.0.13}/pyproject.toml +5 -5
- {paces-0.0.11 → paces-0.0.13}/tests/data/body_schemas.json +8 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_evidence_schemas.py +6 -0
- {paces-0.0.11 → paces-0.0.13}/.gitignore +0 -0
- {paces-0.0.11 → paces-0.0.13}/LICENSE +0 -0
- {paces-0.0.11 → paces-0.0.13}/README.md +0 -0
- {paces-0.0.11 → paces-0.0.13}/docs/poc-reference/README.md +0 -0
- {paces-0.0.11 → paces-0.0.13}/docs/poc-reference/artifacts/clips.json +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/__init__.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/__main__.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/bodies/__init__.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/bodies/_base.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/bodies/derivation.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/bodies/document.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/bodies/signal.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/bodies/step.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/derivation.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/edits.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/evidence.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/excerpts.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/measure.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/model.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/pose.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/projection.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/render.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/segmenters.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/paces/tools.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/audio_synth.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/data/routine.json +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/poc_fixture.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_chapters.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_cli_surface.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_derivation.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_edit_protection_residuals.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_edits.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_evidence.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_excerpts.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_measure.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_pose.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_render_media.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_roundtrip_poc.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_segment.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_smoke.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/test_vertical_slice.py +0 -0
- {paces-0.0.11 → paces-0.0.13}/tests/video_synth.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: paces
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.13
|
|
4
4
|
Summary: Turn instructional media into structured, interactive learning material
|
|
5
5
|
Project-URL: Homepage, https://github.com/thorwhalen/paces
|
|
6
6
|
Project-URL: Repository, https://github.com/thorwhalen/paces
|
|
@@ -20,8 +20,8 @@ Requires-Dist: argcomplete>=3; extra == 'cli'
|
|
|
20
20
|
Requires-Dist: cw<0.2,>=0.1.1; extra == 'cli'
|
|
21
21
|
Provides-Extra: dev
|
|
22
22
|
Requires-Dist: cw<0.2,>=0.1.1; extra == 'dev'
|
|
23
|
-
Requires-Dist: lacing>=0.0.
|
|
24
|
-
Requires-Dist: mixing[audio,beats]>=0.0.39; extra == 'dev'
|
|
23
|
+
Requires-Dist: lacing>=0.0.54; extra == 'dev'
|
|
24
|
+
Requires-Dist: mixing[audio,beats,media]>=0.0.39; extra == 'dev'
|
|
25
25
|
Requires-Dist: numba>=0.59; extra == 'dev'
|
|
26
26
|
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
|
|
27
27
|
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
@@ -31,9 +31,9 @@ Provides-Extra: docs
|
|
|
31
31
|
Requires-Dist: sphinx-rtd-theme>=1.0; extra == 'docs'
|
|
32
32
|
Requires-Dist: sphinx>=6.0; extra == 'docs'
|
|
33
33
|
Provides-Extra: lacing
|
|
34
|
-
Requires-Dist: lacing>=0.0.
|
|
34
|
+
Requires-Dist: lacing>=0.0.54; extra == 'lacing'
|
|
35
35
|
Provides-Extra: media
|
|
36
|
-
Requires-Dist: mixing>=0.0.39; extra == 'media'
|
|
36
|
+
Requires-Dist: mixing[media]>=0.0.39; extra == 'media'
|
|
37
37
|
Provides-Extra: pose
|
|
38
38
|
Requires-Dist: onnxruntime; extra == 'pose'
|
|
39
39
|
Requires-Dist: rtmlib<0.1,>=0.0.16; extra == 'pose'
|
|
@@ -13,7 +13,7 @@ a dance, plus a hand-written HTML aide-mémoire, plus a paragraph of steering pr
|
|
|
13
13
|
deployed interactive practice page: <https://thorwhalen.com/que_calor_dance/>.
|
|
14
14
|
|
|
15
15
|
The user now wants that generalised into a library, integrated with the **reelee** /
|
|
16
|
-
`video_gen` fleet. Your job is to research, design and build it. **This folder exists so you
|
|
16
|
+
`av` (formerly `video_gen`) fleet. Your job is to research, design and build it. **This folder exists so you
|
|
17
17
|
do not start from scratch.** It records what was built, the parameters that were expensive to
|
|
18
18
|
find, the failures and what each one teaches, the user's own framing of the generalisation,
|
|
19
19
|
and an inventory of what already exists in the fleet.
|
|
@@ -28,7 +28,7 @@ Nothing here is a design you must follow. It is evidence and framing. Argue with
|
|
|
28
28
|
| 2 | **`03-design-brief.md`** | The user's own framing: the parse→AST→render metaphor they explicitly asked to have recorded, the three generalisation axes, and the constraints the POC discovered. |
|
|
29
29
|
| 3 | **`04-reelee-core.md`** | What reelee is, what a reelee "genre" is, and what to reuse. **This determines the package boundary**, so read it before deciding anything structural. |
|
|
30
30
|
| 4 | **`07-annotation-model.md`** | The proposed shape of the AST — the contract between analysis and rendering. |
|
|
31
|
-
| 5 | **`05-fleet-inventory.md`** | What already exists across `
|
|
31
|
+
| 5 | **`05-fleet-inventory.md`** | What already exists across `av`, and honestly which parts are stubs. |
|
|
32
32
|
| 6 | **`02-technical-recipes.md`** | Every technique with working parameters. Reference, not narrative — come back to it when implementing. |
|
|
33
33
|
| 7 | **`06-surfaces-and-conventions.md`** | House style: architecture-first seams, qh, py2mcp, storage, frontend, deploy. |
|
|
34
34
|
| 8 | **`08-naming-candidates.md`** | PyPI-verified name options, and a better word for the "subject" axis. |
|
|
@@ -37,7 +37,7 @@ Nothing here is a design you must follow. It is evidence and framing. Argue with
|
|
|
37
37
|
| — | **`adr/`** | The decisions. **`0003` `video + segmenter`** — read it before designing the analysis phase. `0002` the name. `0001` the alignment engine (intent) — note that much of what you'd otherwise build already exists in `muvid`, `mixing` and `kodokan`. |
|
|
38
38
|
| — | **`alignment/`** | The research behind that ADR: one file per method family, prepared so you don't start from a literature search. |
|
|
39
39
|
| — | **`KICKOFF.md`** | A paste-ready prompt to start a fresh session on this. |
|
|
40
|
-
| — | **`REGISTRATION.md`** | **One command still pending** to register `paces` in the `
|
|
40
|
+
| — | **`REGISTRATION.md`** | **One command still pending** to register `paces` in the `av` group, and why `priv pkg add-package` is deliberately deferred. |
|
|
41
41
|
| — | **`poc-reference/`** | The actual scripts and data. Read `poc-reference/README.md` first — several of those files are recorded dead ends. |
|
|
42
42
|
|
|
43
43
|
## The one-paragraph version
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Alignment research
|
|
2
2
|
|
|
3
3
|
*What this folder is for: preparation for a possible dedicated **alignment tool** in the
|
|
4
|
-
`video_gen` / reelee fleet — the thing that answers "given some artifacts and some media,
|
|
4
|
+
`av` (formerly `video_gen`) / reelee fleet — the thing that answers "given some artifacts and some media,
|
|
5
5
|
which span of the media does each artifact correspond to?". The decision to build it is
|
|
6
6
|
recorded as an intent in `../adr/0001-alignment-engine-as-a-fleet-package.md`; **read that
|
|
7
7
|
first**, then come here for the method-by-method detail.*
|
|
@@ -6,7 +6,7 @@ build-backend = "hatchling.build"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "paces"
|
|
9
|
-
version = "0.0.
|
|
9
|
+
version = "0.0.13"
|
|
10
10
|
description = "Turn instructional media into structured, interactive learning material"
|
|
11
11
|
readme = "README.md"
|
|
12
12
|
license = "MIT"
|
|
@@ -57,7 +57,7 @@ media = [
|
|
|
57
57
|
# all run on the pip-bundled imageio-ffmpeg binary — no system ffmpeg.
|
|
58
58
|
# Floor 0.0.39: make_gif, crop_box= and path-accepting
|
|
59
59
|
# get_video_dimensions ship there.
|
|
60
|
-
"mixing>=0.0.39",
|
|
60
|
+
"mixing[media]>=0.0.39",
|
|
61
61
|
]
|
|
62
62
|
# The pointable subject_locator (issue #15, ADR-0005 §3): rtmlib pose boxes,
|
|
63
63
|
# reached through `paces.pose:rtmlib_pose`. rtmlib is Apache-2.0 (a pure-Python
|
|
@@ -107,7 +107,7 @@ pose = [
|
|
|
107
107
|
# unknown keys — both of which this layer's round trip relies on to fail loudly
|
|
108
108
|
# instead of silently normalising.
|
|
109
109
|
lacing = [
|
|
110
|
-
"lacing>=0.0.
|
|
110
|
+
"lacing>=0.0.54",
|
|
111
111
|
]
|
|
112
112
|
dev = [
|
|
113
113
|
"pytest>=7.0",
|
|
@@ -120,11 +120,11 @@ dev = [
|
|
|
120
120
|
# synthesized audio; mirrored with [audio] so they run rather than skip.
|
|
121
121
|
# The derivation tests do the same on synthetic video — mirrored with
|
|
122
122
|
# [media] (the >=0.0.39 floor wins over [audio]'s >=0.0.36).
|
|
123
|
-
"mixing[beats,audio]>=0.0.39",
|
|
123
|
+
"mixing[beats,audio,media]>=0.0.39",
|
|
124
124
|
"numba>=0.59",
|
|
125
125
|
# The evidence-layer tests run against real, dict-backed lacing stores —
|
|
126
126
|
# mirrored with [lacing] so they run rather than skip.
|
|
127
|
-
"lacing>=0.0.
|
|
127
|
+
"lacing>=0.0.54",
|
|
128
128
|
# tests/test_pose.py reads pyproject.toml to guard the licence perimeter;
|
|
129
129
|
# stdlib tomllib is 3.11+, and a skipped guard guards nothing.
|
|
130
130
|
"tomli>=2.0; python_version < '3.11'",
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"attrs": {
|
|
29
29
|
"additionalProperties": true,
|
|
30
|
+
"default": {},
|
|
30
31
|
"description": "Open bag.",
|
|
31
32
|
"title": "Attrs",
|
|
32
33
|
"type": "object"
|
|
@@ -146,6 +147,7 @@
|
|
|
146
147
|
"properties": {
|
|
147
148
|
"attrs": {
|
|
148
149
|
"additionalProperties": true,
|
|
150
|
+
"default": {},
|
|
149
151
|
"description": "Namespaced open bag, as on the document.",
|
|
150
152
|
"title": "Attrs",
|
|
151
153
|
"type": "object"
|
|
@@ -175,6 +177,7 @@
|
|
|
175
177
|
"type": "string"
|
|
176
178
|
},
|
|
177
179
|
"flags": {
|
|
180
|
+
"default": [],
|
|
178
181
|
"description": "The run's honesty flags (``Segmentation.flags``) — 'naming-abstained', 'origin-estimated: ...', and friends. Evidence about the run, never projected into the document.",
|
|
179
182
|
"items": {
|
|
180
183
|
"type": "string"
|
|
@@ -389,6 +392,7 @@
|
|
|
389
392
|
"pattern": "^-?\\d+(\\.\\d+)?$",
|
|
390
393
|
"type": "string"
|
|
391
394
|
},
|
|
395
|
+
"default": {},
|
|
392
396
|
"description": "Policy parameters the box was resolved under (aspect, pad). A change here re-locates an unlocked entry.",
|
|
393
397
|
"title": "Params",
|
|
394
398
|
"type": "object"
|
|
@@ -460,6 +464,7 @@
|
|
|
460
464
|
},
|
|
461
465
|
"attrs": {
|
|
462
466
|
"additionalProperties": true,
|
|
467
|
+
"default": {},
|
|
463
468
|
"description": "Open bag.",
|
|
464
469
|
"title": "Attrs",
|
|
465
470
|
"type": "object"
|
|
@@ -546,6 +551,7 @@
|
|
|
546
551
|
"properties": {
|
|
547
552
|
"attrs": {
|
|
548
553
|
"additionalProperties": true,
|
|
554
|
+
"default": {},
|
|
549
555
|
"description": "Namespaced open bag, as on the step.",
|
|
550
556
|
"title": "Attrs",
|
|
551
557
|
"type": "object"
|
|
@@ -610,6 +616,7 @@
|
|
|
610
616
|
},
|
|
611
617
|
"span_attrs": {
|
|
612
618
|
"additionalProperties": true,
|
|
619
|
+
"default": {},
|
|
613
620
|
"description": "Open bag on the span.",
|
|
614
621
|
"title": "Span Attrs",
|
|
615
622
|
"type": "object"
|
|
@@ -712,6 +719,7 @@
|
|
|
712
719
|
"type": "string"
|
|
713
720
|
},
|
|
714
721
|
"tags": {
|
|
722
|
+
"default": [],
|
|
715
723
|
"description": "Open tag vocabulary.",
|
|
716
724
|
"items": {
|
|
717
725
|
"type": "string"
|
|
@@ -12,6 +12,12 @@ halves of that claim:
|
|
|
12
12
|
migration; a *changed* one is a wire break for every already-written store,
|
|
13
13
|
and this test is what makes that a decision rather than an accident.
|
|
14
14
|
|
|
15
|
+
Annotation-only keywords a lacing upgrade starts exporting (``default``,
|
|
16
|
+
``description``) may be re-snapshotted — they validate nothing, so no stored
|
|
17
|
+
body changes meaning (lacing 0.0.54 added the ``default_factory`` defaults;
|
|
18
|
+
the floor in pyproject follows). A change to a field, type or ``required`` is
|
|
19
|
+
the wire break and needs ``/v2``.
|
|
20
|
+
|
|
15
21
|
Regenerating the snapshot deliberately::
|
|
16
22
|
|
|
17
23
|
python -m tests.test_evidence_schemas # writes tests/data/body_schemas.json
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|