Skip to main content

libstb

Python bindings for the stb single-header libraries. pip install libstb and you have image/font processing with no system dependencies and no Python dependencies. The C++ library is usable from CMake too.

numpy is optional: pip install "libstb[numpy]" if you want img.array / img.numpy() / libstb.load(). It is imported only when one of those is first used, never by import libstb, and without it they raise an ImportError that says so. Everything else works without numpy, including Image(array) from any buffer (a memoryview, array.array, a bytearray, a PIL-exported buffer...), and img.tobytes() and memoryview(img) give you the pixels with no numpy at all.

module status
stb_image (read) done
stb_image_write (write: png, jpg, bmp, tga) done
stb_image_resize2 (resize) done
stb_truetype (fonts: metrics, glyphs, text, atlas) done
stb_rect_pack used internally by the atlas packer

Python

import numpy as np
import libstb

img = libstb.Image.open("photo.png")                # or bytes; also: channels=4, flip=True
img.width, img.height, img.channels                 # 640, 480, 3
img.numpy()                                         # uint8 pixels (H, W, C), no copy; np.asarray(img) works too
libstb.ImageInfo.read("photo.png")                  # header only: (width, height, channels)
libstb.Image(np.zeros((8, 8, 4), np.uint8))         # from your own uint8 array (no copy, see below)
img.copy()                                          # an independent image (deep copy)

img.write("out.jpg")                                 # format from the extension, default settings
img.write_jpg("out.jpg", quality=80)                # or pick the format and its settings
data = img.to_png(compression=9)                    # -> bytes (to_png / to_jpg / to_bmp / to_tga)

small = img.resize(320, 240)                        # new Image; default Resizer()
small = img.resize(320, 240, "cubic")               # filter by name (see the table below)
libstb.Resizer("cubic")                             # same name works on Resizer itself
libstb.Resizer(libstb.Resizer.Filter.MITCHELL, libstb.Resizer.Edge.WRAP, srgb=False)
img.resize(320, 240, libstb.Resizer("linear", srgb=False))  # name + other options

font = libstb.Font.open("font.ttf")                 # trusted fonts only, see below
text = font.render("Hello\nworld", 32)              # RenderedText(bitmap: Image (1 channel), origin_x, origin_y)
text.bitmap.write("hello.png")
font.metrics(32), font.advance("A", 32), font.kerning("A", "V", 32), font.measure("Hello", 32)
font.render_glyph("A", 32)                          # Glyph(bitmap, x_offset, y_offset, advance)
atlas = font.make_atlas("ABCabc123", 32, 256, 256)  # Atlas: .image and atlas["A"] -> AtlasGlyph

libstb.load("photo.png")                            # shortcut: Image.open(...).array
libstb.info("photo.png")                            # shortcut: ImageInfo.read(...)

Encoding. Every format has a pair of methods with its own settings, all defaulted: to_png(compression=8), to_jpg(quality=90), to_bmp(), to_tga(rle=True) return the file's bytes, and write_png(path, ...), write_jpg(path, ...), write_bmp(path), write_tga(path, ...) do the same and write it (only after encoding succeeded, so a failure never leaves a truncated file). write(path) is the shortcut: it picks the format from the extension (.png .jpg .jpeg .bmp .tga, case-insensitive; ValueError for anything else) and uses the defaults. For other settings call write_*.

Resize filters by name. Image.resize(w, h, x) and Resizer(x) accept a Resizer.Filter, or a case-insensitive name (- and space count as _). Any other option (edge, srgb, max_bytes) is a keyword of Resizer(...). Image.resize also takes a ready-made Resizer, or None for the default.

name filter note
auto, automatic, default DEFAULT Catmull-Rom when enlarging, Mitchell when shrinking
nearest, point POINT nearest neighbour
linear, bilinear, triangle TRIANGLE
cubic, bicubic, catmull_rom CATMULL_ROM sharp; the PIL/OpenCV meaning of "cubic"
bspline, cubic_bspline CUBIC_BSPLINE smooth, slightly blurry; scipy's meaning of "cubic"
mitchell MITCHELL good all-round compromise
box, area BOX

