Skip to main content

pysdrlib

Python wrappers for hardware SDRs: every radio has the same API, and samples are always complex64.

pip install pysdrlib
pip install pysdrlib[remote]     # also use radios on another machine (ZeroMQ)

This is a lightweight backend for my pyspecan and RPPS projects, with minimal user intervention. It has no affiliation to the fantastic pysdr page. For a more robust C implementation with far more hardware, use SoapySDR.

Supported devices

Device Driver Notes
RTL-SDR rtl_sdr
HackRF hackrf Transmit (half-duplex)
USRP B210 (UHD) uhd 2 RX and 2 TX channels
RX-888 (ExtIO) extio
BladeRF bladerf Planned

Also: sim, a simulated radio that needs no hardware, and File, which reads recordings the way a device reads samples.

Usage

import pysdrlib

for info in pysdrlib.find():             # radios attached, for every driver whose library is installed or built
    print(info.driver, info.label, info.serial)

sdr = pysdrlib.open(pysdrlib.find()[0])  # opened; or pysdrlib.open("<driver>", serial="...")
sdr.initialize(cf=100e6, Fs=2e6)
sdr.set_rx_gain(0.5)               # half of this radio's gain range, whatever the radio
sdr.start_rx()
x = sdr.read(65536, timeout=1.0)         # exactly 65536 samples (err.Timeout after 1 s)

Or pick the driver yourself:

sdr = pysdrlib.device("rtl_sdr")         # not opened yet: call sdr.open(); pysdrlib.devices.ls() lists the drivers
import pysdrlib.rtl_sdr                  # static import; pysdrlib.rtl_sdr.Device()

find() never builds a vendor library (find(build=True) allows it); find(virtual=True) also lists the simulated device.

Reading

read and stream are the way to get samples: an exact count, waiting for it, with the loss and retune information of the stream. (get_samples() is the low-level call under them: whatever has arrived, any number, without waiting.)

x, m = sdr.read(65536, meta=True)        # m.index: the first sample's position in the stream; m.gaps / m.dropped:
                                         # where samples were lost; m.events: retunes inside the block; m.time
sdr.read_into(buffer)                    # into an array you own

with sdr.stream(65536, meta=True) as s:  # starts receiving, stops on exit
    for x, m in s: ...

sdr.set_rx_freq(162.4e6, flush=True)     # the next read is all at the new frequency (settling skipped)

sdr.on_drop decides what lost samples do: "warn" (default), "raise", "ignore" or a function.

Controls

Every device describes itself in sdr.caps (refined for the attached unit once open), and the same calls work on all of them. A control a device doesn't have raises err.NotSupported.

sdr.caps.freq, sdr.caps.rates                    # [Range]: tunable and sample-rate ranges (lo == hi: one discrete value)
sdr.rx_gain_stages()                                      # {stage: GainStage}: the device's own gain stages, by its names
sdr.set_rx_gain(0.6)                             # gain as a fraction of the device's range (0 least, 1 most): the portable call
sdr.set_rx_gain_db(40)                           # or in dB: a total (the device splits it), or set_rx_gain_db(16, stage="...") one;
                                                 # dB mean different things on different radios, so prefer the fraction
sdr.get_rx_gain(), sdr.get_rx_gain_db()          # readback, as a fraction and in dB (sdr.get_rx_gains_db(): by stage)
sdr.set_rx_gain_mode("auto")                        # automatic gain where the device has it (sdr.rx_gain_modes())
sdr.set_rx_bandwidth(1.5e6)                         # analog filter (sdr.caps.bandwidths)
sdr.set_freq_correction(14.8)                    # ppm error of the reference: tuning (and continuous rates) corrected
sdr.settings(); sdr.set_setting("bias_t", True)  # everything else the device has
sdr.rx_antennas(), sdr.clock_sources()              # where the device has them
sdr.strict = True                                # out-of-range values raise err.InvalidValue instead of being clamped
sdr.dc_correction = True                         # remove the DC offset from what read() returns

Every control that differs between receiving and transmitting has a call for each: set_rx_freq/set_tx_freq, set_rx_gain/set_tx_gain, set_rx_bandwidth/set_tx_bandwidth, set_rx_antenna/set_tx_antenna... There is no direction= argument anywhere. Each takes channel=0 (the count is in sdr.caps.channels). Devices also keep their own per-stage setters (set_rx_lna_gain, ...) alongside the generic ones.

