Skip to main content

Parsing of STDF file format to DataFrame with Python bindings

Project description

stupidf

stupidf is a library for limited parsing of STDF files. The STDF structure can be used directly in rust, or alternatively sent out to Python using the parse_stdf function.

STDF is the Standard Test Data Format and is commonly used for high-volume test of semiconductors in Automated Test Equipment (ATE) systems.

The purpose of the library is to quickly and efficiently parse STDF files (which are a fairly unfriendly binary linked list-based format) into more friendly polars DataFrame format.

Not all record types are implemented because they're not relevant for my purposes. Implementing new records is straight-forward, following the others.

Example

In rust

use stupidf::data::STDF;
use polars::prelude::*;

let verbose = false;
if let Ok(stdf) = STDF::from_fname(&fname, verbose) {
    let df: DataFrame = (&stdf.test_data).into();
    let df_fmti: DataFrame = (&stdf.test_data.test_information).into();
    println!("{df:#?}");
    println!("{df_fmti}");
    }

Also contains Python bindings to this functionality, e.g.

   import stupidf as sf
   stdf = sf.parse_stdf("my_stdf.stdf")
   stdf['df']

Installation

To install the rust CLI binary:

cargo install stupidf

To add the stupidf library to a rust project, add to the Cargol.toml:

[dependencies]
<... snip ...>
stupidf = "0.1.0"

or execute from the command line in your rust project

cargo add stupidf

To install the Python bindings and pre-built wheel (linux and win currently):

pip install stupidf

Building from source

The rust library can be compiled simply with

cargo build

The Python bindings can be made using maturin. Activate the desired virtualenv, then install maturin and use it to build the bindings

pip install maturin
maturin develop

Development

If you're seeing issues with pyo3 recompiling on every build, even when there are no pyo3-related changes, then you're most likely running into this issue.

Consider setting the PYO3_PYTHON env variable adding to your Cargo.toml or terminal:

[env]
PYO3_PYTHON = /path/to/python

and also ensuring this is the Python interpreter used by your IDE. E.g. if using nvim, activate the venv before starting nvim.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

stupidf-0.5.1-cp39-abi3-win_amd64.whl (4.4 MB view details)

Uploaded CPython 3.9+Windows x86-64

stupidf-0.5.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

File details

Details for the file stupidf-0.5.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: stupidf-0.5.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 4.4 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.3

File hashes

Hashes for stupidf-0.5.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f79fb8678f9b8eea83583972aef125b1e2ad63cb5ec43c5be5ec2228fee8eab0
MD5 08ebe5d74b7932eaf0b44a4785a0c90c
BLAKE2b-256 02f807ffabcdb31c1a9797dca72469e3389ae841c72e932c1e4384a603c68ae5

See more details on using hashes here.

File details

Details for the file stupidf-0.5.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for stupidf-0.5.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 54943adae387e46d30cee5ee203b10aa8a6754740f04c6bc8d2cb8d55a9574c9
MD5 0d8accc476066f7b0d06878d57b07613
BLAKE2b-256 cbb7cd143ceb184fc6eefb93d40b5a5e79209afceb79124787838bd62b326e90

See more details on using hashes here.

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