An unknown name raises ValueError listing the valid ones. There is no lanczos: stb_image_resize2 does not have it.

Fonts: trusted files only. stb_truetype does no bounds checking; its author writes "NO SECURITY GUARANTEE -- DO NOT USE THIS ON UNTRUSTED FONT FILES". Load your own or vetted system fonts, never user uploads. (Images are different: stb_image is fuzzed, and libstb adds dimension and size limits.)

Errors mirror the C++ hierarchy: libstb.Error (a RuntimeError) with DecodeError, EncodeError, LimitError below it, so a single except libstb.Error catches every libstb failure. Bad arguments raise ValueError, unreadable files OSError (FileNotFoundError, PermissionError, ... as the OS says). Images whose decoded size would exceed max_bytes (default 512 MiB) are rejected from the header, before any pixel memory is allocated.

libstb.Image is stb::image itself, not a wrapper: open, resize, to_* and write* are the C++ members, run without the GIL. img.array / np.asarray(img) are numpy views of its pixels (kept alive by the view); memoryview(img) is the same zero-copy view as a plain 3-D memoryview (numpy reads it too), and img.tobytes() is a copy, both without numpy.

Pixels are never copied behind your back. Image(array) uses a writable, C-contiguous uint8 array in place, so the image and the array share their pixels (changes show on both sides, and the image keeps the array alive). Any other array (read-only, or strided like arr[::-1]) cannot be shared and is copied. Image.open takes ownership of stb's own buffer, no copy either. When you want an independent image, say so: img.copy() (also copy.copy and copy.deepcopy).

C++ / CMake

# after `pip install libstb`
execute_process(COMMAND ${Python3_EXECUTABLE} -c "import libstb; print(libstb.get_cmake_dir())"
    OUTPUT_VARIABLE libstb_DIR OUTPUT_STRIP_TRAILING_WHITESPACE)
find_package(libstb CONFIG REQUIRED)
target_link_libraries(app PRIVATE libstb::core)

