diff options
| author | Brianna Rainey | 2026-01-22 16:54:45 -0500 |
|---|---|---|
| committer | Brianna Rainey | 2026-01-22 17:08:04 -0500 |
| commit | 0a521106c4f57a7a198e8238ad9bf6772c4e23b5 (patch) | |
| tree | 3bb6306e6c880d5bfb9919e4597d09895f6e4f80 | |
| parent | 801777e5348ed5e5665d2472f14f36673c253d66 (diff) | |
bump version for PyPI release
| -rw-r--r-- | README.md | 30 | ||||
| -rw-r--r-- | pyproject.toml | 19 | ||||
| -rw-r--r-- | src/avp/__init__.py | 2 | ||||
| -rw-r--r-- | tests/test_version.py | 14 | ||||
| -rw-r--r-- | uv.lock | 42 |
5 files changed, 65 insertions, 42 deletions
| @@ -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 | [](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 | ||
| 92 | Projects 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. | 89 | Projects 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 | ||
| 108 | Run 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 | ||
| 113 | Because 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] |
| 6 | name = "audio-visualizer-python" | 6 | name = "audio-visualizer-python" |
| 7 | description = "Create audio visualization videos from a GUI or commandline" | 7 | description = "Create audio visualization videos from a GUI or commandline" |
| 8 | version = "2.1.2" | 8 | readme = "README.md" |
| 9 | version = "2.2.0" | ||
| 9 | requires-python = ">= 3.12" | 10 | requires-python = ">= 3.12" |
| 10 | license = "MIT" | 11 | license = "MIT" |
| 11 | classifiers=[ | 12 | classifiers=[ |
| 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 | ] |
| 18 | keywords = [ | 19 | keywords = [ |
| 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 | ] |
| 33 | maintainers = [ | ||
| 34 | {name = "Brianna Rainey", email = "brianna@tassaron.com"}, | ||
| 35 | ] | ||
| 33 | dependencies = [ | 36 | dependencies = [ |
| 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 | |||
| 3 | import logging | 3 | import logging |
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | __version__ = "2.1.2" | 6 | __version__ = "2.2.0" |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | class Logger(logging.getLoggerClass()): | 9 | class 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 @@ | |||
| 1 | from avp import __version__ | ||
| 2 | from tomllib import load | ||
| 3 | import os | ||
| 4 | |||
| 5 | |||
| 6 | def 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__ | ||
| @@ -4,7 +4,7 @@ requires-python = ">=3.12" | |||
| 4 | 4 | ||
| 5 | [[package]] | 5 | [[package]] |
| 6 | name = "audio-visualizer-python" | 6 | name = "audio-visualizer-python" |
| 7 | version = "2.1.2" | 7 | version = "2.2.0" |
| 8 | source = { editable = "." } | 8 | source = { editable = "." } |
| 9 | dependencies = [ | 9 | dependencies = [ |
| 10 | { name = "numpy" }, | 10 | { name = "numpy" }, |
| @@ -112,11 +112,11 @@ wheels = [ | |||
| 112 | 112 | ||
| 113 | [[package]] | 113 | [[package]] |
| 114 | name = "packaging" | 114 | name = "packaging" |
| 115 | version = "25.0" | 115 | version = "26.0" |
| 116 | source = { registry = "https://pypi.org/simple" } | 116 | source = { registry = "https://pypi.org/simple" } |
| 117 | sdist = { 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" } | 117 | sdist = { 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" } |
| 118 | wheels = [ | 118 | wheels = [ |
| 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]] |
| 240 | name = "pyqt6-sip" | 240 | name = "pyqt6-sip" |
| 241 | version = "13.10.3" | 241 | version = "13.11.0" |
| 242 | source = { registry = "https://pypi.org/simple" } | 242 | source = { registry = "https://pypi.org/simple" } |
| 243 | sdist = { 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" } | 243 | sdist = { 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" } |
| 244 | wheels = [ | 244 | wheels = [ |
| 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]] |
