From 991c9772fdb2fa54d6069be52b39c984407fa73c Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 15:43:41 -0500 Subject: [PATCH 01/50] Reenable bin/ caching --- .github/workflows/ci.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a1764265..630088a5 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -25,16 +25,16 @@ jobs: submodules: false # We'll handle submodules with smart caching fetch-depth: 0 - # - name: Cache bin - # id: cache-bin - # uses: actions/cache@v4 - # with: - # path: | - # bin - # key: bin-${{ hashFiles('Makefile') }}-v3 - # restore-keys: | - # bin-${{ hashFiles('Makefile') }}- - # bin- + - name: Cache bin + id: cache-bin + uses: actions/cache@v4 + with: + path: | + bin + key: bin-${{ hashFiles('Makefile') }}-v3 + restore-keys: | + bin-${{ hashFiles('Makefile') }}- + bin- - name: Download bin tools if: steps.cache-bin.outputs.cache-hit != 'true' From d0ab9cc02066ccfc3f1b3e26a6121218eb7204fe Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 17:40:00 -0500 Subject: [PATCH 02/50] Reenable python venv cache --- .github/workflows/ci.yaml | 18 +- Makefile | 2 +- pyproject.toml | 35 + requirements.txt | 9 - uv.lock | 2097 +++++++++++++++++++++++++++++++++++++ 5 files changed, 2142 insertions(+), 19 deletions(-) create mode 100644 pyproject.toml create mode 100644 uv.lock diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 630088a5..723e20ff 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -59,15 +59,15 @@ jobs: run: | make submodules - # - name: Cache python venv - # id: cache-python - # uses: actions/cache@v4 - # with: - # path: fprime-venv - # key: python-venv-${{ runner.os }}-${{ hashFiles('requirements.txt') }}-v3 - # restore-keys: | - # python-venv-${{ runner.os }}- - # python-venv- + - name: Cache python venv + id: cache-python + uses: actions/cache@v4 + with: + path: fprime-venv + key: python-venv-${{ runner.os }}-${{ hashFiles('uv.lock') }}-v3 + restore-keys: | + python-venv-${{ runner.os }}- + python-venv- - name: Setup python venv if: steps.cache-python.outputs.cache-hit != 'true' diff --git a/Makefile b/Makefile index 01518a86..b7d88496 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ fprime-venv: ## Create a virtual environment @$(MAKE) uv @echo "Creating virtual environment..." @$(UV) venv fprime-venv - @$(UV) pip install --requirement requirements.txt + @$(UV) pip install --requirement pyproject.toml .PHONY: zephyr-setup zephyr-setup: fprime-venv ## Set up Zephyr environment diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..62449629 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,35 @@ +[build-system] +requires = ["setuptools>=80.9.0", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "proves-core-reference" +version = "0.1.0" +description = "A reference software implementation for the PROVES Kit, integrating F Prime and Zephyr" +readme = "README.md" +license = {file = "LICENSE"} +requires-python = ">=3.13" +authors = [ + {name = "Open Source Space Foundation"}, +] +keywords = ["fprime", "zephyr", "embedded", "aerospace", "flight-software"] + +dynamic = ["dependencies"] + +[project.urls] +Homepage = "https://www.opensource.space/" +Repository = "https://github.com/Open-Source-Space-Foundation/proves-core-reference" +Documentation = "https://docs.proveskit.space/en/latest/" +Issues = "https://github.com/Open-Source-Space-Foundation/proves-core-reference/issues" + +[tool.setuptools] +packages = [] + +[tool.setuptools.dynamic] +dependencies = {file = [ + "requirements.txt", + "lib/fprime/requirements.txt", + "lib/zephyr-workspace/zephyr/scripts/requirements-base.txt", + "lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt", + "lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt", +]} diff --git a/requirements.txt b/requirements.txt index b3b08b46..0c5cf17d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,2 @@ -# Base on: -# -r https://raw.githubusercontent.com/nasa/fprime/refs/tags/v4.0.0a1/requirements.txt --r lib/fprime/requirements.txt - pip west -# Requirements files needed for building Zephyr -# Zephyr workflow requirements removed due to conflicts with F Prime --r lib/zephyr-workspace/zephyr/scripts/requirements-base.txt --r lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt --r lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..94e209ea --- /dev/null +++ b/uv.lock @@ -0,0 +1,2097 @@ +version = 1 +revision = 3 +requires-python = ">=3.13" +resolution-markers = [ + "platform_python_implementation != 'PyPy'", + "platform_python_implementation == 'PyPy'", +] + +[[package]] +name = "aniso8601" +version = "9.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cb/72/be3db445b03944bfbb2b02b82d00cb2a2bcf96275c4543f14bf60fa79e12/aniso8601-9.0.1.tar.gz", hash = "sha256:72e3117667eedf66951bb2d93f4296a56b94b078a8a95905a052611fb3f1b973", size = 47345, upload-time = "2021-03-02T01:33:22.944Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/04/e97c12dc034791d7b504860acfcdd2963fa21ae61eaca1c9d31245f812c3/aniso8601-9.0.1-py2.py3-none-any.whl", hash = "sha256:1d2b7ef82963909e93c4f24ce48d4de9e66009a21bf1c1e1c85bdd0812fe412f", size = 52754, upload-time = "2021-03-02T01:33:20.669Z" }, +] + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "anytree" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/a8/eb55fab589c56f9b6be2b3fd6997aa04bb6f3da93b01154ce6fc8e799db2/anytree-2.13.0.tar.gz", hash = "sha256:c9d3aa6825fdd06af7ebb05b4ef291d2db63e62bb1f9b7d9b71354be9d362714", size = 48389, upload-time = "2025-04-08T21:06:30.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/98/f6aa7fe0783e42be3093d8ef1b0ecdc22c34c0d69640dfb37f56925cb141/anytree-2.13.0-py3-none-any.whl", hash = "sha256:4cbcf10df36b1f1cba131b7e487ff3edafc9d6e932a3c70071b5b768bab901ff", size = 45077, upload-time = "2025-04-08T21:06:29.494Z" }, +] + +[[package]] +name = "appdirs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470, upload-time = "2020-05-11T07:59:51.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566, upload-time = "2020-05-11T07:59:49.499Z" }, +] + +[[package]] +name = "argcomplete" +version = "3.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/39/27605e133e7f4bb0c8e48c9a6b87101515e3446003e0442761f6a02ac35e/argcomplete-3.5.1.tar.gz", hash = "sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4", size = 82280, upload-time = "2024-10-07T04:00:39.242Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/be/a606a6701d491cfae75583c80a6583f8abe9c36c0b9666e867e7cdd62fe8/argcomplete-3.5.1-py3-none-any.whl", hash = "sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363", size = 43498, upload-time = "2024-10-07T04:00:36.986Z" }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "beartype" +version = "0.22.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/96/43ed27f27127155f24f5cf85df0c27fd2ac2ab67d94cecc8f76933f91679/beartype-0.22.2.tar.gz", hash = "sha256:ff3a7df26af8d15fa87f97934f0f6d41bbdadca971c410819104998dd26013d2", size = 1574491, upload-time = "2025-10-04T06:37:56.451Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/2a/a4773109619010192e72f48e95165b14790413a51f513c879c8d63f67e17/beartype-0.22.2-py3-none-any.whl", hash = "sha256:12077afe3528eba5c5b801f816712f7ff06f6da5509994c79561e29b48bcedb8", size = 1317280, upload-time = "2025-10-04T06:37:53.99Z" }, +] + +[[package]] +name = "binaryornot" +version = "0.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "chardet" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload-time = "2017-08-03T15:55:25.08Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload-time = "2017-08-03T15:55:31.23Z" }, +] + +[[package]] +name = "blinker" +version = "1.8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/57/a6a1721eff09598fb01f3c7cda070c1b6a0f12d63c83236edf79a440abcc/blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83", size = 23161, upload-time = "2024-05-06T17:04:10.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/2a/10164ed1f31196a2f7f3799368a821765c62851ead0e630ab52b8e14b4d0/blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01", size = 9456, upload-time = "2024-05-06T17:04:08.444Z" }, +] + +[[package]] +name = "boolean-py" +version = "5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload-time = "2025-04-03T10:39:49.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload-time = "2025-04-03T10:39:48.449Z" }, +] + +[[package]] +name = "brotli" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270, upload-time = "2023-09-07T14:05:41.643Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681, upload-time = "2024-10-18T12:32:34.942Z" }, + { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475, upload-time = "2024-10-18T12:32:36.485Z" }, + { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173, upload-time = "2024-10-18T12:32:37.978Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803, upload-time = "2024-10-18T12:32:39.606Z" }, + { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946, upload-time = "2024-10-18T12:32:41.679Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707, upload-time = "2024-10-18T12:32:43.478Z" }, + { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231, upload-time = "2024-10-18T12:32:45.224Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157, upload-time = "2024-10-18T12:32:46.894Z" }, + { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122, upload-time = "2024-10-18T12:32:48.844Z" }, + { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206, upload-time = "2024-10-18T12:32:51.198Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804, upload-time = "2024-10-18T12:32:52.661Z" }, + { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517, upload-time = "2024-10-18T12:32:54.066Z" }, +] + +[[package]] +name = "brotlicffi" +version = "1.1.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/9d/70caa61192f570fcf0352766331b735afa931b4c6bc9a348a0925cc13288/brotlicffi-1.1.0.0.tar.gz", hash = "sha256:b77827a689905143f87915310b93b273ab17888fd43ef350d4832c4a71083c13", size = 465192, upload-time = "2023-09-14T14:22:40.707Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/11/7b96009d3dcc2c931e828ce1e157f03824a69fb728d06bfd7b2fc6f93718/brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9b7ae6bd1a3f0df532b6d67ff674099a96d22bc0948955cb338488c31bfb8851", size = 453786, upload-time = "2023-09-14T14:21:57.72Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e6/a8f46f4a4ee7856fbd6ac0c6fb0dc65ed181ba46cd77875b8d9bbe494d9e/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b", size = 2911165, upload-time = "2023-09-14T14:21:59.613Z" }, + { url = "https://files.pythonhosted.org/packages/be/20/201559dff14e83ba345a5ec03335607e47467b6633c210607e693aefac40/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814", size = 2927895, upload-time = "2023-09-14T14:22:01.22Z" }, + { url = "https://files.pythonhosted.org/packages/cd/15/695b1409264143be3c933f708a3f81d53c4a1e1ebbc06f46331decbf6563/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84763dbdef5dd5c24b75597a77e1b30c66604725707565188ba54bab4f114820", size = 2851834, upload-time = "2023-09-14T14:22:03.571Z" }, + { url = "https://files.pythonhosted.org/packages/b4/40/b961a702463b6005baf952794c2e9e0099bde657d0d7e007f923883b907f/brotlicffi-1.1.0.0-cp37-abi3-win32.whl", hash = "sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb", size = 341731, upload-time = "2023-09-14T14:22:05.74Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fa/5408a03c041114ceab628ce21766a4ea882aa6f6f0a800e04ee3a30ec6b9/brotlicffi-1.1.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:994a4f0681bb6c6c3b0925530a1926b7a189d878e6e5e38fae8efa47c5d9c613", size = 366783, upload-time = "2023-09-14T14:22:07.096Z" }, +] + +[[package]] +name = "canopen" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-can" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/be/ea/f2654cb432988dfe9ab93140ff502f7e2e7eaa1835e8aaa4ee5a935af736/canopen-2.4.1.tar.gz", hash = "sha256:20a84bc498b34dadd79cece467d3bbe19591c1c02a8f39331bcc6065c4d8b2eb", size = 111357, upload-time = "2025-08-05T11:11:39.476Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/d3/386a7814c6d3f4209350067ec6ae9618ac7bd1807df244855362d221f263/canopen-2.4.1-py3-none-any.whl", hash = "sha256:651dfb189978fb9083f491128e9fb8cb0e85dc8ccb82b12dd7139236d0080b77", size = 67200, upload-time = "2025-08-05T11:11:38.031Z" }, +] + +[[package]] +name = "capstone" +version = "4.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/ae/21dbb3ccc30d5cc9e8cdd8febfbf5d16d93b8c10e595280d2aa4631a0d1f/capstone-4.0.2.tar.gz", hash = "sha256:2842913092c9b69fd903744bc1b87488e1451625460baac173056e1808ec1c66", size = 2041850, upload-time = "2020-05-11T02:27:44.317Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/97/37525c59c550fa6b1aeddb691930a4f08a5cf22d10ee4054e7edfc740086/capstone-4.0.2-py2.py3-none-manylinux1_i686.whl", hash = "sha256:da442f979414cf27e4621e70e835880878c858ea438c4f0e957e132593579e37", size = 2070383, upload-time = "2020-05-11T02:27:58.873Z" }, + { url = "https://files.pythonhosted.org/packages/38/85/647d512c2c2e2981d6f4c70ed41c5ec3d8d6f06cc9c9dd63348e8e6a21a3/capstone-4.0.2-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:9d1a9096c5f875b11290317722ed44bb6e7c52e50cc79d791f142bce968c49aa", size = 2131589, upload-time = "2020-05-11T02:28:07.61Z" }, + { url = "https://files.pythonhosted.org/packages/96/43/dc828bd651b8b4ead0aeb2b449141dc31367aced94c0804d2cc4ac02d9e7/capstone-4.0.2-py2.py3-none-win32.whl", hash = "sha256:c3d9b443d1adb40ee2d9a4e7341169b76476ddcf3a54c03793b16cdc7cd35c5a", size = 881229, upload-time = "2020-05-11T02:28:35.393Z" }, + { url = "https://files.pythonhosted.org/packages/6a/71/d409f50f7cf7235513f3e636bb1aeb53d729106c1c77495c48fc09c41a54/capstone-4.0.2-py2.py3-none-win_amd64.whl", hash = "sha256:0d65ffe8620920976ceadedc769f22318f6f150a592368d8a735612367ac8a1a", size = 896423, upload-time = "2020-05-11T02:28:31.222Z" }, +] + +[[package]] +name = "cbor" +version = "1.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/99/01c6a987c920500189eb74a291bd3a388e6c7cf85736bb6b066d9833315e/cbor-1.0.0.tar.gz", hash = "sha256:13225a262ddf5615cbd9fd55a76a0d53069d18b07d2e9f19c39e6acb8609bbb6", size = 20096, upload-time = "2016-02-09T23:11:12.726Z" } + +[[package]] +name = "certifi" +version = "2024.8.30" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507, upload-time = "2024-08-30T01:55:04.365Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321, upload-time = "2024-08-30T01:55:02.591Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload-time = "2023-08-01T19:23:02.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload-time = "2023-08-01T19:23:00.661Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620, upload-time = "2024-10-09T07:40:20.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617, upload-time = "2024-10-09T07:39:07.317Z" }, + { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310, upload-time = "2024-10-09T07:39:08.353Z" }, + { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126, upload-time = "2024-10-09T07:39:09.327Z" }, + { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342, upload-time = "2024-10-09T07:39:10.322Z" }, + { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383, upload-time = "2024-10-09T07:39:12.042Z" }, + { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214, upload-time = "2024-10-09T07:39:13.059Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104, upload-time = "2024-10-09T07:39:14.815Z" }, + { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255, upload-time = "2024-10-09T07:39:15.868Z" }, + { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251, upload-time = "2024-10-09T07:39:16.995Z" }, + { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474, upload-time = "2024-10-09T07:39:18.021Z" }, + { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849, upload-time = "2024-10-09T07:39:19.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781, upload-time = "2024-10-09T07:39:20.397Z" }, + { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970, upload-time = "2024-10-09T07:39:21.452Z" }, + { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973, upload-time = "2024-10-09T07:39:22.509Z" }, + { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308, upload-time = "2024-10-09T07:39:23.524Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446, upload-time = "2024-10-09T07:40:19.383Z" }, +] + +[[package]] +name = "clang-format" +version = "20.1.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/e5/6560d6466378597f76292a6f54702dcf8a3746edfbd5fbdcb54b12e9ac46/clang_format-20.1.8.tar.gz", hash = "sha256:8ebd717257d8c7daf6bb1f703a4024f009a58941723eeb0d92ec493ce26aa520", size = 11500, upload-time = "2025-07-10T11:40:06.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/cd/6dab2c15bb2f13ad13015fb92eda0b49b3bd866153072e4d9796f7b220e4/clang_format-20.1.8-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:e9422bc81b3bea6c0ee773662fbe3bfd8a9479ae70e59008095dfae7001c5a84", size = 1429486, upload-time = "2025-07-10T11:39:38.665Z" }, + { url = "https://files.pythonhosted.org/packages/d8/4c/3efe4fe6910e1e00dcec0c8d9ef715164500f043e9911bdf253370ff917b/clang_format-20.1.8-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:c0cf62720247a7dd1e2d610816a2f7d7016433f9c2869880cba655449bd09616", size = 1400840, upload-time = "2025-07-10T11:39:40.516Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c3/af601563d3bfa4c514406347c13dc639f984df7c9e13df3a0adf3a650fc9/clang_format-20.1.8-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4f998e5c19e10f69b87af6991ccb14db934b5fa36fd28c7dbfc17dee957007f4", size = 1777504, upload-time = "2025-07-10T11:39:42.266Z" }, + { url = "https://files.pythonhosted.org/packages/06/60/7c2ff3019599ad985d0a61f74ba8226d538c72485b0e3d25b1899601a9f5/clang_format-20.1.8-py2.py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34de32fe53452a07497793d5faf3fd03f7cf8b960b915417471ae81227461a39", size = 1692081, upload-time = "2025-07-10T11:39:43.67Z" }, + { url = "https://files.pythonhosted.org/packages/99/74/956bc5455ce102767805b2eafcada0de003c391adb8299222432091af309/clang_format-20.1.8-py2.py3-none-manylinux_2_27_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1397b1b700ee78af73b14c5d65ad777c570c79a175c220768056fbcb7afed113", size = 1987169, upload-time = "2025-07-10T11:39:45.465Z" }, + { url = "https://files.pythonhosted.org/packages/70/3f/0c141c391a0d4bd4012758f68a27ddc1db8b48814f96eb459417e197124a/clang_format-20.1.8-py2.py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e195b5f6b79d89d42d4094d103f0a4f47ff3997d6474811622b95ab596f01fd2", size = 2005960, upload-time = "2025-07-10T11:39:47.163Z" }, + { url = "https://files.pythonhosted.org/packages/a6/77/786aa0fc8a75d8ce94966bb33e44c63fec1964cbf343ee862ed6a5be38c1/clang_format-20.1.8-py2.py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6bcb7e01ba4f05a4c980fda147b330f7e4833c2aea8c92a0c2df9573ae7afe", size = 1777063, upload-time = "2025-07-10T11:39:48.962Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/79cc55d7a64f3798a044c1f12c288048c6551af834700ac2ed1204c1181d/clang_format-20.1.8-py2.py3-none-manylinux_2_31_armv7l.whl", hash = "sha256:d99a5f3d7a252ab762ed79bc2a271a63fe593ae2e2565ce287835c00ce13c37e", size = 1626598, upload-time = "2025-07-10T11:39:50.468Z" }, + { url = "https://files.pythonhosted.org/packages/cf/a2/913509f0e845b2beb0d298a9ec78c230a3a1f659c6928f990e84b842da4a/clang_format-20.1.8-py2.py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0a687c6efd7708227eafec37e98143e0b4b7dbeca82ff8e1de110d434f4e63ac", size = 2689936, upload-time = "2025-07-10T11:39:52.08Z" }, + { url = "https://files.pythonhosted.org/packages/0e/29/7cb26c5884040d4cb2f1e3ece6d37ebaf318d7cd281339affc94d1a9803c/clang_format-20.1.8-py2.py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d6491195d8edc788de8abfaea30b78ff74ad3f5ee89653cd0a27a4af4feb1317", size = 2462082, upload-time = "2025-07-10T11:39:53.73Z" }, + { url = "https://files.pythonhosted.org/packages/6a/55/11ba71667856abfc7872c33e71b15c551d2d0fc3ef86ef73f92a46b2749c/clang_format-20.1.8-py2.py3-none-musllinux_1_2_i686.whl", hash = "sha256:9ceae6a1fbd594ec2a31157997378b70df42273795a0177be0725a4e96336231", size = 2927834, upload-time = "2025-07-10T11:39:55.264Z" }, + { url = "https://files.pythonhosted.org/packages/e6/71/496d2bafcb03b16a6fff25e73dcbe5aedcf68dd138580022b3114a3f7a84/clang_format-20.1.8-py2.py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:941396455b529ca130fae24d6d95bdf9a236d2ad22318991090d0b7ae53d236a", size = 3054954, upload-time = "2025-07-10T11:39:56.823Z" }, + { url = "https://files.pythonhosted.org/packages/d5/b9/8e5595a8d301c9695802664e4e00548a4c88a9fb6e434aac43e4778f06e1/clang_format-20.1.8-py2.py3-none-musllinux_1_2_s390x.whl", hash = "sha256:8dbbdfce85bdde675dee98fdbcddee445e6a9492b2a2b04afabfd33525be5642", size = 3159351, upload-time = "2025-07-10T11:39:58.95Z" }, + { url = "https://files.pythonhosted.org/packages/51/50/d385c1eb678061a18ab1de198e8400bb8c69003ec54fd4220f1c34ea6c46/clang_format-20.1.8-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:abc1b72f42db5db695d539b0a1b3cc3c125dfaa9c5baea0a94a3a2d6d1e50c1f", size = 2809188, upload-time = "2025-07-10T11:40:00.797Z" }, + { url = "https://files.pythonhosted.org/packages/a7/2d/e02502cd8c845f0b3e17c556648fd481aca0d77935adf8684cda5e4293e5/clang_format-20.1.8-py2.py3-none-win32.whl", hash = "sha256:635b57361fa3caeb9449aa62584d7cd38fbee81dbf3addd6b1d7c377eb34e766", size = 1261819, upload-time = "2025-07-10T11:40:02.194Z" }, + { url = "https://files.pythonhosted.org/packages/bd/ee/656287efdf58dccc7a7299fab547fe1313b49ca1ea1607ea475b262d640f/clang_format-20.1.8-py2.py3-none-win_amd64.whl", hash = "sha256:346ac8cab571eaba4d6b89dfa30fdbbc512db82a66ab0eeb1763cacc5977e325", size = 1414174, upload-time = "2025-07-10T11:40:03.701Z" }, + { url = "https://files.pythonhosted.org/packages/8b/27/71cd96599d47229bd819dcc0c688a859764bb1b4960a23b8a75f8558c044/clang_format-20.1.8-py2.py3-none-win_arm64.whl", hash = "sha256:d18b7b69697e97b6917a69f4bf48bf94e3827b016b491c90dd0f6ab917e37cf9", size = 1319592, upload-time = "2025-07-10T11:40:05.441Z" }, +] + +[[package]] +name = "click" +version = "8.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121, upload-time = "2023-08-17T17:29:11.868Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941, upload-time = "2023-08-17T17:29:10.08Z" }, +] + +[[package]] +name = "cmake" +version = "3.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/f3/9d425d6c1695229e2d7690e9300b646ac04e6b869c73e47f0a29869e2a01/cmake-3.26.0.tar.gz", hash = "sha256:c18185c9cc147d0fa1e9228962aa37901b37866bd5d617e9efa23dfe706f7321", size = 35248, upload-time = "2023-03-15T18:01:32.261Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/ef/d086c658b47d19b738850579c9ecc05c6730b8afdbb05402fae6ab52c45f/cmake-3.26.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:4881727389325af84e39f1ec646b7249d8910b4ed637205bee6d589cb2b2ebd2", size = 45571303, upload-time = "2023-03-15T18:00:37.789Z" }, + { url = "https://files.pythonhosted.org/packages/41/3d/2e80cec75640cfa1f5472e48cd1b449b639b5ad758f8c27d116016571d15/cmake-3.26.0-py2.py3-none-manylinux2010_i686.manylinux_2_12_i686.whl", hash = "sha256:babd1e38c85d38a4bf4164c3126ec8cf4cd8d374072e2a4a181e52e953007f8c", size = 23840971, upload-time = "2023-03-15T18:00:41.648Z" }, + { url = "https://files.pythonhosted.org/packages/17/5a/72a3454e31b93d5718a97e3188536849f91993a9783c301a8101b7400c45/cmake-3.26.0-py2.py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:1851be29d79bb39505954165e934d31994268d49f566ead6fff840a5092e444d", size = 23099061, upload-time = "2023-03-15T18:00:44.508Z" }, + { url = "https://files.pythonhosted.org/packages/39/6a/e6bfa8b78b876184c1afbb7b7a51a6b1335b00c6a3242b1e12eecce81649/cmake-3.26.0-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:483aaaeb9535deaa2657c928af5d9f0da9329f89bc249f494923495745a03677", size = 23349012, upload-time = "2023-03-15T18:00:49.028Z" }, + { url = "https://files.pythonhosted.org/packages/40/a8/c4f955335e0e2f11a02f29de9a80155d1c371d127ff114ee350428731b97/cmake-3.26.0-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:2f78c6194f224d462333e08d3acd571c553b58d04935971b87efbe76f241353c", size = 24962093, upload-time = "2023-03-15T18:00:52.015Z" }, + { url = "https://files.pythonhosted.org/packages/83/d3/f8be62be2274c178d50baa9751525d1da07c3d10518190f3751f49daa25e/cmake-3.26.0-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:cf129c8b71f1344975f179f30287baa8804c4c61ff1b13003244b4157b676e13", size = 26547027, upload-time = "2023-03-15T18:00:55.581Z" }, + { url = "https://files.pythonhosted.org/packages/e6/8e/0050c372bfcd0975494d70d685b298fcf6367ff67af5dee1f5ac2c516cdb/cmake-3.26.0-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fabb82c69223eda27e673c5c6bb02985d60cf0baa631a2e4932eed87e8229928", size = 23164328, upload-time = "2023-03-15T18:00:58.973Z" }, + { url = "https://files.pythonhosted.org/packages/30/73/8cf2dcf5715824fe147b411f03d6d0144248e7bb0e3a1de4fd1824f8efa0/cmake-3.26.0-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502cbed2335557920b88687c6f3ff4ce433bd416204c928ad489e399e76149f5", size = 24000320, upload-time = "2023-03-15T18:01:02.21Z" }, + { url = "https://files.pythonhosted.org/packages/38/2c/ecf580d95b1743042e6084fc7a0b3d5b8a77e3792564b48df83788652516/cmake-3.26.0-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:b81c7775b125786c1696232078e9ceb0c9c66d26fb0a2259f40e33983170f924", size = 24133935, upload-time = "2023-03-15T18:01:05.845Z" }, + { url = "https://files.pythonhosted.org/packages/24/b1/bdbfd6b7cf788ab78b5acadd8245dcf189effe9c68272dc59ebd0bd6304b/cmake-3.26.0-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:f4cc1dde7613cc813d15fd840a33e18cd07a443aa67205d74b9b05f55f08a459", size = 27125333, upload-time = "2023-03-15T18:01:09.335Z" }, + { url = "https://files.pythonhosted.org/packages/15/c3/0446b15fae151a7f372c3f88c789f755f46907cc07f8f62211ca21325573/cmake-3.26.0-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:ac6ca9d9ff58900138bbbebc55857647fb99f1c40b84d8a232f23b0d27d7f48a", size = 27892795, upload-time = "2023-03-15T18:01:12.357Z" }, + { url = "https://files.pythonhosted.org/packages/0f/91/547b5b32fae409195cbb6bfd8e400ff1ffda3f174f154fc98cf1048c3807/cmake-3.26.0-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:85e0bad5aeb3a82919ed7d78b76a0462eafe2f918076a1823a09c6f37910f3e0", size = 24152041, upload-time = "2023-03-15T18:01:16.213Z" }, + { url = "https://files.pythonhosted.org/packages/4c/94/469061ba9d2025eecca4c40a4829c220d68acc85dca70b025d73aa14f1a8/cmake-3.26.0-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:5523b9701be367572155e77294bf8aa3ac9aa0d73c50dcd6c57903d12bcb308e", size = 25492616, upload-time = "2023-03-15T18:01:19.356Z" }, + { url = "https://files.pythonhosted.org/packages/1d/0a/8211fe8ef07d4c89d64af35367d71696ed584480fea926a53f2a59e00b92/cmake-3.26.0-py2.py3-none-win32.whl", hash = "sha256:96f0e887260255eeb83bcf3465d51bc6c94078251c9312fa142dce6d3e80acac", size = 29597885, upload-time = "2023-03-15T18:01:22.502Z" }, + { url = "https://files.pythonhosted.org/packages/22/80/ef79cbc1aab3de2da49aee6225a73609c0dbc1dec80c0daa4dbdfb9ce894/cmake-3.26.0-py2.py3-none-win_amd64.whl", hash = "sha256:a0719a6f79cdc4d7b16caf757b8ae13eae1c6ce5a08d594cc09774afe129515d", size = 32958243, upload-time = "2023-03-15T18:01:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/d1/51/c016d42094e9d8495ecb6c5d15857d5e9702fb1969a16848a87ef190fe8d/cmake-3.26.0-py2.py3-none-win_arm64.whl", hash = "sha256:11159c9b64c6473d84361ab44ef2c85e1bd2db7a2b1b798ce8bf5988f32adf43", size = 29597889, upload-time = "2023-03-15T18:01:30.26Z" }, +] + +[[package]] +name = "cmsis-pack-manager" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appdirs" }, + { name = "cffi" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/df/07336875bb9a51053eb671b3d6046b23552eb9e9301b917336b0f392a82b/cmsis_pack_manager-0.6.0.tar.gz", hash = "sha256:94913a3db9695f8d0676a4a74916a5626984e2b46f923ada61881e4f5064079e", size = 67773, upload-time = "2025-06-27T02:42:59.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/9b/a9eafbafc92d56902b963d10e4c72c2b23598fd609caaf0087ed39a9b12f/cmsis_pack_manager-0.6.0-py3-none-linux_armv6l.whl", hash = "sha256:2c540ae648479ca91487585ca7cbda830fa7a1b9244a7b20765510231cd3c91a", size = 3484862, upload-time = "2025-06-27T02:36:14.167Z" }, + { url = "https://files.pythonhosted.org/packages/de/b2/970a9ddaebd82712d496ae2ba98176edf531be16b1b6abb46e3088ceebdb/cmsis_pack_manager-0.6.0-py3-none-macosx_10_12_universal2.whl", hash = "sha256:4b912d77b5a13146c936a87673a840ccdbf7305fa0a21414cde74709c246c052", size = 4122951, upload-time = "2025-06-27T02:36:15.893Z" }, + { url = "https://files.pythonhosted.org/packages/46/85/66f9839456e1c240a1f55594faf7efced1054bad5c2137326f4bc6f7ef5e/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f734bf40b19103222716ab4920da78e5af37777a19769e920472218146f7f2e3", size = 3770533, upload-time = "2025-06-27T02:36:17.335Z" }, + { url = "https://files.pythonhosted.org/packages/78/a1/217310c633609bfde6a8553222295b08e6f50c99f347cb3bb6d556a74ae0/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c073b93db44c86cb27b60dc98d42b54c3fd84be479979657def094c5da342c36", size = 3413476, upload-time = "2025-06-27T02:36:18.827Z" }, + { url = "https://files.pythonhosted.org/packages/a2/87/83a3e0bcd0a75110488842526637f22fadcb7dae6b8a9afb848115141280/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3b48ea644034acda9bd2a6afe9f89f4d6b67ee28fe5800a25dbb51e179310b5c", size = 3462120, upload-time = "2025-06-27T02:36:20.337Z" }, + { url = "https://files.pythonhosted.org/packages/75/29/c65da965f9b60f2d470f01020a5cab8e8abe5113f4b22ecaadcfba22fa44/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8c0a2cb8790168496df493eb178215a8b638d5d9c2176289764da0686ec7fd", size = 3666217, upload-time = "2025-06-27T02:36:21.882Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c4/619a3e979666fa640bdb5333f6782bf709962c39da0770fdadb4f8d51652/cmsis_pack_manager-0.6.0-py3-none-win32.whl", hash = "sha256:8e3830566ee7b2f596f538b58e42500b7dffdfe18ce0b543b07c2715ad7734f5", size = 1520643, upload-time = "2025-06-27T02:36:24.766Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7e/547624bf371eeaeae6370ed754bebbafbbf114a2d7dfc372c4e5a7ff3ded/cmsis_pack_manager-0.6.0-py3-none-win_amd64.whl", hash = "sha256:53fc43ae474905d107889681c5829ea90b6211d139794fa3f8691c9b0da3bb85", size = 1795914, upload-time = "2025-06-27T02:36:23.25Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "colorlog" +version = "6.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/38/2992ff192eaa7dd5a793f8b6570d6bbe887c4fbbf7e72702eb0a693a01c8/colorlog-6.8.2.tar.gz", hash = "sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44", size = 16529, upload-time = "2024-01-26T13:59:28.628Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/18/3e867ab37a24fdf073c1617b9c7830e06ec270b1ea4694a624038fc40a03/colorlog-6.8.2-py3-none-any.whl", hash = "sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33", size = 11357, upload-time = "2024-01-26T13:59:27.064Z" }, +] + +[[package]] +name = "cookiecutter" +version = "2.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, + { name = "binaryornot" }, + { name = "click" }, + { name = "jinja2" }, + { name = "python-slugify" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "rich" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/17/9f2cd228eb949a91915acd38d3eecdc9d8893dde353b603f0db7e9f6be55/cookiecutter-2.6.0.tar.gz", hash = "sha256:db21f8169ea4f4fdc2408d48ca44859349de2647fbe494a9d6c3edfc0542c21c", size = 158767, upload-time = "2024-02-21T18:02:41.949Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b6/d9/0137658a353168ffa9d0fc14b812d3834772040858ddd1cb6eeaf09f7a44/cookiecutter-2.6.0-py3-none-any.whl", hash = "sha256:a54a8e37995e4ed963b3e82831072d1ad4b005af736bb17b99c2cbd9d41b6e2d", size = 39177, upload-time = "2024-02-21T18:02:39.569Z" }, +] + +[[package]] +name = "coverage" +version = "7.10.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704, upload-time = "2025-09-21T20:03:56.815Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/94/b765c1abcb613d103b64fcf10395f54d69b0ef8be6a0dd9c524384892cc7/coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d", size = 218320, upload-time = "2025-09-21T20:01:56.629Z" }, + { url = "https://files.pythonhosted.org/packages/72/4f/732fff31c119bb73b35236dd333030f32c4bfe909f445b423e6c7594f9a2/coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b", size = 218575, upload-time = "2025-09-21T20:01:58.203Z" }, + { url = "https://files.pythonhosted.org/packages/87/02/ae7e0af4b674be47566707777db1aa375474f02a1d64b9323e5813a6cdd5/coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e", size = 249568, upload-time = "2025-09-21T20:01:59.748Z" }, + { url = "https://files.pythonhosted.org/packages/a2/77/8c6d22bf61921a59bce5471c2f1f7ac30cd4ac50aadde72b8c48d5727902/coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b", size = 252174, upload-time = "2025-09-21T20:02:01.192Z" }, + { url = "https://files.pythonhosted.org/packages/b1/20/b6ea4f69bbb52dac0aebd62157ba6a9dddbfe664f5af8122dac296c3ee15/coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49", size = 253447, upload-time = "2025-09-21T20:02:02.701Z" }, + { url = "https://files.pythonhosted.org/packages/f9/28/4831523ba483a7f90f7b259d2018fef02cb4d5b90bc7c1505d6e5a84883c/coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911", size = 249779, upload-time = "2025-09-21T20:02:04.185Z" }, + { url = "https://files.pythonhosted.org/packages/a7/9f/4331142bc98c10ca6436d2d620c3e165f31e6c58d43479985afce6f3191c/coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0", size = 251604, upload-time = "2025-09-21T20:02:06.034Z" }, + { url = "https://files.pythonhosted.org/packages/ce/60/bda83b96602036b77ecf34e6393a3836365481b69f7ed7079ab85048202b/coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f", size = 249497, upload-time = "2025-09-21T20:02:07.619Z" }, + { url = "https://files.pythonhosted.org/packages/5f/af/152633ff35b2af63977edd835d8e6430f0caef27d171edf2fc76c270ef31/coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c", size = 249350, upload-time = "2025-09-21T20:02:10.34Z" }, + { url = "https://files.pythonhosted.org/packages/9d/71/d92105d122bd21cebba877228990e1646d862e34a98bb3374d3fece5a794/coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f", size = 251111, upload-time = "2025-09-21T20:02:12.122Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9e/9fdb08f4bf476c912f0c3ca292e019aab6712c93c9344a1653986c3fd305/coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698", size = 220746, upload-time = "2025-09-21T20:02:13.919Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b1/a75fd25df44eab52d1931e89980d1ada46824c7a3210be0d3c88a44aaa99/coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843", size = 221541, upload-time = "2025-09-21T20:02:15.57Z" }, + { url = "https://files.pythonhosted.org/packages/14/3a/d720d7c989562a6e9a14b2c9f5f2876bdb38e9367126d118495b89c99c37/coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546", size = 220170, upload-time = "2025-09-21T20:02:17.395Z" }, + { url = "https://files.pythonhosted.org/packages/bb/22/e04514bf2a735d8b0add31d2b4ab636fc02370730787c576bb995390d2d5/coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c", size = 219029, upload-time = "2025-09-21T20:02:18.936Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/91128e099035ece15da3445d9015e4b4153a6059403452d324cbb0a575fa/coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15", size = 219259, upload-time = "2025-09-21T20:02:20.44Z" }, + { url = "https://files.pythonhosted.org/packages/8b/51/66420081e72801536a091a0c8f8c1f88a5c4bf7b9b1bdc6222c7afe6dc9b/coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4", size = 260592, upload-time = "2025-09-21T20:02:22.313Z" }, + { url = "https://files.pythonhosted.org/packages/5d/22/9b8d458c2881b22df3db5bb3e7369e63d527d986decb6c11a591ba2364f7/coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0", size = 262768, upload-time = "2025-09-21T20:02:24.287Z" }, + { url = "https://files.pythonhosted.org/packages/f7/08/16bee2c433e60913c610ea200b276e8eeef084b0d200bdcff69920bd5828/coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0", size = 264995, upload-time = "2025-09-21T20:02:26.133Z" }, + { url = "https://files.pythonhosted.org/packages/20/9d/e53eb9771d154859b084b90201e5221bca7674ba449a17c101a5031d4054/coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65", size = 259546, upload-time = "2025-09-21T20:02:27.716Z" }, + { url = "https://files.pythonhosted.org/packages/ad/b0/69bc7050f8d4e56a89fb550a1577d5d0d1db2278106f6f626464067b3817/coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541", size = 262544, upload-time = "2025-09-21T20:02:29.216Z" }, + { url = "https://files.pythonhosted.org/packages/ef/4b/2514b060dbd1bc0aaf23b852c14bb5818f244c664cb16517feff6bb3a5ab/coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6", size = 260308, upload-time = "2025-09-21T20:02:31.226Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/7ba2175007c246d75e496f64c06e94122bdb914790a1285d627a918bd271/coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999", size = 258920, upload-time = "2025-09-21T20:02:32.823Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/fac9f7abbc841409b9a410309d73bfa6cfb2e51c3fada738cb607ce174f8/coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2", size = 261434, upload-time = "2025-09-21T20:02:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/ee/51/a03bec00d37faaa891b3ff7387192cef20f01604e5283a5fabc95346befa/coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a", size = 221403, upload-time = "2025-09-21T20:02:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/53/22/3cf25d614e64bf6d8e59c7c669b20d6d940bb337bdee5900b9ca41c820bb/coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb", size = 222469, upload-time = "2025-09-21T20:02:39.011Z" }, + { url = "https://files.pythonhosted.org/packages/49/a1/00164f6d30d8a01c3c9c48418a7a5be394de5349b421b9ee019f380df2a0/coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb", size = 220731, upload-time = "2025-09-21T20:02:40.939Z" }, + { url = "https://files.pythonhosted.org/packages/23/9c/5844ab4ca6a4dd97a1850e030a15ec7d292b5c5cb93082979225126e35dd/coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520", size = 218302, upload-time = "2025-09-21T20:02:42.527Z" }, + { url = "https://files.pythonhosted.org/packages/f0/89/673f6514b0961d1f0e20ddc242e9342f6da21eaba3489901b565c0689f34/coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32", size = 218578, upload-time = "2025-09-21T20:02:44.468Z" }, + { url = "https://files.pythonhosted.org/packages/05/e8/261cae479e85232828fb17ad536765c88dd818c8470aca690b0ac6feeaa3/coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f", size = 249629, upload-time = "2025-09-21T20:02:46.503Z" }, + { url = "https://files.pythonhosted.org/packages/82/62/14ed6546d0207e6eda876434e3e8475a3e9adbe32110ce896c9e0c06bb9a/coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a", size = 252162, upload-time = "2025-09-21T20:02:48.689Z" }, + { url = "https://files.pythonhosted.org/packages/ff/49/07f00db9ac6478e4358165a08fb41b469a1b053212e8a00cb02f0d27a05f/coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360", size = 253517, upload-time = "2025-09-21T20:02:50.31Z" }, + { url = "https://files.pythonhosted.org/packages/a2/59/c5201c62dbf165dfbc91460f6dbbaa85a8b82cfa6131ac45d6c1bfb52deb/coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69", size = 249632, upload-time = "2025-09-21T20:02:51.971Z" }, + { url = "https://files.pythonhosted.org/packages/07/ae/5920097195291a51fb00b3a70b9bbd2edbfe3c84876a1762bd1ef1565ebc/coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14", size = 251520, upload-time = "2025-09-21T20:02:53.858Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3c/a815dde77a2981f5743a60b63df31cb322c944843e57dbd579326625a413/coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe", size = 249455, upload-time = "2025-09-21T20:02:55.807Z" }, + { url = "https://files.pythonhosted.org/packages/aa/99/f5cdd8421ea656abefb6c0ce92556709db2265c41e8f9fc6c8ae0f7824c9/coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e", size = 249287, upload-time = "2025-09-21T20:02:57.784Z" }, + { url = "https://files.pythonhosted.org/packages/c3/7a/e9a2da6a1fc5d007dd51fca083a663ab930a8c4d149c087732a5dbaa0029/coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd", size = 250946, upload-time = "2025-09-21T20:02:59.431Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5b/0b5799aa30380a949005a353715095d6d1da81927d6dbed5def2200a4e25/coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2", size = 221009, upload-time = "2025-09-21T20:03:01.324Z" }, + { url = "https://files.pythonhosted.org/packages/da/b0/e802fbb6eb746de006490abc9bb554b708918b6774b722bb3a0e6aa1b7de/coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681", size = 221804, upload-time = "2025-09-21T20:03:03.4Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e8/71d0c8e374e31f39e3389bb0bd19e527d46f00ea8571ec7ec8fd261d8b44/coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880", size = 220384, upload-time = "2025-09-21T20:03:05.111Z" }, + { url = "https://files.pythonhosted.org/packages/62/09/9a5608d319fa3eba7a2019addeacb8c746fb50872b57a724c9f79f146969/coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63", size = 219047, upload-time = "2025-09-21T20:03:06.795Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6f/f58d46f33db9f2e3647b2d0764704548c184e6f5e014bef528b7f979ef84/coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2", size = 219266, upload-time = "2025-09-21T20:03:08.495Z" }, + { url = "https://files.pythonhosted.org/packages/74/5c/183ffc817ba68e0b443b8c934c8795553eb0c14573813415bd59941ee165/coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d", size = 260767, upload-time = "2025-09-21T20:03:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/0f/48/71a8abe9c1ad7e97548835e3cc1adbf361e743e9d60310c5f75c9e7bf847/coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0", size = 262931, upload-time = "2025-09-21T20:03:11.861Z" }, + { url = "https://files.pythonhosted.org/packages/84/fd/193a8fb132acfc0a901f72020e54be5e48021e1575bb327d8ee1097a28fd/coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699", size = 265186, upload-time = "2025-09-21T20:03:13.539Z" }, + { url = "https://files.pythonhosted.org/packages/b1/8f/74ecc30607dd95ad50e3034221113ccb1c6d4e8085cc761134782995daae/coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9", size = 259470, upload-time = "2025-09-21T20:03:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/79ff53a769f20d71b07023ea115c9167c0bb56f281320520cf64c5298a96/coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f", size = 262626, upload-time = "2025-09-21T20:03:17.673Z" }, + { url = "https://files.pythonhosted.org/packages/88/e2/dac66c140009b61ac3fc13af673a574b00c16efdf04f9b5c740703e953c0/coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1", size = 260386, upload-time = "2025-09-21T20:03:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f1/f48f645e3f33bb9ca8a496bc4a9671b52f2f353146233ebd7c1df6160440/coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0", size = 258852, upload-time = "2025-09-21T20:03:21.007Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3b/8442618972c51a7affeead957995cfa8323c0c9bcf8fa5a027421f720ff4/coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399", size = 261534, upload-time = "2025-09-21T20:03:23.12Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dc/101f3fa3a45146db0cb03f5b4376e24c0aac818309da23e2de0c75295a91/coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235", size = 221784, upload-time = "2025-09-21T20:03:24.769Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a1/74c51803fc70a8a40d7346660379e144be772bab4ac7bb6e6b905152345c/coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d", size = 222905, upload-time = "2025-09-21T20:03:26.93Z" }, + { url = "https://files.pythonhosted.org/packages/12/65/f116a6d2127df30bcafbceef0302d8a64ba87488bf6f73a6d8eebf060873/coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a", size = 220922, upload-time = "2025-09-21T20:03:28.672Z" }, + { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952, upload-time = "2025-09-21T20:03:53.918Z" }, +] + +[[package]] +name = "crc" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/e6/c3488c35ecae290751466252e5ea01ef50fc67bfc1a9aba43983329b7025/crc-7.1.0.tar.gz", hash = "sha256:99dd540909a37ae4f62c65441df8ecb4e7f9af014fecaf4f331052a41d66c07d", size = 9888, upload-time = "2024-11-05T20:34:28.983Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/ff/5ebeae9b53e8cddd9e6f3b6b0c98da3f112d9a7e1ea638a00876aa8fb5b4/crc-7.1.0-py3-none-any.whl", hash = "sha256:b9845c81d0b900d8fda1aae7af977035bee0359c279713814e9fd23a2d59db6a", size = 8790, upload-time = "2024-11-05T20:34:27.629Z" }, +] + +[[package]] +name = "ct3" +version = "3.3.3.post1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/75/48508b1fb4a4a6849d113a727987507badbb768244e326a4270347ca320a/CT3-3.3.3.post1.tar.gz", hash = "sha256:a58f0a46272a163d26f910f8fe188b414c185e23b5a7abd53ddb19ace3bd9d14", size = 5985235, upload-time = "2024-02-28T15:18:57.852Z" } + +[[package]] +name = "deprecation" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5a/d3/8ae2869247df154b64c1884d7346d412fed0c49df84db635aab2d1c40e62/deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", size = 173788, upload-time = "2020-04-20T14:23:38.738Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a", size = 11178, upload-time = "2020-04-20T14:23:36.581Z" }, +] + +[[package]] +name = "docopt" +version = "0.6.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } + +[[package]] +name = "et-xmlfile" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/5d/0413a31d184a20c763ad741cc7852a659bf15094c24840c5bdd1754765cd/et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c", size = 3218, upload-time = "2021-04-26T13:26:05.068Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/c2/3dd434b0108730014f1b96fd286040dc3bcb70066346f7e01ec2ac95865f/et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada", size = 4688, upload-time = "2021-04-26T13:26:03.429Z" }, +] + +[[package]] +name = "fastcrc" +version = "0.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/fa/32bac317708588b845800ea12b026003ea6239035b21d464f48152ca512a/fastcrc-0.3.2.tar.gz", hash = "sha256:22362bb54e1bafc4f3e35544e40162481b2822c48ede1f5c2784820afad2c561", size = 11913, upload-time = "2024-10-23T11:24:43.948Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/fe/efb4de2241809454ac9ea577e89797b99478f606554edfb34081201b039a/fastcrc-0.3.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:b848835c2521ad5a96413ce310243c325a911aad92860aa427afb19f28493657", size = 244312, upload-time = "2024-10-23T11:23:12.663Z" }, + { url = "https://files.pythonhosted.org/packages/ce/61/5389387ac50e3c3fc2b2506bd2ce624546652cef800c3d5474c61f5713da/fastcrc-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2d723fdf5df4444ed8ab1d3b8478d71162397243bbd26bd82f1e844a5ae4b88", size = 240154, upload-time = "2024-10-23T11:23:13.678Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d3/109da183bfe5d668be7dfee370d93d8ec45240cee22d326d28cf99907f44/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ec03598c258ab5267ed1303988d5d34f8c8d02839409bf0be04deb91f51a7d1", size = 274644, upload-time = "2024-10-23T11:23:14.673Z" }, + { url = "https://files.pythonhosted.org/packages/00/78/f1e61abc2b621253d1fc6795261d51d9774e0e57c6d9ccbbbd2521f9ba68/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d923e9ea11ee35d129dc742ef76b5ab86e489cf6b7f404e02e413c4b98e4c838", size = 278864, upload-time = "2024-10-23T11:23:16.424Z" }, + { url = "https://files.pythonhosted.org/packages/27/c8/7783d0e6e8356a097524cbb05d0cb2d556f70219dc46b8fd4c8fe22e0a8b/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0c8c968237d580886e796da52c7d026e318652e60e0106d9557e2a25265c030", size = 312245, upload-time = "2024-10-23T11:23:17.452Z" }, + { url = "https://files.pythonhosted.org/packages/cf/db/82a55d8e6a83373c647dda5e65437a15b2de9e4efe507b093da2c6870b5f/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dd95f209a575edae4f223c55b508b43c18d1e4ffdb0262fcd6bc55be355a96a", size = 313637, upload-time = "2024-10-23T11:23:18.492Z" }, + { url = "https://files.pythonhosted.org/packages/12/e5/7ff34ede27114f61c508a4390feecf4d2cf23f2b63317e0b71d21d20419b/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9465678d0fe17e4ccd63b13aadefc550521f7bd1ba7b176b5b7e118952f0097f", size = 274911, upload-time = "2024-10-23T11:23:19.58Z" }, + { url = "https://files.pythonhosted.org/packages/bf/aa/6a2c0cda69fe766fa82e19f76ec56b1de3fe69fe530b88100e7e13993298/fastcrc-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf3aca3a8d4c369bebaf601831b25917a0808dc7cf0d3060955c97d2a72951ae", size = 284885, upload-time = "2024-10-23T11:23:20.693Z" }, + { url = "https://files.pythonhosted.org/packages/ea/99/e4daf07394ff1f0b73a2f620199665990d0a7e776356e0367c51294dc312/fastcrc-0.3.2-cp313-none-win32.whl", hash = "sha256:86f3c9e5844e5ffbbec1c17f059198a9b3f36ec3061f1128076ae2eb625101a3", size = 137898, upload-time = "2024-10-23T11:23:22.121Z" }, + { url = "https://files.pythonhosted.org/packages/58/a9/0d5518d525f2466551a836d918402aa1a26ec58057fe9cd4f225186ac2fa/fastcrc-0.3.2-cp313-none-win_amd64.whl", hash = "sha256:a5b68367c9a837773ad1dc98ae66adb4d097a58430665a21bff548982db8f3b9", size = 144629, upload-time = "2024-10-23T11:23:23.415Z" }, +] + +[[package]] +name = "flask" +version = "3.0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "blinker" }, + { name = "click" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "werkzeug" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/e1/d104c83026f8d35dfd2c261df7d64738341067526406b40190bc063e829a/flask-3.0.3.tar.gz", hash = "sha256:ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842", size = 676315, upload-time = "2024-04-07T19:26:11.035Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/80/ffe1da13ad9300f87c93af113edd0638c75138c42a0994becfacac078c06/flask-3.0.3-py3-none-any.whl", hash = "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3", size = 101735, upload-time = "2024-04-07T19:26:08.569Z" }, +] + +[[package]] +name = "flask-compress" +version = "1.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "brotli", marker = "platform_python_implementation != 'PyPy'" }, + { name = "brotlicffi", marker = "platform_python_implementation == 'PyPy'" }, + { name = "flask" }, + { name = "zstandard" }, + { name = "zstandard", extra = ["cffi"], marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f2/03/fde640d5eeb4db20e7932c7a7e538db4493e81a79f4dab642484e35f5df0/flask_compress-1.15.tar.gz", hash = "sha256:b7b66cd5d08fc46bbcc71561e13ca64321590b0ca4c172f8001bf5374f8f5c58", size = 13944, upload-time = "2024-04-25T15:56:15.385Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/c8/1efd52b8f6b6b9372515c1b33c5609d9188c4326ad7fa28f2663601eb2ae/Flask_Compress-1.15-py3-none-any.whl", hash = "sha256:5d6efe3584c89516c3ab9d94adabe08c218517b957a9bd5cd0c3955dd3834c51", size = 8594, upload-time = "2024-04-25T15:56:10.865Z" }, +] + +[[package]] +name = "flask-restful" +version = "0.3.10" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aniso8601" }, + { name = "flask" }, + { name = "pytz" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/ce/a0a133db616ea47f78a41e15c4c68b9f08cab3df31eb960f61899200a119/Flask-RESTful-0.3.10.tar.gz", hash = "sha256:fe4af2ef0027df8f9b4f797aba20c5566801b6ade995ac63b588abf1a59cec37", size = 110453, upload-time = "2023-05-21T03:58:55.781Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/7b/f0b45f0df7d2978e5ae51804bb5939b7897b2ace24306009da0cc34d8d1f/Flask_RESTful-0.3.10-py2.py3-none-any.whl", hash = "sha256:1cf93c535172f112e080b0d4503a8d15f93a48c88bdd36dd87269bdaf405051b", size = 26217, upload-time = "2023-05-21T03:58:54.004Z" }, +] + +[[package]] +name = "fprime-fpl-layout" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/42/3828f0744695bf7dde7004ab6bfd2c1b5cc6c4bb203b32bf633c2c6d5fd9/fprime_fpl_layout-1.0.3-py3-none-any.whl", hash = "sha256:22aff10d4dbdc0ae44654b2d5adeee1dc7e7a239fc7941d639896d258a8742a4", size = 6043721, upload-time = "2023-12-07T18:12:55.276Z" }, + { url = "https://files.pythonhosted.org/packages/57/d0/20ec51cc183f62dfe5cd4eb520ef28bbce488d1ebbc2f25b3eac7b96d7bf/fprime_fpl_layout-1.0.3-py3-none-macosx_10_9_universal2.whl", hash = "sha256:1f864c10d94675abf4da9a48d633d1df66cd779036bc6b68f51c3d25b40cf6b8", size = 4715683, upload-time = "2023-12-07T18:12:51.375Z" }, + { url = "https://files.pythonhosted.org/packages/cc/83/73b10e9fcb77ee40c2e97fc7e025787287941ce12e94a7715d79e873cc12/fprime_fpl_layout-1.0.3-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:52b0afffd6e245e246f5b5ec28578050a6e5ba3ee52a34361bb68083300af756", size = 4894681, upload-time = "2023-12-07T18:12:58.158Z" }, + { url = "https://files.pythonhosted.org/packages/14/3d/f088b715750dfe335fd76b716f530aa41d034f39bd6f43526dbf3628ac45/fprime_fpl_layout-1.0.3-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:8af797df911c851c57941d2e2d3c50c9dd62adbd31a86da486ba49dcb526dd9c", size = 4757698, upload-time = "2023-12-07T18:12:49.808Z" }, +] + +[[package]] +name = "fprime-fpl-write-pic" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/94/aaaa048d8b546224bb6809925815fe5b9eccac945fd1bd8569d824864fcb/fprime_fpl_write_pic-1.0.3-py3-none-any.whl", hash = "sha256:4a6ae307dc4892a56d8cf45ef22163d8870cc9c6afacdfb5fb67df9ddccfda24", size = 6043747, upload-time = "2023-12-07T18:12:59.209Z" }, + { url = "https://files.pythonhosted.org/packages/2f/b8/d20c885085b063b9463b5af7ab2f9c91e03da886d11bf2f471277781c291/fprime_fpl_write_pic-1.0.3-py3-none-macosx_10_9_universal2.whl", hash = "sha256:edbedf807df4a7d90f82946a3d08217c6815b01fe66f27c8d0b5bcfe728074de", size = 4714938, upload-time = "2023-12-07T18:12:54Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3e93865cc38b3dec41d897d42d3e8407a9b98abf408e80cffd8b7886de1a/fprime_fpl_write_pic-1.0.3-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:09b04e3defcc0191139a67b3c1b5aed7f0669c3c3d0f811123fbf2ff25104227", size = 4895214, upload-time = "2023-12-07T18:13:02.819Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e2/d280cebf0abac640d0a86fc391191aa0b37b6a36e6123859175ac7c12393/fprime_fpl_write_pic-1.0.3-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:d7e140ac22f674fa5da38aa991ce6ee1a9fe40ae6db85815e474095ee041fe3a", size = 4758129, upload-time = "2023-12-07T18:12:52.727Z" }, +] + +[[package]] +name = "fprime-fpp" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fprime-fpp-check" }, + { name = "fprime-fpp-depend" }, + { name = "fprime-fpp-filenames" }, + { name = "fprime-fpp-format" }, + { name = "fprime-fpp-from-xml" }, + { name = "fprime-fpp-locate-defs" }, + { name = "fprime-fpp-locate-uses" }, + { name = "fprime-fpp-syntax" }, + { name = "fprime-fpp-to-cpp" }, + { name = "fprime-fpp-to-dict" }, + { name = "fprime-fpp-to-json" }, + { name = "fprime-fpp-to-layout" }, + { name = "fprime-fpp-to-xml" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/fc/61b5ac150ac747ceac30355299992b9fc212cf852ad6ad005ff2ca42dcbe/fprime_fpp-3.0.0-py3-none-any.whl", hash = "sha256:0a8cb9f48c223044101dc57962f8c48acae73271d0b2a9d97da272b3ea8249ac", size = 1368, upload-time = "2025-08-06T19:46:12.423Z" }, +] + +[[package]] +name = "fprime-fpp-check" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/8f/5b2045f8d874e2144fb918d2f201e0200e8082e644a60fac379870952816/fprime_fpp_check-3.0.0-py3-none-any.whl", hash = "sha256:adae1d73a2f7db7145541c9f16a8d493438528aada1c4e56eff3f55eca2b8a7f", size = 27931044, upload-time = "2025-08-06T19:46:22.687Z" }, + { url = "https://files.pythonhosted.org/packages/46/e3/a16d1f14cd4590f644700f1f94bb341990c1225b0c9b9d6821e28e6b3225/fprime_fpp_check-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:2b31e88102c7480caa83837fa95555ea8869f0fa2484c2df3d50ec2d712ce722", size = 11198902, upload-time = "2025-08-06T19:45:47.186Z" }, + { url = "https://files.pythonhosted.org/packages/b8/0a/b0b9ea906f5e273e25be89c5979bcde084d4dd9e26c1ecb0a5f576a824cd/fprime_fpp_check-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:ae81eece5131646d19ea42bd6c85cca6378bdc452ab71bcb6df2ae86194e01f8", size = 11211180, upload-time = "2025-08-06T19:46:04.118Z" }, + { url = "https://files.pythonhosted.org/packages/a6/0c/e5148fa148957e27c088eb469763e2e143295a2a414a2c3d97fbf1edcc36/fprime_fpp_check-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:0e04073d8f7a4c4a9a5875111c60069fce87acdd259ac1893c61ab5fa6e0ea5d", size = 11244052, upload-time = "2025-08-06T19:45:59.792Z" }, +] + +[[package]] +name = "fprime-fpp-depend" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/56/ad3373b6e6f1c82e66a5f45795aeabb5c5e0f356443d2cab497796e21c05/fprime_fpp_depend-3.0.0-py3-none-any.whl", hash = "sha256:bdd61d0401b09e0e4737fdceb0b2ad08e3ff3e28df8a83ee792db1f07b122f06", size = 27944730, upload-time = "2025-08-06T19:46:27.553Z" }, + { url = "https://files.pythonhosted.org/packages/9d/2e/77c1745c2249fdb46999f7af6556c6128bc6df2ca278f911452ea077cb98/fprime_fpp_depend-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:17f1293380d01d4dfa6a512a7470d999192f3a596966dfcee57bb8319ddbdd3d", size = 10356153, upload-time = "2025-08-06T19:45:49.253Z" }, + { url = "https://files.pythonhosted.org/packages/0b/5c/61a74a3b870f0d870bb718e84ac50137aa9817d4c56d0db59ef9a255b01a/fprime_fpp_depend-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:663c0ac74303175fbbdf604fe678136b3a4d42f5f1d27cba544390bcca6c9c90", size = 10351098, upload-time = "2025-08-06T19:46:08.241Z" }, + { url = "https://files.pythonhosted.org/packages/27/a5/e1cb5432c85474e4e54bdacd968706f03987030f44e45e93a207df0b9e04/fprime_fpp_depend-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:3e49f81ba19ebc9e9e5fe71aa41502e54513bf95a4139b66565126b866f2e58a", size = 10387337, upload-time = "2025-08-06T19:46:04.565Z" }, +] + +[[package]] +name = "fprime-fpp-filenames" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/7d/f987447c4c500fd738c46779e106966014131e83e27f3a4b559c91575698/fprime_fpp_filenames-3.0.0-py3-none-any.whl", hash = "sha256:d9564b797687946053c38717ec5294e291aa3f665c0366eeb978922560def5b4", size = 27930458, upload-time = "2025-08-06T19:46:41.401Z" }, + { url = "https://files.pythonhosted.org/packages/61/c4/2b9e4e4712746a7242faddbd167dae8b500254afa47e575d5788f691c664/fprime_fpp_filenames-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:119647ffdef4229724d981e51157f1ab87e6c239565ecd09ef44186b364abd94", size = 10158523, upload-time = "2025-08-06T19:45:51.9Z" }, + { url = "https://files.pythonhosted.org/packages/db/d3/bc20d3fb5a24728fedf2d72b65a49cfa418d83283aaa2bd17bcf77f0459a/fprime_fpp_filenames-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:5ed8801b267e4fc022ea27abfdbcf310235c6d7c933355836d66a37aa662ffc8", size = 10166677, upload-time = "2025-08-06T19:46:12.947Z" }, + { url = "https://files.pythonhosted.org/packages/fe/17/c32d562bf07e5525501f2cd0ce9f33cb1c9c570787bd97c9e4a2905b656e/fprime_fpp_filenames-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:65d34831a40eb656298ec90eab659336e1036cd89a23ab90552a113c1d8ba3a1", size = 10196352, upload-time = "2025-08-06T19:46:09.962Z" }, +] + +[[package]] +name = "fprime-fpp-format" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/99/fa165017efe5f4c32fb85630bb74c6685a0dad6a6377d66a8d077231a646/fprime_fpp_format-3.0.0-py3-none-any.whl", hash = "sha256:efd5899fd74be365383cc2fde98ef756b0487a0ff208f8ce6fc86e7ba6cc98fb", size = 27929179, upload-time = "2025-08-06T19:46:47.861Z" }, + { url = "https://files.pythonhosted.org/packages/92/fa/7a3572f36ce4f4235a0e8d430c105d8dcc6959d252a358d6923742651ace/fprime_fpp_format-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:448fc2c715c74ae666550ac19d48819bccd3722b808e8afeca13c68be9beb219", size = 10144306, upload-time = "2025-08-06T19:45:53.815Z" }, + { url = "https://files.pythonhosted.org/packages/85/f7/34860b8c406b3ace24cc53f445d96cc4acf86c45d2155ef0a9bddd501315/fprime_fpp_format-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:c8e1d1925d9beca7fb2da7b98e2a3ae1b4a8fec536f14b364c772dbf9d27e640", size = 10155673, upload-time = "2025-08-06T19:46:21.367Z" }, + { url = "https://files.pythonhosted.org/packages/71/b4/1fc7f6beb30d8376a0b537a3e0ec47252c942b3c441592c8801882e085d2/fprime_fpp_format-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:1de7c1fe4145ee13006f27b857448c3894b73589c54db0e45eba036a34abb612", size = 10181560, upload-time = "2025-08-06T19:46:16.397Z" }, +] + +[[package]] +name = "fprime-fpp-from-xml" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/99/d8/824419ecebcb5dad8b499bc1aa259103c4c4a41fb7b2a7b142d1a91ff09a/fprime_fpp_from_xml-3.0.0-py3-none-any.whl", hash = "sha256:7567ab6c2dfaf56e756505bf1f27aa5f7862b284514c8b53a70012378d803662", size = 27925697, upload-time = "2025-08-06T19:46:54.657Z" }, + { url = "https://files.pythonhosted.org/packages/53/47/1a919808787d95437e98cc071d444803f9daafd5da55eceeaaa7a0ea95c0/fprime_fpp_from_xml-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:b0c6d11323d40a866d46efc15414129be06ba084f8943bbf649ffb0bca9b2756", size = 11609328, upload-time = "2025-08-06T19:45:55.798Z" }, + { url = "https://files.pythonhosted.org/packages/e7/93/4b4ef0c3459a247337e2ebee753490c2dc1a8de664b6f309d36750ce515d/fprime_fpp_from_xml-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:54d5e3859b3c893b3621b17cb504519264f74645c8e2fbd8ef987c992cf152ff", size = 11625849, upload-time = "2025-08-06T19:46:30.704Z" }, + { url = "https://files.pythonhosted.org/packages/9e/a4/5b49b1b322043bc5fa18ac84c78cab7675b24f0a3af32e9fc8d1b3e6519f/fprime_fpp_from_xml-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:797b2abe09dfa1df2bedff0f922b1c6854439c499a1db2c56e517e522c2474be", size = 11650570, upload-time = "2025-08-06T19:46:23.74Z" }, +] + +[[package]] +name = "fprime-fpp-locate-defs" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/6f/22f08f6bc58dab3207ae008dc0f3080a50b32645a70eec61842b13884fd0/fprime_fpp_locate_defs-3.0.0-py3-none-any.whl", hash = "sha256:761ad7b490717ba6896f59a9a1857c3e31e924a01328b8dbd7ee029be3dd9fea", size = 27929611, upload-time = "2025-08-06T19:47:00.153Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ed/44052c0de555f9c2b74b8d638a3e9d27d20f0c5f79beb87c503afa7443af/fprime_fpp_locate_defs-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:2bd45e7f21fded498e01ff0965072e13c3b766885a0742738bec7a9880a0374c", size = 10076879, upload-time = "2025-08-06T19:45:58.177Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c1/f9dc2d287c8651e8a49f62615d276143ad455930e1421ea6fb98e4cb2d32/fprime_fpp_locate_defs-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:5ac2dd699a6f9962735bf957be173598079d1a7fed09e910c55ed7b6b2c7e363", size = 10096110, upload-time = "2025-08-06T19:46:44.012Z" }, + { url = "https://files.pythonhosted.org/packages/d7/e0/4de3c061999c9aae2e171d243d5e5741ee32319b1e3aa1871e7f9f7378ee/fprime_fpp_locate_defs-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:a99afae6ee835843f72106610fa53247cdf83dc2c4a0a1a1a05ad7a2470a4d4d", size = 10127815, upload-time = "2025-08-06T19:46:39.141Z" }, +] + +[[package]] +name = "fprime-fpp-locate-uses" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/37/65016f6eb30aacd27181d6f5de3db409bf9ac774a9db4819cdba78571934/fprime_fpp_locate_uses-3.0.0-py3-none-any.whl", hash = "sha256:c73cbbd36fc0e8fba9694c2e93d1b2afcd8a05e044019b18b0c9f8c207defa17", size = 27936460, upload-time = "2025-08-06T19:47:04.913Z" }, + { url = "https://files.pythonhosted.org/packages/b0/7b/cc4278503434817b23a350b1fb1101485d126c5d129052b2a46dcb12c020/fprime_fpp_locate_uses-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:1d41d14f878e128649b2e6a13df22f9b8cc47be44308108a8b0ab38649bfa294", size = 11207892, upload-time = "2025-08-06T19:46:01.587Z" }, + { url = "https://files.pythonhosted.org/packages/25/c5/3f624c559becd04a6b4c4f262769b7181f7a58ceefe709aa5cbefc4deeb3/fprime_fpp_locate_uses-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:205df46bb2191a9c36f8ad2fbf66c5abaae0f31f0202d79e26a4fec8bad4af60", size = 11215002, upload-time = "2025-08-06T19:46:50.239Z" }, + { url = "https://files.pythonhosted.org/packages/7f/61/7672ad3878f80973632c996ccc8b99c7002b144a5f48eb45f1b9c3a2a857/fprime_fpp_locate_uses-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:b7b79d9a72ae2ab00e869d041086ccfe12ff9e4ee187fbfaf21ad22bed3c7579", size = 11249320, upload-time = "2025-08-06T19:46:45.759Z" }, +] + +[[package]] +name = "fprime-fpp-syntax" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/91/2ec4b5be5b38e3224fd1251812dc8fa64a1729d611040d40b90390474014/fprime_fpp_syntax-3.0.0-py3-none-any.whl", hash = "sha256:b900b6ef4d8a1de157327d03f997eb888b8ebc7ad7226a1065bce52033a010f4", size = 27930005, upload-time = "2025-08-06T19:47:09.919Z" }, + { url = "https://files.pythonhosted.org/packages/fe/a3/3721ed5df8dd52bb4d8175fa59c247100907024a13b3e78e4a0200203fb9/fprime_fpp_syntax-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:e178adadd0740ae2c4e6b9b9b630d8dac2421f073aa14cc9dfabf25af7aa87bd", size = 10161511, upload-time = "2025-08-06T19:46:05.613Z" }, + { url = "https://files.pythonhosted.org/packages/40/7d/2c719166dc46ce0d01de56ed9b143dfd714561228b55fc80c83a558de13f/fprime_fpp_syntax-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:62b6ee08fac1130f8d5d627107e32ea93f5a52c746c76cc34e98f162bbdfef32", size = 10162044, upload-time = "2025-08-06T19:46:55.585Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2b/6760c7d8a24e8442f7743e7bb576cb4c9472c4bac5c22a6cbc5f3d334f9c/fprime_fpp_syntax-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:174902398b491c8edb7952cf48d87a6f8378ca82fc7743324f8c1e748178f4c5", size = 10202731, upload-time = "2025-08-06T19:46:52.386Z" }, +] + +[[package]] +name = "fprime-fpp-to-cpp" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/2c/7e735b5985ef5f747b0c4fd225a5bc8cb7b1be0d7c3e5ce15433b120e08c/fprime_fpp_to_cpp-3.0.0-py3-none-any.whl", hash = "sha256:8d2d701d3c24a2639975586a8df1acf396e2e744684279f18470a7c2055ed391", size = 27941504, upload-time = "2025-08-06T19:47:15.129Z" }, + { url = "https://files.pythonhosted.org/packages/7a/7f/3bf0b54472beca2d64e5406f264c166ea050c2647515cba2a892caa3d11a/fprime_fpp_to_cpp-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:b904045c99697a7a2f59cebda313abc00babb83a865c2f4550ec0a4d8af23cef", size = 12657965, upload-time = "2025-08-06T19:46:11.306Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e7/adbf30aea378e5ef6d54dc993c7b9fd6d637ccb50816cd53443720c3788f/fprime_fpp_to_cpp-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:366f6b6d5fd8587b06d152f5e8843d364b2177c05f1d32d13d832460b088817f", size = 12687606, upload-time = "2025-08-06T19:47:01.015Z" }, + { url = "https://files.pythonhosted.org/packages/57/28/6390af9deefac19384a2c8e8a848ff9746e69b42a5464b906e865164c622/fprime_fpp_to_cpp-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:8ca2de639fc4972ff9c3ec97953d24149d35c66d5d781665b3dd67bd4664ed96", size = 12694567, upload-time = "2025-08-06T19:46:57.591Z" }, +] + +[[package]] +name = "fprime-fpp-to-dict" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dc/a1/6817522d37be9f94280f38c4443ef6ceb29f7c11e0b6995f4a2c8b2e2fe1/fprime_fpp_to_dict-3.0.0-py3-none-any.whl", hash = "sha256:473cd08f8be0f5ffebed8e552da67f27670c895e5b9fa672eae7d318849c5034", size = 27936928, upload-time = "2025-08-06T19:47:20.576Z" }, + { url = "https://files.pythonhosted.org/packages/22/60/33550bafc59b566723e67b43acf97d63ef738babfebf4836ef874529b459/fprime_fpp_to_dict-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:75f59f3a62029aea1c6ab2162f59bb2d986fcb38525f897185fcdeaf010f487b", size = 11345443, upload-time = "2025-08-06T19:46:18.097Z" }, + { url = "https://files.pythonhosted.org/packages/da/2e/95144ff1e4824da948f4f4734f7b63e7c0dfd2eb98f905fa4ba1b0689959/fprime_fpp_to_dict-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:1fd457625e605a35167d6a9ea6b5c2f71bec921304c325ecb523b6416020b53a", size = 11335907, upload-time = "2025-08-06T19:47:06.036Z" }, + { url = "https://files.pythonhosted.org/packages/6e/74/f4f339618b5a4a265aff9ba8ce051dde5b1645702f83904cd51d87c60ab7/fprime_fpp_to_dict-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:70cc2c18480d1bd119f55067920069d2c4b2ccc2ec9c55f75a81af3b62ec50ba", size = 11370208, upload-time = "2025-08-06T19:47:02.888Z" }, +] + +[[package]] +name = "fprime-fpp-to-json" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/80/6d420bdefb2dd08ec557fae7650c0a964ef0251466f69307fbf680d09c57/fprime_fpp_to_json-3.0.0-py3-none-any.whl", hash = "sha256:c6d0aa21dd1fc6a23c7ba6fb6bd29566c002cde94f3e7c238c5a6c464c0fdac5", size = 27932730, upload-time = "2025-08-06T19:47:25.226Z" }, + { url = "https://files.pythonhosted.org/packages/8e/a1/bd0beb85d6724fb3868ca0f0b200f634424900c8d6bcb1cfb7d71d172d31/fprime_fpp_to_json-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:79594b13fecafd7ab7bc95dd5e4c8bdb4215829aa207d384727d4b27deba0909", size = 11203473, upload-time = "2025-08-06T19:46:25.144Z" }, + { url = "https://files.pythonhosted.org/packages/8c/b3/ce400be75fee1405424654e3b0ad5f520232714272233d20e5feaad43a1c/fprime_fpp_to_json-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:13b29b84a964fd64e0586cdf6fa8f1179451288a15bbd3540da9dc73448b79d4", size = 11214481, upload-time = "2025-08-06T19:47:11.16Z" }, + { url = "https://files.pythonhosted.org/packages/7a/3a/afb8c1ad444c7ad6a5069340d1abe5ca88637566ad665ffb4ffb450427e5/fprime_fpp_to_json-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:9ac8f4ea08ee748dba19f3b5f956ef94c92a92b1f741aa38678464948101b6db", size = 11237158, upload-time = "2025-08-06T19:47:07.869Z" }, +] + +[[package]] +name = "fprime-fpp-to-layout" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/64/1e/4c3a5d21067ab5493b96e5f55878c1936a1f393fae8fbed9f4fe9d069c9e/fprime_fpp_to_layout-3.0.0-py3-none-any.whl", hash = "sha256:fabd13107c8268fa9ace8f3a7585f0d499745dd9adf01124b00927153c9cbad3", size = 27930722, upload-time = "2025-08-06T19:47:28.582Z" }, + { url = "https://files.pythonhosted.org/packages/4e/07/3675e2cebc5a4f4f72a98717584cc04d70d2160e5c54382a8411a1e39963/fprime_fpp_to_layout-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:09b1c4395d7382d88ad7cdf30b747362fa6918132f30720a3753c9f309f2942c", size = 11243900, upload-time = "2025-08-06T19:46:37.364Z" }, + { url = "https://files.pythonhosted.org/packages/c0/38/cc5e1ea9417ce3b84bdeeef6654c01a54c03e0a3c088bf93083ecc64a296/fprime_fpp_to_layout-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:69bb6bc55288721afae9fc21ca8a77b21b2283a4affb554fb4fdb68380524dab", size = 11247260, upload-time = "2025-08-06T19:47:15.866Z" }, + { url = "https://files.pythonhosted.org/packages/04/13/9774a1f08aac00f6b0ecdcf9f0449767bc0c101c28bebe34f74ce9b148c5/fprime_fpp_to_layout-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:17a65734f432a60090e5b95eb3c94110972ece31eb942f1d059ad2d1bc70197f", size = 11283898, upload-time = "2025-08-06T19:47:12.912Z" }, +] + +[[package]] +name = "fprime-fpp-to-xml" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/a1/af754cc2f91bd00584d09121fb44256fb538c2ea1545e981446ce7848b3f/fprime_fpp_to_xml-3.0.0-py3-none-any.whl", hash = "sha256:82ca5d223f1970198eac553603b233e011958620d3edb64de2d2ef217dc1deff", size = 27935936, upload-time = "2025-08-06T19:47:31.091Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/fa740214420e7e052683645231891b135c4ca5d10808974a6cefa8062be4/fprime_fpp_to_xml-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:5bea97f808b4450db574f7a7ad76de8fb10dae3a97598a67fff83e1973da9dab", size = 11394371, upload-time = "2025-08-06T19:46:42.616Z" }, + { url = "https://files.pythonhosted.org/packages/78/11/89297674b07aaffe06b81815c60866e4dad65389ad62639b5e37f4ed5c66/fprime_fpp_to_xml-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:f970e3b8618f17f98ff3dce96eeba33f1f86faa8b87bcb8266d9f397a3ac82c9", size = 11402695, upload-time = "2025-08-06T19:47:21.319Z" }, + { url = "https://files.pythonhosted.org/packages/81/5b/f9deed2565aee49b52bf597bbb01ab4a34ae1b84797961e6a180c69f4494/fprime_fpp_to_xml-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:02e08937ba78900aa031a21782c590411512bc77f384e36ad3561673e6f9fdbc", size = 11445597, upload-time = "2025-08-06T19:47:17.984Z" }, +] + +[[package]] +name = "fprime-gds" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argcomplete" }, + { name = "crc" }, + { name = "flask" }, + { name = "flask-compress" }, + { name = "flask-restful" }, + { name = "fprime-tools" }, + { name = "jinja2" }, + { name = "lark" }, + { name = "openpyxl" }, + { name = "pexpect" }, + { name = "pydantic" }, + { name = "pyserial" }, + { name = "pytest" }, + { name = "pyyaml" }, + { name = "pyzmq" }, + { name = "spacepackets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/1b5e1e8cd1bd3bc5658733b54508b61d644f578709ca3571115f28456a08/fprime_gds-4.0.1.tar.gz", hash = "sha256:13a4924349a81f6108aebbcf9ad7e1ff9f435db93cc4b17b7bb489b97514ddf9", size = 2218413, upload-time = "2025-08-07T00:00:50.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b8/d4/47359b77a1d7bdd2c333f0f788eaa36f052b31192f528d022445ecc46761/fprime_gds-4.0.1-py3-none-any.whl", hash = "sha256:b4a7310a5222cab7f71e86a919eef3a0346f7cce129e40d26f4f36a2122f643f", size = 2150288, upload-time = "2025-08-07T00:00:48.156Z" }, +] + +[[package]] +name = "fprime-tools" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cookiecutter" }, + { name = "gcovr" }, + { name = "markdown" }, + { name = "pexpect" }, + { name = "pytest" }, + { name = "requests" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/18/1d/da11b27b5c5845b3f153f45733a695bf89bc6a1bc0d3e03ee32420020752/fprime_tools-4.0.1.tar.gz", hash = "sha256:d7a9969d07774487a33d50c7caa5e9b0b7338e09b66ff1fa80004eb32f9c753f", size = 137097, upload-time = "2025-08-07T00:00:08.851Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/58/9bcd00c28b2211ad55bc5b49303d7ca95cff588b97d53506a8aa9d2a4ce9/fprime_tools-4.0.1-py3-none-any.whl", hash = "sha256:5df41bcfe9172eb2a2e93701a48b649c904fa5067192f54c10dda0b2cd1e8836", size = 137008, upload-time = "2025-08-07T00:00:07.167Z" }, +] + +[[package]] +name = "fprime-visual" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flask" }, + { name = "flask-compress" }, + { name = "flask-restful" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/24/e4b338e8b7b15f7c90efc9b6f82fea6b4c584b46405a9b9e11dde338af6f/fprime-visual-1.0.2.tar.gz", hash = "sha256:2a76f86563a432a8da0a26ab7110d7243e8c3b5edf14d4e4f87d0c3e6371c238", size = 1666327, upload-time = "2023-12-15T01:39:50.145Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/ab/17c408f23477fa0fc01a8ca4b6ee15455f1bee171a3522967b08843cdb34/fprime_visual-1.0.2-py3-none-any.whl", hash = "sha256:942a8f3e5d984db1e7fdb3c883d4591758650de407a9f0711fd614455f1a4811", size = 1677950, upload-time = "2023-12-15T01:39:47.737Z" }, +] + +[[package]] +name = "gcovr" +version = "8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorlog" }, + { name = "jinja2" }, + { name = "lxml" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/32/21/7f9967a2d5a37d8f77e793ba4c173d0e1e59195028c997a9947b73b652f4/gcovr-8.2.tar.gz", hash = "sha256:9a1dddd4585d13ec77555db5d6b6a31ee81587ea6fc604ff9fcd232cb0782df5", size = 176540, upload-time = "2024-10-13T08:15:38.394Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/72/514286de4b9b5990b7c3105d5ed8863b94ee1e2ed7df7b635fd04393e00b/gcovr-8.2-py2.py3-none-any.whl", hash = "sha256:bee23da2198bc1e0b9d0109018b9460df52355372319b5ddf81aca4e54f6bd61", size = 213313, upload-time = "2024-10-13T08:15:36.24Z" }, +] + +[[package]] +name = "hidapi" +version = "0.14.0.post4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "setuptools" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/72/21ccaaca6ffb06f544afd16191425025d831c2a6d318635e9c8854070f2d/hidapi-0.14.0.post4.tar.gz", hash = "sha256:48fce253e526d17b663fbf9989c71c7ef7653ced5f4be65f1437c313fb3dbdf6", size = 174388, upload-time = "2024-11-19T16:38:10.316Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/c7/8601f03a6eeeac35655245177b50bb00e707f3392e0a79c34637f8525207/hidapi-0.14.0.post4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6f96ae777e906f0a9d6f75e873313145dfec2b774f558bfcae8ba34f09792460", size = 70358, upload-time = "2024-11-19T16:36:46.405Z" }, + { url = "https://files.pythonhosted.org/packages/c1/5d/7376cf339fbe6fca26048e3c7e183ef4d99c046cc5d8378516a745914327/hidapi-0.14.0.post4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6439fc9686518d0336fac8c5e370093279f53c997540065fce131c97567118d8", size = 68034, upload-time = "2024-11-19T16:36:47.419Z" }, + { url = "https://files.pythonhosted.org/packages/9a/5e/3c93bb12b01392b538870bc710786fee86a9ced074a8b5c091a59786ee07/hidapi-0.14.0.post4-cp313-cp313-win32.whl", hash = "sha256:b6b9c4dbf7d7e2635ff129ce6ea82174865c073b75888b8b97dda5a3d9a70493", size = 62688, upload-time = "2024-11-19T16:36:59.124Z" }, + { url = "https://files.pythonhosted.org/packages/6a/a6/0d43ac0be00db25fb0c2c6125e15a3e3536196c9a7cd806d50ebfb37b375/hidapi-0.14.0.post4-cp313-cp313-win_amd64.whl", hash = "sha256:87218eeba366c871adcc273407aacbabab781d6a964919712d5583eded5ca50f", size = 69749, upload-time = "2024-11-19T16:37:00.561Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "6.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/82/f6e29c8d5c098b6be61460371c2c5591f4a335923639edec43b3830650a4/importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4", size = 53569, upload-time = "2023-06-18T21:44:35.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/94/64287b38c7de4c90683630338cf28f129decbba0a44f0c6db35a873c73c4/importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5", size = 22934, upload-time = "2023-06-18T21:44:33.441Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646, upload-time = "2023-01-07T11:08:11.254Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892, upload-time = "2023-01-07T11:08:09.864Z" }, +] + +[[package]] +name = "intelhex" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/37/1e7522494557d342a24cb236e2aec5d078fac8ed03ad4b61372586406b01/intelhex-2.3.0.tar.gz", hash = "sha256:892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093", size = 44513, upload-time = "2020-10-20T20:35:51.526Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/78/79461288da2b13ed0a13deb65c4ad1428acb674b95278fa9abf1cefe62a2/intelhex-2.3.0-py2.py3-none-any.whl", hash = "sha256:87cc5225657524ec6361354be928adfd56bcf2a3dcc646c40f8f094c39c07db4", size = 50914, upload-time = "2020-10-20T20:35:50.162Z" }, +] + +[[package]] +name = "intervaltree" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sortedcontainers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/fb/396d568039d21344639db96d940d40eb62befe704ef849b27949ded5c3bb/intervaltree-3.1.0.tar.gz", hash = "sha256:902b1b88936918f9b2a19e0e5eb7ccb430ae45cde4f39ea4b36932920d33952d", size = 32861, upload-time = "2020-08-03T08:01:11.392Z" } + +[[package]] +name = "itsdangerous" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "junitparser" +version = "4.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/97/954ee1ef04e50d8494e9f5d82d4051ed71a7618aa2c1514c1b3f24691174/junitparser-4.0.2.tar.gz", hash = "sha256:d5d07cece6d4a600ff3b7b96c8db5ffa45a91eed695cb86c45c3db113c1ca0f8", size = 25646, upload-time = "2025-06-24T04:37:32.664Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/87/b444f934f62ee2a1be45bb52563cf17a66b0d790eba43af4df9929e7107f/junitparser-4.0.2-py3-none-any.whl", hash = "sha256:94c3570e41fcaedc64cc3c634ca99457fe41a84dd1aa8ff74e9e12e66223a155", size = 14592, upload-time = "2025-06-24T04:37:31.322Z" }, +] + +[[package]] +name = "lark" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/37/a13baf0135f348af608c667633cbe5d13aa2c5c15a56ae9ad3e6cba45ae3/lark-1.3.0.tar.gz", hash = "sha256:9a3839d0ca5e1faf7cfa3460e420e859b66bcbde05b634e73c369c8244c5fa48", size = 259551, upload-time = "2025-09-22T13:45:05.072Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/3e/1c6b43277de64fc3c0333b0e72ab7b52ddaaea205210d60d9b9f83c3d0c7/lark-1.3.0-py3-none-any.whl", hash = "sha256:80661f261fb2584a9828a097a2432efd575af27d20be0fd35d17f0fe37253831", size = 113002, upload-time = "2025-09-22T13:45:03.747Z" }, +] + +[[package]] +name = "legacy-cgi" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/48/96/ff14ad0f759f2297a2e61db9c5384d248a6b38c6c1d4452c07d7419676a2/legacy_cgi-2.6.1.tar.gz", hash = "sha256:f2ada99c747c3d72a473a6aaff6259a61f226b06fe9f3106e495ab83fd8f7a42", size = 24782, upload-time = "2024-06-19T22:05:49.115Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/da/4cbc703cccc326bac1b4311609e694729134d1e8a2b45c224f7cb2602590/legacy_cgi-2.6.1-py3-none-any.whl", hash = "sha256:8eacc1522d9f76451337a4b5a0abf494158d39250754b0d1bc19a14c6512af9b", size = 19574, upload-time = "2024-06-19T22:05:47.524Z" }, +] + +[[package]] +name = "libusb-package" +version = "1.0.26.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/b8/23bc7f3f53b4a5b1027c721ec3eb42324ca1ec56355f0d0851307adc7c6c/libusb_package-1.0.26.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:04c4505e2ca68d3dc6938f116ff9bf82daffb06c1a97aba08293a84715a998da", size = 62045, upload-time = "2025-04-01T12:59:18.698Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f8/e3be96d0604070488ddc5ce5af1976992e1f4a00e6441c94edf807f274d5/libusb_package-1.0.26.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4961cdb3c622aa9f858d3e4f99a58ce5e822a97c22abc77040fd806cb5fa4c66", size = 59502, upload-time = "2025-04-01T12:59:19.632Z" }, + { url = "https://files.pythonhosted.org/packages/24/d5/df1508df5e6776ac8a09a2858991df29bc96ea6a0d1f90240b1c4d59b45d/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16182670e0c23235521b447054c5a01600bd8f1eed3bb08eedbb0d9f8a43249f", size = 70247, upload-time = "2025-04-01T14:53:22.328Z" }, + { url = "https://files.pythonhosted.org/packages/65/01/4cc9eed12b9214c088cfa8055ece3b1db970404400be9d7e3dda68d198f2/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75ea57b2cc903d28ec1d4b909902df442cbf21949d80d5b3d8b9dac36ac45d1a", size = 74537, upload-time = "2025-04-01T14:53:23.306Z" }, + { url = "https://files.pythonhosted.org/packages/99/83/9eb317f706f588f4b6679bddb8abee3b115ce53dc3fa560cca59910f8807/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d30b51b128ef5112fff73268b4696fea00b5676b3f39a5ee859bd76cb3ace5", size = 70651, upload-time = "2025-04-01T14:53:24.33Z" }, + { url = "https://files.pythonhosted.org/packages/22/49/85d3b307b4a20cf0150ab381e6e0385e5b78cb5dede8bade0a2d655d3fd3/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5c098dcfcfa8000cab42f33e19628c8fdb16111670db381048b2993651f2413b", size = 71860, upload-time = "2025-04-01T14:53:25.752Z" }, + { url = "https://files.pythonhosted.org/packages/da/7a/2271a5ae542d9036d9254415ae745d5c5d01a08d56d13054b2439bf9d392/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:93169aeab0657255fe6c9f757cf408f559db13827a1d122fc89239994d7d51f1", size = 76477, upload-time = "2025-04-01T14:53:27.564Z" }, + { url = "https://files.pythonhosted.org/packages/5c/9d/d06d53994bb164564ec142ef631a4afa31e324994cf223f169ecca127f3a/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:63257653ee1ee06aa836e942f4bb89a1d7a0c6ae3d6183647a9011e585ffa1e3", size = 71036, upload-time = "2025-04-01T14:53:29.011Z" }, + { url = "https://files.pythonhosted.org/packages/32/3d/97f775a1d582548b1eb2a42444c58813e5fd93d568fc3b9ace59f64df527/libusb_package-1.0.26.3-cp313-cp313-win32.whl", hash = "sha256:05db4cc801db2e6373a808725748a701509f9450fecf393fbebab61c45d50b50", size = 77642, upload-time = "2025-04-01T12:58:07.774Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c4/d5234607697ca60593fbef88428a154317ac31f5c58ee23337b8a9360e91/libusb_package-1.0.26.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cd4aec825dac2b4fa5d23b37f6d72e63a1127987e5a073dabeb7b73528623a3", size = 90593, upload-time = "2025-04-01T12:58:08.676Z" }, +] + +[[package]] +name = "license-expression" +version = "30.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "boolean-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload-time = "2025-07-22T11:13:32.17Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload-time = "2025-07-22T11:13:31.217Z" }, +] + +[[package]] +name = "lxml" +version = "5.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/6b/20c3a4b24751377aaa6307eb230b66701024012c29dd374999cc92983269/lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f", size = 3679318, upload-time = "2024-08-10T18:17:29.668Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/6a/42141e4d373903bfea6f8e94b2f554d05506dfda522ada5343c651410dc8/lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a", size = 8156284, upload-time = "2024-08-10T18:12:10.439Z" }, + { url = "https://files.pythonhosted.org/packages/91/5e/fa097f0f7d8b3d113fb7312c6308af702f2667f22644441715be961f2c7e/lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd", size = 4432407, upload-time = "2024-08-10T18:12:13.917Z" }, + { url = "https://files.pythonhosted.org/packages/2d/a1/b901988aa6d4ff937f2e5cfc114e4ec561901ff00660c3e56713642728da/lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51", size = 5048331, upload-time = "2024-08-10T18:12:17.204Z" }, + { url = "https://files.pythonhosted.org/packages/30/0f/b2a54f48e52de578b71bbe2a2f8160672a8a5e103df3a78da53907e8c7ed/lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b", size = 4744835, upload-time = "2024-08-10T18:12:21.172Z" }, + { url = "https://files.pythonhosted.org/packages/82/9d/b000c15538b60934589e83826ecbc437a1586488d7c13f8ee5ff1f79a9b8/lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002", size = 5316649, upload-time = "2024-08-10T18:12:24.897Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ee/ffbb9eaff5e541922611d2c56b175c45893d1c0b8b11e5a497708a6a3b3b/lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4", size = 4812046, upload-time = "2024-08-10T18:12:29.028Z" }, + { url = "https://files.pythonhosted.org/packages/15/ff/7ff89d567485c7b943cdac316087f16b2399a8b997007ed352a1248397e5/lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492", size = 4918597, upload-time = "2024-08-10T18:12:32.278Z" }, + { url = "https://files.pythonhosted.org/packages/c6/a3/535b6ed8c048412ff51268bdf4bf1cf052a37aa7e31d2e6518038a883b29/lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3", size = 4738071, upload-time = "2024-08-10T18:12:35.407Z" }, + { url = "https://files.pythonhosted.org/packages/7a/8f/cbbfa59cb4d4fd677fe183725a76d8c956495d7a3c7f111ab8f5e13d2e83/lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4", size = 5342213, upload-time = "2024-08-10T18:12:38.73Z" }, + { url = "https://files.pythonhosted.org/packages/5c/fb/db4c10dd9958d4b52e34d1d1f7c1f434422aeaf6ae2bbaaff2264351d944/lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367", size = 4893749, upload-time = "2024-08-10T18:12:42.606Z" }, + { url = "https://files.pythonhosted.org/packages/f2/38/bb4581c143957c47740de18a3281a0cab7722390a77cc6e610e8ebf2d736/lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832", size = 4945901, upload-time = "2024-08-10T18:12:45.944Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d5/18b7de4960c731e98037bd48fa9f8e6e8f2558e6fbca4303d9b14d21ef3b/lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff", size = 4815447, upload-time = "2024-08-10T18:12:49.051Z" }, + { url = "https://files.pythonhosted.org/packages/97/a8/cd51ceaad6eb849246559a8ef60ae55065a3df550fc5fcd27014361c1bab/lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd", size = 5411186, upload-time = "2024-08-10T18:12:52.388Z" }, + { url = "https://files.pythonhosted.org/packages/89/c3/1e3dabab519481ed7b1fdcba21dcfb8832f57000733ef0e71cf6d09a5e03/lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb", size = 5324481, upload-time = "2024-08-10T18:12:56.021Z" }, + { url = "https://files.pythonhosted.org/packages/b6/17/71e9984cf0570cd202ac0a1c9ed5c1b8889b0fc8dc736f5ef0ffb181c284/lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b", size = 5011053, upload-time = "2024-08-10T18:12:59.714Z" }, + { url = "https://files.pythonhosted.org/packages/69/68/9f7e6d3312a91e30829368c2b3217e750adef12a6f8eb10498249f4e8d72/lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957", size = 3485634, upload-time = "2024-08-10T18:13:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/7d/db/214290d58ad68c587bd5d6af3d34e56830438733d0d0856c0275fde43652/lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d", size = 3814417, upload-time = "2024-08-10T18:13:05.791Z" }, +] + +[[package]] +name = "markdown" +version = "3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086, upload-time = "2024-08-16T15:55:17.812Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349, upload-time = "2024-08-16T15:55:16.176Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, +] + +[[package]] +name = "markupsafe" +version = "2.1.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384, upload-time = "2024-02-02T16:31:22.863Z" } + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mock" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/8c/14c2ae915e5f9dca5a22edd68b35be94400719ccfa068a03e0fb63d0f6f6/mock-5.2.0.tar.gz", hash = "sha256:4e460e818629b4b173f32d08bf30d3af8123afbb8e04bb5707a1fd4799e503f0", size = 92796, upload-time = "2025-03-03T12:31:42.911Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/d9/617e6af809bf3a1d468e0d58c3997b1dc219a9a9202e650d30c2fc85d481/mock-5.2.0-py3-none-any.whl", hash = "sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f", size = 31617, upload-time = "2025-03-03T12:31:41.518Z" }, +] + +[[package]] +name = "mypy" +version = "1.18.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload-time = "2025-09-19T00:11:10.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728, upload-time = "2025-09-19T00:10:01.33Z" }, + { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758, upload-time = "2025-09-19T00:10:42.607Z" }, + { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342, upload-time = "2025-09-19T00:11:00.371Z" }, + { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709, upload-time = "2025-09-19T00:11:03.358Z" }, + { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806, upload-time = "2025-09-19T00:10:26.073Z" }, + { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262, upload-time = "2025-09-19T00:10:40.035Z" }, + { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775, upload-time = "2025-09-19T00:10:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852, upload-time = "2025-09-19T00:10:51.631Z" }, + { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242, upload-time = "2025-09-19T00:11:07.955Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683, upload-time = "2025-09-19T00:09:55.572Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749, upload-time = "2025-09-19T00:10:44.827Z" }, + { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959, upload-time = "2025-09-19T00:10:37.344Z" }, + { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload-time = "2025-09-19T00:10:15.489Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "natsort" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575, upload-time = "2023-06-20T04:17:19.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" }, +] + +[[package]] +name = "ninja" +version = "1.11.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/d4/6b0324541018561c5e73e617bd16f20a4fc17d1179bb3b3520b6ca8beb7b/ninja-1.11.1.4.tar.gz", hash = "sha256:6aa39f6e894e0452e5b297327db00019383ae55d5d9c57c73b04f13bf79d438a", size = 201256, upload-time = "2025-03-22T06:46:43.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4f/b1/3a61b348936b62a386465b1937cd778fa3a5748582e26d832dbab844ff27/ninja-1.11.1.4-py3-none-macosx_10_9_universal2.whl", hash = "sha256:b33923c8da88e8da20b6053e38deb433f53656441614207e01d283ad02c5e8e7", size = 279071, upload-time = "2025-03-22T06:46:17.806Z" }, + { url = "https://files.pythonhosted.org/packages/12/42/4c94fdad51fcf1f039a156e97de9e4d564c2a8cc0303782d36f9bd893a4b/ninja-1.11.1.4-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cede0af00b58e27b31f2482ba83292a8e9171cdb9acc2c867a3b6e40b3353e43", size = 472026, upload-time = "2025-03-22T06:46:19.974Z" }, + { url = "https://files.pythonhosted.org/packages/eb/7a/455d2877fe6cf99886849c7f9755d897df32eaf3a0fba47b56e615f880f7/ninja-1.11.1.4-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:096487995473320de7f65d622c3f1d16c3ad174797602218ca8c967f51ec38a0", size = 422814, upload-time = "2025-03-22T06:46:21.235Z" }, + { url = "https://files.pythonhosted.org/packages/e3/ad/fb6cca942528e25e8e0ab0f0cf98fe007319bf05cf69d726c564b815c4af/ninja-1.11.1.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3090d4488fadf6047d0d7a1db0c9643a8d391f0d94729554dbb89b5bdc769d7", size = 156965, upload-time = "2025-03-22T06:46:23.45Z" }, + { url = "https://files.pythonhosted.org/packages/a8/e7/d94a1b60031b115dd88526834b3da69eaacdc3c1a6769773ca8e2b1386b5/ninja-1.11.1.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecce44a00325a93631792974659cf253a815cc6da4ec96f89742925dfc295a0d", size = 179937, upload-time = "2025-03-22T06:46:24.728Z" }, + { url = "https://files.pythonhosted.org/packages/08/cc/e9316a28235409e9363794fc3d0b3083e48dd80d441006de66421e55f364/ninja-1.11.1.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c29bb66d2aa46a2409ab369ea804c730faec7652e8c22c1e428cc09216543e5", size = 157020, upload-time = "2025-03-22T06:46:26.046Z" }, + { url = "https://files.pythonhosted.org/packages/e3/30/389b22300541aa5f2e9dad322c4de2f84be4e32aa4e8babd9160d620b5f1/ninja-1.11.1.4-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:055f386fb550c2c9d6157e45e20a84d29c47968876b9c5794ae2aec46f952306", size = 130389, upload-time = "2025-03-22T06:46:27.174Z" }, + { url = "https://files.pythonhosted.org/packages/a9/10/e27f35cb92813aabbb7ae771b1685b45be1cc8a0798ce7d4bfd08d142b93/ninja-1.11.1.4-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:f6186d7607bb090c3be1e10c8a56b690be238f953616626f5032238c66e56867", size = 372435, upload-time = "2025-03-22T06:46:28.637Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/e3559619756739aae124c6abf7fe41f7e546ab1209cfbffb13137bff2d2e/ninja-1.11.1.4-py3-none-musllinux_1_1_i686.whl", hash = "sha256:cf4453679d15babc04ba023d68d091bb613091b67101c88f85d2171c6621c6eb", size = 419300, upload-time = "2025-03-22T06:46:30.392Z" }, + { url = "https://files.pythonhosted.org/packages/35/46/809e4e9572570991b8e6f88f3583807d017371ab4cb09171cbc72a7eb3e4/ninja-1.11.1.4-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:d4a6f159b08b0ac4aca5ee1572e3e402f969139e71d85d37c0e2872129098749", size = 420239, upload-time = "2025-03-22T06:46:32.442Z" }, + { url = "https://files.pythonhosted.org/packages/e6/64/5cb5710d15f844edf02ada577f8eddfdcd116f47eec15850f3371a3a4b33/ninja-1.11.1.4-py3-none-musllinux_1_1_s390x.whl", hash = "sha256:c3b96bd875f3ef1db782470e9e41d7508905a0986571f219d20ffed238befa15", size = 415986, upload-time = "2025-03-22T06:46:33.821Z" }, + { url = "https://files.pythonhosted.org/packages/95/b2/0e9ab1d926f423b12b09925f78afcc5e48b3c22e7121be3ddf6c35bf06a3/ninja-1.11.1.4-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:cf554e73f72c04deb04d0cf51f5fdb1903d9c9ca3d2344249c8ce3bd616ebc02", size = 379657, upload-time = "2025-03-22T06:46:36.166Z" }, + { url = "https://files.pythonhosted.org/packages/c8/3e/fd6d330d0434168e7fe070d414b57dd99c4c133faa69c05b42a3cbdc6c13/ninja-1.11.1.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:cfdd09776436a1ff3c4a2558d3fc50a689fb9d7f1bdbc3e6f7b8c2991341ddb3", size = 454466, upload-time = "2025-03-22T06:46:37.413Z" }, + { url = "https://files.pythonhosted.org/packages/e6/df/a25f3ad0b1c59d1b90564096e4fd89a6ca30d562b1e942f23880c3000b89/ninja-1.11.1.4-py3-none-win32.whl", hash = "sha256:2ab67a41c90bea5ec4b795bab084bc0b3b3bb69d3cd21ca0294fc0fc15a111eb", size = 255931, upload-time = "2025-03-22T06:46:39.171Z" }, + { url = "https://files.pythonhosted.org/packages/5b/10/9b8fe9ac004847490cc7b54896124c01ce2d87d95dc60aabd0b8591addff/ninja-1.11.1.4-py3-none-win_amd64.whl", hash = "sha256:4617b3c12ff64b611a7d93fd9e378275512bb36eff8babff7c83f5116b4f8d66", size = 296461, upload-time = "2025-03-22T06:46:40.532Z" }, + { url = "https://files.pythonhosted.org/packages/b9/58/612a17593c2d117f96c7f6b7f1e6570246bddc4b1e808519403a1417f217/ninja-1.11.1.4-py3-none-win_arm64.whl", hash = "sha256:5713cf50c5be50084a8693308a63ecf9e55c3132a78a41ab1363a28b6caaaee1", size = 271441, upload-time = "2025-03-22T06:46:42.147Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "packaging" +version = "24.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788, upload-time = "2024-06-09T23:19:24.956Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985, upload-time = "2024-06-09T23:19:21.909Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "patool" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/93/c7/f9d5c6f9c51433d95399e40c9dd214f2b44bdcb79cbbd86028f55535725e/patool-4.0.1.tar.gz", hash = "sha256:41f7ee21be337a5baf07b2cb4796e9d94397ab741d2379c622f98fc001099802", size = 2006713, upload-time = "2025-05-02T19:08:16.768Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/07/a7aefd5b3ee565b4d959bcf7061666c7fbf66ed83e58d07cdcdca35c9b33/patool-4.0.1-py2.py3-none-any.whl", hash = "sha256:a7430eb08edcbd71feaf9c40f55c46f6a0ac385dc68dd0f5010cfa4ad2e9341a", size = 86512, upload-time = "2025-05-02T19:08:19.407Z" }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pip" +version = "25.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/16/650289cd3f43d5a2fadfd98c68bd1e1e7f2550a1a5326768cddfbcedb2c5/pip-25.2.tar.gz", hash = "sha256:578283f006390f85bb6282dffb876454593d637f5d1be494b5202ce4877e71f2", size = 1840021, upload-time = "2025-07-30T21:50:15.401Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/3f/945ef7ab14dc4f9d7f40288d2df998d1837ee0888ec3659c813487572faa/pip-25.2-py3-none-any.whl", hash = "sha256:6d67a2b4e7f14d8b31b8b52648866fa717f45a1eb70e83002f4331d07e953717", size = 1752557, upload-time = "2025-07-30T21:50:13.323Z" }, +] + +[[package]] +name = "pluggy" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, +] + +[[package]] +name = "ply" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, +] + +[[package]] +name = "prettytable" +version = "3.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/b1/85e18ac92afd08c533603e3393977b6bc1443043115a47bb094f3b98f94f/prettytable-3.16.0.tar.gz", hash = "sha256:3c64b31719d961bf69c9a7e03d0c1e477320906a98da63952bc6698d6164ff57", size = 66276, upload-time = "2025-03-24T19:39:04.008Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/c7/5613524e606ea1688b3bdbf48aa64bafb6d0a4ac3750274c43b6158a390f/prettytable-3.16.0-py3-none-any.whl", hash = "sha256:b5eccfabb82222f5aa46b798ff02a8452cf530a352c31bddfa29be41242863aa", size = 33863, upload-time = "2025-03-24T19:39:02.359Z" }, +] + +[[package]] +name = "progress" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ac/26/3b086f0c5d6c1c18c2430d6fac3a99d79553884ca6cdf759cf256dd43b7d/progress-1.6.1.tar.gz", hash = "sha256:c1ba719f862ce885232a759eab47971fe74dfc7bb76ab8a51ef5940bad35086c", size = 7164, upload-time = "2025-07-01T05:50:43.33Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/59/123aee44a039b212cfb8d90be1adf06496a99b313ee1683aadf90b3d9799/progress-1.6.1-py3-none-any.whl", hash = "sha256:5239f22f305c12fdc8ce6e0e47f70f21622a935e16eafc4535617112e7c7ea0b", size = 9761, upload-time = "2025-07-01T05:50:40.963Z" }, +] + +[[package]] +name = "proves-core-reference" +version = "0.1.0" +source = { editable = "." } +dependencies = [ + { name = "aniso8601" }, + { name = "annotated-types" }, + { name = "anytree" }, + { name = "argcomplete" }, + { name = "arrow" }, + { name = "binaryornot" }, + { name = "blinker" }, + { name = "brotli" }, + { name = "canopen" }, + { name = "cbor" }, + { name = "certifi" }, + { name = "chardet" }, + { name = "charset-normalizer" }, + { name = "clang-format" }, + { name = "click" }, + { name = "cmake" }, + { name = "colorama" }, + { name = "colorlog" }, + { name = "cookiecutter" }, + { name = "coverage" }, + { name = "ct3" }, + { name = "et-xmlfile" }, + { name = "flask" }, + { name = "flask-compress" }, + { name = "flask-restful" }, + { name = "fprime-fpl-layout" }, + { name = "fprime-fpl-write-pic" }, + { name = "fprime-fpp" }, + { name = "fprime-gds" }, + { name = "fprime-tools" }, + { name = "fprime-visual" }, + { name = "gcovr" }, + { name = "idna" }, + { name = "importlib-metadata" }, + { name = "iniconfig" }, + { name = "intelhex" }, + { name = "itsdangerous" }, + { name = "jinja2" }, + { name = "junitparser" }, + { name = "legacy-cgi" }, + { name = "lxml" }, + { name = "markdown" }, + { name = "markdown-it-py" }, + { name = "markupsafe" }, + { name = "mdurl" }, + { name = "mock" }, + { name = "mypy" }, + { name = "natsort" }, + { name = "ninja" }, + { name = "openpyxl" }, + { name = "packaging" }, + { name = "patool" }, + { name = "pexpect" }, + { name = "pip" }, + { name = "pluggy" }, + { name = "ply" }, + { name = "progress" }, + { name = "psutil" }, + { name = "ptyprocess" }, + { name = "pydantic" }, + { name = "pydantic-core" }, + { name = "pyelftools" }, + { name = "pygments" }, + { name = "pykwalify" }, + { name = "pylink-square" }, + { name = "pyocd" }, + { name = "pyserial" }, + { name = "pytest" }, + { name = "python-can" }, + { name = "python-dateutil" }, + { name = "python-slugify" }, + { name = "pytz" }, + { name = "pyyaml" }, + { name = "pyzmq" }, + { name = "requests" }, + { name = "reuse" }, + { name = "rich" }, + { name = "semver" }, + { name = "setuptools" }, + { name = "six" }, + { name = "spdx-tools" }, + { name = "tabulate" }, + { name = "text-unidecode" }, + { name = "tomli" }, + { name = "tqdm" }, + { name = "types-python-dateutil" }, + { name = "typing-extensions" }, + { name = "urllib3" }, + { name = "werkzeug" }, + { name = "west" }, + { name = "windows-curses", marker = "sys_platform == 'win32'" }, + { name = "zipp" }, + { name = "zstandard" }, +] + +[package.metadata] +requires-dist = [ + { name = "aniso8601", specifier = "==9.0.1" }, + { name = "annotated-types", specifier = "==0.7.0" }, + { name = "anytree" }, + { name = "argcomplete", specifier = "==3.5.1" }, + { name = "arrow", specifier = "==1.3.0" }, + { name = "binaryornot", specifier = "==0.4.4" }, + { name = "blinker", specifier = "==1.8.2" }, + { name = "brotli", specifier = "==1.1.0" }, + { name = "canopen" }, + { name = "cbor", specifier = ">=1.0.0" }, + { name = "certifi", specifier = "==2024.8.30" }, + { name = "chardet", specifier = "==5.2.0" }, + { name = "charset-normalizer", specifier = "==3.4.0" }, + { name = "clang-format", specifier = "==20.1.8" }, + { name = "click", specifier = "==8.1.7" }, + { name = "cmake", specifier = "==3.26.0" }, + { name = "colorama" }, + { name = "colorlog", specifier = "==6.8.2" }, + { name = "cookiecutter", specifier = "==2.6.0" }, + { name = "coverage" }, + { name = "ct3", specifier = "==3.3.3.post1" }, + { name = "et-xmlfile", specifier = "==1.1.0" }, + { name = "flask", specifier = "==3.0.3" }, + { name = "flask-compress", specifier = "==1.15" }, + { name = "flask-restful", specifier = "==0.3.10" }, + { name = "fprime-fpl-layout", specifier = "==1.0.3" }, + { name = "fprime-fpl-write-pic", specifier = "==1.0.3" }, + { name = "fprime-fpp", specifier = "==3.0.0" }, + { name = "fprime-gds", specifier = "==4.0.1" }, + { name = "fprime-tools", specifier = "==4.0.1" }, + { name = "fprime-visual", specifier = "==1.0.2" }, + { name = "gcovr", specifier = "==8.2" }, + { name = "gcovr", specifier = ">=6.0" }, + { name = "idna", specifier = "==3.10" }, + { name = "importlib-metadata", specifier = "==6.7.0" }, + { name = "iniconfig", specifier = "==2.0.0" }, + { name = "intelhex" }, + { name = "itsdangerous", specifier = "==2.2.0" }, + { name = "jinja2", specifier = "==3.1.6" }, + { name = "junitparser" }, + { name = "legacy-cgi", marker = "python_full_version >= '3.13'", specifier = "==2.6.1" }, + { name = "lxml", specifier = "==5.3.0" }, + { name = "markdown", specifier = "==3.7" }, + { name = "markdown-it-py", specifier = "==3.0.0" }, + { name = "markupsafe", specifier = "==2.1.5" }, + { name = "mdurl", specifier = "==0.1.2" }, + { name = "mock", specifier = ">=4.0.1" }, + { name = "mypy" }, + { name = "natsort" }, + { name = "ninja", specifier = "==1.11.1.4" }, + { name = "openpyxl", specifier = "==3.1.5" }, + { name = "packaging" }, + { name = "packaging", specifier = "==24.1" }, + { name = "patool", specifier = ">=2.0.0" }, + { name = "pexpect", specifier = "==4.9.0" }, + { name = "pip" }, + { name = "pluggy", specifier = "==1.5.0" }, + { name = "ply", specifier = ">=3.10" }, + { name = "progress" }, + { name = "psutil", specifier = ">=5.6.6" }, + { name = "ptyprocess", specifier = "==0.7.0" }, + { name = "pydantic", specifier = "==2.9.2" }, + { name = "pydantic-core", specifier = "==2.23.4" }, + { name = "pyelftools", specifier = ">=0.29" }, + { name = "pygments", specifier = "==2.18.0" }, + { name = "pykwalify" }, + { name = "pylink-square" }, + { name = "pyocd", specifier = ">=0.35.0" }, + { name = "pyserial" }, + { name = "pyserial", specifier = "==3.5" }, + { name = "pytest" }, + { name = "pytest", specifier = "==8.3.3" }, + { name = "python-can", specifier = ">=4.3.0" }, + { name = "python-dateutil", specifier = "==2.9.0.post0" }, + { name = "python-slugify", specifier = "==8.0.4" }, + { name = "pytz", specifier = "==2024.2" }, + { name = "pyyaml", specifier = "==6.0.2" }, + { name = "pyyaml", specifier = ">=6.0" }, + { name = "pyzmq", specifier = "==26.2.0" }, + { name = "requests", specifier = "==2.32.4" }, + { name = "requests", specifier = ">=2.32.0" }, + { name = "reuse" }, + { name = "rich", specifier = "==13.9.2" }, + { name = "semver" }, + { name = "setuptools", specifier = "==78.1.1" }, + { name = "six", specifier = "==1.16.0" }, + { name = "spdx-tools" }, + { name = "tabulate" }, + { name = "text-unidecode", specifier = "==1.3" }, + { name = "tomli", specifier = "==2.0.1" }, + { name = "tqdm", specifier = ">=4.67.1" }, + { name = "types-python-dateutil", specifier = "==2.9.0.20241003" }, + { name = "typing-extensions", specifier = "==4.12.2" }, + { name = "urllib3", specifier = "==2.5.0" }, + { name = "werkzeug", specifier = "==3.0.6" }, + { name = "west" }, + { name = "west", specifier = ">=0.14.0" }, + { name = "windows-curses", marker = "sys_platform == 'win32'" }, + { name = "zipp", specifier = "==3.19.1" }, + { name = "zstandard", specifier = "==0.23.0" }, +] + +[[package]] +name = "psutil" +version = "7.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/31/4723d756b59344b643542936e37a31d1d3204bcdc42a7daa8ee9eb06fb50/psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2", size = 497660, upload-time = "2025-09-17T20:14:52.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/62/ce4051019ee20ce0ed74432dd73a5bb087a6704284a470bb8adff69a0932/psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13", size = 245242, upload-time = "2025-09-17T20:14:56.126Z" }, + { url = "https://files.pythonhosted.org/packages/38/61/f76959fba841bf5b61123fbf4b650886dc4094c6858008b5bf73d9057216/psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5", size = 246682, upload-time = "2025-09-17T20:14:58.25Z" }, + { url = "https://files.pythonhosted.org/packages/88/7a/37c99d2e77ec30d63398ffa6a660450b8a62517cabe44b3e9bae97696e8d/psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3", size = 287994, upload-time = "2025-09-17T20:14:59.901Z" }, + { url = "https://files.pythonhosted.org/packages/9d/de/04c8c61232f7244aa0a4b9a9fbd63a89d5aeaf94b2fc9d1d16e2faa5cbb0/psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3", size = 291163, upload-time = "2025-09-17T20:15:01.481Z" }, + { url = "https://files.pythonhosted.org/packages/f4/58/c4f976234bf6d4737bc8c02a81192f045c307b72cf39c9e5c5a2d78927f6/psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d", size = 293625, upload-time = "2025-09-17T20:15:04.492Z" }, + { url = "https://files.pythonhosted.org/packages/79/87/157c8e7959ec39ced1b11cc93c730c4fb7f9d408569a6c59dbd92ceb35db/psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca", size = 244812, upload-time = "2025-09-17T20:15:07.462Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e9/b44c4f697276a7a95b8e94d0e320a7bf7f3318521b23de69035540b39838/psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d", size = 247965, upload-time = "2025-09-17T20:15:09.673Z" }, + { url = "https://files.pythonhosted.org/packages/26/65/1070a6e3c036f39142c2820c4b52e9243246fcfc3f96239ac84472ba361e/psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07", size = 244971, upload-time = "2025-09-17T20:15:12.262Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pycparser" +version = "2.23" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, +] + +[[package]] +name = "pydantic" +version = "2.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917, upload-time = "2024-09-17T15:59:54.273Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/e4/ba44652d562cbf0bf320e0f3810206149c8a4e99cdbf66da82e97ab53a15/pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12", size = 434928, upload-time = "2024-09-17T15:59:51.827Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.23.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156, upload-time = "2024-09-16T16:06:44.786Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ad/ef/16ee2df472bf0e419b6bc68c05bf0145c49247a1095e85cee1463c6a44a1/pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", size = 1856143, upload-time = "2024-09-16T16:04:59.062Z" }, + { url = "https://files.pythonhosted.org/packages/da/fa/bc3dbb83605669a34a93308e297ab22be82dfb9dcf88c6cf4b4f264e0a42/pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", size = 1770063, upload-time = "2024-09-16T16:05:00.522Z" }, + { url = "https://files.pythonhosted.org/packages/4e/48/e813f3bbd257a712303ebdf55c8dc46f9589ec74b384c9f652597df3288d/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", size = 1790013, upload-time = "2024-09-16T16:05:02.619Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e0/56eda3a37929a1d297fcab1966db8c339023bcca0b64c5a84896db3fcc5c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", size = 1801077, upload-time = "2024-09-16T16:05:04.154Z" }, + { url = "https://files.pythonhosted.org/packages/04/be/5e49376769bfbf82486da6c5c1683b891809365c20d7c7e52792ce4c71f3/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", size = 1996782, upload-time = "2024-09-16T16:05:06.931Z" }, + { url = "https://files.pythonhosted.org/packages/bc/24/e3ee6c04f1d58cc15f37bcc62f32c7478ff55142b7b3e6d42ea374ea427c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", size = 2661375, upload-time = "2024-09-16T16:05:08.773Z" }, + { url = "https://files.pythonhosted.org/packages/c1/f8/11a9006de4e89d016b8de74ebb1db727dc100608bb1e6bbe9d56a3cbbcce/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", size = 2071635, upload-time = "2024-09-16T16:05:10.456Z" }, + { url = "https://files.pythonhosted.org/packages/7c/45/bdce5779b59f468bdf262a5bc9eecbae87f271c51aef628d8c073b4b4b4c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", size = 1916994, upload-time = "2024-09-16T16:05:12.051Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fa/c648308fe711ee1f88192cad6026ab4f925396d1293e8356de7e55be89b5/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", size = 1968877, upload-time = "2024-09-16T16:05:14.021Z" }, + { url = "https://files.pythonhosted.org/packages/16/16/b805c74b35607d24d37103007f899abc4880923b04929547ae68d478b7f4/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", size = 2116814, upload-time = "2024-09-16T16:05:15.684Z" }, + { url = "https://files.pythonhosted.org/packages/d1/58/5305e723d9fcdf1c5a655e6a4cc2a07128bf644ff4b1d98daf7a9dbf57da/pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", size = 1738360, upload-time = "2024-09-16T16:05:17.258Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411, upload-time = "2024-09-16T16:05:18.934Z" }, +] + +[[package]] +name = "pyelftools" +version = "0.32" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/ab/33968940b2deb3d92f5b146bc6d4009a5f95d1d06c148ea2f9ee965071af/pyelftools-0.32.tar.gz", hash = "sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5", size = 15047199, upload-time = "2025-02-19T14:20:05.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/43/700932c4f0638c3421177144a2e86448c0d75dbaee2c7936bda3f9fd0878/pyelftools-0.32-py3-none-any.whl", hash = "sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738", size = 188525, upload-time = "2025-02-19T14:19:59.919Z" }, +] + +[[package]] +name = "pygments" +version = "2.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905, upload-time = "2024-05-04T13:42:02.013Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513, upload-time = "2024-05-04T13:41:57.345Z" }, +] + +[[package]] +name = "pykwalify" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "docopt" }, + { name = "python-dateutil" }, + { name = "ruamel-yaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/77/2d6849510dbfce5f74f1f69768763630ad0385ad7bb0a4f39b55de3920c7/pykwalify-1.8.0.tar.gz", hash = "sha256:796b2ad3ed4cb99b88308b533fb2f559c30fa6efb4fa9fda11347f483d245884", size = 62462, upload-time = "2020-12-30T22:31:10.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/fd/ac2161cce19fd67a18c269073f8e86292b5511acec6f8ef6eab88615d032/pykwalify-1.8.0-py2.py3-none-any.whl", hash = "sha256:731dfa87338cca9f559d1fca2bdea37299116e3139b73f78ca90a543722d6651", size = 24860, upload-time = "2020-12-30T22:31:09.09Z" }, +] + +[[package]] +name = "pylink-square" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "psutil" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/26/12865d2b7784d2ff687d6dc29eea38013688d47a5499df60010e1f13ba4f/pylink_square-1.7.0.tar.gz", hash = "sha256:9a4c4b1cf0cffedd15e00f82c3e23745252a5094c96b27560daac25a0d08aa36", size = 173502, upload-time = "2025-08-28T15:56:47.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/b8/db67ffbb71881b02c169b638bc53c9a1bf0d8f41828e3b48974e77f34419/pylink_square-1.7.0-py2.py3-none-any.whl", hash = "sha256:f418db3479b3b86e45f821f88cea5397357beed382eb441ab2fd11e1d4d9e1e3", size = 86908, upload-time = "2025-08-28T15:56:46.171Z" }, +] + +[[package]] +name = "pyocd" +version = "0.39.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "capstone" }, + { name = "cmsis-pack-manager" }, + { name = "colorama" }, + { name = "hidapi", marker = "sys_platform != 'linux'" }, + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "intelhex" }, + { name = "intervaltree" }, + { name = "lark" }, + { name = "libusb-package" }, + { name = "natsort" }, + { name = "prettytable" }, + { name = "pyelftools" }, + { name = "pylink-square" }, + { name = "pyusb" }, + { name = "pyyaml" }, + { name = "six" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/15/77a3b791da7b8de65bf881914fa21fc4c523bd185bbab8fd39de0411dbcf/pyocd-0.39.0.tar.gz", hash = "sha256:2fa4bf224229a16ba6d213deba2889331c332188fd4316d942f80629689cb03b", size = 16120819, upload-time = "2025-09-11T12:31:29.802Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/15/574712b2b78bdab957d41bfbc4b01bf0f0824209c473d661e3fbeda4cd16/pyocd-0.39.0-py3-none-any.whl", hash = "sha256:d3cc24d1409b1c16989c4ed518423fd5442428984d84c97f982f8c5a45e62fae", size = 14542807, upload-time = "2025-09-11T12:31:26.116Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, +] + +[[package]] +name = "pyserial" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125, upload-time = "2020-11-23T03:59:15.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585, upload-time = "2020-11-23T03:59:13.41Z" }, +] + +[[package]] +name = "pytest" +version = "8.3.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487, upload-time = "2024-09-10T10:52:15.003Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341, upload-time = "2024-09-10T10:52:12.54Z" }, +] + +[[package]] +name = "python-can" +version = "4.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "typing-extensions" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/f9/a9d99d36dd33be5badb747801c9255c3c526171a5542092eaacc73350fb8/python_can-4.6.1.tar.gz", hash = "sha256:290fea135d04b8504ebff33889cc6d301e2181a54099116609f940825ffe5005", size = 1206049, upload-time = "2025-08-12T07:44:58.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/34/e4ac153acdbcfba7f48bc73d6586a74c91cc919fcc2e29acbf81be329d1f/python_can-4.6.1-py3-none-any.whl", hash = "sha256:17f95255868a95108dcfcb90565a684dad32d5a3ebb35afd14f739e18c84ff6c", size = 276996, upload-time = "2025-08-12T07:44:56.55Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-debian" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "charset-normalizer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload-time = "2025-03-11T12:27:27.245Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload-time = "2025-03-11T12:27:25.014Z" }, +] + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, +] + +[[package]] +name = "pytz" +version = "2024.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692, upload-time = "2024-09-11T02:24:47.91Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002, upload-time = "2024-09-11T02:24:45.8Z" }, +] + +[[package]] +name = "pyusb" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/6b/ce3727395e52b7b76dfcf0c665e37d223b680b9becc60710d4bc08b7b7cb/pyusb-1.3.1.tar.gz", hash = "sha256:3af070b607467c1c164f49d5b0caabe8ac78dbed9298d703a8dbf9df4052d17e", size = 77281, upload-time = "2025-01-08T23:45:01.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/b8/27e6312e86408a44fe16bd28ee12dd98608b39f7e7e57884a24e8f29b573/pyusb-1.3.1-py3-none-any.whl", hash = "sha256:bf9b754557af4717fe80c2b07cc2b923a9151f5c08d17bdb5345dac09d6a0430", size = 58465, upload-time = "2025-01-08T23:45:00.029Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "pyzmq" +version = "26.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975, upload-time = "2024-08-22T09:02:03.351Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564, upload-time = "2024-08-22T09:00:11.054Z" }, + { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447, upload-time = "2024-08-22T09:00:12.547Z" }, + { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485, upload-time = "2024-08-22T09:00:14.205Z" }, + { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484, upload-time = "2024-08-22T09:00:16.148Z" }, + { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981, upload-time = "2024-08-22T09:00:17.443Z" }, + { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334, upload-time = "2024-08-22T09:00:18.65Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179, upload-time = "2024-08-22T09:00:19.981Z" }, + { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668, upload-time = "2024-08-22T09:00:21.249Z" }, + { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539, upload-time = "2024-08-22T09:00:22.742Z" }, + { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567, upload-time = "2024-08-22T09:00:24.2Z" }, + { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551, upload-time = "2024-08-22T09:00:25.58Z" }, + { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378, upload-time = "2024-08-22T09:00:27.572Z" }, + { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378, upload-time = "2024-08-22T09:00:29.274Z" }, + { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532, upload-time = "2024-08-22T09:00:30.683Z" }, + { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242, upload-time = "2024-08-22T09:00:32.562Z" }, + { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404, upload-time = "2024-08-22T09:00:33.982Z" }, + { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858, upload-time = "2024-08-22T09:00:35.251Z" }, + { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375, upload-time = "2024-08-22T09:00:36.546Z" }, + { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489, upload-time = "2024-08-22T09:00:37.819Z" }, + { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932, upload-time = "2024-08-22T09:00:39.127Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485, upload-time = "2024-08-22T09:00:40.432Z" }, +] + +[[package]] +name = "rdflib" +version = "7.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8d/99/d2fec85e5f6bdfe4367dea143119cb4469bf48710487939df0abf7e22003/rdflib-7.2.1.tar.gz", hash = "sha256:cf9b7fa25234e8925da8b1fb09700f8349b5f0f100e785fb4260e737308292ac", size = 4873802, upload-time = "2025-09-19T02:33:36.492Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/98/7fa830bb4b9da21905683a5352aa0a01a1f3082328ae976aad341e980c23/rdflib-7.2.1-py3-none-any.whl", hash = "sha256:1a175bc1386a167a42fbfaba003bfa05c164a2a3ca3cb9c0c97f9c9638ca6ac2", size = 565423, upload-time = "2025-09-19T02:33:30.889Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "reuse" +version = "5.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "binaryornot" }, + { name = "boolean-py" }, + { name = "click" }, + { name = "jinja2" }, + { name = "license-expression" }, + { name = "python-debian" }, + { name = "tomlkit" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/4b/f7/b59fe851b856d0932aedbf311a3d719f30783e27af6d05bb76d77072ab8f/reuse-5.1.1.tar.gz", hash = "sha256:a13914ed8b66b8e5956e96c63203c63d72b55280d348849ccc0eb314c73248cb", size = 419022, upload-time = "2025-09-05T14:50:01.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/95/12451ff8bc2c3e8a5755bc810a538de85444015d44353fc6f7ee8800c0bb/reuse-5.1.1-cp313-cp313-manylinux_2_41_x86_64.whl", hash = "sha256:15a68341949b7ddb3630d8d3a49d9537bbc143ee235dca77cc3f4047237c8299", size = 255386, upload-time = "2025-09-05T14:49:58.576Z" }, +] + +[[package]] +name = "rich" +version = "13.9.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/9e/1784d15b057b0075e5136445aaea92d23955aad2c93eaede673718a40d95/rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c", size = 222843, upload-time = "2024-10-04T11:50:31.453Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/91/5474b84e505a6ccc295b2d322d90ff6aa0746745717839ee0c5fb4fdcceb/rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1", size = 242117, upload-time = "2024-10-04T11:50:29.123Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865, upload-time = "2025-08-19T11:15:10.694Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702, upload-time = "2025-08-19T11:15:07.696Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/39ec4d4b3f91188fad1842748f67d4e749c77c37e353c4e545052ee8e893/ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e", size = 225394, upload-time = "2025-09-22T19:51:23.753Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/ae/e3811f05415594025e96000349d3400978adaed88d8f98d494352d9761ee/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e4f9da7e7549946e02a6122dcad00b7c1168513acb1f8a726b1aaf504a99d32", size = 269205, upload-time = "2025-09-23T14:24:15.06Z" }, + { url = "https://files.pythonhosted.org/packages/72/06/7d51f4688d6d72bb72fa74254e1593c4f5ebd0036be5b41fe39315b275e9/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:dd7546c851e59c06197a7c651335755e74aa383a835878ca86d2c650c07a2f85", size = 137417, upload-time = "2025-09-22T19:50:59.82Z" }, + { url = "https://files.pythonhosted.org/packages/5a/08/b4499234a420ef42960eeb05585df5cc7eb25ccb8c980490b079e6367050/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1c1acc3a0209ea9042cc3cfc0790edd2eddd431a2ec3f8283d081e4d5018571e", size = 642558, upload-time = "2025-09-22T19:51:03.388Z" }, + { url = "https://files.pythonhosted.org/packages/b6/ba/1975a27dedf1c4c33306ee67c948121be8710b19387aada29e2f139c43ee/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2070bf0ad1540d5c77a664de07ebcc45eebd1ddcab71a7a06f26936920692beb", size = 744087, upload-time = "2025-09-22T19:51:00.897Z" }, + { url = "https://files.pythonhosted.org/packages/20/15/8a19a13d27f3bd09fa18813add8380a29115a47b553845f08802959acbce/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd8fe07f49c170e09d76773fb86ad9135e0beee44f36e1576a201b0676d3d1d", size = 699709, upload-time = "2025-09-22T19:51:02.075Z" }, + { url = "https://files.pythonhosted.org/packages/19/ee/8d6146a079ad21e534b5083c9ee4a4c8bec42f79cf87594b60978286b39a/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ff86876889ea478b1381089e55cf9e345707b312beda4986f823e1d95e8c0f59", size = 708926, upload-time = "2025-09-23T18:42:51.707Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/426b714abdc222392e68f3b8ad323930d05a214a27c7e7a0f06c69126401/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1f118b707eece8cf84ecbc3e3ec94d9db879d85ed608f95870d39b2d2efa5dca", size = 740202, upload-time = "2025-09-22T19:51:04.673Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ac/3c5c2b27a183f4fda8a57c82211721c016bcb689a4a175865f7646db9f94/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b30110b29484adc597df6bd92a37b90e63a8c152ca8136aad100a02f8ba6d1b6", size = 765196, upload-time = "2025-09-22T19:51:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/92/2e/06f56a71fd55021c993ed6e848c9b2e5e9cfce180a42179f0ddd28253f7c/ruamel.yaml.clib-0.2.14-cp313-cp313-win32.whl", hash = "sha256:f4e97a1cf0b7a30af9e1d9dad10a5671157b9acee790d9e26996391f49b965a2", size = 98635, upload-time = "2025-09-22T19:51:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/76aba16a1689b50528224b182f71097ece338e7a4ab55e84c2e73443b78a/ruamel.yaml.clib-0.2.14-cp313-cp313-win_amd64.whl", hash = "sha256:090782b5fb9d98df96509eecdbcaffd037d47389a89492320280d52f91330d78", size = 115238, upload-time = "2025-09-22T19:51:07.081Z" }, + { url = "https://files.pythonhosted.org/packages/21/e2/a59ff65c26aaf21a24eb38df777cb9af5d87ba8fc8107c163c2da9d1e85e/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7df6f6e9d0e33c7b1d435defb185095386c469109de723d514142632a7b9d07f", size = 271441, upload-time = "2025-09-23T14:24:16.498Z" }, + { url = "https://files.pythonhosted.org/packages/6b/fa/3234f913fe9a6525a7b97c6dad1f51e72b917e6872e051a5e2ffd8b16fbb/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:70eda7703b8126f5e52fcf276e6c0f40b0d314674f896fc58c47b0aef2b9ae83", size = 137970, upload-time = "2025-09-22T19:51:09.472Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ec/4edbf17ac2c87fa0845dd366ef8d5852b96eb58fcd65fc1ecf5fe27b4641/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a0cb71ccc6ef9ce36eecb6272c81afdc2f565950cdcec33ae8e6cd8f7fc86f27", size = 739639, upload-time = "2025-09-22T19:51:10.566Z" }, + { url = "https://files.pythonhosted.org/packages/15/18/b0e1fafe59051de9e79cdd431863b03593ecfa8341c110affad7c8121efc/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7cb9ad1d525d40f7d87b6df7c0ff916a66bc52cb61b66ac1b2a16d0c1b07640", size = 764456, upload-time = "2025-09-22T19:51:11.736Z" }, +] + +[[package]] +name = "semantic-version" +version = "2.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289, upload-time = "2022-05-26T13:35:23.454Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" }, +] + +[[package]] +name = "semver" +version = "3.0.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload-time = "2025-01-24T13:19:27.617Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload-time = "2025-01-24T13:19:24.949Z" }, +] + +[[package]] +name = "setuptools" +version = "78.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/81/9c/42314ee079a3e9c24b27515f9fbc7a3c1d29992c33451779011c74488375/setuptools-78.1.1.tar.gz", hash = "sha256:fcc17fd9cd898242f6b4adfaca46137a9edef687f43e6f78469692a5e70d851d", size = 1368163, upload-time = "2025-04-19T18:23:36.68Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl", hash = "sha256:c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561", size = 1256462, upload-time = "2025-04-19T18:23:34.525Z" }, +] + +[[package]] +name = "six" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041, upload-time = "2021-05-05T14:18:18.379Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053, upload-time = "2021-05-05T14:18:17.237Z" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, +] + +[[package]] +name = "spacepackets" +version = "0.31.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecation" }, + { name = "fastcrc" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/d2/eb00fbe85e013084bea0a55a32f3d22ddbc9ec1f5e0251de2e66ee66e163/spacepackets-0.31.0.tar.gz", hash = "sha256:6ba8923bff04ada31c49bc4a35b98ad43bc0cf85bdc80f4f1db902d014aca341", size = 127775, upload-time = "2025-09-10T14:30:25.675Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/93/c864fa5a7dff821fbc11cbeff75cdcebc099031b23ef794ca38ae27ed251/spacepackets-0.31.0-py3-none-any.whl", hash = "sha256:cd69c2e85ff1a4934671ad38abcc1ecfd014879baef9be6ab803d873d41a1902", size = 105922, upload-time = "2025-09-10T14:30:24.236Z" }, +] + +[[package]] +name = "spdx-tools" +version = "0.8.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beartype" }, + { name = "click" }, + { name = "license-expression" }, + { name = "ply" }, + { name = "pyyaml" }, + { name = "rdflib" }, + { name = "semantic-version" }, + { name = "uritools" }, + { name = "xmltodict" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/99/3470b28dc4b64fd29db3b1dcf5e84c743ec88e25ea7b214794f5930f0319/spdx-tools-0.8.3.tar.gz", hash = "sha256:68b8f9ce2893b5216bd90b2e63f1c821c2884e4ebc4fd295ebbf1fa8b8a94b93", size = 681626, upload-time = "2024-09-30T09:32:46.848Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/bc/09994d78b66da8535ab339047c2381409f028581c0bbde53287745d3cab1/spdx_tools-0.8.3-py3-none-any.whl", hash = "sha256:638fd9bd8be61901316eb6d063574e16d5403a1870073ec4d9241426a997501a", size = 285435, upload-time = "2024-09-30T09:32:44.971Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, +] + +[[package]] +name = "tomli" +version = "2.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", size = 15164, upload-time = "2022-02-08T10:54:04.006Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", size = 12757, upload-time = "2022-02-08T10:54:02.017Z" }, +] + +[[package]] +name = "tomlkit" +version = "0.13.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "types-python-dateutil" +version = "2.9.0.20241003" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/f8/f6ee4c803a7beccffee21bb29a71573b39f7037c224843eff53e5308c16e/types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446", size = 9210, upload-time = "2024-10-03T02:43:26.932Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/d6/ba5f61958f358028f2e2ba1b8e225b8e263053bd57d3a79e2d2db64c807b/types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d", size = 9693, upload-time = "2024-10-03T02:43:25.458Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, +] + +[[package]] +name = "uritools" +version = "5.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/b1/e482d43db3209663b82a59e37cf31f641254180190667c6b0bf18a297de8/uritools-5.0.0.tar.gz", hash = "sha256:68180cad154062bd5b5d9ffcdd464f8de6934414b25462ae807b00b8df9345de", size = 22730, upload-time = "2025-05-02T13:38:20.67Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/74/0987d204b5fbf83861affa6b36a20da22cb3fe708583b955c99ab834bd5a/uritools-5.0.0-py3-none-any.whl", hash = "sha256:cead3a49ba8fbca3f91857343849d506d8639718f4a2e51b62e87393b493bd6f", size = 10432, upload-time = "2025-05-02T13:38:18.703Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, +] + +[[package]] +name = "werkzeug" +version = "3.0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d4/f9/0ba83eaa0df9b9e9d1efeb2ea351d0677c37d41ee5d0f91e98423c7281c9/werkzeug-3.0.6.tar.gz", hash = "sha256:a8dd59d4de28ca70471a34cba79bed5f7ef2e036a76b3ab0835474246eb41f8d", size = 805170, upload-time = "2024-10-25T18:52:31.688Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/69/05837f91dfe42109203ffa3e488214ff86a6d68b2ed6c167da6cdc42349b/werkzeug-3.0.6-py3-none-any.whl", hash = "sha256:1bc0c2310d2fbb07b1dd1105eba2f7af72f322e1e455f2f93c993bee8c8a5f17", size = 227979, upload-time = "2024-10-25T18:52:30.129Z" }, +] + +[[package]] +name = "west" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, + { name = "packaging" }, + { name = "pykwalify" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/8e/ddb81e2635e58d156092556934a2cffe245978c91e4a08e11d72591f46e4/west-1.5.0.tar.gz", hash = "sha256:7088fe0e9afe0719ebee95c51c529149f7bcfc919d83a8206d35fa9c683ed0a5", size = 149326, upload-time = "2025-09-23T14:45:52.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/1d/e50fb71de492abb549917fdbf13c4a8a8459af9d78a2fa47905804905c36/west-1.5.0-py3-none-any.whl", hash = "sha256:f71411d11ed9ed00847405c6a83600374c2e0cf8676ed5af5d8b572f92c4765a", size = 106991, upload-time = "2025-09-23T14:45:50.661Z" }, +] + +[[package]] +name = "windows-curses" +version = "2.4.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/a0/e8d074f013117633f6b502ca123ecfc377fe0bd36818fe65e8935c91ca9c/windows_curses-2.4.1-cp313-cp313-win32.whl", hash = "sha256:05d1ca01e5199a435ccb6c8c2978df4a169cdff1ec99ab15f11ded9de8e5be26", size = 71390, upload-time = "2025-01-11T00:26:27.66Z" }, + { url = "https://files.pythonhosted.org/packages/2b/4b/2838a829b074a68c570d54ae0ae8539979657d3e619a4dc5a4b03eb69745/windows_curses-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8cf653f8928af19c103ae11cfed38124f418dcdd92643c4cd17239c0cec2f9da", size = 81636, upload-time = "2025-01-11T00:26:29.595Z" }, +] + +[[package]] +name = "wrapt" +version = "1.17.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/f6/759ece88472157acb55fc195e5b116e06730f1b651b5b314c66291729193/wrapt-1.17.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0", size = 54003, upload-time = "2025-08-12T05:51:48.627Z" }, + { url = "https://files.pythonhosted.org/packages/4f/a9/49940b9dc6d47027dc850c116d79b4155f15c08547d04db0f07121499347/wrapt-1.17.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77", size = 39025, upload-time = "2025-08-12T05:51:37.156Z" }, + { url = "https://files.pythonhosted.org/packages/45/35/6a08de0f2c96dcdd7fe464d7420ddb9a7655a6561150e5fc4da9356aeaab/wrapt-1.17.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7", size = 39108, upload-time = "2025-08-12T05:51:58.425Z" }, + { url = "https://files.pythonhosted.org/packages/0c/37/6faf15cfa41bf1f3dba80cd3f5ccc6622dfccb660ab26ed79f0178c7497f/wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277", size = 88072, upload-time = "2025-08-12T05:52:37.53Z" }, + { url = "https://files.pythonhosted.org/packages/78/f2/efe19ada4a38e4e15b6dff39c3e3f3f73f5decf901f66e6f72fe79623a06/wrapt-1.17.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d", size = 88214, upload-time = "2025-08-12T05:52:15.886Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/ca86701e9de1622b16e09689fc24b76f69b06bb0150990f6f4e8b0eeb576/wrapt-1.17.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa", size = 87105, upload-time = "2025-08-12T05:52:17.914Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e0/d10bd257c9a3e15cbf5523025252cc14d77468e8ed644aafb2d6f54cb95d/wrapt-1.17.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050", size = 87766, upload-time = "2025-08-12T05:52:39.243Z" }, + { url = "https://files.pythonhosted.org/packages/e8/cf/7d848740203c7b4b27eb55dbfede11aca974a51c3d894f6cc4b865f42f58/wrapt-1.17.3-cp313-cp313-win32.whl", hash = "sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8", size = 36711, upload-time = "2025-08-12T05:53:10.074Z" }, + { url = "https://files.pythonhosted.org/packages/57/54/35a84d0a4d23ea675994104e667ceff49227ce473ba6a59ba2c84f250b74/wrapt-1.17.3-cp313-cp313-win_amd64.whl", hash = "sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb", size = 38885, upload-time = "2025-08-12T05:53:08.695Z" }, + { url = "https://files.pythonhosted.org/packages/01/77/66e54407c59d7b02a3c4e0af3783168fff8e5d61def52cda8728439d86bc/wrapt-1.17.3-cp313-cp313-win_arm64.whl", hash = "sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16", size = 36896, upload-time = "2025-08-12T05:52:55.34Z" }, + { url = "https://files.pythonhosted.org/packages/02/a2/cd864b2a14f20d14f4c496fab97802001560f9f41554eef6df201cd7f76c/wrapt-1.17.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39", size = 54132, upload-time = "2025-08-12T05:51:49.864Z" }, + { url = "https://files.pythonhosted.org/packages/d5/46/d011725b0c89e853dc44cceb738a307cde5d240d023d6d40a82d1b4e1182/wrapt-1.17.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235", size = 39091, upload-time = "2025-08-12T05:51:38.935Z" }, + { url = "https://files.pythonhosted.org/packages/2e/9e/3ad852d77c35aae7ddebdbc3b6d35ec8013af7d7dddad0ad911f3d891dae/wrapt-1.17.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c", size = 39172, upload-time = "2025-08-12T05:51:59.365Z" }, + { url = "https://files.pythonhosted.org/packages/c3/f7/c983d2762bcce2326c317c26a6a1e7016f7eb039c27cdf5c4e30f4160f31/wrapt-1.17.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b", size = 87163, upload-time = "2025-08-12T05:52:40.965Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0f/f673f75d489c7f22d17fe0193e84b41540d962f75fce579cf6873167c29b/wrapt-1.17.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa", size = 87963, upload-time = "2025-08-12T05:52:20.326Z" }, + { url = "https://files.pythonhosted.org/packages/df/61/515ad6caca68995da2fac7a6af97faab8f78ebe3bf4f761e1b77efbc47b5/wrapt-1.17.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7", size = 86945, upload-time = "2025-08-12T05:52:21.581Z" }, + { url = "https://files.pythonhosted.org/packages/d3/bd/4e70162ce398462a467bc09e768bee112f1412e563620adc353de9055d33/wrapt-1.17.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4", size = 86857, upload-time = "2025-08-12T05:52:43.043Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b8/da8560695e9284810b8d3df8a19396a6e40e7518059584a1a394a2b35e0a/wrapt-1.17.3-cp314-cp314-win32.whl", hash = "sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10", size = 37178, upload-time = "2025-08-12T05:53:12.605Z" }, + { url = "https://files.pythonhosted.org/packages/db/c8/b71eeb192c440d67a5a0449aaee2310a1a1e8eca41676046f99ed2487e9f/wrapt-1.17.3-cp314-cp314-win_amd64.whl", hash = "sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6", size = 39310, upload-time = "2025-08-12T05:53:11.106Z" }, + { url = "https://files.pythonhosted.org/packages/45/20/2cda20fd4865fa40f86f6c46ed37a2a8356a7a2fde0773269311f2af56c7/wrapt-1.17.3-cp314-cp314-win_arm64.whl", hash = "sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58", size = 37266, upload-time = "2025-08-12T05:52:56.531Z" }, + { url = "https://files.pythonhosted.org/packages/77/ed/dd5cf21aec36c80443c6f900449260b80e2a65cf963668eaef3b9accce36/wrapt-1.17.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a", size = 56544, upload-time = "2025-08-12T05:51:51.109Z" }, + { url = "https://files.pythonhosted.org/packages/8d/96/450c651cc753877ad100c7949ab4d2e2ecc4d97157e00fa8f45df682456a/wrapt-1.17.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067", size = 40283, upload-time = "2025-08-12T05:51:39.912Z" }, + { url = "https://files.pythonhosted.org/packages/d1/86/2fcad95994d9b572db57632acb6f900695a648c3e063f2cd344b3f5c5a37/wrapt-1.17.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454", size = 40366, upload-time = "2025-08-12T05:52:00.693Z" }, + { url = "https://files.pythonhosted.org/packages/64/0e/f4472f2fdde2d4617975144311f8800ef73677a159be7fe61fa50997d6c0/wrapt-1.17.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e", size = 108571, upload-time = "2025-08-12T05:52:44.521Z" }, + { url = "https://files.pythonhosted.org/packages/cc/01/9b85a99996b0a97c8a17484684f206cbb6ba73c1ce6890ac668bcf3838fb/wrapt-1.17.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f", size = 113094, upload-time = "2025-08-12T05:52:22.618Z" }, + { url = "https://files.pythonhosted.org/packages/25/02/78926c1efddcc7b3aa0bc3d6b33a822f7d898059f7cd9ace8c8318e559ef/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056", size = 110659, upload-time = "2025-08-12T05:52:24.057Z" }, + { url = "https://files.pythonhosted.org/packages/dc/ee/c414501ad518ac3e6fe184753632fe5e5ecacdcf0effc23f31c1e4f7bfcf/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804", size = 106946, upload-time = "2025-08-12T05:52:45.976Z" }, + { url = "https://files.pythonhosted.org/packages/be/44/a1bd64b723d13bb151d6cc91b986146a1952385e0392a78567e12149c7b4/wrapt-1.17.3-cp314-cp314t-win32.whl", hash = "sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977", size = 38717, upload-time = "2025-08-12T05:53:15.214Z" }, + { url = "https://files.pythonhosted.org/packages/79/d9/7cfd5a312760ac4dd8bf0184a6ee9e43c33e47f3dadc303032ce012b8fa3/wrapt-1.17.3-cp314-cp314t-win_amd64.whl", hash = "sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116", size = 41334, upload-time = "2025-08-12T05:53:14.178Z" }, + { url = "https://files.pythonhosted.org/packages/46/78/10ad9781128ed2f99dbc474f43283b13fea8ba58723e98844367531c18e9/wrapt-1.17.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6", size = 38471, upload-time = "2025-08-12T05:52:57.784Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, +] + +[[package]] +name = "xmltodict" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/aa/917ceeed4dbb80d2f04dbd0c784b7ee7bba8ae5a54837ef0e5e062cd3cfb/xmltodict-1.0.2.tar.gz", hash = "sha256:54306780b7c2175a3967cad1db92f218207e5bc1aba697d887807c0fb68b7649", size = 25725, upload-time = "2025-09-17T21:59:26.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/20/69a0e6058bc5ea74892d089d64dfc3a62ba78917ec5e2cfa70f7c92ba3a5/xmltodict-1.0.2-py3-none-any.whl", hash = "sha256:62d0fddb0dcbc9f642745d8bbf4d81fd17d6dfaec5a15b5c1876300aad92af0d", size = 13893, upload-time = "2025-09-17T21:59:24.859Z" }, +] + +[[package]] +name = "zipp" +version = "3.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4f/a1/ac66fba5917fb7860f91cb251ac6cf838923a8abe89e059cc1988cb256d1/zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f", size = 22625, upload-time = "2024-05-31T16:39:21.514Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/1a/ac67760425f2477b1da593b347db66d474130747e6e5285d08c7f2d5884a/zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091", size = 8951, upload-time = "2024-05-31T16:39:19.68Z" }, +] + +[[package]] +name = "zstandard" +version = "0.23.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701, upload-time = "2024-07-15T00:18:06.141Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975, upload-time = "2024-07-15T00:16:16.005Z" }, + { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448, upload-time = "2024-07-15T00:16:17.897Z" }, + { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269, upload-time = "2024-07-15T00:16:20.136Z" }, + { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228, upload-time = "2024-07-15T00:16:23.398Z" }, + { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891, upload-time = "2024-07-15T00:16:26.391Z" }, + { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310, upload-time = "2024-07-15T00:16:29.018Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912, upload-time = "2024-07-15T00:16:31.871Z" }, + { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946, upload-time = "2024-07-15T00:16:34.593Z" }, + { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994, upload-time = "2024-07-15T00:16:36.887Z" }, + { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681, upload-time = "2024-07-15T00:16:39.709Z" }, + { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239, upload-time = "2024-07-15T00:16:41.83Z" }, + { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149, upload-time = "2024-07-15T00:16:44.287Z" }, + { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392, upload-time = "2024-07-15T00:16:46.423Z" }, + { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299, upload-time = "2024-07-15T00:16:49.053Z" }, + { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862, upload-time = "2024-07-15T00:16:51.003Z" }, + { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578, upload-time = "2024-07-15T00:16:53.135Z" }, +] + +[package.optional-dependencies] +cffi = [ + { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, +] From 0173b6d86325c874bcd976a81491cb81293bbecd Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 17:45:32 -0500 Subject: [PATCH 03/50] Use official uv cache method --- .github/workflows/ci.yaml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 723e20ff..b4eb8b82 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -17,6 +17,8 @@ jobs: build: runs-on: ubuntu-latest + env: + UV_CACHE_DIR: /tmp/.uv-cache steps: - name: Checkout repository @@ -26,7 +28,6 @@ jobs: fetch-depth: 0 - name: Cache bin - id: cache-bin uses: actions/cache@v4 with: path: | @@ -59,18 +60,16 @@ jobs: run: | make submodules - - name: Cache python venv - id: cache-python + - name: Restore uv cache uses: actions/cache@v4 with: - path: fprime-venv - key: python-venv-${{ runner.os }}-${{ hashFiles('uv.lock') }}-v3 - restore-keys: | - python-venv-${{ runner.os }}- - python-venv- + path: /tmp/.uv-cache + key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + restore-keys: | + uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + uv-${{ runner.os }} - name: Setup python venv - if: steps.cache-python.outputs.cache-hit != 'true' run: | make fprime-venv @@ -107,3 +106,6 @@ jobs: build-artifacts/zephyr.uf2 build-artifacts/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json retention-days: 30 + + - name: Minimize uv cache + run: uv cache prune --ci From b3bdec5cb5aeee271aba6ddc4d814cba235ace99 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 17:59:51 -0500 Subject: [PATCH 04/50] Fix uv cache minimization --- .github/workflows/ci.yaml | 2 +- Makefile | 10 ++-------- lib/makelib/ci.mk | 11 +++++++++++ 3 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 lib/makelib/ci.mk diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b4eb8b82..ca237d8d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -108,4 +108,4 @@ jobs: retention-days: 30 - name: Minimize uv cache - run: uv cache prune --ci + run: make minimize-uv-cache diff --git a/Makefile b/Makefile index b7d88496..0de98709 100644 --- a/Makefile +++ b/Makefile @@ -46,10 +46,6 @@ generate: submodules fprime-venv zephyr-setup ## Generate FPrime-Zephyr Proves C @echo "Generating FPrime-Zephyr Proves Core Reference..." @$(UV) run fprime-util generate --force -.PHONY: generate-ci -generate-ci: - @$(UV) run fprime-util generate --force - .PHONY: generate-if-needed BUILD_DIR ?= $(shell pwd)/build-fprime-automatic-zephyr generate-if-needed: @@ -60,10 +56,6 @@ build: submodules zephyr-setup fprime-venv generate-if-needed ## Build FPrime-Ze @echo "Building..." @$(UV) run fprime-util build -.PHONY: build-ci -build-ci: - @$(UV) run fprime-util build - .PHONY: test-integration test-integration: @$(UV) run pytest FprimeZephyrReference/test/int --deployment build-artifacts/zephyr/fprime-zephyr-deployment @@ -109,3 +101,5 @@ UVX ?= $(UV_DIR)/uvx uv: $(UV) ## Download uv $(UV): $(BIN_DIR) @test -s $(UV) || { mkdir -p $(UV_DIR); curl -LsSf https://astral.sh/uv/$(UV_VERSION)/install.sh | UV_INSTALL_DIR=$(UV_DIR) sh > /dev/null; } + +include lib/makelib/ci.mk diff --git a/lib/makelib/ci.mk b/lib/makelib/ci.mk new file mode 100644 index 00000000..29a277b8 --- /dev/null +++ b/lib/makelib/ci.mk @@ -0,0 +1,11 @@ +.PHONY: minimize-uv-cache +minimize-uv-cache: + @(UV) cache prune --ci + +.PHONY: generate-ci +generate-ci: + @$(UV) run fprime-util generate + +.PHONY: build-ci +build-ci: + @$(UV) run fprime-util build From 9523e2f4db64e695a7161a925b3f72f255a9930d Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 18:05:49 -0500 Subject: [PATCH 05/50] Fix missing $ --- lib/makelib/ci.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/makelib/ci.mk b/lib/makelib/ci.mk index 29a277b8..2db3c577 100644 --- a/lib/makelib/ci.mk +++ b/lib/makelib/ci.mk @@ -1,6 +1,6 @@ .PHONY: minimize-uv-cache minimize-uv-cache: - @(UV) cache prune --ci + @$(UV) cache prune --ci .PHONY: generate-ci generate-ci: From 4867b606235ed1001ef44643123c2cadf7a90af4 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 18:18:51 -0500 Subject: [PATCH 06/50] Reenable submodule cache --- .github/workflows/ci.yaml | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ca237d8d..e0bd4823 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -32,28 +32,33 @@ jobs: with: path: | bin - key: bin-${{ hashFiles('Makefile') }}-v3 + key: bin-${{ runner.os }}-${{ hashFiles('Makefile') }} restore-keys: | - bin-${{ hashFiles('Makefile') }}- - bin- + bin-${{ runner.os }}-${{ hashFiles('Makefile') }} + bin-${{ runner.os }} - name: Download bin tools if: steps.cache-bin.outputs.cache-hit != 'true' run: | make download-bin - # - name: Cache submodules - # id: cache-submodules - # uses: actions/cache@v4 - # with: - # path: | - # lib/fprime - # lib/fprime-zephyr - # lib/zephyr-workspace/zephyr - # key: submodules-${{ hashFiles('.gitmodules') }}-v3 - # restore-keys: | - # submodules-${{ hashFiles('.gitmodules') }}- - # submodules- + - name: Submodule Cache Key + run: | + echo "submodule_cache_key=$(git submodule)" >> $GITHUB_OUTPUT + shell: bash + + - name: Cache submodules + id: cache-submodules + uses: actions/cache@v4 + with: + path: | + lib/fprime + lib/fprime-zephyr + lib/zephyr-workspace/zephyr + key: submodules-${{ runner.os }}-${{ steps.get-date.outputs.submodule_cache_key }} + restore-keys: | + submodules-${{ runner.os }}-${{ steps.get-date.outputs.submodule_cache_key }} + submodules-${{ runner.os }} - name: Setup submodules if: steps.cache-submodules.outputs.cache-hit != 'true' From 32497b81ba12c3a4d891185e3d36a9a2fbb16fa9 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 18:23:21 -0500 Subject: [PATCH 07/50] Fix submodule cache key --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e0bd4823..f06c2528 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -44,7 +44,7 @@ jobs: - name: Submodule Cache Key run: | - echo "submodule_cache_key=$(git submodule)" >> $GITHUB_OUTPUT + echo "submodule_cache_key=$(git submodule | sha256)" >> $GITHUB_OUTPUT shell: bash - name: Cache submodules From 2eb9e970716a9dba5e2e1fdb3fb31e29f22691a7 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 18:45:12 -0500 Subject: [PATCH 08/50] Reenable zephyr cache --- .github/workflows/ci.yaml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f06c2528..a213cc2b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -55,10 +55,10 @@ jobs: lib/fprime lib/fprime-zephyr lib/zephyr-workspace/zephyr - key: submodules-${{ runner.os }}-${{ steps.get-date.outputs.submodule_cache_key }} + key: submodules-${{ steps.get-date.outputs.submodule_cache_key }} restore-keys: | - submodules-${{ runner.os }}-${{ steps.get-date.outputs.submodule_cache_key }} - submodules-${{ runner.os }} + submodules-${{ steps.get-date.outputs.submodule_cache_key }} + submodules - name: Setup submodules if: steps.cache-submodules.outputs.cache-hit != 'true' @@ -78,18 +78,18 @@ jobs: run: | make fprime-venv - # - name: Cache Zephyr workspace and SDK - # id: cache-zephyr - # uses: actions/cache@v4 - # with: - # path: | - # lib/zephyr-workspace/modules - # lib/zephyr-workspace/bootloader - # ~/zephyr-sdk-0.17.2 - # key: zephyr-${{ hashFiles('west.yml') }}-${{ runner.os }}-v3 - # restore-keys: | - # zephyr-${{ hashFiles('west.yml') }}-${{ runner.os }}- - # zephyr- + - name: Cache Zephyr workspace and SDK + id: cache-zephyr + uses: actions/cache@v4 + with: + path: | + lib/zephyr-workspace/modules + lib/zephyr-workspace/bootloader + ~/zephyr-sdk-0.17.2 + key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + restore-keys: | + zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + zephyr-${{ runner.os }} - name: Setup Zephyr if: steps.cache-zephyr.outputs.cache-hit != 'true' From d583447dcc1212accae2840a5554f84323ddd8ea Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 18:49:36 -0500 Subject: [PATCH 09/50] Backup, try to fix submodule cache --- .github/workflows/ci.yaml | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a213cc2b..aa7f8b9f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -35,7 +35,6 @@ jobs: key: bin-${{ runner.os }}-${{ hashFiles('Makefile') }} restore-keys: | bin-${{ runner.os }}-${{ hashFiles('Makefile') }} - bin-${{ runner.os }} - name: Download bin tools if: steps.cache-bin.outputs.cache-hit != 'true' @@ -58,7 +57,6 @@ jobs: key: submodules-${{ steps.get-date.outputs.submodule_cache_key }} restore-keys: | submodules-${{ steps.get-date.outputs.submodule_cache_key }} - submodules - name: Setup submodules if: steps.cache-submodules.outputs.cache-hit != 'true' @@ -72,24 +70,22 @@ jobs: key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} restore-keys: | uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - uv-${{ runner.os }} - name: Setup python venv run: | make fprime-venv - - name: Cache Zephyr workspace and SDK - id: cache-zephyr - uses: actions/cache@v4 - with: - path: | - lib/zephyr-workspace/modules - lib/zephyr-workspace/bootloader - ~/zephyr-sdk-0.17.2 - key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} - restore-keys: | - zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} - zephyr-${{ runner.os }} + # - name: Cache Zephyr workspace and SDK + # id: cache-zephyr + # uses: actions/cache@v4 + # with: + # path: | + # lib/zephyr-workspace/modules + # lib/zephyr-workspace/bootloader + # ~/zephyr-sdk-0.17.2 + # key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + # restore-keys: | + # zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} - name: Setup Zephyr if: steps.cache-zephyr.outputs.cache-hit != 'true' From e52a69280994757e9fb522e677bfa093d18cbd1a Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 18:58:01 -0500 Subject: [PATCH 10/50] Try to get sha right --- .github/workflows/ci.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index aa7f8b9f..c96d53f9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -43,7 +43,10 @@ jobs: - name: Submodule Cache Key run: | - echo "submodule_cache_key=$(git submodule | sha256)" >> $GITHUB_OUTPUT + git submodule + git submodule | sha256sum + echo "submodule_cache_key=$(git submodule | sha256sum)" + echo "submodule_cache_key=$(git submodule | sha256sum)" >> $GITHUB_OUTPUT shell: bash - name: Cache submodules From d13d02f22f0f25e4f1ebb97a619bbb611e7e766e Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 19:00:17 -0500 Subject: [PATCH 11/50] Still working on submod cache key --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index c96d53f9..e11b80a6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -44,9 +44,9 @@ jobs: - name: Submodule Cache Key run: | git submodule - git submodule | sha256sum - echo "submodule_cache_key=$(git submodule | sha256sum)" - echo "submodule_cache_key=$(git submodule | sha256sum)" >> $GITHUB_OUTPUT + git submodule | sha256sum | cut -f1 -d' ' + echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" + echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" >> $GITHUB_OUTPUT shell: bash - name: Cache submodules From 7b8227947974eb1192785d3bf9d60ab3dde2333c Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 19:05:57 -0500 Subject: [PATCH 12/50] Still working on submod cache key --- .github/workflows/ci.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e11b80a6..8fc6a31b 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -42,10 +42,8 @@ jobs: make download-bin - name: Submodule Cache Key + id: submodule-cache-key run: | - git submodule - git submodule | sha256sum | cut -f1 -d' ' - echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" >> $GITHUB_OUTPUT shell: bash @@ -57,9 +55,9 @@ jobs: lib/fprime lib/fprime-zephyr lib/zephyr-workspace/zephyr - key: submodules-${{ steps.get-date.outputs.submodule_cache_key }} + key: submodules-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} restore-keys: | - submodules-${{ steps.get-date.outputs.submodule_cache_key }} + submodules-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} - name: Setup submodules if: steps.cache-submodules.outputs.cache-hit != 'true' From b3c12e9882739ecf45095eac0839e55441c0a6a5 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 19:13:31 -0500 Subject: [PATCH 13/50] Reenable zephyr cache take 2 --- .github/workflows/ci.yaml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 8fc6a31b..0bcdad29 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -76,17 +76,17 @@ jobs: run: | make fprime-venv - # - name: Cache Zephyr workspace and SDK - # id: cache-zephyr - # uses: actions/cache@v4 - # with: - # path: | - # lib/zephyr-workspace/modules - # lib/zephyr-workspace/bootloader - # ~/zephyr-sdk-0.17.2 - # key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} - # restore-keys: | - # zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + - name: Cache Zephyr workspace and SDK + id: cache-zephyr + uses: actions/cache@v4 + with: + path: | + lib/zephyr-workspace/modules + lib/zephyr-workspace/bootloader + ~/zephyr-sdk-0.17.2 + key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + restore-keys: | + zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} - name: Setup Zephyr if: steps.cache-zephyr.outputs.cache-hit != 'true' From 91ed8084c1313f3f3ec7c286f1992a497343e58a Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 19:43:28 -0500 Subject: [PATCH 14/50] Trying something a little different with zephyr --- .github/workflows/ci.yaml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0bcdad29..26df8b3e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,9 +23,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - with: - submodules: false # We'll handle submodules with smart caching - fetch-depth: 0 - name: Cache bin uses: actions/cache@v4 @@ -81,8 +78,8 @@ jobs: uses: actions/cache@v4 with: path: | - lib/zephyr-workspace/modules - lib/zephyr-workspace/bootloader + ../.west + ../lib ~/zephyr-sdk-0.17.2 key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} restore-keys: | @@ -92,9 +89,6 @@ jobs: if: steps.cache-zephyr.outputs.cache-hit != 'true' run: | make zephyr-setup - env: - PIP_DISABLE_PIP_VERSION_CHECK: 1 - PIP_NO_COMPILE: 1 - name: Build run: | From 4d7036d7627085ce338ae1c7e1b9834f00908ee7 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 22:45:18 -0500 Subject: [PATCH 15/50] Break out all zephyr steps --- .github/workflows/ci.yaml | 53 +++++++++++++++----- .gitignore | 2 + Makefile | 59 +++-------------------- lib/makelib/build-tools.mk | 22 +++++++++ lib/makelib/ci.mk | 4 +- lib/makelib/zephyr.mk | 54 +++++++++++++++++++++ lib/zephyr-workspace/.west/config | 5 ++ west.yml => lib/zephyr-workspace/west.yml | 24 +++++---- 8 files changed, 143 insertions(+), 80 deletions(-) create mode 100644 lib/makelib/build-tools.mk create mode 100644 lib/makelib/zephyr.mk create mode 100644 lib/zephyr-workspace/.west/config rename west.yml => lib/zephyr-workspace/west.yml (74%) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 26df8b3e..ca3dd3f6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -29,9 +29,9 @@ jobs: with: path: | bin - key: bin-${{ runner.os }}-${{ hashFiles('Makefile') }} + key: bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} restore-keys: | - bin-${{ runner.os }}-${{ hashFiles('Makefile') }} + bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} - name: Download bin tools if: steps.cache-bin.outputs.cache-hit != 'true' @@ -69,30 +69,57 @@ jobs: restore-keys: | uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - - name: Setup python venv + - name: Create python venv run: | make fprime-venv - - name: Cache Zephyr workspace and SDK - id: cache-zephyr + - name: Cache Zephyr workspace + id: cache-zephyr-workspace uses: actions/cache@v4 with: path: | - ../.west - ../lib - ~/zephyr-sdk-0.17.2 - key: zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + lib/zephyr-workspace/bootloader/ + lib/zephyr-workspace/modules/ + lib/zephyr-workspace/tools/ + key: zephyr-workspace-${{ runner.os }}-${{ hashFiles('west.yml') }} restore-keys: | - zephyr-${{ runner.os }}-${{ hashFiles('west.yml') }} + zephyr-workspace-${{ runner.os }}-${{ hashFiles('west.yml') }} - name: Setup Zephyr - if: steps.cache-zephyr.outputs.cache-hit != 'true' + if: steps.cache-zephyr-workspace.outputs.cache-hit != 'true' run: | - make zephyr-setup + make zephyr-workspace + + - name: Cache Zephyr SDK + id: cache-zephyr-sdk + uses: actions/cache@v4 + with: + path: | + ~/zephyr-sdk-* + key: zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} + restore-keys: | + zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} + + - name: Setup Zephyr SDK + if: steps.cache-zephyr-sdk.outputs.cache-hit != 'true' + run: | + make zephyr-sdk + + - name: Setup Zephyr Export + run: | + make zephyr-export + + - name: Install Zephyr Python Dependencies + run: | + make zephyr-python-deps + + - name: Generate + run: | + make generate-ci - name: Build run: | - make generate-ci build-ci + make build-ci - name: Upload build artifacts uses: actions/upload-artifact@v4 diff --git a/.gitignore b/.gitignore index 352a9f89..7f2a54b7 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,8 @@ build-fprime-* # Zephyr workspace lib/zephyr-workspace/* +!lib/zephyr-workspace/.west/ +!lib/zephyr-workspace/west.yml # Misc /venv/ diff --git a/Makefile b/Makefile index 0de98709..07ece0d6 100644 --- a/Makefile +++ b/Makefile @@ -9,28 +9,14 @@ help: ## Display this help. .PHONY: submodules submodules: ## Initialize and update git submodules - @echo "Initializing and updating git submodules..." git submodule update --init --recursive export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv fprime-venv: ## Create a virtual environment @$(MAKE) uv - @echo "Creating virtual environment..." @$(UV) venv fprime-venv @$(UV) pip install --requirement pyproject.toml -.PHONY: zephyr-setup -zephyr-setup: fprime-venv ## Set up Zephyr environment - @test -d lib/zephyr-workspace/modules/hal/rpi_pico || test -d ../lib/zephyr-workspace/modules/hal/rpi_pico || { \ - echo "Setting up Zephyr environment..."; \ - rm -rf ../.west/ && \ - $(UVX) west init --local . && \ - $(UVX) west update && \ - $(UVX) west zephyr-export && \ - $(UV) run west packages pip --install && \ - $(UV) run west sdk install --toolchains arm-zephyr-eabi; \ - } - ##@ Development .PHONY: pre-commit-install @@ -43,63 +29,32 @@ fmt: pre-commit-install ## Lint and format files .PHONY: generate generate: submodules fprime-venv zephyr-setup ## Generate FPrime-Zephyr Proves Core Reference - @echo "Generating FPrime-Zephyr Proves Core Reference..." - @$(UV) run fprime-util generate --force + @$(UV_RUN) fprime-util generate --force .PHONY: generate-if-needed BUILD_DIR ?= $(shell pwd)/build-fprime-automatic-zephyr generate-if-needed: - @test -s $(BUILD_DIR) || $(MAKE) generate + @test -d $(BUILD_DIR) || $(MAKE) generate .PHONY: build build: submodules zephyr-setup fprime-venv generate-if-needed ## Build FPrime-Zephyr Proves Core Reference - @echo "Building..." - @$(UV) run fprime-util build + @$(UV_RUN) fprime-util build .PHONY: test-integration test-integration: - @$(UV) run pytest FprimeZephyrReference/test/int --deployment build-artifacts/zephyr/fprime-zephyr-deployment + @$(UV_RUN) pytest FprimeZephyrReference/test/int --deployment build-artifacts/zephyr/fprime-zephyr-deployment .PHONY: clean clean: ## Remove all gitignored files git clean -dfX -.PHONY: clean-zephyr -clean-zephyr: ## Remove all Zephyr build files - rm -rf lib/zephyr-workspace/bootloader lib/zephyr-workspace/modules lib/zephyr-workspace/tools - -.PHONY: clean-zephyr-sdk -clean-zephyr-sdk: ## Remove Zephyr SDK (reinstall with 'make zephyr-setup') - @echo "Removing Zephyr SDK..." - rm -rf ~/zephyr-sdk-* - @echo "Run 'make zephyr-setup' to reinstall with minimal ARM-only toolchain" - ##@ Operations .PHONY: gds ARTIFACT_DIR ?= $(shell pwd)/build-artifacts gds: ## Run FPrime GDS - @echo "Running FPrime GDS..." - @$(UV) run fprime-gds -n --dictionary $(ARTIFACT_DIR)/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json --communication-selection uart --uart-baud 115200 --output-unframed-data - -##@ Build Tools - -.PHONY: download-bin -download-bin: uv - -BIN_DIR ?= $(shell pwd)/bin -$(BIN_DIR): - mkdir -p $(BIN_DIR) - -### Tool Versions -UV_VERSION ?= 0.8.13 - -UV_DIR ?= $(BIN_DIR)/uv-$(UV_VERSION) -UV ?= $(UV_DIR)/uv -UVX ?= $(UV_DIR)/uvx -.PHONY: uv -uv: $(UV) ## Download uv -$(UV): $(BIN_DIR) - @test -s $(UV) || { mkdir -p $(UV_DIR); curl -LsSf https://astral.sh/uv/$(UV_VERSION)/install.sh | UV_INSTALL_DIR=$(UV_DIR) sh > /dev/null; } + @$(UV_RUN) fprime-gds -n --dictionary $(ARTIFACT_DIR)/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json --communication-selection uart --uart-baud 115200 --output-unframed-data +include lib/makelib/build-tools.mk include lib/makelib/ci.mk +include lib/makelib/zephyr.mk diff --git a/lib/makelib/build-tools.mk b/lib/makelib/build-tools.mk new file mode 100644 index 00000000..5de801aa --- /dev/null +++ b/lib/makelib/build-tools.mk @@ -0,0 +1,22 @@ +##@ Build Tools + +.PHONY: download-bin +download-bin: uv + +TOOLS_DIR ?= $(shell pwd)/bin +$(TOOLS_DIR): + mkdir -p $(TOOLS_DIR) + +### Tool Versions +UV_VERSION ?= 0.8.13 + +### uv & uvx +UV_DIR ?= $(TOOLS_DIR)/uv-$(UV_VERSION) +UV ?= $(UV_DIR)/uv +UVX ?= $(UV_DIR)/uvx +.PHONY: uv +uv: $(UV) ## Download uv +$(UV): $(TOOLS_DIR) + @test -s $(UV) || { mkdir -p $(UV_DIR); curl -LsSf https://astral.sh/uv/$(UV_VERSION)/install.sh | UV_INSTALL_DIR=$(UV_DIR) sh > /dev/null; } + +UV_RUN ?= $(UV) run --active diff --git a/lib/makelib/ci.mk b/lib/makelib/ci.mk index 2db3c577..f602ff36 100644 --- a/lib/makelib/ci.mk +++ b/lib/makelib/ci.mk @@ -4,8 +4,8 @@ minimize-uv-cache: .PHONY: generate-ci generate-ci: - @$(UV) run fprime-util generate + @$(UV_RUN) fprime-util generate -f .PHONY: build-ci build-ci: - @$(UV) run fprime-util build + @$(UV_RUN) fprime-util build diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk new file mode 100644 index 00000000..0f29aeac --- /dev/null +++ b/lib/makelib/zephyr.mk @@ -0,0 +1,54 @@ +##@ Zephyr + +ZEPHYR_WORKSPACE ?= lib/zephyr-workspace +ZEPHYR_PATH ?= $(ZEPHYR_WORKSPACE)/zephyr + +# UV runs west with the active virtual environment +WEST ?= cd $(ZEPHYR_WORKSPACE) && $(UV_RUN) west + +# UVX runs west without the active virtual environment +WESTX ?= cd $(ZEPHYR_WORKSPACE) && $(UVX) west + +zephyr-setup: zephyr-workspace zephyr-export zephyr-sdk zephyr-python-deps + +.PHONY: zephyr-workspace +zephyr-workspace: fprime-venv ## Setup Zephyr bootloader, modules, and tools directories + @test -d $(ZEPHYR_WORKSPACE)/bootloader || \ + test -d $(ZEPHYR_WORKSPACE)/modules || \ + test -d $(ZEPHYR_WORKSPACE)/tools || { \ + $(WESTX) update; \ + } + +.PHONY: clean-zephyr-workspace +clean-zephyr-workspace: ## Remove Zephyr bootloader, modules, and tools directories + rm -rf $(ZEPHYR_WORKSPACE)/bootloader \ + $(ZEPHYR_WORKSPACE)/modules \ + $(ZEPHYR_WORKSPACE)/tools + +CMAKE_PACKAGES ?= ~/.cmake/packages +.PHONY: zephyr-export +zephyr-export: fprime-venv ## Export Zephyr environment variables + @test -d $(CMAKE_PACKAGES)/Zephyr/ || { $(WESTX) zephyr-export; } + +.PHONY: clean-zephyr-export +clean-zephyr-export: ## Remove Zephyr exported files + rm -rf $(CMAKE_PACKAGES)/Zephyr + +SDK_VERSION ?= $(shell cat $(ZEPHYR_WORKSPACE)/zephyr/SDK_VERSION) +ZEPHYR_SDK_PATH ?= ~/zephyr-sdk-$(SDK_VERSION) +.PHONY: zephyr-sdk +zephyr-sdk: fprime-venv ## Install Zephyr SDK + @test -d $(ZEPHYR_SDK_PATH) || { \ + $(WEST) sdk install --toolchains arm-zephyr-eabi; \ + } + +.PHONY: clean-zephyr-sdk +clean-zephyr-sdk: ## Remove Zephyr SDK + rm -rf $(ZEPHYR_SDK_PATH) + +.PHONY: zephyr-python-deps +zephyr-python-deps: fprime-venv ## Install Zephyr Python dependencies + @test -s $(VIRTUAL_ENV)/zephyr-deps.txt || { \ + $(WEST) packages pip > $(VIRTUAL_ENV)/zephyr-deps.txt; \ + $(UV) pip install --requirement $(VIRTUAL_ENV)/zephyr-deps.txt; \ + } diff --git a/lib/zephyr-workspace/.west/config b/lib/zephyr-workspace/.west/config new file mode 100644 index 00000000..7c1c1240 --- /dev/null +++ b/lib/zephyr-workspace/.west/config @@ -0,0 +1,5 @@ +[zephyr] +base = zephyr + +[manifest] +path = . diff --git a/west.yml b/lib/zephyr-workspace/west.yml similarity index 74% rename from west.yml rename to lib/zephyr-workspace/west.yml index 1c8bfc36..dcec9f28 100644 --- a/west.yml +++ b/lib/zephyr-workspace/west.yml @@ -18,7 +18,7 @@ manifest: - name: zephyr repo-path: zephyr revision: v4.2.0 - path: lib/zephyr-workspace/zephyr + path: zephyr west-commands: scripts/west-commands.yml import: # Import specific submanifests only (instead of all submanifests) @@ -30,59 +30,57 @@ manifest: - tinycrypt # Lightweight crypto library - mcuboot # Bootloader support - # Core modules required for RP2040/RP2350 - name: cmsis revision: 512cc7e895e8491696b61f7ba8066b4a182569b8 - path: lib/zephyr-workspace/modules/hal/cmsis + path: modules/hal/cmsis groups: - hal - name: cmsis_6 repo-path: CMSIS_6 revision: 06d952b6713a2ca41c9224a62075e4059402a151 - path: lib/zephyr-workspace/modules/hal/cmsis_6 + path: modules/hal/cmsis_6 groups: - hal - name: hal_rpi_pico - path: lib/zephyr-workspace/modules/hal/rpi_pico + path: modules/hal/rpi_pico revision: 7b57b24588797e6e7bf18b6bda168e6b96374264 groups: - hal - name: hal_st revision: 9f81b4427e955885398805b7bca0da3a8cd9109c - path: lib/zephyr-workspace/modules/hal/st + path: modules/hal/st groups: - hal - name: picolibc - path: lib/zephyr-workspace/modules/lib/picolibc + path: modules/lib/picolibc revision: 560946f26db075c296beea5b39d99e6de43c9010 - name: loramac-node revision: fb00b383072518c918e2258b0916c996f2d4eebe - path: lib/zephyr-workspace/modules/lib/loramac-node + path: modules/lib/loramac-node - # Crypto libraries (commonly used) - name: mbedtls revision: 85440ef5fffa95d0e9971e9163719189cf34d979 - path: lib/zephyr-workspace/modules/crypto/mbedtls + path: modules/crypto/mbedtls groups: - crypto - name: tinycrypt revision: 1012a3ebee18c15ede5efc8332ee2fc37817670f - path: lib/zephyr-workspace/modules/crypto/tinycrypt + path: modules/crypto/tinycrypt groups: - crypto - # Bootloader support (optional - remove if not needed) - name: mcuboot revision: 4eba8087fa606db801455f14d185255bc8c49467 - path: lib/zephyr-workspace/bootloader/mcuboot + path: bootloader/mcuboot groups: - bootloader self: path: . + # west-commands: lib/zephyr-workspace/zephyr/scripts/west-commands.yml From 221a83c8a3888d26a8d68b7021a0ebfcff1efab0 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sun, 5 Oct 2025 23:03:18 -0500 Subject: [PATCH 16/50] Improved submodule checkout --- CMakeLists.txt | 4 ---- Makefile | 4 +++- lib/makelib/zephyr.mk | 8 ++++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 488e62fe..a4f49c5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,10 +5,6 @@ cmake_minimum_required(VERSION 3.24.2) -# Set BOARD_ROOT to find custom boards -# The structure is BOARD_ROOT/boards/vendor/board -list(APPEND BOARD_ROOT "${CMAKE_CURRENT_LIST_DIR}") - # Patch in std-atomic implementations if (BOARD STREQUAL "rpi_pico" OR FPRIME_ZEPHYR_USE_STD_ATOMIC_FIX) include_directories(BEFORE "${CMAKE_CURRENT_LIST_DIR}/lib/fprime-zephyr/fprime-zephyr/Os/StdAtomic") diff --git a/Makefile b/Makefile index 07ece0d6..5a090e88 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,9 @@ help: ## Display this help. .PHONY: submodules submodules: ## Initialize and update git submodules - git submodule update --init --recursive + @if git submodule | grep -e "^-"; then \ + git submodule update --init --recursive; \ + fi export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv fprime-venv: ## Create a virtual environment diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index 0f29aeac..e74b9fdf 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -28,11 +28,15 @@ clean-zephyr-workspace: ## Remove Zephyr bootloader, modules, and tools director CMAKE_PACKAGES ?= ~/.cmake/packages .PHONY: zephyr-export zephyr-export: fprime-venv ## Export Zephyr environment variables - @test -d $(CMAKE_PACKAGES)/Zephyr/ || { $(WESTX) zephyr-export; } + @test -d $(CMAKE_PACKAGES)/Zephyr/ || \ + test -d $(CMAKE_PACKAGES)/ZephyrUnittest/ || \ + { \ + $(WESTX) zephyr-export; \ + } .PHONY: clean-zephyr-export clean-zephyr-export: ## Remove Zephyr exported files - rm -rf $(CMAKE_PACKAGES)/Zephyr + rm -rf $(CMAKE_PACKAGES)/Zephyr $(CMAKE_PACKAGES)/ZephyrUnittest/ SDK_VERSION ?= $(shell cat $(ZEPHYR_WORKSPACE)/zephyr/SDK_VERSION) ZEPHYR_SDK_PATH ?= ~/zephyr-sdk-$(SDK_VERSION) From c5cfd255bb2851483ee1b2f2dfb22d10cd00d8b3 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Wed, 8 Oct 2025 19:04:19 -0500 Subject: [PATCH 17/50] allow prerelease python modules --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 981ff9ff..7feac45a 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv fprime-venv: ## Create a virtual environment @$(MAKE) uv @$(UV) venv fprime-venv - @$(UV) pip install --requirement pyproject.toml + @$(UV) pip install --prerelease=allow --requirement pyproject.toml ##@ Development From 56ecab0b5e8ff7a7d2038131c075cc0df5299c37 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Wed, 8 Oct 2025 19:15:40 -0500 Subject: [PATCH 18/50] Allow prerelease --- lib/makelib/zephyr.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index e74b9fdf..b038cc22 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -54,5 +54,5 @@ clean-zephyr-sdk: ## Remove Zephyr SDK zephyr-python-deps: fprime-venv ## Install Zephyr Python dependencies @test -s $(VIRTUAL_ENV)/zephyr-deps.txt || { \ $(WEST) packages pip > $(VIRTUAL_ENV)/zephyr-deps.txt; \ - $(UV) pip install --requirement $(VIRTUAL_ENV)/zephyr-deps.txt; \ + $(UV) pip install --prerelease=allow --requirement $(VIRTUAL_ENV)/zephyr-deps.txt; \ } From 7898cde3c33d43b188ea859e30896aab8234d60e Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Wed, 8 Oct 2025 19:29:39 -0500 Subject: [PATCH 19/50] poke --- .github/workflows/ci.yaml | 1 + lib/makelib/zephyr.mk | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a7a83ba1..b9432c3c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -80,6 +80,7 @@ jobs: - name: Install Zephyr Python Dependencies run: | + make ngay-test make zephyr-python-deps - name: Generate diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index b038cc22..73f25d8f 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -52,7 +52,11 @@ clean-zephyr-sdk: ## Remove Zephyr SDK .PHONY: zephyr-python-deps zephyr-python-deps: fprime-venv ## Install Zephyr Python dependencies - @test -s $(VIRTUAL_ENV)/zephyr-deps.txt || { \ + test -s $(VIRTUAL_ENV)/zephyr-deps.txt || { \ $(WEST) packages pip > $(VIRTUAL_ENV)/zephyr-deps.txt; \ $(UV) pip install --prerelease=allow --requirement $(VIRTUAL_ENV)/zephyr-deps.txt; \ } + +.PHONY: ngay-test +ngay-test: + $(WEST) packages pip From 8d0af4d90f0f930c5f87033782399a10458cecac Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:00:20 -0500 Subject: [PATCH 20/50] Try new uv based west command --- .github/workflows/ci.yaml | 1 - .gitignore | 2 + lib/makelib/zephyr.mk | 15 +- lib/zephyr-workspace/west-commands.yml | 7 + lib/zephyr-workspace/west.yml | 2 +- lib/zephyr-workspace/west_commands/uv.py | 174 +++++++++++++++++++++++ 6 files changed, 192 insertions(+), 9 deletions(-) create mode 100644 lib/zephyr-workspace/west-commands.yml create mode 100644 lib/zephyr-workspace/west_commands/uv.py diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index b9432c3c..a7a83ba1 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -80,7 +80,6 @@ jobs: - name: Install Zephyr Python Dependencies run: | - make ngay-test make zephyr-python-deps - name: Generate diff --git a/.gitignore b/.gitignore index 7f2a54b7..646f1977 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,8 @@ build-fprime-* lib/zephyr-workspace/* !lib/zephyr-workspace/.west/ !lib/zephyr-workspace/west.yml +!lib/zephyr-workspace/west-commands.yml +!lib/zephyr-workspace/west_commands/ # Misc /venv/ diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index 73f25d8f..d728f09c 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -52,11 +52,12 @@ clean-zephyr-sdk: ## Remove Zephyr SDK .PHONY: zephyr-python-deps zephyr-python-deps: fprime-venv ## Install Zephyr Python dependencies - test -s $(VIRTUAL_ENV)/zephyr-deps.txt || { \ - $(WEST) packages pip > $(VIRTUAL_ENV)/zephyr-deps.txt; \ - $(UV) pip install --prerelease=allow --requirement $(VIRTUAL_ENV)/zephyr-deps.txt; \ - } + $(WEST) uv pip --install -- --prerelease=allow + +# .PHONY: ngay-test +# ngay-test: +# $(WEST) packages pip --install -- --pre -.PHONY: ngay-test -ngay-test: - $(WEST) packages pip +# .PHONY: uv-test +# uv-test: +# $(WEST) uv pip --install -- --prerelease=allow diff --git a/lib/zephyr-workspace/west-commands.yml b/lib/zephyr-workspace/west-commands.yml new file mode 100644 index 00000000..c0fd7228 --- /dev/null +++ b/lib/zephyr-workspace/west-commands.yml @@ -0,0 +1,7 @@ +# Keep the help strings in sync with the values in the .py files! +west-commands: + - file: west_commands/uv.py + commands: + - name: uv + class: Uv + help: manage packages for Zephyr with uv diff --git a/lib/zephyr-workspace/west.yml b/lib/zephyr-workspace/west.yml index dcec9f28..29649467 100644 --- a/lib/zephyr-workspace/west.yml +++ b/lib/zephyr-workspace/west.yml @@ -83,4 +83,4 @@ manifest: self: path: . - # west-commands: lib/zephyr-workspace/zephyr/scripts/west-commands.yml + west-commands: west-commands.yml diff --git a/lib/zephyr-workspace/west_commands/uv.py b/lib/zephyr-workspace/west_commands/uv.py new file mode 100644 index 00000000..fb8aa65a --- /dev/null +++ b/lib/zephyr-workspace/west_commands/uv.py @@ -0,0 +1,174 @@ +# Copyright (c) 2024 Basalte bv +# +# SPDX-License-Identifier: Apache-2.0 + +import argparse +import os +import subprocess +import sys +import textwrap +from itertools import chain +from pathlib import Path + + +from west.commands import WestCommand +sys.path.append(os.fspath(Path(__file__).parent.parent / "zephyr" / "scripts" / "west_commands")) +from zephyr_ext_common import ZEPHYR_BASE + +sys.path.append(os.fspath(ZEPHYR_BASE / "scripts")) +import zephyr_module + + +def in_venv() -> bool: + return sys.prefix != sys.base_prefix + + +class Uv(WestCommand): + def __init__(self): + super().__init__( + "uv", + "manage packages for Zephyr", + "List and Install packages for Zephyr and modules", + accepts_unknown_args=True, + ) + + def do_add_parser(self, parser_adder): + parser = parser_adder.add_parser( + self.name, + help=self.help, + description=self.description, + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=textwrap.dedent( + """ + Listing uv: + + Run 'west uv ' to list all dependencies + available from a given package manager, already + installed and not. These can be filtered by module, + see 'west uv --help' for details. + """ + ), + ) + + parser.add_argument( + "-m", + "--module", + action="append", + default=[], + dest="modules", + metavar="", + help="Zephyr module to run the 'packages' command for. " + "Use 'zephyr' if the 'packages' command should run for Zephyr itself. " + "Option can be passed multiple times. " + "If this option is not given, the 'packages' command will run for Zephyr " + "and all modules.", + ) + + subparsers_gen = parser.add_subparsers( + metavar="", + dest="manager", + help="select a manager.", + required=True, + ) + + pip_parser = subparsers_gen.add_parser( + "pip", + help="manage pip packages", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=textwrap.dedent( + """ + Manage pip packages: + + Run 'west uv pip' to print all requirement files needed by + Zephyr and modules. + + The output is compatible with the requirements file format itself. + """ + ), + ) + + pip_parser.add_argument( + "--install", + action="store_true", + help="Install pip requirements instead of listing them. " + "A single 'pip install' command is built and executed. " + "Additional pip arguments can be passed after a -- separator " + "from the original 'west uv pip --install' command. For example pass " + "'--dry-run' to pip not to actually install anything, but print what would be.", + ) + + pip_parser.add_argument( + "--ignore-venv-check", + action="store_true", + help="Ignore the virtual environment check. " + "This is useful when running 'west uv pip --install' " + "in a CI environment where the virtual environment is not set up.", + ) + + return parser + + def do_run(self, args, unknown): + if len(unknown) > 0 and unknown[0] != "--": + self.die( + f'Unknown argument "{unknown[0]}"; ' + 'arguments for the manager should be passed after "--"' + ) + + # Store the zephyr modules for easier access + self.zephyr_modules = zephyr_module.parse_modules(ZEPHYR_BASE, self.manifest) + + if args.modules: + # Check for unknown module names + module_names = [m.meta.get("name") for m in self.zephyr_modules] + module_names.append("zephyr") + for m in args.modules: + if m not in module_names: + self.die(f'Unknown zephyr module "{m}"') + + if args.manager == "pip": + return self.do_run_pip(args, unknown[1:]) + + # Unreachable but print an error message if an implementation is missing. + self.die(f'Unsupported package manager: "{args.manager}"') + + def do_run_pip(self, args, manager_args): + requirements = [] + + if not args.modules or "zephyr" in args.modules: + requirements.append(ZEPHYR_BASE / "scripts/requirements.txt") + + for module in self.zephyr_modules: + module_name = module.meta.get("name") + if args.modules and module_name not in args.modules: + if args.install: + self.dbg(f"Skipping module {module_name}") + continue + + # Get the optional pip section from the package managers + pip = module.meta.get("package-managers", {}).get("pip") + if pip is None: + if args.install: + self.dbg(f"Nothing to install for {module_name}") + continue + + # Add requirements files + requirements += [Path(module.project) / r for r in pip.get("requirement-files", [])] + + if args.install: + if not in_venv() and not args.ignore_venv_check: + self.die("Running pip install outside of a virtual environment") + + if len(requirements) > 0: + subprocess.check_call( + ["uv", "pip", "install"] + + list(chain.from_iterable([("-r", r) for r in requirements])) + + manager_args + ) + else: + self.inf("Nothing to install") + return + + if len(manager_args) > 0: + self.die(f'west uv pip does not support unknown arguments: "{manager_args}"') + + self.inf("\n".join([f"-r {r}" for r in requirements])) From e491ea941070550202d2c8a06be6c49274b6da78 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:09:28 -0500 Subject: [PATCH 21/50] Fix spacing --- .github/workflows/ci.yaml | 160 +++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 80 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index a7a83ba1..1bfa9bf9 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -20,87 +20,87 @@ jobs: UV_CACHE_DIR: /tmp/.uv-cache steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Cache bin - uses: actions/cache@v4 - with: - path: | - bin - key: bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} - restore-keys: | - bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} - - - name: Download bin tools - if: steps.cache-bin.outputs.cache-hit != 'true' - run: | - make download-bin - - - name: Setup submodules - if: steps.cache-submodules.outputs.cache-hit != 'true' - run: | - make submodules - - - name: Restore uv cache - uses: actions/cache@v4 - with: - path: /tmp/.uv-cache - key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Cache bin + uses: actions/cache@v4 + with: + path: | + bin + key: bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} restore-keys: | - uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - - - name: Create python venv - run: | - make fprime-venv - - - name: Setup Zephyr - if: steps.cache-zephyr-workspace.outputs.cache-hit != 'true' - run: | - make zephyr-workspace - - - name: Cache Zephyr SDK - id: cache-zephyr-sdk - uses: actions/cache@v4 - with: - path: | - ~/zephyr-sdk-* - key: zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} - restore-keys: | - zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} - - - name: Setup Zephyr SDK - if: steps.cache-zephyr-sdk.outputs.cache-hit != 'true' - run: | - make zephyr-sdk - - - name: Setup Zephyr Export - run: | - make zephyr-export - - - name: Install Zephyr Python Dependencies - run: | - make zephyr-python-deps - - - name: Generate - run: | - make generate-ci - - - name: Build - run: | - make build-ci - - - name: Upload build artifacts - uses: actions/upload-artifact@v4 - with: - name: artifacts - path: | - build-artifacts/zephyr.uf2 - build-artifacts/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json - retention-days: 30 - - - name: Minimize uv cache - run: make minimize-uv-cache + bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} + + - name: Download bin tools + if: steps.cache-bin.outputs.cache-hit != 'true' + run: | + make download-bin + + - name: Setup submodules + if: steps.cache-submodules.outputs.cache-hit != 'true' + run: | + make submodules + + - name: Restore uv cache + uses: actions/cache@v4 + with: + path: /tmp/.uv-cache + key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + restore-keys: | + uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + + - name: Create python venv + run: | + make fprime-venv + + - name: Setup Zephyr + if: steps.cache-zephyr-workspace.outputs.cache-hit != 'true' + run: | + make zephyr-workspace + + - name: Cache Zephyr SDK + id: cache-zephyr-sdk + uses: actions/cache@v4 + with: + path: | + ~/zephyr-sdk-* + key: zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} + restore-keys: | + zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} + + - name: Setup Zephyr SDK + if: steps.cache-zephyr-sdk.outputs.cache-hit != 'true' + run: | + make zephyr-sdk + + - name: Setup Zephyr Export + run: | + make zephyr-export + + - name: Install Zephyr Python Dependencies + run: | + make zephyr-python-deps + + - name: Generate + run: | + make generate-ci + + - name: Build + run: | + make build-ci + + - name: Upload build artifacts + uses: actions/upload-artifact@v4 + with: + name: artifacts + path: | + build-artifacts/zephyr.uf2 + build-artifacts/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json + retention-days: 30 + + - name: Minimize uv cache + run: make minimize-uv-cache integration: runs-on: [integration] needs: build From 974eef77a8a81b4b95373d5e4f0dc5349530c00f Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:09:42 -0500 Subject: [PATCH 22/50] fmt --- lib/zephyr-workspace/west_commands/uv.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/zephyr-workspace/west_commands/uv.py b/lib/zephyr-workspace/west_commands/uv.py index fb8aa65a..2e27b3c0 100644 --- a/lib/zephyr-workspace/west_commands/uv.py +++ b/lib/zephyr-workspace/west_commands/uv.py @@ -10,9 +10,11 @@ from itertools import chain from pathlib import Path - from west.commands import WestCommand -sys.path.append(os.fspath(Path(__file__).parent.parent / "zephyr" / "scripts" / "west_commands")) + +sys.path.append( + os.fspath(Path(__file__).parent.parent / "zephyr" / "scripts" / "west_commands") +) from zephyr_ext_common import ZEPHYR_BASE sys.path.append(os.fspath(ZEPHYR_BASE / "scripts")) @@ -152,7 +154,9 @@ def do_run_pip(self, args, manager_args): continue # Add requirements files - requirements += [Path(module.project) / r for r in pip.get("requirement-files", [])] + requirements += [ + Path(module.project) / r for r in pip.get("requirement-files", []) + ] if args.install: if not in_venv() and not args.ignore_venv_check: @@ -169,6 +173,8 @@ def do_run_pip(self, args, manager_args): return if len(manager_args) > 0: - self.die(f'west uv pip does not support unknown arguments: "{manager_args}"') + self.die( + f'west uv pip does not support unknown arguments: "{manager_args}"' + ) self.inf("\n".join([f"-r {r}" for r in requirements])) From b7fa1fb6e665d32df1afd277400d79b9d6f6897a Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:13:38 -0500 Subject: [PATCH 23/50] Remove pip dependency --- requirements.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0c5cf17d..f25afc34 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1 @@ -pip west From bfb1e165043e61a7caca3f19bae1ef88dcd94fd0 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:34:11 -0500 Subject: [PATCH 24/50] Work with existing zephyr directory structure --- .gitignore | 3 -- CMakeLists.txt | 4 ++ lib/makelib/zephyr.mk | 37 ++++++++++--------- lib/zephyr-workspace/.west/config | 5 --- .../west-commands.yml => west-commands.yml | 2 +- lib/zephyr-workspace/west.yml => west.yml | 23 +++++++----- 6 files changed, 37 insertions(+), 37 deletions(-) delete mode 100644 lib/zephyr-workspace/.west/config rename lib/zephyr-workspace/west-commands.yml => west-commands.yml (77%) rename lib/zephyr-workspace/west.yml => west.yml (75%) diff --git a/.gitignore b/.gitignore index 646f1977..6aa75d79 100644 --- a/.gitignore +++ b/.gitignore @@ -9,9 +9,6 @@ build-fprime-* # Zephyr workspace lib/zephyr-workspace/* -!lib/zephyr-workspace/.west/ -!lib/zephyr-workspace/west.yml -!lib/zephyr-workspace/west-commands.yml !lib/zephyr-workspace/west_commands/ # Misc diff --git a/CMakeLists.txt b/CMakeLists.txt index a4f49c5c..488e62fe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,10 @@ cmake_minimum_required(VERSION 3.24.2) +# Set BOARD_ROOT to find custom boards +# The structure is BOARD_ROOT/boards/vendor/board +list(APPEND BOARD_ROOT "${CMAKE_CURRENT_LIST_DIR}") + # Patch in std-atomic implementations if (BOARD STREQUAL "rpi_pico" OR FPRIME_ZEPHYR_USE_STD_ATOMIC_FIX) include_directories(BEFORE "${CMAKE_CURRENT_LIST_DIR}/lib/fprime-zephyr/fprime-zephyr/Os/StdAtomic") diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index d728f09c..c10170ee 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -4,26 +4,35 @@ ZEPHYR_WORKSPACE ?= lib/zephyr-workspace ZEPHYR_PATH ?= $(ZEPHYR_WORKSPACE)/zephyr # UV runs west with the active virtual environment -WEST ?= cd $(ZEPHYR_WORKSPACE) && $(UV_RUN) west +WEST ?= $(UV_RUN) west # UVX runs west without the active virtual environment -WESTX ?= cd $(ZEPHYR_WORKSPACE) && $(UVX) west +WESTX ?= $(UVX) west -zephyr-setup: zephyr-workspace zephyr-export zephyr-sdk zephyr-python-deps +zephyr-setup: zephyr-config zephyr-workspace zephyr-export zephyr-sdk zephyr-python-deps +zephyr-clean: clean-zephyr-config clean-zephyr-workspace clean-zephyr-export clean-zephyr-sdk + +.PHONY: zephyr-config +zephyr-config: fprime-venv ## Configure west + @test -f ../.west/config || { \ + $(WEST) init --local .; \ + } + +.PHONY: clean-zephyr-config +clean-zephyr-config: ## Remove west configuration + rm -rf ../.west .PHONY: zephyr-workspace zephyr-workspace: fprime-venv ## Setup Zephyr bootloader, modules, and tools directories - @test -d $(ZEPHYR_WORKSPACE)/bootloader || \ - test -d $(ZEPHYR_WORKSPACE)/modules || \ - test -d $(ZEPHYR_WORKSPACE)/tools || { \ + @test -d ../lib/zephyr-workspace/bootloader || \ + test -d ../lib/zephyr-workspace/modules || \ + test -d ../lib/zephyr-workspace/tools || { \ $(WESTX) update; \ } .PHONY: clean-zephyr-workspace clean-zephyr-workspace: ## Remove Zephyr bootloader, modules, and tools directories - rm -rf $(ZEPHYR_WORKSPACE)/bootloader \ - $(ZEPHYR_WORKSPACE)/modules \ - $(ZEPHYR_WORKSPACE)/tools + rm -rf ../lib CMAKE_PACKAGES ?= ~/.cmake/packages .PHONY: zephyr-export @@ -52,12 +61,4 @@ clean-zephyr-sdk: ## Remove Zephyr SDK .PHONY: zephyr-python-deps zephyr-python-deps: fprime-venv ## Install Zephyr Python dependencies - $(WEST) uv pip --install -- --prerelease=allow - -# .PHONY: ngay-test -# ngay-test: -# $(WEST) packages pip --install -- --pre - -# .PHONY: uv-test -# uv-test: -# $(WEST) uv pip --install -- --prerelease=allow + @$(WEST) uv pip --install -- --prerelease=allow --quiet diff --git a/lib/zephyr-workspace/.west/config b/lib/zephyr-workspace/.west/config deleted file mode 100644 index 7c1c1240..00000000 --- a/lib/zephyr-workspace/.west/config +++ /dev/null @@ -1,5 +0,0 @@ -[zephyr] -base = zephyr - -[manifest] -path = . diff --git a/lib/zephyr-workspace/west-commands.yml b/west-commands.yml similarity index 77% rename from lib/zephyr-workspace/west-commands.yml rename to west-commands.yml index c0fd7228..54061a9b 100644 --- a/lib/zephyr-workspace/west-commands.yml +++ b/west-commands.yml @@ -1,6 +1,6 @@ # Keep the help strings in sync with the values in the .py files! west-commands: - - file: west_commands/uv.py + - file: lib/zephyr-workspace/west_commands/uv.py commands: - name: uv class: Uv diff --git a/lib/zephyr-workspace/west.yml b/west.yml similarity index 75% rename from lib/zephyr-workspace/west.yml rename to west.yml index 29649467..5e9079dc 100644 --- a/lib/zephyr-workspace/west.yml +++ b/west.yml @@ -18,7 +18,7 @@ manifest: - name: zephyr repo-path: zephyr revision: v4.2.0 - path: zephyr + path: lib/zephyr-workspace/zephyr west-commands: scripts/west-commands.yml import: # Import specific submanifests only (instead of all submanifests) @@ -30,54 +30,57 @@ manifest: - tinycrypt # Lightweight crypto library - mcuboot # Bootloader support + # Core modules required for RP2040/RP2350 - name: cmsis revision: 512cc7e895e8491696b61f7ba8066b4a182569b8 - path: modules/hal/cmsis + path: lib/zephyr-workspace/modules/hal/cmsis groups: - hal - name: cmsis_6 repo-path: CMSIS_6 revision: 06d952b6713a2ca41c9224a62075e4059402a151 - path: modules/hal/cmsis_6 + path: lib/zephyr-workspace/modules/hal/cmsis_6 groups: - hal - name: hal_rpi_pico - path: modules/hal/rpi_pico + path: lib/zephyr-workspace/modules/hal/rpi_pico revision: 7b57b24588797e6e7bf18b6bda168e6b96374264 groups: - hal - name: hal_st revision: 9f81b4427e955885398805b7bca0da3a8cd9109c - path: modules/hal/st + path: lib/zephyr-workspace/modules/hal/st groups: - hal - name: picolibc - path: modules/lib/picolibc + path: lib/zephyr-workspace/modules/lib/picolibc revision: 560946f26db075c296beea5b39d99e6de43c9010 - name: loramac-node revision: fb00b383072518c918e2258b0916c996f2d4eebe - path: modules/lib/loramac-node + path: lib/zephyr-workspace/modules/lib/loramac-node + # Crypto libraries (commonly used) - name: mbedtls revision: 85440ef5fffa95d0e9971e9163719189cf34d979 - path: modules/crypto/mbedtls + path: lib/zephyr-workspace/modules/crypto/mbedtls groups: - crypto - name: tinycrypt revision: 1012a3ebee18c15ede5efc8332ee2fc37817670f - path: modules/crypto/tinycrypt + path: lib/zephyr-workspace/modules/crypto/tinycrypt groups: - crypto + # Bootloader support (optional - remove if not needed) - name: mcuboot revision: 4eba8087fa606db801455f14d185255bc8c49467 - path: bootloader/mcuboot + path: lib/zephyr-workspace/bootloader/mcuboot groups: - bootloader From 872a1b25b8c9ba92ae1181b6f189809944491e6a Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:48:21 -0500 Subject: [PATCH 25/50] Stop caching zephyr sdk, cache entire fprime-venv --- .github/workflows/ci.yaml | 32 ++++++++++++++++++-------------- lib/makelib/zephyr.mk | 6 ++---- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 1bfa9bf9..6c67ec5f 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -45,10 +45,24 @@ jobs: - name: Restore uv cache uses: actions/cache@v4 with: - path: /tmp/.uv-cache - key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - restore-keys: | - uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + path: /tmp/.uv-cache + key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + restore-keys: | + uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + + - name: Submodule Cache Key + id: submodule-cache-key + run: | + echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" >> $GITHUB_OUTPUT + + - name: Restore fprime-venv cache + id: cache-fprime-venv + uses: actions/cache@v4 + with: + path: fprime-venv + key: fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} + restore-keys: | + fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} - name: Create python venv run: | @@ -59,16 +73,6 @@ jobs: run: | make zephyr-workspace - - name: Cache Zephyr SDK - id: cache-zephyr-sdk - uses: actions/cache@v4 - with: - path: | - ~/zephyr-sdk-* - key: zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} - restore-keys: | - zephyr-sdk-${{ runner.os }}-${{ hashFiles('lib/zephyr-workspace/zephyr/SDK_VERSION') }} - - name: Setup Zephyr SDK if: steps.cache-zephyr-sdk.outputs.cache-hit != 'true' run: | diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index c10170ee..5d5d3a3c 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -1,8 +1,5 @@ ##@ Zephyr -ZEPHYR_WORKSPACE ?= lib/zephyr-workspace -ZEPHYR_PATH ?= $(ZEPHYR_WORKSPACE)/zephyr - # UV runs west with the active virtual environment WEST ?= $(UV_RUN) west @@ -47,7 +44,8 @@ zephyr-export: fprime-venv ## Export Zephyr environment variables clean-zephyr-export: ## Remove Zephyr exported files rm -rf $(CMAKE_PACKAGES)/Zephyr $(CMAKE_PACKAGES)/ZephyrUnittest/ -SDK_VERSION ?= $(shell cat $(ZEPHYR_WORKSPACE)/zephyr/SDK_VERSION) +ZEPHYR_PATH ?= lib/zephyr-workspace/zephyr +SDK_VERSION ?= $(shell cat $(ZEPHYR_PATH)/SDK_VERSION) ZEPHYR_SDK_PATH ?= ~/zephyr-sdk-$(SDK_VERSION) .PHONY: zephyr-sdk zephyr-sdk: fprime-venv ## Install Zephyr SDK From c9f458e03bda1982ff8f48cf56bc536d21d0d4b2 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:54:27 -0500 Subject: [PATCH 26/50] Always run uv --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 7feac45a..96dc2f33 100644 --- a/Makefile +++ b/Makefile @@ -14,9 +14,9 @@ submodules: ## Initialize and update git submodules fi export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv -fprime-venv: ## Create a virtual environment - @$(MAKE) uv - @$(UV) venv fprime-venv +.PHONY: fprime-venv +fprime-venv: uv ## Create a virtual environment + @$(UV) venv fprime-venv --allow-existing @$(UV) pip install --prerelease=allow --requirement pyproject.toml ##@ Development From 9acbf006f55880f2fcaa30525e2c7bc3d3fc0e7e Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 00:58:58 -0500 Subject: [PATCH 27/50] Stop caching --- .github/workflows/ci.yaml | 58 +++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6c67ec5f..17f5d8de 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -23,14 +23,14 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Cache bin - uses: actions/cache@v4 - with: - path: | - bin - key: bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} - restore-keys: | - bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} + # - name: Cache bin + # uses: actions/cache@v4 + # with: + # path: | + # bin + # key: bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} + # restore-keys: | + # bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} - name: Download bin tools if: steps.cache-bin.outputs.cache-hit != 'true' @@ -42,27 +42,27 @@ jobs: run: | make submodules - - name: Restore uv cache - uses: actions/cache@v4 - with: - path: /tmp/.uv-cache - key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - restore-keys: | - uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - - - name: Submodule Cache Key - id: submodule-cache-key - run: | - echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" >> $GITHUB_OUTPUT - - - name: Restore fprime-venv cache - id: cache-fprime-venv - uses: actions/cache@v4 - with: - path: fprime-venv - key: fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} - restore-keys: | - fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} + # - name: Restore uv cache + # uses: actions/cache@v4 + # with: + # path: /tmp/.uv-cache + # key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + # restore-keys: | + # uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} + + # - name: Submodule Cache Key + # id: submodule-cache-key + # run: | + # echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" >> $GITHUB_OUTPUT + + # - name: Restore fprime-venv cache + # id: cache-fprime-venv + # uses: actions/cache@v4 + # with: + # path: fprime-venv + # key: fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} + # restore-keys: | + # fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} - name: Create python venv run: | From 9ec2d0cbf611523b6c6c2dd918d023652e15d13b Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:07:32 -0500 Subject: [PATCH 28/50] Simplifying --- .github/workflows/ci.yaml | 55 ++++++++++++--------------------------- lib/makelib/ci.mk | 8 ------ 2 files changed, 16 insertions(+), 47 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 17f5d8de..4549dbc6 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -11,26 +11,18 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Lint run: | make fmt + build: runs-on: deathstar env: UV_CACHE_DIR: /tmp/.uv-cache steps: - - name: Checkout repository - uses: actions/checkout@v4 - - # - name: Cache bin - # uses: actions/cache@v4 - # with: - # path: | - # bin - # key: bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} - # restore-keys: | - # bin-${{ runner.os }}-${{ hashFiles('lib/makelib/build-tools.mk') }} + - uses: actions/checkout@v4 - name: Download bin tools if: steps.cache-bin.outputs.cache-hit != 'true' @@ -42,28 +34,6 @@ jobs: run: | make submodules - # - name: Restore uv cache - # uses: actions/cache@v4 - # with: - # path: /tmp/.uv-cache - # key: uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - # restore-keys: | - # uv-${{ runner.os }}-${{ hashFiles('uv.lock') }} - - # - name: Submodule Cache Key - # id: submodule-cache-key - # run: | - # echo "submodule_cache_key=$(git submodule | sha256sum | cut -f1 -d' ')" >> $GITHUB_OUTPUT - - # - name: Restore fprime-venv cache - # id: cache-fprime-venv - # uses: actions/cache@v4 - # with: - # path: fprime-venv - # key: fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} - # restore-keys: | - # fprime-venv-${{ runner.os }}-${{ hashFiles('pyproject.toml') }}-${{ steps.submodule-cache-key.outputs.submodule_cache_key }} - - name: Create python venv run: | make fprime-venv @@ -88,11 +58,11 @@ jobs: - name: Generate run: | - make generate-ci + make generate - name: Build run: | - make build-ci + make build - name: Upload build artifacts uses: actions/upload-artifact@v4 @@ -105,25 +75,32 @@ jobs: - name: Minimize uv cache run: make minimize-uv-cache + integration: - runs-on: [integration] + runs-on: + - integration needs: build steps: - uses: actions/checkout@v4 + - uses: actions/download-artifact@v5 + - name: Set up dependencies run: | - mkdir -p build-artifacts/zephyr/fprime-zephyr-deployment/dict && mv zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json build-artifacts/zephyr/fprime-zephyr-deployment/dict - make submodules - make fprime-venv + mkdir -p build-artifacts/zephyr/fprime-zephyr-deployment/dict \ + && mv zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json build-artifacts/zephyr/fprime-zephyr-deployment/dict + make submodules fprime-venv + - name: Trigger Bootloader run: | make bootloader sleep 10 + - name: Copy Firmware run: | picotool load ./zephyr.uf2 picotool reboot + - name: Run Integration Tests run: | make test-integration diff --git a/lib/makelib/ci.mk b/lib/makelib/ci.mk index f602ff36..161b8fc8 100644 --- a/lib/makelib/ci.mk +++ b/lib/makelib/ci.mk @@ -1,11 +1,3 @@ .PHONY: minimize-uv-cache minimize-uv-cache: @$(UV) cache prune --ci - -.PHONY: generate-ci -generate-ci: - @$(UV_RUN) fprime-util generate -f - -.PHONY: build-ci -build-ci: - @$(UV_RUN) fprime-util build From e089218a97b565c45564d7f3ed377aae24407273 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:10:17 -0500 Subject: [PATCH 29/50] Remove pyproject.toml bc it was causing redownloads --- pyproject.toml | 35 - requirements.txt | 5 + uv.lock | 2097 ---------------------------------------------- 3 files changed, 5 insertions(+), 2132 deletions(-) delete mode 100644 pyproject.toml delete mode 100644 uv.lock diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 62449629..00000000 --- a/pyproject.toml +++ /dev/null @@ -1,35 +0,0 @@ -[build-system] -requires = ["setuptools>=80.9.0", "wheel"] -build-backend = "setuptools.build_meta" - -[project] -name = "proves-core-reference" -version = "0.1.0" -description = "A reference software implementation for the PROVES Kit, integrating F Prime and Zephyr" -readme = "README.md" -license = {file = "LICENSE"} -requires-python = ">=3.13" -authors = [ - {name = "Open Source Space Foundation"}, -] -keywords = ["fprime", "zephyr", "embedded", "aerospace", "flight-software"] - -dynamic = ["dependencies"] - -[project.urls] -Homepage = "https://www.opensource.space/" -Repository = "https://github.com/Open-Source-Space-Foundation/proves-core-reference" -Documentation = "https://docs.proveskit.space/en/latest/" -Issues = "https://github.com/Open-Source-Space-Foundation/proves-core-reference/issues" - -[tool.setuptools] -packages = [] - -[tool.setuptools.dynamic] -dependencies = {file = [ - "requirements.txt", - "lib/fprime/requirements.txt", - "lib/zephyr-workspace/zephyr/scripts/requirements-base.txt", - "lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt", - "lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt", -]} diff --git a/requirements.txt b/requirements.txt index f25afc34..93f5a235 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,6 @@ west + +lib/fprime/requirements.txt +lib/zephyr-workspace/zephyr/scripts/requirements-base.txt +lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt +lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt diff --git a/uv.lock b/uv.lock deleted file mode 100644 index 94e209ea..00000000 --- a/uv.lock +++ /dev/null @@ -1,2097 +0,0 @@ -version = 1 -revision = 3 -requires-python = ">=3.13" -resolution-markers = [ - "platform_python_implementation != 'PyPy'", - "platform_python_implementation == 'PyPy'", -] - -[[package]] -name = "aniso8601" -version = "9.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cb/72/be3db445b03944bfbb2b02b82d00cb2a2bcf96275c4543f14bf60fa79e12/aniso8601-9.0.1.tar.gz", hash = "sha256:72e3117667eedf66951bb2d93f4296a56b94b078a8a95905a052611fb3f1b973", size = 47345, upload-time = "2021-03-02T01:33:22.944Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/04/e97c12dc034791d7b504860acfcdd2963fa21ae61eaca1c9d31245f812c3/aniso8601-9.0.1-py2.py3-none-any.whl", hash = "sha256:1d2b7ef82963909e93c4f24ce48d4de9e66009a21bf1c1e1c85bdd0812fe412f", size = 52754, upload-time = "2021-03-02T01:33:20.669Z" }, -] - -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, -] - -[[package]] -name = "anytree" -version = "2.13.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bc/a8/eb55fab589c56f9b6be2b3fd6997aa04bb6f3da93b01154ce6fc8e799db2/anytree-2.13.0.tar.gz", hash = "sha256:c9d3aa6825fdd06af7ebb05b4ef291d2db63e62bb1f9b7d9b71354be9d362714", size = 48389, upload-time = "2025-04-08T21:06:30.662Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/98/f6aa7fe0783e42be3093d8ef1b0ecdc22c34c0d69640dfb37f56925cb141/anytree-2.13.0-py3-none-any.whl", hash = "sha256:4cbcf10df36b1f1cba131b7e487ff3edafc9d6e932a3c70071b5b768bab901ff", size = 45077, upload-time = "2025-04-08T21:06:29.494Z" }, -] - -[[package]] -name = "appdirs" -version = "1.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470, upload-time = "2020-05-11T07:59:51.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566, upload-time = "2020-05-11T07:59:49.499Z" }, -] - -[[package]] -name = "argcomplete" -version = "3.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5f/39/27605e133e7f4bb0c8e48c9a6b87101515e3446003e0442761f6a02ac35e/argcomplete-3.5.1.tar.gz", hash = "sha256:eb1ee355aa2557bd3d0145de7b06b2a45b0ce461e1e7813f5d066039ab4177b4", size = 82280, upload-time = "2024-10-07T04:00:39.242Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/be/a606a6701d491cfae75583c80a6583f8abe9c36c0b9666e867e7cdd62fe8/argcomplete-3.5.1-py3-none-any.whl", hash = "sha256:1a1d148bdaa3e3b93454900163403df41448a248af01b6e849edc5ac08e6c363", size = 43498, upload-time = "2024-10-07T04:00:36.986Z" }, -] - -[[package]] -name = "arrow" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, - { name = "types-python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, -] - -[[package]] -name = "attrs" -version = "25.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, -] - -[[package]] -name = "beartype" -version = "0.22.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/04/96/43ed27f27127155f24f5cf85df0c27fd2ac2ab67d94cecc8f76933f91679/beartype-0.22.2.tar.gz", hash = "sha256:ff3a7df26af8d15fa87f97934f0f6d41bbdadca971c410819104998dd26013d2", size = 1574491, upload-time = "2025-10-04T06:37:56.451Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/2a/a4773109619010192e72f48e95165b14790413a51f513c879c8d63f67e17/beartype-0.22.2-py3-none-any.whl", hash = "sha256:12077afe3528eba5c5b801f816712f7ff06f6da5509994c79561e29b48bcedb8", size = 1317280, upload-time = "2025-10-04T06:37:53.99Z" }, -] - -[[package]] -name = "binaryornot" -version = "0.4.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "chardet" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload-time = "2017-08-03T15:55:25.08Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload-time = "2017-08-03T15:55:31.23Z" }, -] - -[[package]] -name = "blinker" -version = "1.8.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1e/57/a6a1721eff09598fb01f3c7cda070c1b6a0f12d63c83236edf79a440abcc/blinker-1.8.2.tar.gz", hash = "sha256:8f77b09d3bf7c795e969e9486f39c2c5e9c39d4ee07424be2bc594ece9642d83", size = 23161, upload-time = "2024-05-06T17:04:10.101Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/2a/10164ed1f31196a2f7f3799368a821765c62851ead0e630ab52b8e14b4d0/blinker-1.8.2-py3-none-any.whl", hash = "sha256:1779309f71bf239144b9399d06ae925637cf6634cf6bd131104184531bf67c01", size = 9456, upload-time = "2024-05-06T17:04:08.444Z" }, -] - -[[package]] -name = "boolean-py" -version = "5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload-time = "2025-04-03T10:39:49.734Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload-time = "2025-04-03T10:39:48.449Z" }, -] - -[[package]] -name = "brotli" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/c2/f9e977608bdf958650638c3f1e28f85a1b075f075ebbe77db8555463787b/Brotli-1.1.0.tar.gz", hash = "sha256:81de08ac11bcb85841e440c13611c00b67d3bf82698314928d0b676362546724", size = 7372270, upload-time = "2023-09-07T14:05:41.643Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/9f/fb37bb8ffc52a8da37b1c03c459a8cd55df7a57bdccd8831d500e994a0ca/Brotli-1.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8bf32b98b75c13ec7cf774164172683d6e7891088f6316e54425fde1efc276d5", size = 815681, upload-time = "2024-10-18T12:32:34.942Z" }, - { url = "https://files.pythonhosted.org/packages/06/b3/dbd332a988586fefb0aa49c779f59f47cae76855c2d00f450364bb574cac/Brotli-1.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:7bc37c4d6b87fb1017ea28c9508b36bbcb0c3d18b4260fcdf08b200c74a6aee8", size = 422475, upload-time = "2024-10-18T12:32:36.485Z" }, - { url = "https://files.pythonhosted.org/packages/bb/80/6aaddc2f63dbcf2d93c2d204e49c11a9ec93a8c7c63261e2b4bd35198283/Brotli-1.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3c0ef38c7a7014ffac184db9e04debe495d317cc9c6fb10071f7fefd93100a4f", size = 2906173, upload-time = "2024-10-18T12:32:37.978Z" }, - { url = "https://files.pythonhosted.org/packages/ea/1d/e6ca79c96ff5b641df6097d299347507d39a9604bde8915e76bf026d6c77/Brotli-1.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:91d7cc2a76b5567591d12c01f019dd7afce6ba8cba6571187e21e2fc418ae648", size = 2943803, upload-time = "2024-10-18T12:32:39.606Z" }, - { url = "https://files.pythonhosted.org/packages/ac/a3/d98d2472e0130b7dd3acdbb7f390d478123dbf62b7d32bda5c830a96116d/Brotli-1.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a93dde851926f4f2678e704fadeb39e16c35d8baebd5252c9fd94ce8ce68c4a0", size = 2918946, upload-time = "2024-10-18T12:32:41.679Z" }, - { url = "https://files.pythonhosted.org/packages/c4/a5/c69e6d272aee3e1423ed005d8915a7eaa0384c7de503da987f2d224d0721/Brotli-1.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f0db75f47be8b8abc8d9e31bc7aad0547ca26f24a54e6fd10231d623f183d089", size = 2845707, upload-time = "2024-10-18T12:32:43.478Z" }, - { url = "https://files.pythonhosted.org/packages/58/9f/4149d38b52725afa39067350696c09526de0125ebfbaab5acc5af28b42ea/Brotli-1.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6967ced6730aed543b8673008b5a391c3b1076d834ca438bbd70635c73775368", size = 2936231, upload-time = "2024-10-18T12:32:45.224Z" }, - { url = "https://files.pythonhosted.org/packages/5a/5a/145de884285611838a16bebfdb060c231c52b8f84dfbe52b852a15780386/Brotli-1.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7eedaa5d036d9336c95915035fb57422054014ebdeb6f3b42eac809928e40d0c", size = 2848157, upload-time = "2024-10-18T12:32:46.894Z" }, - { url = "https://files.pythonhosted.org/packages/50/ae/408b6bfb8525dadebd3b3dd5b19d631da4f7d46420321db44cd99dcf2f2c/Brotli-1.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:d487f5432bf35b60ed625d7e1b448e2dc855422e87469e3f450aa5552b0eb284", size = 3035122, upload-time = "2024-10-18T12:32:48.844Z" }, - { url = "https://files.pythonhosted.org/packages/af/85/a94e5cfaa0ca449d8f91c3d6f78313ebf919a0dbd55a100c711c6e9655bc/Brotli-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:832436e59afb93e1836081a20f324cb185836c617659b07b129141a8426973c7", size = 2930206, upload-time = "2024-10-18T12:32:51.198Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f0/a61d9262cd01351df22e57ad7c34f66794709acab13f34be2675f45bf89d/Brotli-1.1.0-cp313-cp313-win32.whl", hash = "sha256:43395e90523f9c23a3d5bdf004733246fba087f2948f87ab28015f12359ca6a0", size = 333804, upload-time = "2024-10-18T12:32:52.661Z" }, - { url = "https://files.pythonhosted.org/packages/7e/c1/ec214e9c94000d1c1974ec67ced1c970c148aa6b8d8373066123fc3dbf06/Brotli-1.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:9011560a466d2eb3f5a6e4929cf4a09be405c64154e12df0dd72713f6500e32b", size = 358517, upload-time = "2024-10-18T12:32:54.066Z" }, -] - -[[package]] -name = "brotlicffi" -version = "1.1.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/9d/70caa61192f570fcf0352766331b735afa931b4c6bc9a348a0925cc13288/brotlicffi-1.1.0.0.tar.gz", hash = "sha256:b77827a689905143f87915310b93b273ab17888fd43ef350d4832c4a71083c13", size = 465192, upload-time = "2023-09-14T14:22:40.707Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/11/7b96009d3dcc2c931e828ce1e157f03824a69fb728d06bfd7b2fc6f93718/brotlicffi-1.1.0.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9b7ae6bd1a3f0df532b6d67ff674099a96d22bc0948955cb338488c31bfb8851", size = 453786, upload-time = "2023-09-14T14:21:57.72Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e6/a8f46f4a4ee7856fbd6ac0c6fb0dc65ed181ba46cd77875b8d9bbe494d9e/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19ffc919fa4fc6ace69286e0a23b3789b4219058313cf9b45625016bf7ff996b", size = 2911165, upload-time = "2023-09-14T14:21:59.613Z" }, - { url = "https://files.pythonhosted.org/packages/be/20/201559dff14e83ba345a5ec03335607e47467b6633c210607e693aefac40/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9feb210d932ffe7798ee62e6145d3a757eb6233aa9a4e7db78dd3690d7755814", size = 2927895, upload-time = "2023-09-14T14:22:01.22Z" }, - { url = "https://files.pythonhosted.org/packages/cd/15/695b1409264143be3c933f708a3f81d53c4a1e1ebbc06f46331decbf6563/brotlicffi-1.1.0.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84763dbdef5dd5c24b75597a77e1b30c66604725707565188ba54bab4f114820", size = 2851834, upload-time = "2023-09-14T14:22:03.571Z" }, - { url = "https://files.pythonhosted.org/packages/b4/40/b961a702463b6005baf952794c2e9e0099bde657d0d7e007f923883b907f/brotlicffi-1.1.0.0-cp37-abi3-win32.whl", hash = "sha256:1b12b50e07c3911e1efa3a8971543e7648100713d4e0971b13631cce22c587eb", size = 341731, upload-time = "2023-09-14T14:22:05.74Z" }, - { url = "https://files.pythonhosted.org/packages/1c/fa/5408a03c041114ceab628ce21766a4ea882aa6f6f0a800e04ee3a30ec6b9/brotlicffi-1.1.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:994a4f0681bb6c6c3b0925530a1926b7a189d878e6e5e38fae8efa47c5d9c613", size = 366783, upload-time = "2023-09-14T14:22:07.096Z" }, -] - -[[package]] -name = "canopen" -version = "2.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-can" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/be/ea/f2654cb432988dfe9ab93140ff502f7e2e7eaa1835e8aaa4ee5a935af736/canopen-2.4.1.tar.gz", hash = "sha256:20a84bc498b34dadd79cece467d3bbe19591c1c02a8f39331bcc6065c4d8b2eb", size = 111357, upload-time = "2025-08-05T11:11:39.476Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/80/d3/386a7814c6d3f4209350067ec6ae9618ac7bd1807df244855362d221f263/canopen-2.4.1-py3-none-any.whl", hash = "sha256:651dfb189978fb9083f491128e9fb8cb0e85dc8ccb82b12dd7139236d0080b77", size = 67200, upload-time = "2025-08-05T11:11:38.031Z" }, -] - -[[package]] -name = "capstone" -version = "4.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/ae/21dbb3ccc30d5cc9e8cdd8febfbf5d16d93b8c10e595280d2aa4631a0d1f/capstone-4.0.2.tar.gz", hash = "sha256:2842913092c9b69fd903744bc1b87488e1451625460baac173056e1808ec1c66", size = 2041850, upload-time = "2020-05-11T02:27:44.317Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/97/37525c59c550fa6b1aeddb691930a4f08a5cf22d10ee4054e7edfc740086/capstone-4.0.2-py2.py3-none-manylinux1_i686.whl", hash = "sha256:da442f979414cf27e4621e70e835880878c858ea438c4f0e957e132593579e37", size = 2070383, upload-time = "2020-05-11T02:27:58.873Z" }, - { url = "https://files.pythonhosted.org/packages/38/85/647d512c2c2e2981d6f4c70ed41c5ec3d8d6f06cc9c9dd63348e8e6a21a3/capstone-4.0.2-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:9d1a9096c5f875b11290317722ed44bb6e7c52e50cc79d791f142bce968c49aa", size = 2131589, upload-time = "2020-05-11T02:28:07.61Z" }, - { url = "https://files.pythonhosted.org/packages/96/43/dc828bd651b8b4ead0aeb2b449141dc31367aced94c0804d2cc4ac02d9e7/capstone-4.0.2-py2.py3-none-win32.whl", hash = "sha256:c3d9b443d1adb40ee2d9a4e7341169b76476ddcf3a54c03793b16cdc7cd35c5a", size = 881229, upload-time = "2020-05-11T02:28:35.393Z" }, - { url = "https://files.pythonhosted.org/packages/6a/71/d409f50f7cf7235513f3e636bb1aeb53d729106c1c77495c48fc09c41a54/capstone-4.0.2-py2.py3-none-win_amd64.whl", hash = "sha256:0d65ffe8620920976ceadedc769f22318f6f150a592368d8a735612367ac8a1a", size = 896423, upload-time = "2020-05-11T02:28:31.222Z" }, -] - -[[package]] -name = "cbor" -version = "1.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9b/99/01c6a987c920500189eb74a291bd3a388e6c7cf85736bb6b066d9833315e/cbor-1.0.0.tar.gz", hash = "sha256:13225a262ddf5615cbd9fd55a76a0d53069d18b07d2e9f19c39e6acb8609bbb6", size = 20096, upload-time = "2016-02-09T23:11:12.726Z" } - -[[package]] -name = "certifi" -version = "2024.8.30" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/ee/9b19140fe824b367c04c5e1b369942dd754c4c5462d5674002f75c4dedc1/certifi-2024.8.30.tar.gz", hash = "sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9", size = 168507, upload-time = "2024-08-30T01:55:04.365Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/90/3c9ff0512038035f59d279fddeb79f5f1eccd8859f06d6163c58798b9487/certifi-2024.8.30-py3-none-any.whl", hash = "sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8", size = 167321, upload-time = "2024-08-30T01:55:02.591Z" }, -] - -[[package]] -name = "cffi" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser", marker = "implementation_name != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, - { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, - { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, - { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, - { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, - { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, - { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, - { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, - { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, - { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, - { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, - { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, - { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, - { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, - { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, - { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, - { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, - { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, - { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, - { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, - { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, - { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, - { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, - { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, - { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, - { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, - { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, -] - -[[package]] -name = "chardet" -version = "5.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload-time = "2023-08-01T19:23:02.662Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload-time = "2023-08-01T19:23:00.661Z" }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/4f/e1808dc01273379acc506d18f1504eb2d299bd4131743b9fc54d7be4df1e/charset_normalizer-3.4.0.tar.gz", hash = "sha256:223217c3d4f82c3ac5e29032b3f1c2eb0fb591b72161f86d93f5719079dae93e", size = 106620, upload-time = "2024-10-09T07:40:20.413Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/89/68a4c86f1a0002810a27f12e9a7b22feb198c59b2f05231349fbce5c06f4/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:dd4eda173a9fcccb5f2e2bd2a9f423d180194b1bf17cf59e3269899235b2a114", size = 194617, upload-time = "2024-10-09T07:39:07.317Z" }, - { url = "https://files.pythonhosted.org/packages/4f/cd/8947fe425e2ab0aa57aceb7807af13a0e4162cd21eee42ef5b053447edf5/charset_normalizer-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e9e3c4c9e1ed40ea53acf11e2a386383c3304212c965773704e4603d589343ed", size = 125310, upload-time = "2024-10-09T07:39:08.353Z" }, - { url = "https://files.pythonhosted.org/packages/5b/f0/b5263e8668a4ee9becc2b451ed909e9c27058337fda5b8c49588183c267a/charset_normalizer-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:92a7e36b000bf022ef3dbb9c46bfe2d52c047d5e3f3343f43204263c5addc250", size = 119126, upload-time = "2024-10-09T07:39:09.327Z" }, - { url = "https://files.pythonhosted.org/packages/ff/6e/e445afe4f7fda27a533f3234b627b3e515a1b9429bc981c9a5e2aa5d97b6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:54b6a92d009cbe2fb11054ba694bc9e284dad30a26757b1e372a1fdddaf21920", size = 139342, upload-time = "2024-10-09T07:39:10.322Z" }, - { url = "https://files.pythonhosted.org/packages/a1/b2/4af9993b532d93270538ad4926c8e37dc29f2111c36f9c629840c57cd9b3/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ffd9493de4c922f2a38c2bf62b831dcec90ac673ed1ca182fe11b4d8e9f2a64", size = 149383, upload-time = "2024-10-09T07:39:12.042Z" }, - { url = "https://files.pythonhosted.org/packages/fb/6f/4e78c3b97686b871db9be6f31d64e9264e889f8c9d7ab33c771f847f79b7/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:35c404d74c2926d0287fbd63ed5d27eb911eb9e4a3bb2c6d294f3cfd4a9e0c23", size = 142214, upload-time = "2024-10-09T07:39:13.059Z" }, - { url = "https://files.pythonhosted.org/packages/2b/c9/1c8fe3ce05d30c87eff498592c89015b19fade13df42850aafae09e94f35/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4796efc4faf6b53a18e3d46343535caed491776a22af773f366534056c4e1fbc", size = 144104, upload-time = "2024-10-09T07:39:14.815Z" }, - { url = "https://files.pythonhosted.org/packages/ee/68/efad5dcb306bf37db7db338338e7bb8ebd8cf38ee5bbd5ceaaaa46f257e6/charset_normalizer-3.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e7fdd52961feb4c96507aa649550ec2a0d527c086d284749b2f582f2d40a2e0d", size = 146255, upload-time = "2024-10-09T07:39:15.868Z" }, - { url = "https://files.pythonhosted.org/packages/0c/75/1ed813c3ffd200b1f3e71121c95da3f79e6d2a96120163443b3ad1057505/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:92db3c28b5b2a273346bebb24857fda45601aef6ae1c011c0a997106581e8a88", size = 140251, upload-time = "2024-10-09T07:39:16.995Z" }, - { url = "https://files.pythonhosted.org/packages/7d/0d/6f32255c1979653b448d3c709583557a4d24ff97ac4f3a5be156b2e6a210/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ab973df98fc99ab39080bfb0eb3a925181454d7c3ac8a1e695fddfae696d9e90", size = 148474, upload-time = "2024-10-09T07:39:18.021Z" }, - { url = "https://files.pythonhosted.org/packages/ac/a0/c1b5298de4670d997101fef95b97ac440e8c8d8b4efa5a4d1ef44af82f0d/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:4b67fdab07fdd3c10bb21edab3cbfe8cf5696f453afce75d815d9d7223fbe88b", size = 151849, upload-time = "2024-10-09T07:39:19.243Z" }, - { url = "https://files.pythonhosted.org/packages/04/4f/b3961ba0c664989ba63e30595a3ed0875d6790ff26671e2aae2fdc28a399/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aa41e526a5d4a9dfcfbab0716c7e8a1b215abd3f3df5a45cf18a12721d31cb5d", size = 149781, upload-time = "2024-10-09T07:39:20.397Z" }, - { url = "https://files.pythonhosted.org/packages/d8/90/6af4cd042066a4adad58ae25648a12c09c879efa4849c705719ba1b23d8c/charset_normalizer-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ffc519621dce0c767e96b9c53f09c5d215578e10b02c285809f76509a3931482", size = 144970, upload-time = "2024-10-09T07:39:21.452Z" }, - { url = "https://files.pythonhosted.org/packages/cc/67/e5e7e0cbfefc4ca79025238b43cdf8a2037854195b37d6417f3d0895c4c2/charset_normalizer-3.4.0-cp313-cp313-win32.whl", hash = "sha256:f19c1585933c82098c2a520f8ec1227f20e339e33aca8fa6f956f6691b784e67", size = 94973, upload-time = "2024-10-09T07:39:22.509Z" }, - { url = "https://files.pythonhosted.org/packages/65/97/fc9bbc54ee13d33dc54a7fcf17b26368b18505500fc01e228c27b5222d80/charset_normalizer-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:707b82d19e65c9bd28b81dde95249b07bf9f5b90ebe1ef17d9b57473f8a64b7b", size = 102308, upload-time = "2024-10-09T07:39:23.524Z" }, - { url = "https://files.pythonhosted.org/packages/bf/9b/08c0432272d77b04803958a4598a51e2a4b51c06640af8b8f0f908c18bf2/charset_normalizer-3.4.0-py3-none-any.whl", hash = "sha256:fe9f97feb71aa9896b81973a7bbada8c49501dc73e58a10fcef6663af95e5079", size = 49446, upload-time = "2024-10-09T07:40:19.383Z" }, -] - -[[package]] -name = "clang-format" -version = "20.1.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/62/e5/6560d6466378597f76292a6f54702dcf8a3746edfbd5fbdcb54b12e9ac46/clang_format-20.1.8.tar.gz", hash = "sha256:8ebd717257d8c7daf6bb1f703a4024f009a58941723eeb0d92ec493ce26aa520", size = 11500, upload-time = "2025-07-10T11:40:06.899Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/cd/6dab2c15bb2f13ad13015fb92eda0b49b3bd866153072e4d9796f7b220e4/clang_format-20.1.8-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:e9422bc81b3bea6c0ee773662fbe3bfd8a9479ae70e59008095dfae7001c5a84", size = 1429486, upload-time = "2025-07-10T11:39:38.665Z" }, - { url = "https://files.pythonhosted.org/packages/d8/4c/3efe4fe6910e1e00dcec0c8d9ef715164500f043e9911bdf253370ff917b/clang_format-20.1.8-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:c0cf62720247a7dd1e2d610816a2f7d7016433f9c2869880cba655449bd09616", size = 1400840, upload-time = "2025-07-10T11:39:40.516Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c3/af601563d3bfa4c514406347c13dc639f984df7c9e13df3a0adf3a650fc9/clang_format-20.1.8-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4f998e5c19e10f69b87af6991ccb14db934b5fa36fd28c7dbfc17dee957007f4", size = 1777504, upload-time = "2025-07-10T11:39:42.266Z" }, - { url = "https://files.pythonhosted.org/packages/06/60/7c2ff3019599ad985d0a61f74ba8226d538c72485b0e3d25b1899601a9f5/clang_format-20.1.8-py2.py3-none-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:34de32fe53452a07497793d5faf3fd03f7cf8b960b915417471ae81227461a39", size = 1692081, upload-time = "2025-07-10T11:39:43.67Z" }, - { url = "https://files.pythonhosted.org/packages/99/74/956bc5455ce102767805b2eafcada0de003c391adb8299222432091af309/clang_format-20.1.8-py2.py3-none-manylinux_2_27_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1397b1b700ee78af73b14c5d65ad777c570c79a175c220768056fbcb7afed113", size = 1987169, upload-time = "2025-07-10T11:39:45.465Z" }, - { url = "https://files.pythonhosted.org/packages/70/3f/0c141c391a0d4bd4012758f68a27ddc1db8b48814f96eb459417e197124a/clang_format-20.1.8-py2.py3-none-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:e195b5f6b79d89d42d4094d103f0a4f47ff3997d6474811622b95ab596f01fd2", size = 2005960, upload-time = "2025-07-10T11:39:47.163Z" }, - { url = "https://files.pythonhosted.org/packages/a6/77/786aa0fc8a75d8ce94966bb33e44c63fec1964cbf343ee862ed6a5be38c1/clang_format-20.1.8-py2.py3-none-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7c6bcb7e01ba4f05a4c980fda147b330f7e4833c2aea8c92a0c2df9573ae7afe", size = 1777063, upload-time = "2025-07-10T11:39:48.962Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0b/79cc55d7a64f3798a044c1f12c288048c6551af834700ac2ed1204c1181d/clang_format-20.1.8-py2.py3-none-manylinux_2_31_armv7l.whl", hash = "sha256:d99a5f3d7a252ab762ed79bc2a271a63fe593ae2e2565ce287835c00ce13c37e", size = 1626598, upload-time = "2025-07-10T11:39:50.468Z" }, - { url = "https://files.pythonhosted.org/packages/cf/a2/913509f0e845b2beb0d298a9ec78c230a3a1f659c6928f990e84b842da4a/clang_format-20.1.8-py2.py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:0a687c6efd7708227eafec37e98143e0b4b7dbeca82ff8e1de110d434f4e63ac", size = 2689936, upload-time = "2025-07-10T11:39:52.08Z" }, - { url = "https://files.pythonhosted.org/packages/0e/29/7cb26c5884040d4cb2f1e3ece6d37ebaf318d7cd281339affc94d1a9803c/clang_format-20.1.8-py2.py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:d6491195d8edc788de8abfaea30b78ff74ad3f5ee89653cd0a27a4af4feb1317", size = 2462082, upload-time = "2025-07-10T11:39:53.73Z" }, - { url = "https://files.pythonhosted.org/packages/6a/55/11ba71667856abfc7872c33e71b15c551d2d0fc3ef86ef73f92a46b2749c/clang_format-20.1.8-py2.py3-none-musllinux_1_2_i686.whl", hash = "sha256:9ceae6a1fbd594ec2a31157997378b70df42273795a0177be0725a4e96336231", size = 2927834, upload-time = "2025-07-10T11:39:55.264Z" }, - { url = "https://files.pythonhosted.org/packages/e6/71/496d2bafcb03b16a6fff25e73dcbe5aedcf68dd138580022b3114a3f7a84/clang_format-20.1.8-py2.py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:941396455b529ca130fae24d6d95bdf9a236d2ad22318991090d0b7ae53d236a", size = 3054954, upload-time = "2025-07-10T11:39:56.823Z" }, - { url = "https://files.pythonhosted.org/packages/d5/b9/8e5595a8d301c9695802664e4e00548a4c88a9fb6e434aac43e4778f06e1/clang_format-20.1.8-py2.py3-none-musllinux_1_2_s390x.whl", hash = "sha256:8dbbdfce85bdde675dee98fdbcddee445e6a9492b2a2b04afabfd33525be5642", size = 3159351, upload-time = "2025-07-10T11:39:58.95Z" }, - { url = "https://files.pythonhosted.org/packages/51/50/d385c1eb678061a18ab1de198e8400bb8c69003ec54fd4220f1c34ea6c46/clang_format-20.1.8-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:abc1b72f42db5db695d539b0a1b3cc3c125dfaa9c5baea0a94a3a2d6d1e50c1f", size = 2809188, upload-time = "2025-07-10T11:40:00.797Z" }, - { url = "https://files.pythonhosted.org/packages/a7/2d/e02502cd8c845f0b3e17c556648fd481aca0d77935adf8684cda5e4293e5/clang_format-20.1.8-py2.py3-none-win32.whl", hash = "sha256:635b57361fa3caeb9449aa62584d7cd38fbee81dbf3addd6b1d7c377eb34e766", size = 1261819, upload-time = "2025-07-10T11:40:02.194Z" }, - { url = "https://files.pythonhosted.org/packages/bd/ee/656287efdf58dccc7a7299fab547fe1313b49ca1ea1607ea475b262d640f/clang_format-20.1.8-py2.py3-none-win_amd64.whl", hash = "sha256:346ac8cab571eaba4d6b89dfa30fdbbc512db82a66ab0eeb1763cacc5977e325", size = 1414174, upload-time = "2025-07-10T11:40:03.701Z" }, - { url = "https://files.pythonhosted.org/packages/8b/27/71cd96599d47229bd819dcc0c688a859764bb1b4960a23b8a75f8558c044/clang_format-20.1.8-py2.py3-none-win_arm64.whl", hash = "sha256:d18b7b69697e97b6917a69f4bf48bf94e3827b016b491c90dd0f6ab917e37cf9", size = 1319592, upload-time = "2025-07-10T11:40:05.441Z" }, -] - -[[package]] -name = "click" -version = "8.1.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121, upload-time = "2023-08-17T17:29:11.868Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/2e/d53fa4befbf2cfa713304affc7ca780ce4fc1fd8710527771b58311a3229/click-8.1.7-py3-none-any.whl", hash = "sha256:ae74fb96c20a0277a1d615f1e4d73c8414f5a98db8b799a7931d1582f3390c28", size = 97941, upload-time = "2023-08-17T17:29:10.08Z" }, -] - -[[package]] -name = "cmake" -version = "3.26.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/f3/9d425d6c1695229e2d7690e9300b646ac04e6b869c73e47f0a29869e2a01/cmake-3.26.0.tar.gz", hash = "sha256:c18185c9cc147d0fa1e9228962aa37901b37866bd5d617e9efa23dfe706f7321", size = 35248, upload-time = "2023-03-15T18:01:32.261Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/99/ef/d086c658b47d19b738850579c9ecc05c6730b8afdbb05402fae6ab52c45f/cmake-3.26.0-py2.py3-none-macosx_10_10_universal2.macosx_10_10_x86_64.macosx_11_0_arm64.macosx_11_0_universal2.whl", hash = "sha256:4881727389325af84e39f1ec646b7249d8910b4ed637205bee6d589cb2b2ebd2", size = 45571303, upload-time = "2023-03-15T18:00:37.789Z" }, - { url = "https://files.pythonhosted.org/packages/41/3d/2e80cec75640cfa1f5472e48cd1b449b639b5ad758f8c27d116016571d15/cmake-3.26.0-py2.py3-none-manylinux2010_i686.manylinux_2_12_i686.whl", hash = "sha256:babd1e38c85d38a4bf4164c3126ec8cf4cd8d374072e2a4a181e52e953007f8c", size = 23840971, upload-time = "2023-03-15T18:00:41.648Z" }, - { url = "https://files.pythonhosted.org/packages/17/5a/72a3454e31b93d5718a97e3188536849f91993a9783c301a8101b7400c45/cmake-3.26.0-py2.py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.whl", hash = "sha256:1851be29d79bb39505954165e934d31994268d49f566ead6fff840a5092e444d", size = 23099061, upload-time = "2023-03-15T18:00:44.508Z" }, - { url = "https://files.pythonhosted.org/packages/39/6a/e6bfa8b78b876184c1afbb7b7a51a6b1335b00c6a3242b1e12eecce81649/cmake-3.26.0-py2.py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:483aaaeb9535deaa2657c928af5d9f0da9329f89bc249f494923495745a03677", size = 23349012, upload-time = "2023-03-15T18:00:49.028Z" }, - { url = "https://files.pythonhosted.org/packages/40/a8/c4f955335e0e2f11a02f29de9a80155d1c371d127ff114ee350428731b97/cmake-3.26.0-py2.py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:2f78c6194f224d462333e08d3acd571c553b58d04935971b87efbe76f241353c", size = 24962093, upload-time = "2023-03-15T18:00:52.015Z" }, - { url = "https://files.pythonhosted.org/packages/83/d3/f8be62be2274c178d50baa9751525d1da07c3d10518190f3751f49daa25e/cmake-3.26.0-py2.py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:cf129c8b71f1344975f179f30287baa8804c4c61ff1b13003244b4157b676e13", size = 26547027, upload-time = "2023-03-15T18:00:55.581Z" }, - { url = "https://files.pythonhosted.org/packages/e6/8e/0050c372bfcd0975494d70d685b298fcf6367ff67af5dee1f5ac2c516cdb/cmake-3.26.0-py2.py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:fabb82c69223eda27e673c5c6bb02985d60cf0baa631a2e4932eed87e8229928", size = 23164328, upload-time = "2023-03-15T18:00:58.973Z" }, - { url = "https://files.pythonhosted.org/packages/30/73/8cf2dcf5715824fe147b411f03d6d0144248e7bb0e3a1de4fd1824f8efa0/cmake-3.26.0-py2.py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502cbed2335557920b88687c6f3ff4ce433bd416204c928ad489e399e76149f5", size = 24000320, upload-time = "2023-03-15T18:01:02.21Z" }, - { url = "https://files.pythonhosted.org/packages/38/2c/ecf580d95b1743042e6084fc7a0b3d5b8a77e3792564b48df83788652516/cmake-3.26.0-py2.py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:b81c7775b125786c1696232078e9ceb0c9c66d26fb0a2259f40e33983170f924", size = 24133935, upload-time = "2023-03-15T18:01:05.845Z" }, - { url = "https://files.pythonhosted.org/packages/24/b1/bdbfd6b7cf788ab78b5acadd8245dcf189effe9c68272dc59ebd0bd6304b/cmake-3.26.0-py2.py3-none-musllinux_1_1_i686.whl", hash = "sha256:f4cc1dde7613cc813d15fd840a33e18cd07a443aa67205d74b9b05f55f08a459", size = 27125333, upload-time = "2023-03-15T18:01:09.335Z" }, - { url = "https://files.pythonhosted.org/packages/15/c3/0446b15fae151a7f372c3f88c789f755f46907cc07f8f62211ca21325573/cmake-3.26.0-py2.py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:ac6ca9d9ff58900138bbbebc55857647fb99f1c40b84d8a232f23b0d27d7f48a", size = 27892795, upload-time = "2023-03-15T18:01:12.357Z" }, - { url = "https://files.pythonhosted.org/packages/0f/91/547b5b32fae409195cbb6bfd8e400ff1ffda3f174f154fc98cf1048c3807/cmake-3.26.0-py2.py3-none-musllinux_1_1_s390x.whl", hash = "sha256:85e0bad5aeb3a82919ed7d78b76a0462eafe2f918076a1823a09c6f37910f3e0", size = 24152041, upload-time = "2023-03-15T18:01:16.213Z" }, - { url = "https://files.pythonhosted.org/packages/4c/94/469061ba9d2025eecca4c40a4829c220d68acc85dca70b025d73aa14f1a8/cmake-3.26.0-py2.py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:5523b9701be367572155e77294bf8aa3ac9aa0d73c50dcd6c57903d12bcb308e", size = 25492616, upload-time = "2023-03-15T18:01:19.356Z" }, - { url = "https://files.pythonhosted.org/packages/1d/0a/8211fe8ef07d4c89d64af35367d71696ed584480fea926a53f2a59e00b92/cmake-3.26.0-py2.py3-none-win32.whl", hash = "sha256:96f0e887260255eeb83bcf3465d51bc6c94078251c9312fa142dce6d3e80acac", size = 29597885, upload-time = "2023-03-15T18:01:22.502Z" }, - { url = "https://files.pythonhosted.org/packages/22/80/ef79cbc1aab3de2da49aee6225a73609c0dbc1dec80c0daa4dbdfb9ce894/cmake-3.26.0-py2.py3-none-win_amd64.whl", hash = "sha256:a0719a6f79cdc4d7b16caf757b8ae13eae1c6ce5a08d594cc09774afe129515d", size = 32958243, upload-time = "2023-03-15T18:01:26.471Z" }, - { url = "https://files.pythonhosted.org/packages/d1/51/c016d42094e9d8495ecb6c5d15857d5e9702fb1969a16848a87ef190fe8d/cmake-3.26.0-py2.py3-none-win_arm64.whl", hash = "sha256:11159c9b64c6473d84361ab44ef2c85e1bd2db7a2b1b798ce8bf5988f32adf43", size = 29597889, upload-time = "2023-03-15T18:01:30.26Z" }, -] - -[[package]] -name = "cmsis-pack-manager" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "appdirs" }, - { name = "cffi" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/61/df/07336875bb9a51053eb671b3d6046b23552eb9e9301b917336b0f392a82b/cmsis_pack_manager-0.6.0.tar.gz", hash = "sha256:94913a3db9695f8d0676a4a74916a5626984e2b46f923ada61881e4f5064079e", size = 67773, upload-time = "2025-06-27T02:42:59.42Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/9b/a9eafbafc92d56902b963d10e4c72c2b23598fd609caaf0087ed39a9b12f/cmsis_pack_manager-0.6.0-py3-none-linux_armv6l.whl", hash = "sha256:2c540ae648479ca91487585ca7cbda830fa7a1b9244a7b20765510231cd3c91a", size = 3484862, upload-time = "2025-06-27T02:36:14.167Z" }, - { url = "https://files.pythonhosted.org/packages/de/b2/970a9ddaebd82712d496ae2ba98176edf531be16b1b6abb46e3088ceebdb/cmsis_pack_manager-0.6.0-py3-none-macosx_10_12_universal2.whl", hash = "sha256:4b912d77b5a13146c936a87673a840ccdbf7305fa0a21414cde74709c246c052", size = 4122951, upload-time = "2025-06-27T02:36:15.893Z" }, - { url = "https://files.pythonhosted.org/packages/46/85/66f9839456e1c240a1f55594faf7efced1054bad5c2137326f4bc6f7ef5e/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f734bf40b19103222716ab4920da78e5af37777a19769e920472218146f7f2e3", size = 3770533, upload-time = "2025-06-27T02:36:17.335Z" }, - { url = "https://files.pythonhosted.org/packages/78/a1/217310c633609bfde6a8553222295b08e6f50c99f347cb3bb6d556a74ae0/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c073b93db44c86cb27b60dc98d42b54c3fd84be479979657def094c5da342c36", size = 3413476, upload-time = "2025-06-27T02:36:18.827Z" }, - { url = "https://files.pythonhosted.org/packages/a2/87/83a3e0bcd0a75110488842526637f22fadcb7dae6b8a9afb848115141280/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3b48ea644034acda9bd2a6afe9f89f4d6b67ee28fe5800a25dbb51e179310b5c", size = 3462120, upload-time = "2025-06-27T02:36:20.337Z" }, - { url = "https://files.pythonhosted.org/packages/75/29/c65da965f9b60f2d470f01020a5cab8e8abe5113f4b22ecaadcfba22fa44/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8c0a2cb8790168496df493eb178215a8b638d5d9c2176289764da0686ec7fd", size = 3666217, upload-time = "2025-06-27T02:36:21.882Z" }, - { url = "https://files.pythonhosted.org/packages/4c/c4/619a3e979666fa640bdb5333f6782bf709962c39da0770fdadb4f8d51652/cmsis_pack_manager-0.6.0-py3-none-win32.whl", hash = "sha256:8e3830566ee7b2f596f538b58e42500b7dffdfe18ce0b543b07c2715ad7734f5", size = 1520643, upload-time = "2025-06-27T02:36:24.766Z" }, - { url = "https://files.pythonhosted.org/packages/b5/7e/547624bf371eeaeae6370ed754bebbafbbf114a2d7dfc372c4e5a7ff3ded/cmsis_pack_manager-0.6.0-py3-none-win_amd64.whl", hash = "sha256:53fc43ae474905d107889681c5829ea90b6211d139794fa3f8691c9b0da3bb85", size = 1795914, upload-time = "2025-06-27T02:36:23.25Z" }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, -] - -[[package]] -name = "colorlog" -version = "6.8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/db/38/2992ff192eaa7dd5a793f8b6570d6bbe887c4fbbf7e72702eb0a693a01c8/colorlog-6.8.2.tar.gz", hash = "sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44", size = 16529, upload-time = "2024-01-26T13:59:28.628Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/18/3e867ab37a24fdf073c1617b9c7830e06ec270b1ea4694a624038fc40a03/colorlog-6.8.2-py3-none-any.whl", hash = "sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33", size = 11357, upload-time = "2024-01-26T13:59:27.064Z" }, -] - -[[package]] -name = "cookiecutter" -version = "2.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "arrow" }, - { name = "binaryornot" }, - { name = "click" }, - { name = "jinja2" }, - { name = "python-slugify" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "rich" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/17/9f2cd228eb949a91915acd38d3eecdc9d8893dde353b603f0db7e9f6be55/cookiecutter-2.6.0.tar.gz", hash = "sha256:db21f8169ea4f4fdc2408d48ca44859349de2647fbe494a9d6c3edfc0542c21c", size = 158767, upload-time = "2024-02-21T18:02:41.949Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/d9/0137658a353168ffa9d0fc14b812d3834772040858ddd1cb6eeaf09f7a44/cookiecutter-2.6.0-py3-none-any.whl", hash = "sha256:a54a8e37995e4ed963b3e82831072d1ad4b005af736bb17b99c2cbd9d41b6e2d", size = 39177, upload-time = "2024-02-21T18:02:39.569Z" }, -] - -[[package]] -name = "coverage" -version = "7.10.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704, upload-time = "2025-09-21T20:03:56.815Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/94/b765c1abcb613d103b64fcf10395f54d69b0ef8be6a0dd9c524384892cc7/coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d", size = 218320, upload-time = "2025-09-21T20:01:56.629Z" }, - { url = "https://files.pythonhosted.org/packages/72/4f/732fff31c119bb73b35236dd333030f32c4bfe909f445b423e6c7594f9a2/coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b", size = 218575, upload-time = "2025-09-21T20:01:58.203Z" }, - { url = "https://files.pythonhosted.org/packages/87/02/ae7e0af4b674be47566707777db1aa375474f02a1d64b9323e5813a6cdd5/coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e", size = 249568, upload-time = "2025-09-21T20:01:59.748Z" }, - { url = "https://files.pythonhosted.org/packages/a2/77/8c6d22bf61921a59bce5471c2f1f7ac30cd4ac50aadde72b8c48d5727902/coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b", size = 252174, upload-time = "2025-09-21T20:02:01.192Z" }, - { url = "https://files.pythonhosted.org/packages/b1/20/b6ea4f69bbb52dac0aebd62157ba6a9dddbfe664f5af8122dac296c3ee15/coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49", size = 253447, upload-time = "2025-09-21T20:02:02.701Z" }, - { url = "https://files.pythonhosted.org/packages/f9/28/4831523ba483a7f90f7b259d2018fef02cb4d5b90bc7c1505d6e5a84883c/coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911", size = 249779, upload-time = "2025-09-21T20:02:04.185Z" }, - { url = "https://files.pythonhosted.org/packages/a7/9f/4331142bc98c10ca6436d2d620c3e165f31e6c58d43479985afce6f3191c/coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0", size = 251604, upload-time = "2025-09-21T20:02:06.034Z" }, - { url = "https://files.pythonhosted.org/packages/ce/60/bda83b96602036b77ecf34e6393a3836365481b69f7ed7079ab85048202b/coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f", size = 249497, upload-time = "2025-09-21T20:02:07.619Z" }, - { url = "https://files.pythonhosted.org/packages/5f/af/152633ff35b2af63977edd835d8e6430f0caef27d171edf2fc76c270ef31/coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c", size = 249350, upload-time = "2025-09-21T20:02:10.34Z" }, - { url = "https://files.pythonhosted.org/packages/9d/71/d92105d122bd21cebba877228990e1646d862e34a98bb3374d3fece5a794/coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f", size = 251111, upload-time = "2025-09-21T20:02:12.122Z" }, - { url = "https://files.pythonhosted.org/packages/a2/9e/9fdb08f4bf476c912f0c3ca292e019aab6712c93c9344a1653986c3fd305/coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698", size = 220746, upload-time = "2025-09-21T20:02:13.919Z" }, - { url = "https://files.pythonhosted.org/packages/b1/b1/a75fd25df44eab52d1931e89980d1ada46824c7a3210be0d3c88a44aaa99/coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843", size = 221541, upload-time = "2025-09-21T20:02:15.57Z" }, - { url = "https://files.pythonhosted.org/packages/14/3a/d720d7c989562a6e9a14b2c9f5f2876bdb38e9367126d118495b89c99c37/coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546", size = 220170, upload-time = "2025-09-21T20:02:17.395Z" }, - { url = "https://files.pythonhosted.org/packages/bb/22/e04514bf2a735d8b0add31d2b4ab636fc02370730787c576bb995390d2d5/coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c", size = 219029, upload-time = "2025-09-21T20:02:18.936Z" }, - { url = "https://files.pythonhosted.org/packages/11/0b/91128e099035ece15da3445d9015e4b4153a6059403452d324cbb0a575fa/coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15", size = 219259, upload-time = "2025-09-21T20:02:20.44Z" }, - { url = "https://files.pythonhosted.org/packages/8b/51/66420081e72801536a091a0c8f8c1f88a5c4bf7b9b1bdc6222c7afe6dc9b/coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4", size = 260592, upload-time = "2025-09-21T20:02:22.313Z" }, - { url = "https://files.pythonhosted.org/packages/5d/22/9b8d458c2881b22df3db5bb3e7369e63d527d986decb6c11a591ba2364f7/coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0", size = 262768, upload-time = "2025-09-21T20:02:24.287Z" }, - { url = "https://files.pythonhosted.org/packages/f7/08/16bee2c433e60913c610ea200b276e8eeef084b0d200bdcff69920bd5828/coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0", size = 264995, upload-time = "2025-09-21T20:02:26.133Z" }, - { url = "https://files.pythonhosted.org/packages/20/9d/e53eb9771d154859b084b90201e5221bca7674ba449a17c101a5031d4054/coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65", size = 259546, upload-time = "2025-09-21T20:02:27.716Z" }, - { url = "https://files.pythonhosted.org/packages/ad/b0/69bc7050f8d4e56a89fb550a1577d5d0d1db2278106f6f626464067b3817/coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541", size = 262544, upload-time = "2025-09-21T20:02:29.216Z" }, - { url = "https://files.pythonhosted.org/packages/ef/4b/2514b060dbd1bc0aaf23b852c14bb5818f244c664cb16517feff6bb3a5ab/coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6", size = 260308, upload-time = "2025-09-21T20:02:31.226Z" }, - { url = "https://files.pythonhosted.org/packages/54/78/7ba2175007c246d75e496f64c06e94122bdb914790a1285d627a918bd271/coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999", size = 258920, upload-time = "2025-09-21T20:02:32.823Z" }, - { url = "https://files.pythonhosted.org/packages/c0/b3/fac9f7abbc841409b9a410309d73bfa6cfb2e51c3fada738cb607ce174f8/coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2", size = 261434, upload-time = "2025-09-21T20:02:34.86Z" }, - { url = "https://files.pythonhosted.org/packages/ee/51/a03bec00d37faaa891b3ff7387192cef20f01604e5283a5fabc95346befa/coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a", size = 221403, upload-time = "2025-09-21T20:02:37.034Z" }, - { url = "https://files.pythonhosted.org/packages/53/22/3cf25d614e64bf6d8e59c7c669b20d6d940bb337bdee5900b9ca41c820bb/coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb", size = 222469, upload-time = "2025-09-21T20:02:39.011Z" }, - { url = "https://files.pythonhosted.org/packages/49/a1/00164f6d30d8a01c3c9c48418a7a5be394de5349b421b9ee019f380df2a0/coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb", size = 220731, upload-time = "2025-09-21T20:02:40.939Z" }, - { url = "https://files.pythonhosted.org/packages/23/9c/5844ab4ca6a4dd97a1850e030a15ec7d292b5c5cb93082979225126e35dd/coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520", size = 218302, upload-time = "2025-09-21T20:02:42.527Z" }, - { url = "https://files.pythonhosted.org/packages/f0/89/673f6514b0961d1f0e20ddc242e9342f6da21eaba3489901b565c0689f34/coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32", size = 218578, upload-time = "2025-09-21T20:02:44.468Z" }, - { url = "https://files.pythonhosted.org/packages/05/e8/261cae479e85232828fb17ad536765c88dd818c8470aca690b0ac6feeaa3/coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f", size = 249629, upload-time = "2025-09-21T20:02:46.503Z" }, - { url = "https://files.pythonhosted.org/packages/82/62/14ed6546d0207e6eda876434e3e8475a3e9adbe32110ce896c9e0c06bb9a/coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a", size = 252162, upload-time = "2025-09-21T20:02:48.689Z" }, - { url = "https://files.pythonhosted.org/packages/ff/49/07f00db9ac6478e4358165a08fb41b469a1b053212e8a00cb02f0d27a05f/coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360", size = 253517, upload-time = "2025-09-21T20:02:50.31Z" }, - { url = "https://files.pythonhosted.org/packages/a2/59/c5201c62dbf165dfbc91460f6dbbaa85a8b82cfa6131ac45d6c1bfb52deb/coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69", size = 249632, upload-time = "2025-09-21T20:02:51.971Z" }, - { url = "https://files.pythonhosted.org/packages/07/ae/5920097195291a51fb00b3a70b9bbd2edbfe3c84876a1762bd1ef1565ebc/coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14", size = 251520, upload-time = "2025-09-21T20:02:53.858Z" }, - { url = "https://files.pythonhosted.org/packages/b9/3c/a815dde77a2981f5743a60b63df31cb322c944843e57dbd579326625a413/coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe", size = 249455, upload-time = "2025-09-21T20:02:55.807Z" }, - { url = "https://files.pythonhosted.org/packages/aa/99/f5cdd8421ea656abefb6c0ce92556709db2265c41e8f9fc6c8ae0f7824c9/coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e", size = 249287, upload-time = "2025-09-21T20:02:57.784Z" }, - { url = "https://files.pythonhosted.org/packages/c3/7a/e9a2da6a1fc5d007dd51fca083a663ab930a8c4d149c087732a5dbaa0029/coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd", size = 250946, upload-time = "2025-09-21T20:02:59.431Z" }, - { url = "https://files.pythonhosted.org/packages/ef/5b/0b5799aa30380a949005a353715095d6d1da81927d6dbed5def2200a4e25/coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2", size = 221009, upload-time = "2025-09-21T20:03:01.324Z" }, - { url = "https://files.pythonhosted.org/packages/da/b0/e802fbb6eb746de006490abc9bb554b708918b6774b722bb3a0e6aa1b7de/coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681", size = 221804, upload-time = "2025-09-21T20:03:03.4Z" }, - { url = "https://files.pythonhosted.org/packages/9e/e8/71d0c8e374e31f39e3389bb0bd19e527d46f00ea8571ec7ec8fd261d8b44/coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880", size = 220384, upload-time = "2025-09-21T20:03:05.111Z" }, - { url = "https://files.pythonhosted.org/packages/62/09/9a5608d319fa3eba7a2019addeacb8c746fb50872b57a724c9f79f146969/coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63", size = 219047, upload-time = "2025-09-21T20:03:06.795Z" }, - { url = "https://files.pythonhosted.org/packages/f5/6f/f58d46f33db9f2e3647b2d0764704548c184e6f5e014bef528b7f979ef84/coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2", size = 219266, upload-time = "2025-09-21T20:03:08.495Z" }, - { url = "https://files.pythonhosted.org/packages/74/5c/183ffc817ba68e0b443b8c934c8795553eb0c14573813415bd59941ee165/coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d", size = 260767, upload-time = "2025-09-21T20:03:10.172Z" }, - { url = "https://files.pythonhosted.org/packages/0f/48/71a8abe9c1ad7e97548835e3cc1adbf361e743e9d60310c5f75c9e7bf847/coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0", size = 262931, upload-time = "2025-09-21T20:03:11.861Z" }, - { url = "https://files.pythonhosted.org/packages/84/fd/193a8fb132acfc0a901f72020e54be5e48021e1575bb327d8ee1097a28fd/coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699", size = 265186, upload-time = "2025-09-21T20:03:13.539Z" }, - { url = "https://files.pythonhosted.org/packages/b1/8f/74ecc30607dd95ad50e3034221113ccb1c6d4e8085cc761134782995daae/coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9", size = 259470, upload-time = "2025-09-21T20:03:15.584Z" }, - { url = "https://files.pythonhosted.org/packages/0f/55/79ff53a769f20d71b07023ea115c9167c0bb56f281320520cf64c5298a96/coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f", size = 262626, upload-time = "2025-09-21T20:03:17.673Z" }, - { url = "https://files.pythonhosted.org/packages/88/e2/dac66c140009b61ac3fc13af673a574b00c16efdf04f9b5c740703e953c0/coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1", size = 260386, upload-time = "2025-09-21T20:03:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/a2/f1/f48f645e3f33bb9ca8a496bc4a9671b52f2f353146233ebd7c1df6160440/coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0", size = 258852, upload-time = "2025-09-21T20:03:21.007Z" }, - { url = "https://files.pythonhosted.org/packages/bb/3b/8442618972c51a7affeead957995cfa8323c0c9bcf8fa5a027421f720ff4/coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399", size = 261534, upload-time = "2025-09-21T20:03:23.12Z" }, - { url = "https://files.pythonhosted.org/packages/b2/dc/101f3fa3a45146db0cb03f5b4376e24c0aac818309da23e2de0c75295a91/coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235", size = 221784, upload-time = "2025-09-21T20:03:24.769Z" }, - { url = "https://files.pythonhosted.org/packages/4c/a1/74c51803fc70a8a40d7346660379e144be772bab4ac7bb6e6b905152345c/coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d", size = 222905, upload-time = "2025-09-21T20:03:26.93Z" }, - { url = "https://files.pythonhosted.org/packages/12/65/f116a6d2127df30bcafbceef0302d8a64ba87488bf6f73a6d8eebf060873/coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a", size = 220922, upload-time = "2025-09-21T20:03:28.672Z" }, - { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952, upload-time = "2025-09-21T20:03:53.918Z" }, -] - -[[package]] -name = "crc" -version = "7.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7e/e6/c3488c35ecae290751466252e5ea01ef50fc67bfc1a9aba43983329b7025/crc-7.1.0.tar.gz", hash = "sha256:99dd540909a37ae4f62c65441df8ecb4e7f9af014fecaf4f331052a41d66c07d", size = 9888, upload-time = "2024-11-05T20:34:28.983Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/ff/5ebeae9b53e8cddd9e6f3b6b0c98da3f112d9a7e1ea638a00876aa8fb5b4/crc-7.1.0-py3-none-any.whl", hash = "sha256:b9845c81d0b900d8fda1aae7af977035bee0359c279713814e9fd23a2d59db6a", size = 8790, upload-time = "2024-11-05T20:34:27.629Z" }, -] - -[[package]] -name = "ct3" -version = "3.3.3.post1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e2/75/48508b1fb4a4a6849d113a727987507badbb768244e326a4270347ca320a/CT3-3.3.3.post1.tar.gz", hash = "sha256:a58f0a46272a163d26f910f8fe188b414c185e23b5a7abd53ddb19ace3bd9d14", size = 5985235, upload-time = "2024-02-28T15:18:57.852Z" } - -[[package]] -name = "deprecation" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5a/d3/8ae2869247df154b64c1884d7346d412fed0c49df84db635aab2d1c40e62/deprecation-2.1.0.tar.gz", hash = "sha256:72b3bde64e5d778694b0cf68178aed03d15e15477116add3fb773e581f9518ff", size = 173788, upload-time = "2020-04-20T14:23:38.738Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/c3/253a89ee03fc9b9682f1541728eb66db7db22148cd94f89ab22528cd1e1b/deprecation-2.1.0-py2.py3-none-any.whl", hash = "sha256:a10811591210e1fb0e768a8c25517cabeabcba6f0bf96564f8ff45189f90b14a", size = 11178, upload-time = "2020-04-20T14:23:36.581Z" }, -] - -[[package]] -name = "docopt" -version = "0.6.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/55/8f8cab2afd404cf578136ef2cc5dfb50baa1761b68c9da1fb1e4eed343c9/docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491", size = 25901, upload-time = "2014-06-16T11:18:57.406Z" } - -[[package]] -name = "et-xmlfile" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3d/5d/0413a31d184a20c763ad741cc7852a659bf15094c24840c5bdd1754765cd/et_xmlfile-1.1.0.tar.gz", hash = "sha256:8eb9e2bc2f8c97e37a2dc85a09ecdcdec9d8a396530a6d5a33b30b9a92da0c5c", size = 3218, upload-time = "2021-04-26T13:26:05.068Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/c2/3dd434b0108730014f1b96fd286040dc3bcb70066346f7e01ec2ac95865f/et_xmlfile-1.1.0-py3-none-any.whl", hash = "sha256:a2ba85d1d6a74ef63837eed693bcb89c3f752169b0e3e7ae5b16ca5e1b3deada", size = 4688, upload-time = "2021-04-26T13:26:03.429Z" }, -] - -[[package]] -name = "fastcrc" -version = "0.3.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f4/fa/32bac317708588b845800ea12b026003ea6239035b21d464f48152ca512a/fastcrc-0.3.2.tar.gz", hash = "sha256:22362bb54e1bafc4f3e35544e40162481b2822c48ede1f5c2784820afad2c561", size = 11913, upload-time = "2024-10-23T11:24:43.948Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/fe/efb4de2241809454ac9ea577e89797b99478f606554edfb34081201b039a/fastcrc-0.3.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:b848835c2521ad5a96413ce310243c325a911aad92860aa427afb19f28493657", size = 244312, upload-time = "2024-10-23T11:23:12.663Z" }, - { url = "https://files.pythonhosted.org/packages/ce/61/5389387ac50e3c3fc2b2506bd2ce624546652cef800c3d5474c61f5713da/fastcrc-0.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e2d723fdf5df4444ed8ab1d3b8478d71162397243bbd26bd82f1e844a5ae4b88", size = 240154, upload-time = "2024-10-23T11:23:13.678Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d3/109da183bfe5d668be7dfee370d93d8ec45240cee22d326d28cf99907f44/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ec03598c258ab5267ed1303988d5d34f8c8d02839409bf0be04deb91f51a7d1", size = 274644, upload-time = "2024-10-23T11:23:14.673Z" }, - { url = "https://files.pythonhosted.org/packages/00/78/f1e61abc2b621253d1fc6795261d51d9774e0e57c6d9ccbbbd2521f9ba68/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d923e9ea11ee35d129dc742ef76b5ab86e489cf6b7f404e02e413c4b98e4c838", size = 278864, upload-time = "2024-10-23T11:23:16.424Z" }, - { url = "https://files.pythonhosted.org/packages/27/c8/7783d0e6e8356a097524cbb05d0cb2d556f70219dc46b8fd4c8fe22e0a8b/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f0c8c968237d580886e796da52c7d026e318652e60e0106d9557e2a25265c030", size = 312245, upload-time = "2024-10-23T11:23:17.452Z" }, - { url = "https://files.pythonhosted.org/packages/cf/db/82a55d8e6a83373c647dda5e65437a15b2de9e4efe507b093da2c6870b5f/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4dd95f209a575edae4f223c55b508b43c18d1e4ffdb0262fcd6bc55be355a96a", size = 313637, upload-time = "2024-10-23T11:23:18.492Z" }, - { url = "https://files.pythonhosted.org/packages/12/e5/7ff34ede27114f61c508a4390feecf4d2cf23f2b63317e0b71d21d20419b/fastcrc-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9465678d0fe17e4ccd63b13aadefc550521f7bd1ba7b176b5b7e118952f0097f", size = 274911, upload-time = "2024-10-23T11:23:19.58Z" }, - { url = "https://files.pythonhosted.org/packages/bf/aa/6a2c0cda69fe766fa82e19f76ec56b1de3fe69fe530b88100e7e13993298/fastcrc-0.3.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bf3aca3a8d4c369bebaf601831b25917a0808dc7cf0d3060955c97d2a72951ae", size = 284885, upload-time = "2024-10-23T11:23:20.693Z" }, - { url = "https://files.pythonhosted.org/packages/ea/99/e4daf07394ff1f0b73a2f620199665990d0a7e776356e0367c51294dc312/fastcrc-0.3.2-cp313-none-win32.whl", hash = "sha256:86f3c9e5844e5ffbbec1c17f059198a9b3f36ec3061f1128076ae2eb625101a3", size = 137898, upload-time = "2024-10-23T11:23:22.121Z" }, - { url = "https://files.pythonhosted.org/packages/58/a9/0d5518d525f2466551a836d918402aa1a26ec58057fe9cd4f225186ac2fa/fastcrc-0.3.2-cp313-none-win_amd64.whl", hash = "sha256:a5b68367c9a837773ad1dc98ae66adb4d097a58430665a21bff548982db8f3b9", size = 144629, upload-time = "2024-10-23T11:23:23.415Z" }, -] - -[[package]] -name = "flask" -version = "3.0.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "blinker" }, - { name = "click" }, - { name = "itsdangerous" }, - { name = "jinja2" }, - { name = "werkzeug" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/41/e1/d104c83026f8d35dfd2c261df7d64738341067526406b40190bc063e829a/flask-3.0.3.tar.gz", hash = "sha256:ceb27b0af3823ea2737928a4d99d125a06175b8512c445cbd9a9ce200ef76842", size = 676315, upload-time = "2024-04-07T19:26:11.035Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/80/ffe1da13ad9300f87c93af113edd0638c75138c42a0994becfacac078c06/flask-3.0.3-py3-none-any.whl", hash = "sha256:34e815dfaa43340d1d15a5c3a02b8476004037eb4840b34910c6e21679d288f3", size = 101735, upload-time = "2024-04-07T19:26:08.569Z" }, -] - -[[package]] -name = "flask-compress" -version = "1.15" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "brotli", marker = "platform_python_implementation != 'PyPy'" }, - { name = "brotlicffi", marker = "platform_python_implementation == 'PyPy'" }, - { name = "flask" }, - { name = "zstandard" }, - { name = "zstandard", extra = ["cffi"], marker = "platform_python_implementation == 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f2/03/fde640d5eeb4db20e7932c7a7e538db4493e81a79f4dab642484e35f5df0/flask_compress-1.15.tar.gz", hash = "sha256:b7b66cd5d08fc46bbcc71561e13ca64321590b0ca4c172f8001bf5374f8f5c58", size = 13944, upload-time = "2024-04-25T15:56:15.385Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/c8/1efd52b8f6b6b9372515c1b33c5609d9188c4326ad7fa28f2663601eb2ae/Flask_Compress-1.15-py3-none-any.whl", hash = "sha256:5d6efe3584c89516c3ab9d94adabe08c218517b957a9bd5cd0c3955dd3834c51", size = 8594, upload-time = "2024-04-25T15:56:10.865Z" }, -] - -[[package]] -name = "flask-restful" -version = "0.3.10" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aniso8601" }, - { name = "flask" }, - { name = "pytz" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/ce/a0a133db616ea47f78a41e15c4c68b9f08cab3df31eb960f61899200a119/Flask-RESTful-0.3.10.tar.gz", hash = "sha256:fe4af2ef0027df8f9b4f797aba20c5566801b6ade995ac63b588abf1a59cec37", size = 110453, upload-time = "2023-05-21T03:58:55.781Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/7b/f0b45f0df7d2978e5ae51804bb5939b7897b2ace24306009da0cc34d8d1f/Flask_RESTful-0.3.10-py2.py3-none-any.whl", hash = "sha256:1cf93c535172f112e080b0d4503a8d15f93a48c88bdd36dd87269bdaf405051b", size = 26217, upload-time = "2023-05-21T03:58:54.004Z" }, -] - -[[package]] -name = "fprime-fpl-layout" -version = "1.0.3" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/42/3828f0744695bf7dde7004ab6bfd2c1b5cc6c4bb203b32bf633c2c6d5fd9/fprime_fpl_layout-1.0.3-py3-none-any.whl", hash = "sha256:22aff10d4dbdc0ae44654b2d5adeee1dc7e7a239fc7941d639896d258a8742a4", size = 6043721, upload-time = "2023-12-07T18:12:55.276Z" }, - { url = "https://files.pythonhosted.org/packages/57/d0/20ec51cc183f62dfe5cd4eb520ef28bbce488d1ebbc2f25b3eac7b96d7bf/fprime_fpl_layout-1.0.3-py3-none-macosx_10_9_universal2.whl", hash = "sha256:1f864c10d94675abf4da9a48d633d1df66cd779036bc6b68f51c3d25b40cf6b8", size = 4715683, upload-time = "2023-12-07T18:12:51.375Z" }, - { url = "https://files.pythonhosted.org/packages/cc/83/73b10e9fcb77ee40c2e97fc7e025787287941ce12e94a7715d79e873cc12/fprime_fpl_layout-1.0.3-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:52b0afffd6e245e246f5b5ec28578050a6e5ba3ee52a34361bb68083300af756", size = 4894681, upload-time = "2023-12-07T18:12:58.158Z" }, - { url = "https://files.pythonhosted.org/packages/14/3d/f088b715750dfe335fd76b716f530aa41d034f39bd6f43526dbf3628ac45/fprime_fpl_layout-1.0.3-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:8af797df911c851c57941d2e2d3c50c9dd62adbd31a86da486ba49dcb526dd9c", size = 4757698, upload-time = "2023-12-07T18:12:49.808Z" }, -] - -[[package]] -name = "fprime-fpl-write-pic" -version = "1.0.3" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/94/aaaa048d8b546224bb6809925815fe5b9eccac945fd1bd8569d824864fcb/fprime_fpl_write_pic-1.0.3-py3-none-any.whl", hash = "sha256:4a6ae307dc4892a56d8cf45ef22163d8870cc9c6afacdfb5fb67df9ddccfda24", size = 6043747, upload-time = "2023-12-07T18:12:59.209Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b8/d20c885085b063b9463b5af7ab2f9c91e03da886d11bf2f471277781c291/fprime_fpl_write_pic-1.0.3-py3-none-macosx_10_9_universal2.whl", hash = "sha256:edbedf807df4a7d90f82946a3d08217c6815b01fe66f27c8d0b5bcfe728074de", size = 4714938, upload-time = "2023-12-07T18:12:54Z" }, - { url = "https://files.pythonhosted.org/packages/24/2f/3e93865cc38b3dec41d897d42d3e8407a9b98abf408e80cffd8b7886de1a/fprime_fpl_write_pic-1.0.3-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:09b04e3defcc0191139a67b3c1b5aed7f0669c3c3d0f811123fbf2ff25104227", size = 4895214, upload-time = "2023-12-07T18:13:02.819Z" }, - { url = "https://files.pythonhosted.org/packages/e5/e2/d280cebf0abac640d0a86fc391191aa0b37b6a36e6123859175ac7c12393/fprime_fpl_write_pic-1.0.3-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:d7e140ac22f674fa5da38aa991ce6ee1a9fe40ae6db85815e474095ee041fe3a", size = 4758129, upload-time = "2023-12-07T18:12:52.727Z" }, -] - -[[package]] -name = "fprime-fpp" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fprime-fpp-check" }, - { name = "fprime-fpp-depend" }, - { name = "fprime-fpp-filenames" }, - { name = "fprime-fpp-format" }, - { name = "fprime-fpp-from-xml" }, - { name = "fprime-fpp-locate-defs" }, - { name = "fprime-fpp-locate-uses" }, - { name = "fprime-fpp-syntax" }, - { name = "fprime-fpp-to-cpp" }, - { name = "fprime-fpp-to-dict" }, - { name = "fprime-fpp-to-json" }, - { name = "fprime-fpp-to-layout" }, - { name = "fprime-fpp-to-xml" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/fc/61b5ac150ac747ceac30355299992b9fc212cf852ad6ad005ff2ca42dcbe/fprime_fpp-3.0.0-py3-none-any.whl", hash = "sha256:0a8cb9f48c223044101dc57962f8c48acae73271d0b2a9d97da272b3ea8249ac", size = 1368, upload-time = "2025-08-06T19:46:12.423Z" }, -] - -[[package]] -name = "fprime-fpp-check" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/8f/5b2045f8d874e2144fb918d2f201e0200e8082e644a60fac379870952816/fprime_fpp_check-3.0.0-py3-none-any.whl", hash = "sha256:adae1d73a2f7db7145541c9f16a8d493438528aada1c4e56eff3f55eca2b8a7f", size = 27931044, upload-time = "2025-08-06T19:46:22.687Z" }, - { url = "https://files.pythonhosted.org/packages/46/e3/a16d1f14cd4590f644700f1f94bb341990c1225b0c9b9d6821e28e6b3225/fprime_fpp_check-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:2b31e88102c7480caa83837fa95555ea8869f0fa2484c2df3d50ec2d712ce722", size = 11198902, upload-time = "2025-08-06T19:45:47.186Z" }, - { url = "https://files.pythonhosted.org/packages/b8/0a/b0b9ea906f5e273e25be89c5979bcde084d4dd9e26c1ecb0a5f576a824cd/fprime_fpp_check-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:ae81eece5131646d19ea42bd6c85cca6378bdc452ab71bcb6df2ae86194e01f8", size = 11211180, upload-time = "2025-08-06T19:46:04.118Z" }, - { url = "https://files.pythonhosted.org/packages/a6/0c/e5148fa148957e27c088eb469763e2e143295a2a414a2c3d97fbf1edcc36/fprime_fpp_check-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:0e04073d8f7a4c4a9a5875111c60069fce87acdd259ac1893c61ab5fa6e0ea5d", size = 11244052, upload-time = "2025-08-06T19:45:59.792Z" }, -] - -[[package]] -name = "fprime-fpp-depend" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/56/ad3373b6e6f1c82e66a5f45795aeabb5c5e0f356443d2cab497796e21c05/fprime_fpp_depend-3.0.0-py3-none-any.whl", hash = "sha256:bdd61d0401b09e0e4737fdceb0b2ad08e3ff3e28df8a83ee792db1f07b122f06", size = 27944730, upload-time = "2025-08-06T19:46:27.553Z" }, - { url = "https://files.pythonhosted.org/packages/9d/2e/77c1745c2249fdb46999f7af6556c6128bc6df2ca278f911452ea077cb98/fprime_fpp_depend-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:17f1293380d01d4dfa6a512a7470d999192f3a596966dfcee57bb8319ddbdd3d", size = 10356153, upload-time = "2025-08-06T19:45:49.253Z" }, - { url = "https://files.pythonhosted.org/packages/0b/5c/61a74a3b870f0d870bb718e84ac50137aa9817d4c56d0db59ef9a255b01a/fprime_fpp_depend-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:663c0ac74303175fbbdf604fe678136b3a4d42f5f1d27cba544390bcca6c9c90", size = 10351098, upload-time = "2025-08-06T19:46:08.241Z" }, - { url = "https://files.pythonhosted.org/packages/27/a5/e1cb5432c85474e4e54bdacd968706f03987030f44e45e93a207df0b9e04/fprime_fpp_depend-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:3e49f81ba19ebc9e9e5fe71aa41502e54513bf95a4139b66565126b866f2e58a", size = 10387337, upload-time = "2025-08-06T19:46:04.565Z" }, -] - -[[package]] -name = "fprime-fpp-filenames" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/7d/f987447c4c500fd738c46779e106966014131e83e27f3a4b559c91575698/fprime_fpp_filenames-3.0.0-py3-none-any.whl", hash = "sha256:d9564b797687946053c38717ec5294e291aa3f665c0366eeb978922560def5b4", size = 27930458, upload-time = "2025-08-06T19:46:41.401Z" }, - { url = "https://files.pythonhosted.org/packages/61/c4/2b9e4e4712746a7242faddbd167dae8b500254afa47e575d5788f691c664/fprime_fpp_filenames-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:119647ffdef4229724d981e51157f1ab87e6c239565ecd09ef44186b364abd94", size = 10158523, upload-time = "2025-08-06T19:45:51.9Z" }, - { url = "https://files.pythonhosted.org/packages/db/d3/bc20d3fb5a24728fedf2d72b65a49cfa418d83283aaa2bd17bcf77f0459a/fprime_fpp_filenames-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:5ed8801b267e4fc022ea27abfdbcf310235c6d7c933355836d66a37aa662ffc8", size = 10166677, upload-time = "2025-08-06T19:46:12.947Z" }, - { url = "https://files.pythonhosted.org/packages/fe/17/c32d562bf07e5525501f2cd0ce9f33cb1c9c570787bd97c9e4a2905b656e/fprime_fpp_filenames-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:65d34831a40eb656298ec90eab659336e1036cd89a23ab90552a113c1d8ba3a1", size = 10196352, upload-time = "2025-08-06T19:46:09.962Z" }, -] - -[[package]] -name = "fprime-fpp-format" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/99/fa165017efe5f4c32fb85630bb74c6685a0dad6a6377d66a8d077231a646/fprime_fpp_format-3.0.0-py3-none-any.whl", hash = "sha256:efd5899fd74be365383cc2fde98ef756b0487a0ff208f8ce6fc86e7ba6cc98fb", size = 27929179, upload-time = "2025-08-06T19:46:47.861Z" }, - { url = "https://files.pythonhosted.org/packages/92/fa/7a3572f36ce4f4235a0e8d430c105d8dcc6959d252a358d6923742651ace/fprime_fpp_format-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:448fc2c715c74ae666550ac19d48819bccd3722b808e8afeca13c68be9beb219", size = 10144306, upload-time = "2025-08-06T19:45:53.815Z" }, - { url = "https://files.pythonhosted.org/packages/85/f7/34860b8c406b3ace24cc53f445d96cc4acf86c45d2155ef0a9bddd501315/fprime_fpp_format-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:c8e1d1925d9beca7fb2da7b98e2a3ae1b4a8fec536f14b364c772dbf9d27e640", size = 10155673, upload-time = "2025-08-06T19:46:21.367Z" }, - { url = "https://files.pythonhosted.org/packages/71/b4/1fc7f6beb30d8376a0b537a3e0ec47252c942b3c441592c8801882e085d2/fprime_fpp_format-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:1de7c1fe4145ee13006f27b857448c3894b73589c54db0e45eba036a34abb612", size = 10181560, upload-time = "2025-08-06T19:46:16.397Z" }, -] - -[[package]] -name = "fprime-fpp-from-xml" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/99/d8/824419ecebcb5dad8b499bc1aa259103c4c4a41fb7b2a7b142d1a91ff09a/fprime_fpp_from_xml-3.0.0-py3-none-any.whl", hash = "sha256:7567ab6c2dfaf56e756505bf1f27aa5f7862b284514c8b53a70012378d803662", size = 27925697, upload-time = "2025-08-06T19:46:54.657Z" }, - { url = "https://files.pythonhosted.org/packages/53/47/1a919808787d95437e98cc071d444803f9daafd5da55eceeaaa7a0ea95c0/fprime_fpp_from_xml-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:b0c6d11323d40a866d46efc15414129be06ba084f8943bbf649ffb0bca9b2756", size = 11609328, upload-time = "2025-08-06T19:45:55.798Z" }, - { url = "https://files.pythonhosted.org/packages/e7/93/4b4ef0c3459a247337e2ebee753490c2dc1a8de664b6f309d36750ce515d/fprime_fpp_from_xml-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:54d5e3859b3c893b3621b17cb504519264f74645c8e2fbd8ef987c992cf152ff", size = 11625849, upload-time = "2025-08-06T19:46:30.704Z" }, - { url = "https://files.pythonhosted.org/packages/9e/a4/5b49b1b322043bc5fa18ac84c78cab7675b24f0a3af32e9fc8d1b3e6519f/fprime_fpp_from_xml-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:797b2abe09dfa1df2bedff0f922b1c6854439c499a1db2c56e517e522c2474be", size = 11650570, upload-time = "2025-08-06T19:46:23.74Z" }, -] - -[[package]] -name = "fprime-fpp-locate-defs" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/6f/22f08f6bc58dab3207ae008dc0f3080a50b32645a70eec61842b13884fd0/fprime_fpp_locate_defs-3.0.0-py3-none-any.whl", hash = "sha256:761ad7b490717ba6896f59a9a1857c3e31e924a01328b8dbd7ee029be3dd9fea", size = 27929611, upload-time = "2025-08-06T19:47:00.153Z" }, - { url = "https://files.pythonhosted.org/packages/a9/ed/44052c0de555f9c2b74b8d638a3e9d27d20f0c5f79beb87c503afa7443af/fprime_fpp_locate_defs-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:2bd45e7f21fded498e01ff0965072e13c3b766885a0742738bec7a9880a0374c", size = 10076879, upload-time = "2025-08-06T19:45:58.177Z" }, - { url = "https://files.pythonhosted.org/packages/c6/c1/f9dc2d287c8651e8a49f62615d276143ad455930e1421ea6fb98e4cb2d32/fprime_fpp_locate_defs-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:5ac2dd699a6f9962735bf957be173598079d1a7fed09e910c55ed7b6b2c7e363", size = 10096110, upload-time = "2025-08-06T19:46:44.012Z" }, - { url = "https://files.pythonhosted.org/packages/d7/e0/4de3c061999c9aae2e171d243d5e5741ee32319b1e3aa1871e7f9f7378ee/fprime_fpp_locate_defs-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:a99afae6ee835843f72106610fa53247cdf83dc2c4a0a1a1a05ad7a2470a4d4d", size = 10127815, upload-time = "2025-08-06T19:46:39.141Z" }, -] - -[[package]] -name = "fprime-fpp-locate-uses" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b9/37/65016f6eb30aacd27181d6f5de3db409bf9ac774a9db4819cdba78571934/fprime_fpp_locate_uses-3.0.0-py3-none-any.whl", hash = "sha256:c73cbbd36fc0e8fba9694c2e93d1b2afcd8a05e044019b18b0c9f8c207defa17", size = 27936460, upload-time = "2025-08-06T19:47:04.913Z" }, - { url = "https://files.pythonhosted.org/packages/b0/7b/cc4278503434817b23a350b1fb1101485d126c5d129052b2a46dcb12c020/fprime_fpp_locate_uses-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:1d41d14f878e128649b2e6a13df22f9b8cc47be44308108a8b0ab38649bfa294", size = 11207892, upload-time = "2025-08-06T19:46:01.587Z" }, - { url = "https://files.pythonhosted.org/packages/25/c5/3f624c559becd04a6b4c4f262769b7181f7a58ceefe709aa5cbefc4deeb3/fprime_fpp_locate_uses-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:205df46bb2191a9c36f8ad2fbf66c5abaae0f31f0202d79e26a4fec8bad4af60", size = 11215002, upload-time = "2025-08-06T19:46:50.239Z" }, - { url = "https://files.pythonhosted.org/packages/7f/61/7672ad3878f80973632c996ccc8b99c7002b144a5f48eb45f1b9c3a2a857/fprime_fpp_locate_uses-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:b7b79d9a72ae2ab00e869d041086ccfe12ff9e4ee187fbfaf21ad22bed3c7579", size = 11249320, upload-time = "2025-08-06T19:46:45.759Z" }, -] - -[[package]] -name = "fprime-fpp-syntax" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/91/2ec4b5be5b38e3224fd1251812dc8fa64a1729d611040d40b90390474014/fprime_fpp_syntax-3.0.0-py3-none-any.whl", hash = "sha256:b900b6ef4d8a1de157327d03f997eb888b8ebc7ad7226a1065bce52033a010f4", size = 27930005, upload-time = "2025-08-06T19:47:09.919Z" }, - { url = "https://files.pythonhosted.org/packages/fe/a3/3721ed5df8dd52bb4d8175fa59c247100907024a13b3e78e4a0200203fb9/fprime_fpp_syntax-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:e178adadd0740ae2c4e6b9b9b630d8dac2421f073aa14cc9dfabf25af7aa87bd", size = 10161511, upload-time = "2025-08-06T19:46:05.613Z" }, - { url = "https://files.pythonhosted.org/packages/40/7d/2c719166dc46ce0d01de56ed9b143dfd714561228b55fc80c83a558de13f/fprime_fpp_syntax-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:62b6ee08fac1130f8d5d627107e32ea93f5a52c746c76cc34e98f162bbdfef32", size = 10162044, upload-time = "2025-08-06T19:46:55.585Z" }, - { url = "https://files.pythonhosted.org/packages/d6/2b/6760c7d8a24e8442f7743e7bb576cb4c9472c4bac5c22a6cbc5f3d334f9c/fprime_fpp_syntax-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:174902398b491c8edb7952cf48d87a6f8378ca82fc7743324f8c1e748178f4c5", size = 10202731, upload-time = "2025-08-06T19:46:52.386Z" }, -] - -[[package]] -name = "fprime-fpp-to-cpp" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/2c/7e735b5985ef5f747b0c4fd225a5bc8cb7b1be0d7c3e5ce15433b120e08c/fprime_fpp_to_cpp-3.0.0-py3-none-any.whl", hash = "sha256:8d2d701d3c24a2639975586a8df1acf396e2e744684279f18470a7c2055ed391", size = 27941504, upload-time = "2025-08-06T19:47:15.129Z" }, - { url = "https://files.pythonhosted.org/packages/7a/7f/3bf0b54472beca2d64e5406f264c166ea050c2647515cba2a892caa3d11a/fprime_fpp_to_cpp-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:b904045c99697a7a2f59cebda313abc00babb83a865c2f4550ec0a4d8af23cef", size = 12657965, upload-time = "2025-08-06T19:46:11.306Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e7/adbf30aea378e5ef6d54dc993c7b9fd6d637ccb50816cd53443720c3788f/fprime_fpp_to_cpp-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:366f6b6d5fd8587b06d152f5e8843d364b2177c05f1d32d13d832460b088817f", size = 12687606, upload-time = "2025-08-06T19:47:01.015Z" }, - { url = "https://files.pythonhosted.org/packages/57/28/6390af9deefac19384a2c8e8a848ff9746e69b42a5464b906e865164c622/fprime_fpp_to_cpp-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:8ca2de639fc4972ff9c3ec97953d24149d35c66d5d781665b3dd67bd4664ed96", size = 12694567, upload-time = "2025-08-06T19:46:57.591Z" }, -] - -[[package]] -name = "fprime-fpp-to-dict" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/a1/6817522d37be9f94280f38c4443ef6ceb29f7c11e0b6995f4a2c8b2e2fe1/fprime_fpp_to_dict-3.0.0-py3-none-any.whl", hash = "sha256:473cd08f8be0f5ffebed8e552da67f27670c895e5b9fa672eae7d318849c5034", size = 27936928, upload-time = "2025-08-06T19:47:20.576Z" }, - { url = "https://files.pythonhosted.org/packages/22/60/33550bafc59b566723e67b43acf97d63ef738babfebf4836ef874529b459/fprime_fpp_to_dict-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:75f59f3a62029aea1c6ab2162f59bb2d986fcb38525f897185fcdeaf010f487b", size = 11345443, upload-time = "2025-08-06T19:46:18.097Z" }, - { url = "https://files.pythonhosted.org/packages/da/2e/95144ff1e4824da948f4f4734f7b63e7c0dfd2eb98f905fa4ba1b0689959/fprime_fpp_to_dict-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:1fd457625e605a35167d6a9ea6b5c2f71bec921304c325ecb523b6416020b53a", size = 11335907, upload-time = "2025-08-06T19:47:06.036Z" }, - { url = "https://files.pythonhosted.org/packages/6e/74/f4f339618b5a4a265aff9ba8ce051dde5b1645702f83904cd51d87c60ab7/fprime_fpp_to_dict-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:70cc2c18480d1bd119f55067920069d2c4b2ccc2ec9c55f75a81af3b62ec50ba", size = 11370208, upload-time = "2025-08-06T19:47:02.888Z" }, -] - -[[package]] -name = "fprime-fpp-to-json" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/80/6d420bdefb2dd08ec557fae7650c0a964ef0251466f69307fbf680d09c57/fprime_fpp_to_json-3.0.0-py3-none-any.whl", hash = "sha256:c6d0aa21dd1fc6a23c7ba6fb6bd29566c002cde94f3e7c238c5a6c464c0fdac5", size = 27932730, upload-time = "2025-08-06T19:47:25.226Z" }, - { url = "https://files.pythonhosted.org/packages/8e/a1/bd0beb85d6724fb3868ca0f0b200f634424900c8d6bcb1cfb7d71d172d31/fprime_fpp_to_json-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:79594b13fecafd7ab7bc95dd5e4c8bdb4215829aa207d384727d4b27deba0909", size = 11203473, upload-time = "2025-08-06T19:46:25.144Z" }, - { url = "https://files.pythonhosted.org/packages/8c/b3/ce400be75fee1405424654e3b0ad5f520232714272233d20e5feaad43a1c/fprime_fpp_to_json-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:13b29b84a964fd64e0586cdf6fa8f1179451288a15bbd3540da9dc73448b79d4", size = 11214481, upload-time = "2025-08-06T19:47:11.16Z" }, - { url = "https://files.pythonhosted.org/packages/7a/3a/afb8c1ad444c7ad6a5069340d1abe5ca88637566ad665ffb4ffb450427e5/fprime_fpp_to_json-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:9ac8f4ea08ee748dba19f3b5f956ef94c92a92b1f741aa38678464948101b6db", size = 11237158, upload-time = "2025-08-06T19:47:07.869Z" }, -] - -[[package]] -name = "fprime-fpp-to-layout" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/1e/4c3a5d21067ab5493b96e5f55878c1936a1f393fae8fbed9f4fe9d069c9e/fprime_fpp_to_layout-3.0.0-py3-none-any.whl", hash = "sha256:fabd13107c8268fa9ace8f3a7585f0d499745dd9adf01124b00927153c9cbad3", size = 27930722, upload-time = "2025-08-06T19:47:28.582Z" }, - { url = "https://files.pythonhosted.org/packages/4e/07/3675e2cebc5a4f4f72a98717584cc04d70d2160e5c54382a8411a1e39963/fprime_fpp_to_layout-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:09b1c4395d7382d88ad7cdf30b747362fa6918132f30720a3753c9f309f2942c", size = 11243900, upload-time = "2025-08-06T19:46:37.364Z" }, - { url = "https://files.pythonhosted.org/packages/c0/38/cc5e1ea9417ce3b84bdeeef6654c01a54c03e0a3c088bf93083ecc64a296/fprime_fpp_to_layout-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:69bb6bc55288721afae9fc21ca8a77b21b2283a4affb554fb4fdb68380524dab", size = 11247260, upload-time = "2025-08-06T19:47:15.866Z" }, - { url = "https://files.pythonhosted.org/packages/04/13/9774a1f08aac00f6b0ecdcf9f0449767bc0c101c28bebe34f74ce9b148c5/fprime_fpp_to_layout-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:17a65734f432a60090e5b95eb3c94110972ece31eb942f1d059ad2d1bc70197f", size = 11283898, upload-time = "2025-08-06T19:47:12.912Z" }, -] - -[[package]] -name = "fprime-fpp-to-xml" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/a1/af754cc2f91bd00584d09121fb44256fb538c2ea1545e981446ce7848b3f/fprime_fpp_to_xml-3.0.0-py3-none-any.whl", hash = "sha256:82ca5d223f1970198eac553603b233e011958620d3edb64de2d2ef217dc1deff", size = 27935936, upload-time = "2025-08-06T19:47:31.091Z" }, - { url = "https://files.pythonhosted.org/packages/01/44/fa740214420e7e052683645231891b135c4ca5d10808974a6cefa8062be4/fprime_fpp_to_xml-3.0.0-py3-none-macosx_13_0_universal2.whl", hash = "sha256:5bea97f808b4450db574f7a7ad76de8fb10dae3a97598a67fff83e1973da9dab", size = 11394371, upload-time = "2025-08-06T19:46:42.616Z" }, - { url = "https://files.pythonhosted.org/packages/78/11/89297674b07aaffe06b81815c60866e4dad65389ad62639b5e37f4ed5c66/fprime_fpp_to_xml-3.0.0-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:f970e3b8618f17f98ff3dce96eeba33f1f86faa8b87bcb8266d9f397a3ac82c9", size = 11402695, upload-time = "2025-08-06T19:47:21.319Z" }, - { url = "https://files.pythonhosted.org/packages/81/5b/f9deed2565aee49b52bf597bbb01ab4a34ae1b84797961e6a180c69f4494/fprime_fpp_to_xml-3.0.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:02e08937ba78900aa031a21782c590411512bc77f384e36ad3561673e6f9fdbc", size = 11445597, upload-time = "2025-08-06T19:47:17.984Z" }, -] - -[[package]] -name = "fprime-gds" -version = "4.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argcomplete" }, - { name = "crc" }, - { name = "flask" }, - { name = "flask-compress" }, - { name = "flask-restful" }, - { name = "fprime-tools" }, - { name = "jinja2" }, - { name = "lark" }, - { name = "openpyxl" }, - { name = "pexpect" }, - { name = "pydantic" }, - { name = "pyserial" }, - { name = "pytest" }, - { name = "pyyaml" }, - { name = "pyzmq" }, - { name = "spacepackets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/04/0b/1b5e1e8cd1bd3bc5658733b54508b61d644f578709ca3571115f28456a08/fprime_gds-4.0.1.tar.gz", hash = "sha256:13a4924349a81f6108aebbcf9ad7e1ff9f435db93cc4b17b7bb489b97514ddf9", size = 2218413, upload-time = "2025-08-07T00:00:50.414Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/d4/47359b77a1d7bdd2c333f0f788eaa36f052b31192f528d022445ecc46761/fprime_gds-4.0.1-py3-none-any.whl", hash = "sha256:b4a7310a5222cab7f71e86a919eef3a0346f7cce129e40d26f4f36a2122f643f", size = 2150288, upload-time = "2025-08-07T00:00:48.156Z" }, -] - -[[package]] -name = "fprime-tools" -version = "4.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cookiecutter" }, - { name = "gcovr" }, - { name = "markdown" }, - { name = "pexpect" }, - { name = "pytest" }, - { name = "requests" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/18/1d/da11b27b5c5845b3f153f45733a695bf89bc6a1bc0d3e03ee32420020752/fprime_tools-4.0.1.tar.gz", hash = "sha256:d7a9969d07774487a33d50c7caa5e9b0b7338e09b66ff1fa80004eb32f9c753f", size = 137097, upload-time = "2025-08-07T00:00:08.851Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/58/9bcd00c28b2211ad55bc5b49303d7ca95cff588b97d53506a8aa9d2a4ce9/fprime_tools-4.0.1-py3-none-any.whl", hash = "sha256:5df41bcfe9172eb2a2e93701a48b649c904fa5067192f54c10dda0b2cd1e8836", size = 137008, upload-time = "2025-08-07T00:00:07.167Z" }, -] - -[[package]] -name = "fprime-visual" -version = "1.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "flask" }, - { name = "flask-compress" }, - { name = "flask-restful" }, - { name = "pytest" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/92/24/e4b338e8b7b15f7c90efc9b6f82fea6b4c584b46405a9b9e11dde338af6f/fprime-visual-1.0.2.tar.gz", hash = "sha256:2a76f86563a432a8da0a26ab7110d7243e8c3b5edf14d4e4f87d0c3e6371c238", size = 1666327, upload-time = "2023-12-15T01:39:50.145Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/63/ab/17c408f23477fa0fc01a8ca4b6ee15455f1bee171a3522967b08843cdb34/fprime_visual-1.0.2-py3-none-any.whl", hash = "sha256:942a8f3e5d984db1e7fdb3c883d4591758650de407a9f0711fd614455f1a4811", size = 1677950, upload-time = "2023-12-15T01:39:47.737Z" }, -] - -[[package]] -name = "gcovr" -version = "8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorlog" }, - { name = "jinja2" }, - { name = "lxml" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/32/21/7f9967a2d5a37d8f77e793ba4c173d0e1e59195028c997a9947b73b652f4/gcovr-8.2.tar.gz", hash = "sha256:9a1dddd4585d13ec77555db5d6b6a31ee81587ea6fc604ff9fcd232cb0782df5", size = 176540, upload-time = "2024-10-13T08:15:38.394Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/72/514286de4b9b5990b7c3105d5ed8863b94ee1e2ed7df7b635fd04393e00b/gcovr-8.2-py2.py3-none-any.whl", hash = "sha256:bee23da2198bc1e0b9d0109018b9460df52355372319b5ddf81aca4e54f6bd61", size = 213313, upload-time = "2024-10-13T08:15:36.24Z" }, -] - -[[package]] -name = "hidapi" -version = "0.14.0.post4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/47/72/21ccaaca6ffb06f544afd16191425025d831c2a6d318635e9c8854070f2d/hidapi-0.14.0.post4.tar.gz", hash = "sha256:48fce253e526d17b663fbf9989c71c7ef7653ced5f4be65f1437c313fb3dbdf6", size = 174388, upload-time = "2024-11-19T16:38:10.316Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/c7/8601f03a6eeeac35655245177b50bb00e707f3392e0a79c34637f8525207/hidapi-0.14.0.post4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6f96ae777e906f0a9d6f75e873313145dfec2b774f558bfcae8ba34f09792460", size = 70358, upload-time = "2024-11-19T16:36:46.405Z" }, - { url = "https://files.pythonhosted.org/packages/c1/5d/7376cf339fbe6fca26048e3c7e183ef4d99c046cc5d8378516a745914327/hidapi-0.14.0.post4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6439fc9686518d0336fac8c5e370093279f53c997540065fce131c97567118d8", size = 68034, upload-time = "2024-11-19T16:36:47.419Z" }, - { url = "https://files.pythonhosted.org/packages/9a/5e/3c93bb12b01392b538870bc710786fee86a9ced074a8b5c091a59786ee07/hidapi-0.14.0.post4-cp313-cp313-win32.whl", hash = "sha256:b6b9c4dbf7d7e2635ff129ce6ea82174865c073b75888b8b97dda5a3d9a70493", size = 62688, upload-time = "2024-11-19T16:36:59.124Z" }, - { url = "https://files.pythonhosted.org/packages/6a/a6/0d43ac0be00db25fb0c2c6125e15a3e3536196c9a7cd806d50ebfb37b375/hidapi-0.14.0.post4-cp313-cp313-win_amd64.whl", hash = "sha256:87218eeba366c871adcc273407aacbabab781d6a964919712d5583eded5ca50f", size = 69749, upload-time = "2024-11-19T16:37:00.561Z" }, -] - -[[package]] -name = "idna" -version = "3.10" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, -] - -[[package]] -name = "importlib-metadata" -version = "6.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/82/f6e29c8d5c098b6be61460371c2c5591f4a335923639edec43b3830650a4/importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4", size = 53569, upload-time = "2023-06-18T21:44:35.024Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/94/64287b38c7de4c90683630338cf28f129decbba0a44f0c6db35a873c73c4/importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5", size = 22934, upload-time = "2023-06-18T21:44:33.441Z" }, -] - -[[package]] -name = "importlib-resources" -version = "6.5.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, -] - -[[package]] -name = "iniconfig" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/4b/cbd8e699e64a6f16ca3a8220661b5f83792b3017d0f79807cb8708d33913/iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3", size = 4646, upload-time = "2023-01-07T11:08:11.254Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374", size = 5892, upload-time = "2023-01-07T11:08:09.864Z" }, -] - -[[package]] -name = "intelhex" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/37/1e7522494557d342a24cb236e2aec5d078fac8ed03ad4b61372586406b01/intelhex-2.3.0.tar.gz", hash = "sha256:892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093", size = 44513, upload-time = "2020-10-20T20:35:51.526Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/78/79461288da2b13ed0a13deb65c4ad1428acb674b95278fa9abf1cefe62a2/intelhex-2.3.0-py2.py3-none-any.whl", hash = "sha256:87cc5225657524ec6361354be928adfd56bcf2a3dcc646c40f8f094c39c07db4", size = 50914, upload-time = "2020-10-20T20:35:50.162Z" }, -] - -[[package]] -name = "intervaltree" -version = "3.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sortedcontainers" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/50/fb/396d568039d21344639db96d940d40eb62befe704ef849b27949ded5c3bb/intervaltree-3.1.0.tar.gz", hash = "sha256:902b1b88936918f9b2a19e0e5eb7ccb430ae45cde4f39ea4b36932920d33952d", size = 32861, upload-time = "2020-08-03T08:01:11.392Z" } - -[[package]] -name = "itsdangerous" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/cb/8ac0172223afbccb63986cc25049b154ecfb5e85932587206f42317be31d/itsdangerous-2.2.0.tar.gz", hash = "sha256:e0050c0b7da1eea53ffaf149c0cfbb5c6e2e2b69c4bef22c81fa6eb73e5f6173", size = 54410, upload-time = "2024-04-16T21:28:15.614Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/96/92447566d16df59b2a776c0fb82dbc4d9e07cd95062562af01e408583fc4/itsdangerous-2.2.0-py3-none-any.whl", hash = "sha256:c6242fc49e35958c8b15141343aa660db5fc54d4f13a1db01a3f5891b98700ef", size = 16234, upload-time = "2024-04-16T21:28:14.499Z" }, -] - -[[package]] -name = "jinja2" -version = "3.1.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, -] - -[[package]] -name = "junitparser" -version = "4.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/97/954ee1ef04e50d8494e9f5d82d4051ed71a7618aa2c1514c1b3f24691174/junitparser-4.0.2.tar.gz", hash = "sha256:d5d07cece6d4a600ff3b7b96c8db5ffa45a91eed695cb86c45c3db113c1ca0f8", size = 25646, upload-time = "2025-06-24T04:37:32.664Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/87/b444f934f62ee2a1be45bb52563cf17a66b0d790eba43af4df9929e7107f/junitparser-4.0.2-py3-none-any.whl", hash = "sha256:94c3570e41fcaedc64cc3c634ca99457fe41a84dd1aa8ff74e9e12e66223a155", size = 14592, upload-time = "2025-06-24T04:37:31.322Z" }, -] - -[[package]] -name = "lark" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/37/a13baf0135f348af608c667633cbe5d13aa2c5c15a56ae9ad3e6cba45ae3/lark-1.3.0.tar.gz", hash = "sha256:9a3839d0ca5e1faf7cfa3460e420e859b66bcbde05b634e73c369c8244c5fa48", size = 259551, upload-time = "2025-09-22T13:45:05.072Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/3e/1c6b43277de64fc3c0333b0e72ab7b52ddaaea205210d60d9b9f83c3d0c7/lark-1.3.0-py3-none-any.whl", hash = "sha256:80661f261fb2584a9828a097a2432efd575af27d20be0fd35d17f0fe37253831", size = 113002, upload-time = "2025-09-22T13:45:03.747Z" }, -] - -[[package]] -name = "legacy-cgi" -version = "2.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/48/96/ff14ad0f759f2297a2e61db9c5384d248a6b38c6c1d4452c07d7419676a2/legacy_cgi-2.6.1.tar.gz", hash = "sha256:f2ada99c747c3d72a473a6aaff6259a61f226b06fe9f3106e495ab83fd8f7a42", size = 24782, upload-time = "2024-06-19T22:05:49.115Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/da/4cbc703cccc326bac1b4311609e694729134d1e8a2b45c224f7cb2602590/legacy_cgi-2.6.1-py3-none-any.whl", hash = "sha256:8eacc1522d9f76451337a4b5a0abf494158d39250754b0d1bc19a14c6512af9b", size = 19574, upload-time = "2024-06-19T22:05:47.524Z" }, -] - -[[package]] -name = "libusb-package" -version = "1.0.26.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-resources" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/b8/23bc7f3f53b4a5b1027c721ec3eb42324ca1ec56355f0d0851307adc7c6c/libusb_package-1.0.26.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:04c4505e2ca68d3dc6938f116ff9bf82daffb06c1a97aba08293a84715a998da", size = 62045, upload-time = "2025-04-01T12:59:18.698Z" }, - { url = "https://files.pythonhosted.org/packages/a2/f8/e3be96d0604070488ddc5ce5af1976992e1f4a00e6441c94edf807f274d5/libusb_package-1.0.26.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4961cdb3c622aa9f858d3e4f99a58ce5e822a97c22abc77040fd806cb5fa4c66", size = 59502, upload-time = "2025-04-01T12:59:19.632Z" }, - { url = "https://files.pythonhosted.org/packages/24/d5/df1508df5e6776ac8a09a2858991df29bc96ea6a0d1f90240b1c4d59b45d/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16182670e0c23235521b447054c5a01600bd8f1eed3bb08eedbb0d9f8a43249f", size = 70247, upload-time = "2025-04-01T14:53:22.328Z" }, - { url = "https://files.pythonhosted.org/packages/65/01/4cc9eed12b9214c088cfa8055ece3b1db970404400be9d7e3dda68d198f2/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75ea57b2cc903d28ec1d4b909902df442cbf21949d80d5b3d8b9dac36ac45d1a", size = 74537, upload-time = "2025-04-01T14:53:23.306Z" }, - { url = "https://files.pythonhosted.org/packages/99/83/9eb317f706f588f4b6679bddb8abee3b115ce53dc3fa560cca59910f8807/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d30b51b128ef5112fff73268b4696fea00b5676b3f39a5ee859bd76cb3ace5", size = 70651, upload-time = "2025-04-01T14:53:24.33Z" }, - { url = "https://files.pythonhosted.org/packages/22/49/85d3b307b4a20cf0150ab381e6e0385e5b78cb5dede8bade0a2d655d3fd3/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5c098dcfcfa8000cab42f33e19628c8fdb16111670db381048b2993651f2413b", size = 71860, upload-time = "2025-04-01T14:53:25.752Z" }, - { url = "https://files.pythonhosted.org/packages/da/7a/2271a5ae542d9036d9254415ae745d5c5d01a08d56d13054b2439bf9d392/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:93169aeab0657255fe6c9f757cf408f559db13827a1d122fc89239994d7d51f1", size = 76477, upload-time = "2025-04-01T14:53:27.564Z" }, - { url = "https://files.pythonhosted.org/packages/5c/9d/d06d53994bb164564ec142ef631a4afa31e324994cf223f169ecca127f3a/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:63257653ee1ee06aa836e942f4bb89a1d7a0c6ae3d6183647a9011e585ffa1e3", size = 71036, upload-time = "2025-04-01T14:53:29.011Z" }, - { url = "https://files.pythonhosted.org/packages/32/3d/97f775a1d582548b1eb2a42444c58813e5fd93d568fc3b9ace59f64df527/libusb_package-1.0.26.3-cp313-cp313-win32.whl", hash = "sha256:05db4cc801db2e6373a808725748a701509f9450fecf393fbebab61c45d50b50", size = 77642, upload-time = "2025-04-01T12:58:07.774Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c4/d5234607697ca60593fbef88428a154317ac31f5c58ee23337b8a9360e91/libusb_package-1.0.26.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cd4aec825dac2b4fa5d23b37f6d72e63a1127987e5a073dabeb7b73528623a3", size = 90593, upload-time = "2025-04-01T12:58:08.676Z" }, -] - -[[package]] -name = "license-expression" -version = "30.4.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "boolean-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload-time = "2025-07-22T11:13:32.17Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload-time = "2025-07-22T11:13:31.217Z" }, -] - -[[package]] -name = "lxml" -version = "5.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/6b/20c3a4b24751377aaa6307eb230b66701024012c29dd374999cc92983269/lxml-5.3.0.tar.gz", hash = "sha256:4e109ca30d1edec1ac60cdbe341905dc3b8f55b16855e03a54aaf59e51ec8c6f", size = 3679318, upload-time = "2024-08-10T18:17:29.668Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/6a/42141e4d373903bfea6f8e94b2f554d05506dfda522ada5343c651410dc8/lxml-5.3.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:8c72e9563347c7395910de6a3100a4840a75a6f60e05af5e58566868d5eb2d6a", size = 8156284, upload-time = "2024-08-10T18:12:10.439Z" }, - { url = "https://files.pythonhosted.org/packages/91/5e/fa097f0f7d8b3d113fb7312c6308af702f2667f22644441715be961f2c7e/lxml-5.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e92ce66cd919d18d14b3856906a61d3f6b6a8500e0794142338da644260595cd", size = 4432407, upload-time = "2024-08-10T18:12:13.917Z" }, - { url = "https://files.pythonhosted.org/packages/2d/a1/b901988aa6d4ff937f2e5cfc114e4ec561901ff00660c3e56713642728da/lxml-5.3.0-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1d04f064bebdfef9240478f7a779e8c5dc32b8b7b0b2fc6a62e39b928d428e51", size = 5048331, upload-time = "2024-08-10T18:12:17.204Z" }, - { url = "https://files.pythonhosted.org/packages/30/0f/b2a54f48e52de578b71bbe2a2f8160672a8a5e103df3a78da53907e8c7ed/lxml-5.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c2fb570d7823c2bbaf8b419ba6e5662137f8166e364a8b2b91051a1fb40ab8b", size = 4744835, upload-time = "2024-08-10T18:12:21.172Z" }, - { url = "https://files.pythonhosted.org/packages/82/9d/b000c15538b60934589e83826ecbc437a1586488d7c13f8ee5ff1f79a9b8/lxml-5.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0c120f43553ec759f8de1fee2f4794452b0946773299d44c36bfe18e83caf002", size = 5316649, upload-time = "2024-08-10T18:12:24.897Z" }, - { url = "https://files.pythonhosted.org/packages/e3/ee/ffbb9eaff5e541922611d2c56b175c45893d1c0b8b11e5a497708a6a3b3b/lxml-5.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:562e7494778a69086f0312ec9689f6b6ac1c6b65670ed7d0267e49f57ffa08c4", size = 4812046, upload-time = "2024-08-10T18:12:29.028Z" }, - { url = "https://files.pythonhosted.org/packages/15/ff/7ff89d567485c7b943cdac316087f16b2399a8b997007ed352a1248397e5/lxml-5.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:423b121f7e6fa514ba0c7918e56955a1d4470ed35faa03e3d9f0e3baa4c7e492", size = 4918597, upload-time = "2024-08-10T18:12:32.278Z" }, - { url = "https://files.pythonhosted.org/packages/c6/a3/535b6ed8c048412ff51268bdf4bf1cf052a37aa7e31d2e6518038a883b29/lxml-5.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:c00f323cc00576df6165cc9d21a4c21285fa6b9989c5c39830c3903dc4303ef3", size = 4738071, upload-time = "2024-08-10T18:12:35.407Z" }, - { url = "https://files.pythonhosted.org/packages/7a/8f/cbbfa59cb4d4fd677fe183725a76d8c956495d7a3c7f111ab8f5e13d2e83/lxml-5.3.0-cp313-cp313-manylinux_2_28_ppc64le.whl", hash = "sha256:1fdc9fae8dd4c763e8a31e7630afef517eab9f5d5d31a278df087f307bf601f4", size = 5342213, upload-time = "2024-08-10T18:12:38.73Z" }, - { url = "https://files.pythonhosted.org/packages/5c/fb/db4c10dd9958d4b52e34d1d1f7c1f434422aeaf6ae2bbaaff2264351d944/lxml-5.3.0-cp313-cp313-manylinux_2_28_s390x.whl", hash = "sha256:658f2aa69d31e09699705949b5fc4719cbecbd4a97f9656a232e7d6c7be1a367", size = 4893749, upload-time = "2024-08-10T18:12:42.606Z" }, - { url = "https://files.pythonhosted.org/packages/f2/38/bb4581c143957c47740de18a3281a0cab7722390a77cc6e610e8ebf2d736/lxml-5.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1473427aff3d66a3fa2199004c3e601e6c4500ab86696edffdbc84954c72d832", size = 4945901, upload-time = "2024-08-10T18:12:45.944Z" }, - { url = "https://files.pythonhosted.org/packages/fc/d5/18b7de4960c731e98037bd48fa9f8e6e8f2558e6fbca4303d9b14d21ef3b/lxml-5.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a87de7dd873bf9a792bf1e58b1c3887b9264036629a5bf2d2e6579fe8e73edff", size = 4815447, upload-time = "2024-08-10T18:12:49.051Z" }, - { url = "https://files.pythonhosted.org/packages/97/a8/cd51ceaad6eb849246559a8ef60ae55065a3df550fc5fcd27014361c1bab/lxml-5.3.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0d7b36afa46c97875303a94e8f3ad932bf78bace9e18e603f2085b652422edcd", size = 5411186, upload-time = "2024-08-10T18:12:52.388Z" }, - { url = "https://files.pythonhosted.org/packages/89/c3/1e3dabab519481ed7b1fdcba21dcfb8832f57000733ef0e71cf6d09a5e03/lxml-5.3.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:cf120cce539453ae086eacc0130a324e7026113510efa83ab42ef3fcfccac7fb", size = 5324481, upload-time = "2024-08-10T18:12:56.021Z" }, - { url = "https://files.pythonhosted.org/packages/b6/17/71e9984cf0570cd202ac0a1c9ed5c1b8889b0fc8dc736f5ef0ffb181c284/lxml-5.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:df5c7333167b9674aa8ae1d4008fa4bc17a313cc490b2cca27838bbdcc6bb15b", size = 5011053, upload-time = "2024-08-10T18:12:59.714Z" }, - { url = "https://files.pythonhosted.org/packages/69/68/9f7e6d3312a91e30829368c2b3217e750adef12a6f8eb10498249f4e8d72/lxml-5.3.0-cp313-cp313-win32.whl", hash = "sha256:c802e1c2ed9f0c06a65bc4ed0189d000ada8049312cfeab6ca635e39c9608957", size = 3485634, upload-time = "2024-08-10T18:13:02.78Z" }, - { url = "https://files.pythonhosted.org/packages/7d/db/214290d58ad68c587bd5d6af3d34e56830438733d0d0856c0275fde43652/lxml-5.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:406246b96d552e0503e17a1006fd27edac678b3fcc9f1be71a2f94b4ff61528d", size = 3814417, upload-time = "2024-08-10T18:13:05.791Z" }, -] - -[[package]] -name = "markdown" -version = "3.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/28/3af612670f82f4c056911fbbbb42760255801b3068c48de792d354ff4472/markdown-3.7.tar.gz", hash = "sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2", size = 357086, upload-time = "2024-08-16T15:55:17.812Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/08/83871f3c50fc983b88547c196d11cf8c3340e37c32d2e9d6152abe2c61f7/Markdown-3.7-py3-none-any.whl", hash = "sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803", size = 106349, upload-time = "2024-08-16T15:55:16.176Z" }, -] - -[[package]] -name = "markdown-it-py" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mdurl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, -] - -[[package]] -name = "markupsafe" -version = "2.1.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/5b/aae44c6655f3801e81aa3eef09dbbf012431987ba564d7231722f68df02d/MarkupSafe-2.1.5.tar.gz", hash = "sha256:d283d37a890ba4c1ae73ffadf8046435c76e7bc2247bbb63c00bd1a709c6544b", size = 19384, upload-time = "2024-02-02T16:31:22.863Z" } - -[[package]] -name = "mdurl" -version = "0.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, -] - -[[package]] -name = "mock" -version = "5.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/8c/14c2ae915e5f9dca5a22edd68b35be94400719ccfa068a03e0fb63d0f6f6/mock-5.2.0.tar.gz", hash = "sha256:4e460e818629b4b173f32d08bf30d3af8123afbb8e04bb5707a1fd4799e503f0", size = 92796, upload-time = "2025-03-03T12:31:42.911Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/d9/617e6af809bf3a1d468e0d58c3997b1dc219a9a9202e650d30c2fc85d481/mock-5.2.0-py3-none-any.whl", hash = "sha256:7ba87f72ca0e915175596069dbbcc7c75af7b5e9b9bc107ad6349ede0819982f", size = 31617, upload-time = "2025-03-03T12:31:41.518Z" }, -] - -[[package]] -name = "mypy" -version = "1.18.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "pathspec" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload-time = "2025-09-19T00:11:10.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728, upload-time = "2025-09-19T00:10:01.33Z" }, - { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758, upload-time = "2025-09-19T00:10:42.607Z" }, - { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342, upload-time = "2025-09-19T00:11:00.371Z" }, - { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709, upload-time = "2025-09-19T00:11:03.358Z" }, - { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806, upload-time = "2025-09-19T00:10:26.073Z" }, - { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262, upload-time = "2025-09-19T00:10:40.035Z" }, - { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775, upload-time = "2025-09-19T00:10:03.814Z" }, - { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852, upload-time = "2025-09-19T00:10:51.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242, upload-time = "2025-09-19T00:11:07.955Z" }, - { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683, upload-time = "2025-09-19T00:09:55.572Z" }, - { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749, upload-time = "2025-09-19T00:10:44.827Z" }, - { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959, upload-time = "2025-09-19T00:10:37.344Z" }, - { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload-time = "2025-09-19T00:10:15.489Z" }, -] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, -] - -[[package]] -name = "natsort" -version = "8.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575, upload-time = "2023-06-20T04:17:19.925Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" }, -] - -[[package]] -name = "ninja" -version = "1.11.1.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/d4/6b0324541018561c5e73e617bd16f20a4fc17d1179bb3b3520b6ca8beb7b/ninja-1.11.1.4.tar.gz", hash = "sha256:6aa39f6e894e0452e5b297327db00019383ae55d5d9c57c73b04f13bf79d438a", size = 201256, upload-time = "2025-03-22T06:46:43.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4f/b1/3a61b348936b62a386465b1937cd778fa3a5748582e26d832dbab844ff27/ninja-1.11.1.4-py3-none-macosx_10_9_universal2.whl", hash = "sha256:b33923c8da88e8da20b6053e38deb433f53656441614207e01d283ad02c5e8e7", size = 279071, upload-time = "2025-03-22T06:46:17.806Z" }, - { url = "https://files.pythonhosted.org/packages/12/42/4c94fdad51fcf1f039a156e97de9e4d564c2a8cc0303782d36f9bd893a4b/ninja-1.11.1.4-py3-none-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:cede0af00b58e27b31f2482ba83292a8e9171cdb9acc2c867a3b6e40b3353e43", size = 472026, upload-time = "2025-03-22T06:46:19.974Z" }, - { url = "https://files.pythonhosted.org/packages/eb/7a/455d2877fe6cf99886849c7f9755d897df32eaf3a0fba47b56e615f880f7/ninja-1.11.1.4-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:096487995473320de7f65d622c3f1d16c3ad174797602218ca8c967f51ec38a0", size = 422814, upload-time = "2025-03-22T06:46:21.235Z" }, - { url = "https://files.pythonhosted.org/packages/e3/ad/fb6cca942528e25e8e0ab0f0cf98fe007319bf05cf69d726c564b815c4af/ninja-1.11.1.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3090d4488fadf6047d0d7a1db0c9643a8d391f0d94729554dbb89b5bdc769d7", size = 156965, upload-time = "2025-03-22T06:46:23.45Z" }, - { url = "https://files.pythonhosted.org/packages/a8/e7/d94a1b60031b115dd88526834b3da69eaacdc3c1a6769773ca8e2b1386b5/ninja-1.11.1.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecce44a00325a93631792974659cf253a815cc6da4ec96f89742925dfc295a0d", size = 179937, upload-time = "2025-03-22T06:46:24.728Z" }, - { url = "https://files.pythonhosted.org/packages/08/cc/e9316a28235409e9363794fc3d0b3083e48dd80d441006de66421e55f364/ninja-1.11.1.4-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9c29bb66d2aa46a2409ab369ea804c730faec7652e8c22c1e428cc09216543e5", size = 157020, upload-time = "2025-03-22T06:46:26.046Z" }, - { url = "https://files.pythonhosted.org/packages/e3/30/389b22300541aa5f2e9dad322c4de2f84be4e32aa4e8babd9160d620b5f1/ninja-1.11.1.4-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:055f386fb550c2c9d6157e45e20a84d29c47968876b9c5794ae2aec46f952306", size = 130389, upload-time = "2025-03-22T06:46:27.174Z" }, - { url = "https://files.pythonhosted.org/packages/a9/10/e27f35cb92813aabbb7ae771b1685b45be1cc8a0798ce7d4bfd08d142b93/ninja-1.11.1.4-py3-none-musllinux_1_1_aarch64.whl", hash = "sha256:f6186d7607bb090c3be1e10c8a56b690be238f953616626f5032238c66e56867", size = 372435, upload-time = "2025-03-22T06:46:28.637Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/e3559619756739aae124c6abf7fe41f7e546ab1209cfbffb13137bff2d2e/ninja-1.11.1.4-py3-none-musllinux_1_1_i686.whl", hash = "sha256:cf4453679d15babc04ba023d68d091bb613091b67101c88f85d2171c6621c6eb", size = 419300, upload-time = "2025-03-22T06:46:30.392Z" }, - { url = "https://files.pythonhosted.org/packages/35/46/809e4e9572570991b8e6f88f3583807d017371ab4cb09171cbc72a7eb3e4/ninja-1.11.1.4-py3-none-musllinux_1_1_ppc64le.whl", hash = "sha256:d4a6f159b08b0ac4aca5ee1572e3e402f969139e71d85d37c0e2872129098749", size = 420239, upload-time = "2025-03-22T06:46:32.442Z" }, - { url = "https://files.pythonhosted.org/packages/e6/64/5cb5710d15f844edf02ada577f8eddfdcd116f47eec15850f3371a3a4b33/ninja-1.11.1.4-py3-none-musllinux_1_1_s390x.whl", hash = "sha256:c3b96bd875f3ef1db782470e9e41d7508905a0986571f219d20ffed238befa15", size = 415986, upload-time = "2025-03-22T06:46:33.821Z" }, - { url = "https://files.pythonhosted.org/packages/95/b2/0e9ab1d926f423b12b09925f78afcc5e48b3c22e7121be3ddf6c35bf06a3/ninja-1.11.1.4-py3-none-musllinux_1_1_x86_64.whl", hash = "sha256:cf554e73f72c04deb04d0cf51f5fdb1903d9c9ca3d2344249c8ce3bd616ebc02", size = 379657, upload-time = "2025-03-22T06:46:36.166Z" }, - { url = "https://files.pythonhosted.org/packages/c8/3e/fd6d330d0434168e7fe070d414b57dd99c4c133faa69c05b42a3cbdc6c13/ninja-1.11.1.4-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:cfdd09776436a1ff3c4a2558d3fc50a689fb9d7f1bdbc3e6f7b8c2991341ddb3", size = 454466, upload-time = "2025-03-22T06:46:37.413Z" }, - { url = "https://files.pythonhosted.org/packages/e6/df/a25f3ad0b1c59d1b90564096e4fd89a6ca30d562b1e942f23880c3000b89/ninja-1.11.1.4-py3-none-win32.whl", hash = "sha256:2ab67a41c90bea5ec4b795bab084bc0b3b3bb69d3cd21ca0294fc0fc15a111eb", size = 255931, upload-time = "2025-03-22T06:46:39.171Z" }, - { url = "https://files.pythonhosted.org/packages/5b/10/9b8fe9ac004847490cc7b54896124c01ce2d87d95dc60aabd0b8591addff/ninja-1.11.1.4-py3-none-win_amd64.whl", hash = "sha256:4617b3c12ff64b611a7d93fd9e378275512bb36eff8babff7c83f5116b4f8d66", size = 296461, upload-time = "2025-03-22T06:46:40.532Z" }, - { url = "https://files.pythonhosted.org/packages/b9/58/612a17593c2d117f96c7f6b7f1e6570246bddc4b1e808519403a1417f217/ninja-1.11.1.4-py3-none-win_arm64.whl", hash = "sha256:5713cf50c5be50084a8693308a63ecf9e55c3132a78a41ab1363a28b6caaaee1", size = 271441, upload-time = "2025-03-22T06:46:42.147Z" }, -] - -[[package]] -name = "openpyxl" -version = "3.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "et-xmlfile" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload-time = "2024-06-28T14:03:44.161Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload-time = "2024-06-28T14:03:41.161Z" }, -] - -[[package]] -name = "packaging" -version = "24.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/65/50db4dda066951078f0a96cf12f4b9ada6e4b811516bf0262c0f4f7064d4/packaging-24.1.tar.gz", hash = "sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002", size = 148788, upload-time = "2024-06-09T23:19:24.956Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/aa/cc0199a5f0ad350994d660967a8efb233fe0416e4639146c089643407ce6/packaging-24.1-py3-none-any.whl", hash = "sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124", size = 53985, upload-time = "2024-06-09T23:19:21.909Z" }, -] - -[[package]] -name = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, -] - -[[package]] -name = "patool" -version = "4.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/93/c7/f9d5c6f9c51433d95399e40c9dd214f2b44bdcb79cbbd86028f55535725e/patool-4.0.1.tar.gz", hash = "sha256:41f7ee21be337a5baf07b2cb4796e9d94397ab741d2379c622f98fc001099802", size = 2006713, upload-time = "2025-05-02T19:08:16.768Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/07/a7aefd5b3ee565b4d959bcf7061666c7fbf66ed83e58d07cdcdca35c9b33/patool-4.0.1-py2.py3-none-any.whl", hash = "sha256:a7430eb08edcbd71feaf9c40f55c46f6a0ac385dc68dd0f5010cfa4ad2e9341a", size = 86512, upload-time = "2025-05-02T19:08:19.407Z" }, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ptyprocess" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, -] - -[[package]] -name = "pip" -version = "25.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/16/650289cd3f43d5a2fadfd98c68bd1e1e7f2550a1a5326768cddfbcedb2c5/pip-25.2.tar.gz", hash = "sha256:578283f006390f85bb6282dffb876454593d637f5d1be494b5202ce4877e71f2", size = 1840021, upload-time = "2025-07-30T21:50:15.401Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/3f/945ef7ab14dc4f9d7f40288d2df998d1837ee0888ec3659c813487572faa/pip-25.2-py3-none-any.whl", hash = "sha256:6d67a2b4e7f14d8b31b8b52648866fa717f45a1eb70e83002f4331d07e953717", size = 1752557, upload-time = "2025-07-30T21:50:13.323Z" }, -] - -[[package]] -name = "pluggy" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload-time = "2024-04-20T21:34:42.531Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload-time = "2024-04-20T21:34:40.434Z" }, -] - -[[package]] -name = "ply" -version = "3.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload-time = "2018-02-15T19:01:31.097Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload-time = "2018-02-15T19:01:27.172Z" }, -] - -[[package]] -name = "prettytable" -version = "3.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wcwidth" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/99/b1/85e18ac92afd08c533603e3393977b6bc1443043115a47bb094f3b98f94f/prettytable-3.16.0.tar.gz", hash = "sha256:3c64b31719d961bf69c9a7e03d0c1e477320906a98da63952bc6698d6164ff57", size = 66276, upload-time = "2025-03-24T19:39:04.008Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/02/c7/5613524e606ea1688b3bdbf48aa64bafb6d0a4ac3750274c43b6158a390f/prettytable-3.16.0-py3-none-any.whl", hash = "sha256:b5eccfabb82222f5aa46b798ff02a8452cf530a352c31bddfa29be41242863aa", size = 33863, upload-time = "2025-03-24T19:39:02.359Z" }, -] - -[[package]] -name = "progress" -version = "1.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ac/26/3b086f0c5d6c1c18c2430d6fac3a99d79553884ca6cdf759cf256dd43b7d/progress-1.6.1.tar.gz", hash = "sha256:c1ba719f862ce885232a759eab47971fe74dfc7bb76ab8a51ef5940bad35086c", size = 7164, upload-time = "2025-07-01T05:50:43.33Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/59/123aee44a039b212cfb8d90be1adf06496a99b313ee1683aadf90b3d9799/progress-1.6.1-py3-none-any.whl", hash = "sha256:5239f22f305c12fdc8ce6e0e47f70f21622a935e16eafc4535617112e7c7ea0b", size = 9761, upload-time = "2025-07-01T05:50:40.963Z" }, -] - -[[package]] -name = "proves-core-reference" -version = "0.1.0" -source = { editable = "." } -dependencies = [ - { name = "aniso8601" }, - { name = "annotated-types" }, - { name = "anytree" }, - { name = "argcomplete" }, - { name = "arrow" }, - { name = "binaryornot" }, - { name = "blinker" }, - { name = "brotli" }, - { name = "canopen" }, - { name = "cbor" }, - { name = "certifi" }, - { name = "chardet" }, - { name = "charset-normalizer" }, - { name = "clang-format" }, - { name = "click" }, - { name = "cmake" }, - { name = "colorama" }, - { name = "colorlog" }, - { name = "cookiecutter" }, - { name = "coverage" }, - { name = "ct3" }, - { name = "et-xmlfile" }, - { name = "flask" }, - { name = "flask-compress" }, - { name = "flask-restful" }, - { name = "fprime-fpl-layout" }, - { name = "fprime-fpl-write-pic" }, - { name = "fprime-fpp" }, - { name = "fprime-gds" }, - { name = "fprime-tools" }, - { name = "fprime-visual" }, - { name = "gcovr" }, - { name = "idna" }, - { name = "importlib-metadata" }, - { name = "iniconfig" }, - { name = "intelhex" }, - { name = "itsdangerous" }, - { name = "jinja2" }, - { name = "junitparser" }, - { name = "legacy-cgi" }, - { name = "lxml" }, - { name = "markdown" }, - { name = "markdown-it-py" }, - { name = "markupsafe" }, - { name = "mdurl" }, - { name = "mock" }, - { name = "mypy" }, - { name = "natsort" }, - { name = "ninja" }, - { name = "openpyxl" }, - { name = "packaging" }, - { name = "patool" }, - { name = "pexpect" }, - { name = "pip" }, - { name = "pluggy" }, - { name = "ply" }, - { name = "progress" }, - { name = "psutil" }, - { name = "ptyprocess" }, - { name = "pydantic" }, - { name = "pydantic-core" }, - { name = "pyelftools" }, - { name = "pygments" }, - { name = "pykwalify" }, - { name = "pylink-square" }, - { name = "pyocd" }, - { name = "pyserial" }, - { name = "pytest" }, - { name = "python-can" }, - { name = "python-dateutil" }, - { name = "python-slugify" }, - { name = "pytz" }, - { name = "pyyaml" }, - { name = "pyzmq" }, - { name = "requests" }, - { name = "reuse" }, - { name = "rich" }, - { name = "semver" }, - { name = "setuptools" }, - { name = "six" }, - { name = "spdx-tools" }, - { name = "tabulate" }, - { name = "text-unidecode" }, - { name = "tomli" }, - { name = "tqdm" }, - { name = "types-python-dateutil" }, - { name = "typing-extensions" }, - { name = "urllib3" }, - { name = "werkzeug" }, - { name = "west" }, - { name = "windows-curses", marker = "sys_platform == 'win32'" }, - { name = "zipp" }, - { name = "zstandard" }, -] - -[package.metadata] -requires-dist = [ - { name = "aniso8601", specifier = "==9.0.1" }, - { name = "annotated-types", specifier = "==0.7.0" }, - { name = "anytree" }, - { name = "argcomplete", specifier = "==3.5.1" }, - { name = "arrow", specifier = "==1.3.0" }, - { name = "binaryornot", specifier = "==0.4.4" }, - { name = "blinker", specifier = "==1.8.2" }, - { name = "brotli", specifier = "==1.1.0" }, - { name = "canopen" }, - { name = "cbor", specifier = ">=1.0.0" }, - { name = "certifi", specifier = "==2024.8.30" }, - { name = "chardet", specifier = "==5.2.0" }, - { name = "charset-normalizer", specifier = "==3.4.0" }, - { name = "clang-format", specifier = "==20.1.8" }, - { name = "click", specifier = "==8.1.7" }, - { name = "cmake", specifier = "==3.26.0" }, - { name = "colorama" }, - { name = "colorlog", specifier = "==6.8.2" }, - { name = "cookiecutter", specifier = "==2.6.0" }, - { name = "coverage" }, - { name = "ct3", specifier = "==3.3.3.post1" }, - { name = "et-xmlfile", specifier = "==1.1.0" }, - { name = "flask", specifier = "==3.0.3" }, - { name = "flask-compress", specifier = "==1.15" }, - { name = "flask-restful", specifier = "==0.3.10" }, - { name = "fprime-fpl-layout", specifier = "==1.0.3" }, - { name = "fprime-fpl-write-pic", specifier = "==1.0.3" }, - { name = "fprime-fpp", specifier = "==3.0.0" }, - { name = "fprime-gds", specifier = "==4.0.1" }, - { name = "fprime-tools", specifier = "==4.0.1" }, - { name = "fprime-visual", specifier = "==1.0.2" }, - { name = "gcovr", specifier = "==8.2" }, - { name = "gcovr", specifier = ">=6.0" }, - { name = "idna", specifier = "==3.10" }, - { name = "importlib-metadata", specifier = "==6.7.0" }, - { name = "iniconfig", specifier = "==2.0.0" }, - { name = "intelhex" }, - { name = "itsdangerous", specifier = "==2.2.0" }, - { name = "jinja2", specifier = "==3.1.6" }, - { name = "junitparser" }, - { name = "legacy-cgi", marker = "python_full_version >= '3.13'", specifier = "==2.6.1" }, - { name = "lxml", specifier = "==5.3.0" }, - { name = "markdown", specifier = "==3.7" }, - { name = "markdown-it-py", specifier = "==3.0.0" }, - { name = "markupsafe", specifier = "==2.1.5" }, - { name = "mdurl", specifier = "==0.1.2" }, - { name = "mock", specifier = ">=4.0.1" }, - { name = "mypy" }, - { name = "natsort" }, - { name = "ninja", specifier = "==1.11.1.4" }, - { name = "openpyxl", specifier = "==3.1.5" }, - { name = "packaging" }, - { name = "packaging", specifier = "==24.1" }, - { name = "patool", specifier = ">=2.0.0" }, - { name = "pexpect", specifier = "==4.9.0" }, - { name = "pip" }, - { name = "pluggy", specifier = "==1.5.0" }, - { name = "ply", specifier = ">=3.10" }, - { name = "progress" }, - { name = "psutil", specifier = ">=5.6.6" }, - { name = "ptyprocess", specifier = "==0.7.0" }, - { name = "pydantic", specifier = "==2.9.2" }, - { name = "pydantic-core", specifier = "==2.23.4" }, - { name = "pyelftools", specifier = ">=0.29" }, - { name = "pygments", specifier = "==2.18.0" }, - { name = "pykwalify" }, - { name = "pylink-square" }, - { name = "pyocd", specifier = ">=0.35.0" }, - { name = "pyserial" }, - { name = "pyserial", specifier = "==3.5" }, - { name = "pytest" }, - { name = "pytest", specifier = "==8.3.3" }, - { name = "python-can", specifier = ">=4.3.0" }, - { name = "python-dateutil", specifier = "==2.9.0.post0" }, - { name = "python-slugify", specifier = "==8.0.4" }, - { name = "pytz", specifier = "==2024.2" }, - { name = "pyyaml", specifier = "==6.0.2" }, - { name = "pyyaml", specifier = ">=6.0" }, - { name = "pyzmq", specifier = "==26.2.0" }, - { name = "requests", specifier = "==2.32.4" }, - { name = "requests", specifier = ">=2.32.0" }, - { name = "reuse" }, - { name = "rich", specifier = "==13.9.2" }, - { name = "semver" }, - { name = "setuptools", specifier = "==78.1.1" }, - { name = "six", specifier = "==1.16.0" }, - { name = "spdx-tools" }, - { name = "tabulate" }, - { name = "text-unidecode", specifier = "==1.3" }, - { name = "tomli", specifier = "==2.0.1" }, - { name = "tqdm", specifier = ">=4.67.1" }, - { name = "types-python-dateutil", specifier = "==2.9.0.20241003" }, - { name = "typing-extensions", specifier = "==4.12.2" }, - { name = "urllib3", specifier = "==2.5.0" }, - { name = "werkzeug", specifier = "==3.0.6" }, - { name = "west" }, - { name = "west", specifier = ">=0.14.0" }, - { name = "windows-curses", marker = "sys_platform == 'win32'" }, - { name = "zipp", specifier = "==3.19.1" }, - { name = "zstandard", specifier = "==0.23.0" }, -] - -[[package]] -name = "psutil" -version = "7.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/31/4723d756b59344b643542936e37a31d1d3204bcdc42a7daa8ee9eb06fb50/psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2", size = 497660, upload-time = "2025-09-17T20:14:52.902Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/62/ce4051019ee20ce0ed74432dd73a5bb087a6704284a470bb8adff69a0932/psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13", size = 245242, upload-time = "2025-09-17T20:14:56.126Z" }, - { url = "https://files.pythonhosted.org/packages/38/61/f76959fba841bf5b61123fbf4b650886dc4094c6858008b5bf73d9057216/psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5", size = 246682, upload-time = "2025-09-17T20:14:58.25Z" }, - { url = "https://files.pythonhosted.org/packages/88/7a/37c99d2e77ec30d63398ffa6a660450b8a62517cabe44b3e9bae97696e8d/psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3", size = 287994, upload-time = "2025-09-17T20:14:59.901Z" }, - { url = "https://files.pythonhosted.org/packages/9d/de/04c8c61232f7244aa0a4b9a9fbd63a89d5aeaf94b2fc9d1d16e2faa5cbb0/psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3", size = 291163, upload-time = "2025-09-17T20:15:01.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/58/c4f976234bf6d4737bc8c02a81192f045c307b72cf39c9e5c5a2d78927f6/psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d", size = 293625, upload-time = "2025-09-17T20:15:04.492Z" }, - { url = "https://files.pythonhosted.org/packages/79/87/157c8e7959ec39ced1b11cc93c730c4fb7f9d408569a6c59dbd92ceb35db/psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca", size = 244812, upload-time = "2025-09-17T20:15:07.462Z" }, - { url = "https://files.pythonhosted.org/packages/bf/e9/b44c4f697276a7a95b8e94d0e320a7bf7f3318521b23de69035540b39838/psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d", size = 247965, upload-time = "2025-09-17T20:15:09.673Z" }, - { url = "https://files.pythonhosted.org/packages/26/65/1070a6e3c036f39142c2820c4b52e9243246fcfc3f96239ac84472ba361e/psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07", size = 244971, upload-time = "2025-09-17T20:15:12.262Z" }, -] - -[[package]] -name = "ptyprocess" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, -] - -[[package]] -name = "pycparser" -version = "2.23" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, -] - -[[package]] -name = "pydantic" -version = "2.9.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a9/b7/d9e3f12af310e1120c21603644a1cd86f59060e040ec5c3a80b8f05fae30/pydantic-2.9.2.tar.gz", hash = "sha256:d155cef71265d1e9807ed1c32b4c8deec042a44a50a4188b25ac67ecd81a9c0f", size = 769917, upload-time = "2024-09-17T15:59:54.273Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/e4/ba44652d562cbf0bf320e0f3810206149c8a4e99cdbf66da82e97ab53a15/pydantic-2.9.2-py3-none-any.whl", hash = "sha256:f048cec7b26778210e28a0459867920654d48e5e62db0958433636cde4254f12", size = 434928, upload-time = "2024-09-17T15:59:51.827Z" }, -] - -[[package]] -name = "pydantic-core" -version = "2.23.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e2/aa/6b6a9b9f8537b872f552ddd46dd3da230367754b6f707b8e1e963f515ea3/pydantic_core-2.23.4.tar.gz", hash = "sha256:2584f7cf844ac4d970fba483a717dbe10c1c1c96a969bf65d61ffe94df1b2863", size = 402156, upload-time = "2024-09-16T16:06:44.786Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/ef/16ee2df472bf0e419b6bc68c05bf0145c49247a1095e85cee1463c6a44a1/pydantic_core-2.23.4-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:7530e201d10d7d14abce4fb54cfe5b94a0aefc87da539d0346a484ead376c3cc", size = 1856143, upload-time = "2024-09-16T16:04:59.062Z" }, - { url = "https://files.pythonhosted.org/packages/da/fa/bc3dbb83605669a34a93308e297ab22be82dfb9dcf88c6cf4b4f264e0a42/pydantic_core-2.23.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:df933278128ea1cd77772673c73954e53a1c95a4fdf41eef97c2b779271bd0bd", size = 1770063, upload-time = "2024-09-16T16:05:00.522Z" }, - { url = "https://files.pythonhosted.org/packages/4e/48/e813f3bbd257a712303ebdf55c8dc46f9589ec74b384c9f652597df3288d/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cb3da3fd1b6a5d0279a01877713dbda118a2a4fc6f0d821a57da2e464793f05", size = 1790013, upload-time = "2024-09-16T16:05:02.619Z" }, - { url = "https://files.pythonhosted.org/packages/b4/e0/56eda3a37929a1d297fcab1966db8c339023bcca0b64c5a84896db3fcc5c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:42c6dcb030aefb668a2b7009c85b27f90e51e6a3b4d5c9bc4c57631292015b0d", size = 1801077, upload-time = "2024-09-16T16:05:04.154Z" }, - { url = "https://files.pythonhosted.org/packages/04/be/5e49376769bfbf82486da6c5c1683b891809365c20d7c7e52792ce4c71f3/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:696dd8d674d6ce621ab9d45b205df149399e4bb9aa34102c970b721554828510", size = 1996782, upload-time = "2024-09-16T16:05:06.931Z" }, - { url = "https://files.pythonhosted.org/packages/bc/24/e3ee6c04f1d58cc15f37bcc62f32c7478ff55142b7b3e6d42ea374ea427c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2971bb5ffe72cc0f555c13e19b23c85b654dd2a8f7ab493c262071377bfce9f6", size = 2661375, upload-time = "2024-09-16T16:05:08.773Z" }, - { url = "https://files.pythonhosted.org/packages/c1/f8/11a9006de4e89d016b8de74ebb1db727dc100608bb1e6bbe9d56a3cbbcce/pydantic_core-2.23.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8394d940e5d400d04cad4f75c0598665cbb81aecefaca82ca85bd28264af7f9b", size = 2071635, upload-time = "2024-09-16T16:05:10.456Z" }, - { url = "https://files.pythonhosted.org/packages/7c/45/bdce5779b59f468bdf262a5bc9eecbae87f271c51aef628d8c073b4b4b4c/pydantic_core-2.23.4-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0dff76e0602ca7d4cdaacc1ac4c005e0ce0dcfe095d5b5259163a80d3a10d327", size = 1916994, upload-time = "2024-09-16T16:05:12.051Z" }, - { url = "https://files.pythonhosted.org/packages/d8/fa/c648308fe711ee1f88192cad6026ab4f925396d1293e8356de7e55be89b5/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:7d32706badfe136888bdea71c0def994644e09fff0bfe47441deaed8e96fdbc6", size = 1968877, upload-time = "2024-09-16T16:05:14.021Z" }, - { url = "https://files.pythonhosted.org/packages/16/16/b805c74b35607d24d37103007f899abc4880923b04929547ae68d478b7f4/pydantic_core-2.23.4-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ed541d70698978a20eb63d8c5d72f2cc6d7079d9d90f6b50bad07826f1320f5f", size = 2116814, upload-time = "2024-09-16T16:05:15.684Z" }, - { url = "https://files.pythonhosted.org/packages/d1/58/5305e723d9fcdf1c5a655e6a4cc2a07128bf644ff4b1d98daf7a9dbf57da/pydantic_core-2.23.4-cp313-none-win32.whl", hash = "sha256:3d5639516376dce1940ea36edf408c554475369f5da2abd45d44621cb616f769", size = 1738360, upload-time = "2024-09-16T16:05:17.258Z" }, - { url = "https://files.pythonhosted.org/packages/a5/ae/e14b0ff8b3f48e02394d8acd911376b7b66e164535687ef7dc24ea03072f/pydantic_core-2.23.4-cp313-none-win_amd64.whl", hash = "sha256:5a1504ad17ba4210df3a045132a7baeeba5a200e930f57512ee02909fc5c4cb5", size = 1919411, upload-time = "2024-09-16T16:05:18.934Z" }, -] - -[[package]] -name = "pyelftools" -version = "0.32" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/ab/33968940b2deb3d92f5b146bc6d4009a5f95d1d06c148ea2f9ee965071af/pyelftools-0.32.tar.gz", hash = "sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5", size = 15047199, upload-time = "2025-02-19T14:20:05.549Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/43/700932c4f0638c3421177144a2e86448c0d75dbaee2c7936bda3f9fd0878/pyelftools-0.32-py3-none-any.whl", hash = "sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738", size = 188525, upload-time = "2025-02-19T14:19:59.919Z" }, -] - -[[package]] -name = "pygments" -version = "2.18.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8e/62/8336eff65bcbc8e4cb5d05b55faf041285951b6e80f33e2bff2024788f31/pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199", size = 4891905, upload-time = "2024-05-04T13:42:02.013Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/3f/01c8b82017c199075f8f788d0d906b9ffbbc5a47dc9918a945e13d5a2bda/pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a", size = 1205513, upload-time = "2024-05-04T13:41:57.345Z" }, -] - -[[package]] -name = "pykwalify" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "docopt" }, - { name = "python-dateutil" }, - { name = "ruamel-yaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d5/77/2d6849510dbfce5f74f1f69768763630ad0385ad7bb0a4f39b55de3920c7/pykwalify-1.8.0.tar.gz", hash = "sha256:796b2ad3ed4cb99b88308b533fb2f559c30fa6efb4fa9fda11347f483d245884", size = 62462, upload-time = "2020-12-30T22:31:10.745Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1f/fd/ac2161cce19fd67a18c269073f8e86292b5511acec6f8ef6eab88615d032/pykwalify-1.8.0-py2.py3-none-any.whl", hash = "sha256:731dfa87338cca9f559d1fca2bdea37299116e3139b73f78ca90a543722d6651", size = 24860, upload-time = "2020-12-30T22:31:09.09Z" }, -] - -[[package]] -name = "pylink-square" -version = "1.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "psutil" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/26/12865d2b7784d2ff687d6dc29eea38013688d47a5499df60010e1f13ba4f/pylink_square-1.7.0.tar.gz", hash = "sha256:9a4c4b1cf0cffedd15e00f82c3e23745252a5094c96b27560daac25a0d08aa36", size = 173502, upload-time = "2025-08-28T15:56:47.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/b8/db67ffbb71881b02c169b638bc53c9a1bf0d8f41828e3b48974e77f34419/pylink_square-1.7.0-py2.py3-none-any.whl", hash = "sha256:f418db3479b3b86e45f821f88cea5397357beed382eb441ab2fd11e1d4d9e1e3", size = 86908, upload-time = "2025-08-28T15:56:46.171Z" }, -] - -[[package]] -name = "pyocd" -version = "0.39.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "capstone" }, - { name = "cmsis-pack-manager" }, - { name = "colorama" }, - { name = "hidapi", marker = "sys_platform != 'linux'" }, - { name = "importlib-metadata" }, - { name = "importlib-resources" }, - { name = "intelhex" }, - { name = "intervaltree" }, - { name = "lark" }, - { name = "libusb-package" }, - { name = "natsort" }, - { name = "prettytable" }, - { name = "pyelftools" }, - { name = "pylink-square" }, - { name = "pyusb" }, - { name = "pyyaml" }, - { name = "six" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3d/15/77a3b791da7b8de65bf881914fa21fc4c523bd185bbab8fd39de0411dbcf/pyocd-0.39.0.tar.gz", hash = "sha256:2fa4bf224229a16ba6d213deba2889331c332188fd4316d942f80629689cb03b", size = 16120819, upload-time = "2025-09-11T12:31:29.802Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/28/15/574712b2b78bdab957d41bfbc4b01bf0f0824209c473d661e3fbeda4cd16/pyocd-0.39.0-py3-none-any.whl", hash = "sha256:d3cc24d1409b1c16989c4ed518423fd5442428984d84c97f982f8c5a45e62fae", size = 14542807, upload-time = "2025-09-11T12:31:26.116Z" }, -] - -[[package]] -name = "pyparsing" -version = "3.2.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, -] - -[[package]] -name = "pyserial" -version = "3.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125, upload-time = "2020-11-23T03:59:15.045Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585, upload-time = "2020-11-23T03:59:13.41Z" }, -] - -[[package]] -name = "pytest" -version = "8.3.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "iniconfig" }, - { name = "packaging" }, - { name = "pluggy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8b/6c/62bbd536103af674e227c41a8f3dcd022d591f6eed5facb5a0f31ee33bbc/pytest-8.3.3.tar.gz", hash = "sha256:70b98107bd648308a7952b06e6ca9a50bc660be218d53c257cc1fc94fda10181", size = 1442487, upload-time = "2024-09-10T10:52:15.003Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/77/7440a06a8ead44c7757a64362dd22df5760f9b12dc5f11b6188cd2fc27a0/pytest-8.3.3-py3-none-any.whl", hash = "sha256:a6853c7375b2663155079443d2e45de913a911a11d669df02a50814944db57b2", size = 342341, upload-time = "2024-09-10T10:52:12.54Z" }, -] - -[[package]] -name = "python-can" -version = "4.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "typing-extensions" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/74/f9/a9d99d36dd33be5badb747801c9255c3c526171a5542092eaacc73350fb8/python_can-4.6.1.tar.gz", hash = "sha256:290fea135d04b8504ebff33889cc6d301e2181a54099116609f940825ffe5005", size = 1206049, upload-time = "2025-08-12T07:44:58.314Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/58/34/e4ac153acdbcfba7f48bc73d6586a74c91cc919fcc2e29acbf81be329d1f/python_can-4.6.1-py3-none-any.whl", hash = "sha256:17f95255868a95108dcfcb90565a684dad32d5a3ebb35afd14f739e18c84ff6c", size = 276996, upload-time = "2025-08-12T07:44:56.55Z" }, -] - -[[package]] -name = "python-dateutil" -version = "2.9.0.post0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, -] - -[[package]] -name = "python-debian" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "charset-normalizer" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload-time = "2025-03-11T12:27:27.245Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload-time = "2025-03-11T12:27:25.014Z" }, -] - -[[package]] -name = "python-slugify" -version = "8.0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "text-unidecode" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload-time = "2024-02-08T18:32:45.488Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload-time = "2024-02-08T18:32:43.911Z" }, -] - -[[package]] -name = "pytz" -version = "2024.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/31/3c70bf7603cc2dca0f19bdc53b4537a797747a58875b552c8c413d963a3f/pytz-2024.2.tar.gz", hash = "sha256:2aa355083c50a0f93fa581709deac0c9ad65cca8a9e9beac660adcbd493c798a", size = 319692, upload-time = "2024-09-11T02:24:47.91Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/11/c3/005fcca25ce078d2cc29fd559379817424e94885510568bc1bc53d7d5846/pytz-2024.2-py2.py3-none-any.whl", hash = "sha256:31c7c1817eb7fae7ca4b8c7ee50c72f93aa2dd863de768e1ef4245d426aa0725", size = 508002, upload-time = "2024-09-11T02:24:45.8Z" }, -] - -[[package]] -name = "pyusb" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/6b/ce3727395e52b7b76dfcf0c665e37d223b680b9becc60710d4bc08b7b7cb/pyusb-1.3.1.tar.gz", hash = "sha256:3af070b607467c1c164f49d5b0caabe8ac78dbed9298d703a8dbf9df4052d17e", size = 77281, upload-time = "2025-01-08T23:45:01.866Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/28/b8/27e6312e86408a44fe16bd28ee12dd98608b39f7e7e57884a24e8f29b573/pyusb-1.3.1-py3-none-any.whl", hash = "sha256:bf9b754557af4717fe80c2b07cc2b923a9151f5c08d17bdb5345dac09d6a0430", size = 58465, upload-time = "2025-01-08T23:45:00.029Z" }, -] - -[[package]] -name = "pyyaml" -version = "6.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" }, -] - -[[package]] -name = "pyzmq" -version = "26.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "implementation_name == 'pypy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fd/05/bed626b9f7bb2322cdbbf7b4bd8f54b1b617b0d2ab2d3547d6e39428a48e/pyzmq-26.2.0.tar.gz", hash = "sha256:070672c258581c8e4f640b5159297580a9974b026043bd4ab0470be9ed324f1f", size = 271975, upload-time = "2024-08-22T09:02:03.351Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/a7/0f7e2f6c126fe6e62dbae0bc93b1bd3f1099cf7fea47a5468defebe3f39d/pyzmq-26.2.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9dd8cd1aeb00775f527ec60022004d030ddc51d783d056e3e23e74e623e33726", size = 1006564, upload-time = "2024-08-22T09:00:11.054Z" }, - { url = "https://files.pythonhosted.org/packages/31/b6/a187165c852c5d49f826a690857684333a6a4a065af0a6015572d2284f6a/pyzmq-26.2.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:28c812d9757fe8acecc910c9ac9dafd2ce968c00f9e619db09e9f8f54c3a68a3", size = 1340447, upload-time = "2024-08-22T09:00:12.547Z" }, - { url = "https://files.pythonhosted.org/packages/68/ba/f4280c58ff71f321602a6e24fd19879b7e79793fb8ab14027027c0fb58ef/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d80b1dd99c1942f74ed608ddb38b181b87476c6a966a88a950c7dee118fdf50", size = 665485, upload-time = "2024-08-22T09:00:14.205Z" }, - { url = "https://files.pythonhosted.org/packages/77/b5/c987a5c53c7d8704216f29fc3d810b32f156bcea488a940e330e1bcbb88d/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c997098cc65e3208eca09303630e84d42718620e83b733d0fd69543a9cab9cb", size = 903484, upload-time = "2024-08-22T09:00:16.148Z" }, - { url = "https://files.pythonhosted.org/packages/29/c9/07da157d2db18c72a7eccef8e684cefc155b712a88e3d479d930aa9eceba/pyzmq-26.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ad1bc8d1b7a18497dda9600b12dc193c577beb391beae5cd2349184db40f187", size = 859981, upload-time = "2024-08-22T09:00:17.443Z" }, - { url = "https://files.pythonhosted.org/packages/43/09/e12501bd0b8394b7d02c41efd35c537a1988da67fc9c745cae9c6c776d31/pyzmq-26.2.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:bea2acdd8ea4275e1278350ced63da0b166421928276c7c8e3f9729d7402a57b", size = 860334, upload-time = "2024-08-22T09:00:18.65Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ff/f5ec1d455f8f7385cc0a8b2acd8c807d7fade875c14c44b85c1bddabae21/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:23f4aad749d13698f3f7b64aad34f5fc02d6f20f05999eebc96b89b01262fb18", size = 1196179, upload-time = "2024-08-22T09:00:19.981Z" }, - { url = "https://files.pythonhosted.org/packages/ec/8a/bb2ac43295b1950fe436a81fc5b298be0b96ac76fb029b514d3ed58f7b27/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:a4f96f0d88accc3dbe4a9025f785ba830f968e21e3e2c6321ccdfc9aef755115", size = 1507668, upload-time = "2024-08-22T09:00:21.249Z" }, - { url = "https://files.pythonhosted.org/packages/a9/49/dbc284ebcfd2dca23f6349227ff1616a7ee2c4a35fe0a5d6c3deff2b4fed/pyzmq-26.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ced65e5a985398827cc9276b93ef6dfabe0273c23de8c7931339d7e141c2818e", size = 1406539, upload-time = "2024-08-22T09:00:22.742Z" }, - { url = "https://files.pythonhosted.org/packages/00/68/093cdce3fe31e30a341d8e52a1ad86392e13c57970d722c1f62a1d1a54b6/pyzmq-26.2.0-cp313-cp313-win32.whl", hash = "sha256:31507f7b47cc1ead1f6e86927f8ebb196a0bab043f6345ce070f412a59bf87b5", size = 575567, upload-time = "2024-08-22T09:00:24.2Z" }, - { url = "https://files.pythonhosted.org/packages/92/ae/6cc4657148143412b5819b05e362ae7dd09fb9fe76e2a539dcff3d0386bc/pyzmq-26.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:70fc7fcf0410d16ebdda9b26cbd8bf8d803d220a7f3522e060a69a9c87bf7bad", size = 637551, upload-time = "2024-08-22T09:00:25.58Z" }, - { url = "https://files.pythonhosted.org/packages/6c/67/fbff102e201688f97c8092e4c3445d1c1068c2f27bbd45a578df97ed5f94/pyzmq-26.2.0-cp313-cp313-win_arm64.whl", hash = "sha256:c3789bd5768ab5618ebf09cef6ec2b35fed88709b104351748a63045f0ff9797", size = 540378, upload-time = "2024-08-22T09:00:27.572Z" }, - { url = "https://files.pythonhosted.org/packages/3f/fe/2d998380b6e0122c6c4bdf9b6caf490831e5f5e2d08a203b5adff060c226/pyzmq-26.2.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:034da5fc55d9f8da09015d368f519478a52675e558c989bfcb5cf6d4e16a7d2a", size = 1007378, upload-time = "2024-08-22T09:00:29.274Z" }, - { url = "https://files.pythonhosted.org/packages/4a/f4/30d6e7157f12b3a0390bde94d6a8567cdb88846ed068a6e17238a4ccf600/pyzmq-26.2.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c92d73464b886931308ccc45b2744e5968cbaade0b1d6aeb40d8ab537765f5bc", size = 1329532, upload-time = "2024-08-22T09:00:30.683Z" }, - { url = "https://files.pythonhosted.org/packages/82/86/3fe917870e15ee1c3ad48229a2a64458e36036e64b4afa9659045d82bfa8/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:794a4562dcb374f7dbbfb3f51d28fb40123b5a2abadee7b4091f93054909add5", size = 653242, upload-time = "2024-08-22T09:00:32.562Z" }, - { url = "https://files.pythonhosted.org/packages/50/2d/242e7e6ef6c8c19e6cb52d095834508cd581ffb925699fd3c640cdc758f1/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aee22939bb6075e7afededabad1a56a905da0b3c4e3e0c45e75810ebe3a52672", size = 888404, upload-time = "2024-08-22T09:00:33.982Z" }, - { url = "https://files.pythonhosted.org/packages/ac/11/7270566e1f31e4ea73c81ec821a4b1688fd551009a3d2bab11ec66cb1e8f/pyzmq-26.2.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ae90ff9dad33a1cfe947d2c40cb9cb5e600d759ac4f0fd22616ce6540f72797", size = 845858, upload-time = "2024-08-22T09:00:35.251Z" }, - { url = "https://files.pythonhosted.org/packages/91/d5/72b38fbc69867795c8711bdd735312f9fef1e3d9204e2f63ab57085434b9/pyzmq-26.2.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:43a47408ac52647dfabbc66a25b05b6a61700b5165807e3fbd40063fcaf46386", size = 847375, upload-time = "2024-08-22T09:00:36.546Z" }, - { url = "https://files.pythonhosted.org/packages/dd/9a/10ed3c7f72b4c24e719c59359fbadd1a27556a28b36cdf1cd9e4fb7845d5/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:25bf2374a2a8433633c65ccb9553350d5e17e60c8eb4de4d92cc6bd60f01d306", size = 1183489, upload-time = "2024-08-22T09:00:37.819Z" }, - { url = "https://files.pythonhosted.org/packages/72/2d/8660892543fabf1fe41861efa222455811adac9f3c0818d6c3170a1153e3/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:007137c9ac9ad5ea21e6ad97d3489af654381324d5d3ba614c323f60dab8fae6", size = 1492932, upload-time = "2024-08-22T09:00:39.127Z" }, - { url = "https://files.pythonhosted.org/packages/7b/d6/32fd69744afb53995619bc5effa2a405ae0d343cd3e747d0fbc43fe894ee/pyzmq-26.2.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:470d4a4f6d48fb34e92d768b4e8a5cc3780db0d69107abf1cd7ff734b9766eb0", size = 1392485, upload-time = "2024-08-22T09:00:40.432Z" }, -] - -[[package]] -name = "rdflib" -version = "7.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyparsing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8d/99/d2fec85e5f6bdfe4367dea143119cb4469bf48710487939df0abf7e22003/rdflib-7.2.1.tar.gz", hash = "sha256:cf9b7fa25234e8925da8b1fb09700f8349b5f0f100e785fb4260e737308292ac", size = 4873802, upload-time = "2025-09-19T02:33:36.492Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/31/98/7fa830bb4b9da21905683a5352aa0a01a1f3082328ae976aad341e980c23/rdflib-7.2.1-py3-none-any.whl", hash = "sha256:1a175bc1386a167a42fbfaba003bfa05c164a2a3ca3cb9c0c97f9c9638ca6ac2", size = 565423, upload-time = "2025-09-19T02:33:30.889Z" }, -] - -[[package]] -name = "requests" -version = "2.32.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" }, -] - -[[package]] -name = "reuse" -version = "5.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "binaryornot" }, - { name = "boolean-py" }, - { name = "click" }, - { name = "jinja2" }, - { name = "license-expression" }, - { name = "python-debian" }, - { name = "tomlkit" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/4b/f7/b59fe851b856d0932aedbf311a3d719f30783e27af6d05bb76d77072ab8f/reuse-5.1.1.tar.gz", hash = "sha256:a13914ed8b66b8e5956e96c63203c63d72b55280d348849ccc0eb314c73248cb", size = 419022, upload-time = "2025-09-05T14:50:01.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/95/12451ff8bc2c3e8a5755bc810a538de85444015d44353fc6f7ee8800c0bb/reuse-5.1.1-cp313-cp313-manylinux_2_41_x86_64.whl", hash = "sha256:15a68341949b7ddb3630d8d3a49d9537bbc143ee235dca77cc3f4047237c8299", size = 255386, upload-time = "2025-09-05T14:49:58.576Z" }, -] - -[[package]] -name = "rich" -version = "13.9.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/aa/9e/1784d15b057b0075e5136445aaea92d23955aad2c93eaede673718a40d95/rich-13.9.2.tar.gz", hash = "sha256:51a2c62057461aaf7152b4d611168f93a9fc73068f8ded2790f29fe2b5366d0c", size = 222843, upload-time = "2024-10-04T11:50:31.453Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/91/5474b84e505a6ccc295b2d322d90ff6aa0746745717839ee0c5fb4fdcceb/rich-13.9.2-py3-none-any.whl", hash = "sha256:8c82a3d3f8dcfe9e734771313e606b39d8247bb6b826e196f4914b333b743cf1", size = 242117, upload-time = "2024-10-04T11:50:29.123Z" }, -] - -[[package]] -name = "ruamel-yaml" -version = "0.18.15" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865, upload-time = "2025-08-19T11:15:10.694Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702, upload-time = "2025-08-19T11:15:07.696Z" }, -] - -[[package]] -name = "ruamel-yaml-clib" -version = "0.2.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/39ec4d4b3f91188fad1842748f67d4e749c77c37e353c4e545052ee8e893/ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e", size = 225394, upload-time = "2025-09-22T19:51:23.753Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ae/e3811f05415594025e96000349d3400978adaed88d8f98d494352d9761ee/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e4f9da7e7549946e02a6122dcad00b7c1168513acb1f8a726b1aaf504a99d32", size = 269205, upload-time = "2025-09-23T14:24:15.06Z" }, - { url = "https://files.pythonhosted.org/packages/72/06/7d51f4688d6d72bb72fa74254e1593c4f5ebd0036be5b41fe39315b275e9/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:dd7546c851e59c06197a7c651335755e74aa383a835878ca86d2c650c07a2f85", size = 137417, upload-time = "2025-09-22T19:50:59.82Z" }, - { url = "https://files.pythonhosted.org/packages/5a/08/b4499234a420ef42960eeb05585df5cc7eb25ccb8c980490b079e6367050/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1c1acc3a0209ea9042cc3cfc0790edd2eddd431a2ec3f8283d081e4d5018571e", size = 642558, upload-time = "2025-09-22T19:51:03.388Z" }, - { url = "https://files.pythonhosted.org/packages/b6/ba/1975a27dedf1c4c33306ee67c948121be8710b19387aada29e2f139c43ee/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2070bf0ad1540d5c77a664de07ebcc45eebd1ddcab71a7a06f26936920692beb", size = 744087, upload-time = "2025-09-22T19:51:00.897Z" }, - { url = "https://files.pythonhosted.org/packages/20/15/8a19a13d27f3bd09fa18813add8380a29115a47b553845f08802959acbce/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd8fe07f49c170e09d76773fb86ad9135e0beee44f36e1576a201b0676d3d1d", size = 699709, upload-time = "2025-09-22T19:51:02.075Z" }, - { url = "https://files.pythonhosted.org/packages/19/ee/8d6146a079ad21e534b5083c9ee4a4c8bec42f79cf87594b60978286b39a/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ff86876889ea478b1381089e55cf9e345707b312beda4986f823e1d95e8c0f59", size = 708926, upload-time = "2025-09-23T18:42:51.707Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f5/426b714abdc222392e68f3b8ad323930d05a214a27c7e7a0f06c69126401/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1f118b707eece8cf84ecbc3e3ec94d9db879d85ed608f95870d39b2d2efa5dca", size = 740202, upload-time = "2025-09-22T19:51:04.673Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ac/3c5c2b27a183f4fda8a57c82211721c016bcb689a4a175865f7646db9f94/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b30110b29484adc597df6bd92a37b90e63a8c152ca8136aad100a02f8ba6d1b6", size = 765196, upload-time = "2025-09-22T19:51:05.916Z" }, - { url = "https://files.pythonhosted.org/packages/92/2e/06f56a71fd55021c993ed6e848c9b2e5e9cfce180a42179f0ddd28253f7c/ruamel.yaml.clib-0.2.14-cp313-cp313-win32.whl", hash = "sha256:f4e97a1cf0b7a30af9e1d9dad10a5671157b9acee790d9e26996391f49b965a2", size = 98635, upload-time = "2025-09-22T19:51:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/51/79/76aba16a1689b50528224b182f71097ece338e7a4ab55e84c2e73443b78a/ruamel.yaml.clib-0.2.14-cp313-cp313-win_amd64.whl", hash = "sha256:090782b5fb9d98df96509eecdbcaffd037d47389a89492320280d52f91330d78", size = 115238, upload-time = "2025-09-22T19:51:07.081Z" }, - { url = "https://files.pythonhosted.org/packages/21/e2/a59ff65c26aaf21a24eb38df777cb9af5d87ba8fc8107c163c2da9d1e85e/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7df6f6e9d0e33c7b1d435defb185095386c469109de723d514142632a7b9d07f", size = 271441, upload-time = "2025-09-23T14:24:16.498Z" }, - { url = "https://files.pythonhosted.org/packages/6b/fa/3234f913fe9a6525a7b97c6dad1f51e72b917e6872e051a5e2ffd8b16fbb/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:70eda7703b8126f5e52fcf276e6c0f40b0d314674f896fc58c47b0aef2b9ae83", size = 137970, upload-time = "2025-09-22T19:51:09.472Z" }, - { url = "https://files.pythonhosted.org/packages/ef/ec/4edbf17ac2c87fa0845dd366ef8d5852b96eb58fcd65fc1ecf5fe27b4641/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a0cb71ccc6ef9ce36eecb6272c81afdc2f565950cdcec33ae8e6cd8f7fc86f27", size = 739639, upload-time = "2025-09-22T19:51:10.566Z" }, - { url = "https://files.pythonhosted.org/packages/15/18/b0e1fafe59051de9e79cdd431863b03593ecfa8341c110affad7c8121efc/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7cb9ad1d525d40f7d87b6df7c0ff916a66bc52cb61b66ac1b2a16d0c1b07640", size = 764456, upload-time = "2025-09-22T19:51:11.736Z" }, -] - -[[package]] -name = "semantic-version" -version = "2.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/31/f2289ce78b9b473d582568c234e104d2a342fd658cc288a7553d83bb8595/semantic_version-2.10.0.tar.gz", hash = "sha256:bdabb6d336998cbb378d4b9db3a4b56a1e3235701dc05ea2690d9a997ed5041c", size = 52289, upload-time = "2022-05-26T13:35:23.454Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/23/8146aad7d88f4fcb3a6218f41a60f6c2d4e3a72de72da1825dc7c8f7877c/semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177", size = 15552, upload-time = "2022-05-26T13:35:21.206Z" }, -] - -[[package]] -name = "semver" -version = "3.0.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/d1/d3159231aec234a59dd7d601e9dd9fe96f3afff15efd33c1070019b26132/semver-3.0.4.tar.gz", hash = "sha256:afc7d8c584a5ed0a11033af086e8af226a9c0b206f313e0301f8dd7b6b589602", size = 269730, upload-time = "2025-01-24T13:19:27.617Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/24/4d91e05817e92e3a61c8a21e08fd0f390f5301f1c448b137c57c4bc6e543/semver-3.0.4-py3-none-any.whl", hash = "sha256:9c824d87ba7f7ab4a1890799cec8596f15c1241cb473404ea1cb0c55e4b04746", size = 17912, upload-time = "2025-01-24T13:19:24.949Z" }, -] - -[[package]] -name = "setuptools" -version = "78.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/81/9c/42314ee079a3e9c24b27515f9fbc7a3c1d29992c33451779011c74488375/setuptools-78.1.1.tar.gz", hash = "sha256:fcc17fd9cd898242f6b4adfaca46137a9edef687f43e6f78469692a5e70d851d", size = 1368163, upload-time = "2025-04-19T18:23:36.68Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/99/158ad0609729111163fc1f674a5a42f2605371a4cf036d0441070e2f7455/setuptools-78.1.1-py3-none-any.whl", hash = "sha256:c3a9c4211ff4c309edb8b8c4f1cbfa7ae324c4ba9f91ff254e3d305b9fd54561", size = 1256462, upload-time = "2025-04-19T18:23:34.525Z" }, -] - -[[package]] -name = "six" -version = "1.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/71/39/171f1c67cd00715f190ba0b100d606d440a28c93c7714febeca8b79af85e/six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926", size = 34041, upload-time = "2021-05-05T14:18:18.379Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254", size = 11053, upload-time = "2021-05-05T14:18:17.237Z" }, -] - -[[package]] -name = "sortedcontainers" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, -] - -[[package]] -name = "spacepackets" -version = "0.31.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "deprecation" }, - { name = "fastcrc" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/d2/eb00fbe85e013084bea0a55a32f3d22ddbc9ec1f5e0251de2e66ee66e163/spacepackets-0.31.0.tar.gz", hash = "sha256:6ba8923bff04ada31c49bc4a35b98ad43bc0cf85bdc80f4f1db902d014aca341", size = 127775, upload-time = "2025-09-10T14:30:25.675Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/93/c864fa5a7dff821fbc11cbeff75cdcebc099031b23ef794ca38ae27ed251/spacepackets-0.31.0-py3-none-any.whl", hash = "sha256:cd69c2e85ff1a4934671ad38abcc1ecfd014879baef9be6ab803d873d41a1902", size = 105922, upload-time = "2025-09-10T14:30:24.236Z" }, -] - -[[package]] -name = "spdx-tools" -version = "0.8.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beartype" }, - { name = "click" }, - { name = "license-expression" }, - { name = "ply" }, - { name = "pyyaml" }, - { name = "rdflib" }, - { name = "semantic-version" }, - { name = "uritools" }, - { name = "xmltodict" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f1/99/3470b28dc4b64fd29db3b1dcf5e84c743ec88e25ea7b214794f5930f0319/spdx-tools-0.8.3.tar.gz", hash = "sha256:68b8f9ce2893b5216bd90b2e63f1c821c2884e4ebc4fd295ebbf1fa8b8a94b93", size = 681626, upload-time = "2024-09-30T09:32:46.848Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/bc/09994d78b66da8535ab339047c2381409f028581c0bbde53287745d3cab1/spdx_tools-0.8.3-py3-none-any.whl", hash = "sha256:638fd9bd8be61901316eb6d063574e16d5403a1870073ec4d9241426a997501a", size = 285435, upload-time = "2024-09-30T09:32:44.971Z" }, -] - -[[package]] -name = "tabulate" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, -] - -[[package]] -name = "text-unidecode" -version = "1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload-time = "2019-08-30T21:36:45.405Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload-time = "2019-08-30T21:37:03.543Z" }, -] - -[[package]] -name = "tomli" -version = "2.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c0/3f/d7af728f075fb08564c5949a9c95e44352e23dee646869fa104a3b2060a3/tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f", size = 15164, upload-time = "2022-02-08T10:54:04.006Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc", size = 12757, upload-time = "2022-02-08T10:54:02.017Z" }, -] - -[[package]] -name = "tomlkit" -version = "0.13.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, -] - -[[package]] -name = "tqdm" -version = "4.67.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, -] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20241003" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/f8/f6ee4c803a7beccffee21bb29a71573b39f7037c224843eff53e5308c16e/types-python-dateutil-2.9.0.20241003.tar.gz", hash = "sha256:58cb85449b2a56d6684e41aeefb4c4280631246a0da1a719bdbe6f3fb0317446", size = 9210, upload-time = "2024-10-03T02:43:26.932Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/d6/ba5f61958f358028f2e2ba1b8e225b8e263053bd57d3a79e2d2db64c807b/types_python_dateutil-2.9.0.20241003-py3-none-any.whl", hash = "sha256:250e1d8e80e7bbc3a6c99b907762711d1a1cdd00e978ad39cb5940f6f0a87f3d", size = 9693, upload-time = "2024-10-03T02:43:25.458Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.12.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec321ba8bce9420de607a1d37f8342eee1863174c69557/typing_extensions-4.12.2.tar.gz", hash = "sha256:1a7ead55c7e559dd4dee8856e3a88b41225abfe1ce8df57b7c13915fe121ffb8", size = 85321, upload-time = "2024-06-07T18:52:15.995Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438, upload-time = "2024-06-07T18:52:13.582Z" }, -] - -[[package]] -name = "uritools" -version = "5.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/b1/e482d43db3209663b82a59e37cf31f641254180190667c6b0bf18a297de8/uritools-5.0.0.tar.gz", hash = "sha256:68180cad154062bd5b5d9ffcdd464f8de6934414b25462ae807b00b8df9345de", size = 22730, upload-time = "2025-05-02T13:38:20.67Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/74/0987d204b5fbf83861affa6b36a20da22cb3fe708583b955c99ab834bd5a/uritools-5.0.0-py3-none-any.whl", hash = "sha256:cead3a49ba8fbca3f91857343849d506d8639718f4a2e51b62e87393b493bd6f", size = 10432, upload-time = "2025-05-02T13:38:18.703Z" }, -] - -[[package]] -name = "urllib3" -version = "2.5.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload-time = "2025-06-18T14:07:41.644Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload-time = "2025-06-18T14:07:40.39Z" }, -] - -[[package]] -name = "wcwidth" -version = "0.2.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/24/30/6b0809f4510673dc723187aeaf24c7f5459922d01e2f794277a3dfb90345/wcwidth-0.2.14.tar.gz", hash = "sha256:4d478375d31bc5395a3c55c40ccdf3354688364cd61c4f6adacaa9215d0b3605", size = 102293, upload-time = "2025-09-22T16:29:53.023Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/b5/123f13c975e9f27ab9c0770f514345bd406d0e8d3b7a0723af9d43f710af/wcwidth-0.2.14-py2.py3-none-any.whl", hash = "sha256:a7bb560c8aee30f9957e5f9895805edd20602f2d7f720186dfd906e82b4982e1", size = 37286, upload-time = "2025-09-22T16:29:51.641Z" }, -] - -[[package]] -name = "werkzeug" -version = "3.0.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d4/f9/0ba83eaa0df9b9e9d1efeb2ea351d0677c37d41ee5d0f91e98423c7281c9/werkzeug-3.0.6.tar.gz", hash = "sha256:a8dd59d4de28ca70471a34cba79bed5f7ef2e036a76b3ab0835474246eb41f8d", size = 805170, upload-time = "2024-10-25T18:52:31.688Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/69/05837f91dfe42109203ffa3e488214ff86a6d68b2ed6c167da6cdc42349b/werkzeug-3.0.6-py3-none-any.whl", hash = "sha256:1bc0c2310d2fbb07b1dd1105eba2f7af72f322e1e455f2f93c993bee8c8a5f17", size = 227979, upload-time = "2024-10-25T18:52:30.129Z" }, -] - -[[package]] -name = "west" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama" }, - { name = "packaging" }, - { name = "pykwalify" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/8e/ddb81e2635e58d156092556934a2cffe245978c91e4a08e11d72591f46e4/west-1.5.0.tar.gz", hash = "sha256:7088fe0e9afe0719ebee95c51c529149f7bcfc919d83a8206d35fa9c683ed0a5", size = 149326, upload-time = "2025-09-23T14:45:52.443Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/1d/e50fb71de492abb549917fdbf13c4a8a8459af9d78a2fa47905804905c36/west-1.5.0-py3-none-any.whl", hash = "sha256:f71411d11ed9ed00847405c6a83600374c2e0cf8676ed5af5d8b572f92c4765a", size = 106991, upload-time = "2025-09-23T14:45:50.661Z" }, -] - -[[package]] -name = "windows-curses" -version = "2.4.1" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/a0/e8d074f013117633f6b502ca123ecfc377fe0bd36818fe65e8935c91ca9c/windows_curses-2.4.1-cp313-cp313-win32.whl", hash = "sha256:05d1ca01e5199a435ccb6c8c2978df4a169cdff1ec99ab15f11ded9de8e5be26", size = 71390, upload-time = "2025-01-11T00:26:27.66Z" }, - { url = "https://files.pythonhosted.org/packages/2b/4b/2838a829b074a68c570d54ae0ae8539979657d3e619a4dc5a4b03eb69745/windows_curses-2.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:8cf653f8928af19c103ae11cfed38124f418dcdd92643c4cd17239c0cec2f9da", size = 81636, upload-time = "2025-01-11T00:26:29.595Z" }, -] - -[[package]] -name = "wrapt" -version = "1.17.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/f6/759ece88472157acb55fc195e5b116e06730f1b651b5b314c66291729193/wrapt-1.17.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a47681378a0439215912ef542c45a783484d4dd82bac412b71e59cf9c0e1cea0", size = 54003, upload-time = "2025-08-12T05:51:48.627Z" }, - { url = "https://files.pythonhosted.org/packages/4f/a9/49940b9dc6d47027dc850c116d79b4155f15c08547d04db0f07121499347/wrapt-1.17.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a30837587c6ee3cd1a4d1c2ec5d24e77984d44e2f34547e2323ddb4e22eb77", size = 39025, upload-time = "2025-08-12T05:51:37.156Z" }, - { url = "https://files.pythonhosted.org/packages/45/35/6a08de0f2c96dcdd7fe464d7420ddb9a7655a6561150e5fc4da9356aeaab/wrapt-1.17.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:16ecf15d6af39246fe33e507105d67e4b81d8f8d2c6598ff7e3ca1b8a37213f7", size = 39108, upload-time = "2025-08-12T05:51:58.425Z" }, - { url = "https://files.pythonhosted.org/packages/0c/37/6faf15cfa41bf1f3dba80cd3f5ccc6622dfccb660ab26ed79f0178c7497f/wrapt-1.17.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:6fd1ad24dc235e4ab88cda009e19bf347aabb975e44fd5c2fb22a3f6e4141277", size = 88072, upload-time = "2025-08-12T05:52:37.53Z" }, - { url = "https://files.pythonhosted.org/packages/78/f2/efe19ada4a38e4e15b6dff39c3e3f3f73f5decf901f66e6f72fe79623a06/wrapt-1.17.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0ed61b7c2d49cee3c027372df5809a59d60cf1b6c2f81ee980a091f3afed6a2d", size = 88214, upload-time = "2025-08-12T05:52:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/40/90/ca86701e9de1622b16e09689fc24b76f69b06bb0150990f6f4e8b0eeb576/wrapt-1.17.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:423ed5420ad5f5529db9ce89eac09c8a2f97da18eb1c870237e84c5a5c2d60aa", size = 87105, upload-time = "2025-08-12T05:52:17.914Z" }, - { url = "https://files.pythonhosted.org/packages/fd/e0/d10bd257c9a3e15cbf5523025252cc14d77468e8ed644aafb2d6f54cb95d/wrapt-1.17.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e01375f275f010fcbf7f643b4279896d04e571889b8a5b3f848423d91bf07050", size = 87766, upload-time = "2025-08-12T05:52:39.243Z" }, - { url = "https://files.pythonhosted.org/packages/e8/cf/7d848740203c7b4b27eb55dbfede11aca974a51c3d894f6cc4b865f42f58/wrapt-1.17.3-cp313-cp313-win32.whl", hash = "sha256:53e5e39ff71b3fc484df8a522c933ea2b7cdd0d5d15ae82e5b23fde87d44cbd8", size = 36711, upload-time = "2025-08-12T05:53:10.074Z" }, - { url = "https://files.pythonhosted.org/packages/57/54/35a84d0a4d23ea675994104e667ceff49227ce473ba6a59ba2c84f250b74/wrapt-1.17.3-cp313-cp313-win_amd64.whl", hash = "sha256:1f0b2f40cf341ee8cc1a97d51ff50dddb9fcc73241b9143ec74b30fc4f44f6cb", size = 38885, upload-time = "2025-08-12T05:53:08.695Z" }, - { url = "https://files.pythonhosted.org/packages/01/77/66e54407c59d7b02a3c4e0af3783168fff8e5d61def52cda8728439d86bc/wrapt-1.17.3-cp313-cp313-win_arm64.whl", hash = "sha256:7425ac3c54430f5fc5e7b6f41d41e704db073309acfc09305816bc6a0b26bb16", size = 36896, upload-time = "2025-08-12T05:52:55.34Z" }, - { url = "https://files.pythonhosted.org/packages/02/a2/cd864b2a14f20d14f4c496fab97802001560f9f41554eef6df201cd7f76c/wrapt-1.17.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:cf30f6e3c077c8e6a9a7809c94551203c8843e74ba0c960f4a98cd80d4665d39", size = 54132, upload-time = "2025-08-12T05:51:49.864Z" }, - { url = "https://files.pythonhosted.org/packages/d5/46/d011725b0c89e853dc44cceb738a307cde5d240d023d6d40a82d1b4e1182/wrapt-1.17.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:e228514a06843cae89621384cfe3a80418f3c04aadf8a3b14e46a7be704e4235", size = 39091, upload-time = "2025-08-12T05:51:38.935Z" }, - { url = "https://files.pythonhosted.org/packages/2e/9e/3ad852d77c35aae7ddebdbc3b6d35ec8013af7d7dddad0ad911f3d891dae/wrapt-1.17.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:5ea5eb3c0c071862997d6f3e02af1d055f381b1d25b286b9d6644b79db77657c", size = 39172, upload-time = "2025-08-12T05:51:59.365Z" }, - { url = "https://files.pythonhosted.org/packages/c3/f7/c983d2762bcce2326c317c26a6a1e7016f7eb039c27cdf5c4e30f4160f31/wrapt-1.17.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:281262213373b6d5e4bb4353bc36d1ba4084e6d6b5d242863721ef2bf2c2930b", size = 87163, upload-time = "2025-08-12T05:52:40.965Z" }, - { url = "https://files.pythonhosted.org/packages/e4/0f/f673f75d489c7f22d17fe0193e84b41540d962f75fce579cf6873167c29b/wrapt-1.17.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:dc4a8d2b25efb6681ecacad42fca8859f88092d8732b170de6a5dddd80a1c8fa", size = 87963, upload-time = "2025-08-12T05:52:20.326Z" }, - { url = "https://files.pythonhosted.org/packages/df/61/515ad6caca68995da2fac7a6af97faab8f78ebe3bf4f761e1b77efbc47b5/wrapt-1.17.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:373342dd05b1d07d752cecbec0c41817231f29f3a89aa8b8843f7b95992ed0c7", size = 86945, upload-time = "2025-08-12T05:52:21.581Z" }, - { url = "https://files.pythonhosted.org/packages/d3/bd/4e70162ce398462a467bc09e768bee112f1412e563620adc353de9055d33/wrapt-1.17.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d40770d7c0fd5cbed9d84b2c3f2e156431a12c9a37dc6284060fb4bec0b7ffd4", size = 86857, upload-time = "2025-08-12T05:52:43.043Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b8/da8560695e9284810b8d3df8a19396a6e40e7518059584a1a394a2b35e0a/wrapt-1.17.3-cp314-cp314-win32.whl", hash = "sha256:fbd3c8319de8e1dc79d346929cd71d523622da527cca14e0c1d257e31c2b8b10", size = 37178, upload-time = "2025-08-12T05:53:12.605Z" }, - { url = "https://files.pythonhosted.org/packages/db/c8/b71eeb192c440d67a5a0449aaee2310a1a1e8eca41676046f99ed2487e9f/wrapt-1.17.3-cp314-cp314-win_amd64.whl", hash = "sha256:e1a4120ae5705f673727d3253de3ed0e016f7cd78dc463db1b31e2463e1f3cf6", size = 39310, upload-time = "2025-08-12T05:53:11.106Z" }, - { url = "https://files.pythonhosted.org/packages/45/20/2cda20fd4865fa40f86f6c46ed37a2a8356a7a2fde0773269311f2af56c7/wrapt-1.17.3-cp314-cp314-win_arm64.whl", hash = "sha256:507553480670cab08a800b9463bdb881b2edeed77dc677b0a5915e6106e91a58", size = 37266, upload-time = "2025-08-12T05:52:56.531Z" }, - { url = "https://files.pythonhosted.org/packages/77/ed/dd5cf21aec36c80443c6f900449260b80e2a65cf963668eaef3b9accce36/wrapt-1.17.3-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:ed7c635ae45cfbc1a7371f708727bf74690daedc49b4dba310590ca0bd28aa8a", size = 56544, upload-time = "2025-08-12T05:51:51.109Z" }, - { url = "https://files.pythonhosted.org/packages/8d/96/450c651cc753877ad100c7949ab4d2e2ecc4d97157e00fa8f45df682456a/wrapt-1.17.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:249f88ed15503f6492a71f01442abddd73856a0032ae860de6d75ca62eed8067", size = 40283, upload-time = "2025-08-12T05:51:39.912Z" }, - { url = "https://files.pythonhosted.org/packages/d1/86/2fcad95994d9b572db57632acb6f900695a648c3e063f2cd344b3f5c5a37/wrapt-1.17.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:5a03a38adec8066d5a37bea22f2ba6bbf39fcdefbe2d91419ab864c3fb515454", size = 40366, upload-time = "2025-08-12T05:52:00.693Z" }, - { url = "https://files.pythonhosted.org/packages/64/0e/f4472f2fdde2d4617975144311f8800ef73677a159be7fe61fa50997d6c0/wrapt-1.17.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:5d4478d72eb61c36e5b446e375bbc49ed002430d17cdec3cecb36993398e1a9e", size = 108571, upload-time = "2025-08-12T05:52:44.521Z" }, - { url = "https://files.pythonhosted.org/packages/cc/01/9b85a99996b0a97c8a17484684f206cbb6ba73c1ce6890ac668bcf3838fb/wrapt-1.17.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:223db574bb38637e8230eb14b185565023ab624474df94d2af18f1cdb625216f", size = 113094, upload-time = "2025-08-12T05:52:22.618Z" }, - { url = "https://files.pythonhosted.org/packages/25/02/78926c1efddcc7b3aa0bc3d6b33a822f7d898059f7cd9ace8c8318e559ef/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e405adefb53a435f01efa7ccdec012c016b5a1d3f35459990afc39b6be4d5056", size = 110659, upload-time = "2025-08-12T05:52:24.057Z" }, - { url = "https://files.pythonhosted.org/packages/dc/ee/c414501ad518ac3e6fe184753632fe5e5ecacdcf0effc23f31c1e4f7bfcf/wrapt-1.17.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:88547535b787a6c9ce4086917b6e1d291aa8ed914fdd3a838b3539dc95c12804", size = 106946, upload-time = "2025-08-12T05:52:45.976Z" }, - { url = "https://files.pythonhosted.org/packages/be/44/a1bd64b723d13bb151d6cc91b986146a1952385e0392a78567e12149c7b4/wrapt-1.17.3-cp314-cp314t-win32.whl", hash = "sha256:41b1d2bc74c2cac6f9074df52b2efbef2b30bdfe5f40cb78f8ca22963bc62977", size = 38717, upload-time = "2025-08-12T05:53:15.214Z" }, - { url = "https://files.pythonhosted.org/packages/79/d9/7cfd5a312760ac4dd8bf0184a6ee9e43c33e47f3dadc303032ce012b8fa3/wrapt-1.17.3-cp314-cp314t-win_amd64.whl", hash = "sha256:73d496de46cd2cdbdbcce4ae4bcdb4afb6a11234a1df9c085249d55166b95116", size = 41334, upload-time = "2025-08-12T05:53:14.178Z" }, - { url = "https://files.pythonhosted.org/packages/46/78/10ad9781128ed2f99dbc474f43283b13fea8ba58723e98844367531c18e9/wrapt-1.17.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f38e60678850c42461d4202739f9bf1e3a737c7ad283638251e79cc49effb6b6", size = 38471, upload-time = "2025-08-12T05:52:57.784Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, -] - -[[package]] -name = "xmltodict" -version = "1.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/aa/917ceeed4dbb80d2f04dbd0c784b7ee7bba8ae5a54837ef0e5e062cd3cfb/xmltodict-1.0.2.tar.gz", hash = "sha256:54306780b7c2175a3967cad1db92f218207e5bc1aba697d887807c0fb68b7649", size = 25725, upload-time = "2025-09-17T21:59:26.459Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/20/69a0e6058bc5ea74892d089d64dfc3a62ba78917ec5e2cfa70f7c92ba3a5/xmltodict-1.0.2-py3-none-any.whl", hash = "sha256:62d0fddb0dcbc9f642745d8bbf4d81fd17d6dfaec5a15b5c1876300aad92af0d", size = 13893, upload-time = "2025-09-17T21:59:24.859Z" }, -] - -[[package]] -name = "zipp" -version = "3.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4f/a1/ac66fba5917fb7860f91cb251ac6cf838923a8abe89e059cc1988cb256d1/zipp-3.19.1.tar.gz", hash = "sha256:35427f6d5594f4acf82d25541438348c26736fa9b3afa2754bcd63cdb99d8e8f", size = 22625, upload-time = "2024-05-31T16:39:21.514Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/1a/ac67760425f2477b1da593b347db66d474130747e6e5285d08c7f2d5884a/zipp-3.19.1-py3-none-any.whl", hash = "sha256:2828e64edb5386ea6a52e7ba7cdb17bb30a73a858f5eb6eb93d8d36f5ea26091", size = 8951, upload-time = "2024-05-31T16:39:19.68Z" }, -] - -[[package]] -name = "zstandard" -version = "0.23.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ed/f6/2ac0287b442160a89d726b17a9184a4c615bb5237db763791a7fd16d9df1/zstandard-0.23.0.tar.gz", hash = "sha256:b2d8c62d08e7255f68f7a740bae85b3c9b8e5466baa9cbf7f57f1cde0ac6bc09", size = 681701, upload-time = "2024-07-15T00:18:06.141Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/80/f1/8386f3f7c10261fe85fbc2c012fdb3d4db793b921c9abcc995d8da1b7a80/zstandard-0.23.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:576856e8594e6649aee06ddbfc738fec6a834f7c85bf7cadd1c53d4a58186ef9", size = 788975, upload-time = "2024-07-15T00:16:16.005Z" }, - { url = "https://files.pythonhosted.org/packages/16/e8/cbf01077550b3e5dc86089035ff8f6fbbb312bc0983757c2d1117ebba242/zstandard-0.23.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:38302b78a850ff82656beaddeb0bb989a0322a8bbb1bf1ab10c17506681d772a", size = 633448, upload-time = "2024-07-15T00:16:17.897Z" }, - { url = "https://files.pythonhosted.org/packages/06/27/4a1b4c267c29a464a161aeb2589aff212b4db653a1d96bffe3598f3f0d22/zstandard-0.23.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d2240ddc86b74966c34554c49d00eaafa8200a18d3a5b6ffbf7da63b11d74ee2", size = 4945269, upload-time = "2024-07-15T00:16:20.136Z" }, - { url = "https://files.pythonhosted.org/packages/7c/64/d99261cc57afd9ae65b707e38045ed8269fbdae73544fd2e4a4d50d0ed83/zstandard-0.23.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2ef230a8fd217a2015bc91b74f6b3b7d6522ba48be29ad4ea0ca3a3775bf7dd5", size = 5306228, upload-time = "2024-07-15T00:16:23.398Z" }, - { url = "https://files.pythonhosted.org/packages/7a/cf/27b74c6f22541f0263016a0fd6369b1b7818941de639215c84e4e94b2a1c/zstandard-0.23.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:774d45b1fac1461f48698a9d4b5fa19a69d47ece02fa469825b442263f04021f", size = 5336891, upload-time = "2024-07-15T00:16:26.391Z" }, - { url = "https://files.pythonhosted.org/packages/fa/18/89ac62eac46b69948bf35fcd90d37103f38722968e2981f752d69081ec4d/zstandard-0.23.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6f77fa49079891a4aab203d0b1744acc85577ed16d767b52fc089d83faf8d8ed", size = 5436310, upload-time = "2024-07-15T00:16:29.018Z" }, - { url = "https://files.pythonhosted.org/packages/a8/a8/5ca5328ee568a873f5118d5b5f70d1f36c6387716efe2e369010289a5738/zstandard-0.23.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ac184f87ff521f4840e6ea0b10c0ec90c6b1dcd0bad2f1e4a9a1b4fa177982ea", size = 4859912, upload-time = "2024-07-15T00:16:31.871Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ca/3781059c95fd0868658b1cf0440edd832b942f84ae60685d0cfdb808bca1/zstandard-0.23.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c363b53e257246a954ebc7c488304b5592b9c53fbe74d03bc1c64dda153fb847", size = 4936946, upload-time = "2024-07-15T00:16:34.593Z" }, - { url = "https://files.pythonhosted.org/packages/ce/11/41a58986f809532742c2b832c53b74ba0e0a5dae7e8ab4642bf5876f35de/zstandard-0.23.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e7792606d606c8df5277c32ccb58f29b9b8603bf83b48639b7aedf6df4fe8171", size = 5466994, upload-time = "2024-07-15T00:16:36.887Z" }, - { url = "https://files.pythonhosted.org/packages/83/e3/97d84fe95edd38d7053af05159465d298c8b20cebe9ccb3d26783faa9094/zstandard-0.23.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a0817825b900fcd43ac5d05b8b3079937073d2b1ff9cf89427590718b70dd840", size = 4848681, upload-time = "2024-07-15T00:16:39.709Z" }, - { url = "https://files.pythonhosted.org/packages/6e/99/cb1e63e931de15c88af26085e3f2d9af9ce53ccafac73b6e48418fd5a6e6/zstandard-0.23.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:9da6bc32faac9a293ddfdcb9108d4b20416219461e4ec64dfea8383cac186690", size = 4694239, upload-time = "2024-07-15T00:16:41.83Z" }, - { url = "https://files.pythonhosted.org/packages/ab/50/b1e703016eebbc6501fc92f34db7b1c68e54e567ef39e6e59cf5fb6f2ec0/zstandard-0.23.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fd7699e8fd9969f455ef2926221e0233f81a2542921471382e77a9e2f2b57f4b", size = 5200149, upload-time = "2024-07-15T00:16:44.287Z" }, - { url = "https://files.pythonhosted.org/packages/aa/e0/932388630aaba70197c78bdb10cce2c91fae01a7e553b76ce85471aec690/zstandard-0.23.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:d477ed829077cd945b01fc3115edd132c47e6540ddcd96ca169facff28173057", size = 5655392, upload-time = "2024-07-15T00:16:46.423Z" }, - { url = "https://files.pythonhosted.org/packages/02/90/2633473864f67a15526324b007a9f96c96f56d5f32ef2a56cc12f9548723/zstandard-0.23.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa6ce8b52c5987b3e34d5674b0ab529a4602b632ebab0a93b07bfb4dfc8f8a33", size = 5191299, upload-time = "2024-07-15T00:16:49.053Z" }, - { url = "https://files.pythonhosted.org/packages/b0/4c/315ca5c32da7e2dc3455f3b2caee5c8c2246074a61aac6ec3378a97b7136/zstandard-0.23.0-cp313-cp313-win32.whl", hash = "sha256:a9b07268d0c3ca5c170a385a0ab9fb7fdd9f5fd866be004c4ea39e44edce47dd", size = 430862, upload-time = "2024-07-15T00:16:51.003Z" }, - { url = "https://files.pythonhosted.org/packages/a2/bf/c6aaba098e2d04781e8f4f7c0ba3c7aa73d00e4c436bcc0cf059a66691d1/zstandard-0.23.0-cp313-cp313-win_amd64.whl", hash = "sha256:f3513916e8c645d0610815c257cbfd3242adfd5c4cfa78be514e5a3ebb42a41b", size = 495578, upload-time = "2024-07-15T00:16:53.135Z" }, -] - -[package.optional-dependencies] -cffi = [ - { name = "cffi", marker = "platform_python_implementation == 'PyPy'" }, -] From 4e1ebb2249b267f46755e5e8a1acabe774d8e7a3 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:11:29 -0500 Subject: [PATCH 30/50] poke --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 96dc2f33..890e868d 100644 --- a/Makefile +++ b/Makefile @@ -17,7 +17,7 @@ export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv .PHONY: fprime-venv fprime-venv: uv ## Create a virtual environment @$(UV) venv fprime-venv --allow-existing - @$(UV) pip install --prerelease=allow --requirement pyproject.toml + @$(UV) pip install --prerelease=allow --requirement requirements.txt ##@ Development From bd100e48de3897c0fb0317f5920d4d66365ffe66 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:12:08 -0500 Subject: [PATCH 31/50] poke --- requirements.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index 93f5a235..79a7f2ce 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ west -lib/fprime/requirements.txt -lib/zephyr-workspace/zephyr/scripts/requirements-base.txt -lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt -lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt +-r lib/fprime/requirements.txt +-r lib/zephyr-workspace/zephyr/scripts/requirements-base.txt +-r lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt +-r lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt From a86f9e35890b288756722323561e7076fc9d0c67 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:14:04 -0500 Subject: [PATCH 32/50] readd pip --- requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/requirements.txt b/requirements.txt index 79a7f2ce..1d8baae1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +pip west -r lib/fprime/requirements.txt From fb1470adb7e9d6f66d9c5d2fe1b6e9e759124b69 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:16:21 -0500 Subject: [PATCH 33/50] poke --- .github/workflows/ci.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 4549dbc6..2d283e81 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -73,9 +73,6 @@ jobs: build-artifacts/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json retention-days: 30 - - name: Minimize uv cache - run: make minimize-uv-cache - integration: runs-on: - integration From b38e8f78cf4b90d2a60b6989ba41d6c160c1c351 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:38:09 -0500 Subject: [PATCH 34/50] Remove zephyr python deps from base requirements file --- .gitignore | 1 - .../west_commands => west-commands}/uv.py | 8 +++++++- requirements.txt | 3 --- west-commands.yml | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) rename lib/{zephyr-workspace/west_commands => west-commands}/uv.py (97%) diff --git a/.gitignore b/.gitignore index 6aa75d79..352a9f89 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ build-fprime-* # Zephyr workspace lib/zephyr-workspace/* -!lib/zephyr-workspace/west_commands/ # Misc /venv/ diff --git a/lib/zephyr-workspace/west_commands/uv.py b/lib/west-commands/uv.py similarity index 97% rename from lib/zephyr-workspace/west_commands/uv.py rename to lib/west-commands/uv.py index 2e27b3c0..04b880ee 100644 --- a/lib/zephyr-workspace/west_commands/uv.py +++ b/lib/west-commands/uv.py @@ -13,7 +13,13 @@ from west.commands import WestCommand sys.path.append( - os.fspath(Path(__file__).parent.parent / "zephyr" / "scripts" / "west_commands") + os.fspath( + Path(__file__).parent.parent + / "zephyr-workspace" + / "zephyr" + / "scripts" + / "west_commands" + ) ) from zephyr_ext_common import ZEPHYR_BASE diff --git a/requirements.txt b/requirements.txt index 1d8baae1..f6c91b4f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,3 @@ pip west -r lib/fprime/requirements.txt --r lib/zephyr-workspace/zephyr/scripts/requirements-base.txt --r lib/zephyr-workspace/zephyr/scripts/requirements-build-test.txt --r lib/zephyr-workspace/zephyr/scripts/requirements-run-test.txt diff --git a/west-commands.yml b/west-commands.yml index 54061a9b..bf4f4e53 100644 --- a/west-commands.yml +++ b/west-commands.yml @@ -1,6 +1,6 @@ # Keep the help strings in sync with the values in the .py files! west-commands: - - file: lib/zephyr-workspace/west_commands/uv.py + - file: lib/west-commands/uv.py commands: - name: uv class: Uv From 9f2ac10122e1a81f24e33c7b05c424af1961ad5b Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:39:20 -0500 Subject: [PATCH 35/50] poke --- .github/workflows/ci.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 2d283e81..b6a683a0 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,9 +18,6 @@ jobs: build: runs-on: deathstar - env: - UV_CACHE_DIR: /tmp/.uv-cache - steps: - uses: actions/checkout@v4 From ccfe50ed4f35a7dfed57e5e9d8d57d0c8dc6c920 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:43:12 -0500 Subject: [PATCH 36/50] Remove changes from submodule target --- Makefile | 4 +--- lib/zephyr-workspace/zephyr | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 890e868d..80df462b 100644 --- a/Makefile +++ b/Makefile @@ -9,9 +9,7 @@ help: ## Display this help. .PHONY: submodules submodules: ## Initialize and update git submodules - @if git submodule | grep -e "^-"; then \ - git submodule update --init --recursive; \ - fi + git submodule update --init --recursive export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv .PHONY: fprime-venv diff --git a/lib/zephyr-workspace/zephyr b/lib/zephyr-workspace/zephyr index 413b789d..4f3d385c 160000 --- a/lib/zephyr-workspace/zephyr +++ b/lib/zephyr-workspace/zephyr @@ -1 +1 @@ -Subproject commit 413b789deb391d3a37d06b463288a5fe765ee57e +Subproject commit 4f3d385c3c084855579f1b48ec984bebc18e25ca From efb023eec6acc05013b13698bd03b7abf518df29 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:44:49 -0500 Subject: [PATCH 37/50] Hide submodule command --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 80df462b..8dbf87e4 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ help: ## Display this help. .PHONY: submodules submodules: ## Initialize and update git submodules - git submodule update --init --recursive + @git submodule update --init --recursive export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv .PHONY: fprime-venv From 43ad343f59d64a4f8242284278d09601ebf76d77 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:46:32 -0500 Subject: [PATCH 38/50] revert zephyr submodule change --- lib/zephyr-workspace/zephyr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/zephyr-workspace/zephyr b/lib/zephyr-workspace/zephyr index 4f3d385c..413b789d 160000 --- a/lib/zephyr-workspace/zephyr +++ b/lib/zephyr-workspace/zephyr @@ -1 +1 @@ -Subproject commit 4f3d385c3c084855579f1b48ec984bebc18e25ca +Subproject commit 413b789deb391d3a37d06b463288a5fe765ee57e From 8f85eb960657674d6acb4303f01f17acd3c01977 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Thu, 9 Oct 2025 01:56:11 -0500 Subject: [PATCH 39/50] target name change --- Makefile | 6 +++--- lib/makelib/zephyr.mk | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 8dbf87e4..f38d2407 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ .PHONY: all -all: submodules fprime-venv zephyr-setup generate-if-needed build +all: submodules fprime-venv zephyr generate-if-needed build .PHONY: help help: ## Display this help. @@ -28,7 +28,7 @@ fmt: pre-commit-install ## Lint and format files @$(UVX) pre-commit run --all-files .PHONY: generate -generate: submodules fprime-venv zephyr-setup ## Generate FPrime-Zephyr Proves Core Reference +generate: submodules fprime-venv zephyr ## Generate FPrime-Zephyr Proves Core Reference @$(UV_RUN) fprime-util generate --force .PHONY: generate-if-needed @@ -37,7 +37,7 @@ generate-if-needed: @test -d $(BUILD_DIR) || $(MAKE) generate .PHONY: build -build: submodules zephyr-setup fprime-venv generate-if-needed ## Build FPrime-Zephyr Proves Core Reference +build: submodules zephyr fprime-venv generate-if-needed ## Build FPrime-Zephyr Proves Core Reference @$(UV_RUN) fprime-util build .PHONY: test-integration diff --git a/lib/makelib/zephyr.mk b/lib/makelib/zephyr.mk index 5d5d3a3c..fa292659 100644 --- a/lib/makelib/zephyr.mk +++ b/lib/makelib/zephyr.mk @@ -6,8 +6,11 @@ WEST ?= $(UV_RUN) west # UVX runs west without the active virtual environment WESTX ?= $(UVX) west -zephyr-setup: zephyr-config zephyr-workspace zephyr-export zephyr-sdk zephyr-python-deps -zephyr-clean: clean-zephyr-config clean-zephyr-workspace clean-zephyr-export clean-zephyr-sdk +.PHONY: zephyr +zephyr: zephyr-config zephyr-workspace zephyr-export zephyr-sdk zephyr-python-deps + +.PHONY: clean-zephyr +clean-zephyr: clean-zephyr-config clean-zephyr-workspace clean-zephyr-export clean-zephyr-sdk .PHONY: zephyr-config zephyr-config: fprime-venv ## Configure west From 7ec0ea1936273e8335d35ecbc55ad8f12049a07f Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 15:34:15 -0500 Subject: [PATCH 40/50] Fix Makefile --- Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index a0fe9329..c27a53e8 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ submodules: ## Initialize and update git submodules export VIRTUAL_ENV ?= $(shell pwd)/fprime-venv .PHONY: fprime-venv fprime-venv: uv ## Create a virtual environment - @$(UV) venv fprime-venv --allow-existing - @$(UV) pip install --prerelease=allow --requirement requirements.txt + @$(UV) venv fprime-venv --allow-existing + @$(UV) pip install --prerelease=allow --requirement requirements.txt patch-gps-package: cp custom_space_data_link.py fprime-venv/lib/python3.13/site-packages/fprime_gds/common/communication/ccsds/space_data_link.py @@ -53,7 +53,7 @@ bootloader: uv echo "RP2350 already in bootloader mode - skipping trigger"; \ else \ echo "RP2350 not in bootloader mode - triggering bootloader"; \ - $(UV) run pytest FprimeZephyrReference/test/bootloader_trigger.py --deployment build-artifacts/zephyr/fprime-zephyr-deployment; \ + $(UV_RUN) pytest FprimeZephyrReference/test/bootloader_trigger.py --deployment build-artifacts/zephyr/fprime-zephyr-deployment; \ fi .PHONY: clean @@ -62,7 +62,7 @@ clean: ## Remove all gitignored files ##@ Operations -GDS_COMMAND ?= $(UV_RUN) run fprime-gds -n --dictionary $(ARTIFACT_DIR)/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json --communication-selection uart --uart-baud 115200 --output-unframed-data +GDS_COMMAND ?= $(UV_RUN) fprime-gds -n --dictionary $(ARTIFACT_DIR)/zephyr/fprime-zephyr-deployment/dict/ReferenceDeploymentTopologyDictionary.json --communication-selection uart --uart-baud 115200 --output-unframed-data ARTIFACT_DIR ?= $(shell pwd)/build-artifacts .PHONY: gds From 98fff6e25ccbda031c1f9fc3c6f9f0e6f852304e Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 15:40:34 -0500 Subject: [PATCH 41/50] Try adding start_gds to all test fixtures --- FprimeZephyrReference/test/int/burnwire_test.py | 2 +- FprimeZephyrReference/test/int/imu_manager_test.py | 2 +- FprimeZephyrReference/test/int/rtc_test.py | 2 +- FprimeZephyrReference/test/int/watchdog_test.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/FprimeZephyrReference/test/int/burnwire_test.py b/FprimeZephyrReference/test/int/burnwire_test.py index 882124b7..9b5bafad 100644 --- a/FprimeZephyrReference/test/int/burnwire_test.py +++ b/FprimeZephyrReference/test/int/burnwire_test.py @@ -11,7 +11,7 @@ @pytest.fixture(autouse=True) -def reset_burnwire(fprime_test_api: IntegrationTestAPI): +def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): """Fixture to stop burnwire and clear histories before/after each test""" # Stop burnwire and clear before test fprime_test_api.clear_histories() diff --git a/FprimeZephyrReference/test/int/imu_manager_test.py b/FprimeZephyrReference/test/int/imu_manager_test.py index 2a84891f..12146542 100644 --- a/FprimeZephyrReference/test/int/imu_manager_test.py +++ b/FprimeZephyrReference/test/int/imu_manager_test.py @@ -10,7 +10,7 @@ @pytest.fixture(autouse=True) -def send_packet(fprime_test_api: IntegrationTestAPI): +def send_packet(fprime_test_api: IntegrationTestAPI, start_gds): """Fixture to clear histories and send the IMU packet before each test""" fprime_test_api.clear_histories() fprime_test_api.send_and_assert_command( diff --git a/FprimeZephyrReference/test/int/rtc_test.py b/FprimeZephyrReference/test/int/rtc_test.py index a16c51ec..0ddd9525 100644 --- a/FprimeZephyrReference/test/int/rtc_test.py +++ b/FprimeZephyrReference/test/int/rtc_test.py @@ -17,7 +17,7 @@ @pytest.fixture(autouse=True) -def set_now_time(fprime_test_api: IntegrationTestAPI): +def set_now_time(fprime_test_api: IntegrationTestAPI, start_gds): """Fixture to set the time to test runner's time after each test""" yield set_time(fprime_test_api) diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index b271d04a..5b64beb2 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -12,7 +12,7 @@ @pytest.fixture(autouse=True) -def ensure_watchdog_running(fprime_test_api: IntegrationTestAPI): +def ensure_watchdog_running(fprime_test_api: IntegrationTestAPI, start_gds): """Fixture to ensure watchdog is started before and after each test""" start_watchdog(fprime_test_api) yield From b05c4f0c663589c0a830f07d3097890e85ff5afd Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 16:00:11 -0500 Subject: [PATCH 42/50] Extend timeouts, look for command completion opcode --- FprimeZephyrReference/test/int/burnwire_test.py | 3 +-- FprimeZephyrReference/test/int/rtc_test.py | 5 +++-- FprimeZephyrReference/test/int/watchdog_test.py | 7 +++---- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/FprimeZephyrReference/test/int/burnwire_test.py b/FprimeZephyrReference/test/int/burnwire_test.py index 9b5bafad..c8ac460c 100644 --- a/FprimeZephyrReference/test/int/burnwire_test.py +++ b/FprimeZephyrReference/test/int/burnwire_test.py @@ -14,15 +14,14 @@ def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): """Fixture to stop burnwire and clear histories before/after each test""" # Stop burnwire and clear before test - fprime_test_api.clear_histories() stop_burnwire(fprime_test_api) yield # Clear again after test to prevent residue - fprime_test_api.clear_histories() stop_burnwire(fprime_test_api) def stop_burnwire(fprime_test_api: IntegrationTestAPI): + fprime_test_api.clear_histories() fprime_test_api.send_and_assert_command( "ReferenceDeployment.burnwire.STOP_BURNWIRE" ) diff --git a/FprimeZephyrReference/test/int/rtc_test.py b/FprimeZephyrReference/test/int/rtc_test.py index 0ddd9525..396259af 100644 --- a/FprimeZephyrReference/test/int/rtc_test.py +++ b/FprimeZephyrReference/test/int/rtc_test.py @@ -38,14 +38,15 @@ def set_time(fprime_test_api: IntegrationTestAPI, dt: datetime = None): Second=dt.second, ) time_data_str = json.dumps(time_data) + fprime_test_api.clear_histories() fprime_test_api.send_and_assert_command( "ReferenceDeployment.rtcManager.TIME_SET", [ time_data_str, ], - max_delay=2, + max_delay=5, ) - fprime_test_api.assert_event("ReferenceDeployment.rtcManager.TimeSet", timeout=2) + fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeCompleted", timeout=10) def test_01_time_set(fprime_test_api: IntegrationTestAPI, start_gds): diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index 5b64beb2..dc90d5d4 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -21,12 +21,11 @@ def ensure_watchdog_running(fprime_test_api: IntegrationTestAPI, start_gds): def start_watchdog(fprime_test_api: IntegrationTestAPI): """Helper function to start the watchdog""" + fprime_test_api.clear_histories() fprime_test_api.send_and_assert_command( - "ReferenceDeployment.watchdog.START_WATCHDOG", max_delay=2 - ) - fprime_test_api.assert_event( - "ReferenceDeployment.watchdog.WatchdogStart", timeout=2 + "ReferenceDeployment.watchdog.START_WATCHDOG", max_delay=5 ) + fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeCompleted", timeout=10) def get_watchdog_transitions(fprime_test_api: IntegrationTestAPI) -> int: From 23176daae5540c7d98e15450d9075513ae73d4ad Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 16:07:03 -0500 Subject: [PATCH 43/50] Increase timeout --- FprimeZephyrReference/test/int/watchdog_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index dc90d5d4..1cfd1dc6 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -32,7 +32,7 @@ def get_watchdog_transitions(fprime_test_api: IntegrationTestAPI) -> int: """Helper function to request packet and get fresh WatchdogTransitions telemetry""" fprime_test_api.clear_histories() fprime_test_api.send_and_assert_command( - "CdhCore.tlmSend.SEND_PKT", ["5"], max_delay=2 + "CdhCore.tlmSend.SEND_PKT", ["5"], max_delay=10 ) result: ChData = fprime_test_api.assert_telemetry( "ReferenceDeployment.watchdog.WatchdogTransitions", start="NOW", timeout=3 From 907e091cc48e1c782419d27abeab161e93184df1 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 16:22:05 -0500 Subject: [PATCH 44/50] Try retries on sending commands --- .../Components/Burnwire/Burnwire.cpp | 4 ++-- .../test/int/burnwire_test.py | 18 +++++++++--------- FprimeZephyrReference/test/int/common.py | 19 +++++++++++++++++++ .../test/int/imu_manager_test.py | 8 +++++--- FprimeZephyrReference/test/int/rtc_test.py | 6 +++--- .../test/int/watchdog_test.py | 19 ++++++++++--------- 6 files changed, 48 insertions(+), 26 deletions(-) create mode 100644 FprimeZephyrReference/test/int/common.py diff --git a/FprimeZephyrReference/Components/Burnwire/Burnwire.cpp b/FprimeZephyrReference/Components/Burnwire/Burnwire.cpp index a4536519..581678c6 100644 --- a/FprimeZephyrReference/Components/Burnwire/Burnwire.cpp +++ b/FprimeZephyrReference/Components/Burnwire/Burnwire.cpp @@ -72,13 +72,13 @@ void Burnwire ::schedIn_handler(FwIndexType portNum, U32 context) { // ---------------------------------------------------------------------- void Burnwire ::START_BURNWIRE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) { - this->cmdResponse_out(opCode, cmdSeq, Fw::CmdResponse::OK); this->startBurn(); + this->cmdResponse_out(opCode, cmdSeq, Fw::CmdResponse::OK); } void Burnwire ::STOP_BURNWIRE_cmdHandler(FwOpcodeType opCode, U32 cmdSeq) { - this->cmdResponse_out(opCode, cmdSeq, Fw::CmdResponse::OK); this->stopBurn(); + this->cmdResponse_out(opCode, cmdSeq, Fw::CmdResponse::OK); } } // namespace Components diff --git a/FprimeZephyrReference/test/int/burnwire_test.py b/FprimeZephyrReference/test/int/burnwire_test.py index c8ac460c..e8eba3cf 100644 --- a/FprimeZephyrReference/test/int/burnwire_test.py +++ b/FprimeZephyrReference/test/int/burnwire_test.py @@ -5,6 +5,7 @@ # """ import pytest +from common import proves_send_and_assert_command from fprime_gds.common.testing_fw.api import IntegrationTestAPI # Constants @@ -21,9 +22,8 @@ def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): def stop_burnwire(fprime_test_api: IntegrationTestAPI): - fprime_test_api.clear_histories() - fprime_test_api.send_and_assert_command( - "ReferenceDeployment.burnwire.STOP_BURNWIRE" + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.burnwire.STOP_BURNWIRE" ) fprime_test_api.assert_event( @@ -42,8 +42,8 @@ def test_01_start_and_stop_burnwire(fprime_test_api: IntegrationTestAPI, start_g """Test that burnwire starts and stops as expected""" # Start burnwire - fprime_test_api.send_and_assert_command( - "ReferenceDeployment.burnwire.START_BURNWIRE" + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.burnwire.START_BURNWIRE" ) # Wait for SetBurnwireState = ON @@ -68,8 +68,8 @@ def test_02_manual_stop_before_timeout(fprime_test_api: IntegrationTestAPI, star """Test that burnwire stops manually before the safety timer expires""" # Start burnwire - fprime_test_api.send_and_assert_command( - "ReferenceDeployment.burnwire.START_BURNWIRE" + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.burnwire.START_BURNWIRE" ) # Confirm Burnwire turned ON @@ -78,8 +78,8 @@ def test_02_manual_stop_before_timeout(fprime_test_api: IntegrationTestAPI, star ) # # Stop burnwire before safety timer triggers - fprime_test_api.send_and_assert_command( - "ReferenceDeployment.burnwire.STOP_BURNWIRE" + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.burnwire.STOP_BURNWIRE" ) # Confirm Burnwire turned OFF diff --git a/FprimeZephyrReference/test/int/common.py b/FprimeZephyrReference/test/int/common.py new file mode 100644 index 00000000..a6364e32 --- /dev/null +++ b/FprimeZephyrReference/test/int/common.py @@ -0,0 +1,19 @@ +from fprime_gds.common.testing_fw.api import IntegrationTestAPI + + +def proves_send_and_assert_command( + fprime_test_api: IntegrationTestAPI, command: str, args: list[str] = [] +): + fprime_test_api.clear_histories() + + for attempt in range(3): + try: + fprime_test_api.send_and_assert_command( + command, + args, + max_delay=10, + ) + break + except AssertionError: + if attempt == 2: + raise diff --git a/FprimeZephyrReference/test/int/imu_manager_test.py b/FprimeZephyrReference/test/int/imu_manager_test.py index 12146542..07271276 100644 --- a/FprimeZephyrReference/test/int/imu_manager_test.py +++ b/FprimeZephyrReference/test/int/imu_manager_test.py @@ -5,6 +5,7 @@ """ import pytest +from common import proves_send_and_assert_command from fprime_gds.common.data_types.ch_data import ChData from fprime_gds.common.testing_fw.api import IntegrationTestAPI @@ -12,9 +13,10 @@ @pytest.fixture(autouse=True) def send_packet(fprime_test_api: IntegrationTestAPI, start_gds): """Fixture to clear histories and send the IMU packet before each test""" - fprime_test_api.clear_histories() - fprime_test_api.send_and_assert_command( - "CdhCore.tlmSend.SEND_PKT", ["6"], max_delay=2 + proves_send_and_assert_command( + fprime_test_api, + "CdhCore.tlmSend.SEND_PKT", + ["6"], ) diff --git a/FprimeZephyrReference/test/int/rtc_test.py b/FprimeZephyrReference/test/int/rtc_test.py index 396259af..3619e457 100644 --- a/FprimeZephyrReference/test/int/rtc_test.py +++ b/FprimeZephyrReference/test/int/rtc_test.py @@ -9,6 +9,7 @@ from datetime import datetime, timezone import pytest +from common import proves_send_and_assert_command from fprime.common.models.serialize.numerical_types import U32Type from fprime.common.models.serialize.time_type import TimeType from fprime_gds.common.data_types.ch_data import ChData @@ -38,13 +39,12 @@ def set_time(fprime_test_api: IntegrationTestAPI, dt: datetime = None): Second=dt.second, ) time_data_str = json.dumps(time_data) - fprime_test_api.clear_histories() - fprime_test_api.send_and_assert_command( + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.rtcManager.TIME_SET", [ time_data_str, ], - max_delay=5, ) fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeCompleted", timeout=10) diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index 1cfd1dc6..0508e096 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -7,6 +7,7 @@ import time import pytest +from common import proves_send_and_assert_command from fprime_gds.common.data_types.ch_data import ChData from fprime_gds.common.testing_fw.api import IntegrationTestAPI @@ -21,18 +22,19 @@ def ensure_watchdog_running(fprime_test_api: IntegrationTestAPI, start_gds): def start_watchdog(fprime_test_api: IntegrationTestAPI): """Helper function to start the watchdog""" - fprime_test_api.clear_histories() - fprime_test_api.send_and_assert_command( - "ReferenceDeployment.watchdog.START_WATCHDOG", max_delay=5 + proves_send_and_assert_command( + fprime_test_api, + "ReferenceDeployment.watchdog.START_WATCHDOG", ) fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeCompleted", timeout=10) def get_watchdog_transitions(fprime_test_api: IntegrationTestAPI) -> int: """Helper function to request packet and get fresh WatchdogTransitions telemetry""" - fprime_test_api.clear_histories() - fprime_test_api.send_and_assert_command( - "CdhCore.tlmSend.SEND_PKT", ["5"], max_delay=10 + proves_send_and_assert_command( + fprime_test_api, + "CdhCore.tlmSend.SEND_PKT", + ["5"], ) result: ChData = fprime_test_api.assert_telemetry( "ReferenceDeployment.watchdog.WatchdogTransitions", start="NOW", timeout=3 @@ -63,11 +65,10 @@ def test_03_stop_watchdog_command(fprime_test_api: IntegrationTestAPI, start_gds Test STOP_WATCHDOG command sends and emits WatchdogStop event and WatchdogTransitions stops incrementing """ - fprime_test_api.clear_histories() # Send stop command - fprime_test_api.send_and_assert_command( - "ReferenceDeployment.watchdog.STOP_WATCHDOG", max_delay=2 + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.watchdog.STOP_WATCHDOG", max_delay=2 ) # Check for watchdog stop event From 8c7cb14ebd27b819b63739c945489ac2292ae710 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 16:24:57 -0500 Subject: [PATCH 45/50] Fix send and assert command --- FprimeZephyrReference/test/int/watchdog_test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index 0508e096..353a0b59 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -68,7 +68,8 @@ def test_03_stop_watchdog_command(fprime_test_api: IntegrationTestAPI, start_gds # Send stop command proves_send_and_assert_command( - fprime_test_api, "ReferenceDeployment.watchdog.STOP_WATCHDOG", max_delay=2 + fprime_test_api, + "ReferenceDeployment.watchdog.STOP_WATCHDOG", ) # Check for watchdog stop event From eeecf43d7a05937e62f03996f66239a2d21706ab Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 17:15:32 -0500 Subject: [PATCH 46/50] Add interogate and comments for all python code --- .pre-commit-config.yaml | 11 +++++++++++ .../test/bootloader_trigger.py | 18 ++++++++++++++++-- .../test/int/burnwire_test.py | 14 +++++--------- FprimeZephyrReference/test/int/common.py | 15 +++++++++++++++ FprimeZephyrReference/test/int/conftest.py | 10 ++++++++++ circuit-python-lora-passthrough/boot.py | 6 ++++++ lib/west-commands/uv.py | 11 +++++++++++ 7 files changed, 74 insertions(+), 11 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 794b0d8d..a9a96819 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -33,3 +33,14 @@ repos: - id: ruff-check args: [--fix, --select, I] # import sorting - id: ruff-format + +- repo: https://github.com/econchick/interrogate/ + rev: 1.7.0 + hooks: + - id: interrogate + args: + - --ignore-init-method + - --omit-covered-files + - --fail-under=100 + - -vv + - --color diff --git a/FprimeZephyrReference/test/bootloader_trigger.py b/FprimeZephyrReference/test/bootloader_trigger.py index c1e9c200..57765680 100644 --- a/FprimeZephyrReference/test/bootloader_trigger.py +++ b/FprimeZephyrReference/test/bootloader_trigger.py @@ -1,13 +1,26 @@ +""" +bootloader_trigger.py: + +This module is responsible for sending the command to trigger the bootloader mode +on the PROVES hardware during integration tests. Once in bootloader mode, the device +can accept firmware updates. +""" + import os import subprocess import time import pytest from fprime_gds.common.testing_fw.api import IntegrationTestAPI +from int.common import proves_send_and_assert_command @pytest.fixture(scope="session", autouse=True) def start_gds(fprime_test_api_session: IntegrationTestAPI): + """Fixture to start GDS + + GDS is used to send the bootloader commands. + """ process = subprocess.Popen(["make", "gds-integration"], cwd=os.getcwd()) gds_working = False @@ -28,6 +41,7 @@ def start_gds(fprime_test_api_session: IntegrationTestAPI): def test_bootloader(fprime_test_api: IntegrationTestAPI): - fprime_test_api.send_command( - "ReferenceDeployment.bootloaderTrigger.TRIGGER_BOOTLOADER" + """Trigger bootloader mode on PROVES hardware""" + proves_send_and_assert_command( + fprime_test_api, "ReferenceDeployment.bootloaderTrigger.TRIGGER_BOOTLOADER" ) diff --git a/FprimeZephyrReference/test/int/burnwire_test.py b/FprimeZephyrReference/test/int/burnwire_test.py index e8eba3cf..c541cfc8 100644 --- a/FprimeZephyrReference/test/int/burnwire_test.py +++ b/FprimeZephyrReference/test/int/burnwire_test.py @@ -1,15 +1,13 @@ -# """ -# burnwire_test.py: +""" +burnwire_test.py: -# Integration tests for the Burnwire component. -# """ +Integration tests for the Burnwire component. +""" import pytest from common import proves_send_and_assert_command from fprime_gds.common.testing_fw.api import IntegrationTestAPI -# Constants - @pytest.fixture(autouse=True) def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): @@ -22,6 +20,7 @@ def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): def stop_burnwire(fprime_test_api: IntegrationTestAPI): + """Stop the burnwire and clear histories""" proves_send_and_assert_command( fprime_test_api, "ReferenceDeployment.burnwire.STOP_BURNWIRE" ) @@ -34,9 +33,6 @@ def stop_burnwire(fprime_test_api: IntegrationTestAPI): "ReferenceDeployment.burnwire.BurnwireEndCount", timeout=2 ) - received_events = fprime_test_api.get_event_subhistory() - print(f"Received events: {received_events}") - def test_01_start_and_stop_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): """Test that burnwire starts and stops as expected""" diff --git a/FprimeZephyrReference/test/int/common.py b/FprimeZephyrReference/test/int/common.py index a6364e32..cbf4ad35 100644 --- a/FprimeZephyrReference/test/int/common.py +++ b/FprimeZephyrReference/test/int/common.py @@ -1,9 +1,24 @@ +""" +common.py: + +This module provides a helper functions for sending commands and asserting their completion +in integration tests for PROVES microcontroller hardware, accommodating slower response times. +""" + from fprime_gds.common.testing_fw.api import IntegrationTestAPI def proves_send_and_assert_command( fprime_test_api: IntegrationTestAPI, command: str, args: list[str] = [] ): + """Send command and assert completion + + PROVES microcontroller hardware responds more slowly than typical FPrime + hardware which use microprocessors. As a result, some commands may + take longer to complete. This function clears histories before sending + the command, sets a longer timeout for command completion, and retries + up to 3 times if command assertion fails. + """ fprime_test_api.clear_histories() for attempt in range(3): diff --git a/FprimeZephyrReference/test/int/conftest.py b/FprimeZephyrReference/test/int/conftest.py index bc8d891c..fb1f493c 100644 --- a/FprimeZephyrReference/test/int/conftest.py +++ b/FprimeZephyrReference/test/int/conftest.py @@ -1,3 +1,9 @@ +""" +conftest.py: + +Pytest configuration for integration tests. +""" + import os import signal import subprocess @@ -9,6 +15,10 @@ @pytest.fixture(scope="session") def start_gds(fprime_test_api_session: IntegrationTestAPI): + """Fixture to start GDS before tests and stop after tests + + GDS is used to send commands and receive telemetry/events. + """ pro = subprocess.Popen( ["make", "gds-integration"], cwd=os.getcwd(), diff --git a/circuit-python-lora-passthrough/boot.py b/circuit-python-lora-passthrough/boot.py index 6776ff30..609f9096 100644 --- a/circuit-python-lora-passthrough/boot.py +++ b/circuit-python-lora-passthrough/boot.py @@ -1,3 +1,9 @@ +""" +boot.py + +TODO(nateinaction): I don't know what this file is for yet. +""" + import usb_cdc usb_cdc.enable(console=True, data=True) diff --git a/lib/west-commands/uv.py b/lib/west-commands/uv.py index 04b880ee..44e1be0e 100644 --- a/lib/west-commands/uv.py +++ b/lib/west-commands/uv.py @@ -1,6 +1,11 @@ # Copyright (c) 2024 Basalte bv # # SPDX-License-Identifier: Apache-2.0 +""" +uv.py + +West command to manage packages for Zephyr and its modules using UV. +""" import argparse import os @@ -28,10 +33,13 @@ def in_venv() -> bool: + """Check if we are running inside a virtual environment.""" return sys.prefix != sys.base_prefix class Uv(WestCommand): + """Provide interface to use UV through Zephyr's west build tool.""" + def __init__(self): super().__init__( "uv", @@ -41,6 +49,7 @@ def __init__(self): ) def do_add_parser(self, parser_adder): + """Add argument parser for this command.""" parser = parser_adder.add_parser( self.name, help=self.help, @@ -116,6 +125,7 @@ def do_add_parser(self, parser_adder): return parser def do_run(self, args, unknown): + """Execute the command.""" if len(unknown) > 0 and unknown[0] != "--": self.die( f'Unknown argument "{unknown[0]}"; ' @@ -140,6 +150,7 @@ def do_run(self, args, unknown): self.die(f'Unsupported package manager: "{args.manager}"') def do_run_pip(self, args, manager_args): + """Execute the uv pip install subcommand.""" requirements = [] if not args.modules or "zephyr" in args.modules: From fa3cf9a6a220b75e1f65f85fca70a8fe368cbb1a Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 17:35:16 -0500 Subject: [PATCH 47/50] Fix bootloader trigger --- FprimeZephyrReference/test/bootloader_trigger.py | 8 +++++--- FprimeZephyrReference/test/int/rtc_test.py | 1 - FprimeZephyrReference/test/int/watchdog_test.py | 1 - 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/FprimeZephyrReference/test/bootloader_trigger.py b/FprimeZephyrReference/test/bootloader_trigger.py index 57765680..0860f04f 100644 --- a/FprimeZephyrReference/test/bootloader_trigger.py +++ b/FprimeZephyrReference/test/bootloader_trigger.py @@ -12,7 +12,6 @@ import pytest from fprime_gds.common.testing_fw.api import IntegrationTestAPI -from int.common import proves_send_and_assert_command @pytest.fixture(scope="session", autouse=True) @@ -42,6 +41,9 @@ def start_gds(fprime_test_api_session: IntegrationTestAPI): def test_bootloader(fprime_test_api: IntegrationTestAPI): """Trigger bootloader mode on PROVES hardware""" - proves_send_and_assert_command( - fprime_test_api, "ReferenceDeployment.bootloaderTrigger.TRIGGER_BOOTLOADER" + # Don't use proves_send_and_assert_command here because we don't expect + # a response from the bootloader trigger command. The device will reboot + # into bootloader mode and may not send a command completion event. + fprime_test_api.send_and_assert_command( + "ReferenceDeployment.bootloaderTrigger.TRIGGER_BOOTLOADER" ) diff --git a/FprimeZephyrReference/test/int/rtc_test.py b/FprimeZephyrReference/test/int/rtc_test.py index 3619e457..e9940f8e 100644 --- a/FprimeZephyrReference/test/int/rtc_test.py +++ b/FprimeZephyrReference/test/int/rtc_test.py @@ -46,7 +46,6 @@ def set_time(fprime_test_api: IntegrationTestAPI, dt: datetime = None): time_data_str, ], ) - fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeCompleted", timeout=10) def test_01_time_set(fprime_test_api: IntegrationTestAPI, start_gds): diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index 353a0b59..c3306835 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -26,7 +26,6 @@ def start_watchdog(fprime_test_api: IntegrationTestAPI): fprime_test_api, "ReferenceDeployment.watchdog.START_WATCHDOG", ) - fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeCompleted", timeout=10) def get_watchdog_transitions(fprime_test_api: IntegrationTestAPI) -> int: From c66f1e5fcc84b07d0bf294315c7edb89d904ba7b Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 18:18:21 -0500 Subject: [PATCH 48/50] DRY up tests, use event predicates to simplify rtc test --- .../test/bootloader_trigger.py | 3 +- .../test/int/burnwire_test.py | 54 ++++---------- FprimeZephyrReference/test/int/common.py | 16 +++-- FprimeZephyrReference/test/int/conftest.py | 3 +- .../test/int/imu_manager_test.py | 11 +-- FprimeZephyrReference/test/int/rtc_test.py | 70 +++++++------------ .../test/int/watchdog_test.py | 8 ++- 7 files changed, 67 insertions(+), 98 deletions(-) diff --git a/FprimeZephyrReference/test/bootloader_trigger.py b/FprimeZephyrReference/test/bootloader_trigger.py index 0860f04f..80d45c4f 100644 --- a/FprimeZephyrReference/test/bootloader_trigger.py +++ b/FprimeZephyrReference/test/bootloader_trigger.py @@ -12,6 +12,7 @@ import pytest from fprime_gds.common.testing_fw.api import IntegrationTestAPI +from int.wdk import cmdDispatch @pytest.fixture(scope="session", autouse=True) @@ -27,7 +28,7 @@ def start_gds(fprime_test_api_session: IntegrationTestAPI): while time.time() < timeout_time: try: fprime_test_api_session.send_and_assert_command( - command="CdhCore.cmdDisp.CMD_NO_OP" + command=f"{cmdDispatch}.CMD_NO_OP" ) gds_working = True break diff --git a/FprimeZephyrReference/test/int/burnwire_test.py b/FprimeZephyrReference/test/int/burnwire_test.py index c541cfc8..68e6808d 100644 --- a/FprimeZephyrReference/test/int/burnwire_test.py +++ b/FprimeZephyrReference/test/int/burnwire_test.py @@ -8,6 +8,8 @@ from common import proves_send_and_assert_command from fprime_gds.common.testing_fw.api import IntegrationTestAPI +burnwire = "ReferenceDeployment.burnwire" + @pytest.fixture(autouse=True) def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): @@ -21,68 +23,42 @@ def reset_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): def stop_burnwire(fprime_test_api: IntegrationTestAPI): """Stop the burnwire and clear histories""" - proves_send_and_assert_command( - fprime_test_api, "ReferenceDeployment.burnwire.STOP_BURNWIRE" - ) + proves_send_and_assert_command(fprime_test_api, f"{burnwire}.STOP_BURNWIRE") - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.SetBurnwireState", "OFF", timeout=10 - ) + fprime_test_api.assert_event(f"{burnwire}.SetBurnwireState", "OFF", timeout=10) - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.BurnwireEndCount", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.BurnwireEndCount", timeout=2) def test_01_start_and_stop_burnwire(fprime_test_api: IntegrationTestAPI, start_gds): """Test that burnwire starts and stops as expected""" # Start burnwire - proves_send_and_assert_command( - fprime_test_api, "ReferenceDeployment.burnwire.START_BURNWIRE" - ) + proves_send_and_assert_command(fprime_test_api, f"{burnwire}.START_BURNWIRE") # Wait for SetBurnwireState = ON - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.SetBurnwireState", "ON", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.SetBurnwireState", "ON", timeout=2) - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.SafetyTimerState", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.SafetyTimerState", timeout=2) - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.SetBurnwireState", "OFF", timeout=10 - ) + fprime_test_api.assert_event(f"{burnwire}.SetBurnwireState", "OFF", timeout=10) - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.BurnwireEndCount", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.BurnwireEndCount", timeout=2) def test_02_manual_stop_before_timeout(fprime_test_api: IntegrationTestAPI, start_gds): """Test that burnwire stops manually before the safety timer expires""" # Start burnwire - proves_send_and_assert_command( - fprime_test_api, "ReferenceDeployment.burnwire.START_BURNWIRE" - ) + proves_send_and_assert_command(fprime_test_api, f"{burnwire}.START_BURNWIRE") # Confirm Burnwire turned ON - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.SetBurnwireState", "ON", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.SetBurnwireState", "ON", timeout=2) # # Stop burnwire before safety timer triggers - proves_send_and_assert_command( - fprime_test_api, "ReferenceDeployment.burnwire.STOP_BURNWIRE" - ) + proves_send_and_assert_command(fprime_test_api, f"{burnwire}.STOP_BURNWIRE") # Confirm Burnwire turned OFF - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.SetBurnwireState", "OFF", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.SetBurnwireState", "OFF", timeout=2) - fprime_test_api.assert_event( - "ReferenceDeployment.burnwire.BurnwireEndCount", timeout=2 - ) + fprime_test_api.assert_event(f"{burnwire}.BurnwireEndCount", timeout=2) diff --git a/FprimeZephyrReference/test/int/common.py b/FprimeZephyrReference/test/int/common.py index cbf4ad35..a16a583e 100644 --- a/FprimeZephyrReference/test/int/common.py +++ b/FprimeZephyrReference/test/int/common.py @@ -1,15 +1,21 @@ """ common.py: -This module provides a helper functions for sending commands and asserting their completion -in integration tests for PROVES microcontroller hardware, accommodating slower response times. +This module provides a functions and constants shared by +integration tests for PROVES microcontroller hardware. """ from fprime_gds.common.testing_fw.api import IntegrationTestAPI +from fprime_gds.common.testing_fw.predicates import event_predicate + +cmdDispatch = "CdhCore.cmdDisp" def proves_send_and_assert_command( - fprime_test_api: IntegrationTestAPI, command: str, args: list[str] = [] + fprime_test_api: IntegrationTestAPI, + command: str, + args: list[str] = [], + events: list[event_predicate] = [], ): """Send command and assert completion @@ -26,7 +32,9 @@ def proves_send_and_assert_command( fprime_test_api.send_and_assert_command( command, args, - max_delay=10, + timeout=5, + max_delay=5, + events=events, ) break except AssertionError: diff --git a/FprimeZephyrReference/test/int/conftest.py b/FprimeZephyrReference/test/int/conftest.py index fb1f493c..6b1b8540 100644 --- a/FprimeZephyrReference/test/int/conftest.py +++ b/FprimeZephyrReference/test/int/conftest.py @@ -10,6 +10,7 @@ import time import pytest +from common import cmdDispatch from fprime_gds.common.testing_fw.api import IntegrationTestAPI @@ -31,7 +32,7 @@ def start_gds(fprime_test_api_session: IntegrationTestAPI): while time.time() < timeout_time: try: fprime_test_api_session.send_and_assert_command( - command="CdhCore.cmdDisp.CMD_NO_OP" + command=f"{cmdDispatch}.CMD_NO_OP" ) gds_working = True break diff --git a/FprimeZephyrReference/test/int/imu_manager_test.py b/FprimeZephyrReference/test/int/imu_manager_test.py index 07271276..d4db21bf 100644 --- a/FprimeZephyrReference/test/int/imu_manager_test.py +++ b/FprimeZephyrReference/test/int/imu_manager_test.py @@ -9,6 +9,9 @@ from fprime_gds.common.data_types.ch_data import ChData from fprime_gds.common.testing_fw.api import IntegrationTestAPI +lsm6dsoManager = "ReferenceDeployment.lsm6dsoManager" +lis2mdlManager = "ReferenceDeployment.lis2mdlManager" + @pytest.fixture(autouse=True) def send_packet(fprime_test_api: IntegrationTestAPI, start_gds): @@ -23,7 +26,7 @@ def send_packet(fprime_test_api: IntegrationTestAPI, start_gds): def test_01_acceleration_telemetry(fprime_test_api: IntegrationTestAPI, start_gds): """Test that we can get Acceleration telemetry""" result: ChData = fprime_test_api.assert_telemetry( - "ReferenceDeployment.lsm6dsoManager.Acceleration", start="NOW", timeout=3 + f"{lsm6dsoManager}.Acceleration", start="NOW", timeout=3 ) reading: dict[float] = result.get_val() @@ -35,7 +38,7 @@ def test_01_acceleration_telemetry(fprime_test_api: IntegrationTestAPI, start_gd def test_02_angular_velocity_telemetry(fprime_test_api: IntegrationTestAPI, start_gds): """Test that we can get AngularVelocity telemetry""" result: ChData = fprime_test_api.assert_telemetry( - "ReferenceDeployment.lsm6dsoManager.AngularVelocity", start="NOW", timeout=3 + f"{lsm6dsoManager}.AngularVelocity", start="NOW", timeout=3 ) reading: dict[float] = result.get_val() @@ -47,7 +50,7 @@ def test_02_angular_velocity_telemetry(fprime_test_api: IntegrationTestAPI, star def test_03_temperature_telemetry(fprime_test_api: IntegrationTestAPI, start_gds): """Test that we can get Temperature telemetry""" result: ChData = fprime_test_api.assert_telemetry( - "ReferenceDeployment.lsm6dsoManager.Temperature", start="NOW", timeout=3 + f"{lsm6dsoManager}.Temperature", start="NOW", timeout=3 ) reading: int = result.get_val() @@ -57,7 +60,7 @@ def test_03_temperature_telemetry(fprime_test_api: IntegrationTestAPI, start_gds def test_04_magnetic_field_telemetry(fprime_test_api: IntegrationTestAPI, start_gds): """Test that we can get MagneticField telemetry""" result: ChData = fprime_test_api.assert_telemetry( - "ReferenceDeployment.lis2mdlManager.MagneticField", start="NOW", timeout=3 + f"{lis2mdlManager}.MagneticField", start="NOW", timeout=3 ) reading: dict[float] = result.get_val() diff --git a/FprimeZephyrReference/test/int/rtc_test.py b/FprimeZephyrReference/test/int/rtc_test.py index e9940f8e..76ef3e85 100644 --- a/FprimeZephyrReference/test/int/rtc_test.py +++ b/FprimeZephyrReference/test/int/rtc_test.py @@ -9,12 +9,15 @@ from datetime import datetime, timezone import pytest -from common import proves_send_and_assert_command +from common import cmdDispatch, proves_send_and_assert_command from fprime.common.models.serialize.numerical_types import U32Type from fprime.common.models.serialize.time_type import TimeType from fprime_gds.common.data_types.ch_data import ChData from fprime_gds.common.data_types.event_data import EventData from fprime_gds.common.testing_fw.api import IntegrationTestAPI +from fprime_gds.common.testing_fw.predicates import event_predicate + +rtcManager = "ReferenceDeployment.rtcManager" @pytest.fixture(autouse=True) @@ -41,7 +44,7 @@ def set_time(fprime_test_api: IntegrationTestAPI, dt: datetime = None): time_data_str = json.dumps(time_data) proves_send_and_assert_command( fprime_test_api, - "ReferenceDeployment.rtcManager.TIME_SET", + f"{rtcManager}.TIME_SET", [ time_data_str, ], @@ -56,9 +59,7 @@ def test_01_time_set(fprime_test_api: IntegrationTestAPI, start_gds): set_time(fprime_test_api, curiosity_landing) # Fetch event data - result: EventData = fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.TimeSet", timeout=2 - ) + result: EventData = fprime_test_api.assert_event(f"{rtcManager}.TimeSet", timeout=2) # Fetch previously set time from event args event_previous_time_arg: U32Type = result.args[0] @@ -83,9 +84,7 @@ def test_01_time_set(fprime_test_api: IntegrationTestAPI, start_gds): pytest.approx(event_time, abs=30) == curiosity_landing # Fetch event data - result: EventData = fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.TimeSet", timeout=2 - ) + result: EventData = fprime_test_api.assert_event(f"{rtcManager}.TimeSet", timeout=2) # Assert time is within 30 seconds of now pytest.approx(event_time, abs=30) == datetime.now(timezone.utc) @@ -96,7 +95,7 @@ def test_02_time_incrementing(fprime_test_api: IntegrationTestAPI, start_gds): # Fetch initial time result: ChData = fprime_test_api.assert_telemetry( - "CdhCore.cmdDisp.CommandsDispatched", timeout=3 + f"{cmdDispatch}.CommandsDispatched", timeout=3 ) # Convert FPrime time to datetime @@ -109,7 +108,7 @@ def test_02_time_incrementing(fprime_test_api: IntegrationTestAPI, start_gds): # Fetch updated time result: ChData = fprime_test_api.assert_telemetry( - "CdhCore.cmdDisp.CommandsDispatched", timeout=3 + f"{cmdDispatch}.CommandsDispatched", timeout=3 ) # Convert FPrime time to datetime @@ -125,6 +124,19 @@ def test_02_time_incrementing(fprime_test_api: IntegrationTestAPI, start_gds): def test_03_time_not_set_event(fprime_test_api: IntegrationTestAPI, start_gds): """Test that a TimeNotSet event is emitted when setting time with invalid data""" + # List of events we expect to see + events: list[event_predicate] = [ + fprime_test_api.get_event_pred(f"{rtcManager}.YearValidationFailed"), + fprime_test_api.get_event_pred(f"{rtcManager}.MonthValidationFailed"), + fprime_test_api.get_event_pred(f"{rtcManager}.DayValidationFailed"), + fprime_test_api.get_event_pred(f"{rtcManager}.HourValidationFailed"), + fprime_test_api.get_event_pred(f"{rtcManager}.MinuteValidationFailed"), + fprime_test_api.get_event_pred(f"{rtcManager}.SecondValidationFailed"), + fprime_test_api.get_event_pred(f"{rtcManager}.TimeNotSet"), + fprime_test_api.get_event_pred(f"{cmdDispatch}.OpCodeDispatched"), + fprime_test_api.get_event_pred(f"{cmdDispatch}.OpCodeError"), + ] + # Clear histories fprime_test_api.clear_histories() @@ -138,40 +150,6 @@ def test_03_time_not_set_event(fprime_test_api: IntegrationTestAPI, start_gds): Second=12345, ) time_data_str = json.dumps(time_data) - fprime_test_api.send_command( - "ReferenceDeployment.rtcManager.TIME_SET", - [ - time_data_str, - ], - ) - - # Assert time not set event is emitted - fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.YearValidationFailed", timeout=2 - ) - - fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.MonthValidationFailed", timeout=2 + fprime_test_api.send_and_assert_event( + f"{rtcManager}.TIME_SET", [time_data_str], events, timeout=10 ) - - fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.DayValidationFailed", timeout=2 - ) - - fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.HourValidationFailed", timeout=2 - ) - - fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.MinuteValidationFailed", timeout=2 - ) - - fprime_test_api.assert_event( - "ReferenceDeployment.rtcManager.SecondValidationFailed", timeout=2 - ) - - fprime_test_api.assert_event("ReferenceDeployment.rtcManager.TimeNotSet", timeout=2) - - fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeDispatched", timeout=2) - - fprime_test_api.assert_event("CdhCore.cmdDisp.OpCodeError", timeout=2) diff --git a/FprimeZephyrReference/test/int/watchdog_test.py b/FprimeZephyrReference/test/int/watchdog_test.py index c3306835..02e984d2 100644 --- a/FprimeZephyrReference/test/int/watchdog_test.py +++ b/FprimeZephyrReference/test/int/watchdog_test.py @@ -11,6 +11,8 @@ from fprime_gds.common.data_types.ch_data import ChData from fprime_gds.common.testing_fw.api import IntegrationTestAPI +watchdog = "ReferenceDeployment.watchdog" + @pytest.fixture(autouse=True) def ensure_watchdog_running(fprime_test_api: IntegrationTestAPI, start_gds): @@ -24,7 +26,7 @@ def start_watchdog(fprime_test_api: IntegrationTestAPI): """Helper function to start the watchdog""" proves_send_and_assert_command( fprime_test_api, - "ReferenceDeployment.watchdog.START_WATCHDOG", + f"{watchdog}.START_WATCHDOG", ) @@ -36,7 +38,7 @@ def get_watchdog_transitions(fprime_test_api: IntegrationTestAPI) -> int: ["5"], ) result: ChData = fprime_test_api.assert_telemetry( - "ReferenceDeployment.watchdog.WatchdogTransitions", start="NOW", timeout=3 + f"{watchdog}.WatchdogTransitions", start="NOW", timeout=3 ) return result.get_val() @@ -68,7 +70,7 @@ def test_03_stop_watchdog_command(fprime_test_api: IntegrationTestAPI, start_gds # Send stop command proves_send_and_assert_command( fprime_test_api, - "ReferenceDeployment.watchdog.STOP_WATCHDOG", + f"{watchdog}.STOP_WATCHDOG", ) # Check for watchdog stop event From 689dd4ffb2977ed7734bd8ca8bbc938305541f85 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 18:22:15 -0500 Subject: [PATCH 49/50] Fix bootloader --- FprimeZephyrReference/test/bootloader_trigger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FprimeZephyrReference/test/bootloader_trigger.py b/FprimeZephyrReference/test/bootloader_trigger.py index 80d45c4f..15451c02 100644 --- a/FprimeZephyrReference/test/bootloader_trigger.py +++ b/FprimeZephyrReference/test/bootloader_trigger.py @@ -12,7 +12,7 @@ import pytest from fprime_gds.common.testing_fw.api import IntegrationTestAPI -from int.wdk import cmdDispatch +from int.common import cmdDispatch @pytest.fixture(scope="session", autouse=True) From de87632e0dcf098ea39b61131ff0705b32d83bb9 Mon Sep 17 00:00:00 2001 From: Nate Gay Date: Sat, 11 Oct 2025 18:27:25 -0500 Subject: [PATCH 50/50] Fix bootloader trigger --- FprimeZephyrReference/test/bootloader_trigger.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FprimeZephyrReference/test/bootloader_trigger.py b/FprimeZephyrReference/test/bootloader_trigger.py index 15451c02..55a06771 100644 --- a/FprimeZephyrReference/test/bootloader_trigger.py +++ b/FprimeZephyrReference/test/bootloader_trigger.py @@ -45,6 +45,6 @@ def test_bootloader(fprime_test_api: IntegrationTestAPI): # Don't use proves_send_and_assert_command here because we don't expect # a response from the bootloader trigger command. The device will reboot # into bootloader mode and may not send a command completion event. - fprime_test_api.send_and_assert_command( + fprime_test_api.send_command( "ReferenceDeployment.bootloaderTrigger.TRIGGER_BOOTLOADER" )