Skip to main content

Python SDK for the Invisensing Audace DAS environment — reads PCIe7821 acquisition files (DAT / HDF5 / TDMS / SEG-Y) and extracts per-channel data (I / Q / arctan / magnitude / phase) via a Rust-backed core.

Project description

Invisensing — Python SDK for the Audace DAS environment

invisensing is the official Python library for reading Distributed Acoustic Sensing (DAS) acquisition files produced by the Audace platform. It handles every file format the platform writes (.dat, .hdf5, .tdms, .sgy) through a single uniform API, and exposes the channels each file actually contains — I / Q / arctan / magnitude / phase — in one method call, with the right dtype and optional physical-unit scaling.

The library is format-agnostic but mode-faithful: it never silently re-derives one demodulation product from another. The on-board PCIe7821 DSP chain (fading suppression, spatial differential, detrend filter) is not reproducible in software from an earlier tap, so the channel you can extract is the one the FPGA wrote. Inspect file.mode to dispatch; the SDK raises a clear ValueError if you call an extractor that doesn't apply.

The hot path (header parsing, bytes → numpy conversion, de-interleave) is implemented in Rust and exposed through PyO3, so reading a multi-GB capture stays fast even from Python.

Installation

pip install invisensing

That's it — every supported file format (DAT, HDF5, TDMS, SEG-Y) works out of the box. The default install pulls in numpy, h5py, npTDMS, and segyio so any file written by the Audace FileWriter can be opened without further setup.

Wheels are built from a Rust extension; pip handles the native build transparently. No Rust toolchain is required for end users.

Note — the format extras (pip install invisensing[hdf5] etc.) are still recognised for backwards compatibility with older installation guides, but they are no-ops now: every backend is part of the default install.

Quick start

from invisensing import File, Mode

with File("acquisition.dat") as f:
    print(f)                       # File('…', mode=iq, shape=…, …)
    print(f.duration, "s")
    print(f.distance, "m of fibre")

    # The Mode enum lets you dispatch cleanly on what the file contains.
    match f.mode:
        case Mode.RAW:
            data = f.read_lines(1000)              # (1000, line_size) ADC codes
        case Mode.IQ:
            i = f.get_i()                          # (n, positions) i16
            q = f.get_q()                          # (n, positions) i16
            iq = f.get_iq()                        # (n, positions) complex64
        case Mode.ARCTAN_MAGNITUDE:
            arctan = f.get_arctan()                # (n, positions) i16
            magnitude = f.get_magnitude()          # (n, positions) u16
        case Mode.PHASE:
            phase = f.get_phase()                  # (n, positions) f32 radians

Streaming large files

read_lines(n) advances a cursor; iterating the file yields one pulse at a time:

with File("long_capture.h5") as f:
    while f.lines_left:
        chunk = f.read_lines(10_000)
        process(chunk)

# Or, one pulse at a time:
with File("long_capture.dat") as f:
    for pulse in f:
        process(pulse)

For ad-hoc scripts on small files, read_all() returns everything in one allocation.

Output dtypes — raw codes vs. physical units

I, Q, arctan, and √(I²+Q²) are physically continuous quantities (volts for I/Q/magnitude, radians for arctan) that the FPGA encodes as fixed-point integers on the wire. The SDK offers two flavours of extractor for each lane:

  • Default extractors (get_i, get_q, get_arctan, get_magnitude) return the wire dtype — fast, no copy beyond the de-interleave, no precision loss on round-trip writes.
  • Physical-unit extractors (get_i_volts, get_q_volts, get_iq_volts, get_arctan_radians, get_magnitude_volts) return float32 numpy arrays in the natural physical unit (volts or radians). Use these when you start doing DSP — they save you from remembering the scaling constants.

The full mapping per mode:

