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.3

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.3
File Actions
mdfr-0.8.3-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for mdfr-0.8.3-cp314-cp314-win_amd64.whl
mdfr-0.8.3-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.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.3-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.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.3-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for mdfr-0.8.3-cp314-cp314-macosx_11_0_arm64.whl
mdfr-0.8.3-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for mdfr-0.8.3-cp313-cp313-win_amd64.whl
mdfr-0.8.3-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.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.3-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.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.3-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for mdfr-0.8.3-cp313-cp313-macosx_11_0_arm64.whl
mdfr-0.8.3-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for mdfr-0.8.3-cp312-cp312-win_amd64.whl
mdfr-0.8.3-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.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.3-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.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.3-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for mdfr-0.8.3-cp312-cp312-macosx_11_0_arm64.whl
mdfr-0.8.3-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for mdfr-0.8.3-cp311-cp311-win_amd64.whl
mdfr-0.8.3-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.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.3-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.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.3-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for mdfr-0.8.3-cp311-cp311-macosx_11_0_arm64.whl
mdfr-0.8.3-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for mdfr-0.8.3-cp310-cp310-win_amd64.whl
mdfr-0.8.3-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.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
mdfr-0.8.3-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.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
mdfr-0.8.3-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for mdfr-0.8.3-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 89.2 MB

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

Download URL mdfr-0.8.3-cp314-cp314-win_amd64.whl
Size 4.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
42be72351c813d3897c4d73bdb604970827045fe2c2ffd3735c85e38f72176e2
BLAKE2b-256 checksum
How to use checksums
81dd56b81267e5d74f0401c7a2845171fdb23307e0be190b7541f3ac402d10ab
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.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.3-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
623d7cd8de05f28322443ada75fee3eabb70021644c8c930d04e4acf935dc513
BLAKE2b-256 checksum
How to use checksums
85e064283a86281109834b96a23ed3de514cfd1edd57078baffaedb6e732fc8a
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.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.3-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
68cc8f4cfd0e14adb072c0e28262c1b894e8ca80e8d09bd0cb6c45f5c9e915d0
BLAKE2b-256 checksum
How to use checksums
8c9ff010dbc4f684865f5bd524b75a71da2133ea4e2c9aacab78a3c63c7a2748
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.3-cp314-cp314-macosx_11_0_arm64.whl

Download URL mdfr-0.8.3-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
a9f34f2b5fccb7ce020e7d6b6c847485e64ec3ae95bee5b7db95b5382bb02de9
BLAKE2b-256 checksum
How to use checksums
06562b26289c84784a797855947312bf89151a93cb709a1af2e6a7edef2fe132
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.3-cp313-cp313-win_amd64.whl

Download URL mdfr-0.8.3-cp313-cp313-win_amd64.whl
Size 4.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
2ef1758a36747aa0340e3daed2108e2ed4d32446da76225b18379c4d087ce84d
BLAKE2b-256 checksum
How to use checksums
1fca699c65d41e1004162ed338ad8d31b0340b38aac4aaa55971986c44dd6e0b
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.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.3-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
64488a9e9723a5fc279f9b146e979a78bfea2e3097bf79fb50a8c5dd02f656b3
BLAKE2b-256 checksum
How to use checksums
d5845a148a51404c6f62e004f814fc27a442eff7ad0f78e1292d2aea9d45f508
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.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.3-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
41f7c2774f96eaf149d570dd210ec0ba5cf8dd4a4d130edc4f4d7b679f9de808
BLAKE2b-256 checksum
How to use checksums
31718274406646f48876832ca9ad5691db53e1829e69ba00722d2f0373336bef
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.3-cp313-cp313-macosx_11_0_arm64.whl

Download URL mdfr-0.8.3-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
4c75d625eb5cf38db5b74327498295176ba46656710ae0ebca5a0da2d6a9c6cd
BLAKE2b-256 checksum
How to use checksums
45e9c4ad47d99a6e03e76c5ff3101be0830879e6348bd679185daae6104e7444
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.3-cp312-cp312-win_amd64.whl

