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.0

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.0
File Size Uploaded
framewright-0.3.0.tar.gz 89.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for framewright 0.3.0
File
framewright-0.3.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
framewright-0.3.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
framewright-0.3.0-cp313-cp313-macosx_13_0_arm64.whl CPython 3.13 CPython 3.13 macOS 13.0+ ARM64 Details
framewright-0.3.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
framewright-0.3.0-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
framewright-0.3.0-cp312-cp312-macosx_13_0_arm64.whl CPython 3.12 CPython 3.12 macOS 13.0+ ARM64 Details
framewright-0.3.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
framewright-0.3.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
framewright-0.3.0-cp311-cp311-macosx_13_0_arm64.whl CPython 3.11 CPython 3.11 macOS 13.0+ ARM64 Details
framewright-0.3.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
framewright-0.3.0-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
framewright-0.3.0-cp310-cp310-macosx_13_0_arm64.whl CPython 3.10 CPython 3.10 macOS 13.0+ ARM64 Details
framewright-0.3.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
framewright-0.3.0-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details
framewright-0.3.0-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.0.tar.gz

Download URL framewright-0.3.0.tar.gz
Size 89.5 kB
Tags Source
SHA-256 checksum
How to use checksums
d9e271f26b929d398aa7447b536b1c7a15c3caab78cdf6f0b5ce8a8c38333662
BLAKE2b-256 checksum
How to use checksums
d8c23cc08691b0ebfed3aa7e9bc21232b70982eff2d3a03942244b719b3b4f17
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-cp313-cp313-win_amd64.whl
Size 8.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
f468cf7c9be2c0784750e76a47b229a65870e8180547d6eafc00f555f7b81db3
BLAKE2b-256 checksum
How to use checksums
bc891975d582c635c23744ab8f2b05436db515630966849b48fb0d2eb6006f56
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
5448f62ea6b119e864fe4b096f8ace4e0705ab35a12c065512c90aea267f5455
BLAKE2b-256 checksum
How to use checksums
cb79c8e9081d9a0bab098aa9ec0c77f7a163847f3d56b3d82a42c16b033fb766
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
da14f9c5d6127fc879c283ff43991b3dcbcbca9fa3a59001b72a7f8ad98aa892
BLAKE2b-256 checksum
How to use checksums
dad2cd0564c15ccb3d5e8bd675ad2a623f360ebedf654fe30871dff4c7dc833d
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-cp312-cp312-win_amd64.whl
Size 8.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
0c02759b0ead5edd37712dedcfe01562de8af1f27bd35a103ce29d06c73a0e93
BLAKE2b-256 checksum
How to use checksums
c300af8d2292925f291add5366ae04c46bcd53bb9697cb66636474415ef0fef3
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
c6c011b91d2d4ca9e8715c7855ce34af59be272abdfa7e4f72d33d82357ef224
BLAKE2b-256 checksum
How to use checksums
31dadc58395c16ba7cab1b9de739086128e3108285ca39690ab4b57446ea7f15
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
f95ba691d9707e754601c51042e0e64e98c15883e6b027e97f507bd402d2764b
BLAKE2b-256 checksum
How to use checksums
b20ad179593044ff5fee7a3848b41e837649cb36b832165ca42a8130b3966aef
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-cp311-cp311-win_amd64.whl
Size 8.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
e04e854daa788dc564bee2489c42036d284cff66a27e1a96078368c575d56b08
BLAKE2b-256 checksum
How to use checksums
f878bf9f7641324025488aa1dbac91d4d5ca738663cb62c071c81f3bd4d2ba14
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
a273f298ed995d46a61e9e8ac24e981726d50e64768dce59aa4cbf82113aded8
BLAKE2b-256 checksum
How to use checksums
3a6dc3c181544386a12a98cd6a62fce24c487d3142ccba00a832c9c7d75a3206
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
df2422bc249afcfef9e16f2117c0dd5f73e6fa774a1f5050d8158a1eb809081c
BLAKE2b-256 checksum
How to use checksums
31292128964558952dc4f8e6f7ab1098be11539fc9bd957cde560ad19daa7699
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-cp310-cp310-win_amd64.whl
Size 8.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e1c48f2448aa4849798e00c94f70ba7e4269916b107604b42512bbe4bafa434c
BLAKE2b-256 checksum
How to use checksums
2206b3ebd1ccaf2492340772e3fba3c1c3eeede308c7724e536ff577c7522ac2
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
ef5153be5b736b50ce420d289a41f1d58c7b4734d34674d9ec2a0458896362dd
BLAKE2b-256 checksum
How to use checksums
21528d9483fa88a693ad7c4739ed2aac6e77d06caa67c623e826df839c4d0ada
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
3af843e010e76530c8a198e1bdb41319f0e4050ef10807d4117cdfde33caf607
BLAKE2b-256 checksum
How to use checksums
8ed1640364959ecfb0819d198ec14f60a3987c5b9d429a094afe2b6bd96838ae
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-cp39-cp39-win_amd64.whl
Size 8.4 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
90900ba75f0d787bd8366bdfc66ad340d94adbb1916d20dba478afe832cee1da
BLAKE2b-256 checksum
How to use checksums
8c6af44dd2aa0dc442ab159f1fcfac41f14f78fe6d9fb45dc889229ece5167d7
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
32f43b43a9477b0b5995d4a484c24ab18b1c8bf5452f49bac240950dec4e097c
BLAKE2b-256 checksum
How to use checksums
a242b1c3b82c09a047711454aa25b3cde0f6d1eba11eb67fae10d8c32cac3d6a
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 16, 2026.

Transparency log

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

Download URL framewright-0.3.0-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
064c1c060693a33ba5c82257561ba3bc27aacc5af6b0d36123aea6cf27d4fdc3
BLAKE2b-256 checksum
How to use checksums
9dd9f71b6cbacff48db091c0b00de2c26be8077c91f521a3756f535016686914
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 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

16 release files

This release

0.3.0 This release

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