Channels

A device with several channels (sdr.caps.channels, e.g. a B210's 2 RX and 2 TX) streams any of them together:

sdr.set_rx_gain_db(40, channel=1)                 # every control takes the channel
sdr.set_tx_freq(915e6)                            # tuning is per direction: set_rx_freq / set_tx_freq
sdr.caps.shared                                   # what one setting changes: "freq": "direction" means the channels
                                                  # of a direction share one synthesizer
sdr.start_rx(channels=(0, 1))
x = sdr.read(65536, channel=(0, 1))               # (2, 65536), rows starting on the same sample
x1 = sdr.read(65536, channel=1)                   # or one channel at a time
sdr.start_tx(channels=(0, 1))
sdr.write(np.stack((a, b)))                       # rows go out sample for sample together

Samples the hardware lost before they reached pysdrlib (an overflow) show as gaps in read(..., meta=True), on every channel alike, so they stay aligned.

Stalls and dropped samples

Hardware devices watch their own stream each time you read (or call get_samples()):

try:
    samples = sdr.read(65536, timeout=1.0)
except pysdrlib.err.StreamStalled:   # no samples for sdr.stall_timeout seconds (default 1, None disables)
    sdr.stop_rx(); sdr.start_rx()    # or close and reopen the device
print(sdr.stats)  # samples delivered, dropped, missing, stalls, and seconds since the last samples

Samples lost because you didn't read often enough, or because the device delivered fewer than its sample rate requires, raise a pysdrlib.warn.Dropped warning. Anything still buffered when a stall is detected is returned first.

Sample files

from pysdrlib import File, FileSink
with File("capture.cfile", "cf64") as f:     # cf64: two float32 per sample, a GNU Radio .cfile
    for block in f.forward(8192, partial=True):
        ...
with FileSink("out.cs16", "ci32t", clip=True) as out:
    out.write(samples)

See the file README for the details: partial blocks, seeking, appending and clipping.

Remote devices

Host SDRs on one machine and use them from another (pip install pysdrlib[remote]).

pysdrlib server --bind tcp://0.0.0.0:5555
pysdrlib client tcp://host:5555 rx hackrf --freq 100e6 --rate 10e6 -t 5 -o out.cfile
sdr = pysdrlib.connect("tcp://host:5555", "hackrf")          # same API as a local device (opened, and yours to control)
sdr.initialize(cf=100e6, Fs=10e6); sdr.start_rx()
samples = sdr.read(65536)

Receiving, transmitting and channels all work; one client controls a device and any number can watch it. There is no authentication or encryption, so only serve a network you trust. See the remote README for the command line, ownership and wire formats.

Building from source

Each driver needs its vendor's library (libhackrf, libuhd...). Use the one your package manager has, or build the copy that comes with pysdrlib:

pysdrlib build              # where each driver's library is: installed, built before, or missing
pysdrlib build hackrf       # build one
pysdrlib build --all        # build every one that is missing

Importing a driver never builds anything by itself: without its library it fails with a message that says to run the command above. (PYSDRLIB_BUILD=auto in the environment restores building on first use, and find(build=True) builds what is missing.) Building needs cmake, a C++17 compiler, pkg-config and the development files below, and installs nothing system-wide: it is built out of the source tree into a per-user cache. Tests for a device whose library isn't there are skipped.

Prebuilt librtlsdr / libhackrf / libextio_sdcc / libuhd packages can be installed instead of building them.

Install the build tools and libusb, plus fftw for the RX-888 or boost for UHD:

System Command
Debian/Ubuntu sudo apt install build-essential pkg-config cmake libusb-1.0-0-dev + libfftw3-dev (RX-888) / libboost-all-dev (UHD)
Fedora/RHEL sudo dnf install gcc-c++ cmake pkgconf-pkg-config libusb1-devel + fftw-devel / boost-devel
Arch sudo pacman -S base-devel cmake libusb + fftw / boost
openSUSE sudo zypper install gcc-c++ cmake pkg-config libusb-1_0-devel + fftw3-devel / boost-devel
Alpine apk add build-base cmake pkgconf libusb-dev + fftw-dev / boost-dev
macOS (Homebrew) brew install cmake pkg-config libusb + fftw / boost

A B2xx also loads an FPGA image when opened: install UHD's images (uhd_images_downloader -t b2xx, or apt install uhd-host) or point UHD_IMAGES_DIR at yours (an image already in /usr/share/uhd/images is used as is; pysdrlib never downloads one itself).

Contributing

git clone --recurse-submodules https://github.com/Anonoei/pysdrlib
cd pysdrlib
git switch -c feature/<your feature>
python3 builder.py -b -l                  # build and install locally
pytest                                    # runs without hardware; PYSDRLIB_HW=1 adds the hardware tests

Adding a device

python -m pysdrlib.scaffold my_radio writes the skeleton of a driver (--python-only for one without a C++ extension), pysdrlib.testing.check_package("my_radio") checks it as you fill it in, and the contributing guide (src/pysdrlib/contributing.py) walks through the rest.

Documentation

The docs are built with pdoc3 (dark theme, from pdoc_templates/):

pip install pdoc3
python -m pdoc --html --force --template-dir pdoc_templates -o docs pysdrlib

and published to GitHub Pages on every push to main.

Metadata

Release files for pysdrlib 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 pysdrlib 0.4.0
File Size Uploaded Provenance Actions
pysdrlib-0.4.0.tar.gz 54.7 MB With provenance Details for pysdrlib-0.4.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for pysdrlib 0.4.0
File Actions
pysdrlib-0.4.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details for pysdrlib-0.4.0-cp314-cp314t-win_amd64.whl
pysdrlib-0.4.0-cp314-cp314t-win32.whl CPython 3.14 CPython 3.14 free-threading Windows x86-32 Details for pysdrlib-0.4.0-cp314-cp314t-win32.whl
pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details for pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl
pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details for pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl
pysdrlib-0.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pysdrlib-0.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pysdrlib-0.4.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pysdrlib-0.4.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pysdrlib-0.4.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for pysdrlib-0.4.0-cp314-cp314-win_amd64.whl
pysdrlib-0.4.0-cp314-cp314-win32.whl CPython 3.14 CPython 3.14 Windows x86-32 Details for pysdrlib-0.4.0-cp314-cp314-win32.whl
pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details for pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details for pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_aarch64.whl
pysdrlib-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for pysdrlib-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pysdrlib-0.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for pysdrlib-0.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pysdrlib-0.4.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for pysdrlib-0.4.0-cp313-cp313-win_amd64.whl
pysdrlib-0.4.0-cp313-cp313-win32.whl CPython 3.13 CPython 3.13 Windows x86-32 Details for pysdrlib-0.4.0-cp313-cp313-win32.whl
pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details for pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl
pysdrlib-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 Details for pysdrlib-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pysdrlib-0.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.26+ ARM64, Linux glibc 2.28+ ARM64 Details for pysdrlib-0.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
pysdrlib-0.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for pysdrlib-0.4.0-cp312-cp312-win_amd64.whl
pysdrlib-0.4.0-cp312-cp312-win32.whl CPython 3.12 CPython 3.12 Windows x86-32 Details for pysdrlib-0.4.0-cp312-cp312-win32.whl
pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details for pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl
pysdrlib-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.28+ x86-64, Linux glibc 2.27+ x86-64 Details for pysdrlib-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
pysdrlib-0.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64, Linux glibc 2.26+ ARM64 Details for pysdrlib-0.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Total release size: 1.5 GB

Release files / pysdrlib-0.4.0.tar.gz

Download URL pysdrlib-0.4.0.tar.gz
Size 54.7 MB
Tags Source
SHA-256 checksum
How to use checksums
dda0e90ca190b30fc1bf2dade20d737543785bc594f3b2bc927647aaed99ef0e
BLAKE2b-256 checksum
How to use checksums
a39c89c26e9ed7c99798a0c3b6fe2cf43d10afd5366c477acc8f3a0ee188cb4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314t-win_amd64.whl

Download URL pysdrlib-0.4.0-cp314-cp314t-win_amd64.whl
Size 59.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
37a0c8c3ca404b1c8da1eccaa2e5d420ad0305166bfa07eae73f157ccb2ac204
BLAKE2b-256 checksum
How to use checksums
66b3824ae178ada6c9f5931c5a6fd01d4d37408e83ddd17c7299e504b619de1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314t-win32.whl

Download URL pysdrlib-0.4.0-cp314-cp314t-win32.whl
Size 59.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-32
SHA-256 checksum
How to use checksums
920d03cee1701c8e72dea28d798782d4de7afc853343fd6b33bd58ac1d7da66b
BLAKE2b-256 checksum
How to use checksums
c0ea9da6524cce2581feb40964be9dc8c869c14a46059df1ded6627000f7228b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 61.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9613521bd525df5a656be348ca56c06220aebd2de379f57513cdc5cfcf6d670d
BLAKE2b-256 checksum
How to use checksums
64dd647741bd9a94cc3a5c504a87663df8d88f5f3e31df9d8e92148040126357
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL pysdrlib-0.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 61.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
35a9a457e943626abb225fa8738746ec2829141a02d7466f50d3ffa7c4266cf1
BLAKE2b-256 checksum
How to use checksums
441c97bb077fe85661e4fc6f6c916973e41819ca209c1e1cc1ea288bedd95149
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pysdrlib-0.4.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 60.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7d5ba1532cee0b31b5d2530c60809df35a96d8f472c6e06592094466c3f89377
BLAKE2b-256 checksum
How to use checksums
a7e5eb188c6383a2e0eb1ec4534933417ea950c6099d046ea4486ec5c92b4efa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pysdrlib-0.4.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 60.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
034394ecbd90d6fb87f876b155f03321f45204a90434fe302c470975d001f5f5
BLAKE2b-256 checksum
How to use checksums
f158540d36fd208e73ec47713157812779091cda4e4e30de61131e56484112cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314-win_amd64.whl

Download URL pysdrlib-0.4.0-cp314-cp314-win_amd64.whl
Size 59.8 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
12183b0daa92ea08843ac066355dc02576f1ef4e6c168f9bd61146bddd2041bb
BLAKE2b-256 checksum
How to use checksums
f1c6971c09123562122ad8ee8d6dd96ed877f7332dec20b176e80ab9c6bc58be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314-win32.whl

Download URL pysdrlib-0.4.0-cp314-cp314-win32.whl
Size 59.8 MB
Tags CPython 3.14 Windows x86-32
SHA-256 checksum
How to use checksums
a8d9a2ad32fd26ca3710d790c667fdde1588b3662e4c77543fad95f38ff2c026
BLAKE2b-256 checksum
How to use checksums
e2143701faf58ac7969ba140ee31ae3d2b0cfd4677bd00d86c56131ddf661834
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 61.7 MB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
3ebf4041fec66af499a6923fa8ee58bd98cfa4b047c759826f3a528c4ac50f0a
BLAKE2b-256 checksum
How to use checksums
9c41a9af922e5489bbe535a4e3392d03f549b1e227c5f133a248e1d53beb7fae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL pysdrlib-0.4.0-cp314-cp314-musllinux_1_2_aarch64.whl
Size 61.6 MB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
fc3897c752133838a39f60c2b87ed6149fec32e30c311c23dfef35a459aa82d4
BLAKE2b-256 checksum
How to use checksums
912a27f3a5c9dcd789082c858c14854b4125254bd1862b27c382684cfde290cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pysdrlib-0.4.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 60.7 MB
Tags CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
f0d1f37b1dd10842f108860a0c3b244b5e2179a8b11b584b6023262c50ebf631
BLAKE2b-256 checksum
How to use checksums
87a38cab3a831db26159c439f7a1930a21985845d297f19aed054c28135786b9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pysdrlib-0.4.0-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 60.5 MB
Tags CPython 3.14 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
5952913980e903a2201e9db8eb8ed526e957f1f10ce0f0191205fa8760d84e4b
BLAKE2b-256 checksum
How to use checksums
0fae79e29957c78140a161c6c727faf010edf802fc84c305862e9600b0d60305
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp313-cp313-win_amd64.whl

Download URL pysdrlib-0.4.0-cp313-cp313-win_amd64.whl
Size 59.7 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
cc401f4d11955ca422197098aec808e247c047de1a7daf8715edeec569acbfc5
BLAKE2b-256 checksum
How to use checksums
d478cbaf17f9b00b33cfb68a4db4be299f14060c5170fe3c3e3f723fb5b63061
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp313-cp313-win32.whl

Download URL pysdrlib-0.4.0-cp313-cp313-win32.whl
Size 59.6 MB
Tags CPython 3.13 Windows x86-32
SHA-256 checksum
How to use checksums
667d6c53e9a766a72ba13198560945d52239fcc2427e89051a72bcc244f4fe50
BLAKE2b-256 checksum
How to use checksums
50a35e40084181b4ab149ffc8517fb4400327a9aff7f4c2f3dd47ad673b7850f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 61.7 MB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
63fbdb360feab5480139b8aa1f136bdb2848f4796a6e3f346128e5a9607505d2
BLAKE2b-256 checksum
How to use checksums
afaf1b8ac775ba04a35398ebc5322e71f99c274dfa73cefce4b8348b0aeae1cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL pysdrlib-0.4.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 61.6 MB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
e466c61ac09011390ef13a14fdb10b4379c32e32c3f65838fb09058b237cd2d1
BLAKE2b-256 checksum
How to use checksums
8daba399bd3e98f76fd67292b7ab98a8c98e0acd06ccf48630484a0366c6e4c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL pysdrlib-0.4.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 60.7 MB
Tags CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6edcd398f63d696515a7f83f24dd281aafdc998f80ab087a55c16928b0311846
BLAKE2b-256 checksum
How to use checksums
edb858a147343a06b60b38db180ccd36f22f03bc3f917b0d0fe8f1b1b70b793e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pysdrlib-0.4.0-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 60.5 MB
Tags CPython 3.13 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e5217185d4ced9f5050abd3b1cc1c2be3a157273f7cf719cf011a04a1dd38313
BLAKE2b-256 checksum
How to use checksums
f78948258efa430d7a9193cb55d93ad2c79e0957cf5b76dc3e41682e7977a636
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

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

Download URL pysdrlib-0.4.0-cp312-cp312-win_amd64.whl
Size 59.7 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
c08aa7e2d408040bb65a0a06185f4530ece6de758231f2d4176b514f1b139ed4
BLAKE2b-256 checksum
How to use checksums
374adbe404065422968bd8def0ba1eae374c023d7794c00a9a34b1af2b5a6aed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

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

Download URL pysdrlib-0.4.0-cp312-cp312-win32.whl
Size 59.6 MB
Tags CPython 3.12 Windows x86-32
SHA-256 checksum
How to use checksums
946b8b19576744cdb7588c46f99d76b5756761b7393e11091be8d1443ff96598
BLAKE2b-256 checksum
How to use checksums
6dd2072cf450e5d0352a3586c2c8fcc208aab5f9989c55fbd300809feedeae8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

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

Download URL pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 61.7 MB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
56ea352ac90bd1a386a3fdcff26104d496799a9f93a256352f286ca544c85e56
BLAKE2b-256 checksum
How to use checksums
393397f543c59e071d731b81a68ac41f02b767292a24811edccbc6c113fbca48
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL pysdrlib-0.4.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 61.6 MB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
d7988ef24a701bc0406642157ffc39cddb05db73e70e9762477c8a5cddf340e0
BLAKE2b-256 checksum
How to use checksums
5d520bfcdb3d0b07e094746f77024229045451c96ba3b05cb36524d1e5ff028d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

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

Download URL pysdrlib-0.4.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Size 60.7 MB
Tags CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
58d5b118c0631f0fe4b879d20a87d44fd98b49203e0de9ae13b9f630195ff5fe
BLAKE2b-256 checksum
How to use checksums
cded41453a65b3bc46db0eb0b8360cc1276b42c9416f9a2f72749e3cd6a7e3f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Release files / pysdrlib-0.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl

Download URL pysdrlib-0.4.0-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Size 60.5 MB
Tags CPython 3.12 Linux glibc 2.26+ ARM64 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
c32eda981d149731fe9db5e913d126b62011d9dbaa0f77d6e4f6e67528037f0a
BLAKE2b-256 checksum
How to use checksums
8278d0493341e659e8ded1d4d4e1b4763d390d567b357aa6e950f7fe41160309
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 10, 2026.

Transparency log

Security for pysdrlib 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.

Full provenance

All 25 files in this release have been uploaded with provenance metadata.

Select from 25 files

Attestation for pysdrlib-0.4.0.tar.gz

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 Nov 10, 2026.

Transparency log

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