Mode Method dtype Unit Scaling applied
Raw read_lines() int16 ADC code
IQ read_lines() int16 ADC code wire layout [I, Q, I, Q, …]
IQ get_i() / get_q() int16 ADC code de-interleave only
IQ get_iq() complex64 ADC code I + j·Q packed
IQ get_i_volts() / get_q_volts() float32 V i16 × range / 32768
IQ get_iq_volts() complex64 V real/imag both in volts
ArctanMagnitude read_lines() int16 mixed wire layout [atan, √, atan, √, …]
ArctanMagnitude get_arctan() int16 fixed-point 32767 ↔ +π
ArctanMagnitude get_arctan_radians() float32 rad i16 × π / 32768
ArctanMagnitude get_magnitude() uint16 ADC code bitcast from wire i16
ArctanMagnitude get_magnitude_volts() float32 V u16 × range / 32768
Phase read_lines() / get_phase() float32 rad already converted by Cardcontrol (i32 × π/32768)

Phase mode is the only one whose payload is already floating-point on the wire — the conversion happens in the acquisition driver so consumers never need to know the vendor's π/32768 scaling.

f.dtype always reflects what read_lines() will return, derived from sample_size and the FLOAT flag in the header.

When to pick which

with File("iq.dat") as f:
    # Quick QC / dumping — keep the wire codes:
    i = f.get_i()                      # int16, fast
    plt.plot(i[0])                     # ADC codes on Y axis

    # Real DSP — work in volts:
    iq_v = f.get_iq_volts()            # complex64, in volts
    envelope_v = np.abs(iq_v)          # volts
    phase_rad  = np.angle(iq_v)        # radians, wrapped

with File("arctan_mag.dat") as f:
    rad = f.get_arctan_radians()       # float32, ±π
    vol = f.get_magnitude_volts()      # float32, ≥ 0 volts

Reading a 4 GB DAT capture stays a 4 GB numpy array if you use the default extractors; the *_volts / *_radians family allocates a new float32 array (so 2× the raw size for i16 / 2× for u16, 8× for the complex64 in get_iq_volts).

Channel extractors — what they mean per mode

PCIe7821 on-board DSP can emit four different products. The SDK maps each to the right extractor:

Mode Wire layout (per pulse) Extractor(s) Dtype out
Mode.RAW [s0, s1, …, sN-1] read_lines() int16
Mode.IQ [I0, Q0, I1, Q1, …] get_i(), get_q(), get_iq() int16 / int16 / complex64
Mode.ARCTAN_MAGNITUDE [atan0, √0, atan1, √1, …] get_arctan(), get_magnitude() int16 / uint16
Mode.PHASE [φ0, φ1, …, φN-1] get_phase() float32 (radians)

Each extractor reads from the file or from a buffer you've already read — pass data= to reuse a buffer across extractors so the cursor doesn't double-advance:

with File("iq.dat") as f:
    chunk = f.read_lines(1000)
    i = f.get_i(chunk)                # reuses the buffer
    q = f.get_q(chunk)                # same — no extra file read
    # equivalent: f.channels(chunk) returns {"i": …, "q": …, "iq": …}

Calling the wrong extractor for the file's mode raises a clear error that names both the actual and the expected mode — no silent garbage:

>>> with File("phase.dat") as f:
...     f.get_i()
ValueError: get_i: file mode is 'phase', but this extractor only
applies to 'iq'. Inspect file.mode to dispatch  see the Mode enum docs.

Format auto-detection

The format is picked from the file suffix:

Suffix Backend
.dat Native Rust (no third-party dep)
.h5, .hdf5 h5py
.tdms npTDMS
.sgy, .segy segyio

If your file has no suffix or an unusual one, force the backend:

File("acquisition_data", format="dat")

Metadata at your fingertips

