Skip to main content

framewright

A drop-in replacement for cv::VideoCapture and cv::VideoWriter that gives you frame-precise seeking, color space control, HDR10 writing, and lossless encoding.

Available for C++, Python, and JavaScript — Node.js and browsers via WebAssembly (see wasm/README.md).

What framewright adds over OpenCV

Reading

Feature OpenCV framewright
Frame-precise seeking Forward only, not frame-accurate Forward and backward, keyframe-accelerated
Color space control Opaque, implementation-defined Explicit BT.709/BT.601 selection, full/limited range override
Color metadata Not exposed getColorSpace(), getColorRange(), getPixelFormat(), getCodecID()
Zero-copy frames No readRef() avoids per-frame clone
Untagged content Implementation-defined matrix Sensible defaults (BT.709 for HD, BT.601 for SD)
HDR sources (PQ/HLG) Washed-out colors, no warning Opt-in tone mapping to SDR, or full-precision code values via read16()

Writing

Feature OpenCV framewright
HDR10 output Not supported HEVC 10-bit with BT.2020, PQ, mastering display metadata
Lossless encoding Not supported FFV1 (RGB, no YUV loss), H.264 qp=0 with 4:4:4
10-bit SDR Not supported HEVC Main10 with BT.709 for high-precision intermediates
Color space control Opaque Explicit BT.709/BT.2020, full/limited range
QuickTime compatibility Varies hvc1 codec tag for Safari/QuickTime HDR playback

Verified accuracy

Measured by reading BT.709-tagged lossless test videos with both libraries (OpenCV 4.13.0 and framewright on macOS). Both produce identical pixel values when metadata is present — framewright adds control, not a different answer:

cmake -B build -DFRAMEWRIGHT_BUILD_EXAMPLES=ON && cmake --build build
./build/compare_readers your_video.mp4

Migrating from OpenCV

framewright is a drop-in replacement. The API follows the same conventions (BGR cv::Mat frames):

Reading

// OpenCV
cv::VideoCapture cap("video.mp4");
cv::Mat frame;
cap.read(frame);

// framewright — same API, more capabilities
framewright::VideoReader reader;
reader.open("video.mp4");
cv::Mat frame;
reader.read(frame);

// seek backward (not possible with cv::VideoCapture)
reader.seek(0);
reader.read(frame);

// inspect color metadata
std::cout << "Color space: " << reader.getColorSpace() << std::endl;
std::cout << "Pixel format: " << av_get_pix_fmt_name(reader.getPixelFormat()) << std::endl;

Writing

// OpenCV
cv::VideoWriter w("out.mp4",
    cv::VideoWriter::fourcc('a','v','c','1'),
    30, cv::Size(1920, 1080));
w.write(frame);

// framewright — same pattern, more control
framewright::VideoWriter w;
w.open("out.mp4", AV_CODEC_ID_H264, 1920, 1080, {30, 1});
w.write(frame);
w.release();

Property mapping

OpenCV framewright
cap.get(CAP_PROP_FRAME_WIDTH) reader.getWidth()
cap.get(CAP_PROP_FRAME_HEIGHT) reader.getHeight()
cap.get(CAP_PROP_FPS) reader.getFPS()
cap.get(CAP_PROP_FRAME_COUNT) reader.getFrameCount()
cap.get(CAP_PROP_POS_FRAMES) reader.getCurrentFrameNumber()

Quick start

C++

#include <framewright/framewright.h>

// Read with correct BT.709 color conversion
framewright::VideoReader reader;
reader.open("input.mp4", /*force_bt709=*/true);

cv::Mat frame;
while (reader.read(frame)) {
    // frame is BGR cv::Mat with correct pixel values
}

// Write HDR10 HEVC
framewright::VideoWriterOptions opts;
opts.pix_fmt = AV_PIX_FMT_YUV420P10LE;
opts.is_10bit = true;

framewright::VideoWriter writer;
writer.open("output.mp4", AV_CODEC_ID_HEVC, 3840, 2160,
            {60000, 1001}, opts);  // 59.94 fps
writer.write(hdr_frame);  // CV_16UC3 BGR
writer.release();

Python

import framewright

reader = framewright.VideoReader()
reader.open("input.mp4", force_bt709=True)
for frame in reader:  # numpy (H, W, 3) uint8 BGR
    print(frame.shape, frame.dtype)

writer = framewright.VideoWriter()
writer.open("output.mp4", codec="h264", width=1920, height=1080, fps=30)
writer.write(frame)
writer.release()

Reading HDR video

HDR sources (BT.2020 with PQ/SMPTE 2084 or HLG transfer) always get the correct BT.2020 color matrix. Beyond the matrix you have three choices:

// 1. Display-ready SDR: linearize PQ/HLG, tone map (peak from the source's
//    mastering metadata when present, 1000 nits otherwise), convert BT.2020
//    primaries to BT.709, encode with BT.709 gamma.
framewright::VideoReaderOptions opts;
opts.hdr_mode = framewright::HdrMode::ToneMapSDR;
reader.open("hdr10.mp4", opts);
reader.read(frame);   // CV_8UC3, looks right on an SDR display

// 2. Full-precision code values for your own pipeline: the transfer function
//    is NOT applied, so PQ/HLG data stays encoded, at 16-bit precision.
reader.open("hdr10.mp4");
reader.read16(frame); // CV_16UC3; pair with getColorTransfer()/getColorPrimaries()

// 2b. Linear light for image math: transfer function removed (PQ/HLG/SDR),
//     float BGR normalized so 1.0 == SDR reference white (100 nits).
//     HDR highlights exceed 1.0. Primaries unchanged.
reader.readLinear(frame); // CV_32FC3

// 3. Default read() is unchanged: matrix-only conversion. For HDR sources the
//    result remains HDR-encoded (washed out as sRGB) and a warning is logged.

Python: reader.open("hdr10.mp4", tone_map_hdr=True), reader.read16(), reader.read_linear().

New to color management? docs/COLOR.md explains matrices, range, primaries, transfer functions, linear light, and tone mapping — and which framewright call gives you which.

Only codec-level color metadata is honored. Frame-level dynamic metadata (HDR10+, Dolby Vision RPUs) is ignored: Dolby Vision profile 5 content (ICtCp) decodes with approximated colors and a warning.

Building

As a dependency (CMake FetchContent)

include(FetchContent)
FetchContent_Declare(
    framewright
    GIT_REPOSITORY https://github.com/kmatzen/framewright.git
    GIT_TAG main
)
FetchContent_MakeAvailable(framewright)

target_link_libraries(your_target PRIVATE framewright::framewright)

Standalone

mkdir build && cd build
cmake .. -DFRAMEWRIGHT_BUILD_EXAMPLES=ON
make -j$(nproc)

Python

pip install framewright

Binary wheels (Linux x86_64, macOS arm64, Windows AMD64, CPython 3.9–3.13) bundle a statically linked, LGPL FFmpeg and OpenCV core — no system dependencies needed. One consequence of the LGPL build: the wheels contain no x264/x265, so H.264/HEVC writing is unavailable in wheel installs (open() returns false with "codec not found"); reading — including all HDR paths — and FFV1 lossless writing are fully functional. For H.264/HEVC writing, install from source against a system FFmpeg that includes them:

pip install framewright --no-binary framewright   # needs OpenCV + FFmpeg dev packages

Requirements

  • C++17 compiler
  • OpenCV 4.0+
  • FFmpeg 4.2+ (libavformat, libavcodec, libswscale, libavutil)

Windows

Dependency lookup no longer hard-requires pkg-config (Windows has none by default): CMake tries pkg-config first, then falls back to a plain find_library search. The easiest way to get both dependencies is vcpkg in manifest mode, using the vcpkg.json in this repo:

git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat

