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

Package Layout

  • src/: Rust core (PyO3 extension)
  • python/aup_parser/: Python API, types, exports
  • tests/: API/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,
    output_naming: Literal["channel_index", "track_name"] = "channel_index",
) -> 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 시 사용할 샘플레이트
  • output_naming: 멀티 채널 파일 이름 전략
    • channel_index: channel_00.wav, channel_01.wav, ...
    • track_name: 트랙명을 안전한 파일명으로 변환해 사용(중복 시 suffix 추가)

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.10.0.tar.gz (32.2 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.10.0-cp311-abi3-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11+Windows x86-64

aup_parser-0.10.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

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

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

Uploaded CPython 3.11+macOS 11.0+ ARM64

aup_parser-0.10.0-cp311-abi3-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11+macOS 10.12+ x86-64

File details

Details for the file aup_parser-0.10.0.tar.gz.

File metadata

  • Download URL: aup_parser-0.10.0.tar.gz
  • Upload date:
  • Size: 32.2 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.10.0.tar.gz
Algorithm Hash digest
SHA256 f0ae58199b16c1bad9a5aed4c4a4a81042240a6cb5b78eaea9390a3b8476b70c
MD5 71235ad0d57e21d30ca3a51903ada0e3
BLAKE2b-256 308173f08b1027de480af1af8b7e0ec8b9dd22c89a7afb43449f986603f57770

See more details on using hashes here.

File details

Details for the file aup_parser-0.10.0-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: aup_parser-0.10.0-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 1.3 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.10.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 32a046f62378c9a25b3db9fcca0c68315c27a267cf6bfe968d9e71fc470fc144
MD5 2707da83f59deaa1c5abbc6ed7c43e23
BLAKE2b-256 75a19221d6b1135ea9f45f0397f532ed5141a99430b5191dfca3e7bc3570a0e4

See more details on using hashes here.

File details

Details for the file aup_parser-0.10.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: aup_parser-0.10.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 1.4 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.10.0-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1a955683a11d4263d010e4b50fcef63d6906b28de9c5c40e38a38f1aebfeb80b
MD5 5eaab607030d2a5cc02136ce48ee6bcd
BLAKE2b-256 2963d41de9f1e0fe2cfe4c3f6a470566d2589faf00b0aa7084c95796b6fca60e

See more details on using hashes here.

File details

Details for the file aup_parser-0.10.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: aup_parser-0.10.0-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.10.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0406736e3783d33825be5cce0f0c63353e02e3025d5cef9662f93a7b26b7fbd5
MD5 f58b236fe4930dcffce9e5848fd1c1dd
BLAKE2b-256 2d30617fc22fe2ad2d53fda2192586f11cb9aa9494e8a0f6af7ecb101f353ba2

See more details on using hashes here.

File details

Details for the file aup_parser-0.10.0-cp311-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: aup_parser-0.10.0-cp311-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.3 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.10.0-cp311-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c0087dafddcb508604e8509d5fb0572f2125f824952a9562c4c6ef034279302f
MD5 68c98527020972930188e6bbe20052ed
BLAKE2b-256 494b2cae54ac6a809c3b77a35aa12d8fd7ba55b06f9e6190671236a2171019dd

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