with File("acquisition.dat") as f:
    f.line_size                 # samples per pulse on the wire
    f.positions_per_line        # spatial positions per pulse (= line_size/2 if INTERLEAVED)
    f.sample_size               # bytes per sample
    f.sample_rate               # Hz
    f.trig_frequency            # Hz
    f.num_lines                 # total pulses recorded
    f.lines_left                # remaining behind the cursor
    f.duration                  # seconds (= num_lines / trig_frequency)
    f.distance                  # metres of fibre covered by one pulse
    f.range                     # ADC voltage range (V)
    f.timestamp                 # producer-side timestamp string
    f.dtype                     # numpy dtype of the wire samples
    f.shape                     # (num_lines, line_size)
    f.spatial_shape             # (num_lines, positions_per_line)

    # Flag inspection — works as a property or as a method call.
    f.is_demodulated            # True / False
    f.is_interleaved
    f.is_float
    f.is_phase
    f.is_unsigned               # arctan/√ files only
    f.is_ac                     # ADC AC-coupled
    f.is_hiz                    # ADC high-impedance

Writing files

from invisensing import export_dat
import numpy as np

samples = np.random.randn(10_000, 512).astype("float32")
export_dat(
    "out.dat",
    samples,
    sample_rate=250_000_000,
    trig_frequency=2_000,
    range_v=1.0,
    timestamp="2026-05-25_12:34:56",
)

export_dat writes the 128-byte Audace header (matching the C-side wire format byte-for-byte) followed by the array's raw samples. The FLOAT flag is set automatically when data.dtype.kind == 'f'.

API stability

Everything exported via from invisensing import * is part of the stable public API starting from version 1.0.0. We follow semantic versioning:

  • Patch releases (0.2.x): bug fixes, performance improvements.
  • Minor releases (0.x.0): additive changes only (new methods, new formats, new optional arguments). Existing code keeps working without changes.
  • Major releases (x.0.0): breaking changes — announced via the changelog with a migration guide.

Backwards compatibility with the legacy SDK

The original invisensing.File module is preserved unchanged:

import invisensing.File as iFile

file = iFile.File("acquisition.dat")
print(file.get_line_size(), file.get_trigger_frequency())
print(file.is_demodulated(), file.is_acquisition_ac())

while file.get_lines_left() > 0:
    data = file.get_lines(5)
    # process …

iFile.export("out.dat", data, file.get_timestamp(),
             file.get_trigger_frequency(), file.get_sample_rate(),
             file.get_range())

The legacy class delegates to the same Rust-backed implementation as the modern File, so legacy scripts run at the new speed without any modification.

Performance & safety

Performance

The lib is built to be the fastest credible way to get DAS samples into a numpy array in Python.

  • DAT reads stream through a BufReader<File>; the inner read_exact runs with the GIL released so a second Python thread can do work while the OS is blocked on disk.
  • No zero-init pass: the typed-conversion path allocates an uninitialised Vec<T> (via Vec::with_capacity + set_len) and fills it with one copy_nonoverlapping. Saves the 4 GB of pointless DRAM writes a vec![0; n] would do on a 4 GB acquisition.
  • De-interleave kernels read the contiguous numpy buffer via as_slice() and iterate with chunks_exact(2) — LLVM auto-vectorises this into SSE/AVX gather-extract instructions on x86_64. The output Vec is also set_len'd, no per-element capacity check.
  • HDF5 / TDMS / SEG-Y loading is handled by their respective Python libraries (themselves C-backed). The de-interleave step always runs through the same Rust kernels, regardless of the source format — channel extraction perf doesn't depend on the file format.
  • Zero allocation on the hot path in the channel extractors: each call returns a single freshly-allocated numpy array; no intermediate scratch buffers, no per-row copies.

Measured on a recent laptop (single-threaded, release build):

Operation Throughput
read_lines() from a .dat (i16 IQ, 100 MB chunk) 3.9 GB/s
get_i() + get_q() on a pre-loaded buffer 3.0 GB/s
get_iq()complex64 packing ≈ same order of magnitude

Reproduce with pytest tests/test_performance.py -v -s. The throughput sanity tests also fail loudly (assertion) if a regression cuts perf below the floor — > 50 MB/s for read_lines, > 100 MB/s for the kernels — so a future refactor can't silently re-introduce the Vec::push / vec![0; n] anti-patterns.