cmake -B build -G Ninja `
    -DCMAKE_TOOLCHAIN_FILE=.\vcpkg\scripts\buildsystems\vcpkg.cmake `
    -DVCPKG_TARGET_TRIPLET=x64-windows `
    -DFRAMEWRIGHT_BUILD_TESTS=ON
cmake --build build

Windows support is a recent addition (#93) and covered by CI, but is newer than the Linux/macOS builds -- report anything that looks platform-specific. Binary wheels are available (pip install framewright also works on Windows) — they're built the same LGPL-only, statically-linked way as the Linux/macOS wheels, so the same H.264/HEVC-writing caveat above applies.

Logging

By default, framewright only logs errors. To see informational output:

framewright::setLogLevel(framewright::LogLevel::Info);     // See everything
framewright::setLogLevel(framewright::LogLevel::Error);    // Errors only (default)
framewright::setLogLevel(framewright::LogLevel::Quiet);    // Silence all output

API

framewright::VideoReader

Method Description
open(filename, force_bt709, force_full_range) Open a video file with optional color space overrides
open(filename, options) Open with VideoReaderOptions (color overrides + HdrMode)
read(frame) Read the next frame as BGR cv::Mat (cloned, always safe)
readRef(frame) Read the next frame without copying (valid until next read)
read16(frame) Read as CV_16UC3 with source code values preserved (no transfer applied)
readLinear(frame) Read as CV_32FC3 linear light (1.0 = SDR white, source primaries)
hasHDR10Metadata(), getHDR10Metadata() HDR10 static metadata from the source (drives the tone-map peak)
seek(frame_number) Seek to a frame (forward and backward)
getPixelFormat(), getCodecID() Source format info
getColorSpace(), getColorRange() Color metadata
getColorPrimaries(), getColorTransfer() HDR-relevant color metadata
isToneMappingActive() Whether read() is tone mapping this source
getFPS(), getWidth(), getHeight() Video properties

framewright::VideoWriter

Method Description
open(filename, codec_id, w, h, fps, opts) Open output with full codec control
write(frame) Write a BGR frame (CV_8UC3 or CV_16UC3, display-encoded)
writeLinear(frame) Write a CV_32FC3 linear-light frame (PQ-encoded in HDR mode, BT.709 in SDR)
setHDR10Metadata(metadata) Set mastering display / content light level
release() Flush and finalize the file

framewright::VideoWriterOptions

Field Default Description
bitrate 25000000 Target bitrate in bits/sec
pix_fmt YUV420P Output pixel format
is_10bit false HDR10 mode (BT.2020 + PQ)
full_range false Full range (0-255) vs limited (16-235)
use_444 false 4:4:4 chroma (no subsampling)
lossless false Mathematically lossless encoding

Supported codecs: H.264, H.265/HEVC (8-bit and 10-bit), FFV1 (lossless RGB).

License

MIT

Metadata

Release files for framewright 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for framewright 0.3.1
File Size Uploaded
framewright-0.3.1.tar.gz 95.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for framewright 0.3.1
File
framewright-0.3.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
framewright-0.3.1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
framewright-0.3.1-cp313-cp313-macosx_13_0_arm64.whl CPython 3.13 CPython 3.13 macOS 13.0+ ARM64 Details
framewright-0.3.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
framewright-0.3.1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
framewright-0.3.1-cp312-cp312-macosx_13_0_arm64.whl CPython 3.12 CPython 3.12 macOS 13.0+ ARM64 Details
framewright-0.3.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
framewright-0.3.1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
framewright-0.3.1-cp311-cp311-macosx_13_0_arm64.whl CPython 3.11 CPython 3.11 macOS 13.0+ ARM64 Details
framewright-0.3.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
framewright-0.3.1-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
framewright-0.3.1-cp310-cp310-macosx_13_0_arm64.whl CPython 3.10 CPython 3.10 macOS 13.0+ ARM64 Details
framewright-0.3.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
framewright-0.3.1-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details
framewright-0.3.1-cp39-cp39-macosx_13_0_arm64.whl CPython 3.9 CPython 3.9 macOS 13.0+ ARM64 Details

Total release size: 127.2 MB

Release files / framewright-0.3.1.tar.gz

Download URL framewright-0.3.1.tar.gz
Size 95.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9a092133af99839b3c1ce17980e3cf18b6d67c604fa52d8760a8d14d16cbfa24
BLAKE2b-256 checksum
How to use checksums
01e04001daa5660bb1d84f1c66052be96e8280f28cb5e08333885b6cd28752bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp313-cp313-win_amd64.whl

Download URL framewright-0.3.1-cp313-cp313-win_amd64.whl
Size 8.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
e72fd530a0f179561fd21f642bf8fd185351dead8adda3a3757a8260aba0d18e
BLAKE2b-256 checksum
How to use checksums
e5dd6201011ca1d8009f3c8f264a9460e0d30bcd0847ee4d18f08373fab6cf20
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL framewright-0.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
Size 8.9 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
124c087a0b035a8439e0d7ba48c58b0af70e781a3bed20f95320c1ac8b30e187
BLAKE2b-256 checksum
How to use checksums
9125e7c25ad2bf6b18e447558cd79c0c07cbe288957efa0138a24d3fbebd90d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp313-cp313-macosx_13_0_arm64.whl

Download URL framewright-0.3.1-cp313-cp313-macosx_13_0_arm64.whl
Size 8.1 MB
Tags CPython 3.13 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
684ff356b0e6ebd47eb30847a509c61aeb000302d0df5e456e106f0285a4406d
BLAKE2b-256 checksum
How to use checksums
5c483ab564f39a74c3be0581eca9b88d611d8a43c6f0c14d74a79613845e22cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp312-cp312-win_amd64.whl

Download URL framewright-0.3.1-cp312-cp312-win_amd64.whl
Size 8.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
65965c98cbb3c5a10e302862a830a126a87ec49a956b1a02983b348a0ef998ef
BLAKE2b-256 checksum
How to use checksums
195afad42a4f4df887da2d86eb7b870b5fa3829d871445d63b87c4112cea4be7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL framewright-0.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
Size 8.9 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
45512862550ecad8c811399b4e630ff566dc12687b12919fa505b5c2d372ccbf
BLAKE2b-256 checksum
How to use checksums
3d73873ccad85f929c01b6a23a31668706bc28a6f867c537325b3fa9700e1674
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp312-cp312-macosx_13_0_arm64.whl

Download URL framewright-0.3.1-cp312-cp312-macosx_13_0_arm64.whl
Size 8.1 MB
Tags CPython 3.12 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
8a85707334182a8eb5386375e97d3c6f76ecf29ae56aa8c1882a96e813f9911e
BLAKE2b-256 checksum
How to use checksums
9c000d459a17ea577bc96d461d3bfa6b2be06f072ae3c1d681bd9e64ec0ec0cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp311-cp311-win_amd64.whl

Download URL framewright-0.3.1-cp311-cp311-win_amd64.whl
Size 8.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
a915b063114588a179eda889c7875df5af286d9547b5a641e562a387437525ba
BLAKE2b-256 checksum
How to use checksums
efcb8b431f8594e20a1adcdd70fdfaddaaf4903a4c101cbaa223c717bbfdd8be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL framewright-0.3.1-cp311-cp311-manylinux_2_28_x86_64.whl
Size 8.9 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
babdd155ca971e40fe95d5ed3e506d7a8adc5911e468aa51230939f68b48d715
BLAKE2b-256 checksum
How to use checksums
c92c9f1847662508a1e116bb8502ef32046638c3a202601e9f7da0920f877007
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp311-cp311-macosx_13_0_arm64.whl

Download URL framewright-0.3.1-cp311-cp311-macosx_13_0_arm64.whl
Size 8.1 MB
Tags CPython 3.11 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
8fc1edba06cdd1a78a48616cf4a5db0efc3cda103739d37246b47a392be699ce
BLAKE2b-256 checksum
How to use checksums
c9aa11419d0090e8e87b2da3f2c7eb838525a7edbffd1f57997656c35d664dc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp310-cp310-win_amd64.whl

Download URL framewright-0.3.1-cp310-cp310-win_amd64.whl
Size 8.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
4d5110d2c4658314d1afef643525908a14a949a4806765cd49fda6d57d73f344
BLAKE2b-256 checksum
How to use checksums
2a1e3f9c4affb896f02f8b7fcaa207f580c159ca76b5ea2c0a434351416739e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL framewright-0.3.1-cp310-cp310-manylinux_2_28_x86_64.whl
Size 8.9 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f0a8739806156c7f8fd125e920286cabef106b7ee2ca0249cd06be9ddfd76750
BLAKE2b-256 checksum
How to use checksums
9af1dd7027723e79642f6d515f09290d9e953f0475be4d0ebeb66f31d7d5c6a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp310-cp310-macosx_13_0_arm64.whl

Download URL framewright-0.3.1-cp310-cp310-macosx_13_0_arm64.whl
Size 8.1 MB
Tags CPython 3.10 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
8da7c7f2488e2e0a45acd32fe0b12b7ef391fefcdb52bd23dcfd1a6841ebef5f
BLAKE2b-256 checksum
How to use checksums
7cdbe2c2d83a0a2299243d40292710e67962ed033c8e1364b7ad6714d2e214a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp39-cp39-win_amd64.whl

Download URL framewright-0.3.1-cp39-cp39-win_amd64.whl
Size 8.4 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
63441cc50bb2e9e36256a2d5e43a6deb1d6a3e56e1ad2a0d0b786075c177ed5f
BLAKE2b-256 checksum
How to use checksums
fe83c7685a2eb72038d48077cb1a73cbc9aab604713d00dd665667178fdd8afa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL framewright-0.3.1-cp39-cp39-manylinux_2_28_x86_64.whl
Size 8.9 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
9019b0c7bf249c6c21f3d31f866c0257d1d7deb167d0875fa0752ea5ef21dd97
BLAKE2b-256 checksum
How to use checksums
38ab7159847ca8326efba9ad56242865c280ccffb8aa9c4bab2260281bc268eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release files / framewright-0.3.1-cp39-cp39-macosx_13_0_arm64.whl

Download URL framewright-0.3.1-cp39-cp39-macosx_13_0_arm64.whl
Size 8.1 MB
Tags CPython 3.9 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
818135e7511607bd3ce42bdc113b8a50b680f23b8733febf3ac81c39dc228769
BLAKE2b-256 checksum
How to use checksums
e94551531b133575957414d8de15782734eff2fd35af6bb271325437348e6ca2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 21, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.1 This release

16 release files

0.3.0

16 release files

0.2.0

11 release files

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page