Skip to main content

mdfr

High-performance ASAM MDF (Measurement Data Format) 3.x and 4.x reader, writer, and embedded streaming logger in Rust.

mdfr provides fast, memory-efficient access to automotive measurement data across desktop analytics, server pipelines, and resource-constrained embedded targets.


Key Capabilities

  • High-Performance Reader:
    • Full support for ASAM MDF 3.x and 4.x (.mdf, .mf4).
    • Multithreaded parallel parsing with Rayon and zero-copy data representation using Apache Arrow.
    • Direct integration with Polars DataFrames and NumPy arrays.
    • Exporters for Parquet, HDF5, and CSV.
  • Embedded MDF 4.3 Streaming Logger (no_std + alloc):
    • Independent mdfr-core subcrate engineered for microcontrollers and RTOS environments (ARM Cortex-M4/M7/A).
    • High-throughput streaming with both Sorted (independent DT/DZ blocks) and Unsorted (single interleaved stream) layouts.
    • Zero-copy hardware bus presets for CAN, CAN-FD, LIN, FlexRay, and Ethernet.
    • Lock-free ISR interrupt logging via single-producer single-consumer ring buffer (SpscRing).
    • Power-loss resilience: mid-record truncation repair and on-device in-place file recovery (recover_in_place).
  • Compile-Time Struct Logging:
    • #[derive(MdfRecord)] procedural macro (mdfr-derive) to serialize custom Rust structs with automatic physical conversion and unit metadata.
  • MDF 4.3 Variable-Length Channels (VLSC):
    • First-class support for cn_type = 7 (Variable Length with companion Size Channel) across sorted VDBLOCK and unsorted CG_F_VLSC streams.
  • Multilingual Support:
    • Python bindings via PyO3 (pip install mdfr).
    • Stable C FFI for desktop reading (mdfr.h) and embedded logging (include/mdfr_logger.h).

Workspace Architecture

Crate Target / Environment Description
mdfr Desktop / Server (std) Full-featured crate with Arrow, Polars, Rayon, Parquet, HDF5, Python bindings, and CLI.
mdfr-core Embedded / Bare-metal (no_std + alloc) Pure MDF 4.3 block model, Deflate/LZ4 codecs, static arena allocator, and streaming logger engine.
mdfr-derive Proc-Macro #[derive(MdfRecord)] for compile-time record layout and zero-overhead serialization.

Python Usage

Install from PyPI:

pip install mdfr

Reading Files and Polars Integration

import mdfr

# Load MDF 3 or 4 file metadata
obj = mdfr.Mdfr("measurement.mf4")

# Load all channels into memory (Arrow-backed)
obj.load_all_channels_data_in_memory()

# Or load a selective subset for low memory footprint
obj.load_channels_data_in_memory({"EngineSpeed", "VehicleSpeed"})

# Retrieve numpy array
speed = obj.get_channel_data("VehicleSpeed")

# Retrieve Polars Series or complete DataFrame grouped by master channel
series = obj.get_polars_series("VehicleSpeed")
df = obj.get_polars_dataframe("VehicleSpeed")

# Export to other analytical formats
obj.export_to_parquet("output.parquet", compression="snappy")
obj.export_to_hdf5("output.h5")
obj.export_to_csv("output.csv")

Streaming Logger (Python)

import mdfr

# Configure a streaming logger
builder = mdfr.MdfLogger(layout="sorted", compression="lz4")
g_vehicle = builder.add_group("Vehicle")
ch_speed = builder.add_channel(g_vehicle, "Speed", "float", 64)
builder.set_channel_unit(ch_speed, "km/h")

logger = builder.start("streamed_log.mf4")

for i in range(100):
    logger.begin_record(g_vehicle)
    logger.set_f64(ch_speed, 50.0 + i * 0.5)
    logger.commit()

logger.close()

Rust Usage

1. Analytical Desktop Reader (mdfr with Polars)

[dependencies]
mdfr = { version = "0.8", features = ["polars", "parquet"] }
use mdfr::mdfreader::Mdf;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut mdf = Mdf::new("measurement.mf4")?;
    mdf.load_all_channels_data_in_memory()?;

    // Extract Polars DataFrame grouped by master channel
    let df = mdf.get_channel_polars_dataframe(Some("Time"))?;
    println!("{df}");

    // Export to Parquet
    mdf.export_to_parquet("measurement.parquet", mdfr::export::parquet::CompressionOption::Snappy)?;

    Ok(())
}

