From b116c6a24f00636e1857dce80450522d1aea0f29 Mon Sep 17 00:00:00 2001 From: onyx-and-iris <75868496+onyx-and-iris@users.noreply.github.com> Date: Sat, 3 Sep 2022 19:29:57 +0100 Subject: [PATCH] tomli/tomllib compatibility layer added. python version requirement changed. updated installation instructions tomli added as runtime dependency if py ver < 3.11 minor version bump. --- CHANGELOG.md | 6 ++++ INSTALLATION.md | 2 +- README.md | 4 +-- doc_imgs/python311.png | Bin 2676222 -> 2676222 bytes poetry.lock | 68 ++++++++++++++++-------------------- pyproject.toml | 7 ++-- vmcompact/configurations.py | 5 ++- 7 files changed, 47 insertions(+), 45 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38b3da4..8beff08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [ ] Add support for forest theme (should be coming soon) +## [1.4.0] - 2022-09-03 + +### Added + +- tomli/tomllib compatibility layer to support python 3.10 + ## [1.3.0] - 2022-07-14 ### Added diff --git a/INSTALLATION.md b/INSTALLATION.md index 272d4fe..4d596c2 100644 --- a/INSTALLATION.md +++ b/INSTALLATION.md @@ -1,6 +1,6 @@ ## Python Installation -If you don't have Python already you can fetch it easily from the Windows Store. Simply type `store` into the windows search bar. To run this GUI you'll need the latest version, Python 3.11 (RC). +If you don't have Python already you can fetch it easily from the Windows Store. Simply type `store` into the windows search bar. To run this GUI you'll need Python version 3.10 or above. ![Image of Python 311 in Windows Store](./doc_imgs/python311.png) diff --git a/README.md b/README.md index f83a9b9..f867aa5 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ For an outline of past/future changes refer to: [CHANGELOG](CHANGELOG.md) ## Prerequisites -- [Voicemeeter](https://voicemeeter.com/) (Basic v1.0.8.2), (Banana v2.0.6.2) or (Potato v3.0.2.2) -- Python 3.11+ +- [Voicemeeter](https://voicemeeter.com/) (Basic v1.0.8.4), (Banana v2.0.6.4) or (Potato v3.0.2.4) +- Python 3.10 or greater ## Installation diff --git a/doc_imgs/python311.png b/doc_imgs/python311.png index 26ad29a96b52fefceced52ffd14b688e087728f1..2f21fdfbac2ffd1788183e7402e3952568c78385 100644 GIT binary patch delta 12419 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 delta 11947 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 Y z#lCEI!@+YDM?a_z`fz$O%)J~-zs@#%YaI*r>kQiiN*ZGua6^bEN8jvXfsajbQ;}Ky zl)D>bwTqj981-}S1n3kKH`zqL3Ey7Z=DkJbzTRg23p}&5hIGMSJpQ`k?{55cgBsGk HXTSdf8O4Uf diff --git a/poetry.lock b/poetry.lock index 7f0248e..99aff77 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "black" -version = "22.6.0" +version = "22.8.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -11,6 +11,7 @@ click = ">=8.0.0" mypy-extensions = ">=0.4.3" pathspec = ">=0.9.0" platformdirs = ">=2" +tomli = {version = ">=1.1.0", markers = "python_full_version < \"3.11.0a7\""} [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -47,11 +48,11 @@ python-versions = "*" [[package]] name = "pathspec" -version = "0.9.0" +version = "0.10.1" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" +python-versions = ">=3.7" [[package]] name = "platformdirs" @@ -73,53 +74,43 @@ category = "main" optional = false python-versions = ">=3.4" +[[package]] +name = "tomli" +version = "2.0.1" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.7" + [[package]] name = "vban-cmd" -version = "1.3.0" +version = "1.4.0" description = "Python interface for the VBAN RT Packet Service (Sendtext)" category = "main" optional = false -python-versions = ">=3.11,<4.0" +python-versions = ">=3.10,<4.0" + +[package.dependencies] +tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} [[package]] name = "voicemeeter-api" -version = "0.6.0" +version = "0.7.0" description = "A Python wrapper for the Voiceemeter API" category = "main" optional = false -python-versions = ">=3.11,<4.0" +python-versions = ">=3.10,<4.0" + +[package.dependencies] +tomli = {version = ">=2.0.1,<3.0.0", markers = "python_version < \"3.11\""} [metadata] lock-version = "1.1" -python-versions = "^3.11" -content-hash = "ea4dab8cdb8451fe49568aac4688fad680c0b1c18213f2ad9e7b8a50e24c389c" +python-versions = "^3.10" +content-hash = "e394ba24b57751b55643bfb50680e19c3f4733064da5027dd026e28976a63935" [metadata.files] -black = [ - {file = "black-22.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f586c26118bc6e714ec58c09df0157fe2d9ee195c764f630eb0d8e7ccce72e69"}, - {file = "black-22.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b270a168d69edb8b7ed32c193ef10fd27844e5c60852039599f9184460ce0807"}, - {file = "black-22.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6797f58943fceb1c461fb572edbe828d811e719c24e03375fd25170ada53825e"}, - {file = "black-22.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c85928b9d5f83b23cee7d0efcb310172412fbf7cb9d9ce963bd67fd141781def"}, - {file = "black-22.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6fe02afde060bbeef044af7996f335fbe90b039ccf3f5eb8f16df8b20f77666"}, - {file = "black-22.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cfaf3895a9634e882bf9d2363fed5af8888802d670f58b279b0bece00e9a872d"}, - {file = "black-22.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94783f636bca89f11eb5d50437e8e17fbc6a929a628d82304c80fa9cd945f256"}, - {file = "black-22.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:2ea29072e954a4d55a2ff58971b83365eba5d3d357352a07a7a4df0d95f51c78"}, - {file = "black-22.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:e439798f819d49ba1c0bd9664427a05aab79bfba777a6db94fd4e56fae0cb849"}, - {file = "black-22.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:187d96c5e713f441a5829e77120c269b6514418f4513a390b0499b0987f2ff1c"}, - {file = "black-22.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:074458dc2f6e0d3dab7928d4417bb6957bb834434516f21514138437accdbe90"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a218d7e5856f91d20f04e931b6f16d15356db1c846ee55f01bac297a705ca24f"}, - {file = "black-22.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:568ac3c465b1c8b34b61cd7a4e349e93f91abf0f9371eda1cf87194663ab684e"}, - {file = "black-22.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:6c1734ab264b8f7929cef8ae5f900b85d579e6cbfde09d7387da8f04771b51c6"}, - {file = "black-22.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9a3ac16efe9ec7d7381ddebcc022119794872abce99475345c5a61aa18c45ad"}, - {file = "black-22.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:b9fd45787ba8aa3f5e0a0a98920c1012c884622c6c920dbe98dbd05bc7c70fbf"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7ba9be198ecca5031cd78745780d65a3f75a34b2ff9be5837045dce55db83d1c"}, - {file = "black-22.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:a3db5b6409b96d9bd543323b23ef32a1a2b06416d525d27e0f67e74f1446c8f2"}, - {file = "black-22.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:560558527e52ce8afba936fcce93a7411ab40c7d5fe8c2463e279e843c0328ee"}, - {file = "black-22.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b154e6bbde1e79ea3260c4b40c0b7b3109ffcdf7bc4ebf8859169a6af72cd70b"}, - {file = "black-22.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:4af5bc0e1f96be5ae9bd7aaec219c901a94d6caa2484c21983d043371c733fc4"}, - {file = "black-22.6.0-py3-none-any.whl", hash = "sha256:ac609cf8ef5e7115ddd07d85d988d074ed00e10fbc3445aee393e70164a2219c"}, - {file = "black-22.6.0.tar.gz", hash = "sha256:6c6d39e28aed379aec40da1c65434c77d75e65bb59a1e1c283de545fb4e7c6c9"}, -] +black = [] click = [ {file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"}, {file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"}, @@ -132,10 +123,7 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] -pathspec = [ - {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, - {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, -] +pathspec = [] platformdirs = [ {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, @@ -144,5 +132,9 @@ sv-ttk = [ {file = "sv_ttk-0.1-py3-none-any.whl", hash = "sha256:c47ab1c70aad0333bc7f5063ab55e8a16b562e700e89e7853e577a1e2fdaa091"}, {file = "sv_ttk-0.1.tar.gz", hash = "sha256:342754618292b6d224060307eccaa35b6f6c284b34b4da1d0cf0484b652ffb0f"}, ] +tomli = [ + {file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"}, + {file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"}, +] vban-cmd = [] voicemeeter-api = [] diff --git a/pyproject.toml b/pyproject.toml index 7e66946..c00f9b7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -13,10 +13,11 @@ packages = [ include = ["vmcompact/img/cat.ico"] [tool.poetry.dependencies] -python = "^3.11" +python = "^3.10" sv-ttk = "^0.1" -voicemeeter-api = { version = "^0.6.0", python = "^3.10" } -vban-cmd = { version = "^1.3.0", python = "^3.10" } +tomli = { version = "^2.0.1", python = "<3.11" } +voicemeeter-api = "^0.7.0" +vban-cmd = "^1.4.0" [tool.poetry.dev-dependencies] black = {version = "^22.6.0", allow-prereleases = true} diff --git a/vmcompact/configurations.py b/vmcompact/configurations.py index 011cf82..460cb4a 100644 --- a/vmcompact/configurations.py +++ b/vmcompact/configurations.py @@ -1,6 +1,9 @@ from pathlib import Path -import tomllib +try: + import tomllib +except ModuleNotFoundError: + import tomli as tomllib configuration = {}