Safety

  • Strict header validation at open time: a File constructor rejects up front any header with line_size <= 0, sample_size not in {1, 2, 4, 8}, or an INTERLEAVED file with an odd line_size. The downstream maths can therefore assume positive sizes everywhere.
  • Bounded unsafe: the whole extension contains three small unsafe blocks (uninit Vec via set_len, the byte→typed primitive copy, and the i16→u16 bitcast for the magnitude lane). Each one has a one-line invariant in a // SAFETY: comment and is exercised by the 1-million-sample correctness tests in tests/test_performance.py.
  • Clear Python exceptions instead of crashes: every error path (missing file, malformed header, short read, wrong mode for the extractor) raises a typed OSError / ValueError / FileNotFoundError / ImportError with a message that names the field at fault.
  • No silent type coercion: the wire dtype is preserved by default; explicit *_volts / *_radians methods do the physical scaling when you want it. No implicit astype(float64) surprise on a 4 GB array.
  • Thread safety: each File owns its own backend; sharing a single File across Python threads is not supported (the file cursor isn't synchronised). Open one File per thread for parallel reads — they don't compete for any internal state.
  • No mmap: deliberate. Memory-mapped files turn I/O errors into SIGBUS (segfault) instead of Python exceptions, which is unsafe when reading user-supplied paths in a long-running lab process.

Examples

See assets/basic_usage.py for a runnable end-to-end script.

Building from source

git clone <repo>
cd python-lib
pip install maturin
maturin develop --release        # local dev install
maturin build  --release         # build a wheel for distribution

The Rust crate lives in src/lib.rs and the Python facade in python/invisensing/.

License

MIT — © 2024-2026 Invisensing. See LICENSE for the full text.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

invisensing-1.0.1.tar.gz (64.7 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

invisensing-1.0.1-cp314-cp314-win_amd64.whl (199.1 kB view details)

Uploaded CPython 3.14Windows x86-64

invisensing-1.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (286.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

invisensing-1.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (276.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

invisensing-1.0.1-cp314-cp314-macosx_11_0_arm64.whl (261.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

invisensing-1.0.1-cp313-cp313-win_amd64.whl (198.6 kB view details)

Uploaded CPython 3.13Windows x86-64

invisensing-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (286.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

invisensing-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (276.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

invisensing-1.0.1-cp313-cp313-macosx_11_0_arm64.whl (261.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

invisensing-1.0.1-cp312-cp312-win_amd64.whl (198.6 kB view details)

Uploaded CPython 3.12Windows x86-64

invisensing-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (286.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

invisensing-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (276.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

invisensing-1.0.1-cp312-cp312-macosx_11_0_arm64.whl (261.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

invisensing-1.0.1-cp311-cp311-win_amd64.whl (198.1 kB view details)

Uploaded CPython 3.11Windows x86-64

invisensing-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (287.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

invisensing-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (277.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

invisensing-1.0.1-cp311-cp311-macosx_11_0_arm64.whl (262.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

invisensing-1.0.1-cp310-cp310-win_amd64.whl (198.1 kB view details)

Uploaded CPython 3.10Windows x86-64

invisensing-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (287.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

invisensing-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (277.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

invisensing-1.0.1-cp310-cp310-macosx_11_0_arm64.whl (262.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

invisensing-1.0.1-cp39-cp39-win_amd64.whl (199.1 kB view details)

Uploaded CPython 3.9Windows x86-64

invisensing-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (287.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

invisensing-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

invisensing-1.0.1-cp39-cp39-macosx_11_0_arm64.whl (263.7 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file invisensing-1.0.1.tar.gz.

File metadata

  • Download URL: invisensing-1.0.1.tar.gz
  • Upload date:
  • Size: 64.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1.tar.gz
Algorithm Hash digest
SHA256 94b59e77617db4e2240e137ed0dd204e166a556fcb9a845e469c323b2d6cc104
MD5 7c6ff09d53b5e0e8900674050cd02caa
BLAKE2b-256 f48e49dac2908d4cfe9c6bc3c7ed38dafe238c43d14fc9d9b569011511eaa434

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1.tar.gz:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.0.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 199.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c62ee5eaea1101c39ad513d0e52fd55edb4869e8331fa697017942c51b5a4da2
MD5 f55afb43e41ac3cad2c100334f7b878b
BLAKE2b-256 15ec63073ec78352a7ef16a455f74871fb95ae89ade09a1b75b684fcd594062e

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp314-cp314-win_amd64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2bedf493efea7da45465fe2adb6cf320af00309463324f187aa058bb45eb2202
MD5 0c4d85292e79e591175d1cdc5abf3699
BLAKE2b-256 db74524f7c07308dd4dba5722e6369dc8d5124c7c801e8c56a41f28607778a6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7e0c45d3fce7e2eccb5c904a2422e57c28ec21b8c181ec5ad110f6ee481e019b
MD5 65dd0dd657aa74452d6784ef61d68de4
BLAKE2b-256 f698cab317784aac6ff0e06b7c27a7f99bbe74120db3a72b0eb6ce2af563b385

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4139fce053b0572d598f5d787b3a7a644233c3588518a7bd7454337c9c00f078
MD5 3dcb05c49463a6965fdd85bb3379a12b
BLAKE2b-256 47ee26996f06c0fc847ff55b5fdb3968dbe9dd2d63858d165cf52ebe319dcc97

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 198.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f4936e912125990a5b82f9077d788481584f3517c8fa04d11e8763fd229ecff6
MD5 f261cb3bd4a685a1fbab31b161dcbc95
BLAKE2b-256 8268f0ae496218ba98d5fedabd6f207c0ce0138ec2084fb807d562f122c856d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp313-cp313-win_amd64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3cf558047cb8932e10b9b1c9d1e7b732c9882a808b888c24d6cb31762902f49
MD5 7a66d3a8c942c89c773734614f0bf38b
BLAKE2b-256 95476bf3102bb87cea60718f0aa9da0d6f27b5693be773928ee5c9f95e29638c

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1985a48631788ee0ec702258b1c00a161054d7b1243830b06b748fc5cb99440f
MD5 49a781557096fd741447d988cad819c3
BLAKE2b-256 7a1c4773aa5b4ea4c2f0341ed546ad4dbd50902f3cb332c7d9e34234a743a344

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56387210396a3ed304255aa1f50e28ea35bc4b4560cf508744e5c11d9822fc9e
MD5 ce9d9e0376a8aa955ccd5f53ad596f64
BLAKE2b-256 d5e281c736005d1c4c57803c54079a2e00eefd8f1a10cb059f1901017eff507e

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 198.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 bdd98b5a39bc01a66cc41fe27b44559a4dfdba1c82cd25efad1d20d9c9823696
MD5 7df5cc287832093aead1fc9281b70419
BLAKE2b-256 04d955fc58b789cdcc50babf4c3315b506e4be38583fbf3d286beb9af3fbba50

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp312-cp312-win_amd64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf8b607a38e71133a4c6633147ee56fd8376d024b18093ae92c45692e0ac722c
MD5 c8b02328e9d275dadcdbbd663cc3a790
BLAKE2b-256 bcae28ba53877fa2f23d3e33cbc49f30294b6a901d37033a7837efc2c9d1ec41

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 715758fd55b04cb47995cc0ea837d2dd0ec79b5d29dfb3a9b581e0b3a1049957
MD5 ee5ec672f881a1dfba33215d402b5834
BLAKE2b-256 aace8a682e2f2e1146524225d4177149c80310f64e3cafa0caaf0534d881013b

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41950236781b483b777a41a82395e482e1737bdbc9e4adb8916e484efc462104
MD5 4dd30e6e2351b1c5180704bf085ee516
BLAKE2b-256 5173b49e52a5b22e29438c720844ca46d2d78d146609734b75e225cd291fd5fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 198.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b2a3e2d1f0a585a7f0225cccf59f411ad82ba53644ebb400fb1b6cd2cefee8b4
MD5 7c72a55faa847a1db9086ff24b5429f4
BLAKE2b-256 45591a4bede80edadaa187d6d93e37a2403f86b308f5679e8ad02f164daa0fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp311-cp311-win_amd64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d46b682c61e2100643396f448c4e9f81564a8d89fb58a5c14eceeaf71a048245
MD5 f2a4b90750597e1d443a01c51dc1e96e
BLAKE2b-256 e4a4b8773539e98e66e6b90202eb992e1aad32415a1663ddea9650c2091bf456

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 239158c07fad5fee3d658ce3f33b12d9dbaae27565baaba9a7516b34da47dbc2
MD5 43a81796a82e9333a6901b8d2c540481
BLAKE2b-256 21967b14d7d8b2e8194646db96c447fd0e6a365c8fa0f15aa93dd063752c340d

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3c11b4b165975daff0eb8f47c0e2961d3fcff011a8a64cc8c8a286ed978c600
MD5 fd2f4ace54734fff147285e6b76ae444
BLAKE2b-256 0ba3cea661e3b441effbb6681de164839445d65c89f222cc222edaa3ebc066e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 198.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1bb41281d3ed6aa2562380264eefaa4ddfb63b28fc8fed65da81ee7713da4600
MD5 73cfc9b313745c05e5b39ebca77a2233
BLAKE2b-256 6fa39135e60250d3ea40b1fbe2527994556bef3ae94697d9b571c68a8e473878

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp310-cp310-win_amd64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 85d7a1f56f538c7a5d6a3dce2ed4502a141d1def6b871e507d3a4191a47f6acb
MD5 0e6d784c18bbcafcc392e4769bffed33
BLAKE2b-256 9d7ce296020390a12ae69b8d1ee38c9d6999ee15caa0f07c5134e791b68f986e

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d135ae24e4a10f091dcd1013eb73fc989a1ddef67303580da30a47f84794b729
MD5 c076780354d555f2f45f012634df4030
BLAKE2b-256 c13a8b95481dbf5b496a10afe7c00ae98b1e9218abd72b007d2c422b7a2f9b6a

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02724902238025f0249c8708a3e23b5bc0726a61e3cc839b131370ac5492162b
MD5 e0b6f9065996439e26ac017bb9521e83
BLAKE2b-256 8d4761b84b0595ad6a57a6a911f7151e90917f4b3491b6c9d5b5016052a6ccd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.0.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 199.1 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for invisensing-1.0.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 418e8a93c4afcafc6b1b2d426dfc9f2acee4605ee71b3ad31f1484c8ad8e966a
MD5 aefc3b7325485d01f3e5beba76d43de1
BLAKE2b-256 0b1d56664dd8b450a70058d8f91582d14aa976bcc7916a09e4d04a43a0219b00

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp39-cp39-win_amd64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e51b8291f9fe6432842bc12935c9d85f188e4d07a307e8da63610474240e1138
MD5 5e2ff503a5afb0fb6ad465a9d19244dd
BLAKE2b-256 5e2b182eaf1e3fbdf6c4c25ec31ef1e7759f1d4d49d2bd8f7ee1870cade6f17c

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b309ec1fa611f513bbb76e69de5b1086fc9eb99f53975e6d8b9f19a211bec5c2
MD5 dfa955e21db4e496057565982a285122
BLAKE2b-256 c6ed8087ff5c719bed48ef6094e0daaefe21e96d4ef846393b18635d6a2b0ea2

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file invisensing-1.0.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.0.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac118ba509c36fcbb6590c2d1f94365ab90fb5165af947c2d3a5f93cd7d6cfef
MD5 25b9bfd2c78e0830981f9b2810f21531
BLAKE2b-256 548a71d1ee4590d480741e511fb6659e68c7032a32af9385f1e907bb041f78bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.0.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on invisensing-io/python-lib

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page