2. Embedded Streaming Logger (mdfr-core + mdfr-derive)

[dependencies]
mdfr-core = { version = "0.8", default-features = false, features = ["lz4", "derive"] }
use mdfr_core::logger::{CompressionAlgorithm, DataLayout, Logger, LoggerBuilder};
use mdfr_core::time::ManualClock;
use mdfr_core::MdfRecord;

#[derive(MdfRecord)]
#[mdf(group = "Powertrain")]
struct PowertrainFrame {
    #[mdf(name = "RPM", unit = "rpm", linear(0.0, 0.25))]
    rpm_raw: u16,
    #[mdf(name = "Torque", unit = "Nm", rational(0.0, 0.5, -100.0, 0.0, 0.0, 1.0))]
    torque_raw: i16,
    #[mdf(name = "Throttle", unit = "%")]
    throttle: f32,
    #[mdf(name = "FaultActive")]
    fault: bool,
}

fn main() -> Result<(), Box<dyn core::error::Error>> {
    let mut builder = LoggerBuilder::new(DataLayout::Sorted, CompressionAlgorithm::Lz4Transpose);
    let g_pt = builder.add_record_group::<PowertrainFrame>()?;
    let schema = builder.build()?;

    let file = std::fs::File::create("log.mf4")?;
    let clock = ManualClock::new(0.001, 1); // 1 ms resolution
    let mut logger = Logger::start(schema, file, clock)?;

    let sample = PowertrainFrame {
        rpm_raw: 3200,   // phys: 800 rpm
        torque_raw: 400, // phys: 100 Nm
        throttle: 25.0,
        fault: false,
    };

    // Zero-overhead push
    logger.push_record(g_pt, &sample)?;
    logger.close()?;
    Ok(())
}

3. In-Place Power-Loss Recovery

In embedded applications, unexpected power cut before logger.close() leaves the MDF 4.3 header unfinalized. recover_in_place repairs the file directly on the storage device:

let mut file = std::fs::OpenOptions::new().read(true).write(true).open("log.mf4")?;
let recovered_samples = mdfr_core::logger::recover_in_place(&mut file)?;
println!("Repaired {recovered_samples} records in-place without data loss.");

C / C++ Embedded ABI (include/mdfr_logger.h)

mdfr-core exposes a clean, non-panicking C API using function-pointer vtables for I/O (mdfr_sink_t) and timer clocks (mdfr_clock_t), suitable for FatFs, LittleFS, POSIX, or bare-metal ring buffers:

#include "mdfr_logger.h"

// Define storage vtable (e.g. FatFs f_write / f_lseek)
mdfr_sink_t sink = { .ctx = &fil, .write = my_write, .seek = my_seek, .flush = NULL, .close = NULL };
mdfr_clock_t clock = { .ctx = NULL, .now_ticks = get_ticks, .tick_ns = 1000000, .wall_clock_ns = NULL };

mdfr_builder_t* b = mdfr_logger_builder_new(MDFR_LAYOUT_SORTED, MDFR_COMPRESS_LZ4_TRANSPOSE);
uint16_t group = 0;
mdfr_logger_add_group(b, "CAN_Raw", &group);

mdfr_logger_t* logger = NULL;
mdfr_logger_start(b, sink, clock, &logger);

// Push raw hardware-timestamped bus frame
uint8_t payload[8] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
mdfr_logger_push_raw_at(logger, group, get_hardware_timer(), payload, sizeof(payload));

mdfr_logger_close(logger);

Cargo Features

mdfr (Desktop)

  • default = ["numpy", "parquet", "polars", "cli"]
  • polars: High-performance Polars DataFrame integration.
  • parquet: Apache Parquet exporter.
  • hdf5: HDF5 exporter (rust-hdf5).
  • numpy: NumPy array conversion via PyO3.
  • cli: Command-line executable (mdfr).

mdfr-core (Embedded)

  • default = ["deflate", "lz4", "derive"]
  • deflate: Pure Rust Miniz-Oxide Deflate compression (no_std + alloc).
  • lz4: Pure Rust LZ4 compression (no_std + alloc).
  • derive: Proc-macro #[derive(MdfRecord)] integration.
  • capi-arena: Zero-fragmentation StaticArena bare-metal memory allocator.
  • defmt: Implements defmt::Format for embedded logging.

