Compatibility Policy¶
PyFFmpegCore supports only combinations backed by visible automated evidence. “Expected to work” is not the same as “tested.”
Python Policy¶
Python 3.10 through 3.14 are the supported interpreter versions. Every version runs the package contract on Linux. Python 3.10 and 3.14 are the baseline and newest-version anchors for installed-wheel media smoke tests on all supported operating systems.
End-of-life Python versions are not advertised. A Python version is removed in the next feature release after upstream end of life unless the project documents and continuously tests an explicit exception.
Operating-System Matrix¶
| Platform | Python 3.10 | Python 3.11–3.13 | Python 3.14 |
|---|---|---|---|
| Ubuntu GitHub-hosted runner | Tested: exact-wheel media smoke | Tested: package contract only | Tested: exact-wheel media smoke |
| macOS GitHub-hosted runner | Tested: exact-wheel media smoke | Expected; no current media smoke | Tested: exact-wheel media smoke |
| Windows GitHub-hosted runner | Tested: exact-wheel media smoke | Expected; no current media smoke | Tested: exact-wheel media smoke |
Python 3.9 and older, PyPy, other operating systems, and architectures outside the tested runners are not in the support policy. "Expected" cells have no cross-platform media result. Even a tested cell proves only the named workflows on that runner and FFmpeg build.
The CI workflow is authoritative. A cell counts as tested only when its current required check is green. Compatibility JSON artifacts record the runner architecture, Python version, CLI version, FFmpeg path/version, and FFprobe path/version. The workflow also validates the six artifacts and uploads a readable summary; python scripts/summarize_compatibility.py <downloaded-artifact-directory> --run-url <run-url> reproduces it locally.
Verified release snapshot: v0.3.3 (24 September 2026)¶
The signed v0.3.3 tag points to source SHA
f90f4b8c44271e57171db433c8243835b96d85ca. Manual exact-artifact run
35992283112
passed, and tagged release workflow
35992506546
passed the exact wheel on Linux, macOS, and Windows with Python 3.10 and 3.14,
release provenance, PyPI Trusted Publishing, six clean public installs, and
GitHub prerelease creation. The full Python 3.10–3.14 package-contract workflow
was not run for this release.
Wheel pyffmpegcore-0.3.3-py3-none-any.whl is 101,753 bytes with SHA-256
872279bca79dbbf99a725dc0d3c2d682199852f9ce2d09e7d2abb7ea46b13e7c.
Source distribution pyffmpegcore-0.3.3.tar.gz is 342,712 bytes with SHA-256
71f22070edfeccc3bdc0dfb0f0c94cacc603c341a6ad9ea509d21515f87c4438. Both
hashes match PyPI's public JSON and GitHub Release SHA256SUMS; both files have
Trusted Publisher provenance attestations. No container image or GitHub Action
image was built or tested.
Previous release snapshot: v0.3.2 (24 September 2026)¶
The signed v0.3.2 tag points to source SHA
862209c5090c896e22e1b720d7508338a53eb763. Manual exact-artifact run
35988609967
passed, and tagged release workflow
35988945203
passed the exact wheel on Linux, macOS, and Windows with Python 3.10 and 3.14,
release provenance, PyPI Trusted Publishing, six clean public installs, and
GitHub prerelease creation. The full Python 3.10–3.14 package-contract workflow
was not run for this release.
Wheel pyffmpegcore-0.3.2-py3-none-any.whl is 100,902 bytes with SHA-256
d57ca4d8659df460149f37e4f76aa44d6a4160384804291bee8276a389dfa3c7.
Source distribution pyffmpegcore-0.3.2.tar.gz is 340,374 bytes with SHA-256
e2eaef15fdc2a2ecba0e1e3ca63b34f4e4cc81320ad2dab27409da3a37d96592. Both
hashes match PyPI's public JSON and GitHub Release SHA256SUMS; both files have
Trusted Publisher provenance attestations. No container image or GitHub Action
image was built or tested.
Previous release snapshot: v0.3.1 (24 September 2026)¶
The signed v0.3.1 tag points to source SHA
562ae6ce92a8b321f15a6a250cf7802f2c9bb5bc. Manual build/test run
35975145754
and tagged release workflow
35975371541
passed the exact artifact checks on Linux, macOS, and Windows with Python 3.10
and 3.14. Six clean public installs also passed. The full Python 3.10–3.14
package-contract workflow was not run for this release.
Wheel pyffmpegcore-0.3.1-py3-none-any.whl is 101,638 bytes with SHA-256
ea222d3dc5d09ae0ffd79c310ea415eb4edb2d7e04a87532cda939a7890d255d.
The 335,713-byte source distribution has SHA-256
e0ff591589dd3950e11450dcecc0d1b39718c42415332568e606c98207c94074.
Both match the PyPI JSON and GitHub Release checksums. No container image or
GitHub Action image was built or tested.
The signed v0.3.0 tag points to source SHA
492d4b0a808cd429b75b2d21735652260eee9296. Release workflow
35971504440
built one wheel and sdist, checked their contents and hashes, then passed exact
wheel media smokes and forced fixture generation on Linux, macOS, and Windows
with Python 3.10 and 3.14. After PyPI publication, six clean installs of that
public release also passed --version, doctor, and smoke-test.
Wheel pyffmpegcore-0.3.0-py3-none-any.whl is 101,305 bytes with SHA-256
8ed1b315b3326cc115e5df4bd1ac32d69b6c77175663d6c630cf3e75c3186df7.
The 334,320-byte source distribution has SHA-256
e01753d0315525ebd99c7da2c2dc7a09cf6d13af488fc81fe9692a8a2f925e78.
Both hashes match the public PyPI JSON and the GitHub Release checksums.
The manual validation bundle and tagged release artifacts were downloaded and
compared byte-for-byte; their wheel and sdist matched.
These release jobs cover the two OS/Python anchor versions; they do not replace the full Python 3.10–3.14 package-contract workflow. No container or GitHub Action image was built or tested for this release.
Historical snapshot: 19 September 2026¶
In run 35448000531, all six media smoke jobs, the Linux Python 3.10–3.14 package-contract jobs, and the compatibility-summary job passed. The six media jobs installed the same prebuilt wheel (pyffmpegcore-0.2.2-py3-none-any.whl, SHA-256 71f40a5f5e11468cf84639f0a91042fead24819d2def4e1ee081987085bb2525). This is a CI artifact from c81c54d, not the published 0.2.2 wheel. Each cell reports 26/26 verified checks: the previous 22 workflows and four expected refusals whose exit codes and remedies were checked. The generated Markdown artifact records every cell and its capability gaps.
| Runner | Architecture | Python | FFmpeg reported by doctor |
Capability catalog gaps |
|---|---|---|---|---|
| Ubuntu | x86_64 | 3.10.21 / 3.14.7 | 6.1.1-3ubuntu5 | None reported |
| macOS | arm64 | 3.10.11 / 3.14.7 | 9.0.1 | encoder:libwebp and filter:subtitles absent |
| Windows | AMD64 | 3.10.11 / 3.14.7 | 9.0.1 essentials build | None reported |
The macOS catalog gaps affect images/webp and subtitles/burn on that
Homebrew build; those optional capabilities are not validated by the
successful profile smoke. No Android, iOS, or physical-device behavior is
implied by this CI snapshot. Runner packages move, so recheck the latest run
before making a release claim.
FFmpeg Policy¶
PyFFmpegCore does not bundle FFmpeg. CI tests the FFmpeg package available from the current Ubuntu, Homebrew, and Chocolatey runner channels. The exact versions are captured by pyffmpegcore doctor --json; therefore, this page deliberately avoids pretending that a moving system package is one fixed version.
Expected baseline behavior requires:
ffmpegandffprobeexecutables onPATH, or explicit binary paths;- common demuxers/muxers for MP4, MOV, WebM, MP3, WAV, PNG, and JPEG;
- representative encoders such as H.264, AAC, VP9, Opus, MP3, PCM, and image codecs for the selected workflow;
- filters required by the selected task.
Optional filters and encoders vary by build. Tests skip a capability only when the environment reports that it is absent, and the skip remains visible. A missing optional capability is not silently advertised as supported.
Manual Drift Detection¶
The cold-fixture workflow is manual-only. When dispatched, it regenerates fixtures without cache reuse and runs representative media jobs on all three operating systems. Failures indicate runner, package-manager, Python, or FFmpeg drift that must be triaged before the next release.
Latest policy update: 2026-09-24. Consult the linked workflow for the latest execution date and exact versions.