From b05cd7686ba353cfdefbce1bbc0323315d829551 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Sat, 18 May 2024 13:48:51 +0000 Subject: [PATCH 1/7] chore(main): update python dependencies --- anvil/poetry.lock | 359 +++++++++++++++++++++++++--------------------- 1 file changed, 198 insertions(+), 161 deletions(-) diff --git a/anvil/poetry.lock b/anvil/poetry.lock index f84c08e..7f666d8 100644 --- a/anvil/poetry.lock +++ b/anvil/poetry.lock @@ -133,13 +133,13 @@ files = [ [[package]] name = "ansible-compat" -version = "4.1.11" +version = "24.5.1" description = "Ansible compatibility goodies" optional = false python-versions = ">=3.9" files = [ - {file = "ansible-compat-4.1.11.tar.gz", hash = "sha256:b3e9f9d7c3a1ce6222de444e9dc6fece7eba70ac64f2a0befdc4e2d542018b4a"}, - {file = "ansible_compat-4.1.11-py3-none-any.whl", hash = "sha256:74a91807808a39af48ab6595811b9340d1458db26b138362f48bf39292190705"}, + {file = "ansible_compat-24.5.1-py3-none-any.whl", hash = "sha256:8d6dad5b99e87faa82569c2aaa57dd28f07931657a9e56ff2a7fd0e2127cce29"}, + {file = "ansible_compat-24.5.1.tar.gz", hash = "sha256:433fcc2212de13dd852c900bf17a70234847a1fe7b8edbea969cf321d5ad7841"}, ] [package.dependencies] @@ -150,7 +150,7 @@ PyYAML = "*" subprocess-tee = ">=0.4.1" [package.extras] -docs = ["argparse-manpage", "black", "mkdocs-ansible[lock] (>=0.1.2)"] +docs = ["argparse-manpage", "black", "mkdocs-ansible (>=24.3.1)"] test = ["coverage", "pip-tools", "pytest (>=7.2.0)", "pytest-mock", "pytest-plus (>=0.6.1)"] [[package]] @@ -173,20 +173,21 @@ resolvelib = ">=0.5.3,<1.1.0" [[package]] name = "ansible-lint" -version = "24.2.3" +version = "24.5.0" description = "Checks playbooks for practices and behavior that could potentially be improved" optional = false python-versions = ">=3.10" files = [ - {file = "ansible_lint-24.2.3-py3-none-any.whl", hash = "sha256:8aad0de454e0e803b0416a9c6e409302a8eb93c0f3866a98f035b96647e72213"}, - {file = "ansible_lint-24.2.3.tar.gz", hash = "sha256:2ec67cc1719f56e63b1dfc3728d0c2c4142e531f4452f6ae31f618438d59469a"}, + {file = "ansible_lint-24.5.0-py3-none-any.whl", hash = "sha256:a0deb4d58ce267632a26f7e9daf91cd4cd8c2ed783ddbb588a95f86785df20cc"}, + {file = "ansible_lint-24.5.0.tar.gz", hash = "sha256:cf1d9876c63cb26f6677170d4c64b18d8d944b359f8772cba73a2145f8b7a7ac"}, ] [package.dependencies] -ansible-compat = ">=4.1.11" -ansible-core = ">=2.12.0" +ansible-compat = ">=24.5.0dev0" +ansible-core = ">=2.13.0" black = ">=24.3.0" filelock = ">=3.3.0" +importlib-metadata = "*" jsonschema = ">=4.10.0" packaging = ">=21.3" pathspec = ">=0.10.3" @@ -194,7 +195,10 @@ pyyaml = ">=5.4.1" rich = ">=12.0.0" "ruamel.yaml" = ">=0.18.5" subprocess-tee = ">=0.4.1" -wcmatch = ">=8.1.2" +wcmatch = [ + {version = ">=8.1.2", markers = "python_version < \"3.12\""}, + {version = ">=8.5.0", markers = "python_version >= \"3.12\""}, +] yamllint = ">=1.30.0" [package.extras] @@ -203,13 +207,13 @@ test = ["black", "coverage-enable-subprocess", "coverage[toml] (>=6.4.4)", "jmes [[package]] name = "ansible-runner" -version = "2.3.6" +version = "2.4.0" description = "\"Consistent Ansible Python API and CLI with container and process isolation runtime capabilities\"" optional = false -python-versions = ">=3.8" +python-versions = ">=3.9" files = [ - {file = "ansible-runner-2.3.6.tar.gz", hash = "sha256:b2174a12dcad2dc2f342ea82876898f568a0b66c53568600bf80577158fcba1c"}, - {file = "ansible_runner-2.3.6-py3-none-any.whl", hash = "sha256:4f153d9c3000a61b82d7253ca292849e3ad2c5d68dfff4377a6b98c4e6ff6c3e"}, + {file = "ansible-runner-2.4.0.tar.gz", hash = "sha256:82d02b2548830f37a53517b65c823c4af371069406c7d213b5c9041d45e0c5b6"}, + {file = "ansible_runner-2.4.0-py3-none-any.whl", hash = "sha256:a3f592ae4cdfa62a72ad15de60da9c8210f376d67f495c4a78d4cf1dc7ccdf89"}, ] [package.dependencies] @@ -217,7 +221,6 @@ packaging = "*" pexpect = ">=4.5" python-daemon = "*" pyyaml = "*" -six = "*" [[package]] name = "anyio" @@ -525,43 +528,43 @@ files = [ [[package]] name = "cryptography" -version = "42.0.6" +version = "42.0.7" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.6-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:073104df012fc815eed976cd7d0a386c8725d0d0947cf9c37f6c36a6c20feb1b"}, - {file = "cryptography-42.0.6-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:5967e3632f42b0c0f9dc2c9da88c79eabdda317860b246d1fbbde4a8bbbc3b44"}, - {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99831397fdc6e6e0aa088b060c278c6e635d25c0d4d14bdf045bf81792fda0a"}, - {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:089aeb297ff89615934b22c7631448598495ffd775b7d540a55cfee35a677bf4"}, - {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:97eeacae9aa526ddafe68b9202a535f581e21d78f16688a84c8dcc063618e121"}, - {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f4cece02478d73dacd52be57a521d168af64ae03d2a567c0c4eb6f189c3b9d79"}, - {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb6f56b004e898df5530fa873e598ec78eb338ba35f6fa1449970800b1d97c2"}, - {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8b90c57b3cd6128e0863b894ce77bd36fcb5f430bf2377bc3678c2f56e232316"}, - {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d16a310c770cc49908c500c2ceb011f2840674101a587d39fa3ea828915b7e83"}, - {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e3442601d276bd9e961d618b799761b4e5d892f938e8a4fe1efbe2752be90455"}, - {file = "cryptography-42.0.6-cp37-abi3-win32.whl", hash = "sha256:00c0faa5b021457848d031ecff041262211cc1e2bce5f6e6e6c8108018f6b44a"}, - {file = "cryptography-42.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:b16b90605c62bcb3aa7755d62cf5e746828cfc3f965a65211849e00c46f8348d"}, - {file = "cryptography-42.0.6-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:eecca86813c6a923cabff284b82ff4d73d9e91241dc176250192c3a9b9902a54"}, - {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d93080d2b01b292e7ee4d247bf93ed802b0100f5baa3fa5fd6d374716fa480d4"}, - {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff75b88a4d273c06d968ad535e6cb6a039dd32db54fe36f05ed62ac3ef64a44"}, - {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c05230d8aaaa6b8ab3ab41394dc06eb3d916131df1c9dcb4c94e8f041f704b74"}, - {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9184aff0856261ecb566a3eb26a05dfe13a292c85ce5c59b04e4aa09e5814187"}, - {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:4bdb39ecbf05626e4bfa1efd773bb10346af297af14fb3f4c7cb91a1d2f34a46"}, - {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e85f433230add2aa26b66d018e21134000067d210c9c68ef7544ba65fc52e3eb"}, - {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:65d529c31bd65d54ce6b926a01e1b66eacf770b7e87c0622516a840e400ec732"}, - {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f1e933b238978ccfa77b1fee0a297b3c04983f4cb84ae1c33b0ea4ae08266cc9"}, - {file = "cryptography-42.0.6-cp39-abi3-win32.whl", hash = "sha256:bc954251edcd8a952eeaec8ae989fec7fe48109ab343138d537b7ea5bb41071a"}, - {file = "cryptography-42.0.6-cp39-abi3-win_amd64.whl", hash = "sha256:9f1a3bc2747166b0643b00e0b56cd9b661afc9d5ff963acaac7a9c7b2b1ef638"}, - {file = "cryptography-42.0.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:945a43ebf036dd4b43ebfbbd6b0f2db29ad3d39df824fb77476ca5777a9dde33"}, - {file = "cryptography-42.0.6-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f567a82b7c2b99257cca2a1c902c1b129787278ff67148f188784245c7ed5495"}, - {file = "cryptography-42.0.6-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3b750279f3e7715df6f68050707a0cee7cbe81ba2eeb2f21d081bd205885ffed"}, - {file = "cryptography-42.0.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6981acac509cc9415344cb5bfea8130096ea6ebcc917e75503143a1e9e829160"}, - {file = "cryptography-42.0.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:076c92b08dd1ab88108bc84545187e10d3693a9299c593f98c4ea195a0b0ead7"}, - {file = "cryptography-42.0.6-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81dbe47e28b703bc4711ac74a64ef8b758a0cf056ce81d08e39116ab4bc126fa"}, - {file = "cryptography-42.0.6-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e1f5f15c5ddadf6ee4d1d624a2ae940f14bd74536230b0056ccb28bb6248e42a"}, - {file = "cryptography-42.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:43e521f21c2458038d72e8cdfd4d4d9f1d00906a7b6636c4272e35f650d1699b"}, - {file = "cryptography-42.0.6.tar.gz", hash = "sha256:f987a244dfb0333fbd74a691c36000a2569eaf7c7cc2ac838f85f59f0588ddc9"}, + {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a987f840718078212fdf4504d0fd4c6effe34a7e4740378e59d47696e8dfb477"}, + {file = "cryptography-42.0.7-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:bd13b5e9b543532453de08bcdc3cc7cebec6f9883e886fd20a92f26940fd3e7a"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a79165431551042cc9d1d90e6145d5d0d3ab0f2d66326c201d9b0e7f5bf43604"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a47787a5e3649008a1102d3df55424e86606c9bae6fb77ac59afe06d234605f8"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:02c0eee2d7133bdbbc5e24441258d5d2244beb31da5ed19fbb80315f4bbbff55"}, + {file = "cryptography-42.0.7-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:5e44507bf8d14b36b8389b226665d597bc0f18ea035d75b4e53c7b1ea84583cc"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:7f8b25fa616d8b846aef64b15c606bb0828dbc35faf90566eb139aa9cff67af2"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:93a3209f6bb2b33e725ed08ee0991b92976dfdcf4e8b38646540674fc7508e13"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:e6b8f1881dac458c34778d0a424ae5769de30544fc678eac51c1c8bb2183e9da"}, + {file = "cryptography-42.0.7-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3de9a45d3b2b7d8088c3fbf1ed4395dfeff79d07842217b38df14ef09ce1d8d7"}, + {file = "cryptography-42.0.7-cp37-abi3-win32.whl", hash = "sha256:789caea816c6704f63f6241a519bfa347f72fbd67ba28d04636b7c6b7da94b0b"}, + {file = "cryptography-42.0.7-cp37-abi3-win_amd64.whl", hash = "sha256:8cb8ce7c3347fcf9446f201dc30e2d5a3c898d009126010cbd1f443f28b52678"}, + {file = "cryptography-42.0.7-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:a3a5ac8b56fe37f3125e5b72b61dcde43283e5370827f5233893d461b7360cd4"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:779245e13b9a6638df14641d029add5dc17edbef6ec915688f3acb9e720a5858"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d563795db98b4cd57742a78a288cdbdc9daedac29f2239793071fe114f13785"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:31adb7d06fe4383226c3e963471f6837742889b3c4caa55aac20ad951bc8ffda"}, + {file = "cryptography-42.0.7-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efd0bf5205240182e0f13bcaea41be4fdf5c22c5129fc7ced4a0282ac86998c9"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a9bc127cdc4ecf87a5ea22a2556cab6c7eda2923f84e4f3cc588e8470ce4e42e"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:3577d029bc3f4827dd5bf8bf7710cac13527b470bbf1820a3f394adb38ed7d5f"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2e47577f9b18723fa294b0ea9a17d5e53a227867a0a4904a1a076d1646d45ca1"}, + {file = "cryptography-42.0.7-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1a58839984d9cb34c855197043eaae2c187d930ca6d644612843b4fe8513c886"}, + {file = "cryptography-42.0.7-cp39-abi3-win32.whl", hash = "sha256:e6b79d0adb01aae87e8a44c2b64bc3f3fe59515280e00fb6d57a7267a2583cda"}, + {file = "cryptography-42.0.7-cp39-abi3-win_amd64.whl", hash = "sha256:16268d46086bb8ad5bf0a2b5544d8a9ed87a0e33f5e77dd3c3301e63d941a83b"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2954fccea107026512b15afb4aa664a5640cd0af630e2ee3962f2602693f0c82"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:362e7197754c231797ec45ee081f3088a27a47c6c01eff2ac83f60f85a50fe60"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4f698edacf9c9e0371112792558d2f705b5645076cc0aaae02f816a0171770fd"}, + {file = "cryptography-42.0.7-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:5482e789294854c28237bba77c4c83be698be740e31a3ae5e879ee5444166582"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e9b2a6309f14c0497f348d08a065d52f3020656f675819fc405fb63bbcd26562"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:d8e3098721b84392ee45af2dd554c947c32cc52f862b6a3ae982dbb90f577f14"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c65f96dad14f8528a447414125e1fc8feb2ad5a272b8f68477abbcc1ea7d94b9"}, + {file = "cryptography-42.0.7-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:36017400817987670037fbb0324d71489b6ead6231c9604f8fc1f7d008087c68"}, + {file = "cryptography-42.0.7.tar.gz", hash = "sha256:ecbfbc00bf55888edda9868a4cf927205de8499e7fabe6c050322298382953f2"}, ] [package.dependencies] @@ -849,6 +852,25 @@ files = [ {file = "ifaddr-0.2.0.tar.gz", hash = "sha256:cc0cbfcaabf765d44595825fb96a99bb12c79716b73b44330ea38ee2b0c4aed4"}, ] +[[package]] +name = "importlib-metadata" +version = "7.1.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.8" +files = [ + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, +] + +[package.dependencies] +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] + [[package]] name = "itsdangerous" version = "2.2.0" @@ -862,13 +884,13 @@ files = [ [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -1166,13 +1188,13 @@ files = [ [[package]] name = "nicegui" -version = "1.4.23" +version = "1.4.25" description = "Create web-based user interfaces with Python. The nice way." optional = false python-versions = "<4.0,>=3.8" files = [ - {file = "nicegui-1.4.23-py3-none-any.whl", hash = "sha256:ff4c31c05c344f66567ce90e2149ce2ceaa6cad6d4eb1484edf8b438dbd2e30d"}, - {file = "nicegui-1.4.23.tar.gz", hash = "sha256:abfa1183822a43ec297cc14028de40a05672c8daea8ecf1b3c805b81ad45766f"}, + {file = "nicegui-1.4.25-py3-none-any.whl", hash = "sha256:27b5b657cba020d6eadaaea06a364907352ea7ad8f7424b33317bd2f35867767"}, + {file = "nicegui-1.4.25.tar.gz", hash = "sha256:545585ed148b86dd079175c3cc0d9dcc3c4b1516dc113a976673cbbc15c27e8c"}, ] [package.dependencies] @@ -1183,7 +1205,7 @@ fastapi = ">=0.109.1,<0.110.0" httpx = ">=0.24.0" ifaddr = ">=0.2.0" itsdangerous = ">=2.1.2,<3.0.0" -jinja2 = ">=3.1.3,<4.0.0" +jinja2 = ">=3.1.4,<4.0.0" markdown2 = ">=2.4.7,<2.4.11 || >2.4.11" orjson = {version = ">=3.9.15", markers = "platform_machine != \"i386\" and platform_machine != \"i686\""} Pygments = ">=2.15.1,<3.0.0" @@ -1411,13 +1433,13 @@ ptyprocess = ">=0.5" [[package]] name = "platformdirs" -version = "4.2.1" +version = "4.2.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, - {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, + {file = "platformdirs-4.2.2-py3-none-any.whl", hash = "sha256:2d7a1657e36a80ea911db832a8a6ece5ee53d8de21edd5cc5879af6530b1bfee"}, + {file = "platformdirs-4.2.2.tar.gz", hash = "sha256:38b7b51f512eed9e84a22788b4bce1de17c0adb134d6becb09836e37d8654cd3"}, ] [package.extras] @@ -1828,110 +1850,110 @@ jupyter = ["ipywidgets (>=7.5.1,<9)"] [[package]] name = "rpds-py" -version = "0.18.0" +version = "0.18.1" description = "Python bindings to Rust's persistent data structures (rpds)" optional = false python-versions = ">=3.8" files = [ - {file = "rpds_py-0.18.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:5b4e7d8d6c9b2e8ee2d55c90b59c707ca59bc30058269b3db7b1f8df5763557e"}, - {file = "rpds_py-0.18.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c463ed05f9dfb9baebef68048aed8dcdc94411e4bf3d33a39ba97e271624f8f7"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01e36a39af54a30f28b73096dd39b6802eddd04c90dbe161c1b8dbe22353189f"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d62dec4976954a23d7f91f2f4530852b0c7608116c257833922a896101336c51"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd18772815d5f008fa03d2b9a681ae38d5ae9f0e599f7dda233c439fcaa00d40"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:923d39efa3cfb7279a0327e337a7958bff00cc447fd07a25cddb0a1cc9a6d2da"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39514da80f971362f9267c600b6d459bfbbc549cffc2cef8e47474fddc9b45b1"}, - {file = "rpds_py-0.18.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a34d557a42aa28bd5c48a023c570219ba2593bcbbb8dc1b98d8cf5d529ab1434"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:93df1de2f7f7239dc9cc5a4a12408ee1598725036bd2dedadc14d94525192fc3"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:34b18ba135c687f4dac449aa5157d36e2cbb7c03cbea4ddbd88604e076aa836e"}, - {file = "rpds_py-0.18.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c0b5dcf9193625afd8ecc92312d6ed78781c46ecbf39af9ad4681fc9f464af88"}, - {file = "rpds_py-0.18.0-cp310-none-win32.whl", hash = "sha256:c4325ff0442a12113a6379af66978c3fe562f846763287ef66bdc1d57925d337"}, - {file = "rpds_py-0.18.0-cp310-none-win_amd64.whl", hash = "sha256:7223a2a5fe0d217e60a60cdae28d6949140dde9c3bcc714063c5b463065e3d66"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:3a96e0c6a41dcdba3a0a581bbf6c44bb863f27c541547fb4b9711fd8cf0ffad4"}, - {file = "rpds_py-0.18.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:30f43887bbae0d49113cbaab729a112251a940e9b274536613097ab8b4899cf6"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fcb25daa9219b4cf3a0ab24b0eb9a5cc8949ed4dc72acb8fa16b7e1681aa3c58"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d68c93e381010662ab873fea609bf6c0f428b6d0bb00f2c6939782e0818d37bf"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b34b7aa8b261c1dbf7720b5d6f01f38243e9b9daf7e6b8bc1fd4657000062f2c"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2e6d75ab12b0bbab7215e5d40f1e5b738aa539598db27ef83b2ec46747df90e1"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b8612cd233543a3781bc659c731b9d607de65890085098986dfd573fc2befe5"}, - {file = "rpds_py-0.18.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aec493917dd45e3c69d00a8874e7cbed844efd935595ef78a0f25f14312e33c6"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:661d25cbffaf8cc42e971dd570d87cb29a665f49f4abe1f9e76be9a5182c4688"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1df3659d26f539ac74fb3b0c481cdf9d725386e3552c6fa2974f4d33d78e544b"}, - {file = "rpds_py-0.18.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a1ce3ba137ed54f83e56fb983a5859a27d43a40188ba798993812fed73c70836"}, - {file = "rpds_py-0.18.0-cp311-none-win32.whl", hash = "sha256:69e64831e22a6b377772e7fb337533c365085b31619005802a79242fee620bc1"}, - {file = "rpds_py-0.18.0-cp311-none-win_amd64.whl", hash = "sha256:998e33ad22dc7ec7e030b3df701c43630b5bc0d8fbc2267653577e3fec279afa"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:7f2facbd386dd60cbbf1a794181e6aa0bd429bd78bfdf775436020172e2a23f0"}, - {file = "rpds_py-0.18.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1d9a5be316c15ffb2b3c405c4ff14448c36b4435be062a7f578ccd8b01f0c4d8"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cd5bf1af8efe569654bbef5a3e0a56eca45f87cfcffab31dd8dde70da5982475"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5417558f6887e9b6b65b4527232553c139b57ec42c64570569b155262ac0754f"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:56a737287efecafc16f6d067c2ea0117abadcd078d58721f967952db329a3e5c"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8f03bccbd8586e9dd37219bce4d4e0d3ab492e6b3b533e973fa08a112cb2ffc9"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4457a94da0d5c53dc4b3e4de1158bdab077db23c53232f37a3cb7afdb053a4e3"}, - {file = "rpds_py-0.18.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0ab39c1ba9023914297dd88ec3b3b3c3f33671baeb6acf82ad7ce883f6e8e157"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9d54553c1136b50fd12cc17e5b11ad07374c316df307e4cfd6441bea5fb68496"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0af039631b6de0397ab2ba16eaf2872e9f8fca391b44d3d8cac317860a700a3f"}, - {file = "rpds_py-0.18.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84ffab12db93b5f6bad84c712c92060a2d321b35c3c9960b43d08d0f639d60d7"}, - {file = "rpds_py-0.18.0-cp312-none-win32.whl", hash = "sha256:685537e07897f173abcf67258bee3c05c374fa6fff89d4c7e42fb391b0605e98"}, - {file = "rpds_py-0.18.0-cp312-none-win_amd64.whl", hash = "sha256:e003b002ec72c8d5a3e3da2989c7d6065b47d9eaa70cd8808b5384fbb970f4ec"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:08f9ad53c3f31dfb4baa00da22f1e862900f45908383c062c27628754af2e88e"}, - {file = "rpds_py-0.18.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c0013fe6b46aa496a6749c77e00a3eb07952832ad6166bd481c74bda0dcb6d58"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e32a92116d4f2a80b629778280103d2a510a5b3f6314ceccd6e38006b5e92dcb"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e541ec6f2ec456934fd279a3120f856cd0aedd209fc3852eca563f81738f6861"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bed88b9a458e354014d662d47e7a5baafd7ff81c780fd91584a10d6ec842cb73"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2644e47de560eb7bd55c20fc59f6daa04682655c58d08185a9b95c1970fa1e07"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e8916ae4c720529e18afa0b879473049e95949bf97042e938530e072fde061d"}, - {file = "rpds_py-0.18.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:465a3eb5659338cf2a9243e50ad9b2296fa15061736d6e26240e713522b6235c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:ea7d4a99f3b38c37eac212dbd6ec42b7a5ec51e2c74b5d3223e43c811609e65f"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:67071a6171e92b6da534b8ae326505f7c18022c6f19072a81dcf40db2638767c"}, - {file = "rpds_py-0.18.0-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:41ef53e7c58aa4ef281da975f62c258950f54b76ec8e45941e93a3d1d8580594"}, - {file = "rpds_py-0.18.0-cp38-none-win32.whl", hash = "sha256:fdea4952db2793c4ad0bdccd27c1d8fdd1423a92f04598bc39425bcc2b8ee46e"}, - {file = "rpds_py-0.18.0-cp38-none-win_amd64.whl", hash = "sha256:7cd863afe7336c62ec78d7d1349a2f34c007a3cc6c2369d667c65aeec412a5b1"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:5307def11a35f5ae4581a0b658b0af8178c65c530e94893345bebf41cc139d33"}, - {file = "rpds_py-0.18.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77f195baa60a54ef9d2de16fbbfd3ff8b04edc0c0140a761b56c267ac11aa467"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39f5441553f1c2aed4de4377178ad8ff8f9d733723d6c66d983d75341de265ab"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a00312dea9310d4cb7dbd7787e722d2e86a95c2db92fbd7d0155f97127bcb40"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8f2fc11e8fe034ee3c34d316d0ad8808f45bc3b9ce5857ff29d513f3ff2923a1"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:586f8204935b9ec884500498ccc91aa869fc652c40c093bd9e1471fbcc25c022"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddc2f4dfd396c7bfa18e6ce371cba60e4cf9d2e5cdb71376aa2da264605b60b9"}, - {file = "rpds_py-0.18.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5ddcba87675b6d509139d1b521e0c8250e967e63b5909a7e8f8944d0f90ff36f"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:7bd339195d84439cbe5771546fe8a4e8a7a045417d8f9de9a368c434e42a721e"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:d7c36232a90d4755b720fbd76739d8891732b18cf240a9c645d75f00639a9024"}, - {file = "rpds_py-0.18.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:6b0817e34942b2ca527b0e9298373e7cc75f429e8da2055607f4931fded23e20"}, - {file = "rpds_py-0.18.0-cp39-none-win32.whl", hash = "sha256:99f70b740dc04d09e6b2699b675874367885217a2e9f782bdf5395632ac663b7"}, - {file = "rpds_py-0.18.0-cp39-none-win_amd64.whl", hash = "sha256:6ef687afab047554a2d366e112dd187b62d261d49eb79b77e386f94644363294"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ad36cfb355e24f1bd37cac88c112cd7730873f20fb0bdaf8ba59eedf8216079f"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36b3ee798c58ace201289024b52788161e1ea133e4ac93fba7d49da5fec0ef9e"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8a2f084546cc59ea99fda8e070be2fd140c3092dc11524a71aa8f0f3d5a55ca"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e4461d0f003a0aa9be2bdd1b798a041f177189c1a0f7619fe8c95ad08d9a45d7"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8db715ebe3bb7d86d77ac1826f7d67ec11a70dbd2376b7cc214199360517b641"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793968759cd0d96cac1e367afd70c235867831983f876a53389ad869b043c948"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66e6a3af5a75363d2c9a48b07cb27c4ea542938b1a2e93b15a503cdfa8490795"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6ef0befbb5d79cf32d0266f5cff01545602344eda89480e1dd88aca964260b18"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d4acf42190d449d5e89654d5c1ed3a4f17925eec71f05e2a41414689cda02d1"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:a5f446dd5055667aabaee78487f2b5ab72e244f9bc0b2ffebfeec79051679984"}, - {file = "rpds_py-0.18.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9dbbeb27f4e70bfd9eec1be5477517365afe05a9b2c441a0b21929ee61048124"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:22806714311a69fd0af9b35b7be97c18a0fc2826e6827dbb3a8c94eac6cf7eeb"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:b34ae4636dfc4e76a438ab826a0d1eed2589ca7d9a1b2d5bb546978ac6485461"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c8370641f1a7f0e0669ddccca22f1da893cef7628396431eb445d46d893e5cd"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c8362467a0fdeccd47935f22c256bec5e6abe543bf0d66e3d3d57a8fb5731863"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11a8c85ef4a07a7638180bf04fe189d12757c696eb41f310d2426895356dcf05"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b316144e85316da2723f9d8dc75bada12fa58489a527091fa1d5a612643d1a0e"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf1ea2e34868f6fbf070e1af291c8180480310173de0b0c43fc38a02929fc0e3"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:e546e768d08ad55b20b11dbb78a745151acbd938f8f00d0cfbabe8b0199b9880"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:4901165d170a5fde6f589acb90a6b33629ad1ec976d4529e769c6f3d885e3e80"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:618a3d6cae6ef8ec88bb76dd80b83cfe415ad4f1d942ca2a903bf6b6ff97a2da"}, - {file = "rpds_py-0.18.0-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:ed4eb745efbff0a8e9587d22a84be94a5eb7d2d99c02dacf7bd0911713ed14dd"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c81e5f372cd0dc5dc4809553d34f832f60a46034a5f187756d9b90586c2c307"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:43fbac5f22e25bee1d482c97474f930a353542855f05c1161fd804c9dc74a09d"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d7faa6f14017c0b1e69f5e2c357b998731ea75a442ab3841c0dbbbfe902d2c4"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:08231ac30a842bd04daabc4d71fddd7e6d26189406d5a69535638e4dcb88fe76"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:044a3e61a7c2dafacae99d1e722cc2d4c05280790ec5a05031b3876809d89a5c"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f26b5bd1079acdb0c7a5645e350fe54d16b17bfc5e71f371c449383d3342e17"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:482103aed1dfe2f3b71a58eff35ba105289b8d862551ea576bd15479aba01f66"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1374f4129f9bcca53a1bba0bb86bf78325a0374577cf7e9e4cd046b1e6f20e24"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:635dc434ff724b178cb192c70016cc0ad25a275228f749ee0daf0eddbc8183b1"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:bc362ee4e314870a70f4ae88772d72d877246537d9f8cb8f7eacf10884862432"}, - {file = "rpds_py-0.18.0-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:4832d7d380477521a8c1644bbab6588dfedea5e30a7d967b5fb75977c45fd77f"}, - {file = "rpds_py-0.18.0.tar.gz", hash = "sha256:42821446ee7a76f5d9f71f9e33a4fb2ffd724bb3e7f93386150b61a43115788d"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:d31dea506d718693b6b2cffc0648a8929bdc51c70a311b2770f09611caa10d53"}, + {file = "rpds_py-0.18.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:732672fbc449bab754e0b15356c077cc31566df874964d4801ab14f71951ea80"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a98a1f0552b5f227a3d6422dbd61bc6f30db170939bd87ed14f3c339aa6c7c9"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7f1944ce16401aad1e3f7d312247b3d5de7981f634dc9dfe90da72b87d37887d"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:38e14fb4e370885c4ecd734f093a2225ee52dc384b86fa55fe3f74638b2cfb09"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08d74b184f9ab6289b87b19fe6a6d1a97fbfea84b8a3e745e87a5de3029bf944"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d70129cef4a8d979caa37e7fe957202e7eee8ea02c5e16455bc9808a59c6b2f0"}, + {file = "rpds_py-0.18.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ce0bb20e3a11bd04461324a6a798af34d503f8d6f1aa3d2aa8901ceaf039176d"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81c5196a790032e0fc2464c0b4ab95f8610f96f1f2fa3d4deacce6a79852da60"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:f3027be483868c99b4985fda802a57a67fdf30c5d9a50338d9db646d590198da"}, + {file = "rpds_py-0.18.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d44607f98caa2961bab4fa3c4309724b185b464cdc3ba6f3d7340bac3ec97cc1"}, + {file = "rpds_py-0.18.1-cp310-none-win32.whl", hash = "sha256:c273e795e7a0f1fddd46e1e3cb8be15634c29ae8ff31c196debb620e1edb9333"}, + {file = "rpds_py-0.18.1-cp310-none-win_amd64.whl", hash = "sha256:8352f48d511de5f973e4f2f9412736d7dea76c69faa6d36bcf885b50c758ab9a"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:6b5ff7e1d63a8281654b5e2896d7f08799378e594f09cf3674e832ecaf396ce8"}, + {file = "rpds_py-0.18.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8927638a4d4137a289e41d0fd631551e89fa346d6dbcfc31ad627557d03ceb6d"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:154bf5c93d79558b44e5b50cc354aa0459e518e83677791e6adb0b039b7aa6a7"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:07f2139741e5deb2c5154a7b9629bc5aa48c766b643c1a6750d16f865a82c5fc"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c7672e9fba7425f79019db9945b16e308ed8bc89348c23d955c8c0540da0a07"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:489bdfe1abd0406eba6b3bb4fdc87c7fa40f1031de073d0cfb744634cc8fa261"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3c20f05e8e3d4fc76875fc9cb8cf24b90a63f5a1b4c5b9273f0e8225e169b100"}, + {file = "rpds_py-0.18.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:967342e045564cef76dfcf1edb700b1e20838d83b1aa02ab313e6a497cf923b8"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:2cc7c1a47f3a63282ab0f422d90ddac4aa3034e39fc66a559ab93041e6505da7"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f7afbfee1157e0f9376c00bb232e80a60e59ed716e3211a80cb8506550671e6e"}, + {file = "rpds_py-0.18.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9e6934d70dc50f9f8ea47081ceafdec09245fd9f6032669c3b45705dea096b88"}, + {file = "rpds_py-0.18.1-cp311-none-win32.whl", hash = "sha256:c69882964516dc143083d3795cb508e806b09fc3800fd0d4cddc1df6c36e76bb"}, + {file = "rpds_py-0.18.1-cp311-none-win_amd64.whl", hash = "sha256:70a838f7754483bcdc830444952fd89645569e7452e3226de4a613a4c1793fb2"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:3dd3cd86e1db5aadd334e011eba4e29d37a104b403e8ca24dcd6703c68ca55b3"}, + {file = "rpds_py-0.18.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:05f3d615099bd9b13ecf2fc9cf2d839ad3f20239c678f461c753e93755d629ee"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35b2b771b13eee8729a5049c976197ff58a27a3829c018a04341bcf1ae409b2b"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ee17cd26b97d537af8f33635ef38be873073d516fd425e80559f4585a7b90c43"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b646bf655b135ccf4522ed43d6902af37d3f5dbcf0da66c769a2b3938b9d8184"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:19ba472b9606c36716062c023afa2484d1e4220548751bda14f725a7de17b4f6"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e30ac5e329098903262dc5bdd7e2086e0256aa762cc8b744f9e7bf2a427d3f8"}, + {file = "rpds_py-0.18.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d58ad6317d188c43750cb76e9deacf6051d0f884d87dc6518e0280438648a9ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e1735502458621921cee039c47318cb90b51d532c2766593be6207eec53e5c4c"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f5bab211605d91db0e2995a17b5c6ee5edec1270e46223e513eaa20da20076ac"}, + {file = "rpds_py-0.18.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2fc24a329a717f9e2448f8cd1f960f9dac4e45b6224d60734edeb67499bab03a"}, + {file = "rpds_py-0.18.1-cp312-none-win32.whl", hash = "sha256:1805d5901779662d599d0e2e4159d8a82c0b05faa86ef9222bf974572286b2b6"}, + {file = "rpds_py-0.18.1-cp312-none-win_amd64.whl", hash = "sha256:720edcb916df872d80f80a1cc5ea9058300b97721efda8651efcd938a9c70a72"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:c827576e2fa017a081346dce87d532a5310241648eb3700af9a571a6e9fc7e74"}, + {file = "rpds_py-0.18.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:aa3679e751408d75a0b4d8d26d6647b6d9326f5e35c00a7ccd82b78ef64f65f8"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0abeee75434e2ee2d142d650d1e54ac1f8b01e6e6abdde8ffd6eeac6e9c38e20"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ed402d6153c5d519a0faf1bb69898e97fb31613b49da27a84a13935ea9164dfc"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:338dee44b0cef8b70fd2ef54b4e09bb1b97fc6c3a58fea5db6cc083fd9fc2724"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7750569d9526199c5b97e5a9f8d96a13300950d910cf04a861d96f4273d5b104"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:607345bd5912aacc0c5a63d45a1f73fef29e697884f7e861094e443187c02be5"}, + {file = "rpds_py-0.18.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:207c82978115baa1fd8d706d720b4a4d2b0913df1c78c85ba73fe6c5804505f0"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:6d1e42d2735d437e7e80bab4d78eb2e459af48c0a46e686ea35f690b93db792d"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5463c47c08630007dc0fe99fb480ea4f34a89712410592380425a9b4e1611d8e"}, + {file = "rpds_py-0.18.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:06d218939e1bf2ca50e6b0ec700ffe755e5216a8230ab3e87c059ebb4ea06afc"}, + {file = "rpds_py-0.18.1-cp38-none-win32.whl", hash = "sha256:312fe69b4fe1ffbe76520a7676b1e5ac06ddf7826d764cc10265c3b53f96dbe9"}, + {file = "rpds_py-0.18.1-cp38-none-win_amd64.whl", hash = "sha256:9437ca26784120a279f3137ee080b0e717012c42921eb07861b412340f85bae2"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:19e515b78c3fc1039dd7da0a33c28c3154458f947f4dc198d3c72db2b6b5dc93"}, + {file = "rpds_py-0.18.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7b28c5b066bca9a4eb4e2f2663012debe680f097979d880657f00e1c30875a0"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:673fdbbf668dd958eff750e500495ef3f611e2ecc209464f661bc82e9838991e"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d960de62227635d2e61068f42a6cb6aae91a7fe00fca0e3aeed17667c8a34611"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:352a88dc7892f1da66b6027af06a2e7e5d53fe05924cc2cfc56495b586a10b72"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e0ee01ad8260184db21468a6e1c37afa0529acc12c3a697ee498d3c2c4dcaf3"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4c39ad2f512b4041343ea3c7894339e4ca7839ac38ca83d68a832fc8b3748ab"}, + {file = "rpds_py-0.18.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aaa71ee43a703c321906813bb252f69524f02aa05bf4eec85f0c41d5d62d0f4c"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:6cd8098517c64a85e790657e7b1e509b9fe07487fd358e19431cb120f7d96338"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:4adec039b8e2928983f885c53b7cc4cda8965b62b6596501a0308d2703f8af1b"}, + {file = "rpds_py-0.18.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:32b7daaa3e9389db3695964ce8e566e3413b0c43e3394c05e4b243a4cd7bef26"}, + {file = "rpds_py-0.18.1-cp39-none-win32.whl", hash = "sha256:2625f03b105328729f9450c8badda34d5243231eef6535f80064d57035738360"}, + {file = "rpds_py-0.18.1-cp39-none-win_amd64.whl", hash = "sha256:bf18932d0003c8c4d51a39f244231986ab23ee057d235a12b2684ea26a353590"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cbfbea39ba64f5e53ae2915de36f130588bba71245b418060ec3330ebf85678e"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:a3d456ff2a6a4d2adcdf3c1c960a36f4fd2fec6e3b4902a42a384d17cf4e7a65"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7700936ef9d006b7ef605dc53aa364da2de5a3aa65516a1f3ce73bf82ecfc7ae"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51584acc5916212e1bf45edd17f3a6b05fe0cbb40482d25e619f824dccb679de"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:942695a206a58d2575033ff1e42b12b2aece98d6003c6bc739fbf33d1773b12f"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b906b5f58892813e5ba5c6056d6a5ad08f358ba49f046d910ad992196ea61397"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6f8e3fecca256fefc91bb6765a693d96692459d7d4c644660a9fff32e517843"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7732770412bab81c5a9f6d20aeb60ae943a9b36dcd990d876a773526468e7163"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:bd1105b50ede37461c1d51b9698c4f4be6e13e69a908ab7751e3807985fc0346"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:618916f5535784960f3ecf8111581f4ad31d347c3de66d02e728de460a46303c"}, + {file = "rpds_py-0.18.1-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:17c6d2155e2423f7e79e3bb18151c686d40db42d8645e7977442170c360194d4"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:6c4c4c3f878df21faf5fac86eda32671c27889e13570645a9eea0a1abdd50922"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-macosx_11_0_arm64.whl", hash = "sha256:fab6ce90574645a0d6c58890e9bcaac8d94dff54fb51c69e5522a7358b80ab64"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:531796fb842b53f2695e94dc338929e9f9dbf473b64710c28af5a160b2a8927d"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:740884bc62a5e2bbb31e584f5d23b32320fd75d79f916f15a788d527a5e83644"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:998125738de0158f088aef3cb264a34251908dd2e5d9966774fdab7402edfab7"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e2be6e9dd4111d5b31ba3b74d17da54a8319d8168890fbaea4b9e5c3de630ae5"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0cee71bc618cd93716f3c1bf56653740d2d13ddbd47673efa8bf41435a60daa"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2c3caec4ec5cd1d18e5dd6ae5194d24ed12785212a90b37f5f7f06b8bedd7139"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:27bba383e8c5231cd559affe169ca0b96ec78d39909ffd817f28b166d7ddd4d8"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_i686.whl", hash = "sha256:a888e8bdb45916234b99da2d859566f1e8a1d2275a801bb8e4a9644e3c7e7909"}, + {file = "rpds_py-0.18.1-pp38-pypy38_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6031b25fb1b06327b43d841f33842b383beba399884f8228a6bb3df3088485ff"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:48c2faaa8adfacefcbfdb5f2e2e7bdad081e5ace8d182e5f4ade971f128e6bb3"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:d85164315bd68c0806768dc6bb0429c6f95c354f87485ee3593c4f6b14def2bd"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6afd80f6c79893cfc0574956f78a0add8c76e3696f2d6a15bca2c66c415cf2d4"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fa242ac1ff583e4ec7771141606aafc92b361cd90a05c30d93e343a0c2d82a89"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d21be4770ff4e08698e1e8e0bce06edb6ea0626e7c8f560bc08222880aca6a6f"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5c45a639e93a0c5d4b788b2613bd637468edd62f8f95ebc6fcc303d58ab3f0a8"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:910e71711d1055b2768181efa0a17537b2622afeb0424116619817007f8a2b10"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b9bb1f182a97880f6078283b3505a707057c42bf55d8fca604f70dedfdc0772a"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:1d54f74f40b1f7aaa595a02ff42ef38ca654b1469bef7d52867da474243cc633"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_i686.whl", hash = "sha256:8d2e182c9ee01135e11e9676e9a62dfad791a7a467738f06726872374a83db49"}, + {file = "rpds_py-0.18.1-pp39-pypy39_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:636a15acc588f70fda1661234761f9ed9ad79ebed3f2125d44be0862708b666e"}, + {file = "rpds_py-0.18.1.tar.gz", hash = "sha256:dc48b479d540770c811fbd1eb9ba2bb66951863e448efec2e2c102625328e92f"}, ] [[package]] @@ -2308,13 +2330,13 @@ anyio = ">=3.0.0" [[package]] name = "wcmatch" -version = "8.5.1" +version = "8.5.2" description = "Wildcard/glob file name matcher." optional = false python-versions = ">=3.8" files = [ - {file = "wcmatch-8.5.1-py3-none-any.whl", hash = "sha256:24c19cedc92bc9c9e27f39db4e1824d72f95bd2cea32b254a47a45b1a1b227ed"}, - {file = "wcmatch-8.5.1.tar.gz", hash = "sha256:c0088c7f6426cf6bf27e530e2b7b734031905f7e490475fd83c7c5008ab581b3"}, + {file = "wcmatch-8.5.2-py3-none-any.whl", hash = "sha256:17d3ad3758f9d0b5b4dedc770b65420d4dac62e680229c287bf24c9db856a478"}, + {file = "wcmatch-8.5.2.tar.gz", hash = "sha256:a70222b86dea82fb382dd87b73278c10756c138bd6f8f714e2183128887b9eb2"}, ] [package.dependencies] @@ -2536,6 +2558,21 @@ files = [ idna = ">=2.0" multidict = ">=4.0" +[[package]] +name = "zipp" +version = "3.18.2" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.8" +files = [ + {file = "zipp-3.18.2-py3-none-any.whl", hash = "sha256:dce197b859eb796242b0622af1b8beb0a722d52aa2f57133ead08edd5bf5374e"}, + {file = "zipp-3.18.2.tar.gz", hash = "sha256:6278d9ddbcfb1f1089a88fde84481528b07b0e10474e09dcfe53dad4069fa059"}, +] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] + [metadata] lock-version = "2.0" python-versions = "^3.11" From f5c95c8d1eb180579ed57beda1e116ac91e125a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Mon, 20 May 2024 18:13:34 +0000 Subject: [PATCH 2/7] fix(nicegui): better error handling --- anvil/nicegui/pages/registry.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/anvil/nicegui/pages/registry.py b/anvil/nicegui/pages/registry.py index 13fab32..87e5213 100644 --- a/anvil/nicegui/pages/registry.py +++ b/anvil/nicegui/pages/registry.py @@ -6,8 +6,13 @@ from utils.registry import DockerRegistry ## TODO: this should be async but I currently don't know how to implement this without button press def get_image_info() -> pandas.DataFrame: - registry = DockerRegistry() - all_image_info = registry.get_all_image_info() + data = pandas.DataFrame(columns=["image_name", "tag", "size"]) + try: + registry = DockerRegistry() + all_image_info = registry.get_all_image_info() + except Exception as error: + ui.notify(message=error) + return data if isinstance(all_image_info, list) and len(all_image_info) > 0: data = pandas.json_normalize( all_image_info, @@ -26,7 +31,6 @@ def get_image_info() -> pandas.DataFrame: return data else: ui.notify(message="No images found") - data = pandas.DataFrame(columns=["image_name", "tag", "size"]) return data From f67774443f27670197e3a9fc439e68624c9aaed8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Mon, 20 May 2024 18:14:29 +0000 Subject: [PATCH 3/7] feat(nicegui): add about section --- anvil/nicegui/main.py | 7 ----- anvil/nicegui/menu.py | 55 ++++++++++++++++++++++++++++++++--- anvil/nicegui/pages/about.py | 10 ------- anvil/nicegui/theme.py | 23 +++++++++------ anvil/nicegui/utils/helper.py | 5 ++++ anvil/poetry.lock | 13 ++++++++- anvil/pyproject.toml | 1 + 7 files changed, 83 insertions(+), 31 deletions(-) delete mode 100644 anvil/nicegui/pages/about.py create mode 100644 anvil/nicegui/utils/helper.py diff --git a/anvil/nicegui/main.py b/anvil/nicegui/main.py index ae39943..c25de96 100644 --- a/anvil/nicegui/main.py +++ b/anvil/nicegui/main.py @@ -1,5 +1,4 @@ import pages -import pages.about import pages.ansible import pages.home import pages.registry @@ -26,10 +25,4 @@ def registry_page() -> None: pages.registry.content() -@ui.page("/about") -def about_page() -> None: - with theme.frame("About"): - pages.about.content() - - ui.run(title="uBlue Forge", port=3000) diff --git a/anvil/nicegui/menu.py b/anvil/nicegui/menu.py index 7ebe7ef..6536afb 100644 --- a/anvil/nicegui/menu.py +++ b/anvil/nicegui/menu.py @@ -1,8 +1,55 @@ +import pandas +import toml from nicegui import ui +from importlib.metadata import version +from utils.helper import get_project_root + + +def load_pyproject_toml() -> str: + project_root = get_project_root().parent + pyproject_file = toml.load(f"{project_root}/pyproject.toml") + return pyproject_file + + +def get_project_version() -> str: + pyproject_file = load_pyproject_toml() + project_version = pyproject_file["tool"]["poetry"]["version"] + return project_version + + +def get_python_package_version() -> pandas.DataFrame: + pyproject_file = load_pyproject_toml() + python_packages = pyproject_file["tool"]["poetry"]["dependencies"] + python_packages_data = [] + for key, value in python_packages.items(): + # Skip python itself + if key == "python": + continue + get_version = version(key) + python_packages_data.append({"Package": key, "Version": get_version}) + python_packages_version = pandas.DataFrame(data=python_packages_data).sort_values( + by="Package" + ) + return python_packages_version + + +def get_about(dialog) -> None: + project_version = get_project_version() + python_packages_versions = get_python_package_version() + with ui.column().classes("items-center"): + ui.label("uBlue-OS Forge").classes("text-h5") + ui.label(f"v{project_version}").classes("text-h6") + ui.table.from_pandas(df=python_packages_versions) + ui.button("Close", on_click=dialog.close) def menu() -> None: - ui.link("Home", "/").classes(replace="text-white") - ui.link("Ansible", "/ansible").classes(replace="text-white") - ui.link("Registry", "/registry").classes(replace="text-white") - ui.link("About", "/about").classes(replace="text-white") + with ui.button(icon="menu"): + with ui.menu().props("auto-close"): + ui.menu_item("Home", lambda: ui.navigate.to(target="/")) + ui.menu_item("Ansible", lambda: ui.navigate.to(target="/ansible")) + ui.menu_item("Registry", lambda: ui.navigate.to(target="/registry")) + ui.menu_item("About", lambda: dialog.open()) + + with ui.dialog() as dialog, ui.card(): + get_about(dialog) diff --git a/anvil/nicegui/pages/about.py b/anvil/nicegui/pages/about.py deleted file mode 100644 index c4caf8b..0000000 --- a/anvil/nicegui/pages/about.py +++ /dev/null @@ -1,10 +0,0 @@ -from nicegui import ui -import os - - -def content() -> None: - project_root = os.environ['NICEGUI_DIR'] - ui.label("Work in progress...").classes("text-h6") - ui.image(project_root + "/pages/assets/work-in-progress.png").classes( - "w-[200%]" - ) diff --git a/anvil/nicegui/theme.py b/anvil/nicegui/theme.py index 465f998..fa9aea1 100644 --- a/anvil/nicegui/theme.py +++ b/anvil/nicegui/theme.py @@ -10,7 +10,7 @@ class GuiProgressSpinner(ui.spinner): type: str = "dots", size: str = "lg", color: str | None = "red", - thickness: float = 5 + thickness: float = 5, ) -> None: super().__init__(type, size=size, color=color, thickness=thickness) with self, ui.spinner(): @@ -24,21 +24,26 @@ class GuiProgressSpinner(ui.spinner): @contextmanager -def frame(navigation_title: str, enable_right_drawer: bool = False): +def frame( + navigation_title: str, +): """Custom page frame to share the same styling and behavior across all pages""" ui.colors(primary="#4051b5", secondary="#dddbff", accent="#171d9a") with ui.header(): - with ui.row(): - menu() - ui.space() - with ui.link(target="https://github.com/ublue-os/forge", new_tab=True): - ui.icon("eva-github").classes("text-2xl") + with ui.grid(columns=3).classes("w-full gap-0"): + with ui.row(wrap=False).classes("col-span-1 justify-start"): + menu() + ui.label(text="uBlue-OS Forge").classes("text-h5") + with ui.row(wrap=False).classes("col-span-1 justify-center"): + ui.label(text=navigation_title).classes("text-h5") + with ui.row(wrap=False).classes("col-span-1 justify-end"): + with ui.link(target="https://github.com/ublue-os/forge", new_tab=True): + ui.icon("eva-github").classes("text-2xl") with ui.column().classes(): - ui.label(navigation_title).classes("text-h4") yield with ui.footer(value=False): ui.add_head_html( - '' + '' ) diff --git a/anvil/nicegui/utils/helper.py b/anvil/nicegui/utils/helper.py new file mode 100644 index 0000000..01299e9 --- /dev/null +++ b/anvil/nicegui/utils/helper.py @@ -0,0 +1,5 @@ +from pathlib import Path + + +def get_project_root() -> Path: + return Path(__file__).parent.parent diff --git a/anvil/poetry.lock b/anvil/poetry.lock index 7f666d8..53f519a 100644 --- a/anvil/poetry.lock +++ b/anvil/poetry.lock @@ -2119,6 +2119,17 @@ files = [ [package.extras] test = ["enrich (>=1.2.6)", "molecule (>=3.4.0)", "pytest (>=6.2.5)", "pytest-cov (>=2.12.1)", "pytest-plus (>=0.2)", "pytest-xdist (>=2.3.0)"] +[[package]] +name = "toml" +version = "0.10.2" +description = "Python Library for Tom's Obvious, Minimal Language" +optional = false +python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ + {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, + {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, +] + [[package]] name = "typing-extensions" version = "4.11.0" @@ -2576,4 +2587,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "9acf410a48c12c73c00bd0aa133d052c5626af6db8c0342aa2b5ab3015588c95" +content-hash = "b48ce29bcc613e6be5b44f65d4e01f113f74c26f628ac1e5bb9d59c37d4ee43b" diff --git a/anvil/pyproject.toml b/anvil/pyproject.toml index a17b6b9..9cb2c96 100644 --- a/anvil/pyproject.toml +++ b/anvil/pyproject.toml @@ -15,6 +15,7 @@ ansible-runner = "^2.3.6" requests = "^2.31.0" pandas = "^2.2.2" humanize = "^4.9.0" +toml = "^0.10.2" [tool.poetry.group.dev.dependencies] ansible-lint = { version = "^24.2", markers = 'platform_system != "Windows"' } # https://github.com/ansible/ansible-lint/issues/2730#issuecomment-1330406601 From ed3f58ed93e4cca93dfb487baf814aaf110fe99b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Fri, 24 May 2024 09:17:23 +0000 Subject: [PATCH 4/7] feat(nicegui): add first content to 'home' --- anvil/nicegui/pages/assets/ansible.png | Bin 0 -> 16360 bytes anvil/nicegui/pages/assets/registry.png | Bin 0 -> 4625 bytes anvil/nicegui/pages/home.py | 43 ++++++++++++++++++++---- 3 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 anvil/nicegui/pages/assets/ansible.png create mode 100644 anvil/nicegui/pages/assets/registry.png diff --git a/anvil/nicegui/pages/assets/ansible.png b/anvil/nicegui/pages/assets/ansible.png new file mode 100644 index 0000000000000000000000000000000000000000..5e0bca5b6205efb1782933ee6b019aeb1114f423 GIT binary patch literal 16360 zcmcJ02Un9#&}c#z2t@@9T@(aq(mR4uM5z`eAOV3O5PA(gh$2-$dJv>Zk!t9WKosdj zKuYLUdY2|3a39|9JLld%a6N}(cAwqZ*_oZ4*(ni*`q~g$c3Kb!1krh*@fZXm!vTLy zG*m#3nmh3U@E_Du)5P;^6OLqiF-NwZV!K>r+@)hDS;-!tRTPH#p1iBlkqoMv3 zHMTw}iuwpk=3Pdzb!v)MT5;JDA6nH5wv@0Y{rD1xFpha_JMcgf1GBj`#(k6ji|9@M zF|jTv)G_A0dOa@@| z|KXoV_Z2hHwr1!`gEOl8eEn_=>6r7(CG$OL+T~~~#`zyAQ>zYDs7jKAjl5aH(n|fc@{8APp4-P7N8hV7++oWtg>$ z`de_unG%*CSh;XAE1+kBAqq>e>EbC$^Zs0fj-Cb;l0;qCf&_08lJC4KkRzM%Fe3vx zH6u;O^}u4n3}|gls%uQ!WFA*THnt)!Q?5eL!KqZuH^#xhC>VWLyU1q#25%9wLlV=&HlBo_CT19op=P zIs&8+Cd2aGKN4&H&Po9Ep2aUVFYSbRlZs6(U={#kpCkkm7AsRUW!bPwJmp)FrWc(l zVGHwllvyg&12d#I)J)s=eE0}4*tcG0VDoE9vDHn$&M_>N?mm%N%H>gCqfHPQ+|H1q zwy{;nj-b6&PT90nLr#H<8>%SmrEC&;Jtap5K)qL^=2Lr3m}oEm2AX^5{ z*n&qDbc1^t(p6lpa!`1k8AYwjX%;9+NpSJ+Yc$)Yy`g|i!*~tZ1J=JyV(&%54E}Yo z5^l|nOrOib-)XLp#Tf*+oVwx8Vs{j|%0D?>>e&A7rG)q}WM0XlM$XsGF*-$V7J_CQ z5lK*-3@HV%dn!T#v}?$~;(OZn+4~Z5?PvU*g_mR4;eJ>7>CW-G+`AA*>b{6zp@d(h z54?-EJ_}3Y_G}wVGgm@$dO{dFwtrzaast4X#!H%M&ylc1fMM7)NSY z=k|xu3IHo|GjN4#{6gR}8-JY#VJXpN*oJest|iDM85Joo{^%hvRZ0Zg04fF=w}HlG zDKCT<*w~;Z<*5y-lR!a*_R~!EDNY@K)M|q&nw&zN7NrtEhQ)t_ro|=$m>BVJ6pygM-iK%%E7ff%B*Svlv`8niSWIH?&I@@qB9@^2;eN5Jgk_>L@CG+;> zv@yu@)QrjCudbV=eWG-QNazaN$2MtDnTCB!)La%Vt8Q2dB3%1<{vD9(lYe3#j{?;Q zkG%a`)h~l4#DaLD#jLY|SsmgPg+oKBAVLX4mrW!fctulLg(S+EmxKF!GoSrha^8T^ z?Y?&*e#A9|*vG0iWhaBs$#O?ZP%KmPjb@(m^UHg{I02*b##bDmRO>#DK;9i`KN}^c zZR|s%hV6ot40%w`c!jRt{h$gKb(ciaX)AD27bK#&$g^xM*sQymw*Pck$|+jCt06;2mKr>_@e8iu zny`6DZb9oE6Ab31tMoe(@j%sY=))@L)P|?Ut)-6M(2F;Tfb3#)#mV3ljUee>FbfTe zd7X@RS(6ZD$p)gp|JOukrC`#2_0>9k69aMGaj5i=#063}p45QR?>qKrFD9U~*udhi z%|T2TWHMzR1gZ52&uCWAfiCc-@dm5)MWNY%*))F4+k7LGXw%nIO9R37(V@41WeM#q zLjRm)AB5FzFqU3HfM$YnO0IWt*!WTY&(uc@57{q<70mezUe|*hC5hT~eQHD6ae!v} z&k#63ZbD0$wjamVT{*=&fzb64x-QBpr%^y3*3YGVEw%;>THIXQIW9`=7oI_Uu4!Kj z2B>I~s;BPaoG<m?KnO#KLSu^E?2s(G&qOg~HIJ|}cvPOYW`6*KzD zIo{{S4F5Sg@5-~j3NneYV3Pu{6w&P&o2-I>D%^MSWHJ+D9p9o;jz+o5RmMS}p=+%3 zU5^c0(wE4+963N)iUM*psI*XZiFh!`!5c21=O`febhSvd(3GP79YDdtu`JYOGZ`72 z*U6K#L@5x+OR8R-&`rJ`L*j8F2jwv*a7cfB_5k9NVYN4s4Qw}2mI6-(-;@=^41#zo z?cn}!;QRdnQ*-Geu$ofy($jko7xS}EJIAHK;617V!l8JL)qbM%pmn3}dj=}d*jE|2 zb`7vZUh(b^S&*7X&U-n`$WN!Y=-OAv0ZSiC;jGZc@%?>CPKIumpxt!IYxH90Yt_{T z-3PtBz2YQ`^J9{`pP#8#u95FKe2ea;w<5$Z+stV2>>IYknqRo zf$EDFF9J*wJN}lHmX0F3yQ;+^FSjKbwluP@dS?$Y9*&tpsdH1j8lqUen#|11QoNef z*jIg@6TV$3-Z8GA+lZj5N=QifOwo89Gxa_;R{VU6%(v-wq~Fx%gjw^Z!fCf-TIp-+ zTHC%JbKfO@P`qOkhj;AV6BBPk+Hg?dL;(#g6q*~FeVzGtnc@Ju`c_+88zPN7?p_aj zfa+-q<&$3(FHT;Y+ii#9o16b&Ul)(PQZmD94`kePtfs>0K5?Qi3Iy(Ar)!QYv3jE7$Z~L;Ky~%eM ztDO!q%+<6>%PWmijGO#h`B z6LhL|s_2q;wt9Mc`ZMar6rTws5{rv7ut6OCbjQ^YO&DtUQ6 zL+G;dUY;dNs3f!ZDM6hC?X=Tcy%mahzK5{{OR4Nx(yh>a$ z$LMDtI}sT-HH_jK4IAy;p0c30masl&y5TU0cr6m4`Z;elB?pPH zQ zpX?h(wd}bae&y5nmC?#q7*ZA_m#^DjC+sj6P^O*-*`$&Kn357h>KiTkD3L9G=u|8) zsh06{6y~FSsh5u-E1Vgjc124w`FWU+gINV#Ae7q)a8P1lU5HUcJDU~uqOVtr#D zl<43yfTNoGm<+JW#^=z9eD8*2s?krvMNrYHjQ=ZmF~sd$TE8Umaby`ef6R zEi|cGv!c+VB!X@1%b1^^@4f`-S=`&Ja&&YYp|R8M;Z)w*h}~3ZDVB#QRyH+>jRX=h zTgfo}3j-T)@~LkqsN^O5bws)t9JCR9y@|Y<) z%xsnB%{m@ak>dk$8L3hh=zFviWi))r``!RAfaO`n4WSmLtLyiIrOk*bjtb#1lB+^3 z{w6(BZ#V6X)61{vvEJxH+j1uAkedzob#5~N*naBRw7ukA*;5zO?~GmSOAL?2Y`LuR z&+Ko|b9D{c>>uy1NmqaEV$TvX|7g(nNT)?pA_Ls;p$I05ZS1FKwQfE*JbZ#%jERW> zwCn1%&G9t&uw|T>6{j5y7EHw2q}Q(FVDrO<8ID)wUg1bH3@c+m8DR{e=hMozju(H3Bk3B;m`Z^`qR+S)$aqW{=5xucik>)xR|S8keje#gIPQP&+L^ zC~)d$Nl$ zg)e0rJ7O==`%)?^E2RgZIoyXs#m^a!r}1@l512=^wT_Q=m&A1K?t2nd zk+Y2ULjMWZm6*qA`bU1cD$dD^)sB!igp6U+h;ma}RFah1E6JGe4K9^q%ApGgK*;s% z`I;O)=cy}@dkS!GwOgNwc7K*22si)e2L*@85xTuXlD;crRyBIwd>9;Nv95cia_Ik2nncgw+p-tLITxma3 z-RZnCd<|-WT0|dmkhu14jE5H^D00&QM1Q z0CQ%>XXq&l0s_Nqpv_t>cVZmH6_H^+=726686DNx_e)9hHMg;zz$pMqg-ODs;lr;I z=+xhR|20ggs!f-bSfl!*UG@sH9hx=X0lJ@Y1IEg|*LnCF<|JV)qMh$Wk% z4ws{I{w430FH$AU%D^S`xjrr8knMq!$>o?^-O00)+~t9!YgJpnf8QK3`d$pkqtJoy zfoSN!zyS8^*V%jTCTiM*TQj_C=*y4Im#;hB;moJ?em+!kP|quAOto`n>+pcWy&W-1 z2A_W47Xp}>`F{9fM*zx`UDKLFXa`3M;RTnEOyd zETJCvtUD2)M}Ah|sQ%m+(OgWCuju;vdfoE%+N(RTeEO}II z31(wY5$#U79?H(oHWh4nDXhAgAOf9QZZd44gLEgx&_mno5nY&exK=V?7Co?kDgc{u zKy+-E0j9Z=M5M@*3NvKon4S^e9rl>V>-M;FzyvLQxgow?q(@;aIzGRSNgtAIHby|= zOouu<3uKv0R;U94Pu&smLP&P3O>TMF+gaD;`(TAjbi9W&v?{~{0T~)r)rJT#iFqZBs4!Io@|QxZw!)p?COoeIU|48QEZ+Z z7jSYEIz`IpZglZ}&PLaMRid16!^+%3{KxAs(_Qwwr%pN8gZyg7GA=uV8i6l;_ij9^ z2?QWwZ9a!Q+6f7S&(jqHmWb=5S~_;f&eqBJq*c6M9u@tIigc-hFjCspR*fNtFVOcD zI-37Y1Bh}inlGdF@L8J+8QgM3UAJeN$mb7G5)k`2MdrQN=-PcW=@PP!_f~N!JYS?7 zOZA}O0!I39PNmgMLr9qO35nDV+&f=L6LUotfJ&2vtN_04D%Piwro-iaRaX{gA zE9oxsILE}Uo2x!%DJw3~Yp*;!2HstAFBEfwAqh&ZrD{sj#X~}8ZMy1PfXNe>%G;^p zZ~^avt}J%H&BRA(O8VRZDgfKbyc?YP<=~p4@v~@{b(qgGdx*CUQq}=!hfU2?*Zd!$Nu7RigMM@I(nMG{8{xcj4Jc45UKZEph5aQWD< zx}R7Xt$VL*P$9DR#@%|m?02*!akYQjs=>aRZF-faK>%T}Dn=k6lwk!;50@@JeGJHb z35m-y2cu!@1TKf-;!7wc zBgvt)p_1X@Gn>YEE0vqZW9WLpEigfPj36(8_i!cmZ5&&AQN?Xh@=(1z0>zx6KH^ zg1hEbnnPxcVCa{p@qJgf$rvxERXOf|06vI4u~jbXb~NBd2a!!>*OLF~7~#x=ZMezN zl^O6B-(tZhGfpvd%&)JDJYyBblmjPeGsgeTg;jE688>YhgDN?291_2$L+ND<(u>U zq`tY{cW5>yWf2qQF;xWxA>b)D^+TZ}QKHu`fvV@ZsCDN-Terup!WT70Hgc`mSIRA# zy~j*nkzO++D%=4_P*oQjZwp;d-dn1yj)RS@EekR3TLY=J(J{$DfW#yuSxdP!U|7)2 zaQw)16#H8%@!P}FfA60V=mLzQ?*Gfpl;iI1{->gw_|AsbPl`MFBBI4lO(z;jzqPaD z2H0mi0(aGF++6hG)M;mFIQtB(pa2-s61D*HH%NGbD<&~91{QdpK&`=vB z9QhK*4Fqf!3zr;6Ha9mBGsR_x-B_9O&OhIOo$h|IP!qjX%9TQETLtFP%wn@{^ke*+ zBZNdEi$7*&HVAIUtt>BgJZ$eo?ub`h&6QMeazX$i(;KO1JWAAoX%FtR+k4dlCZ3yl z@jzG;u*u#(BZmVZp|<4Kzmlq3%gch#+6MO_WbiDH{t;_sl6Wha<^9bwz{`7MnaEe> zQm`I^W?N1LpZZWgG#XzIn@ItLr|xIAIA$1apmFeLZtlBQ&kSHpuPpY7nF12Hy*?^M zL{^}3bL=67I?6S#WQ|B`59SOI-G3UUvKawUzcuHE|Mu_j%8hO-PgwMwHS-!b@14xn za7oK-EzK~tLd|H0%j;7X%HLzPk1$z(WXfCjoi(6U1_Zi)p+5}x}byEdH`cw7w{0D9|l&dYX*`tH#s$AUN&$)3MTcfg9C55;L1grEUIeh(v28WSuJ_8F!xt&Yvyh?z>(88913u2 z_CLpjWz&?dH9jeR_U(I3C!u0y*i^^Cfgvfq$aiBE4<6&2dHY`Il}TwKTa24)DbL?* zUkE@BVdfjDAH}Nuo@-yO{pb|CSgl(bKJW4J;#7uEb!-mv+wN~}ZONI<#g+OJm&g|# zs#e*u>>-L*p(Ut9{Xl&K1M&3Hx#{5_GAS!X_deoSN9||&;U$X8rTi^Q?xKW0g+?XM z2luri?nlKA#t4!de@>>~a>c#Jb5(GTwrRZWsM%80vNawr#{e6M5X4JW4L~qm>BfL7Z(>fH!dyECmmrqj^rT^g4rXT(5G@D>TLoadsV1nFHsrI#jWi8 zRpu^lAHiO;NX`Iw^J)_dUp;@FxT%cRj+KO@Igo zKV2pLS?qbepxg3F99qy#UO_>}|K?XLRTc@jw&LV}@XphZpHOHTks7~#HPXs$+RUir z*5TZGlFyO&_g@w28V$fm+Y6;Ni45xK8Ad(jPMh-Cn)2E|Ynwli&k!BgBLY5#B@c>? zlVWu3cSy*v4N+HRG2VyMa0hrVZLa#|{&*?RneR&+T}4%@3W04<*}gC&BM%3C>v>SD z7e0Q4=+60dQD*sdf2Ewp(%T)bWSOO;ou}BfTg6EV(S+5FxX5Cao;web02C$AkHbjB zBocx^-SxV?`0nUcE>=eBt*`gCHmd|?6pOgbBh1~bT~m9|j{p?I-0sb8x+6h*bXc`J zc1&4A&!r?&qk==-Wdn=>+>m4SqIGWbFY-=BkQ0oO%GPqRMaCD@ZmIe?`39WJWI>yIndyf`~}63i6UFqOu`P6e@CVAaEl|K5G7;N zV@j+B_u6`zjHK?7~_p`^F>=XjjLTL_rM13z87`d?;Juprbf0x6W{nw*P;rG&krN#}OeEM#wUv~V zFeGkXRiCC{k>aT*!vGTj>vYkYb33`TwDf5#X=!$2ycQ809Q--=LY*MaCe#g}Q@2>0 ze^QgEm3vxSH5+o@X=*TfdO?((qbOSB7)s0zTyG_&ITwmH`b%v`HB32recq+nn~#gML%(=inENx)TrP)R^_<0YAnNGZ zTaLZ)9ril?nV>m0&$bo%c%2f3x}&3|Pu-u+|1AOGmV`3JKh4Lh#eYtw&(HpBy%%Eb zK3KCjZwNTuCl$S(!njOXQl81eRj>MlFPYHdMT>W|KDh=2e02C^t?wAS>o*^0dQfBq z<+vkL4l~Y>Lfwzyhun=gnhnCf*Xl}Uj?&&Rnq%^6SBdEHjutbs74=x(xh>fp`?axg zt(!*man3Pi`evjE@_;3+HX7EBBBmWGV>9s)ha%XC?w-O|$EM{x7yH9x$4U9ri+LGsa(wd%UuNNtFS9ro_?j z#;aWZrE4k*3b2Q=9-J=<#!~(&AH%UF$67tZe%o&v$x_t^jcq^nFjc3O4t|3V?H_nQ z&>Y--AKLhqv>$Xh=~HyTuNteOw~HQcTBO90!BaVi4qoBDcsG<*&6V%m!rZgkQsX~= z{+tV=_)RuSe-8xnRSS!pPjG z;%Vjb^m*;JHGk9JwaiW&dbqe4>|ziLu+TBGZs3hnU=>uS<%-5+pBtwjK)XC$VogiPL7z8pG19Op(SXb8MrYaF;a%=cg+L@42|Se{Qsi zI49;*eOtQvMGi}O=TOa&~yyN2N z=m{e!mEVY{OltkHBx8+NsbX!ugu2d5bU12N-7_U|P(RhEIg}u|)&zD3B+$;)E*Q~S z!$`)_id}Y`h5qO4*Q#ZD{WjYN_qn;b*^O*rUS(3*Yb|y!Doa)(NAod5V`lx~L-V+) z_6ZuqKM@ft*{_Iabqq*|;3s45?T1k8@x4h8%lF_FK;WZ|Hn!AE&!0yVk^Ong$2IKc zCo`Y&>km?6bLF_fR5?*q-mw|fGM!)>@JL9e<;Z6DG~Zt;Jomo8B`XzVpl z7+U*PV%zF>a^O_E>(`vfOdP>2R=$*J7=Bw4Te--G^)nxJxLVH1!{dLRSkt4&*=Mww z>Kv~(L8!|wrDF4Nox6wiGuyeJS?#7%IX1WI=kH`2m0mc$>Q^~=tL%ok7@13OjhN#0|4M z1zYuVZXrYcUGmO4_un^6AtEKi*8Q13d62#ib$mHj|OweTtY3#9OAgRNrRE0*C5fIMXIvOPk8b$nYd0 zufyeTrtqnrJj;Qc`r^)(8*;n=CJR-no}X=uHTEyAH&1O4es=*k)~f_=*9Q!u`yirHFjyXGK>2`fIy|kGb3!y8an^ntE9xO zqU?>8$D(^)XaSBDk7p!d50mD<6YWbpmmgk9IlVpF);2=Nawfe3XtGZ#nqQ6?7fucr z7=!$;acfo{`0;^l0{v*pKeaf zJO~B6w{|-8y}c$aY(yhwjdNWJ=tsAyeUu;nM<{Y%ct)&wQ?b;9DBBu_EQ)`g;3L~G2N5-(Oum8@#7Qjj& z&%JVuV)azi#h;3qhaKw75xslvtk@gp3P{i??&_Hc^UZT>d)+TR?Bwrs`%Y5P!_BrO z#G86{B7q^#z3?T*0ph7S>cqQXsD`_ys!mH1i>APJ zvq0g~9eG!wA4|0HwBF-vUih5{lh;{_6OJx1=_!eKw#5VCiF|xFx+nLYbn*UmNnHGj zSLnPyS(%QR{_)MDHkVjZ(^{;q)o(-TVg#p39<0iV2WZQPdKC{lz;QH+T0BfBqVd3gqPPZEyGO z)IRc*xdnBoJLD>_vVM^%yG z;g-pR#W1Cvr4DgO`NJ59$ieOYUTzl^``W?K_j6m9r7`a7tev`J{!z(*O31L%A2*^_* zNhzbBaq+e?+3&z^qi8ARhyq(cEMJi#&)?dKt-(4xoG(<9eM(jSaQ6Yd$CTTF<>oJujYCj70|6d}A{5$=ELudo=Om~~R}!b^JGRY{ z-}*5r+{gwNI!WV6*(mbF1~o76$b9Rx^)Q-B?S}!`)Zc@>lIYLf%90N%*^4h%`dPc( z#gI}fcO~u5Tz)3BP1n`VFNE_X3rLDxuub5a0~56SntAd*A^BN&Zz;6Br*mz`k2J?~ zP_-kc-w^q^>!VYDi55gFH(v3NKfpFluBzjADl0R@0bJWJAeEvdO-P+eCZe~0yw-)% zL#huL5jttR7Mbb2P2~W$7MgpffUGEn#f<$J2rFC(JUy-^{(UX@+1(nA(jjp8h-406 zUGtV^aKc;A<5Bbre#DjayyG0)NFcB5CrO6@+r{9`tn!8Zo zGw)4^VNS8{?`wR#Ig{~;oFo~Q2ZOK*zn-M=oBTNG3?xJeY%^{7hbLru?uBu`C*`kU ze4`pB?Tou0RZ#z3VU0PT5 z*yXyV@?8bLG8?-tG{cpoVf>Z@hM!Wi+uQ=3?UJmohob zSZc?FTK7ZGg#BgF85KdTL<#LQZ7^^>Qo2F3`#9#i|DtX%NXf^3A_FEv>z>$nOPyB; zzRKcvQ`6*pIxA3?IDNY5BSvG}KlEgan;dQrTIBO6{b(y=>Ippd(>7vqz5QAFAuxkL z8~eGR6~&mEf{dn4>M}2G;ayLvQFBukId=(%^23HH`Eat$W2j(85=wPrFJ>6mmK!=* z0=-IfsJcK@vI+mIu8qy}u&R-SKE!z@cfD!?V(|M>m?;yLrT~hjJPXbC*tOsKz-h~@MJTSe5&8`8{W=1G=LPyS-&>+u6up69!)Z5 zm=HSY&%ieB-M+Y%H|opS+M2fZf#i`Hu2y36+9#O3ap;6!+1h9S++RBh8wFFr)wmx0 zO7`DAGUcSDke{BXPt6G9ZYp$#S3E@LJ*%sHyt|+?JXZQHiSkvZq+)nldP=|w&P9i? zR`w1G0IT^C;aK`}?R2M|2mdYHg96vgH0`}q6Ed!03k3A5ZgsKescAE?s>Htpu#Oquy?bYWcQ^DK;l$3oG`mkf?0IrZ z+J(Pl1Gv+v4%rMeYHDh_(&dgaDYTOnAF``?v%%oVMV8V29zLZF0L;5`B9X|*#>Qr^ zy4y0_cVgSQDOqXFb5(fw>?~-^QZ6WOzQ5$KAIlv)4;W>}r>|7I?%*tjJ-O%>E>e?r zJ*C}!-?%Os*VzY@gkpLPL(Kor}*X0gS@q*S>{D2zy*eTmt0Ng6qOm;-&|iuS(L0HdEd-8 zF$B6Ezv%y)4I^Sp9{ZZR>_Jg?OOQy5<+l6u0jT2_X|G%zj4Ml27xw`dmM>4q+L{$^ z_>Hsjpczk2lQF$huWnmAHn}k;&oYglVJEoz3Fn#=(x9WwxS~#A^zrYUkJ}x#SDU<|-PjVCaUy3=Zjq=!nV>~QQ-%H;J4xK`)mu!Q zK+3OebyE`@-W1^L8%`8~O{ae5pf>-v-NKmiu3f{Ht!YNn%^QvO`8ikE1mxMyH03oaazy}v(@5eyi+P8kk%Q6mV3xSRYL|sp$8<>>bpP6+dG}*glr@Mt8qWzlz8=! zopl~32(&iEA41P8#_w1FJ=*rZZWP8ftno;l&pT4Y6l zXOTM>ogWxoB(LMtElYzklM+n$6((Z_2AM}a4g=EAVR!f;-OY99NE}dh0P@^8XD@HQ zNGC0}D%{IT9Rq>zesb{h0a=mQ4`D;Dv>c$lPJ0Kksj_R&s6c@duN^fLrAzdqZ=al? zPKS*_YHVkB;OF)n$p&FQ`wUS6vLL(3Zzwz#NEd<^Em5LtG$)-oxg06d(6z`_UvQS* zs<&`fSS`c<{-(sexWW^rF7b&CWXinj-CPMNF38Ik1KwmJ%arInEyUy6D0E7%$tNm2 z5}@?s$cD)!%>+}K%(2(28n+6*@`K`1BIuKhTFeTXlXMOO0aEZLJup3e=TsQ=A*?|m zkqq=lUNG|)EvjBl&k+=NKk=sX2o+eIF*gDNTFuufb;k_5Pe?eAQh^F(M~3o@74(n_ zA7e=dnkwR;!9|NG0U5Bk$Cb1xb)#N7P&Mj_KtYj_f(-6RLuIQ^7DRZ+b@d9A0w)sP z3FO0@3P{qRV6VTSGOi|YfGk?I_XW1a`zcmh;vkWGJ)@`1PWOQ{ z{;GuvK^G9(S3&R?L4kYP9t{Vj#^&yf0d$8`;6Z(SmEJ%(fgf0{0wCXz89+XLYjV)H zGBlgIILK4%^+b%M0x_{o-kz9o8${!Mt2yQMq*mwlfqFh0Xp_O43o0_B*$31!m{Z^e zUF0DbfP_aj!gAl9xU0hNvJ`v;^Nz5r)1vH0in7=MxR%ceQNRz1MxcUXj|^>@a%^wf zvPboQJ1z<);2@@TzW;@ryjCPSgBe&!Y4JA$tNod-gnSbtgEw8>JN^LT-Q60gFP(|} zK;?Yp!rrcM76v_FUH5z3dCLY>A2W6fB&l#2fV3c?z7<~z%Ce%KujU_FkkvPxe-y-B z4qP%>0CBQ@S{^1jsS&!B{}~E+;V-23Hgm`($2c0D;(OeUI+cc}1H~h>uP4bbx-`QD zYIxe$YUlTpHb9o0Ir@j^oaN^gEInN&lH6TIjvx`Uo91wqD{p{03yshnMG?#>$V9&a zxqgk&N(36~29Fjcx7=aq`dw)GO^h)oETvtth90dMDMVlHL>>#&{P>Omc|zmBm4o|4 z)j)kwdsGcg)-f-)l?8EMSy!Cm28%!AxJq;cDMv3#FX|7lN4dhKE5WY8)S4dbbXoQ> zn)MF0Q3W*j$H4?Pd4bfoM!yJ>Ka76#_vDwcq0akVQ`dZFepb7TFm6n2F|GT!oH_v-l4ELI0pk&!gk=`WVz!O`jI z#GzcZ(J!@9zWdvOY07V}jWM8Cn=8*tbun>3J)Wbtm4rSQ1@kP0#ud(~O4tc*59JdD|Lt99-cUKXiIOEjr=N zRbZr}iH$!vS<^VB3TUk3Iu6K0LQBMoI=6q(CUE{&qL$lcxs*SvV z(=HAupktMJWwe-81etN}PqZZ?CqDkACLT7wUt{M$Ugs@)*DX|8+^vrL)l-2PrL+=hIG^LC<)lkYoq#!b~nPy_XD zh&vF!TA;5(eW!|+0_SSLK8_X%an`kvuVvYObc=6XB^& zpd+(T%c7$}z3dMgAou`xbBGuXN_~cIyGZ_MN9m$*-E8IrD^DP+8&{Xm2J$`PCbD!T zo6-^P0TP5EW&$;tIk4wPd?S-W2_;(uZ?%-4<&+KYLBO3T?c|SZ5@q;`hDW!po!DP2 zlP%nm^OMb#73^%|Y2ZW&bohkY_Z3fo|0s!fu>z&06GE8roQeO6O|J#3B1;EMsgyoBJ?pX)nC~=Xc!Hv-779ZKVn> z={ZmK-Q70+jS!domQeSLj z?aR(ax;;p_f?s6R_h`hG6C&Zxc~2a0(;fC=lO zz=Q_c*Vd5kn^yu@t|kmTo7^yXZ3awmt(~p5l*fKUlFhD?jqmOp?~Da|6Uc$_siDP^ z;WXjrMFAxc?h#DAQZsAE89v}+qN_6!$TT20&^wm|XPyZw{qudkK*dZr^At^G86*Sf z@FQ#>xSaai^AIS(}I~sUg`?W|+a)LYA^8dqlSEW-$yAW#XG9OLke>M3kw7 zEF~pd_BF;XyP2Qw?|uJ#|9J1~KF_(&IrsCN>w3e9k;2Mu&1BIG)!R{ zrZM$NOM3BpdI^VmltT>puU^8w9)+n#T+t(J>XO!ujxgjcJ;LI@;>Z@ahKb+B#P49@ zw~uI?xMPs8BM`B5CU*Nu^0pRnD>!d=U~)I3X7QibdqC*c$DYkY2J;BO?I|2(tLEeG z-0}g2FpnW`>c!6JM9&@Fh#_w{rtf?k+SZAl!NhMJ**CWt^tA&+{4}MMp7WCKpD`yJ zGHDbyV@lZw&7M~en*>7EVFBZpBByntrfX;``Xo9oe$^>?7EM^zBhp2KCXgZHR+L$6 z+!{7+1-Lbajh(_J{Jk7CS=O|SikbwxM$L$mSn>uoZWR?Zp&v)bM2{OK@1r8evE+5b z*l|?k*#Gb-9ThpE8#9HCThb0c+8n`>mQj(T`lQ7pjf(t@K4R<~I${VNG5l|g95y%k zY=86^F~OE*R{;=MM#uRMn{e~qQ4jpbnESmt5ag%zqS&?_noIN z<_zL_piw(97c(0LR|{(X#W`%E+%(E+=e2Yb)>_>!*woQ|2P(Sbt)=!0>&bJsn>Rn5 zv0K1vFlVwNFrO0CM$&(4VGjN4(!K743tLH%SeS`^h{zXOjLu8jwt)e~BF=qp1tM`B z8(&`I^sn>Topy@ARS2J}HdSVi+xRmr1CG_oMN>>B0$=?$X1g>z#i|eiRNegY)U&_! zK0aV3-7RSH*0g_qkLI$BGekmAs@E&o&0Tc9%y_`%o!j&hVBP}2T8(W+#V4_-vfJ@8 zifV75f_^;jFJ^QNjG!x`fJO?y+xAeRk-ZS1Y6A^R@bstgM%`NvJUA0K!i5n7Yuuymvq;VP@xgmEV~%~Q273)__QtKAk%hec z6O5}D=h5ME4Qle;VT;Yq_e96q7xD;otc%}^fYwx7V#BUWa^2i#DSrg|`84i%E#l_8 zvn)i(GYOLeFws}b2>()fL3PtQf|GRtX`&YF8-KyNBH(V&0Li=D^7X8OSxGHd`m_2n z>EQcqwOrDTu+4CCyu|g2S158urDe*mzyZEGrOkx7_VA$xyH9@<7Z&TrmP+jA>NJ!| zJ9tib+j=}6tF~kf4u$;~W|%5QueKnEVdg7NpBtD|J95OdHuu3=bysrYN%M>KUFIGU z%)6SOuN&%ZEs!1-`L~{ba#ksT!6D#NG_UXo&FO?E)>ZH5j*P(z7Fb+9oyv&Dt`^#| z33%AIsMfxPz>8xQ^~(ZTL`r`LIIMK=9_s_{%r@NraD~U6^Jk$Irfl+#Ym3FTHEo1> zl~Oyv$3}Vtw~?@ej2;xmwR6oKz5frTC~cZopB zga!-@^#zB6qDGf7tBwVzHx`ZbKMO+eW4zlJ{a}KE`WPz1CefUAhi%r+6M*kML71=1 zo~PAQ@%;&Z2tQ^A%<~bcmV5=!9dL`hm_CpXAy^0>S3S>d4$tRjIs9^vW^q4_1&pJz zG!}PTYl27*pDT6cokFO#tMdC8a!@X99T%N}*r;a$Zr*X#w=z{W79Z@ALok0w26Vl7 zCiNS;L*h0#>y<$_Wc+_!v&_u=dn6cD6Bs0>h;07CVWH*s3~9t?B#>_t%6q9x?2dRPFQbx=#hbIEwk1FK(L0NDcq{s#N zgS&6?NRR^v8J%7DQ}pe_7xN4uigZB?CN9whlSanbHL z@0&N?kGJ-W!+AVjbebT(NuKo{cZ~A0^dpK(cfvo*)so-*{T92Pc#g02+VO#|X3vq7Y*Ty^pxcFVO?%!!8P7{*3ww0d zg<=7O;k|MzsQsNuj*N=|11bgEoJK^1n?kedT@-vr{NTfh231XQki`uJ+fi-v;so43629s(Sb z05b`MDuVm^DvSjTPHI_JT}}eu^yUXR(bhsXndZF~HdKQkpa=)JLBwVfRMNzY%(3AZ zc2pJwr3;j+3K#e2Fj)3Zd;_J)g3{nr^_X4hOxRwt4b#cSW{yVxk^=y}rvQFpb7ids zyNrZbN0K-m>1kS;?Yf#>byTAkQ^S~b|Dmk2ozOhb}7&i~o_ z#(;_kG}zQUNL86lyf1#5>ZSE{=bWKVV&JX!6L%E02`+5-92zq`+O#Solbr@zQL>nX zB(}we#DTcuCZ#(y*qY?Z*JEbJl?f1p`zhPL3(Za1cv8w*TPGMUYIwIk3?C3I*dUU{ne|o@NW(OK>p!-*SY?x z=(U*pb)fC?*Oj(X|JoHplO*K}oOH?7($M|go5LS&)Zb@VLIFsz#)sDKp}nfN;&@V3 z)H;15{DXA0anr|*>BVrai+nUL5!4Izg{6pp^gE4Nyu=aJyiQje*~_}?bNXL^0D@ep zc!@=f^hPr`ex6nV1Ry8SVbc3{)_cxS7dovFc*xQ7!Yv}yeZd&<<8F(t#30>DI>6&))!e-F6aW>qiJV(X|lkzE645@ zr{Ozcnbg{{SXba(K7@@{C|PG+aRmx+9K;CKSr?`#{gnp+ABv%3_EQQve-lBQYz#df z#Mtk{;>JL{=cLu-UDn#}vfP`f9E0o(z)$-r2ZU zoSmt~pBb_jbQwr6FqzbQZ~JE9ktzl#e2IXz!pq4Vt~~eL1w>KiuJ*2uMsm&i@JO$k zbao(>wf8vH>C=ajFKy3!oJ*Q>IRO5UU|46X*Sl-A+zK2we%3-81N=^8WX~D0Yf~EO zz>>N{-~oEOD(efu27tE84scv{pFiNXkagnO(cvQ%0LzGM%&sid&OD-|^(N(3IY-5EtYx|B3VAqC}(wFjyY_7qAr&=j0ZYC4T zBLba%(*OxLEjf#~Qn>37R*p~9T7Z6TjuvB;fclc_z+7Fwq6tG>j1QT5)7V>I)TKYy zlbQj-j|ScM)knYgh42=))s7>6pYyR79qDa@pM3iu5Wg)#0%P8+n=>3tI3U&zOpUb1R}5Bp*=$Sc&+Yw zVqLP(=T#44BRva;GVj^y}onGBvm!aQx2gBR6&78G9`E{k0` zjywZTQLzN?c&hVNJU^T}$NR$0BgvcNow(7GV0$|8MYNKRBP1$AaOCs(v!AbDL&o$f6KCwp!Y4LDqsE1Kkn@j^YIwR@InXwUkSqtuTvznIzhZchGw0+g2Ez zEb04!kNE^FN^XJsRJ!Edx@h_RCxZYtGJy#UDx@)lnsC>Wo)*vH{wjr|z6PtkcdXb{ z)0XSr2$uhPnfiVp(tN*Y7krZ19(d=#d8AcNp?Avl54A+8&K7aY|9E0-H{x_h=W9j` z?~un^K?CmMh8MO7F&%!WGEYH^dBs(~RIjKWG)IV8zxOQ=qA@;qh@(F^7b#WbK-G!1!|f-wn6O(^`CR3V`B7($uY+fOimTdd%+mj4X~ z*A+>kv{>uLeF94lE>u(nJ%Vflx^lKBb8AwdON2p*FzBCgT}S=_FxdD`)G=C6*9p@@ zF}#1~a8efzJ@&WSP5flAmQ0e6Bl=gP>omJV#y4VVRp2`95uKCUb`?DLH|MdR@Zi_eM<=N{mt zrX)L?bearyODwINy0LpUlvGehQ{>rK&5WTIizfz}Q3yVUiI!}4N None: - project_root = os.environ['NICEGUI_DIR'] - ui.label("Work in progress...").classes("text-h6") - ui.image(project_root + "/pages/assets/work-in-progress.png").classes( - "w-[200%]" - ) + project_root = get_project_root() + with ui.row().classes("w-full"): + with ui.card().classes("h-full"): + with ui.row().classes("no-wrap"): + with ui.link(target="/ansible"): + ui.image(source=f"{project_root}/pages/assets/ansible.png").classes( + "w-32" + ) + + with ui.card().classes("h-full"): + with ui.row().classes("no-wrap"): + with ui.link(target="/registry"): + ui.image( + source=f"{project_root}/pages/assets/registry.png" + ).classes("w-32") + + with ui.row().classes("w-full"): + with ui.card().classes("h-full"): + with ui.row().classes("no-wrap"): + ui.markdown( + content=""" + ### Welcome to Universal Blue Forge + + Ublue-OS Forge is your self-hosted OS forge for custom images. + + To get started have a look at the latest [documentation](https://github.com/ublue-os/forge/blob/main/docs/index.md). + + For feedback and discussion join the [Discourse Forum](https://universal-blue.discourse.group/). + + Found a bug, feel free to file an [issue](https://github.com/ublue-os/forge/issues). + + Thanks and enjoy! + """ + ).classes("text-base") + with ui.row(): + ui.space From 5b81eb55667cfe1ffcbcedf001890159e83e597e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Fri, 24 May 2024 09:18:38 +0000 Subject: [PATCH 5/7] feat(nicegui): add favicon --- anvil/nicegui/main.py | 8 +++++++- anvil/nicegui/pages/assets/favicon.png | Bin 0 -> 1654 bytes 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 anvil/nicegui/pages/assets/favicon.png diff --git a/anvil/nicegui/main.py b/anvil/nicegui/main.py index c25de96..be70ffc 100644 --- a/anvil/nicegui/main.py +++ b/anvil/nicegui/main.py @@ -5,6 +5,7 @@ import pages.registry import theme from nicegui import ui +from utils.helper import get_project_root @ui.page("/") @@ -25,4 +26,9 @@ def registry_page() -> None: pages.registry.content() -ui.run(title="uBlue Forge", port=3000) +project_root = get_project_root() +ui.run( + title="uBlue-OS Forge", + port=3000, + favicon=f"{project_root}/pages/assets/favicon.png", +) diff --git a/anvil/nicegui/pages/assets/favicon.png b/anvil/nicegui/pages/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ddec4c969ce616ea23786aba9e7bea4d4019f2a8 GIT binary patch literal 1654 zcmV-+28sEJP)EX>4Tx04R}tkv&MmKpe$i(~2KdI#@)-AwzYti;6hbDionYsTEpvFuC*#nlvOS zE{=k0!NHHks)LKOt`4q(Aou~|?BJy6A|?JWDYS_3;J6>}?mh0_0Yam~R5K6*RLwHd ziMW`}t%}{R2w)h42%%SEraqTSCE+=~?&0I>U6f~epZjz4D|wRvK9M-abi*RvAfDN@ zbk6(4VOEk9;&b8&gDyz?$aUG}H_ki6e@tQNECM zS>e3JS*_Gq>z@3D!MwJz%ypWhNMI35NI`^*8p^1^LX=jG6ccIMk9+t>9Dj;jGP%lN z5bWxZDATo^;8O9LY~pC=`JAGy0|+FmMa>t+~Cm_Hp_EWT>m;4RCM> zj29_;-Q(RooxS~grq$mMS$1-q9v~&T00006VoOIv0RI600RN!9r;`8x010qNS#tmY z4c7nw4c7reD4Tcy000McNliru=mZ%S4LV*;B1 zVNer;NCJ{n-nMw_fd1-uO+c&@lCw_ik<%xhd0RH!v1bh72+K9m!QcT%q^~|!i?>KJ zst98&kB(pgTTWyUF(9_~n97*uSl>@MR?L_Jw=Iuf1qgwoAVHuu1TTQgAnayclJgSW ze^gxok^U+O9>n)k&l*J^;Yg znMDpBI>qGASGjy8CwG0yq5-67;=v0V1kmCUgNRmEVi02Dt20}U6A7q^2avV<-~ed( zv6hqP<=-{_tGd7hE<&^vu?C{H@nU0YCe;3>Qlo&<1$lIn5m`cnNX>?oU2Gr)qJ;*6)n#x|L`xh~y2_r)kn({e(^m=qxgEj*1x_>W}3Td+z2ipKWtZmvvSn)V;B zTRRM5$el8@vgHA6l0+@ouNhSlYR$5yS9#2|L{@QX;++5dq3s(7CxMt1ywCi_LK)X(mS<)7)CkB^_{%ZVvwW^;@w zN@_QU`GvfET;;+4URZ$X8OQj^1uk82%+5QU3k?duw)NGhJUMOrOkbYm|(xC(T zC5gD9p^Wkbd~Nj@*b~%Fw*!4%KY|Z9|1Z~k0231j7Q5Zn(_qFMld%*?|2$YfA^(>a znDWPyqnF&3)w@OPQ4#B6H=cTi!dp@$&}HsB4Gq-Www>?YtC%-LlU)t|m(_*29)m93 z?tJvaE$WgdMeHL&vJOesizGvZ_+mF Date: Fri, 24 May 2024 09:19:15 +0000 Subject: [PATCH 6/7] feat(nicegui): drop down menu for navigation --- anvil/nicegui/pages/assets/ublue-mini.svg | 54 +++++++++++++++++++++++ anvil/nicegui/theme.py | 7 ++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 anvil/nicegui/pages/assets/ublue-mini.svg diff --git a/anvil/nicegui/pages/assets/ublue-mini.svg b/anvil/nicegui/pages/assets/ublue-mini.svg new file mode 100644 index 0000000..970f60a --- /dev/null +++ b/anvil/nicegui/pages/assets/ublue-mini.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/anvil/nicegui/theme.py b/anvil/nicegui/theme.py index fa9aea1..e7cd9a5 100644 --- a/anvil/nicegui/theme.py +++ b/anvil/nicegui/theme.py @@ -1,6 +1,7 @@ from contextlib import contextmanager from menu import menu from nicegui import ui +from utils.helper import get_project_root class GuiProgressSpinner(ui.spinner): @@ -28,12 +29,16 @@ def frame( navigation_title: str, ): """Custom page frame to share the same styling and behavior across all pages""" + project_root = get_project_root() ui.colors(primary="#4051b5", secondary="#dddbff", accent="#171d9a") with ui.header(): with ui.grid(columns=3).classes("w-full gap-0"): with ui.row(wrap=False).classes("col-span-1 justify-start"): menu() - ui.label(text="uBlue-OS Forge").classes("text-h5") + ui.image(source=f"{project_root}/pages/assets/ublue-mini.svg").props( + "width=33px hight=auto" + ) + ui.label(text="Forge").classes("text-h5") with ui.row(wrap=False).classes("col-span-1 justify-center"): ui.label(text=navigation_title).classes("text-h5") with ui.row(wrap=False).classes("col-span-1 justify-end"): From 796b7ec7cf1f71483bd04b01860b747a8b4699c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20L=C3=BCscher?= Date: Fri, 24 May 2024 09:30:09 +0000 Subject: [PATCH 7/7] doc(nicegui): update screenshots and information --- docs/assets/gui_about.png | Bin 0 -> 26671 bytes docs/assets/gui_ansible.png | Bin 27777 -> 25907 bytes docs/assets/gui_home.png | Bin 0 -> 57016 bytes docs/assets/gui_navigation.png | Bin 3679 -> 5628 bytes docs/assets/gui_registry.png | Bin 14660 -> 10722 bytes docs/gui.md | 17 +++++++++-------- 6 files changed, 9 insertions(+), 8 deletions(-) create mode 100644 docs/assets/gui_about.png create mode 100644 docs/assets/gui_home.png diff --git a/docs/assets/gui_about.png b/docs/assets/gui_about.png new file mode 100644 index 0000000000000000000000000000000000000000..d58dff9e2877c65d7e963189b5e4e50021e8e1a5 GIT binary patch literal 26671 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 literal 0 HcmV?d00001 diff --git a/docs/assets/gui_ansible.png b/docs/assets/gui_ansible.png index 087e9b814e9d267520e8769764f1e4acda695a59..5ddcb6ad4eed5e27618948a7b2a57bed45d454a2 100644 GIT binary patch literal 25907 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/assets/gui_navigation.png b/docs/assets/gui_navigation.png index 307268d1d30ebd35ffa9bdd08b0f915c9ac53e41..2ef6f9fd5495115615aee648da4f4e5489750b05 100644 GIT binary patch literal 5628 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 literal 3679 zcmb_f^;;8A+aA&-Dj^-xC1Z38(kKYx0O=A2j4`?-UI~#B298EVhIEI-V3N{GgNz30 z7%@Wl_I`iDcYWuFQ`d8@C(eED^E`1c40UL!Sg8O20Ii;`rU?K*M3@33D98vs%`Jl@ zVIc9*&@-hVv``AC_k=Zzua>#*OV}IV0DEs|fQu&#>MZW#=EjCXJs|E-B?$5V zSLms?v%N0_=E-defjR@Uy}2cU+|TVH+#n!Gnp;vqQA$b?C}Zvm`9#p(si&!K8kn=U z5M(vsx6*es&E84#!|o4FKTm9dhKLB~5>X}Ny#4-bNQZ4!L;7!sI|^z6euJvihgP&? zI#)QCq@&j3z68?u^LQ_Ed(+4fOVx#c=8gLL^GWOQ=0)J)==oLd=;l@CLFi)ss#3B# zXc=uyMxqWh_`P^ZLZXh}dk?rrA|-I=$-SWr3V=G$@ezOolMwfR-dwmFVdT&&Kb~iomU)dxhv*xC1%SA%uC{7C$!t(Vxw-O#0J$Ac zdB_H#swwMzgkwfB>vTDui<8I!oLW;=Q3Yj!sIYUMgR_lORut#Z;x$WENE zDwQ8~O$vxM71X3xEN+a=mC9LUqD;Y9-7sU0O(~gj8{{*%1#y7($&UYblt%z;A>sbA z+u5#!rak{^qdJO(@}FGFIao_SI^pjuF^k$9W1QxXWxR>QO}d67;w~W+=lP2x^B19_eSA!NjBYm+P6<mC|ks6WLUF78cGwwfbQwk?^5Ff36Ei)4WM4jKBcvNUrQU+VL&9}8XkJMPbAum4JL<_+#=PbM*SENqv zmzHQRT=bA0r4j$#Qm zO2^+hopfPfc(js=pgF8_#3Ix=l30{}M>kFJ)w*s$LY1Mj3{rW=AGE(bf`h-urtR!9lF~ zJq`U}#$VK{3W4=el#UB6V&@gnU3#Mvhy6Y}cn?c~@Lc-tikr6!6h=g9AzZ&-VldA4-Bc30c8Hcg!oStWjAm85`y&T>mn3!t$ zqAxakM9MzFvY6VpPI&=(h%<&0>;}{v73HFcg4-kcMd|zdr@RhbDYqbtQ zsqu+lQD!NG)2+AiIv$~V$kVsgl8Ij@^dF>(1|Afe3M9av7JT$mtSp{i$SaCYyZX|` zyaemRKGh<4J)hkk8$ZKlscEc7e2bT-omXWdA;tda2Fi$w2ZO^ho@qD6sE|`B_@2x` z!6Hub3PSRkFAVi8h+EGe9*>0RNz3hwHU5P_AlU-avRh+2^I^>`uUza-Tbw{XZmzB# z>rbpG)gzle*Fr5n({gM)+pVcwT(uPiSv~*r6XdH%EI9g!7iqwv+FjBmx%pdUwpJy( z{12oJUs*41+M3nAViMqJr|a z`w=saMMHU<5v|!WTKv%Uol`Pa)~Ykv=g49yfYLb=5MIv4RmGw6Cl2JWYB1a0QSGCJ zlyR@JStCH+2}JogN&lE?Ct*IMZ~@?sWsk-HK;NU7D)OA&5%T#ZM4h8L(a2cZaOO=< zW$b`{Oc~-qfSEhU$6aygXx?`GjKBh+HN4sU)G_dtX9|6zR%>H5skYbEY$q{y*ZGTI z8NXT>%D6vb)&G0RE1nT9IM^~D3SgjOag0&I&3zyN)Qblj=6u(6YR+19dCZ#Z9=-qo z)yjOcF0ZL;=*HNnd%sSH=QnB@1*6Egj4Tm3g~AzpfKvDRwTF{_GvM+4jmgHpiNayg zns*+QkWj~Gb47_+BW8F^0Rs{;Sl^&Mt*8>?Rtwzf!vNnIP8QS#q9Swp?OS`e3f*v` z^V$m?jaY@c%S7YdncTq^qw%V%*Ci+3FsxQF7O{tZ9VU*=lWkLk2|cWp<~R#)kV58$ z;FLVde!B*_mP(LyCEjMog@*;_V>f&8PW!C(;99GD>bJXN3H)$+vLVnA^LZ>C%H;A6y@H^p|?*>|KLP73DM zUQ3Z-W**VE| zV6m|+bfY(Wfw9reO1#SNn=yb4*7fIxVd8y;)@w5*@qBz{hsQoo%{wmUi0qt${F=Fz z$~20ln02_!PJCOdnvWT{JH931#~)@&iGD<4l}Vr2*mKx$%Jv$MrC+kKS_+GmY$j3A zt%2f>LR+#9f`ev&kesaKo41jKB;ar|Kq0g~m>tnua^dT~K}-HKve^MFPTBKQ9TT9o zVS7s|C-msqFs6_{w2i;3`MF5+IWp1y#LMNbb)H*&hbQ1hRmAY0Z(K|actA9ZS^Bd? zrUKL+3gPML==eaa6HnyoI#FP1(@wg6oD_E}T6=;z)n{N#m-doJry=vcCtCj7ZJz9q zz!koGuVkzZ-x{X1Y})PLSibrfNAYrX!(sUL-)wS5QK4kdctO9H+=z>tu6~6ymf}Lo zZ+Fft!c2|rGQ>KZVzaXG4K@cugFa=NsGLe*-Ox0KzePUu+vklWp{sZKYe&8@MB{Xu z;*eD-$-e*7-*!+(UEQ3-})w}eX+Fpjt9{0by zA!HOYJ{Q8B9ZfEhI~YK3f>-ZgSIosP3;}Yzeklp;w1~b|dgd`C&pVF5-2x(xkwO$W zzN+a15!zp+wwJga&+K(^rKgOW;Rd5QKNz}j%c9fHnC|HB z!?U?=&tjD39s0h~S+r8qIQmCwFoA2|)0iPb(WSWfd5d$1qIYIm6H|;GgojtWFl!o| zvv-W=qGLRA@CA+}QH}6fue2vu{==S_wzis>n~ch};xd#(KlW|(5J+zMl#!A^aGke{ z2S$1jVt2W(tX#?HmTNIw9`jICjVE7D+0uy-Qt|oi=RE`Uc&y?uy%fy(GVR6`QtvUF z0^PNse<`9XZ-%j?erjGTvixv9U`wLkSP{s|Ly3$ z_4O8rkg@~?W^px~ii^eTeX0H`-tE6T(uGPU#pTibKqcq+l)O^D-G;9!_H9(v9-7Wq zZ#TTqA7qPD0skjIdBA*{jyygCIFlA(DGdxA+56Z_iB7#h(bLCG&( zco{RL>N(X~mBhF2B)qsQxxmnAb$wp0O>v7WuUPl6Qb{^Au5A8pjw^0$qok_ew9DDz z9B$a$E?>hcwK2`_3;ZxgC zdd^(Q2z$)kwszT?J~ZV;h#(5^AG_XehX1ch=YI>Of8?$=iAJ9B)&Yd#51^-Is9C9D H_n-d(<}D9c diff --git a/docs/assets/gui_registry.png b/docs/assets/gui_registry.png index 6be3d771336f166eeac08e0e2c79b5cb121dc0b2..d9a54ee467badbc945775834235f1dee2a90c44d 100644 GIT binary patch literal 10722 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 LRpdU&7zO_y)1;<1 literal 14660 zcmdsehdb5(|My!7W$%MTlw^-YGLluu%HG*q_8vLOh$JhSk&u-=vd6JQb~X`_9g=ZB z&-eHH1Mce{*L7cam(LaQIo|L0>-l^Q7T^=O#VjBoDtKE|fUn8imJC6d zk%ux;8eS>Cr#*G3#%A!hHtnBfKajU2qb8;|6ZRk%D&ZXeQX&(@-Br=Tv}vzTQN)h@HE7aS25M%#Q2gU1o}z;$AJ_Fw4c*PgFDk78s`{L`$MJT1Sb+!5rN z6&JMf&}L>iXBNpH(>q0M5?Rvy0v*GTxh8_5GgAuwzw~M56xw;@lO`GN`|;5G?}K7v zDQ!nSg*5p8GhOPAf1s$yx%u&JU!C`^iIWqlq@-lZ9aqd$-;>Dr7+s%8y+WF3CP~bn zwXqVXS&8G{PJ!sED&dchl3%2xTz0*cH}&D;N7MP1kk0PzmM8|{t%Jt1`j*NFz8*^GZlaycKolSXfw4 z{o>)^eEN#CRP;RM0Neqh1>=q|6B? zASWlcv?n)PchI^SOpb`Utsr;r-gQ3uHIje5C^jwaRkmVcru*9H)2B~^va_#?iHi@u zm&WJPuOw1Q6TA6mKb+vnlP4>KS@?DJ^-pYUE(!|^m)nhzaB3Bh;fEaU|K=olTA)|a zZEm=+v0<77FP2dKd$A+hY&chK>)=2>o-DrkkQjec>Mm}+|_k4nAv1~yaWk?3#1$V^KY{; zv0A0fvX7#NGrpVU;8}@6c=tqiJm{hs;a8Ld}ouWN5OGc)71+)HOW+fXm!1ogzW=IZK7*~6t<`l0i;gx6M3 zt;cV@bq}1^si}+(la+neCl6!U;;V~Jx3}h{(e8vyU*NlHjR7Z-qjZ9nMC9b+euuBA zE`^8$9v^OBzcS=G>#xl<3y*`MM^G!NZbxnP8w(5CD5SpLKgOc*^vJF^^)9UpE<%Qj zQ(-$2TwgElINK04Jgk8?fw{NZaW=BV9;6Xij z^e99wt2yER0tIrH}dSOmz9?C`RrMn zTUjv>DOEU3($GiArOcGu#Cj>6J9mz#$VpFEmwFrzgMvJgoK7N#4(6G zWzPQa0TuUmFg{ez@G>HmH7`Cg#n;GiF;+?*Grj#oe8{M^{hpTZP?NgxCw08UwB` z-n+{zJ>)T6Gajukh;7;r7GBR{@bU!vWcoG2x@>+$SLuteMy1ngWr9;hyEHoOev+NZ3Pe0}#IRk^DLbf^=bomrZPlFQQ*SGxA zeu8}0Z`=sAcW_X2Ur!dY)B2^z5~(R?$>`_3HHR}=Wccz0F~b5Tiecfnxbc*phlfXQ zN!WgzIgQQN%gY4nQFiqA^74z~h9iZPnFjwaUhnd%ymu|PYoJ9d?I+GnzH{vyolJJ5uXz=lAb-6(DJ+!06~G z0SO6B&cW|VE57k8&&?Te8F~4aLw@vqM)JkS^k#5_QAM)kelC|(iw(eRt8_w_tHJfzZ3PfVoc z;^I<;KlU|m#wRCRzkQ?VPZK|n9RK~9j`yCG`pOlO3O!ZVPI$&)vd3upLocoN-paD3l~6co7mxCW10=ER;*oY6rVXA8LydL9bKZF zD*8Y{funLPE-ucTZyKtRqOo0`3>V#RW@T<3*1tLZ#cKFPM7iHzm&2o@b6%$t+ZPCF znp#`W175UG)wntzA3B%F>*_*Bp&u`v{5xQXjF9x+!M&lJLY4!?YY@|CRxnk!V^SA* zCb9CDIl9>lP{1_l`E%UMcU(S<`&=@P^;Of=)m?C1?VEk|>J_hHpsts%FDnPfB{V)M zP4RD=3cVCj_e(EndF4V$80S`2!cI^Au?h&3-k;P;c`qFr(f=oB$OnEE6|bO(h)9O( z&#%-o5}0oE#D>}ByB=H#-1=;3UjzP(Xu~8@j5&{l__84bpEUCYjGcCOb|}(0sa|~H zNi8C9baW&jBy5G7A_v5l4kel2S?XC3s;#RNTc7?y>wB;v3#a%Qu$!V7-C*1IPDmPX zqW#J-%);&YP^NQyVo@7IIiye~z2D?8Mta_)u8B(?sRIM5=u((EvI*k;N99rzZEbCd zwm$(Qh=1MnKXS_(Eh{OxS*6nO_DxKT6x?E_&Cth~=;&xE2D{;0DH|Ib*`j}$Rcllg zOtMLmfeqC~Wo3fYR8*<~0S(Q+#Q?ClAE!oYvRT$+M9e$MhV!*mQqt~vI>xXzzzoA1 z%Kppc?mXlDlMy}WvUjcT%Dj5zohH|6KDQjS{hq3!ym|BH_0hBS3BfFK zhk9t=h<<2#?S;*+$A89*mju-7>?Z_p@$p$jL{RDe`?}#vYh%T{61*Gwwh>>XzSL1) zc|Oq?*x1ZKJv-cIxf2o- zLvhaIWjHTl@PtFxqOOSR5yb-QiDVG|`XlGgUQZ}7gXJxPJr93LKSeTp7HKXy7G~-O`>DoV>)3?ov^|A>tO-=XE z3?b6@?{7hWXStl7o*wS>@V2k6tXP*@51s>*dZwI1`E$)p^s3R`(FWn5fbwnns# z>Hf&94d<~2{A5OCWMncF6M3q=wlmcX3-zloU9mTMECMA@56!kq5%Tv|{b@QCw$wX2 zJ4D@30)&g0s8+a~cJKCShLxW`Z%CYNcQCd43Wayh9me5nYim2-s{ITPK*PE}zC=5- zPTtjMZ_@p1>RqePGX=V3N(n=@6}O(w-OF-%;q307tyQR}HuUjP*TlqxNfJOkUO^83{dHZmngQ}bJueq(X87YHhEKX> zY+dF8Sx%=n+1c55P&8M#F=zgE(SU>#OL z;Cgv`OTAZZYHr5i)+-M}qgxd#MyO!ix^2!FrYuX*?tdf;yEfb29`QjdA4u^{<+H=Z zXcWKcb2@$V0Al)EWQ~`&B_ytF)*qxL>9>vdojCpu?_;{^5XV6dMrtL~&brUC)AnEDb5#W*!vem=0K7q*j z2w%`2?{}41^;-i6!^^7Xh>tk^H+%N3WNA4zDd{0Fm}^c>PTO9QDE^kIKGOn&`afvi z_wV1MVDL0=HjCW7o8|N8*TAYiJUd>5g0LqS}1)3@O_|&TD!mvHwY9+-E8(HC@ z^{`HMDn>>|=eZ^v64`x>_Zphq>lAHRQc@z~v&X)_K7odTH4i7Nnm_Uss48&3K_DHG zm+zF0GZh8K{yjWw>ggebG4RyW6Tn`a&+2PRRe*U~ebUU)V;c-A)@MyV8+2>L|F&+; zoNDxlY%B=n-)F&<;`5}GS)z#yIbV|d^v8ht`fn|bL(nhF(iQ}ri6n9-U#U*3Ze8s{ z`F^1$xhF*yd2TQT=dXG*JF)bMbj}c6uT>;}Udt2q*e;@vf5acShAa}|o6V~ZuevQX z9?8#Va2cfW?|X1w4mb)`Vxwd_vT=Q}sCa-P41F(`^$fHp5JPi;D_fS4@k%*E?=v!x z3l}b^vQwFQth5eZHeyFTN)@%cMGw-Ho$C0XUS!F)*e>(W<>jDRgld z<2zJzW=nljH7z;cBKg^xn>$fv6qh6a*FROeiFO9`SRi$l^x5m2>hmrH)3WvS4T&uX=sR2N=j-R#^FR``wvY8C8g)l(WJJc1>yQtj!9qctP8a?dLH4u3=fwA zj_VAh8vPeLCZCluAuvIT$w@H6s!~!om`FM_%-`VxUCJ9OX+SPQtLxylz?ZrQ z5IP7l)1dk(4s`C@yPidK`i7_L>+4v(=PHb@f5EXNB)9M4u`w0ilgRtBpD@()NxjdX zmbjab5kxV8s~MyLXF*h?re(1q-}mp|?~~#F7kj}2{Sh1*iVuTp{`c=FelyG*%ohZy z(2Lq^_(u{&FLWPk3)tDc1VhFY=4v~MXo|Qm4S-v4aWSt32Q^&9K%KX%-`U9l)Em1? z{bZHXVyue9GZ<;uS6x~PA!n7F1KojjVsNGICEs>XD#{@ZrOSxiJ_zkBSmwVz84% ziVTbh+wx=JCM%OwyjVsE?W0j_#0dU|yn;f6+62%IXWy}6WBCUU2#$}BGgR66U_jb` zFNemzm#u!4le5R%mxYCenc$qcK$6IS%dg>^XrD(l-n(ocm6C$t`lYkgoBR5Ro12?O zymvkfo^nuKA_xuw<~Na>c6{u&UGcYrDGA$cd)DxELVga z5D;i{zl6_<*baRphAR&zxh!&zpPyewW;jQMX`5J0p-}6klL9y(R6l8HBL@cuKd7=3 zAb&Pz)7910!@}6PxuY+(pt1rx6OHo+x;j%;HiXU*p_0*@D&e3^LRwe z$Z)l@8Tzl?SP^v<7&12HMsjj^n)zCN=6p08Ho(+Th5veZ8^e0~flikihP1b}g)M=} zYh>!pk_mlFiF`6{Y!KN5es1~{SpRs29~c9=Iyz*CsMl78$Qe9S)8aKSZITB))E__2 z1LGDqsNrN^-#K93WPPld350W&JD|1-(%I5-->>!C5ECmQA)$hb3N7}TKp9>~hJiU| z{a$qwwFNacxVGLBLTKurmzRgPG(9!-AWtL0$^7WvnB73ev#znrf?9OJ+ZA6hxnmV} z+OfL;V!RSe!j36}E~KQS+X1&v#2tNrKmoQlS2|28jT$xv_#;i=>JcpiQlCe_stgB? zPgnR8fM%em1xrK4YTxJqeF9E*Bi9%A zH9RP++!5Q$B2Sx4l1|^*0%Xkp_@S|I%69D?gM+XR5W>RBx(zB5 zxd#B=_N)NxZ9^_5YU+^k@>{sLxEXV-c=N}tQns6!1OA_(& z^2S=M|Nf05)@b6WU}SVW+(xd(reCi5FR zXTiu|=~+2{M?#{Z?FcK8ezp@+QGXn?Mi8u4+6^UTBAN5vqAgNnl7Zg8MPPi=aLeW! zu7`&QTh&O0)Okd9Q&H`S2P=Ry z3Q9^GG16Wh!&(Fh`1f15q~J7)pPik+|7Z`#1QiL^4MN^LHb(0X@UF>_yE`Uof7I2ILTVZ9ikfF4!tUcxz+%$dMSYQhqm_5PFRA2hQ_girjjjeCZ1TTUJ zx>v^B{F;EE;QZWN5NIW4adAcf9;|zo_iM1~an@kd=xAlzPDr$GmE-hh@Kwq%npuGe0`;WI*KLej6I%x9mlwhc@bbib_HxHN;G24;sW3{#xF!7#pN21O&eXsB@ZlQLf3}jnmotPeL9PtZ7n9&JgJpv8H%VZ4(QNkfx?4flXdPQWDJB?%wL-ZMHeEG~aPa%T7_v zn%xB( zdA4n6B_o5`*&EC~6DzAwaNDt2Mbqx0wS|S|vIGC_oXN4|k%|y<&)&XZa0jS~{Y2@7 zAm@9(dX5oH0)VbYzGkqP05Qn$Oj*;z3M)bjCo= zA*8!;FdNtrLCuLEf|k8}cT89ag2yqu4TtAoc3XqrJ>!31m{khi=L=?nYX5(?wTg`# zT#^Ct&W?Xd_W02kYUgWl-*TF{40ZWd%)7LDy3`=weyoTQ%jl4%-Xy`7eyxPW#O?4B zk;`l7?amlh5#N0-Y%RjCHa5UwgyVFrRL;;7hzya#qXoO1f`bE%gny{90^P?8wX%bO zESATI+jv-rS3y8=57xS`t-!N(TN~y6Ug^L9q7>yPkiF%v31*oFqwf_!jytS_AMMw`m8Qj&nILC%(cBrVu9&a`(Zsk z2OE#hPBsJEEx?SSmV7t_5E^@+NfRLMx7|)F*8?@{Fn~!Gc1ox=Ua#qX%EXFqc2&E` z;41V1nzsBDutN%7h$_cvy4K>eBSdmBYu~}0^4+Z0{&B;2W2#0PgnUx!#?VZ78r z5$%v5gkqBLV;|K9m}BXQ--~Gi`V9yNUH|faARc_f5J`OFB;@6Cf8X9h@SA8WyAIxNqt7FqD#yP07Ft zbLM*~pJgn0PHm!LGA%4)XchZ0X#E--VBoiqeKcgUHPF2ic6tSN&6BOUW{3&|JzY`x z<-jKaHt;z)IYF>?nhSKAmkM|i8Q~qEdb&0n&t75A#efEKbC9$M`_RfwvtBU~RF9Oc zEk|&0FgDnNbXw_nSP9rdOKU4R6%}rj+<7J@rtP>mel2fjzJ&8IYoM+1q1WE>o8dvN z&CSgraM9p)FG5#t?d<`d#GUQIjN1jFOHz8@2@wL}hb;aQ7EEBs=;-TbNulvT74tys z-p0#j5~=AZcG!Z-*YMg3;m2@XC6NOsY0ktvlKDu+{SAj2j!Wr0)0VX z=i=q|Vn^%51RW&b5Hv_)wM;Fb5HXxN@YnhL;)Y;m0-Y}&+{hdlxG2c5pgHE?@?e_+ ztgt4ojycWJii-9SLfWTCdo~2YNXFq}LV7wc&+hJSD@?zu1m_kO7yD`$ilYF1Gc9@& zK37)0053wT$l&6fcl7q8Q)7D!t2~0h;~>Lro&!&V2x$WGxdk~^3s?>WTbN$IC(1&>3%HMT zPD~`Vw6s`Hlv>~hE%&FZ$jCq{Lx(0^91lWnvo&WbZrJF3$X)n*s84?Ag2@cLA?KE!e`*(Us`(Awcau-}I zkYMEWj&MbIDs352%Dx_`91ju`adY*}y85&%( zs^tn@noF+28Kv}hT&_W*Jl&YO19^M~h*!vF@DVQ`p9PQuojpD1`1tr{AJ{EIg5Wtl zX?cEe!Ox$paaBRo5rV^IhdDbAK|x9=zws(3CYWX*KA+uu{IRLOpA_c!E%xO9%KDn7 zrx{`D)BIdBP6qZPjLI!3E6abI>J?R2A&z+iTL~kq*!weHEO=acK1UH*em22A65Yt=2Sp zvgz4*=Y_V5Tt;;$$eG*0fask%8pB%I;C6*Wjm%+}E0SLAMbRN2l~W@Q551I9MX3Sh zMZkN7JsDV>v8vnsdY9nh#b)3JYV6C(w+&NvsJ6 zJ3E=shfs4#f>yaO8-RH|V)EZ3uW*`8g9Uby3$;tG1LW?OaZ)`Q1$Qut|3?eujAt{7#q*J5U+Rh0M35>`V|QR5t;=# zKGr0FB@3(N1WiX!cu!qi&LO?Y!lcm0ZQwr7FD#fYCzN!vT)%z+ndER4yKAUY%75UYjwP4eAWU! z=pdMmB(hqob&Ra%mU@9{F$Es;!#YwZDBN4N!vu}TJB09*`=-kkxWW7ex!ATf-}+va zeIW1gjfStC9M>h{Eh9BK{5T*gh$q8mHH&=slurQj7We=Bry8GT{c7CT5^9p0P`($z zbQAQX?3T^Ggb`lK5WpBY{pT9~w=#+U$yCG1obSqA4eKT3cJM65Nj|E{lt!0t$D_;k!o4 z*yktGCB(px0|Ekc%B{)E^&E6bdh{2gh~!*D}bUaT3t?!hGP^BhK3;-@HJ%oLN4#{pXI$;j>APj8M$Z`}YJD#s@$*p7kh^_=tzqMN1KN0q)=XlEE`Kv$nf zMG-^L{t8xWoONAX1mF%yU||XC-a*6z5eb4Qy}NZ0CNb4))Y+fnKq*Kc`1uE|86Yxgd1T7dkmav zxP1s&^egT2w*0wY!O9}E^dNMsa~gO*2$+?bkW_*vBAqJg-nIn3^fSFe48ZZD(Hhvl z#OC&Zce0KL(UPZ4V1AKNP^f?M0PC6zW^`6_-QyhPdEoP~(8lBJ4>>n%)v7zJ6-ryc zav`i1zSb-JI5lMe25!!eA3sX9b`@mhnXAIiwUChS#kZ1qabFT&5og1UpT932)0FGPSaO8C76wCieZMFWpx zarB*QdUng@$AfRyx8mNtQ$SX#W&>C&^bF@a-d|(5ZJz;R3}pA2HmoeuLnJ<3=N+4w znc3OV5!wK2q2E^Bu(<<}4{Y3^2J?)Z9M(c&VVm=0H~s7b2*e=>%DaGweEaqd2p^o; zUe}HE0qBAMa6}6WStxgw3cW|L<;GTHpbW+VFqd9;0tJV^J4*)42JdS~I_Y7uC=j?1cIAbuRk(Hn6fwy%%&Q4Fv&CH}>br}Kz zb|E26gWDeKI=^6z3!6H;yJf@j)oCCDr!PrRKIIe=fv)D}XSeOgRl8YLo#8Rv6c*8)OD2r(#MKSQx+_Sy(cmlVf4rLkg>5&;a&OX?ghv*t~T94)+Z5 zR1r8IP3t|TNN^PPHok1CtE!TLb6;}BpO50dIV5cH82{mEeBIKVJ7~Rf{C5|x!+fFb zKcmsP7DhL$2(dW(fWv$X_P@}guni=QJsBvKH(lm5Op!RM$V(x? zVPVkQ*!@%)8LS?Fk%?VYbzSb|za*Ef{tz-cSmq%>z&#F!it6^@K6S7dA~_f*%eRu9m?}k>Oo2-+dy8Es-EF53+#MgY`jp+i{9OQBe_H3;g&M zIG|w6;tEWx1)`Q*?f?Phw;g5&I@mNba|N1`-`m-k_x5cXU{E22g@uQ(*?1qorJ$ey zb|x-E&UP7?UK=n0ax$_YNbR)ejOy#a&fEJnLI_kr7$u?$@hhw;sn+|rV^ITUA(jLb zpR8gt^t&GGO|Yz^_X94f`WbAnU~P|J=D1IWFsVdSNm%7yfe8qs{0K^%fyR+P} znPeLV!vanU*rx5Ut81Kmm!0GL+8M2(!qFrJ@E54otBF0t39#LTkfDRZw!jcY?rCWy zsQH6Jv>wd7fQe?}E&3<=IDh1DB`bPvZSCdwxQ-YEhU1c!*p+MWXr#fLJcK&Hy$Hu&9vY94^?tZiaEuhZp%#@1%4ROL{Jt(jpnD3Qmo1u!iP zFzx<()wh0+L`6kgfLX&XKuai7K-k~ipV&p*_J+Upg)=KATw>#pL7WFpCvxY`dx+h_ zqN0SVxBNiNvd1eN{`&{EFRw1R>Yy8=q55B5&7-BD2>$$;4<04`$>2)-{&b@N_HMCT z=CCdqUY`ang%QIl zDF+f19ySd~MvFbUPd}HIE&zco(61ta#uZ-Sry$3ULh#F|eYN-lPyIma)73R2P2eh( z09ct$u7KSIsn&e5Q$sUQZY@f483^HitgJkM4CF&_@Hrni6zgBZ zc{1iAhxcW$&M9QSZm_n-B2b5cLhEX23C4*$^k&dxSh4-#VeAU<4$uhq z6|&#xRXK7eY>t<(f;x@@9}JtR@))uJt_oUx{QwOn3QI}eUS6si8dOlL(a<~AM|-Po zix^^2@11MjzP>~MrI*2FzzxD0ay~$yLNDf-K1IJy?o};4KHRR0Ftcmx_l?`WPj)EMPly7g)&$2i{9}!E691 zCx$ITYw*Rf0|oN^ytk>m=$7UOGE`TtC__230MGo-bkHjg183km448hppdG!?->MwW`3ig0t;2ZyKNQeib zhr{Os31gUrTok=52pB3@R)EtH_>=`P19s0c_79BinsHSQMZV>wr5Knh@LLtQ%s5bg z{=rTLjK;yk?Zum{tXboWCM5A!K_*dFb<)nZK8L^rKIF2bz+@~fEj`S#h%9l5dGqER z+>VZ}E^G(hV~f>1ym`jp9|iA(GWx$DGyc!Zmo`QGEM|hGK@tp#GU={1Y=vb<-9Av} z!^~WcziMpsse_#$_z>RRwWCVsvV>jHTD%~25B8qCD_`>O({Qk}^L5j>vM1VMmzv=u zmIkk2#`U>4ISB=lde^Pq^ZG@pF@?duT?#n|l>I)Sp?6g@|9%3jGd08VA*{!=+4E}` ztEr7r<4Pgq;lwaqVMk4sBOWGCFr3cR^fWkue>lGPpnO|@EG=CX5~7Bv>T^{U_8njb zJi-L+5hU`@!g32Z$zu+ITmtjGhdrUPvTYaw=H}+0d+{NH6HQe%2<6A@UA+<81tVq@t=jE`F zpMn^jCn3`P8mM=>38}QT7@fCy(VJA%FD}1{te=j!bl2v=yGhuA%N99?g}6)s+{_v5 rR~$oM`7z@!=Qhp$-?O8`&n|TN%i_O}enkrJa6}%;D$5kzHwpe9. +We have simple UI available at . This page should give +you a glimpse on what to expect before you try out the project. ## Navigation -For navigation you can use the navigation bar on the top left. +For navigation you can use the navigation menu on the top left. ![navigation](./assets/gui_navigation.png) ### Home -Currently nothing to see here. The goal is to display some -general information here. Links to documentation and important -news etc. +Start page with links and information. + +![home](./assets/gui_home.png) ### Ansible @@ -32,6 +33,6 @@ the container registry `registry.ublue.local`. ### About -Currently nothing to see here. The goal is to display some -information here about the software and versions used in this project -and maybe some acknowledgments etc. +If you are interested about software versions used etc. you can go to the about page. + +![about](./assets/gui_about.png)