License

GPL-3.0 License.

Metadata

Release files for mdfr 0.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for mdfr 0.8.2
File Actions
mdfr-0.8.2-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for mdfr-0.8.2-cp314-cp314-win_amd64.whl
mdfr-0.8.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details for mdfr-0.8.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details for mdfr-0.8.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.2-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for mdfr-0.8.2-cp314-cp314-macosx_11_0_arm64.whl
mdfr-0.8.2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for mdfr-0.8.2-cp313-cp313-win_amd64.whl
mdfr-0.8.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details for mdfr-0.8.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details for mdfr-0.8.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for mdfr-0.8.2-cp313-cp313-macosx_11_0_arm64.whl
mdfr-0.8.2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for mdfr-0.8.2-cp312-cp312-win_amd64.whl
mdfr-0.8.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details for mdfr-0.8.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for mdfr-0.8.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for mdfr-0.8.2-cp312-cp312-macosx_11_0_arm64.whl
mdfr-0.8.2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for mdfr-0.8.2-cp311-cp311-win_amd64.whl
mdfr-0.8.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details for mdfr-0.8.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details for mdfr-0.8.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for mdfr-0.8.2-cp311-cp311-macosx_11_0_arm64.whl
mdfr-0.8.2-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for mdfr-0.8.2-cp310-cp310-win_amd64.whl
mdfr-0.8.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for mdfr-0.8.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details for mdfr-0.8.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.2-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for mdfr-0.8.2-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 88.4 MB

Release files / mdfr-0.8.2-cp314-cp314-win_amd64.whl

Download URL mdfr-0.8.2-cp314-cp314-win_amd64.whl
Size 4.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
b0b09bac790d21652bbd8bad928665d37a08a5c5bd60a5489ccf86ec552446f9
BLAKE2b-256 checksum
How to use checksums
70c4f524ba4a06fbedd1b406b9d354916296442dda3a8f18353d07edcc35f7c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.7 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cc1078cea4ea66c2e3d0ec826ad530cc864a49c4fdb7e500abdd449ee9c89e9b
BLAKE2b-256 checksum
How to use checksums
d36a91d44dd8a5248c5b903b55aa241daac7ee4c9bb4401f14a1f29db41792e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 4.5 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
80735eba11952ef2cafa589e798fa27575f0f52d2832a181c8ec831ab63198e8
BLAKE2b-256 checksum
How to use checksums
e7b09d36c14dce7ad51e3997f58a4896d4894a3a76162a1d2698f53f9658e790
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp314-cp314-macosx_11_0_arm64.whl

Download URL mdfr-0.8.2-cp314-cp314-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c6743852373edcfffaf86e48f108e413a4893f2701c50ac2be519c40b2a7bf3f
BLAKE2b-256 checksum
How to use checksums
3aef1eb11fc558e7a7af22bafad98690b12f0b5057b8d6f372b37e74ae1ca4e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp313-cp313-win_amd64.whl

Download URL mdfr-0.8.2-cp313-cp313-win_amd64.whl
Size 4.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
52dcf049e181116aa7d7e0dd26b77030c8cfd23c014bd475d243f280050e0d11
BLAKE2b-256 checksum
How to use checksums
9dc7a85a4532729519767c544acabbcfae98029ffda2bbdcafd6362128793eba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
880cf9a077aece0aff7eebcea8841b7c8a5811d0f35aafba31b694213bb6db13
BLAKE2b-256 checksum
How to use checksums
9e9f94493cd0a51e75eb0b8d47d739ca6d9334beca1721bdceb5dbac037f0228
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 4.5 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
d0feaae01861ec19f8b145196bb1e23a275bc8c50e6d2be638834db2ccb73d90
BLAKE2b-256 checksum
How to use checksums
8d0ad8ff3eb38258ad416f1b9d9f04696441ffd20839a063485de17a6c20932b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp313-cp313-macosx_11_0_arm64.whl