Download URL mdfr-0.8.3-cp312-cp312-win_amd64.whl
Size 4.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7fb0c5fdf2fe3ab58b11b8659cfcfa119a94deb843d5987bb7a7e3ef942434dd
BLAKE2b-256 checksum
How to use checksums
2339d23ceb047becb585095057417233d928db435c63ff094fbe49245f5b84f2
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.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.3-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
0138c993ad0725d8a36a7970b367148ffd4bb05a6db85d7d56fbe49515eac83c
BLAKE2b-256 checksum
How to use checksums
56ccf4e998750a34e78c3fd245d5ab6d997f801ee6e879cff1687cfd09e8b4ca
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.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.3-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
9165204e4bd6e286916c1f5f848982a56abf7d284d211c35a6699ebafc8d9d39
BLAKE2b-256 checksum
How to use checksums
f40c882670ee1c145de7245588587b374a0feeb63e4abb78f5f4d09a97bc16ca
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.3-cp312-cp312-macosx_11_0_arm64.whl

Download URL mdfr-0.8.3-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
9a94801e61e87645fb75010f1aa1a330a7aadf3487831ee3db189f78eaf9b04e
BLAKE2b-256 checksum
How to use checksums
fdf1fe9add63c0a6834d6220443225b1b126703d1f669f7c1ab4851a6dd2cc14
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.3-cp311-cp311-win_amd64.whl

Download URL mdfr-0.8.3-cp311-cp311-win_amd64.whl
Size 4.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
8d0e52b7e795c51b391ec777bd28614cc6871308b68e78c418be90d979837187
BLAKE2b-256 checksum
How to use checksums
d7921c817e52852de94bb718791b0674ce699834c4a1aa5039a3768ae1937494
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.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.3-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
27ae006115eab1cd5a1a06637afd928f062ff32e2dbf1022027e9b7b192de857
BLAKE2b-256 checksum
How to use checksums
a84e7476899903a125737141b09eaa716bf755bcf95ea9fcec98fce82946ff6c
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.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.3-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
1a41447964f737b47cf684ffcaa7249cb3aca349f1c8a4878eb4f2a368aa25a4
BLAKE2b-256 checksum
How to use checksums
60fd0b66f2d19ad044e6119b2a02afb093e8d90c5256d06721d0acc736ca3fa1
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.3-cp311-cp311-macosx_11_0_arm64.whl

Download URL mdfr-0.8.3-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
dcf9a237e5af1b5f189fb239036daec7aecfdf89f6a101f105805c05d96bc511
BLAKE2b-256 checksum
How to use checksums
f16a0a770f32a003b9bd5260b70c3bbf05aca42e6244d1ccc68e78e9ca5383d7
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.3-cp310-cp310-win_amd64.whl

Download URL mdfr-0.8.3-cp310-cp310-win_amd64.whl
Size 4.4 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
5aea2104f4969f0c189ceb19f2b7fba7626d7768c46cf65d31b1b3b5a33238f0
BLAKE2b-256 checksum
How to use checksums
f59dcb8de0193eb2aabf69b76b235972a6584309fc1f987a86bd50855a003210
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.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl

Download URL mdfr-0.8.3-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
e57e4fb0d84386b3e6128bd411eca6617c4d72046a02cb55db60ea1774b5afce
BLAKE2b-256 checksum
How to use checksums
b0d051635499421b8b76d625b485aa7b3f1b0ee35bd8e19400cb104f953f3953
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.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl

Download URL mdfr-0.8.3-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
f1a1efe43d6ca8daa00079d73d351babbd09635ba2f9954441ea9f0e7472119b
BLAKE2b-256 checksum
How to use checksums
404f2c6813247c0d0a6a65693e8787df069ed868477612072329058bfd6f0680
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.3-cp310-cp310-macosx_11_0_arm64.whl

Download URL mdfr-0.8.3-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
b6e274d9f35945597d397d826e8d5a118f98cadca31acb261be998fb9462b970
BLAKE2b-256 checksum
How to use checksums
65368907fb61cfbde61df006a2f2a6a2d609ef7206ff1e369b09957d6be22f3b
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.3

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