Audacity .aup3 parser with Rust core and Python interface
Project description
aup-parser
aup-parser is an Audacity .aup3 parser package with a Rust core and typed Python interface.
Highlights
- Rust core for binary XML and sampleblocks analysis
- Class-based Python API (
AUPParser) withTypedDictreturn types - Optional audio export helper
- CLI entrypoint:
aup-parser
Package Layout
src/: Rust core (PyO3extension)python/aup_parser/: Python API, types, exports, and CLItests/: API/CLI/parity tests and golden fixtures
Build (local dev)
cd /Users/joonholee/deeply/aup3-parser
python3 -m pip install --user --break-system-packages maturin
python3 -m maturin build --release -i python3
python3 -m pip install --user --break-system-packages --force-reinstall target/wheels/aup_parser-*.whl
Python API (Class-only)
from aup_parser import AUPParser
parser = AUPParser("tests/test.aup3")
essential = parser.parse(profile="essential")
full = parser.parse(profile="full")
AUPParser.parse() signature:
def parse(
self,
*,
profile: Literal["essential", "full"] = "essential",
audio_output_path: str | pathlib.Path | None = None,
sample_rate: int = 48000,
) -> ParseResultTD: ...
audio_output_path:None이 아니면 WAV를 export- 싱글 채널 프로젝트: 단일 WAV 파일 출력
- 멀티 채널 프로젝트:
audio_output_path를 폴더로 사용하여 채널별 WAV 파일 생성 - 멀티 채널 + 파일처럼 보이는 경로(
out.wav) 입력 시: 자동으로out_channels/폴더로 정규화 - 타임라인 복원: clip metadata(
offset,trimLeft,trimRight)를 우선 적용하고, 불가능한 경우waveblock.start기준으로 배치 - gap 구간은 zero-fill, 겹침 구간은 later block overwrite 규칙 사용
sample_rate:audio_output_pathexport 시 사용할 샘플레이트
CLI
aup-parser tests/test.aup3 --json
aup-parser tests/test.aup3 --full-json --json
aup-parser tests/test.aup3 --json --audio-output-path /tmp/output --sample-rate 48000
Compatibility Notes
- Python 3.11~3.14
abi3-py311build strategy- CI validates install + runtime parse on all combinations:
- Linux/macOS/Windows
- Python 3.11, 3.12, 3.13, 3.14
- Release wheels are built for:
- Linux (
ubuntu-latest) - Windows (
windows-latest) - macOS Apple Silicon (
macos-15) - macOS Intel (
macos-15-intel)
- Linux (
- If a wheel is unavailable for your environment,
pipfalls back to sdist build and requires a Rust toolchain.
Release
GitHub Actions workflow (.github/workflows/release.yml) runs:
- Matrix tests on PRs
- Wheel/sdist build on version tags (
v*) - Publish
dist/*to GitHub Release assets - Publish
dist/*to GitHub Packages (GHCR OCI artifact) - Optional PyPI publish (only when
UV_PUBLISH_TOKENsecret is set)
PyPI Token Setup
- Create a PyPI API token (
__token__) on PyPI account settings. - In GitHub repo settings, add:
Settings > Secrets and variables > Actions > New repository secret- Name:
UV_PUBLISH_TOKEN - Value:
pypi-...token string
- Push a release tag (
vX.Y.Z). Thepublish-pypijob uploadsdist/*via:uv publish --trusted-publishing never dist/*
GitHub Distribution
- Release assets:
https://github.com/<owner>/<repo>/releases/tag/vX.Y.Z - GitHub Packages (GHCR):
ghcr.io/<owner>/aup-parser:vX.Y.Zandghcr.io/<owner>/aup-parser:X.Y.Z - GHCR pull example:
oras pull ghcr.io/<owner>/aup-parser:vX.Y.Z- pulled wheel/sdist files can then be installed with
pip install <wheel-file>
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aup_parser-0.1.9.tar.gz.
File metadata
- Download URL: aup_parser-0.1.9.tar.gz
- Upload date:
- Size: 24.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
253feb6c990d857a92c1fe355741de426765fc1580969b84e89463366bebe8f3
|
|
| MD5 |
30d71e65e0ae7a9aba598a00a9f557d3
|
|
| BLAKE2b-256 |
d83fb909e8d7536702a104e2a00f67315755edce6518b9fb1169887c5061088e
|
File details
Details for the file aup_parser-0.1.9-cp311-abi3-win_amd64.whl.
File metadata
- Download URL: aup_parser-0.1.9-cp311-abi3-win_amd64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
020f239e76c8fed8af032368bbae8f9fa22604b3222a9d5dc65705642ecf3d38
|
|
| MD5 |
42900ac87589b84527875f67032dcb47
|
|
| BLAKE2b-256 |
455bb91bdb78e0f9b7b836837f10eb6efee6f72f32c92bf1795845526c65aa82
|
File details
Details for the file aup_parser-0.1.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: aup_parser-0.1.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.11+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcf61ed98e84b7103ee38b7394ef2b8997088229aaa4007a15b1bbd0ab6cadac
|
|
| MD5 |
bbbd84ced7935b5f80ffa1e144704fb0
|
|
| BLAKE2b-256 |
66d94173ab53d25fc4e3c9e4fae7e81d57ed0f1a356c7fb7451516de7eef7e14
|
File details
Details for the file aup_parser-0.1.9-cp311-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: aup_parser-0.1.9-cp311-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7d281cea0493a46fa61eccb401c425322de3718d6f34af0ce5b0ee04001406d
|
|
| MD5 |
4dd2953014189a1a4637707ade7982f7
|
|
| BLAKE2b-256 |
4ad23791c48971aa67ebab8f66d655b41156e655a33620e3654164dc18e7bfba
|
File details
Details for the file aup_parser-0.1.9-cp311-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: aup_parser-0.1.9-cp311-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
31b3adee674684d1ef3ad12167393361bf5673e75f460ebb4ff93196261fef8d
|
|
| MD5 |
a51d684fef066bdfcdee2a1bcdb1c610
|
|
| BLAKE2b-256 |
e68a01f0cf9037ecbaa18d530cb9567f4035a2ff519f58621804aac2d096a10b
|