Download URL mdfr-0.8.2-cp313-cp313-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
23b8603d59d9cb69560118e999e92fce06517a07628d189c4a33071379937c0a
BLAKE2b-256 checksum
How to use checksums
7111a18641c6504b8113d2e615973830ef045ffb00b26dc13050b706daa3ffd4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp312-cp312-win_amd64.whl

Download URL mdfr-0.8.2-cp312-cp312-win_amd64.whl
Size 4.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
84e8308b0b0b78723ade597c07ff891af7a13b9d14b1684230a6450cde9b1d70
BLAKE2b-256 checksum
How to use checksums
9722dd5e0d8705008b56ca22e88b2513b8f2f2b41a71b757bebc1fdcb125f082
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fcd506c2b723adf9418d5629948f1d4c37e825b86a22d0fb173711bbb60972cb
BLAKE2b-256 checksum
How to use checksums
7e468986e20c6b0ce5d0e966811f1dc58ed2f452d1b1ada2d230784da0b919a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 4.5 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
023dad046e82460d4ee5a68be984b003d83746c08dfd60e1fb0933baea6ad8ea
BLAKE2b-256 checksum
How to use checksums
589c01640da91656fe5a5210e51c5eef8c927b10bc30afcaed2d79fb05140e31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp312-cp312-macosx_11_0_arm64.whl

Download URL mdfr-0.8.2-cp312-cp312-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
cfbd478b4e3c3b60296c70c443c5b6ec01f1671e48867783159ee7c8dfe807cc
BLAKE2b-256 checksum
How to use checksums
e669a45294af12f6c3615a8952720241c0fd14aeaddd23d1fdab65573e832dc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp311-cp311-win_amd64.whl

Download URL mdfr-0.8.2-cp311-cp311-win_amd64.whl
Size 4.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4eff4eac4f4534aa5e5a8dc3059afc0dce452d70713fd12d93d2db541e197ee0
BLAKE2b-256 checksum
How to use checksums
dcd41b7e79ccd0883107e2276ea6bc02179cb9ebca557ae9df83764faa6dc3e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
431603ff3c05d210b3e489052a3ae1a60dd64864517934244a7627f13a3283a1
BLAKE2b-256 checksum
How to use checksums
36da26d4ad6d3ebabf0956d98db37f75b27e49d5d37bedd1b0443142881e975a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 4.5 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
1b9cd9b88c5803afd2411bfdfa4a600ab528cec8e70aa94a235cf8de8b81f042
BLAKE2b-256 checksum
How to use checksums
6bb815289df666ac71b5f065204b9a89a657cbf769a0f638c67d582884a2fb4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL mdfr-0.8.2-cp311-cp311-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
47eb46e030ab5df3176c3735d04b95ed958b6cf9be9916797b7f962126969912
BLAKE2b-256 checksum
How to use checksums
3a782657702897c0d0a73fa14680fd332062ab511e26c8f697c99d040dda0b95
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp310-cp310-win_amd64.whl

Download URL mdfr-0.8.2-cp310-cp310-win_amd64.whl
Size 4.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
96dd3edfa431372d8dd2a562e17af45231b63995ae0ee36c668d8f6627e1492e
BLAKE2b-256 checksum
How to use checksums
248d9acf3a5828524f9ceb7fb6185472c0fa0ef6cdc49a8d4ae699c19f20e6fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Size 4.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fc6198b1b6399bd2d1bdace90989dbdcabda95b544e37569daa185fd6f308279
BLAKE2b-256 checksum
How to use checksums
a5ba3dccd21a4b2072bf6186ff23b74eacf31079b10625f6c70637c9f24ae4a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Size 4.5 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
386f4d3b5e95e47fcff07c9ff62db2f120a32426727024f5a504cf2d4b33be81
BLAKE2b-256 checksum
How to use checksums
a3591a6eed7c553a930f61a80a5ff26858bc53a5aa519ae33b53010175380864
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / mdfr-0.8.2-cp310-cp310-macosx_11_0_arm64.whl

Download URL mdfr-0.8.2-cp310-cp310-macosx_11_0_arm64.whl
Size 4.2 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
17403ddb4ff3b4bcb21d4704c45ca6e229e567d673f8d579cdfb12aabe12da7e
BLAKE2b-256 checksum
How to use checksums
d64216e47028b5e99f2db6f5132a52fd241eb7aef182ff137ce367718f7f4784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for mdfr 0.8.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page