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.0.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.0-cp313-cp313-win_amd64.whl (200.8 kB view details)

Uploaded CPython 3.13Windows x86-64

invisensing-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (286.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

invisensing-1.0.0-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.0-cp313-cp313-macosx_11_0_arm64.whl (261.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

invisensing-1.0.0-cp312-cp312-win_amd64.whl (200.8 kB view details)

Uploaded CPython 3.12Windows x86-64

invisensing-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (286.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

invisensing-1.0.0-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.0-cp312-cp312-macosx_11_0_arm64.whl (261.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

invisensing-1.0.0-cp311-cp311-win_amd64.whl (200.5 kB view details)

Uploaded CPython 3.11Windows x86-64

invisensing-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (287.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

invisensing-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (277.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

invisensing-1.0.0-cp310-cp310-win_amd64.whl (200.6 kB view details)

Uploaded CPython 3.10Windows x86-64

invisensing-1.0.0-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.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (277.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

invisensing-1.0.0-cp39-cp39-win_amd64.whl (201.4 kB view details)

Uploaded CPython 3.9Windows x86-64

invisensing-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (287.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

invisensing-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (278.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

invisensing-1.0.0-cp39-cp39-macosx_11_0_arm64.whl (263.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: invisensing-1.0.0.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.0.tar.gz
Algorithm Hash digest
SHA256 fde7a3ca39a4f19e033eaeef5dcaf82ff89758e6d24f6497c52348c7c0aa58df
MD5 9cec51e77c95dc580f765958f98b54bb
BLAKE2b-256 33c4bb89fa8dc6090f3197a234d759ba6ceaca1cd045d7cd85d027f906ecb073

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: invisensing-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 200.8 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.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b8e450e17612821cd3a64b605cb314a306a0490d7066cfdb25e33fdf0afc756a
MD5 1fe1828f18be3ce3b84f696b9dc27fec
BLAKE2b-256 428dbcd937f607522cf9f073d753ab26592a3c4a46a9eef084181806ccb75afc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6dab9cef24fd6e7aded15dfe3fb96a1608165c4756cf7c0f425580f4bf84bff0
MD5 95e52205304552b8bf61ea1043504f14
BLAKE2b-256 4ce0f610747e08c3fb64a72d4183ef38dc5ec3ac886564cbfcd4262c003b186c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 db672fbb50cf03a1100d9bb76f8c6f9bceb571ea5a2f5b241bf2c35c270fafdc
MD5 3e2e131b907690b30e5c754dde6a3086
BLAKE2b-256 11d82720a0c03bd30c76899922b5fdc6e1bbd1464b2652aea6dabc5cc785965c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 543c67a3d7e2eb1aa4ebd1ce8d08fa0d4625597cc18184d2a9f17b802013ad3f
MD5 0f9da8c061e7ec8241bbbfc4ddd97fdd
BLAKE2b-256 ffd01f825e9f68382904607c9dd88faa1ede560b862e72d942ac775a2d559315

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: invisensing-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 200.8 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2054a0b365f7208fbb5aa291c080d2338373fe4ebe80c415f20974c36a28ff23
MD5 529dbb6cf67762a0220e3fe26fd7d61c
BLAKE2b-256 09d77512715c5c0e742aff53b16e1b1a79260c802990edd6394747bf5743916e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4146fbb30118f6f7cce5ebf3980429211bf5e36304fe09c832743cd4940bbfda
MD5 a73d767654c3e18d643756a077838839
BLAKE2b-256 a6d1c614900c2a956d92cdb3760fcdb527e979608cf8ec1d62bddd67e8092313

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8bdfcd621f70d45a899e18bec4f91d9d06b1086f80a1b0c20ed8a5059f6ac1da
MD5 a08695a2208370421540dfeac7a8bbaf
BLAKE2b-256 87187954613e06dba6aa924ede98f5ff7911f2bccf18695c33a2d3058dea49ee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b5d06316a211cd9f8a2b1dbbb4453aee40808d2ec980331a5648ecc791647a67
MD5 5fc2316d21b6a0387cde847c17100384
BLAKE2b-256 cf06a4409fffd9d61b7fc34437533c3fb68b93d8e5299393659d221a4da228d3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: invisensing-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 200.5 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dac641e558d960798ef5431b7deead9e673a08668d8d532916537c7acd0c0ad4
MD5 8e9f38367569737afa378a893bbcb141
BLAKE2b-256 b0cd3da23c9e8accb5ac4550b5ba71bfa72c3b898e66817c46ba9258c0a0123a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c028c1d4a3a0121a966656a82ddeff95c932f14dd2d98955226e68fdf23cdc2
MD5 0eed88492cfc5ef6ced265ac6088ea62
BLAKE2b-256 2c0750ad92e678c71f2a2d58a791d4eeca7ce4cf73540c64f71019c1abc6a2e5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2dd425c822179a9b34cce947b9f422133ffc9a7d51ee76a4bd3978253294b09d
MD5 c4922f959ef461a0626b66c6d3e69c1d
BLAKE2b-256 925243a6b030a685f3d5d4f6cec2e02f9e8f360f11f2efa9598ae9d2a86073d3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d216c5e5aa094655fb87359766777959ce8421c7f616344f0800d69c25fdc4b9
MD5 a260f262d80c5bd06b73f05f6d5332a9
BLAKE2b-256 2690510f18638b9be408cc5fcfff4c8299b1467ba3ab4affd602e4edd7d072ff

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: invisensing-1.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 200.6 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 acb1c951f3d5d85e03920b8e5682c6229eedcbc19181151517e3ac7030fb97b6
MD5 8976b0dbd8afa3651b9085e149b8c732
BLAKE2b-256 e7f7766069994f55c7efedcfd47b76c3a655cfd7a9edeb6696da67b38d6e4ce3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 62c00253a31e59c92f64ea4cf0768c34622685aaf28c7c87eff02576cb2f19b4
MD5 139f49885d00d3b3ccab64cc95ccd2fc
BLAKE2b-256 680646fbfee8a9800f13618d74768dc0122afc3194c70d3a8a70ca2f79df5833

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6dd745d43dec676b89a78f2c1c22faab1ddad390e462bf85e0531272da790f2f
MD5 768d68622dc801cb7744ea89e3474cba
BLAKE2b-256 c04b1822f97d3b960c9f6cd821de3dc573cb1fd93d6e69213a5fbf7264a69b57

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e120e05593a655d93fbfc2047759ea5e9848f98f349594478f099443640d0e10
MD5 36509008218960ae109cd85c1e2d61be
BLAKE2b-256 170f14f23a3f6cd38674508114d9bef163ea157ff31fda22b5a96627e2e8144b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: invisensing-1.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 201.4 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 be2338c3271d747ac2f704c676b5399761dde5eeb7d7ca17c4ef680398539db0
MD5 613fdb417de923c5276c1e15dbe34190
BLAKE2b-256 25b228d94d94af65a421346fdaff4a01e812c608eadd4a5197f858c40786537a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 24eaa8f9fdd1d2db57088e84b0a7e08371eb5c7012775b6a4c04d1ac1cd8ea30
MD5 8d5938ad7006830bab284268c210a4de
BLAKE2b-256 8248c9d0cd4738ea578f2e31eb8c0f6b8defab88b8cb798c203d45827239027a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 66234aa15da48aa0c2c2c3961aadf7962f728114a6c8ad4ea4925d8c2e05bcd1
MD5 c35376c5c53438ee0a549f47e0575696
BLAKE2b-256 255fa52cbeaf1bc84004ad06c685fe123c0e0fad351919aa1d2188e20708a4f7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for invisensing-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a07dff1816675dda0a933c5cadf5e2b1308cfe909fb4eabc809f9c2f9abc1e09
MD5 f01031f78d163723649bd26e53f812f6
BLAKE2b-256 83637514205c100634a8d21aa337d09a5279c33dad0c48be0b4bc0ca2433defb

See more details on using hashes here.

Provenance

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