voicerender 0.1.1__tar.gz → 0.2.1__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.
- {voicerender-0.1.1 → voicerender-0.2.1}/.github/workflows/codecov.yml +2 -2
- {voicerender-0.1.1 → voicerender-0.2.1}/.github/workflows/pre-commit.yml +1 -1
- {voicerender-0.1.1 → voicerender-0.2.1}/.github/workflows/python-publish.yml +2 -2
- {voicerender-0.1.1 → voicerender-0.2.1}/.github/workflows/tests.yml +50 -18
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +23 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/audit/commit-audit.yaml +36 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/entries/entry-0001.md +29 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/release.md +27 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/audit/commit-audit.yaml +690 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0001.md +37 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0002.md +39 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0003.md +39 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0004.md +29 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0005.md +31 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0006.md +30 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0007.md +31 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/release.md +27 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/audit/commit-audit.yaml +176 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0001.md +48 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0002.md +34 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0003.md +28 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0004.md +27 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/entries/entry-0005.md +31 -0
- voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.2.1/release.md +27 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.1.1/audit-decisions.yaml +12 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.1.1/entries.yaml +25 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/audit-decisions.yaml +338 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/audit.yaml +425 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/entries.yaml +139 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/19f5b06.patch +1522 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/245ca9f.patch +637 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/42a90e3.patch +10816 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/480cbea.patch +1700 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/4eb3c28.patch +370 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/50f298e.patch +176 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/56ae327.patch +1645 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/57f1e24.patch +693 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/6dae2b6.patch +2477 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/84f29db.patch +250 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/a390661.patch +598 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/a431dfa.patch +264 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/c2be7b3.patch +5101 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/da15247.patch +1489 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/ede34ea.patch +385 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/evidence/manifest.json +361 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.0/range.json +13 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/audit-decisions.yaml +85 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/audit.yaml +122 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/entries.yaml +107 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/evidence/3342e15.patch +50 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/evidence/3c82349.patch +4812 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/evidence/7f466cc.patch +163 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/evidence/84f629e.patch +675 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/evidence/b7e1917.patch +147 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/evidence/manifest.json +100 -0
- voicerender-0.2.1/.ledger/releaseledger/work/0.2.1/range.json +13 -0
- voicerender-0.2.1/MANIFEST.in +3 -0
- voicerender-0.2.1/PKG-INFO +359 -0
- voicerender-0.2.1/README.md +319 -0
- voicerender-0.2.1/docs/changelog.md +49 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/docs/conf.py +5 -5
- voicerender-0.2.1/docs/index.md +67 -0
- voicerender-0.2.1/docs/renderprofile.md +156 -0
- voicerender-0.2.1/examples/README.md +51 -0
- voicerender-0.2.1/examples/plans/chapter.renderplan.toml +39 -0
- voicerender-0.2.1/examples/voices/narration.renderprofile.toml +36 -0
- voicerender-0.2.1/examples/voices/pocket-reference.toml +39 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/pyproject.toml +19 -6
- {voicerender-0.1.1 → voicerender-0.2.1}/tests/test_backends.py +93 -41
- {voicerender-0.1.1 → voicerender-0.2.1}/tests/test_capacity.py +3 -3
- voicerender-0.2.1/tests/test_cli.py +624 -0
- voicerender-0.2.1/tests/test_engine_contracts.py +48 -0
- voicerender-0.2.1/tests/test_engine_registry.py +729 -0
- voicerender-0.2.1/tests/test_inflectsynth_engine.py +264 -0
- voicerender-0.2.1/tests/test_kittensynth_engine.py +382 -0
- voicerender-0.2.1/tests/test_kokoro_reference.py +405 -0
- voicerender-0.2.1/tests/test_managed_voices.py +176 -0
- voicerender-0.2.1/tests/test_package_metadata.py +6 -0
- voicerender-0.2.1/tests/test_pocketsynth_managed.py +591 -0
- voicerender-0.2.1/tests/test_preflight.py +875 -0
- voicerender-0.2.1/tests/test_qwen3_voice_design.py +185 -0
- voicerender-0.2.1/tests/test_qwen3synth_engine.py +688 -0
- voicerender-0.2.1/tests/test_render_book.py +934 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/tests/test_renderer.py +2 -37
- voicerender-0.2.1/tests/test_renderplan_input.py +884 -0
- voicerender-0.2.1/tests/test_renderplan_render.py +1396 -0
- voicerender-0.2.1/tests/test_renderprofile.py +395 -0
- voicerender-0.2.1/tests/test_soprosynth_engine.py +432 -0
- voicerender-0.2.1/tests/test_storage.py +16 -0
- voicerender-0.2.1/tests/test_voice_source_codec.py +182 -0
- voicerender-0.2.1/tests/test_voice_sources.py +200 -0
- voicerender-0.2.1/tests/wheel_smoke.py +248 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/__init__.py +74 -19
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/_version.py +3 -3
- voicerender-0.2.1/voicerender/book.py +1018 -0
- voicerender-0.2.1/voicerender/book_contract.py +78 -0
- voicerender-0.2.1/voicerender/book_layout.py +143 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/capacity.py +5 -5
- voicerender-0.2.1/voicerender/cli.py +981 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/base.py +37 -3
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/inflectsynth.py +192 -63
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/kittensynth.py +243 -14
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/kokoro.py +499 -33
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/piper.py +1 -1
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/pipersynth.py +94 -24
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/pocket.py +1 -1
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/pocketsynth.py +140 -198
- voicerender-0.2.1/voicerender/engines/profiles.py +148 -0
- voicerender-0.2.1/voicerender/engines/qwen3synth.py +967 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/registry.py +48 -27
- voicerender-0.2.1/voicerender/engines/soprosynth.py +997 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/supertonicsynth.py +14 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/errors.py +8 -0
- voicerender-0.2.1/voicerender/managed_voices.py +207 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/models.py +0 -1
- voicerender-0.2.1/voicerender/preflight.py +296 -0
- voicerender-0.2.1/voicerender/py.typed +0 -0
- voicerender-0.2.1/voicerender/renderplan_input.py +667 -0
- voicerender-0.2.1/voicerender/renderplan_render.py +835 -0
- voicerender-0.2.1/voicerender/renderprofile.py +310 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/storage.py +3 -2
- voicerender-0.2.1/voicerender/voice_design.py +357 -0
- voicerender-0.2.1/voicerender/voice_source_codec.py +196 -0
- voicerender-0.2.1/voicerender/voice_sources.py +887 -0
- voicerender-0.2.1/voicerender.egg-info/PKG-INFO +359 -0
- voicerender-0.2.1/voicerender.egg-info/SOURCES.txt +172 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender.egg-info/requires.txt +11 -3
- voicerender-0.2.1/voicerender.egg-info/scm_file_list.json +167 -0
- voicerender-0.2.1/voicerender.egg-info/scm_version.json +8 -0
- voicerender-0.1.1/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +0 -6
- voicerender-0.1.1/MANIFEST.in +0 -2
- voicerender-0.1.1/PKG-INFO +0 -254
- voicerender-0.1.1/README.md +0 -220
- voicerender-0.1.1/docs/changelog.md +0 -15
- voicerender-0.1.1/docs/utterplan-v5-integration.md +0 -77
- voicerender-0.1.1/examples/plans/chapter.utterplan.toml +0 -13
- voicerender-0.1.1/examples/voices/pocket-reference.toml +0 -10
- voicerender-0.1.1/examples/voices/voice.toml +0 -9
- voicerender-0.1.1/tests/fixtures/utterplan_v5_contract.toml +0 -36
- voicerender-0.1.1/tests/test_cli_v5.py +0 -236
- voicerender-0.1.1/tests/test_engine_registry.py +0 -330
- voicerender-0.1.1/tests/test_manifest.py +0 -229
- voicerender-0.1.1/tests/test_render_v5.py +0 -1072
- voicerender-0.1.1/tests/test_utterplan_v5.py +0 -224
- voicerender-0.1.1/voicerender/cli.py +0 -345
- voicerender-0.1.1/voicerender/handoff.py +0 -62
- voicerender-0.1.1/voicerender/inputs/__init__.py +0 -21
- voicerender-0.1.1/voicerender/inputs/utterplan_v5.py +0 -897
- voicerender-0.1.1/voicerender/manifest.py +0 -750
- voicerender-0.1.1/voicerender/render_v5.py +0 -1193
- voicerender-0.1.1/voicerender/schemas/render-manifest-v2.schema.json +0 -415
- voicerender-0.1.1/voicerender.egg-info/PKG-INFO +0 -254
- voicerender-0.1.1/voicerender.egg-info/SOURCES.txt +0 -95
- voicerender-0.1.1/voicerender.egg-info/scm_file_list.json +0 -90
- voicerender-0.1.1/voicerender.egg-info/scm_version.json +0 -8
- {voicerender-0.1.1 → voicerender-0.2.1}/.codecrate.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.gitignore +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/ledger.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/.ledger-project.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/config.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/audit/commit-audit.yaml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0001.md +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0002.md +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0003.md +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0004.md +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0005.md +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/release.md +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/audit-decisions.yaml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/entries.yaml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/evidence/264eb9b.patch +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/evidence/774f6f2.patch +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/evidence/9e71e84.patch +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/evidence/c4a2872.patch +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/evidence/fb7faaf.patch +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/releaseledger/work/v0.1.0/evidence/manifest.json +0 -0
- /voicerender-0.1.1/voicerender/py.typed → /voicerender-0.2.1/.ledger/releaseledger/write.lock +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/taskledger/.ledger-project.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.ledger/taskledger/config.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/.pre-commit-config.yaml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/LICENSE +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/docs/Makefile +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/docs/make.bat +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/docs/make.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/docs/requirements.txt +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/examples/plans/chapter.voiceplan.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/examples/voices/piper.toml +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/setup.cfg +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/__main__.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/__init__.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/api_probe.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/catalog.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/metadata.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/engines/selection.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/events.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/lexicons.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender/render.py +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender.egg-info/dependency_links.txt +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender.egg-info/entry_points.txt +0 -0
- {voicerender-0.1.1 → voicerender-0.2.1}/voicerender.egg-info/top_level.txt +0 -0
|
@@ -14,10 +14,10 @@ jobs:
|
|
|
14
14
|
python-version: "3.12"
|
|
15
15
|
- name: Run tests with coverage
|
|
16
16
|
run: |
|
|
17
|
-
python -m pip install --upgrade pip
|
|
17
|
+
python -m pip install --upgrade "pip<26.2"
|
|
18
18
|
python -m pip install coverage pytest pytest-cov
|
|
19
19
|
python -m pip install -e ".[dev]"
|
|
20
|
-
python -m pytest --cov=
|
|
20
|
+
python -m pytest --cov=voicerender --cov-report=xml --junitxml=junit.xml
|
|
21
21
|
- name: Upload coverage to Codecov
|
|
22
22
|
uses: codecov/codecov-action@v5
|
|
23
23
|
with:
|
|
@@ -23,7 +23,7 @@ jobs:
|
|
|
23
23
|
python-version: "3.13"
|
|
24
24
|
|
|
25
25
|
- name: Install build tooling
|
|
26
|
-
run: python -m pip install --upgrade pip build twine
|
|
26
|
+
run: python -m pip install --upgrade "pip<26.2" build twine
|
|
27
27
|
- name: Build package
|
|
28
28
|
run: |
|
|
29
29
|
rm -rf dist
|
|
@@ -72,7 +72,7 @@ jobs:
|
|
|
72
72
|
names = set(archive.namelist())
|
|
73
73
|
expected = {
|
|
74
74
|
"voicerender/py.typed",
|
|
75
|
-
"voicerender/
|
|
75
|
+
"voicerender/renderplan_render.py",
|
|
76
76
|
}
|
|
77
77
|
assert expected <= names
|
|
78
78
|
PY
|
|
@@ -20,7 +20,7 @@ jobs:
|
|
|
20
20
|
python-version: ${{ matrix.python-version }}
|
|
21
21
|
- name: Install package
|
|
22
22
|
run: |
|
|
23
|
-
python -m pip install --upgrade pip
|
|
23
|
+
python -m pip install --upgrade "pip<26.2"
|
|
24
24
|
python -m pip install -e ".[dev]"
|
|
25
25
|
python -m compileall -q voicerender tests
|
|
26
26
|
- name: Run tests
|
|
@@ -36,7 +36,7 @@ jobs:
|
|
|
36
36
|
python-version: "3.12"
|
|
37
37
|
- name: Install quality tools
|
|
38
38
|
run: |
|
|
39
|
-
python -m pip install --upgrade pip
|
|
39
|
+
python -m pip install --upgrade "pip<26.2"
|
|
40
40
|
python -m pip install -e ".[dev]"
|
|
41
41
|
- name: Run quality checks
|
|
42
42
|
run: |
|
|
@@ -50,7 +50,7 @@ jobs:
|
|
|
50
50
|
strategy:
|
|
51
51
|
fail-fast: false
|
|
52
52
|
matrix:
|
|
53
|
-
extra: [kokoro, piper, pocket, kitten, supertonic, inflect]
|
|
53
|
+
extra: [kokoro, piper, pocket, kitten, sopro, supertonic, inflect]
|
|
54
54
|
steps:
|
|
55
55
|
- uses: actions/checkout@v4
|
|
56
56
|
- name: Set up Python
|
|
@@ -59,7 +59,7 @@ jobs:
|
|
|
59
59
|
python-version: "3.12"
|
|
60
60
|
- name: Install engine extra and test tools
|
|
61
61
|
run: |
|
|
62
|
-
python -m pip install --upgrade pip
|
|
62
|
+
python -m pip install --upgrade "pip<26.2"
|
|
63
63
|
python -m pip install -e ".[${{ matrix.extra }}]" pytest
|
|
64
64
|
- name: Run API and adapter contracts without model downloads
|
|
65
65
|
run: python -m pytest -q tests/test_engine_registry.py tests/test_backends.py
|
|
@@ -74,12 +74,13 @@ jobs:
|
|
|
74
74
|
python-version: "3.12"
|
|
75
75
|
- name: Install the pinned released engine set
|
|
76
76
|
run: |
|
|
77
|
-
python -m pip install --upgrade pip pytest
|
|
77
|
+
python -m pip install --upgrade "pip<26.2" pytest
|
|
78
78
|
python -m pip install -e . \
|
|
79
|
-
"pykokoro==0.10.
|
|
80
|
-
"pipersynth==0.2.
|
|
79
|
+
"pykokoro==0.10.5" \
|
|
80
|
+
"pipersynth==0.2.5" \
|
|
81
81
|
"pocketsynth[cpu]==0.2.5" \
|
|
82
|
-
"kittensynth[cpu]==0.1.
|
|
82
|
+
"kittensynth[cpu]==0.1.4" \
|
|
83
|
+
"soprosynth[cpu]==0.1.1" \
|
|
83
84
|
"supertonicsynth[cpu]==0.1.2" \
|
|
84
85
|
"inflectsynth[cpu]==0.1.1"
|
|
85
86
|
- name: Run released-set compatibility contracts
|
|
@@ -95,12 +96,14 @@ jobs:
|
|
|
95
96
|
python-version: "3.10"
|
|
96
97
|
- name: Install lower-bound dependencies
|
|
97
98
|
run: |
|
|
98
|
-
python -m pip install --upgrade pip
|
|
99
|
+
python -m pip install --upgrade "pip<26.2"
|
|
99
100
|
python -m pip install \
|
|
100
101
|
"pytest==8.0.0" \
|
|
101
102
|
"numpy==1.23.0" \
|
|
102
103
|
"soundfile==0.12.1" \
|
|
103
|
-
"tomli==2.0.1"
|
|
104
|
+
"tomli==2.0.1" \
|
|
105
|
+
"renderplan==0.1.2" \
|
|
106
|
+
"voicefolio==0.1.1"
|
|
104
107
|
python -m pip install --no-deps -e .
|
|
105
108
|
- name: Run lower-bound tests
|
|
106
109
|
run: python -m pytest -q
|
|
@@ -115,7 +118,7 @@ jobs:
|
|
|
115
118
|
python-version: "3.12"
|
|
116
119
|
- name: Build wheel and sdist
|
|
117
120
|
run: |
|
|
118
|
-
python -m pip install --upgrade pip build twine
|
|
121
|
+
python -m pip install --upgrade "pip<26.2" build twine
|
|
119
122
|
python -m build --outdir "$RUNNER_TEMP/dist"
|
|
120
123
|
python -m twine check "$RUNNER_TEMP"/dist/*
|
|
121
124
|
- name: Verify SCM fallback for an untagged source archive
|
|
@@ -159,7 +162,9 @@ jobs:
|
|
|
159
162
|
sdist = next(artifacts.glob("voicerender-*.tar.gz"))
|
|
160
163
|
expected = {
|
|
161
164
|
"voicerender/py.typed",
|
|
162
|
-
"voicerender/
|
|
165
|
+
"voicerender/renderplan_render.py",
|
|
166
|
+
"voicerender/book_contract.py",
|
|
167
|
+
"voicerender/book_layout.py",
|
|
163
168
|
}
|
|
164
169
|
|
|
165
170
|
with ZipFile(wheel) as archive:
|
|
@@ -174,6 +179,15 @@ jobs:
|
|
|
174
179
|
for value in metadata.get_all("Requires-Dist", [])
|
|
175
180
|
}
|
|
176
181
|
assert {"numpy", "soundfile"} <= requirements
|
|
182
|
+
|
|
183
|
+
renderplan_requirement = next(
|
|
184
|
+
Requirement(value)
|
|
185
|
+
for value in metadata.get_all("Requires-Dist", [])
|
|
186
|
+
if Requirement(value).name.lower() == "renderplan"
|
|
187
|
+
)
|
|
188
|
+
assert {">=0.1.2", "<0.2"} <= {
|
|
189
|
+
str(specifier) for specifier in renderplan_requirement.specifier
|
|
190
|
+
}
|
|
177
191
|
base_requirements = set()
|
|
178
192
|
for value in metadata.get_all("Requires-Dist", []):
|
|
179
193
|
requirement = Requirement(value)
|
|
@@ -184,9 +198,11 @@ jobs:
|
|
|
184
198
|
base_requirements.add(requirement.name.lower())
|
|
185
199
|
engine_sdks = {
|
|
186
200
|
"inflectsynth", "kittensynth", "pykokoro", "pipersynth",
|
|
187
|
-
"pocketsynth", "supertonicsynth",
|
|
201
|
+
"pocketsynth", "soprosynth", "supertonicsynth",
|
|
202
|
+
"qwen3synth",
|
|
188
203
|
}
|
|
189
204
|
assert not engine_sdks & base_requirements
|
|
205
|
+
assert "utterplan" not in base_requirements
|
|
190
206
|
assert not {"audiocompose", "readio"} & {name.lower() for name in requirements}
|
|
191
207
|
|
|
192
208
|
with tarfile.open(sdist, "r:gz") as archive:
|
|
@@ -208,22 +224,38 @@ jobs:
|
|
|
208
224
|
import sys
|
|
209
225
|
|
|
210
226
|
import voicerender
|
|
227
|
+
import voicerender.book
|
|
228
|
+
from renderplan import RenderPlanSet
|
|
211
229
|
from voicerender import list_engines
|
|
212
230
|
|
|
213
231
|
assert metadata.version("voicerender") == voicerender.__version__
|
|
214
232
|
assert resources.files("voicerender").joinpath("py.typed").is_file()
|
|
215
|
-
assert resources.files("voicerender").joinpath("
|
|
216
|
-
assert
|
|
233
|
+
assert resources.files("voicerender").joinpath("renderplan_render.py").is_file()
|
|
234
|
+
assert resources.files("voicerender").joinpath("book_contract.py").is_file()
|
|
235
|
+
assert resources.files("voicerender").joinpath("book_layout.py").is_file()
|
|
236
|
+
assert RenderPlanSet is not None
|
|
237
|
+
assert {item["id"] for item in list_engines()} == {
|
|
238
|
+
"inflect",
|
|
239
|
+
"kitten",
|
|
240
|
+
"kokoro",
|
|
241
|
+
"piper",
|
|
242
|
+
"pocket",
|
|
243
|
+
"qwen3",
|
|
244
|
+
"sopro",
|
|
245
|
+
"supertonic",
|
|
246
|
+
}
|
|
217
247
|
assert not any(
|
|
218
248
|
name.split(".", 1)[0] in {
|
|
219
249
|
"inflectsynth", "kittensynth", "pykokoro", "pipersynth",
|
|
220
|
-
"pocketsynth", "supertonicsynth",
|
|
250
|
+
"pocketsynth", "soprosynth", "supertonicsynth", "utterplan",
|
|
251
|
+
"qwen3synth",
|
|
221
252
|
}
|
|
222
253
|
for name in sys.modules
|
|
223
254
|
)
|
|
224
255
|
PY
|
|
225
256
|
"$VENV/bin/voicerender" --version
|
|
226
257
|
"$VENV/bin/voicerender" engines list --json
|
|
258
|
+
"$VENV/bin/python" "$GITHUB_WORKSPACE/tests/wheel_smoke.py"
|
|
227
259
|
- name: Smoke-test the installed Piper extra
|
|
228
260
|
working-directory: ${{ runner.temp }}
|
|
229
261
|
run: |
|
|
@@ -241,7 +273,7 @@ jobs:
|
|
|
241
273
|
python-version: "3.12"
|
|
242
274
|
- name: Install documentation dependencies
|
|
243
275
|
run: |
|
|
244
|
-
python -m pip install --upgrade pip
|
|
276
|
+
python -m pip install --upgrade "pip<26.2"
|
|
245
277
|
python -m pip install -r docs/requirements.txt
|
|
246
278
|
- name: Build documentation
|
|
247
|
-
run: sphinx-build -W --keep-going -D master_doc=
|
|
279
|
+
run: sphinx-build -W --keep-going -D master_doc=index -b html docs docs/_build/html
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0001","record_revisions":{"release:v0.1.0":1},"release_version":"v0.1.0","schema_version":2}
|
|
2
|
+
{"data":{"fields":["changelog_file","git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range","title"]},"event":"release.updated","event_id":"event-0002","record_revisions":{"release:v0.1.0":2},"release_version":"v0.1.0","schema_version":2}
|
|
3
|
+
{"data":{"row_count":5},"event":"audit.created","event_id":"event-0003","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.1.0","schema_version":2}
|
|
4
|
+
{"data":{"updated_rows":5},"event":"audit.updated","event_id":"event-0004","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.1.0","schema_version":2}
|
|
5
|
+
{"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004","entry-0005"],"synced_audit_rows":5},"event":"entry.batch_added","event_id":"event-0005","record_revisions":{"commit_audit_sheet":3,"entry:v0.1.0/entry-0001":1,"entry:v0.1.0/entry-0002":1,"entry:v0.1.0/entry-0003":1,"entry:v0.1.0/entry-0004":1,"entry:v0.1.0/entry-0005":1,"release:v0.1.0":3},"release_version":"v0.1.0","schema_version":2}
|
|
6
|
+
{"data":{"released_at":"2026-10-10"},"event":"release.finalized","event_id":"event-0006","record_revisions":{"release:v0.1.0":4},"release_version":"v0.1.0","schema_version":2}
|
|
7
|
+
{"data":{"status":"released"},"event":"release.created","event_id":"event-0007","record_revisions":{"release:0.1.1":1},"release_version":"0.1.1","schema_version":2}
|
|
8
|
+
{"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0008","record_revisions":{"release:0.1.1":2},"release_version":"0.1.1","schema_version":2}
|
|
9
|
+
{"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_range"]},"event":"release.updated","event_id":"event-0009","record_revisions":{"release:0.1.1":3},"release_version":"0.1.1","schema_version":2}
|
|
10
|
+
{"data":{"row_count":1},"event":"audit.created","event_id":"event-0010","record_revisions":{"commit_audit_sheet":1},"release_version":"0.1.1","schema_version":2}
|
|
11
|
+
{"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0011","record_revisions":{"commit_audit_sheet":2},"release_version":"0.1.1","schema_version":2}
|
|
12
|
+
{"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0012","record_revisions":{"commit_audit_sheet":3,"entry:0.1.1/entry-0001":1,"release:0.1.1":4},"release_version":"0.1.1","schema_version":2}
|
|
13
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0013","record_revisions":{"release:0.2.0":1},"release_version":"0.2.0","schema_version":2}
|
|
14
|
+
{"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0014","record_revisions":{"release:0.2.0":2},"release_version":"0.2.0","schema_version":2}
|
|
15
|
+
{"data":{"row_count":15},"event":"audit.created","event_id":"event-0015","record_revisions":{"commit_audit_sheet":1},"release_version":"0.2.0","schema_version":2}
|
|
16
|
+
{"data":{"updated_rows":15},"event":"audit.updated","event_id":"event-0016","record_revisions":{"commit_audit_sheet":2},"release_version":"0.2.0","schema_version":2}
|
|
17
|
+
{"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004","entry-0005","entry-0006","entry-0007"],"synced_audit_rows":14},"event":"entry.batch_added","event_id":"event-0017","record_revisions":{"commit_audit_sheet":3,"entry:0.2.0/entry-0001":1,"entry:0.2.0/entry-0002":1,"entry:0.2.0/entry-0003":1,"entry:0.2.0/entry-0004":1,"entry:0.2.0/entry-0005":1,"entry:0.2.0/entry-0006":1,"entry:0.2.0/entry-0007":1,"release:0.2.0":3},"release_version":"0.2.0","schema_version":2}
|
|
18
|
+
{"data":{"released_at":"2026-10-16"},"event":"release.finalized","event_id":"event-0018","record_revisions":{"release:0.2.0":4},"release_version":"0.2.0","schema_version":2}
|
|
19
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0019","record_revisions":{"release:0.2.1":1},"release_version":"0.2.1","schema_version":2}
|
|
20
|
+
{"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0020","record_revisions":{"release:0.2.1":2},"release_version":"0.2.1","schema_version":2}
|
|
21
|
+
{"data":{"row_count":5},"event":"audit.created","event_id":"event-0021","record_revisions":{"commit_audit_sheet":1},"release_version":"0.2.1","schema_version":2}
|
|
22
|
+
{"data":{"updated_rows":5},"event":"audit.updated","event_id":"event-0022","record_revisions":{"commit_audit_sheet":2},"release_version":"0.2.1","schema_version":2}
|
|
23
|
+
{"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004","entry-0005"],"synced_audit_rows":5},"event":"entry.batch_added","event_id":"event-0023","record_revisions":{"commit_audit_sheet":3,"entry:0.2.1/entry-0001":1,"entry:0.2.1/entry-0002":1,"entry:0.2.1/entry-0003":1,"entry:0.2.1/entry-0004":1,"entry:0.2.1/entry-0005":1,"release:0.2.1":3},"release_version":"0.2.1","schema_version":2}
|
voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/audit/commit-audit.yaml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
object_type: commit_audit_sheet
|
|
3
|
+
versioning:
|
|
4
|
+
schema_version: 1
|
|
5
|
+
revision: 3
|
|
6
|
+
release_version: 0.1.1
|
|
7
|
+
git_base_ref: v0.1.0
|
|
8
|
+
git_base_sha: 46cea5077ac2b81c4c96b1c41ceb4e78c53d960c
|
|
9
|
+
git_head_ref: v0.1.1
|
|
10
|
+
git_head_sha: eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
11
|
+
git_range: 46cea5077ac2b81c4c96b1c41ceb4e78c53d960c..eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
12
|
+
commit_count: 1
|
|
13
|
+
rows:
|
|
14
|
+
- sha: eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
15
|
+
source_ref: git:eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
16
|
+
short_sha: eaa3bc4
|
|
17
|
+
changed_paths:
|
|
18
|
+
- .github/workflows/python-publish.yml
|
|
19
|
+
stats:
|
|
20
|
+
files_changed: 1
|
|
21
|
+
insertions: 12
|
|
22
|
+
deletions: 29
|
|
23
|
+
inspected: true
|
|
24
|
+
inspected_paths:
|
|
25
|
+
- .github/workflows/python-publish.yml
|
|
26
|
+
observed_behavior:
|
|
27
|
+
The publish workflow now validates VoiceRender artifact metadata
|
|
28
|
+
and package content; no user-facing API or runtime behavior changes.
|
|
29
|
+
public_impact: internal
|
|
30
|
+
decision: internal
|
|
31
|
+
stale: false
|
|
32
|
+
evidence_subject: "chore: ci"
|
|
33
|
+
target_entry_id: entry-0001
|
|
34
|
+
notes:
|
|
35
|
+
Intentional internal-only release-history reconciliation; omit from public
|
|
36
|
+
changelog.
|
voicerender-0.2.1/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/entries/entry-0001.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 1
|
|
7
|
+
entry_id: entry-0001
|
|
8
|
+
release_version: 0.1.1
|
|
9
|
+
kind: internal
|
|
10
|
+
summary:
|
|
11
|
+
Improved release artifact validation for VoiceRender package metadata and
|
|
12
|
+
contents
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- git:eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
18
|
+
paths:
|
|
19
|
+
- .github/workflows/python-publish.yml
|
|
20
|
+
issues: []
|
|
21
|
+
prs: []
|
|
22
|
+
sources:
|
|
23
|
+
- git:eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
24
|
+
contributors:
|
|
25
|
+
- "@holgern"
|
|
26
|
+
breaking: false
|
|
27
|
+
internal: true
|
|
28
|
+
order: 1
|
|
29
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 4
|
|
7
|
+
version: 0.1.1
|
|
8
|
+
status: released
|
|
9
|
+
history_state: discovered
|
|
10
|
+
title: null
|
|
11
|
+
released_at: "2026-10-10"
|
|
12
|
+
previous_version: v0.1.0
|
|
13
|
+
cancel_reason: null
|
|
14
|
+
superseded_by: null
|
|
15
|
+
changelog_file: null
|
|
16
|
+
boundary_ref: null
|
|
17
|
+
source_refs: []
|
|
18
|
+
source_count: null
|
|
19
|
+
entry_count: 1
|
|
20
|
+
artifact_count: 0
|
|
21
|
+
git_base_ref: v0.1.0
|
|
22
|
+
git_base_sha: 46cea5077ac2b81c4c96b1c41ceb4e78c53d960c
|
|
23
|
+
git_head_ref: v0.1.1
|
|
24
|
+
git_head_sha: eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
25
|
+
git_range: 46cea5077ac2b81c4c96b1c41ceb4e78c53d960c..eaa3bc4964996281a156eda9aebe5a32d5f56201
|
|
26
|
+
git_commit_count: 1
|
|
27
|
+
---
|