pyaudiocast 0.1.6__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.
- pyaudiocast-0.1.6/.github/workflows/ci.yml +102 -0
- pyaudiocast-0.1.6/.github/workflows/release-please.yml +17 -0
- pyaudiocast-0.1.6/.github/workflows/release.yml +113 -0
- pyaudiocast-0.1.6/.gitignore +22 -0
- pyaudiocast-0.1.6/.release-please-manifest.json +3 -0
- pyaudiocast-0.1.6/CHANGELOG.md +70 -0
- pyaudiocast-0.1.6/Cargo.lock +1215 -0
- pyaudiocast-0.1.6/Cargo.toml +22 -0
- pyaudiocast-0.1.6/PKG-INFO +11 -0
- pyaudiocast-0.1.6/README.md +250 -0
- pyaudiocast-0.1.6/build.rs +9 -0
- pyaudiocast-0.1.6/csrc/alsa_suppress.c +18 -0
- pyaudiocast-0.1.6/examples/list_devices.py +12 -0
- pyaudiocast-0.1.6/examples/play_sine.py +24 -0
- pyaudiocast-0.1.6/pyaudiocast/__init__.py +6 -0
- pyaudiocast-0.1.6/pyaudiocast/_pyaudiocast.pyi +58 -0
- pyaudiocast-0.1.6/pyproject.toml +18 -0
- pyaudiocast-0.1.6/release-please-config.json +10 -0
- pyaudiocast-0.1.6/src/device.rs +152 -0
- pyaudiocast-0.1.6/src/error.rs +80 -0
- pyaudiocast-0.1.6/src/lib.rs +183 -0
- pyaudiocast-0.1.6/src/player.rs +375 -0
- pyaudiocast-0.1.6/tests/conftest.py +21 -0
- pyaudiocast-0.1.6/tests/test_devices.py +19 -0
- pyaudiocast-0.1.6/tests/test_player.py +164 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
rust:
|
|
10
|
+
name: Rust checks
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
|
|
15
|
+
- name: Install system dependencies
|
|
16
|
+
run: sudo apt-get update && sudo apt-get install -y libasound2-dev
|
|
17
|
+
|
|
18
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
19
|
+
with:
|
|
20
|
+
components: clippy, rustfmt
|
|
21
|
+
|
|
22
|
+
- uses: Swatinem/rust-cache@v2
|
|
23
|
+
|
|
24
|
+
- name: Check formatting
|
|
25
|
+
run: cargo fmt --check
|
|
26
|
+
|
|
27
|
+
- name: Clippy
|
|
28
|
+
run: cargo clippy -- -D warnings
|
|
29
|
+
|
|
30
|
+
- name: Run tests
|
|
31
|
+
run: cargo test
|
|
32
|
+
|
|
33
|
+
python:
|
|
34
|
+
name: Python tests (${{ matrix.os }})
|
|
35
|
+
runs-on: ${{ matrix.os }}
|
|
36
|
+
strategy:
|
|
37
|
+
fail-fast: false
|
|
38
|
+
matrix:
|
|
39
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v4
|
|
42
|
+
|
|
43
|
+
- name: Install system dependencies (Linux)
|
|
44
|
+
if: runner.os == 'Linux'
|
|
45
|
+
run: sudo apt-get update && sudo apt-get install -y libasound2-dev
|
|
46
|
+
|
|
47
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
48
|
+
|
|
49
|
+
- uses: Swatinem/rust-cache@v2
|
|
50
|
+
|
|
51
|
+
- uses: actions/setup-python@v5
|
|
52
|
+
with:
|
|
53
|
+
python-version: "3.12"
|
|
54
|
+
|
|
55
|
+
- name: Create virtualenv and install dependencies
|
|
56
|
+
run: |
|
|
57
|
+
python -m venv .venv
|
|
58
|
+
|
|
59
|
+
- name: Install dependencies
|
|
60
|
+
run: |
|
|
61
|
+
.venv/bin/pip install maturin numpy pytest pytest-cov
|
|
62
|
+
shell: bash
|
|
63
|
+
if: runner.os != 'Windows'
|
|
64
|
+
|
|
65
|
+
- name: Install dependencies (Windows)
|
|
66
|
+
run: |
|
|
67
|
+
.venv\Scripts\pip install maturin numpy pytest pytest-cov
|
|
68
|
+
shell: cmd
|
|
69
|
+
if: runner.os == 'Windows'
|
|
70
|
+
|
|
71
|
+
- name: Build and install
|
|
72
|
+
run: |
|
|
73
|
+
source .venv/bin/activate
|
|
74
|
+
maturin develop
|
|
75
|
+
shell: bash
|
|
76
|
+
if: runner.os != 'Windows'
|
|
77
|
+
|
|
78
|
+
- name: Build and install (Windows)
|
|
79
|
+
run: |
|
|
80
|
+
.venv\Scripts\activate && maturin develop
|
|
81
|
+
shell: cmd
|
|
82
|
+
if: runner.os == 'Windows'
|
|
83
|
+
|
|
84
|
+
- name: Run tests with coverage
|
|
85
|
+
run: |
|
|
86
|
+
source .venv/bin/activate
|
|
87
|
+
pytest tests/ -v --tb=short --cov=pyaudiocast --cov-report=xml || echo "::warning::Some tests failed (expected in CI without audio hardware)"
|
|
88
|
+
shell: bash
|
|
89
|
+
if: runner.os != 'Windows'
|
|
90
|
+
|
|
91
|
+
- name: Run tests with coverage (Windows)
|
|
92
|
+
run: |
|
|
93
|
+
.venv\Scripts\activate && pytest tests/ -v --tb=short --cov=pyaudiocast --cov-report=xml
|
|
94
|
+
shell: cmd
|
|
95
|
+
if: runner.os == 'Windows'
|
|
96
|
+
|
|
97
|
+
- name: Upload coverage to Codecov
|
|
98
|
+
if: matrix.os == 'ubuntu-latest'
|
|
99
|
+
uses: codecov/codecov-action@v5
|
|
100
|
+
with:
|
|
101
|
+
files: coverage.xml
|
|
102
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: Release Please
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
pull-requests: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
release-please:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
steps:
|
|
15
|
+
- uses: googleapis/release-please-action@v4
|
|
16
|
+
with:
|
|
17
|
+
token: ${{ secrets.RELEASE_PLEASE_TOKEN }}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "pyaudiocast-v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build-linux:
|
|
14
|
+
name: Build Linux (${{ matrix.target }})
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
target: [x86_64]
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Build wheels
|
|
23
|
+
uses: PyO3/maturin-action@v1
|
|
24
|
+
with:
|
|
25
|
+
target: ${{ matrix.target }}
|
|
26
|
+
args: --release --out dist -i python3.9 -i python3.10 -i python3.11 -i python3.12 -i python3.13 -i python3.14
|
|
27
|
+
manylinux: auto
|
|
28
|
+
before-script-linux: |
|
|
29
|
+
yum install -y alsa-lib-devel
|
|
30
|
+
|
|
31
|
+
- uses: actions/upload-artifact@v4
|
|
32
|
+
with:
|
|
33
|
+
name: wheels-linux-${{ matrix.target }}
|
|
34
|
+
path: dist
|
|
35
|
+
|
|
36
|
+
build-macos:
|
|
37
|
+
name: Build macOS (${{ matrix.target }})
|
|
38
|
+
runs-on: macos-latest
|
|
39
|
+
strategy:
|
|
40
|
+
matrix:
|
|
41
|
+
target: [x86_64, aarch64]
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@v4
|
|
44
|
+
|
|
45
|
+
- uses: actions/setup-python@v5
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.12"
|
|
48
|
+
|
|
49
|
+
- name: Build wheels
|
|
50
|
+
uses: PyO3/maturin-action@v1
|
|
51
|
+
with:
|
|
52
|
+
target: ${{ matrix.target }}-apple-darwin
|
|
53
|
+
args: --release --out dist
|
|
54
|
+
|
|
55
|
+
- uses: actions/upload-artifact@v4
|
|
56
|
+
with:
|
|
57
|
+
name: wheels-macos-${{ matrix.target }}
|
|
58
|
+
path: dist
|
|
59
|
+
|
|
60
|
+
build-windows:
|
|
61
|
+
name: Build Windows (x86_64)
|
|
62
|
+
runs-on: windows-latest
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/checkout@v4
|
|
65
|
+
|
|
66
|
+
- uses: actions/setup-python@v5
|
|
67
|
+
with:
|
|
68
|
+
python-version: "3.12"
|
|
69
|
+
|
|
70
|
+
- name: Build wheels
|
|
71
|
+
uses: PyO3/maturin-action@v1
|
|
72
|
+
with:
|
|
73
|
+
target: x86_64
|
|
74
|
+
args: --release --out dist
|
|
75
|
+
|
|
76
|
+
- uses: actions/upload-artifact@v4
|
|
77
|
+
with:
|
|
78
|
+
name: wheels-windows-x86_64
|
|
79
|
+
path: dist
|
|
80
|
+
|
|
81
|
+
build-sdist:
|
|
82
|
+
name: Build sdist
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/checkout@v4
|
|
86
|
+
|
|
87
|
+
- name: Build sdist
|
|
88
|
+
uses: PyO3/maturin-action@v1
|
|
89
|
+
with:
|
|
90
|
+
command: sdist
|
|
91
|
+
args: --out dist
|
|
92
|
+
|
|
93
|
+
- uses: actions/upload-artifact@v4
|
|
94
|
+
with:
|
|
95
|
+
name: wheels-sdist
|
|
96
|
+
path: dist
|
|
97
|
+
|
|
98
|
+
publish:
|
|
99
|
+
name: Publish to PyPI
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
needs: [build-linux, build-macos, build-windows, build-sdist]
|
|
102
|
+
environment: pypi
|
|
103
|
+
permissions:
|
|
104
|
+
id-token: write
|
|
105
|
+
steps:
|
|
106
|
+
- uses: actions/download-artifact@v4
|
|
107
|
+
with:
|
|
108
|
+
pattern: wheels-*
|
|
109
|
+
merge-multiple: true
|
|
110
|
+
path: dist/
|
|
111
|
+
|
|
112
|
+
- name: Publish to PyPI
|
|
113
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.1.6](https://github.com/nicokim/PyAudioCast/compare/pyaudiocast-v0.1.5...pyaudiocast-v0.1.6) (2026-02-23)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add CI/CD workflows and PyPI publishing ([#1](https://github.com/nicokim/PyAudioCast/issues/1)) ([2bebcf7](https://github.com/nicokim/PyAudioCast/commit/2bebcf7af2c602999f8350ec2abcdb5518863d92))
|
|
9
|
+
* initial release of pyaudiocast ([dc4ccfc](https://github.com/nicokim/PyAudioCast/commit/dc4ccfc0bbaf6f1892c54940be8de0fe9ab93909))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* remove invalid extra-files from release-please config ([#2](https://github.com/nicokim/PyAudioCast/issues/2)) ([42c2c62](https://github.com/nicokim/PyAudioCast/commit/42c2c626cd81ad9cc9027f789a627914892edaa8))
|
|
15
|
+
* remove Linux aarch64 build (ALSA cross-compilation unsupported) ([#11](https://github.com/nicokim/PyAudioCast/issues/11)) ([d942291](https://github.com/nicokim/PyAudioCast/commit/d9422915a4f8e5fbdd203bc73d28f8eda44be81a))
|
|
16
|
+
* trigger release workflow on tag push instead of release event ([#4](https://github.com/nicokim/PyAudioCast/issues/4)) ([4d7364a](https://github.com/nicokim/PyAudioCast/commit/4d7364ad19ef515ecee79fb8e9e18e77ad0a971f))
|
|
17
|
+
* update play_sine example to use unified write() ([#10](https://github.com/nicokim/PyAudioCast/issues/10)) ([3c66fc1](https://github.com/nicokim/PyAudioCast/commit/3c66fc17e3ce9f78199d91199f8c2a69dc578d86))
|
|
18
|
+
* use --find-interpreter for Linux manylinux wheel builds ([#8](https://github.com/nicokim/PyAudioCast/issues/8)) ([bd7b56e](https://github.com/nicokim/PyAudioCast/commit/bd7b56edd018c95b6674eddee01090fe467fbe50))
|
|
19
|
+
* use PAT for release-please to trigger release workflow ([#6](https://github.com/nicokim/PyAudioCast/issues/6)) ([672c5ae](https://github.com/nicokim/PyAudioCast/commit/672c5ae1b2b12e4fc3cf121f7aec37717ac9d314))
|
|
20
|
+
|
|
21
|
+
## [0.1.5](https://github.com/nicokim/PyAudioCast/compare/pyaudiocast-v0.1.4...pyaudiocast-v0.1.5) (2026-02-23)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* remove Linux aarch64 build (ALSA cross-compilation unsupported) ([#11](https://github.com/nicokim/PyAudioCast/issues/11)) ([d942291](https://github.com/nicokim/PyAudioCast/commit/d9422915a4f8e5fbdd203bc73d28f8eda44be81a))
|
|
27
|
+
|
|
28
|
+
## [0.1.4](https://github.com/nicokim/PyAudioCast/compare/pyaudiocast-v0.1.3...pyaudiocast-v0.1.4) (2026-02-23)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### Features
|
|
32
|
+
|
|
33
|
+
* add CI/CD workflows and PyPI publishing ([#1](https://github.com/nicokim/PyAudioCast/issues/1)) ([2bebcf7](https://github.com/nicokim/PyAudioCast/commit/2bebcf7af2c602999f8350ec2abcdb5518863d92))
|
|
34
|
+
* initial release of pyaudiocast ([dc4ccfc](https://github.com/nicokim/PyAudioCast/commit/dc4ccfc0bbaf6f1892c54940be8de0fe9ab93909))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
* remove invalid extra-files from release-please config ([#2](https://github.com/nicokim/PyAudioCast/issues/2)) ([42c2c62](https://github.com/nicokim/PyAudioCast/commit/42c2c626cd81ad9cc9027f789a627914892edaa8))
|
|
40
|
+
* trigger release workflow on tag push instead of release event ([#4](https://github.com/nicokim/PyAudioCast/issues/4)) ([4d7364a](https://github.com/nicokim/PyAudioCast/commit/4d7364ad19ef515ecee79fb8e9e18e77ad0a971f))
|
|
41
|
+
* update play_sine example to use unified write() ([#10](https://github.com/nicokim/PyAudioCast/issues/10)) ([3c66fc1](https://github.com/nicokim/PyAudioCast/commit/3c66fc17e3ce9f78199d91199f8c2a69dc578d86))
|
|
42
|
+
* use --find-interpreter for Linux manylinux wheel builds ([#8](https://github.com/nicokim/PyAudioCast/issues/8)) ([bd7b56e](https://github.com/nicokim/PyAudioCast/commit/bd7b56edd018c95b6674eddee01090fe467fbe50))
|
|
43
|
+
* use PAT for release-please to trigger release workflow ([#6](https://github.com/nicokim/PyAudioCast/issues/6)) ([672c5ae](https://github.com/nicokim/PyAudioCast/commit/672c5ae1b2b12e4fc3cf121f7aec37717ac9d314))
|
|
44
|
+
|
|
45
|
+
## [0.1.3](https://github.com/nicokim/PyAudioCast/compare/pyaudiocast-v0.1.2...pyaudiocast-v0.1.3) (2026-02-23)
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
### Bug Fixes
|
|
49
|
+
|
|
50
|
+
* use PAT for release-please to trigger release workflow ([#6](https://github.com/nicokim/PyAudioCast/issues/6)) ([672c5ae](https://github.com/nicokim/PyAudioCast/commit/672c5ae1b2b12e4fc3cf121f7aec37717ac9d314))
|
|
51
|
+
|
|
52
|
+
## [0.1.2](https://github.com/nicokim/PyAudioCast/compare/pyaudiocast-v0.1.1...pyaudiocast-v0.1.2) (2026-02-23)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Bug Fixes
|
|
56
|
+
|
|
57
|
+
* trigger release workflow on tag push instead of release event ([#4](https://github.com/nicokim/PyAudioCast/issues/4)) ([4d7364a](https://github.com/nicokim/PyAudioCast/commit/4d7364ad19ef515ecee79fb8e9e18e77ad0a971f))
|
|
58
|
+
|
|
59
|
+
## [0.1.1](https://github.com/nicokim/PyAudioCast/compare/pyaudiocast-v0.1.0...pyaudiocast-v0.1.1) (2026-02-23)
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
### Features
|
|
63
|
+
|
|
64
|
+
* add CI/CD workflows and PyPI publishing ([#1](https://github.com/nicokim/PyAudioCast/issues/1)) ([2bebcf7](https://github.com/nicokim/PyAudioCast/commit/2bebcf7af2c602999f8350ec2abcdb5518863d92))
|
|
65
|
+
* initial release of pyaudiocast ([dc4ccfc](https://github.com/nicokim/PyAudioCast/commit/dc4ccfc0bbaf6f1892c54940be8de0fe9ab93909))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### Bug Fixes
|
|
69
|
+
|
|
70
|
+
* remove invalid extra-files from release-please config ([#2](https://github.com/nicokim/PyAudioCast/issues/2)) ([42c2c62](https://github.com/nicokim/PyAudioCast/commit/42c2c626cd81ad9cc9027f789a627914892edaa8))
|