pymft-rs
Python bindings for https://github.com/omerbenamram/mft/.
Installation
Available on PyPi - https://pypi.org/project/mft/.
To install from PyPi - pip install mft
Wheels
Wheels are built using the abi3 tag, so a single wheel works for CPython 3.10 and newer.
Free-threaded CPython 3.14 (python3.14t) gets its own cp314t wheel; importing mft there
keeps the GIL disabled, and parsers can be created on one thread and consumed on another.
Supported platforms are:
- Linux x86_64 and aarch64 (manylinux and musllinux; aarch64 and musl are cross-compiled with zig)
- macOS universal2 (x86_64 + arm64)
- Windows x86_64
The package ships type stubs (mft.pyi), checked against the compiled module in CI with mypy.stubtest.
Installation from sources
Installation is possible for other platforms by installing from sources.
This requires a Rust compiler and a recent enough Pip.
Run pip install -e .
Usage
A parser can be iterated more than once, and parser.get_entry(5) reads a single entry by number.
Iterating raises the RuntimeError or OSError of an entry or attribute that fails to parse, after stepping past it.
Pass skip_errors=True to skip them instead: each one skipped is reported as a RuntimeWarning, which
warnings filters can count, log or turn back into errors.
Failing to read the file raises either way, and so does reading an attribute_content that fails to parse.
from mft import PyMftParser, PyMftAttributeX10, PyMftAttributeX30
def main():
parser = PyMftParser("/Users/omerba/Workspace/pymft-rs/samples/MFT", skip_errors=True)
for entry in parser.entries():
print(f'Entry ID: {entry.entry_id}')
for attribute in entry.attributes():
resident_content = attribute.attribute_content
if isinstance(resident_content, PyMftAttributeX10):
print(f'Found an X10 attribute')
print(f'Modified: {resident_content.modified}')
if isinstance(resident_content, PyMftAttributeX30):
print(f'Found an X30 attribute')
print(f'Modified: {resident_content.modified}')
print(f'Name: {resident_content.name}')
print('--------------------------------')
Will print:
Entry ID: 0
Found an X10 attribute
Modified: 2007-06-30 12:50:52.252395+00:00
Found an X30 attribute
Modified: 2007-06-30 12:50:52.252395+00:00
Name: $MFT
--------------------------------
Entry ID: 1
Found an X10 attribute
Modified: 2007-06-30 12:50:52.252395+00:00
Found an X30 attribute
Modified: 2007-06-30 12:50:52.252395+00:00
Name: $MFTMirr
--------------------------------
.....
Metadata
Release files for mft 0.10.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mft-0.10.0.tar.gz | 1.3 MB | Without provenance | Details for mft-0.10.0.tar.gz |
Built distributions (wheels)
Total release size: 9.3 MB
Release files / mft-0.10.0.tar.gz
| Download URL | mft-0.10.0.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0b932af2ace6cae4d70b98e876d3e396bc35c820f10afb31622c9183d9cda49
|
|
BLAKE2b-256 checksum How to use checksums |
1fee076a93e0b2be42636574abd8c8b0720770843cb1e24de07f02cfc3e33c03
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp314-cp314t-win_amd64.whl
| Download URL | mft-0.10.0-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 471.7 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
13a6b87b22e611d62f81f00b6abba9705cc11a424422fde03fee89471c31e16b
|
|
BLAKE2b-256 checksum How to use checksums |
1d8b6e6d936e758ddcd303fc3f27d900d4c36d8c906549486d35dd2c444cd2d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | mft-0.10.0-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 581.4 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
54e36edf6621d588de1bd78e5fbbbd7fc230b8dbb21e242c16d438ede012ff5e
|
|
BLAKE2b-256 checksum How to use checksums |
edcda653984ed6ff577297ab8e7d98abbca3375764eacfce2a3c0fbb1ca96cab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp314-cp314t-musllinux_1_2_aarch64.whl
| Download URL | mft-0.10.0-cp314-cp314t-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 557.9 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
c66366f7333ae4b43743ad4e9a199be757bc0fe41bbea44f482c10a33a83ba7b
|
|
BLAKE2b-256 checksum How to use checksums |
9940114f3c7e71b15d1cd01107724afb84cf086d0797ae34bca73ca93e4b7c28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | mft-0.10.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 666.7 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
8cdd39e390c9522bee10bef2a55325bdfb24a44b5bfd18f44b073f607b0324c6
|
|
BLAKE2b-256 checksum How to use checksums |
cc8b029f5283b2216852df2ece90b0d2b6f78c3e0b4380fd0209ba08b62a2a7d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | mft-0.10.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 559.1 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
c1ae48660300dcb9370d954bff04ff80c0f5d343c7b7893d9c9b9cf478b1da92
|
|
BLAKE2b-256 checksum How to use checksums |
e3dfbf27878db8fae486686236748e18c26b8bde9c7083d8da80066e1ecf52b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | mft-0.10.0-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
021a643db9c4200fb42efd9c3523d3f4be7dcf87dd8c6c1c662329f784f5947f
|
|
BLAKE2b-256 checksum How to use checksums |
686e78b8702bf537355de583b783ab9aec089ada3089341ecaf29debcc2144e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp310-abi3-win_amd64.whl
| Download URL | mft-0.10.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 481.6 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c279bb7c3c88072e34f8ba8c142a62317a3f9cd334ccbae5e6a7dce56a27ab39
|
|
BLAKE2b-256 checksum How to use checksums |
c5485d3eda720c54a35da86e11f3c148b24c009d8a76bcb32df45e10adc5bbc4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | mft-0.10.0-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 588.5 kB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5d16741c5d4f94408b7910ea80a6178bc3aa28761e4d00abf9cdf10cf2d153ca
|
|
BLAKE2b-256 checksum How to use checksums |
5810608767651d4913d170cc1b68bd07bc7738be03e613927dc0112268d44759
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | mft-0.10.0-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 563.1 kB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
631a26f92d9caf75f0981d78b24ad99a1c01a7f7c4639b56c924eaa7b38bb1d3
|
|
BLAKE2b-256 checksum How to use checksums |
c48acb1e1686de6c5e0ab754a2b6a995f1c07834bb58cde6a2a6e16d4c19f947
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | mft-0.10.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 677.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
82949fa00e21c5f8bab7280e1efa628e2198b0f83df50e2ef3e7cc075b7bcec1
|
|
BLAKE2b-256 checksum How to use checksums |
d8dfece559488d0b54c42b91b97d29bcb86cdb73ff5f135c74eb6f53db3a7f4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | mft-0.10.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 564.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
60d4e1e0566e0314051c2754a9aba1176760f4b327d7f587b1257e31bf4198bd
|
|
BLAKE2b-256 checksum How to use checksums |
92aea48017aa3ef41770606b57657d7f0dbf79652938c2a68b18efd61dd99dc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / mft-0.10.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | mft-0.10.0-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
84531dcbf98e6104c50bbfcc96a92043ac14be67ce79234f24798be3dec16a2b
|
|
BLAKE2b-256 checksum How to use checksums |
f894929fd5de18dc2a9261837577e6c72002925f1523dcce7b217ee4e6762e83
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.13.6 {"installer":{"name":"uv","version":"0.13.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for mft 0.10.0
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.