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)
| 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)
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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logRelease 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 logSecurity 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.
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 logA 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.