Skip to main content

Python SDK for the Invisensing Audace DAS environment — reads Audace data 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 DAQ 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.2.0.tar.gz (77.6 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.2.0-cp314-cp314-win_amd64.whl (201.9 kB view details)

Uploaded CPython 3.14Windows x86-64

invisensing-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (289.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

invisensing-1.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (279.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

invisensing-1.2.0-cp314-cp314-macosx_11_0_arm64.whl (264.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

invisensing-1.2.0-cp313-cp313-win_amd64.whl (201.4 kB view details)

Uploaded CPython 3.13Windows x86-64

invisensing-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (289.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

invisensing-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (279.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

invisensing-1.2.0-cp313-cp313-macosx_11_0_arm64.whl (264.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

invisensing-1.2.0-cp312-cp312-win_amd64.whl (201.3 kB view details)

Uploaded CPython 3.12Windows x86-64

invisensing-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (289.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

invisensing-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (279.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

invisensing-1.2.0-cp312-cp312-macosx_11_0_arm64.whl (264.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

invisensing-1.2.0-cp311-cp311-win_amd64.whl (201.1 kB view details)

Uploaded CPython 3.11Windows x86-64

invisensing-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

invisensing-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (280.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

invisensing-1.2.0-cp311-cp311-macosx_11_0_arm64.whl (265.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

invisensing-1.2.0-cp310-cp310-win_amd64.whl (201.1 kB view details)

Uploaded CPython 3.10Windows x86-64

invisensing-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

invisensing-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (280.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

invisensing-1.2.0-cp310-cp310-macosx_11_0_arm64.whl (265.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

invisensing-1.2.0-cp39-cp39-win_amd64.whl (201.7 kB view details)

Uploaded CPython 3.9Windows x86-64

invisensing-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (290.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

invisensing-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (281.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

invisensing-1.2.0-cp39-cp39-macosx_11_0_arm64.whl (266.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for invisensing-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a3d78111bd304c5e6c0d1ba5bdf2bdd8c9d6bbd0b07bf318ccc5211882cd944b
MD5 71fa65c36eac70bbafc0776aeb469bfb
BLAKE2b-256 30b41586d171ecf79807adb2b19b1366c94100dd04456f0b61777e6a44a00054

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0.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.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 201.9 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.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1ae2780ae6b2edfb281d3932fcc8600f322b2465d6edd46723888da0ea1bec7f
MD5 ca3aa1722ed73d332a951f20b450b519
BLAKE2b-256 e7133dd95ac07a5aa83ec1dc450eaa885ed140b00d6e7be08067349851102b43

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a6b27a7ecae2b36c7c4cbb9483451e0c2aaf6684c1c5f50e3bbd7ea27572ad1
MD5 90a9904a7cff9ce881980e6bae0bb386
BLAKE2b-256 54ddf7fda9e9e3ffaf3bc3225dcea6bf05ed542c2280294ac33aa2279454d778

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 750fcefa2f1d59271879394015985859429993b077d1a520817609873039cd32
MD5 7dbe66724c693227889d48681d044129
BLAKE2b-256 ffdcc9538ab103a0d4abc0e4d4a3bf181e603b1f2b327b2ddfcf5bc9e5295d4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6afc19179323c15fda5bf4e9206b50f8db7d91e3628a9ec55ca8e323aff60355
MD5 f4b572f206d08a37b237c5f28d4d7f4c
BLAKE2b-256 9b6b977c74200dfef1e9390a3348804bc0df035ff73a50e29ba4e8abcc0f3764

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 201.4 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.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 6626513d7ffa9f16811cc6d071cc7348fe728dc90cff3cb3c605c455572418a1
MD5 32bd52648e9bf18654f43d602ae2469f
BLAKE2b-256 d0c7a110024eb9dfdcf9909790e0b2fa77493f1e6d7575ab93ef581b3cf9a06d

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b92dcbf7485d2abaf30f4d98c88f2579d945e886d28050a676a7c09932b84dec
MD5 4013b1b8f951237bff47cbe81097fd8b
BLAKE2b-256 c3c2deff7ca89077b0d371f8ccfbfc484d8f805fe643587e6e6fa52c8792af74

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8403946c53358e5782980c9aa0a1257a6d87b94a7af832a5abdb805c5df6650b
MD5 b4eedcde4d65e059111aa7b40286f3fc
BLAKE2b-256 9183cd3781e0c5aeb92463465032ffbb78cb5f063dbc3b0946a57b91dca0086d

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8876785f9c80cddcb97a9205534f47e4a73a740aa6b254ecfd9c3b635d8bb7c3
MD5 749c2424dc7dc44a766e74221f0787c6
BLAKE2b-256 d08f75088f47ead4b105a12268e16aa478ca1e9625bd006c06cf5c69b43e08b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 201.3 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.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 cab33bc04841cca02e66ffaedbb848d8c2e305d4108dff829b537413fc8938df
MD5 5ab75f1e0c9108c9050ca23e5f74a3be
BLAKE2b-256 4a4e8cce3b4b1f12c1f8b4c3c0c69562e2e0db556830c70c247cfbacefd333ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e54039f0e3ec3795493a602624366dde2cac4a5506bd0295340c377f1c5ea408
MD5 d9464eb178281043c1d256534dd74c87
BLAKE2b-256 5df8cd2dda9ac5149a07ae97894fe0932c59221a3797dcbfcab194142bd4e089

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c28f458967a41ce12040d97ebac89b4b1780f5e72c69d95776b79c2011c786a6
MD5 33989e93c53736cafc72a6178b847e09
BLAKE2b-256 92746e275d25a6c0a71c57fdc25ad0a646daafe1a2798fe55a154f1e99ee7ca6

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2c6a9b5096698ab8a9e74179635fb320a7aed2026c6d319b42e5d87211b7885a
MD5 f31dd1b57f1612dc4b94ef15c69e768c
BLAKE2b-256 891338a960e1ff9cda2706fc37d49cc1be6560c809b3639878b5f7b72f00ed2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 201.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.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb5678d9f22a4c4fd68c602d3bd932f2c539b0bad061a1950a9ca13de37d776f
MD5 a63405760b746cacd1edaa9d8ff27b5c
BLAKE2b-256 454ab27eb9036844233a43ce16072f1a8fe6ee4aa200286356529294f7337b86

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 78e8c7b69d189b1394b9a10d5517ba8c200ecc3c536cf3b33900e835a02a0b58
MD5 2772785d84d42fa90f4c1ac8695db38c
BLAKE2b-256 a75ab7f14f73c1bf2d69e32fe2b10b6aed75837d2e354ec466439d3b75f36ab3

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4a0ec1ff44982f266517b3d409f74515f672ec3e03c84c891a796ffd0e31aac8
MD5 f9bd3181ed8c5200e5f61ec28d3f9407
BLAKE2b-256 e3b2f2d082b02e0dac9adb3ce59b9a080b8b6427b835696ec96b84298bd81873

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d14a98511aaa884ee49f14038beb34ffeea43f390d11ed3539532a1d5cbade4c
MD5 826828a4133bdb83686a4ac8905f348d
BLAKE2b-256 a1d73003867cddc98fcd259201e0999dc67813894a558a9de20668f371ddc5ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 201.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.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bc422dd591e44c65df87def836d90ae5d818baa5d7935718b3b8df980aa07b53
MD5 7b477f03c78deb0b34c0640e13882bff
BLAKE2b-256 a84c08de6b26ff32f4ab15c94353afe01912b203649043ea729b610b00bbeff0

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 618d33c927d3be3264b525e1dfde8a6fb30e74605b8e17f4b1eab4f7de28b1d7
MD5 c4fcca7a8d739098661e590befe634a6
BLAKE2b-256 5fe93c3cb48dc965369a8ee212f638e9da380214ebd5f3acfb36cf66f668fcd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7697400ead03fe143d444f7e94214ba1ebba2deb8796dafaee50c18301ee8edb
MD5 32bfe7d93db255508a56b3c27b00f4fb
BLAKE2b-256 0074bf5ac1e189e9069b239ec11f748b30ba82323fcd2568106c30a68e5bda69

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cf03cd4b171c5864bac013f41bb7e7dfdacc3f5ceccd871ae674e1f27b45d2f4
MD5 2b3e5d15db4f24f67e8c6c72918368aa
BLAKE2b-256 7139aa0d15490b8fdc8cf8d21996abc840a17b432fc3c1e39aefa98e1c56d94f

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: invisensing-1.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 201.7 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.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 1ae119cb9b1580133d4ff56d67574c87cf3d5daa0916cd3e7c2209b42671dafa
MD5 a4bf7cdede41b993529510c40cafb99f
BLAKE2b-256 bf025f43c12b71c199e726c094b2bcacd3aca07c4fcd092095e5d6195dbbbad4

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc7c1284260947ad8597d244e8103de0637f51fea0c80c8703f3b909402aeaf8
MD5 b080787dd78a6d7f20de931ea48cf3c8
BLAKE2b-256 bc48fed40d0ac487d4ce899921014eabc38c153a9d4f39f617724ff77685d95f

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 44f0304ab52962aa4796b47e52e39d531d7fd9e030263819f31cefc1b1967bc7
MD5 3c37b7dfb1b9102c8a77cf5b54977143
BLAKE2b-256 41042f73f8a1fbba66e12f712f53fad83cb2d771d3097b71da1bcb9bf46060a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for invisensing-1.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 abe5c1f70a156ed5d810e03b8ae892e1661251dffb88da1985813b5486a47586
MD5 4ff819cb5f4cd50187fb5c285f7a7b87
BLAKE2b-256 aa2112d992b5129f6660b24b42e9dcac2d732d55530c10503222696d357be782

See more details on using hashes here.

Provenance

The following attestation bundles were made for invisensing-1.2.0-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