The C++ namespace and headers are stb (<stb.h>, <stb/*.hpp>); the CMake target (libstb::core) and the Python package (libstb) keep the project name.

#include <stb.h>

stb::image img = stb::image::open("in.png");        // throws stb::error subclasses
img(0, 0, 1) = 255;                                       // unchecked pixel access
stb::image dup = img.copy();                              // image is move-only: copies are explicit
img.write("out.jpg");                                      // format from the extension, default settings
img.write_jpg("out.jpg", 80);                             // or pick the format and its settings
std::vector<std::uint8_t> bytes = img.to_png(9);          // to_png / to_jpg / to_bmp / to_tga -> file bytes

stb::image small = img.resize(320, 240);              // default resizer
stb::image crisp = img.resize(320, 240, "cubic");      // filter by name, or by enum:
stb::image soft  = img.resize(320, 240, stb::resize_filter::mitchell);

stb::resize_options o;                                 // full control: filter, edge, srgb, max_bytes
o.edge = stb::resize_edge::wrap;
stb::resizer r(o);                                     // also: resizer("cubic"), resizer(resize_filter::box)
stb::image tile = img.resize(320, 240, &r);            // nullptr = default resizer; r.resize(img, w, h) works too

stb::font f = stb::font::open("font.ttf");          // cheap to copy, thread-safe
stb::text_bitmap t = f.render("h\xC3\xA9llo", 32);      // UTF-8 in, 1-channel image out
stb::atlas atlas = f.make_atlas(U"abc", 32, 256, 256);

Design: stb never appears in a public header. Where a class would hold stb state, it is hidden behind a pimpl: font keeps the font bytes and the stbtt_fontinfo in an opaque font::impl (shared and immutable, so copies are cheap and threads can share one). image and resizer carry no stb state at all (plain ints/enums), so a pimpl there would only add indirection. image is move-only: its pixels are a shared_ptr<uint8_t> whose deleter (or aliased owner) decides who frees them, so the same class holds memory it allocated, stb's decode buffer (adopted, not copied) or memory somebody else owns (image::wrap, which is how a numpy array becomes an image without a copy). A copy is always spelled copy(). The four output formats are a closed set, so there is no encoder class hierarchy: each format is a to_* / write_* pair on image with its own defaulted settings, next to decoding in src/core/image.cpp. Runtime failures derive from stb::error (decode_error, encode_error, limit_error, io_error); programmer errors throw std::invalid_argument.

Or cmake --install build and find_package(libstb) as usual.

Layout (mirrors httpp / ctoon)

include/stb.h               umbrella header, owns LIBSTB_VERSION_* (single source of truth)
include/stb/*.hpp           public API (error, image, resizer, font, utf8); never includes stb
src/core/*.cpp              implementation; the only place stb headers are compiled
src/third_party/stb/        vendored stb headers (committed, no submodules)
src/bindings/python/        nanobind module (bind_*.cpp, one per area) + the `libstb` Python package
cmake/                      DynamicVersion, Startup, Optimize, package config
tests/{cpp,python,cmake}    unit tests + find_package consumer test, all run by ctest
tests/data/                 synthetic test font (solid-rectangle glyphs) + the script that makes it

Each stb header is compiled with STB_*_STATIC, so no stbi_* symbol leaks from libstb_core: it links fine next to your own copy of stb.

Build & test

pip install -r requirements-dev.txt
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failure

Wheels: abi3 (cp312-abi3, covers 3.12+) plus one wheel each for cp39-cp311; see .github/workflows/wheels.yml. Free-threaded builds are not supported.

License

MIT for libstb. The vendored stb headers are MIT / public domain (see src/third_party/README.md).

Metadata

Release files for libstb 0.4.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 libstb 0.4.0
File Size Uploaded Provenance
libstb-0.4.0.tar.gz 358.5 kB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for libstb 0.4.0
File
libstb-0.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
libstb-0.4.0-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details
libstb-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
libstb-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
libstb-0.4.0-cp312-cp312-macosx_10_15_universal2.whl CPython 3.12 CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64) Details
libstb-0.4.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
libstb-0.4.0-cp311-cp311-win32.whl CPython 3.11 CPython 3.11 Windows x86-32 Details
libstb-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
libstb-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
libstb-0.4.0-cp311-cp311-macosx_10_15_universal2.whl CPython 3.11 CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64) Details
libstb-0.4.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
libstb-0.4.0-cp310-cp310-win32.whl CPython 3.10 CPython 3.10 Windows x86-32 Details
libstb-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
libstb-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details
libstb-0.4.0-cp310-cp310-macosx_10_15_universal2.whl CPython 3.10 CPython 3.10 macOS 10.15+ universal2 (ARM64, x86-64) Details
libstb-0.4.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
libstb-0.4.0-cp39-cp39-win32.whl CPython 3.9 CPython 3.9 Windows x86-32 Details
libstb-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
libstb-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details
libstb-0.4.0-cp39-cp39-macosx_10_15_universal2.whl CPython 3.9 CPython 3.9 macOS 10.15+ universal2 (ARM64, x86-64) Details

Total release size: 52.1 MB

Release files / libstb-0.4.0.tar.gz

Download URL libstb-0.4.0.tar.gz
Size 358.5 kB
Tags Source
SHA-256 checksum
How to use checksums
831cc14e81f74d40e7df0b4b3ea7c2914b11476c6ca809aba068305b6918b9fe
BLAKE2b-256 checksum
How to use checksums
7102f962cb035d784396f30e9487544b1fdd6a1a726690c90725e3cc76894db8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp312-cp312-win_amd64.whl

Download URL libstb-0.4.0-cp312-cp312-win_amd64.whl
Size 3.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
9c049c9bd826400f8a298efee73bd02cab827f2c7eccc137de48aac6a981479e
BLAKE2b-256 checksum
How to use checksums
35a24ca4142a37dfc95cb5f18b7872e927e90bf80c1cfa0aaead656f8a6aa34e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp312-cp312-win32.whl

Download URL libstb-0.4.0-cp312-cp312-win32.whl
Size 3.4 MB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
8a46f0c3bee7fd3017ba9f82c6761934eeed79b6978edc733aed06e15c17dfca
BLAKE2b-256 checksum
How to use checksums
50b0a91c4a6276e9ef597b5d257ef46feba3f7af1e611c3e59f93b39bdf3b9ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL libstb-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a7a898b98ac3dd6ee08f003e60a4193d447bb91dd7cdd8a1336a80e99c3ca7f4
BLAKE2b-256 checksum
How to use checksums
fe3f2e86f5fe6ad59adf8faa44293f319fbce95584726b31983edadcce13b10a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL libstb-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f27c1273764d526e68ae75a2e6e8f49dac81f378dcee02e284cef12c02f4a558
BLAKE2b-256 checksum
How to use checksums
a00163b4480ac4405e394c2826459924825393389cb1ea1137473f11a30ee32c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp312-cp312-macosx_10_15_universal2.whl

Download URL libstb-0.4.0-cp312-cp312-macosx_10_15_universal2.whl
Size 1.4 MB
Tags CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
8ae06f07aadaf258c071f5ece8d9b48214bfde40628d6b686b679889f692f791
BLAKE2b-256 checksum
How to use checksums
4a600c854f56ed636b18c2bb505bc616137185e1dc690028b3db5eea345559d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp311-cp311-win_amd64.whl

Download URL libstb-0.4.0-cp311-cp311-win_amd64.whl
Size 3.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
72a5c27e2c21e9cdc8f655f97a3a26352971ab849b801a6b0e40ba8277e3e728
BLAKE2b-256 checksum
How to use checksums
00e381f8a310b4bee541ef9140350cb0ff3de16264a9ddab640bf449aa59d09f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp311-cp311-win32.whl

Download URL libstb-0.4.0-cp311-cp311-win32.whl
Size 3.4 MB
Tags CPython 3.11 Windows x86-32
SHA-256 checksum
How to use checksums
da2afd2c1482e7e40b7c3473eea8cdb903beae2f301219708825b645d832f4e1
BLAKE2b-256 checksum
How to use checksums
8f39ab76ebfe68c587491a080fee7b5337ca5e546fc6afb89b210af86a72a124
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL libstb-0.4.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
eefe0cc2ce97ff8b8a4c0d3e5fb03583d4e778d5f647247783d913cb8b054eb3
BLAKE2b-256 checksum
How to use checksums
dae21be7bb9826135e353b0e027842e87301ec1675350c15b15a1cad74dff1dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL libstb-0.4.0-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
16f27156cc02e72cc183e122c2aa8e4444d6954bf15177b1a3fbfc076b171f41
BLAKE2b-256 checksum
How to use checksums
993b9b33a336c70cf5892a1ad5322b0e537ace2656546bce2049c83e5ea36e5b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp311-cp311-macosx_10_15_universal2.whl

Download URL libstb-0.4.0-cp311-cp311-macosx_10_15_universal2.whl
Size 1.4 MB
Tags CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
441e122667c662442667f9bd6f12de3657eef991229501b8b43cc6a539a57ce9
BLAKE2b-256 checksum
How to use checksums
f3e833b80f8230a521a3b3e3d87af05b7058c3343d952402b6abcc943e6f0c91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp310-cp310-win_amd64.whl

Download URL libstb-0.4.0-cp310-cp310-win_amd64.whl
Size 3.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
e389bfaa71a46f71cf7aa7a0469bfffe9664a96a410cc4f2eed6f155ba629a57
BLAKE2b-256 checksum
How to use checksums
5604f31e1483b7cd75756818c89df988b00d501d7ccec33dc4f4e43949d3ff03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp310-cp310-win32.whl

Download URL libstb-0.4.0-cp310-cp310-win32.whl
Size 3.4 MB
Tags CPython 3.10 Windows x86-32
SHA-256 checksum
How to use checksums
7d78de5213b919c876bba363468babac007ddf205d0b6e5f7899d89a27db47e3
BLAKE2b-256 checksum
How to use checksums
9d5d68f57ff5252cbd5017966fca79e1dbccc8a29b3897e6734c92d5e24a9c94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL libstb-0.4.0-cp310-cp310-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
10ce63d24e6fa3db2eb466f71c29981af87a518ae44a971516c77b519bd36071
BLAKE2b-256 checksum
How to use checksums
0808d43042c620bc00746298ddbc6270e98f31f201ba8bfc64a4bcb654f9c413
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL libstb-0.4.0-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
83fc7d0d445c1e575c32a0ae19f88540801445ff3973d32b1596c984adec03c7
BLAKE2b-256 checksum
How to use checksums
ccfc35cc5f433c833cf03cbf1cceaa8632dc36e84f237e2cfd653375304559e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp310-cp310-macosx_10_15_universal2.whl

Download URL libstb-0.4.0-cp310-cp310-macosx_10_15_universal2.whl
Size 1.4 MB
Tags CPython 3.10 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
cb3478689a24f9033c32f81a4c46d648993d7459f34f80f69f583dbcdb60c02d
BLAKE2b-256 checksum
How to use checksums
00df038f86bfdcf402329f2c9ed9e7875a28dec39919a358f1a2874719d458ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp39-cp39-win_amd64.whl

Download URL libstb-0.4.0-cp39-cp39-win_amd64.whl
Size 3.4 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
61e3455c72fa8f1b2468dea8a3e30237f71801c71307e75e7ea7317b0cba4c96
BLAKE2b-256 checksum
How to use checksums
a51f43f5510e2fbbd22b0b869c35b095f57a311506c4e3d532724f93aa92c646
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp39-cp39-win32.whl

Download URL libstb-0.4.0-cp39-cp39-win32.whl
Size 3.4 MB
Tags CPython 3.9 Windows x86-32
SHA-256 checksum
How to use checksums
64143815aaa74ebf6e87ee22679f305ad912b3782594a6cb8731cc97d82ac915
BLAKE2b-256 checksum
How to use checksums
26d818556b0ad5904b536eb5d887571fe48bd07fc597de5b705920d0ca3c4a19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL libstb-0.4.0-cp39-cp39-musllinux_1_2_x86_64.whl
Size 2.6 MB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
85e31a082b57c9ef3ed0cc9c151df33b275378bb41ecf2595b0fc392c36a1f89
BLAKE2b-256 checksum
How to use checksums
a266dfacff6a0c8235ac04e3d91541b4224c662022d2249ddaa9f692c00e4e12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL libstb-0.4.0-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 2.1 MB
Tags CPython 3.9 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
cd11ed7e8fc8ed62288124776ae193b54f79092f0dd34956e934630696effaef
BLAKE2b-256 checksum
How to use checksums
225cbc4c36f282e43f1a1aeb0af33c55f6afa35ac63aaade83e3ac561c74291f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / libstb-0.4.0-cp39-cp39-macosx_10_15_universal2.whl

Download URL libstb-0.4.0-cp39-cp39-macosx_10_15_universal2.whl
Size 1.4 MB
Tags CPython 3.9 macOS 10.15+ universal2 (ARM64, x86-64)
SHA-256 checksum
How to use checksums
1d215352dead8249c1fb4a1fd0b56a2887832879523de3e39db8fc8b1a24926e
BLAKE2b-256 checksum
How to use checksums
2c357d46b60b1673ad50612d9910f172f2fe434d68bc1f1cccd95a0b7f52589c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for libstb 0.4.0

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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