From 61f79760e6f4fe7569195281d845ab7029332772 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 21:49:33 -0700 Subject: [PATCH 1/9] Initial work on uv build system Moved module into src/ and modernized pyproject.toml --- pyproject.toml | 36 +++++++++++--------- {wavinfo => src/wavinfo}/__init__.py | 0 {wavinfo => src/wavinfo}/__main__.py | 0 {wavinfo => src/wavinfo}/man/man1/wavinfo.1 | 0 {wavinfo => src/wavinfo}/man/man7/wavinfo.7 | 0 {wavinfo => src/wavinfo}/rf64_parser.py | 0 {wavinfo => src/wavinfo}/riff_parser.py | 0 {wavinfo => src/wavinfo}/umid_parser.py | 0 {wavinfo => src/wavinfo}/wave_adm_reader.py | 0 {wavinfo => src/wavinfo}/wave_bext_reader.py | 0 {wavinfo => src/wavinfo}/wave_cues_reader.py | 0 {wavinfo => src/wavinfo}/wave_dbmd_reader.py | 0 {wavinfo => src/wavinfo}/wave_info_reader.py | 0 {wavinfo => src/wavinfo}/wave_ixml_reader.py | 0 {wavinfo => src/wavinfo}/wave_reader.py | 0 {wavinfo => src/wavinfo}/wave_smpl_reader.py | 0 {wavinfo => src/wavinfo}/wavfind.py | 0 17 files changed, 19 insertions(+), 17 deletions(-) rename {wavinfo => src/wavinfo}/__init__.py (100%) rename {wavinfo => src/wavinfo}/__main__.py (100%) rename {wavinfo => src/wavinfo}/man/man1/wavinfo.1 (100%) rename {wavinfo => src/wavinfo}/man/man7/wavinfo.7 (100%) rename {wavinfo => src/wavinfo}/rf64_parser.py (100%) rename {wavinfo => src/wavinfo}/riff_parser.py (100%) rename {wavinfo => src/wavinfo}/umid_parser.py (100%) rename {wavinfo => src/wavinfo}/wave_adm_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_bext_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_cues_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_dbmd_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_info_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_ixml_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_reader.py (100%) rename {wavinfo => src/wavinfo}/wave_smpl_reader.py (100%) rename {wavinfo => src/wavinfo}/wavfind.py (100%) diff --git a/pyproject.toml b/pyproject.toml index 511e7ac..3d17f0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,16 +1,15 @@ -# https://python-poetry.org/docs/pyproject/ - [build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" +requires = ["uv_build>=0.8.18,<0.9.0"] +build-backend = "uv_build" -[tool.poetry] +[project] name = "wavinfo" version = "3.1.0" description = "Probe WAVE files for all metadata" -authors = ["Jamie Hardt "] +authors = [{ name = "Jamie Hardt", email = "jamiehardt@me.com"}] license = "MIT" readme = "README.md" +requires-python = ">=3.8" classifiers = [ 'Development Status :: 5 - Production/Stable', 'License :: OSI Approved :: MIT License', @@ -38,18 +37,12 @@ keywords = [ 'film', 'broadcast' ] +dependencies = [ + "lxml>=6.0.2", +] -[tool.poetry.extras] -doc = ['sphinx', 'sphinx_rtd_theme'] - -[tool.poetry.scripts] -wavinfo = 'wavinfo.__main__:main' - -[tool.poetry.dependencies] -python = "^3.8" -lxml = "~= 5.3.0" -sphinx_rtd_theme = {version= '>= 1.1.1', optional=true} -sphinx = {version= '>= 5.3.0', optional=true} +[project.scripts] +ptulsconv = "ptulsconv:__main__.main" [tool.pyright] typeCheckingMode = "basic" @@ -65,3 +58,12 @@ disable = [ "R0913", # (too-many-arguments) "W0105", # (pointless-string-statement) ] + +[dependency-groups] +dev = [ + "ruff>=0.14.0", +] +doc = [ + "sphinx>=7.1.2", + "sphinx-rtd-theme>=3.0.2", +] diff --git a/wavinfo/__init__.py b/src/wavinfo/__init__.py similarity index 100% rename from wavinfo/__init__.py rename to src/wavinfo/__init__.py diff --git a/wavinfo/__main__.py b/src/wavinfo/__main__.py similarity index 100% rename from wavinfo/__main__.py rename to src/wavinfo/__main__.py diff --git a/wavinfo/man/man1/wavinfo.1 b/src/wavinfo/man/man1/wavinfo.1 similarity index 100% rename from wavinfo/man/man1/wavinfo.1 rename to src/wavinfo/man/man1/wavinfo.1 diff --git a/wavinfo/man/man7/wavinfo.7 b/src/wavinfo/man/man7/wavinfo.7 similarity index 100% rename from wavinfo/man/man7/wavinfo.7 rename to src/wavinfo/man/man7/wavinfo.7 diff --git a/wavinfo/rf64_parser.py b/src/wavinfo/rf64_parser.py similarity index 100% rename from wavinfo/rf64_parser.py rename to src/wavinfo/rf64_parser.py diff --git a/wavinfo/riff_parser.py b/src/wavinfo/riff_parser.py similarity index 100% rename from wavinfo/riff_parser.py rename to src/wavinfo/riff_parser.py diff --git a/wavinfo/umid_parser.py b/src/wavinfo/umid_parser.py similarity index 100% rename from wavinfo/umid_parser.py rename to src/wavinfo/umid_parser.py diff --git a/wavinfo/wave_adm_reader.py b/src/wavinfo/wave_adm_reader.py similarity index 100% rename from wavinfo/wave_adm_reader.py rename to src/wavinfo/wave_adm_reader.py diff --git a/wavinfo/wave_bext_reader.py b/src/wavinfo/wave_bext_reader.py similarity index 100% rename from wavinfo/wave_bext_reader.py rename to src/wavinfo/wave_bext_reader.py diff --git a/wavinfo/wave_cues_reader.py b/src/wavinfo/wave_cues_reader.py similarity index 100% rename from wavinfo/wave_cues_reader.py rename to src/wavinfo/wave_cues_reader.py diff --git a/wavinfo/wave_dbmd_reader.py b/src/wavinfo/wave_dbmd_reader.py similarity index 100% rename from wavinfo/wave_dbmd_reader.py rename to src/wavinfo/wave_dbmd_reader.py diff --git a/wavinfo/wave_info_reader.py b/src/wavinfo/wave_info_reader.py similarity index 100% rename from wavinfo/wave_info_reader.py rename to src/wavinfo/wave_info_reader.py diff --git a/wavinfo/wave_ixml_reader.py b/src/wavinfo/wave_ixml_reader.py similarity index 100% rename from wavinfo/wave_ixml_reader.py rename to src/wavinfo/wave_ixml_reader.py diff --git a/wavinfo/wave_reader.py b/src/wavinfo/wave_reader.py similarity index 100% rename from wavinfo/wave_reader.py rename to src/wavinfo/wave_reader.py diff --git a/wavinfo/wave_smpl_reader.py b/src/wavinfo/wave_smpl_reader.py similarity index 100% rename from wavinfo/wave_smpl_reader.py rename to src/wavinfo/wave_smpl_reader.py diff --git a/wavinfo/wavfind.py b/src/wavinfo/wavfind.py similarity index 100% rename from wavinfo/wavfind.py rename to src/wavinfo/wavfind.py From 03d718b4adc86b37a6919586859b8fee18d139f2 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:06:48 -0700 Subject: [PATCH 2/9] Fixed dumb typo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3d17f0b..e74d09f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ ] [project.scripts] -ptulsconv = "ptulsconv:__main__.main" +wavinfo = "wavinfo:__main__.main" [tool.pyright] typeCheckingMode = "basic" From 1b78f5b8210a9072d429b468670c9d7483a5bf29 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:08:36 -0700 Subject: [PATCH 3/9] Reorganized pyproject, nudged version --- pyproject.toml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index e74d09f..306b140 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "uv_build" [project] name = "wavinfo" -version = "3.1.0" +version = "3.1.1" description = "Probe WAVE files for all metadata" authors = [{ name = "Jamie Hardt", email = "jamiehardt@me.com"}] license = "MIT" @@ -37,10 +37,20 @@ keywords = [ 'film', 'broadcast' ] + dependencies = [ "lxml>=6.0.2", ] +[dependency-groups] +dev = [ + "ruff>=0.14.0", +] +doc = [ + "sphinx>=7.1.2", + "sphinx-rtd-theme>=3.0.2", +] + [project.scripts] wavinfo = "wavinfo:__main__.main" @@ -59,11 +69,3 @@ disable = [ "W0105", # (pointless-string-statement) ] -[dependency-groups] -dev = [ - "ruff>=0.14.0", -] -doc = [ - "sphinx>=7.1.2", - "sphinx-rtd-theme>=3.0.2", -] From 9ac06040a2d6227e05e647e707aea036109c82f3 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:16:12 -0700 Subject: [PATCH 4/9] Making changes to the workflows --- .github/workflows/python-package.yml | 4 ++-- .../{python-flake8.yml => python-ruff.yml} | 15 ++++----------- README.md | 2 +- pyproject.toml | 1 + src/wavinfo/__init__.py | 3 +++ 5 files changed, 11 insertions(+), 14 deletions(-) rename .github/workflows/{python-flake8.yml => python-ruff.yml} (60%) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 9aacf94..6e6638f 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -27,8 +27,8 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install pytest - python -m pip install -e . + python -m pip install --group dev + python -m pip install . - name: Setup FFmpeg uses: FedericoCarboni/setup-ffmpeg@v2 - name: Test with pytest diff --git a/.github/workflows/python-flake8.yml b/.github/workflows/python-ruff.yml similarity index 60% rename from .github/workflows/python-flake8.yml rename to .github/workflows/python-ruff.yml index cbc369a..0e46afc 100644 --- a/.github/workflows/python-flake8.yml +++ b/.github/workflows/python-ruff.yml @@ -11,7 +11,6 @@ on: jobs: build: - runs-on: ubuntu-latest strategy: fail-fast: false @@ -27,14 +26,8 @@ jobs: - name: Install dependencies run: | python -m pip install --upgrade pip - python -m pip install flake8 - python -m pip install -e . - - name: Lint with flake8 + python -m pip install --group dev + python -m pip install . + - name: Lint with ruff run: | - # stop the build if there are Python syntax errors or undefined names - flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Lint with flake8 - run: | - flake8 wavinfo + ruff src diff --git a/README.md b/README.md index 90c99f2..e57aef6 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![GitHub last commit](https://img.shields.io/github/last-commit/iluvcapra/wavinfo) [![Documentation Status](https://readthedocs.org/projects/wavinfo/badge/?version=latest)](https://wavinfo.readthedocs.io/en/latest/?badge=latest) ![](https://img.shields.io/github/license/iluvcapra/wavinfo.svg) [![Tests](https://github.com/iluvcapra/wavinfo/actions/workflows/python-package.yml/badge.svg)](https://github.com/iluvcapra/wavinfo/actions/workflows/python-package.yml) -[![Flake8](https://github.com/iluvcapra/wavinfo/actions/workflows/python-flake8.yml/badge.svg)](https://github.com/iluvcapra/wavinfo/actions/workflows/python-flake8.yml) +[![Ruff](https://github.com/iluvcapra/wavinfo/actions/workflows/python-ruff.yml/badge.svg)](https://github.com/iluvcapra/wavinfo/actions/workflows/python-ruff.yml) [![codecov](https://codecov.io/gh/iluvcapra/wavinfo/branch/master/graph/badge.svg?token=9DZQfZENYv)](https://codecov.io/gh/iluvcapra/wavinfo) # wavinfo diff --git a/pyproject.toml b/pyproject.toml index 306b140..48fb38b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,6 +44,7 @@ dependencies = [ [dependency-groups] dev = [ + "pytest>=8.3.5", "ruff>=0.14.0", ] doc = [ diff --git a/src/wavinfo/__init__.py b/src/wavinfo/__init__.py index d5bbfaf..1e4cd8c 100644 --- a/src/wavinfo/__init__.py +++ b/src/wavinfo/__init__.py @@ -2,5 +2,8 @@ Probe WAVE Files for iXML, Broadcast-WAVE and other metadata. """ +__all__ = ['WavInfoReader', 'WavInfoEOFError'] + from .wave_reader import WavInfoReader from .riff_parser import WavInfoEOFError + From 76905f1a406b0ef52164fe0c15f4c8b111d36ea8 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:21:11 -0700 Subject: [PATCH 5/9] Updated name of lint workflow --- .github/workflows/python-ruff.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-ruff.yml b/.github/workflows/python-ruff.yml index 0e46afc..bef7331 100644 --- a/.github/workflows/python-ruff.yml +++ b/.github/workflows/python-ruff.yml @@ -1,7 +1,7 @@ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python -name: Flake8 +name: Lint with Ruff on: push: From 6b788484da52d050e1055987ccbc609cbc576fae Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:22:12 -0700 Subject: [PATCH 6/9] Typo --- .github/workflows/python-ruff.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/python-ruff.yml b/.github/workflows/python-ruff.yml index bef7331..c90fa4c 100644 --- a/.github/workflows/python-ruff.yml +++ b/.github/workflows/python-ruff.yml @@ -30,4 +30,4 @@ jobs: python -m pip install . - name: Lint with ruff run: | - ruff src + ruff check src From c7a34e006448e91620a4427d9e7393f038ff79d8 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:24:45 -0700 Subject: [PATCH 7/9] Added 3.14 to test matrix and dropped 3.8 --- .github/workflows/python-package.yml | 2 +- .github/workflows/python-ruff.yml | 2 +- pyproject.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 6e6638f..7b0397b 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"] + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v2.5.0 diff --git a/.github/workflows/python-ruff.yml b/.github/workflows/python-ruff.yml index c90fa4c..f14cc66 100644 --- a/.github/workflows/python-ruff.yml +++ b/.github/workflows/python-ruff.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - python-version: ["3.13"] + python-version: ["3.13", "3.14"] steps: - uses: actions/checkout@v2.5.0 diff --git a/pyproject.toml b/pyproject.toml index 48fb38b..d5616da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -15,12 +15,12 @@ classifiers = [ 'License :: OSI Approved :: MIT License', 'Topic :: Multimedia', 'Topic :: Multimedia :: Sound/Audio', - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13" + "Programming Language :: Python :: 3.14" ] homepage = "https://github.com/iluvcapra/wavinfo" repository = "https://github.com/iluvcapra/wavinfo.git" From 1b57ad0facbe7659c34ac3b9931955086d5efb60 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:26:04 -0700 Subject: [PATCH 8/9] Typo --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d5616da..6c10476 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13" + "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14" ] homepage = "https://github.com/iluvcapra/wavinfo" From 5e641b0963c2226bc52a96589b8c5b7d3cb3b936 Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Thu, 9 Oct 2025 22:32:10 -0700 Subject: [PATCH 9/9] Removing .flake8 file --- .flake8 | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .flake8 diff --git a/.flake8 b/.flake8 deleted file mode 100644 index 4b03aea..0000000 --- a/.flake8 +++ /dev/null @@ -1,3 +0,0 @@ -[flake8] -per-file-ignores = - wavinfo/__init__.py: F401