Skip to main content

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) with TypedDict return types
  • Optional audio export helper
  • CLI entrypoint: aup-parser

Package Layout

  • src/: Rust core (PyO3 extension)
  • python/aup_parser/: Python API, types, exports, and CLI
  • tests/: 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_path export 시 사용할 샘플레이트

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-py311 build 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)
  • If a wheel is unavailable for your environment, pip falls back to sdist build and requires a Rust toolchain.

Release

GitHub Actions workflow (.github/workflows/release.yml) runs:

  1. Matrix tests on PRs
  2. Wheel/sdist build on version tags (v*)
  3. Publish dist/* to GitHub Release assets
  4. Publish dist/* to GitHub Packages (GHCR OCI artifact)
  5. Optional PyPI publish (only when UV_PUBLISH_TOKEN secret is set)

PyPI Token Setup

  1. Create a PyPI API token (__token__) on PyPI account settings.
  2. In GitHub repo settings, add:
    • Settings > Secrets and variables > Actions > New repository secret
    • Name: UV_PUBLISH_TOKEN
    • Value: pypi-... token string
  3. Push a release tag (vX.Y.Z). The publish-pypi job uploads dist/* 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.Z and ghcr.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

aup_parser-0.1.9.tar.gz (24.5 kB view details)

Uploaded Source

Built Distributions

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

aup_parser-0.1.9-cp311-abi3-win_amd64.whl (1.2 MB view details)

Uploaded CPython 3.11+Windows x86-64

aup_parser-0.1.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB view details)

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

aup_parser-0.1.9-cp311-abi3-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

aup_parser-0.1.9-cp311-abi3-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

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

Hashes for aup_parser-0.1.9.tar.gz
Algorithm Hash digest
SHA256 253feb6c990d857a92c1fe355741de426765fc1580969b84e89463366bebe8f3
MD5 30d71e65e0ae7a9aba598a00a9f557d3
BLAKE2b-256 d83fb909e8d7536702a104e2a00f67315755edce6518b9fb1169887c5061088e

See more details on using hashes here.

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

Hashes for aup_parser-0.1.9-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 020f239e76c8fed8af032368bbae8f9fa22604b3222a9d5dc65705642ecf3d38
MD5 42900ac87589b84527875f67032dcb47
BLAKE2b-256 455bb91bdb78e0f9b7b836837f10eb6efee6f72f32c92bf1795845526c65aa82

See more details on using hashes here.

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

Hashes for aup_parser-0.1.9-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bcf61ed98e84b7103ee38b7394ef2b8997088229aaa4007a15b1bbd0ab6cadac
MD5 bbbd84ced7935b5f80ffa1e144704fb0
BLAKE2b-256 66d94173ab53d25fc4e3c9e4fae7e81d57ed0f1a356c7fb7451516de7eef7e14

See more details on using hashes here.

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

Hashes for aup_parser-0.1.9-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7d281cea0493a46fa61eccb401c425322de3718d6f34af0ce5b0ee04001406d
MD5 4dd2953014189a1a4637707ade7982f7
BLAKE2b-256 4ad23791c48971aa67ebab8f66d655b41156e655a33620e3654164dc18e7bfba

See more details on using hashes here.

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

Hashes for aup_parser-0.1.9-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 31b3adee674684d1ef3ad12167393361bf5673e75f460ebb4ff93196261fef8d
MD5 a51d684fef066bdfcdee2a1bcdb1c610
BLAKE2b-256 e68a01f0cf9037ecbaa18d530cb9567f4035a2ff519f58621804aac2d096a10b

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