summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrianna Rainey2026-01-22 16:54:45 -0500
committerBrianna Rainey2026-01-22 17:08:04 -0500
commit0a521106c4f57a7a198e8238ad9bf6772c4e23b5 (patch)
tree3bb6306e6c880d5bfb9919e4597d09895f6e4f80
parent801777e5348ed5e5665d2472f14f36673c253d66 (diff)
bump version for PyPI release
-rw-r--r--README.md30
-rw-r--r--pyproject.toml19
-rw-r--r--src/avp/__init__.py2
-rw-r--r--tests/test_version.py14
-rw-r--r--uv.lock42
5 files changed, 65 insertions, 42 deletions
diff --git a/README.md b/README.md
index 2b61cf7..3b5f0a2 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@ The program works on **Linux**, **macOS**, and **Windows**. If you encounter pro
8 8
9## Screenshots & Videos 9## Screenshots & Videos
10 10
11[<img title="AVP running on Windows" alt="Screenshot of program on Windows" src="screenshot.png" width="707">](/screenshot.png?raw=true) 11[![Screenshot of AVP running on Windows](/screenshot.png?raw=true)](https://tassaron.com/img/avp/screenshot-v2.0.0.png)
12 12
13### A video created by this app 13### A video created by this app
14 14
@@ -35,30 +35,27 @@ The program works on **Linux**, **macOS**, and **Windows**. If you encounter pro
35 - On Ubuntu: `sudo apt install pipx` 35 - On Ubuntu: `sudo apt install pipx`
36 - On Arch: `sudo pacman -S python-pipx` 36 - On Arch: `sudo pacman -S python-pipx`
37- Run `pipx ensurepath` then close and reopen the terminal 37- Run `pipx ensurepath` then close and reopen the terminal
38- Download and install this program: `pipx install git+https://github.com/djfun/audio-visualizer-python` 38- Install latest stable version: `pipx install audio-visualizer-python`
39 - Or you can [download manually](https://github.com/djfun/audio-visualizer-python/releases/latest) and run `pipx install .` in this directory
40- Run this program with `avp` or `python -m avp` from terminal 39- Run this program with `avp` or `python -m avp` from terminal
41 40
42### Using a Python virtual environment 41### Using a Python virtual environment
43 42
44- **This is a good method if you want to edit the code** 43- **This is a good method if you want to edit the code**
45- Make a virtual environment: `python -m venv env` 44- Make a virtual environment: `python -m venv .venv`
46- Activate it: `source env/bin/activate` 45- Activate it: `source .venv/bin/activate`
47- Install uv: `pip install uv` 46- Install uv: `pip install uv`
48- Install this program by running `uv sync` in this directory 47- Install this program: `uv sync` in this directory
49- Run program with `avp` or `python -m avp` or `uv run avp` 48- Run program with `avp` or `python -m avp`
50- Optional: Tests can be run with `uv run pytest`
51 49
52## Installation on Windows 50## Installation on Windows
53 51
54- Install Python from the Windows Store 52- Install Python from the Windows Store
55- Add Python to your system PATH (it should ask during the installation process) 53- Add Python to your system PATH (it should ask during the installation process)
56 - [PATH](<https://en.wikipedia.org/wiki/PATH_(variable)>) is where your computer looks for programs 54 - [PATH](<https://en.wikipedia.org/wiki/PATH_(variable)>) is where your computer looks for programs
57- Download this repo (extract from zip if needed)
58- Download and install [FFmpeg](https://www.ffmpeg.org/download.html). Use the GPL-licensed static builds. 55- Download and install [FFmpeg](https://www.ffmpeg.org/download.html). Use the GPL-licensed static builds.
59- Add FFmpeg to the system PATH as well (program will then work anywhere) 56- Add FFmpeg to the system PATH as well (program will then work anywhere)
60 - Alternatively, copy ffmpeg.exe into the folder that you want to run the program within 57 - Alternatively, copy ffmpeg.exe into the folder that you want to run the program within
61- Open command prompt, `cd` into the repo directory, and run: `pip install .` 58- Open command prompt and run `pip install audio-visualizer-python`
62- Now run `avp` or `python -m avp` from a command prompt window to start the app 59- Now run `avp` or `python -m avp` from a command prompt window to start the app
63 60
64## Installation on macOS 61## Installation on macOS
@@ -87,11 +84,11 @@ The program works on **Linux**, **macOS**, and **Windows**. If you encounter pro
87| Ctrl+Shift+U | Open Undo History | 84| Ctrl+Shift+U | Open Undo History |
88| Ctrl+Shift+F | Show FFmpeg Command | 85| Ctrl+Shift+F | Show FFmpeg Command |
89 86
90## Using commandline interface 87## Using Commandline Interface
91 88
92Projects can be created with the GUI then loaded from the commandline for easy automation of video production. Some components have commandline options for extra customization, and you can save "presets" with settings to load if the commandline option doesn't exist. 89Projects can be created with the GUI then loaded from the commandline for easy automation of video production. Some components have commandline options for extra customization, and you can save "presets" with settings to load if the commandline option doesn't exist.
93 90
94### Example command 91### Example Command
95 92
96- Create a video with a grey "classic visualizer", background image, and text: 93- Create a video with a grey "classic visualizer", background image, and text:
97 - `avp -c 0 image path=src/tests/data/test.jpg -c 1 classic color=180,180,180 -c 2 text "title=Episode 371" -i src/tests/data/test.ogg -o output.mp4` 94 - `avp -c 0 image path=src/tests/data/test.jpg -c 1 classic color=180,180,180 -c 2 text "title=Episode 371" -i src/tests/data/test.ogg -o output.mp4`
@@ -107,6 +104,15 @@ Projects can be created with the GUI then loaded from the commandline for easy a
107- Pillow 12.1.0 104- Pillow 12.1.0
108- NumPy 2.4.1 105- NumPy 2.4.1
109 106
107### Running Automatic Tests
108Run unit and integration tests with `pytest`.
109 * First you will need to install with `pip install pytest pytest-qt`
110 * You may omit the slowest test with `pytest -k "not commandline_export"`
111
112### Installing from TestPyPI
113Because some dependencies (namely numpy) are not always on TestPyPI, you must specify when installing that these dependencies should come from the real PyPI.
114* `pip install -i https://test.pypi.org/simple/ audio-visualizer-python==x.x.x --extra-index-url https://pypi.org/simple numpy`
115
110### Getting Faster Export Times 116### Getting Faster Export Times
111 117
112- [Pillow-SIMD](https://github.com/uploadcare/pillow-simd) may be used as a drop-in replacement for Pillow if you desire faster video export times, but it must be compiled from source. For help installing dependencies to compile Pillow-SIMD, see the [Pillow installation guide](https://pillow.readthedocs.io/en/stable/installation/building-from-source.html). 118- [Pillow-SIMD](https://github.com/uploadcare/pillow-simd) may be used as a drop-in replacement for Pillow if you desire faster video export times, but it must be compiled from source. For help installing dependencies to compile Pillow-SIMD, see the [Pillow installation guide](https://pillow.readthedocs.io/en/stable/installation/building-from-source.html).
diff --git a/pyproject.toml b/pyproject.toml
index c0d01b4..a245e09 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,21 +5,21 @@ build-backend = "uv_build"
5[project] 5[project]
6name = "audio-visualizer-python" 6name = "audio-visualizer-python"
7description = "Create audio visualization videos from a GUI or commandline" 7description = "Create audio visualization videos from a GUI or commandline"
8version = "2.1.2" 8readme = "README.md"
9version = "2.2.0"
9requires-python = ">= 3.12" 10requires-python = ">= 3.12"
10license = "MIT" 11license = "MIT"
11classifiers=[ 12classifiers=[
12 "Development Status :: 4 - Beta", 13 "Development Status :: 5 - Production/Stable",
13 "License :: OSI Approved :: MIT License", 14 "License :: OSI Approved :: MIT License",
14 "Programming Language :: Python :: 3 :: Only", 15 "Programming Language :: Python :: 3 :: Only",
15 "Intended Audience :: End Users/Desktop", 16 "Intended Audience :: End Users/Desktop",
16 "Topic :: Multimedia :: Video :: Non-Linear Editor", 17 "Topic :: Multimedia :: Video",
17] 18]
18keywords = [ 19keywords = [
19 "visualizer", 20 "visualizer",
20 "visualization", 21 "visualization",
21 "commandline video", 22 "fft",
22 "video editor",
23 "ffmpeg", 23 "ffmpeg",
24 "podcast", 24 "podcast",
25] 25]
@@ -30,10 +30,13 @@ authors = [
30 {name = "HunterwolfAT", email = "hunterwolf0815@gmail.com"}, 30 {name = "HunterwolfAT", email = "hunterwolf0815@gmail.com"},
31 {name = "rikai"}, 31 {name = "rikai"},
32] 32]
33maintainers = [
34 {name = "Brianna Rainey", email = "brianna@tassaron.com"},
35]
33dependencies = [ 36dependencies = [
34 "numpy>=2.4.1", 37 "numpy>=2.4.1",
35 "pillow>=12.1.0", 38 "pillow>=12.1.0",
36 "pyqt6>=6.10.2", 39 "pyqt6>=6.10.2",
37] 40]
38 41
39[dependency-groups] 42[dependency-groups]
diff --git a/src/avp/__init__.py b/src/avp/__init__.py
index 93d05ab..ea32f26 100644
--- a/src/avp/__init__.py
+++ b/src/avp/__init__.py
@@ -3,7 +3,7 @@ import os
3import logging 3import logging
4 4
5 5
6__version__ = "2.1.2" 6__version__ = "2.2.0"
7 7
8 8
9class Logger(logging.getLoggerClass()): 9class Logger(logging.getLoggerClass()):
diff --git a/tests/test_version.py b/tests/test_version.py
new file mode 100644
index 0000000..5d774a3
--- /dev/null
+++ b/tests/test_version.py
@@ -0,0 +1,14 @@
1from avp import __version__
2from tomllib import load
3import os
4
5
6def test_version_number_matches():
7 with open(
8 os.path.join(
9 os.path.dirname(os.path.realpath(__file__)), "..", "pyproject.toml"
10 ),
11 "rb",
12 ) as fp:
13 config = load(fp)
14 assert config["project"]["version"] == __version__
diff --git a/uv.lock b/uv.lock
index 48f4e13..a3d6bfb 100644
--- a/uv.lock
+++ b/uv.lock
@@ -4,7 +4,7 @@ requires-python = ">=3.12"
4 4
5[[package]] 5[[package]]
6name = "audio-visualizer-python" 6name = "audio-visualizer-python"
7version = "2.1.2" 7version = "2.2.0"
8source = { editable = "." } 8source = { editable = "." }
9dependencies = [ 9dependencies = [
10 { name = "numpy" }, 10 { name = "numpy" },
@@ -112,11 +112,11 @@ wheels = [
112 112
113[[package]] 113[[package]]
114name = "packaging" 114name = "packaging"
115version = "25.0" 115version = "26.0"
116source = { registry = "https://pypi.org/simple" } 116source = { registry = "https://pypi.org/simple" }
117sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } 117sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" }
118wheels = [ 118wheels = [
119 { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, 119 { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" },
120] 120]
121 121
122[[package]] 122[[package]]
@@ -238,25 +238,25 @@ wheels = [
238 238
239[[package]] 239[[package]]
240name = "pyqt6-sip" 240name = "pyqt6-sip"
241version = "13.10.3" 241version = "13.11.0"
242source = { registry = "https://pypi.org/simple" } 242source = { registry = "https://pypi.org/simple" }
243sdist = { url = "https://files.pythonhosted.org/packages/0d/e9/d1b97154cec1d6c8a3d93fb6565d1463bc528fa5103491d626d07a451c7c/pyqt6_sip-13.10.3.tar.gz", hash = "sha256:630895b3827e2c3b4e072089157985691fe4210d64340e71141f93775ea4ae51", size = 92621, upload-time = "2025-12-06T13:19:44.569Z" } 243sdist = { url = "https://files.pythonhosted.org/packages/e3/7d/d2916048e2e3960f68cb4e93907639844f7b8ff95897dcc98553776ccdfc/pyqt6_sip-13.11.0.tar.gz", hash = "sha256:d463af37738bda1856c9ef513e5620a37b7a005e9d589c986c3304db4a8a14d3", size = 92509, upload-time = "2026-01-13T16:01:32.16Z" }
244wheels = [ 244wheels = [
245 { url = "https://files.pythonhosted.org/packages/61/46/c44d1956a2a6bae272883b276125964736adc0e0a87f95a4af0f7876ba08/pyqt6_sip-13.10.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:61e4e935f1d80dd107b0a97fbcbbf27e07046666f72663fa4b0d700514e8201c", size = 112365, upload-time = "2025-12-06T13:19:27.79Z" }, 245 { url = "https://files.pythonhosted.org/packages/53/a6/0e4d8fa7d6deb750bd0fdf89024e39c71fb127efb5eeedfab6830ad6679a/pyqt6_sip-13.11.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:6b3267cd93b7f4da6fdf9a6a26f3baed8faae06e5cdd76235f2acc2116c40a54", size = 112367, upload-time = "2026-01-13T16:01:09.08Z" },
246 { url = "https://files.pythonhosted.org/packages/11/fd/04adac969ba70bb042d52e13c99c968fce0e1fa6a52146f03a974168a848/pyqt6_sip-13.10.3-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:3f3e2a79738319b795f0d1b2a555b1ea669b1a306b604bac876c84833cabb008", size = 301147, upload-time = "2025-12-06T13:19:30.279Z" }, 246 { url = "https://files.pythonhosted.org/packages/66/e6/25dc20a03c46000e8b93aaf79347227926b67959283e5aab797daa7f64d8/pyqt6_sip-13.11.0-cp312-cp312-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c30248d9bbe54c46a78e5d549da50295ecd6584b965597f751e272f000fb8527", size = 301150, upload-time = "2026-01-13T16:01:12.385Z" },
247 { url = "https://files.pythonhosted.org/packages/74/83/7ba660ddd7070090bcd387140865474affd901861ba8f6dfcb18504f7f26/pyqt6_sip-13.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748758dfd7f77aeb1c5becfc934a722ce10de51bfdf9902f9cad19c27ba146e7", size = 323336, upload-time = "2025-12-06T13:19:28.961Z" }, 247 { url = "https://files.pythonhosted.org/packages/11/9f/e850cd350aade789660cafba38c00777e686040c06b8cd0b45339b80fcba/pyqt6_sip-13.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c367b53a91e575ef66c1375f899713bdaf0a8b2c64b95ac226e9644854a4984", size = 323303, upload-time = "2026-01-13T16:01:10.736Z" },
248 { url = "https://files.pythonhosted.org/packages/cc/0b/6c77989542751c5ec3d829ff6f65b13c646606560c72b96aeb4dfae843b0/pyqt6_sip-13.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:7361b7005a375cd647f2d1e3ca7000967406831bef466003e6ead2af27d84a2b", size = 53459, upload-time = "2025-12-06T13:19:31.353Z" }, 248 { url = "https://files.pythonhosted.org/packages/77/26/5261d62108f7579407230f8c1d4dda43c18b5600ce70bf3becb2f997d5cc/pyqt6_sip-13.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:077958105c2ea2f62be2f1a7611ff8bd44cb52fb5ea8fc8c59ea949144acb7b5", size = 53461, upload-time = "2026-01-13T16:01:13.875Z" },
249 { url = "https://files.pythonhosted.org/packages/9b/73/74df7a24c75719ee36e94d97e147c3c260c1a6268e48d692f561f9d5b9dc/pyqt6_sip-13.10.3-cp312-cp312-win_arm64.whl", hash = "sha256:dd21e6f70f7cfe81e1d9b96800652ffeb5947b41354c4fd58a5e3d3f02499a7a", size = 48647, upload-time = "2025-12-06T13:19:32.271Z" }, 249 { url = "https://files.pythonhosted.org/packages/46/80/6c88b97eda309d6babb7292200bf51165dc06d0204d891b7bf1fb17a8ed0/pyqt6_sip-13.11.0-cp312-cp312-win_arm64.whl", hash = "sha256:52812471619d3d3750b940d7d124cd0954107656924921ac177e098ba36362fb", size = 48650, upload-time = "2026-01-13T16:01:14.897Z" },
250 { url = "https://files.pythonhosted.org/packages/0c/a9/25a07fb16308e9405ac01369013943ae58bef72c8700d8a6100182b8d937/pyqt6_sip-13.10.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a8b5532398c0e6d0064d4dce4c096ff20bf710507dafefb036eff61c3f59cda8", size = 112348, upload-time = "2025-12-06T13:19:33.323Z" }, 250 { url = "https://files.pythonhosted.org/packages/df/a0/46abcae4fce175a326185460a02c13ab81332bca7dd55c1e853ba6aee71e/pyqt6_sip-13.11.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:929716eebde1a64ffdb6b1715db6a22aefd5634d6df84858c7deb5e85be84fdf", size = 112353, upload-time = "2026-01-13T16:01:16.152Z" },
251 { url = "https://files.pythonhosted.org/packages/4a/f1/38b625b0638681659bc3c7eaa548b65862a305d26b48835b67cdd6add720/pyqt6_sip-13.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:d02c138c6eacb13ef668bfe6becfb6ab40bb40135f34a36ef31b7dc860976493", size = 301470, upload-time = "2025-12-06T13:19:35.824Z" }, 251 { url = "https://files.pythonhosted.org/packages/0e/38/27c3aa3f153fcd83a0765fedf8e44a1136f189a322bcc9c494c5b3793cd7/pyqt6_sip-13.11.0-cp313-cp313-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a75144e8a0bcf9d1a9069011890401748af353749f1de1b6a314b880781edf9d", size = 301497, upload-time = "2026-01-13T16:01:20.531Z" },
252 { url = "https://files.pythonhosted.org/packages/cd/8d/a2eaccc88cc53e6370e3728593ea80d10a132f87078ce7cbcfc8c33d9b3f/pyqt6_sip-13.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e234a3af9539f71bb566e7136317b92f189a89553970284d833cd63cca4dafdd", size = 323466, upload-time = "2025-12-06T13:19:34.445Z" }, 252 { url = "https://files.pythonhosted.org/packages/6f/ac/1053ffce45e4174f0a8174557b88537aa82bf96ba03c7dd208c59de36f69/pyqt6_sip-13.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8082b5f57ffad5dddf5efcf0ef5eaf94841395aa4e7c374c79ef24cf49b0f0ce", size = 323498, upload-time = "2026-01-13T16:01:17.859Z" },
253 { url = "https://files.pythonhosted.org/packages/47/f8/55a93c3eda94c94fc10c2537f55ca98d9bb1982bf65c03ee2302c250b6aa/pyqt6_sip-13.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:a856b9b2a4700c8dded1c870811d5ba26722238d57c9098904a99570429d112b", size = 53468, upload-time = "2025-12-06T13:19:36.877Z" }, 253 { url = "https://files.pythonhosted.org/packages/40/d3/447b30d1f00cc50ad9e5c53b2e920068606b16857da83f8036b390c79fad/pyqt6_sip-13.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:8d49b5bf3d8d36cd7db93ddc54cd09dbba96a3fd926e445ef75499b41e47b5a3", size = 53469, upload-time = "2026-01-13T16:01:21.762Z" },
254 { url = "https://files.pythonhosted.org/packages/41/a3/ee0633507350442580a2cd893e4edb7170d87fef1c790365e7bc4999ce40/pyqt6_sip-13.10.3-cp313-cp313-win_arm64.whl", hash = "sha256:9e48e5d6ac9e1a61d5abdfb2191a0ffb19948eefd5adacdd0c1dedbed06222aa", size = 48645, upload-time = "2025-12-06T13:19:38.216Z" }, 254 { url = "https://files.pythonhosted.org/packages/92/67/77e6fafcabd01c0a11166ab7464509896f137929f82c4f2e03aea1bf41b3/pyqt6_sip-13.11.0-cp313-cp313-win_arm64.whl", hash = "sha256:293eac1b53c66c54b03266cc30015ec77454af679043a4f188b9bb80a9656996", size = 48643, upload-time = "2026-01-13T16:01:22.669Z" },
255 { url = "https://files.pythonhosted.org/packages/a1/70/a22362c2632d07d8e29431418e0485f12a41b3c4844f15b60ca5a969e01c/pyqt6_sip-13.10.3-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:eb7afe41329ce2eca99118f01776a047a2a150c550258dff1746505af223f997", size = 112432, upload-time = "2025-12-06T13:19:39.153Z" }, 255 { url = "https://files.pythonhosted.org/packages/ff/28/a5178c8e005bafbf9c0fd507f45a3eef619ab582811414a0a461ee75994f/pyqt6_sip-13.11.0-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:4dc9c4df24af0571423c3e85b5c008bad42ed48558eef80fbc3e5d30274c5abb", size = 112431, upload-time = "2026-01-13T16:01:23.832Z" },
256 { url = "https://files.pythonhosted.org/packages/25/72/e0a7e4489ea5b948aef707a7d76baf6722a65aabd7e4d3c253583eb6b268/pyqt6_sip-13.10.3-cp314-cp314-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6122fe4ccba5a5023581c2c3c57deab6eab56d8e931beec20b05666a46a38e6a", size = 301341, upload-time = "2025-12-06T13:19:41.642Z" }, 256 { url = "https://files.pythonhosted.org/packages/13/3c/02770b02b5a05779e26bd02c202c2fd32aa38e225d01f14c06908e33738c/pyqt6_sip-13.11.0-cp314-cp314-manylinux1_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:c974d5a193f32e55e746e9b63138503163ac63500dbb1fd67233d8a8d71369bd", size = 301236, upload-time = "2026-01-13T16:01:28.733Z" },
257 { url = "https://files.pythonhosted.org/packages/1f/43/0a648469a7e4f07df1c4ad6443f892e55631f24f7af30c7c946e458a82d1/pyqt6_sip-13.10.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3286a98e93608d51048e9046f557117424c8366be266b33ff852ee54ffa7b9bf", size = 324062, upload-time = "2025-12-06T13:19:40.308Z" }, 257 { url = "https://files.pythonhosted.org/packages/40/47/5af493a698cc520581ca1000b4ab09b8182992053ffe2478062dde5e4671/pyqt6_sip-13.11.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4284540ffccd8349763ddce3518264dde62f20556720d4061b9c895e09011ca0", size = 323919, upload-time = "2026-01-13T16:01:25.122Z" },
258 { url = "https://files.pythonhosted.org/packages/f3/0d/67d2095a932c007210437318c31fbc8376deb4e4491907861c4b9ac4ad9e/pyqt6_sip-13.10.3-cp314-cp314-win_amd64.whl", hash = "sha256:4fc6229ba7276266e3805b5517e7413cba79538f0c3ce7d2042a2027a90f99cf", size = 55076, upload-time = "2025-12-06T13:19:42.61Z" }, 258 { url = "https://files.pythonhosted.org/packages/b7/2d/64b26e21183a7ff180105871dd5983a8da539d8768921728268dc6d0a73d/pyqt6_sip-13.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:9bd81cb351640abc803ea2fe7262b5adea28615c9b96fd103d1b6f3459937211", size = 55078, upload-time = "2026-01-13T16:01:29.853Z" },
259 { url = "https://files.pythonhosted.org/packages/f8/cd/f121be0271dc73d54f3580584103c046a8d2c06a2686b594b77fd677a5ef/pyqt6_sip-13.10.3-cp314-cp314-win_arm64.whl", hash = "sha256:efef47667ca009557d7ecf985b15f0bf440584fd634ee0eab19ec296effc7cca", size = 49464, upload-time = "2025-12-06T13:19:43.638Z" }, 259 { url = "https://files.pythonhosted.org/packages/7e/36/23f699fa8b1c3fcc312ecd12661a1df6057d92e16d4def2399b59cf7bf22/pyqt6_sip-13.11.0-cp314-cp314-win_arm64.whl", hash = "sha256:cd95ec98f8edb15bcea832b8657809f69d758bc4151cc6fd7790c0181949e45f", size = 49465, upload-time = "2026-01-13T16:01:31.174Z" },
260] 260]
261 261
262[[package]] 262[[package]]