mft 0.7.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- mft-0.7.0/.github/workflows/ci.yml +56 -0
- mft-0.7.0/.github/workflows/release.yml +103 -0
- mft-0.7.0/.gitignore +14 -0
- mft-0.7.0/.vscode/settings.json +5 -0
- mft-0.7.0/CHANGELOG.md +17 -0
- mft-0.7.0/Cargo.lock +864 -0
- mft-0.7.0/Cargo.toml +21 -0
- mft-0.7.0/Makefile +38 -0
- mft-0.7.0/PKG-INFO +18 -0
- mft-0.7.0/README.md +88 -0
- mft-0.7.0/RELEASING.md +22 -0
- mft-0.7.0/mft.pyi +112 -0
- mft-0.7.0/pyproject.toml +23 -0
- mft-0.7.0/rust-toolchain +1 -0
- mft-0.7.0/samples/MFT +0 -0
- mft-0.7.0/scripts/mft_dump.py +33 -0
- mft-0.7.0/src/attribute.rs +423 -0
- mft-0.7.0/src/entry.rs +127 -0
- mft-0.7.0/src/err.rs +12 -0
- mft-0.7.0/src/lib.rs +299 -0
- mft-0.7.0/src/utils.rs +109 -0
- mft-0.7.0/tests/test_mft.py +61 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
cargo:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- name: Checkout
|
|
12
|
+
uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Install Rust
|
|
15
|
+
uses: dtolnay/rust-toolchain@stable
|
|
16
|
+
|
|
17
|
+
- name: Rust cache
|
|
18
|
+
uses: Swatinem/rust-cache@v2
|
|
19
|
+
|
|
20
|
+
- name: cargo check
|
|
21
|
+
run: cargo check
|
|
22
|
+
|
|
23
|
+
- name: cargo check (abi3)
|
|
24
|
+
run: cargo check --features abi3
|
|
25
|
+
|
|
26
|
+
python:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- name: Checkout
|
|
30
|
+
uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- name: Install Python
|
|
33
|
+
uses: actions/setup-python@v5
|
|
34
|
+
with:
|
|
35
|
+
python-version: "3.12"
|
|
36
|
+
|
|
37
|
+
- name: Install uv
|
|
38
|
+
uses: astral-sh/setup-uv@v7
|
|
39
|
+
|
|
40
|
+
- name: Install Rust
|
|
41
|
+
uses: dtolnay/rust-toolchain@stable
|
|
42
|
+
|
|
43
|
+
- name: Rust cache
|
|
44
|
+
uses: Swatinem/rust-cache@v2
|
|
45
|
+
|
|
46
|
+
- name: Create venv
|
|
47
|
+
run: uv venv .venv
|
|
48
|
+
|
|
49
|
+
- name: Install build deps
|
|
50
|
+
run: uv pip install --python .venv/bin/python -U "maturin>=1.0,<2.0" pytest
|
|
51
|
+
|
|
52
|
+
- name: Build + install (maturin)
|
|
53
|
+
run: .venv/bin/maturin develop --release --features abi3
|
|
54
|
+
|
|
55
|
+
- name: pytest
|
|
56
|
+
run: .venv/bin/python -m pytest -q
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-wheels:
|
|
11
|
+
name: Build wheels (${{ matrix.platform }})
|
|
12
|
+
runs-on: ${{ matrix.os }}
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
include:
|
|
17
|
+
- platform: linux-x86_64
|
|
18
|
+
os: ubuntu-latest
|
|
19
|
+
args: --release --out dist --features abi3
|
|
20
|
+
manylinux: auto
|
|
21
|
+
target: ""
|
|
22
|
+
- platform: linux-aarch64
|
|
23
|
+
os: ubuntu-latest
|
|
24
|
+
# Cross-compile using zig.
|
|
25
|
+
args: --release --out dist --features abi3 --zig
|
|
26
|
+
manylinux: auto
|
|
27
|
+
target: aarch64-unknown-linux-gnu
|
|
28
|
+
- platform: windows
|
|
29
|
+
os: windows-latest
|
|
30
|
+
args: --release --out dist --features abi3
|
|
31
|
+
manylinux: ""
|
|
32
|
+
target: ""
|
|
33
|
+
- platform: macos
|
|
34
|
+
os: macos-latest
|
|
35
|
+
# maturin v1 uses a synthetic target triple for universal2
|
|
36
|
+
args: --release --out dist --features abi3
|
|
37
|
+
manylinux: ""
|
|
38
|
+
target: universal2-apple-darwin
|
|
39
|
+
|
|
40
|
+
steps:
|
|
41
|
+
- name: Checkout
|
|
42
|
+
uses: actions/checkout@v4
|
|
43
|
+
|
|
44
|
+
- name: Setup QEMU (for linux-aarch64)
|
|
45
|
+
if: matrix.platform == 'linux-aarch64'
|
|
46
|
+
uses: docker/setup-qemu-action@v3
|
|
47
|
+
with:
|
|
48
|
+
platforms: arm64
|
|
49
|
+
|
|
50
|
+
- name: Build wheels
|
|
51
|
+
uses: PyO3/maturin-action@v1
|
|
52
|
+
with:
|
|
53
|
+
command: build
|
|
54
|
+
args: ${{ matrix.args }}
|
|
55
|
+
sccache: true
|
|
56
|
+
manylinux: ${{ matrix.manylinux }}
|
|
57
|
+
target: ${{ matrix.target }}
|
|
58
|
+
|
|
59
|
+
- name: Upload wheels
|
|
60
|
+
uses: actions/upload-artifact@v4
|
|
61
|
+
with:
|
|
62
|
+
name: wheels-${{ matrix.platform }}
|
|
63
|
+
path: dist/*
|
|
64
|
+
if-no-files-found: error
|
|
65
|
+
|
|
66
|
+
build-sdist:
|
|
67
|
+
name: Build sdist
|
|
68
|
+
runs-on: ubuntu-latest
|
|
69
|
+
steps:
|
|
70
|
+
- name: Checkout
|
|
71
|
+
uses: actions/checkout@v4
|
|
72
|
+
|
|
73
|
+
- name: Build sdist
|
|
74
|
+
uses: PyO3/maturin-action@v1
|
|
75
|
+
with:
|
|
76
|
+
command: sdist
|
|
77
|
+
args: --out dist
|
|
78
|
+
|
|
79
|
+
- name: Upload sdist
|
|
80
|
+
uses: actions/upload-artifact@v4
|
|
81
|
+
with:
|
|
82
|
+
name: sdist
|
|
83
|
+
path: dist/*
|
|
84
|
+
if-no-files-found: error
|
|
85
|
+
|
|
86
|
+
publish:
|
|
87
|
+
name: Publish to PyPI
|
|
88
|
+
runs-on: ubuntu-latest
|
|
89
|
+
needs:
|
|
90
|
+
- build-wheels
|
|
91
|
+
- build-sdist
|
|
92
|
+
steps:
|
|
93
|
+
- name: Download dists
|
|
94
|
+
uses: actions/download-artifact@v4
|
|
95
|
+
with:
|
|
96
|
+
path: dist
|
|
97
|
+
merge-multiple: true
|
|
98
|
+
|
|
99
|
+
- name: Publish
|
|
100
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
101
|
+
with:
|
|
102
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
103
|
+
skip-existing: true
|
mft-0.7.0/.gitignore
ADDED
mft-0.7.0/CHANGELOG.md
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to
|
|
7
|
+
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
|
+
|
|
9
|
+
## [0.7.0]
|
|
10
|
+
|
|
11
|
+
- Align package version with `mft` core version (`0.7.0`).
|
|
12
|
+
- Migrate to newer PyO3 APIs (Bound / IntoPyObject) and restore compilation on modern toolchains.
|
|
13
|
+
- Modernize packaging (maturin `>=1.0`) and add GitHub Actions CI/release workflows (including Linux aarch64 wheels via zig cross-compilation).
|
|
14
|
+
|
|
15
|
+
## [0.6.1]
|
|
16
|
+
|
|
17
|
+
- Massive dependency update
|