Unverified Commit b6cc517d authored by MatteoPologruto's avatar MatteoPologruto Committed by GitHub

[skip-changelog] Remove python testsuite and the related workflow (#2011)

* Remove python testsuite and the related workflows

* Update documentation according to the removal of the python testsuite

* Remove `check-python-task` and the related unused dependencies
parent f850706b
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-python/.flake8
# See: https://flake8.pycqa.org/en/latest/user/configuration.html
# The code style defined in this file is the official standardized style to be used in all Arduino tooling projects and
# should not be modified.
[flake8]
doctests = True
per-file-ignores =
test/test_upload_mock.py:E501
ignore =
E741,
# W503 and W504 are mutually exclusive. PEP 8 recommends line break before.
W503
max-complexity = 10
max-line-length = 120
select = E,W,F,C,N
from pathlib import Path
import json
if __name__ == "__main__":
import sys
tests_path = sys.argv[1]
test_files = [str(f) for f in Path(tests_path).glob("test_*.py")]
print(json.dumps(test_files))
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/check-python-task.md
name: Check Python
env:
# See: https://github.com/actions/setup-python/tree/main#available-versions-of-python
PYTHON_VERSION: "3.9"
# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows
on:
push:
paths:
- ".github/workflows/check-python-task.ya?ml"
- "**/.flake8"
- "**/poetry.lock"
- "**/pyproject.toml"
- "**/setup.cfg"
- "Taskfile.ya?ml"
- "**/tox.ini"
- "**.py"
pull_request:
paths:
- ".github/workflows/check-python-task.ya?ml"
- "**/.flake8"
- "**/poetry.lock"
- "**/pyproject.toml"
- "**/setup.cfg"
- "Taskfile.ya?ml"
- "**/tox.ini"
- "**.py"
workflow_dispatch:
repository_dispatch:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Poetry
run: pip install poetry
- name: Install Task
uses: arduino/setup-task@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x
- name: Run flake8
uses: liskin/gh-problem-matcher-wrap@v2
with:
linters: flake8
run: task python:lint
formatting:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Poetry
run: pip install poetry
- name: Install Task
uses: arduino/setup-task@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x
- name: Format Python code
run: task python:format
- name: Check formatting
run: git diff --color --exit-code
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/test-go-integration-task.md
name: Test Integration
env:
# See: https://github.com/actions/setup-go/tree/main#supported-version-syntax
GO_VERSION: "1.17"
# See: https://github.com/actions/setup-python/tree/main#available-versions-of-python
PYTHON_VERSION: "3.9"
# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows
on:
create:
push:
paths:
- ".github/workflows/test-go-integration-task.ya?ml"
- "Taskfile.ya?ml"
- "**.go"
- "go.mod"
- "go.sum"
- "poetry.lock"
- "pyproject.toml"
- "test/**"
pull_request:
paths:
- ".github/workflows/test-go-integration-task.ya?ml"
- "Taskfile.ya?ml"
- "**.go"
- "go.mod"
- "go.sum"
- "poetry.lock"
- "pyproject.toml"
- "test/**"
workflow_dispatch:
repository_dispatch:
jobs:
run-determination:
runs-on: ubuntu-latest
outputs:
result: ${{ steps.determination.outputs.result }}
steps:
- name: Determine if the rest of the workflow should run
id: determination
run: |
RELEASE_BRANCH_REGEX="refs/heads/[0-9]+.[0-9]+.x"
# The `create` event trigger doesn't support `branches` filters, so it's necessary to use Bash instead.
if [[ \
"${{ github.event_name }}" != "create" || \
"${{ github.ref }}" =~ $RELEASE_BRANCH_REGEX \
]]; then
# Run the other jobs.
RESULT="true"
else
# There is no need to run the other jobs.
RESULT="false"
fi
echo "result=$RESULT" >> $GITHUB_OUTPUT
tests-collector:
runs-on: ubuntu-latest
needs: run-determination
if: needs.run-determination.outputs.result == 'true'
outputs:
tests-data: ${{ steps.collection.outputs.tests-data }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Collect tests
id: collection
run: |
echo "tests-data=$(python .github/tools/get_integration_tests.py ./test/)" >> $GITHUB_OUTPUT
test:
needs: tests-collector
strategy:
matrix:
operating-system:
- ubuntu-latest
- windows-latest
- macos-latest
tests: ${{ fromJSON(needs.tests-collector.outputs.tests-data) }}
runs-on: ${{ matrix.operating-system }}
env:
ARDUINO_CLI_USER_AGENT_EXTENSION: ${{ secrets.CLOUDFLARE_SPAMCHECK_BYPASS_TOKEN }}
steps:
# By default, actions/checkout converts the repo's LF line endings to CRLF on the Windows runner.
- name: Disable EOL conversions
run: git config --global core.autocrlf false
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: ${{ env.GO_VERSION }}
- name: Install Python
uses: actions/setup-python@v4
with:
python-version: ${{ env.PYTHON_VERSION }}
- name: Install Poetry
run: pip install poetry
- name: Install Task
uses: arduino/setup-task@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
version: 3.x
- name: Build Arduino CLI
run: task go:build
- name: Install poetry deps
run: task poetry:install-deps
- name: Run integration tests
run: poetry run pytest ${{ matrix.tests }}
......@@ -6,7 +6,6 @@ Arduino CLI is an all-in-one solution that provides Boards/Library Managers, ske
and many other tools needed to use any Arduino compatible board and platform from command line or machine interfaces.
[![Test Go status](https://github.com/arduino/arduino-cli/actions/workflows/test-go-task.yml/badge.svg)](https://github.com/arduino/arduino-cli/actions/workflows/test-go-task.yml)
[![Test Integration status](https://github.com/arduino/arduino-cli/actions/workflows/test-go-integration-task.yml/badge.svg)](https://github.com/arduino/arduino-cli/actions/workflows/test-go-integration-task.yml)
[![Publish Nightly Build status](https://github.com/arduino/arduino-cli/actions/workflows/publish-go-nightly-task.yml/badge.svg)](https://github.com/arduino/arduino-cli/actions/workflows/publish-go-nightly-task.yml)
[![Deploy Website status](https://github.com/arduino/arduino-cli/actions/workflows/deploy-cobra-mkdocs-versioned-poetry.yml/badge.svg)](https://github.com/arduino/arduino-cli/actions/workflows/deploy-cobra-mkdocs-versioned-poetry.yml)
[![Codecov](https://codecov.io/gh/arduino/arduino-cli/branch/main/graph/badge.svg)](https://codecov.io/gh/arduino/arduino-cli)
......
......@@ -122,15 +122,6 @@ tasks:
{{default .DEFAULT_INTEGRATIONTEST_GO_PACKAGES .GO_PACKAGES}} \
{{.TEST_LDFLAGS}}
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/test-go-integration-task/Taskfile.yml
go:test-integration:
desc: Run integration tests
deps:
- task: go:build
- task: poetry:install-deps
cmds:
- poetry run pytest test
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-go-task/Taskfile.yml
go:vet:
desc: Check for errors in Go code
......@@ -244,22 +235,6 @@ tasks:
cmds:
- clang-format -i rpc/cc/arduino/cli/*/*/*.proto
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-python-task/Taskfile.yml
python:format:
desc: Format Python files
deps:
- task: poetry:install-deps
cmds:
- poetry run black .
# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/check-python-task/Taskfile.yml
python:lint:
desc: Lint Python code
deps:
- task: poetry:install-deps
cmds:
- poetry run flake8 --show-source
build:
desc: Build the project
deps:
......@@ -269,7 +244,7 @@ tasks:
desc: Run the full testsuite, `legacy` will be skipped
cmds:
- task: go:test
- task: go:test-integration
- task: go:integration-test
test-legacy:
desc: Run tests for the `legacy` package
......@@ -297,7 +272,6 @@ tasks:
cmds:
- task: go:vet
- task: go:lint
- task: python:lint
- task: protoc:check
check-legacy:
......
......@@ -76,7 +76,6 @@ To build the Arduino CLI from sources you need the following tools to be availab
If you want to run integration tests you will also need:
- A serial port with an Arduino board attached
- A working [Python][3] environment, version 3.8 or later
If you're working on the gRPC interface you will also have to:
......@@ -115,7 +114,7 @@ task go:test
To run integration tests (these will take some time and require special setup, see following paragraph):
```shell
task go:test-integration
task go:integration-test
```
#### Running only some tests
......@@ -163,65 +162,29 @@ the above requirements.
##### Software requirements for running integration tests:
A working Python environment. Chances are that you already have Python installed in your system, if this is not the case
you can [download][3] the official distribution or use the package manager provided by your Operating System.
Some dependencies need to be installed before running the tests and to avoid polluting your global Python environment
with dependencies that might be only used by the Arduino CLI, to do so we use [Poetry][poetry-website]. First you need
to install it (you might need to `sudo` the following command):
```shell
pip3 install --user poetry
```
For more installation options read the [official documentation][poetry-docs].
A working Go environment. Chances are that you already have Go installed in your system, if this is not the case you can
[download][1] the official distribution or use the package manager provided by your Operating System.
#### Running tests
After the software requirements have been installed you should be able to run the tests with:
```shell
task go:test-integration
task go:integration-test
```
This will automatically install the necessary dependencies, if not already installed, and run the integration tests
automatically.
This will run the integration tests automatically.
To run specific modules you must run `pytest` from the virtual environment created by Poetry.
To run specific packages you must run `go test`.
```shell
poetry run pytest test/test_lib.py
go test -v github.com/arduino/arduino-cli/internal/integrationtest/lib
```
To run very specific test functions:
```shell
poetry run pytest test/test_lib.py::test_list
```
You can avoid writing the `poetry run` prefix each time by creating a new shell inside the virtual environment:
```shell
poetry shell
pytest test_lib.py
pytest test_lib.py::test_list
```
#### Linting and formatting
When editing any Python file in the project remember to run linting checks with:
```shell
task python:lint
```
This will run `flake8` automatically and return any error in the code formatting, if not already installed it will also
install integration tests dependencies.
In case of linting errors you should be able to solve most of them by automatically formatting with:
```shell
task python:format
go test -v github.com/arduino/arduino-cli/internal/integrationtest/lib -run TestLibUpgradeCommand
```
### Dependency license metadata
......
......@@ -12,7 +12,7 @@
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/internal/integrationtest/testdata/core.zip",
"checksum": "SHA-256:6a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "test_core",
"version": "1.0.0",
......@@ -31,7 +31,7 @@
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/internal/integrationtest/testdata/core.zip",
"checksum": "SHA-256:6a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "test_core",
"version": "2.0.0",
......@@ -65,7 +65,7 @@
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/evil.zip",
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/internal/integrationtest/testdata/evil.zip",
"checksum": "SHA-256:9b85dfe23f13318efc0e541327f584a0f3674a773d46a7eb8b25f0f408d07f96",
"name": "zipslip",
"version": "1.0.0",
......@@ -96,7 +96,7 @@
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/internal/integrationtest/testdata/core.zip",
"checksum": "SHA-256:1a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "zipslip",
"version": "1.0.0",
......@@ -189,7 +189,7 @@
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/internal/integrationtest/testdata/core.zip",
"checksum": "SHA-256:6a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "Platform",
"version": "1.2.3",
......
[[package]]
name = "atomicwrites"
version = "1.4.0"
description = "Atomic file writes."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "attrs"
version = "21.4.0"
description = "Classes Without Boilerplate"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.extras]
dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"]
docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"]
tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "zope.interface"]
tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six"]
[[package]]
name = "black"
version = "22.3.0"
description = "The uncompromising code formatter."
category = "dev"
optional = false
python-versions = ">=3.6.2"
[package.dependencies]
click = ">=8.0.0"
mypy-extensions = ">=0.4.3"
pathspec = ">=0.9.0"
platformdirs = ">=2"
tomli = {version = ">=1.1.0", markers = "python_version < \"3.11\""}
typing-extensions = {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}
[package.extras]
colorama = ["colorama (>=0.4.3)"]
d = ["aiohttp (>=3.7.4)"]
jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"]
uvloop = ["uvloop (>=0.15.2)"]
[[package]]
name = "certifi"
version = "2022.12.7"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "charset-normalizer"
version = "2.0.12"
description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet."
category = "main"
optional = false
python-versions = ">=3.5.0"
[package.extras]
unicode-backport = ["unicodedata2"]
# This file is automatically @generated by Poetry and should not be changed by hand.
[[package]]
name = "click"
......@@ -68,6 +7,10 @@ description = "Composable command line interface toolkit"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
]
[package.dependencies]
colorama = {version = "*", markers = "platform_system == \"Windows\""}
......@@ -76,56 +19,13 @@ colorama = {version = "*", markers = "platform_system == \"Windows\""}
name = "colorama"
version = "0.4.4"
description = "Cross-platform colored terminal text."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "execnet"
version = "1.9.0"
description = "execnet: rapid multi-Python deployment"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[package.extras]
testing = ["pre-commit"]
[[package]]
name = "filelock"
version = "3.7.0"
description = "A platform independent file lock."
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["furo (>=2021.8.17b43)", "sphinx (>=4.1)", "sphinx-autodoc-typehints (>=1.12)"]
testing = ["covdefaults (>=1.2.0)", "coverage (>=4)", "pytest (>=4)", "pytest-cov", "pytest-timeout (>=1.4.2)"]
[[package]]
name = "flake8"
version = "3.9.2"
description = "the modular source code checker: pep8 pyflakes and co"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[package.dependencies]
mccabe = ">=0.6.0,<0.7.0"
pycodestyle = ">=2.7.0,<2.8.0"
pyflakes = ">=2.3.0,<2.4.0"
[[package]]
name = "flake8-polyfill"
version = "1.0.2"
description = "Polyfill package for Flake8 plugins"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
flake8 = "*"
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
files = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
[[package]]
name = "ghp-import"
......@@ -134,6 +34,10 @@ description = "Copy your docs directly to the gh-pages branch."
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"},
{file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"},
]
[package.dependencies]
python-dateutil = ">=2.8.1"
......@@ -145,32 +49,32 @@ dev = ["flake8", "markdown", "twine", "wheel"]
name = "gitdb"
version = "4.0.9"
description = "Git Object Database"
category = "main"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"},
{file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"},
]
[package.dependencies]
smmap = ">=3.0.1,<6"
[[package]]
name = "gitpython"
version = "3.1.27"
version = "3.1.29"
description = "GitPython is a python library used to interact with Git repositories"
category = "main"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "GitPython-3.1.29-py3-none-any.whl", hash = "sha256:41eea0deec2deea139b459ac03656f0dd28fc4a3387240ec1d3c259a2c47850f"},
{file = "GitPython-3.1.29.tar.gz", hash = "sha256:cc36bfc4a3f913e66805a28e84703e419d9c264c1077e537b54f0e1af85dbefd"},
]
[package.dependencies]
gitdb = ">=4.0.1,<5"
[[package]]
name = "idna"
version = "3.3"
description = "Internationalized Domain Names in Applications (IDNA)"
category = "main"
optional = false
python-versions = ">=3.5"
[[package]]
name = "importlib-metadata"
version = "4.11.4"
......@@ -178,6 +82,10 @@ description = "Read metadata from Python packages"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"},
{file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"},
]
[package.dependencies]
zipp = ">=0.5"
......@@ -187,22 +95,6 @@ docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"]
perf = ["ipython"]
testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"]
[[package]]
name = "iniconfig"
version = "1.1.1"
description = "iniconfig: brain-dead simple config-ini parsing"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "invoke"
version = "1.4.1"
description = "Pythonic task execution"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "jinja2"
version = "3.1.2"
......@@ -210,6 +102,10 @@ description = "A very fast and expressive template engine."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
{file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
]
[package.dependencies]
MarkupSafe = ">=2.0"
......@@ -224,6 +120,10 @@ description = "Python implementation of Markdown."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"},
{file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"},
]
[package.dependencies]
importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""}
......@@ -238,14 +138,48 @@ description = "Safely add untrusted strings to HTML/XML markup."
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "mccabe"
version = "0.6.1"
description = "McCabe checker, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
{file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
{file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
{file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
{file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
{file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
{file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
{file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
{file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
{file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
{file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
{file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
]
[[package]]
name = "mdx-truly-sane-lists"
......@@ -254,6 +188,10 @@ description = "Extension for Python-Markdown that makes lists truly sane. Custom
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "mdx_truly_sane_lists-1.2-py3-none-any.whl", hash = "sha256:cc8bfa00f331403504e12377a9c94e6b40fc7db031e283316baeeeeac68f1da9"},
{file = "mdx_truly_sane_lists-1.2.tar.gz", hash = "sha256:4600ade0fbd452db8233e25d644b62f59b2798e40595ea2e1923e29bc40c5b98"},
]
[package.dependencies]
Markdown = ">=2.6"
......@@ -265,6 +203,10 @@ description = "A deep merge function for 🐍."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
{file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
]
[[package]]
name = "mike"
......@@ -273,6 +215,10 @@ description = "Manage multiple versions of your MkDocs-powered documentation"
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "mike-1.1.2-py3-none-any.whl", hash = "sha256:4c307c28769834d78df10f834f57f810f04ca27d248f80a75f49c6fa2d1527ca"},
{file = "mike-1.1.2.tar.gz", hash = "sha256:56c3f1794c2d0b5fdccfa9b9487beb013ca813de2e3ad0744724e9d34d40b77b"},
]
[package.dependencies]
jinja2 = "*"
......@@ -291,6 +237,10 @@ description = "Project documentation with Markdown."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "mkdocs-1.3.0-py3-none-any.whl", hash = "sha256:26bd2b03d739ac57a3e6eed0b7bcc86168703b719c27b99ad6ca91dc439aacde"},
{file = "mkdocs-1.3.0.tar.gz", hash = "sha256:b504405b04da38795fec9b2e5e28f6aa3a73bb0960cb6d5d27ead28952bd35ea"},
]
[package.dependencies]
click = ">=3.3"
......@@ -314,6 +264,10 @@ description = "A Material Design theme for MkDocs"
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "mkdocs-material-7.3.6.tar.gz", hash = "sha256:1b1dbd8ef2508b358d93af55a5c5db3f141c95667fad802301ec621c40c7c217"},
{file = "mkdocs_material-7.3.6-py2.py3-none-any.whl", hash = "sha256:1b6b3e9e09f922c2d7f1160fe15c8f43d4adc0d6fb81aa6ff0cbc7ef5b78ec75"},
]
[package.dependencies]
jinja2 = ">=2.11.1"
......@@ -330,101 +284,26 @@ description = "Extension pack for Python Markdown."
category = "dev"
optional = false
python-versions = ">=3.6"
[[package]]
name = "more-itertools"
version = "8.13.0"
description = "More routines for operating on iterables, beyond itertools"
category = "main"
optional = false
python-versions = ">=3.5"
[[package]]
name = "mypy-extensions"
version = "0.4.3"
description = "Experimental type system extensions for programs checked with the mypy typechecker."
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"},
{file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"},
]
[[package]]
name = "packaging"
version = "21.3"
description = "Core utilities for Python packages"
category = "main"
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
{file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
]
[package.dependencies]
pyparsing = ">=2.0.2,<3.0.5 || >3.0.5"
[[package]]
name = "pathspec"
version = "0.9.0"
description = "Utility library for gitignore style pattern matching of file paths."
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
[[package]]
name = "pep8-naming"
version = "0.12.1"
description = "Check PEP-8 naming conventions, plugin for flake8"
category = "dev"
optional = false
python-versions = "*"
[package.dependencies]
flake8 = ">=3.9.1"
flake8-polyfill = ">=1.0.2,<2"
[[package]]
name = "platformdirs"
version = "2.5.2"
description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx (>=4)", "sphinx-autodoc-typehints (>=1.12)"]
test = ["appdirs (==1.4.4)", "pytest (>=6)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)"]
[[package]]
name = "pluggy"
version = "0.13.1"
description = "plugin and hook calling mechanisms for python"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[package.extras]
dev = ["pre-commit", "tox"]
[[package]]
name = "py"
version = "1.11.0"
description = "library with cross-python path, ini-parsing, io, code, log facilities"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
[[package]]
name = "pycodestyle"
version = "2.7.0"
description = "Python style guide checker"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "pyflakes"
version = "2.3.1"
description = "passive checker of Python programs"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "pygments"
version = "2.12.0"
......@@ -432,6 +311,10 @@ description = "Pygments is a syntax highlighting package written in Python."
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
{file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
]
[[package]]
name = "pymdown-extensions"
......@@ -440,6 +323,10 @@ description = "Extension pack for Python Markdown."
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "pymdown_extensions-9.4-py3-none-any.whl", hash = "sha256:5b7432456bf555ce2b0ab3c2439401084cda8110f24f6b3ecef952b8313dfa1b"},
{file = "pymdown_extensions-9.4.tar.gz", hash = "sha256:1baa22a60550f731630474cad28feb0405c8101f1a7ddc3ec0ed86ee510bcc43"},
]
[package.dependencies]
markdown = ">=3.2"
......@@ -448,100 +335,17 @@ markdown = ">=3.2"
name = "pyparsing"
version = "3.0.9"
description = "pyparsing module - Classes and methods to define and execute parsing grammars"
category = "main"
category = "dev"
optional = false
python-versions = ">=3.6.8"
files = [
{file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
{file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
]
[package.extras]
diagrams = ["jinja2", "railroad-diagrams"]
[[package]]
name = "pyserial"
version = "3.4"
description = "Python Serial Port Extension"
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "pytest"
version = "6.0.2"
description = "pytest: simple powerful testing with Python"
category = "main"
optional = false
python-versions = ">=3.5"
[package.dependencies]
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""}
attrs = ">=17.4.0"
colorama = {version = "*", markers = "sys_platform == \"win32\""}
iniconfig = "*"
more-itertools = ">=4.0.0"
packaging = "*"
pluggy = ">=0.12,<1.0"
py = ">=1.8.2"
toml = "*"
[package.extras]
checkqa-mypy = ["mypy (==0.780)"]
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"]
[[package]]
name = "pytest-forked"
version = "1.4.0"
description = "run tests in isolated forked subprocesses"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
py = "*"
pytest = ">=3.10"
[[package]]
name = "pytest-httpserver"
version = "0.3.8"
description = "pytest-httpserver is a httpserver for pytest"
category = "main"
optional = false
python-versions = ">=3.4"
[package.dependencies]
werkzeug = "*"
[package.extras]
dev = ["autopep8", "coverage", "flake8", "ipdb", "pytest", "pytest-cov", "reno", "requests", "sphinx", "sphinx-rtd-theme", "wheel"]
test = ["coverage", "pytest", "pytest-cov", "requests"]
[[package]]
name = "pytest-timeout"
version = "1.3.4"
description = "py.test plugin to abort hanging tests"
category = "main"
optional = false
python-versions = "*"
[package.dependencies]
pytest = ">=3.6.0"
[[package]]
name = "pytest-xdist"
version = "2.4.0"
description = "pytest xdist plugin for distributed testing and loop-on-failing modes"
category = "main"
optional = false
python-versions = ">=3.6"
[package.dependencies]
execnet = ">=1.1"
pytest = ">=6.0.0"
pytest-forked = "*"
[package.extras]
psutil = ["psutil (>=3.0)"]
setproctitle = ["setproctitle"]
testing = ["filelock"]
[[package]]
name = "python-dateutil"
version = "2.8.2"
......@@ -549,17 +353,63 @@ description = "Extensions to the standard Python datetime module"
category = "dev"
optional = false
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7"
files = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
[package.dependencies]
six = ">=1.5"
[[package]]
name = "pyyaml"
version = "5.4"
version = "6.0"
description = "YAML parser and emitter for Python"
category = "main"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
python-versions = ">=3.6"
files = [
{file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"},
{file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"},
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"},
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"},
{file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"},
{file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"},
{file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"},
{file = "PyYAML-6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:d4b0ba9512519522b118090257be113b9468d804b19d63c71dbcf4a48fa32358"},
{file = "PyYAML-6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:81957921f441d50af23654aa6c5e5eaf9b06aba7f0a19c18a538dc7ef291c5a1"},
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa17f5bc4d1b10afd4466fd3a44dc0e245382deca5b3c353d8b757f9e3ecb8d"},
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbad0e9d368bb989f4515da330b88a057617d16b6a8245084f1b05400f24609f"},
{file = "PyYAML-6.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:432557aa2c09802be39460360ddffd48156e30721f5e8d917f01d31694216782"},
{file = "PyYAML-6.0-cp311-cp311-win32.whl", hash = "sha256:bfaef573a63ba8923503d27530362590ff4f576c626d86a9fed95822a8255fd7"},
{file = "PyYAML-6.0-cp311-cp311-win_amd64.whl", hash = "sha256:01b45c0191e6d66c470b6cf1b9531a771a83c1c4208272ead47a3ae4f2f603bf"},
{file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"},
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"},
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"},
{file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"},
{file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"},
{file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"},
{file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"},
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"},
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"},
{file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"},
{file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"},
{file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"},
{file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"},
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"},
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"},
{file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"},
{file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"},
{file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"},
{file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"},
{file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"},
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"},
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"},
{file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"},
{file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"},
{file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"},
{file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"},
]
[[package]]
name = "pyyaml-env-tag"
......@@ -568,44 +418,14 @@ description = "A custom YAML tag for referencing environment variables in YAML f
category = "dev"
optional = false
python-versions = ">=3.6"
files = [
{file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"},
{file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
]
[package.dependencies]
pyyaml = "*"
[[package]]
name = "requests"
version = "2.27.1"
description = "Python HTTP for Humans."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*"
[package.dependencies]
certifi = ">=2017.4.17"
charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""}
idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""}
urllib3 = ">=1.21.1,<1.27"
[package.extras]
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"]
use-chardet-on-py3 = ["chardet (>=3.0.2,<5)"]
[[package]]
name = "semver"
version = "2.13.0"
description = "Python helper for Semantic Versioning (http://semver.org/)"
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
[[package]]
name = "simplejson"
version = "3.17.0"
description = "Simple, fast, extensible JSON encoder/decoder for Python"
category = "main"
optional = false
python-versions = ">=2.5, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "six"
version = "1.16.0"
......@@ -613,51 +433,22 @@ description = "Python 2 and 3 compatibility utilities"
category = "dev"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*"
files = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
[[package]]
name = "smmap"
version = "5.0.0"
description = "A pure Python implementation of a sliding window memory map manager"
category = "main"
optional = false
python-versions = ">=3.6"
[[package]]
name = "toml"
version = "0.10.2"
description = "Python Library for Tom's Obvious, Minimal Language"
category = "main"
optional = false
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
[[package]]
name = "tomli"
version = "2.0.1"
description = "A lil' TOML parser"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "typing-extensions"
version = "4.2.0"
description = "Backported and Experimental Type Hints for Python 3.7+"
category = "dev"
optional = false
python-versions = ">=3.7"
[[package]]
name = "urllib3"
version = "1.26.9"
description = "HTTP library with thread-safe connection pooling, file post, and more."
category = "main"
optional = false
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
[package.extras]
brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"]
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)"]
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"]
python-versions = ">=3.6"
files = [
{file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"},
{file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"},
]
[[package]]
name = "verspec"
......@@ -666,6 +457,10 @@ description = "Flexible version handling"
category = "dev"
optional = false
python-versions = "*"
files = [
{file = "verspec-0.1.0-py3-none-any.whl", hash = "sha256:741877d5633cc9464c45a469ae2a31e801e6dbbaa85b9675d481cda100f11c31"},
{file = "verspec-0.1.0.tar.gz", hash = "sha256:c4504ca697b2056cdb4bfa7121461f5a0e81809255b41c03dda4ba823637c01e"},
]
[package.extras]
test = ["coverage", "flake8 (>=3.7)", "mypy", "pretend", "pytest"]
......@@ -677,373 +472,7 @@ description = "Filesystem events monitoring"
category = "dev"
optional = false
python-versions = ">=3.6"
[package.extras]
watchmedo = ["PyYAML (>=3.10)"]
[[package]]
name = "werkzeug"
version = "2.1.2"
description = "The comprehensive WSGI web application library."
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
watchdog = ["watchdog"]
[[package]]
name = "zipp"
version = "3.8.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
optional = false
python-versions = ">=3.7"
[package.extras]
docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"]
testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
[metadata]
lock-version = "1.1"
python-versions = ">=3.8, !=3.9.7, <4"
content-hash = "02d695d90b699667497c5bc6052db88a854d2cdc931e90876a9622116d8cac10"
[metadata.files]
atomicwrites = [
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"},
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"},
]
attrs = [
{file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"},
{file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"},
]
black = [
{file = "black-22.3.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2497f9c2386572e28921fa8bec7be3e51de6801f7459dffd6e62492531c47e09"},
{file = "black-22.3.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5795a0375eb87bfe902e80e0c8cfaedf8af4d49694d69161e5bd3206c18618bb"},
{file = "black-22.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e3556168e2e5c49629f7b0f377070240bd5511e45e25a4497bb0073d9dda776a"},
{file = "black-22.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:67c8301ec94e3bcc8906740fe071391bce40a862b7be0b86fb5382beefecd968"},
{file = "black-22.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:fd57160949179ec517d32ac2ac898b5f20d68ed1a9c977346efbac9c2f1e779d"},
{file = "black-22.3.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc1e1de68c8e5444e8f94c3670bb48a2beef0e91dddfd4fcc29595ebd90bb9ce"},
{file = "black-22.3.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2fc92002d44746d3e7db7cf9313cf4452f43e9ea77a2c939defce3b10b5c82"},
{file = "black-22.3.0-cp36-cp36m-win_amd64.whl", hash = "sha256:a6342964b43a99dbc72f72812bf88cad8f0217ae9acb47c0d4f141a6416d2d7b"},
{file = "black-22.3.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:328efc0cc70ccb23429d6be184a15ce613f676bdfc85e5fe8ea2a9354b4e9015"},
{file = "black-22.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06f9d8846f2340dfac80ceb20200ea5d1b3f181dd0556b47af4e8e0b24fa0a6b"},
{file = "black-22.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:ad4efa5fad66b903b4a5f96d91461d90b9507a812b3c5de657d544215bb7877a"},
{file = "black-22.3.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8477ec6bbfe0312c128e74644ac8a02ca06bcdb8982d4ee06f209be28cdf163"},
{file = "black-22.3.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:637a4014c63fbf42a692d22b55d8ad6968a946b4a6ebc385c5505d9625b6a464"},
{file = "black-22.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:863714200ada56cbc366dc9ae5291ceb936573155f8bf8e9de92aef51f3ad0f0"},
{file = "black-22.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10dbe6e6d2988049b4655b2b739f98785a884d4d6b85bc35133a8fb9a2233176"},
{file = "black-22.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:cee3e11161dde1b2a33a904b850b0899e0424cc331b7295f2a9698e79f9a69a0"},
{file = "black-22.3.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5891ef8abc06576985de8fa88e95ab70641de6c1fca97e2a15820a9b69e51b20"},
{file = "black-22.3.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:30d78ba6bf080eeaf0b7b875d924b15cd46fec5fd044ddfbad38c8ea9171043a"},
{file = "black-22.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee8f1f7228cce7dffc2b464f07ce769f478968bfb3dd1254a4c2eeed84928aad"},
{file = "black-22.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6ee227b696ca60dd1c507be80a6bc849a5a6ab57ac7352aad1ffec9e8b805f21"},
{file = "black-22.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:9b542ced1ec0ceeff5b37d69838106a6348e60db7b8fdd245294dc1d26136265"},
{file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"},
{file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"},
]
certifi = [
{file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"},
{file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"},
]
charset-normalizer = [
{file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"},
{file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"},
]
click = [
{file = "click-8.1.3-py3-none-any.whl", hash = "sha256:bb4d8133cb15a609f44e8213d9b391b0809795062913b383c62be0ee95b1db48"},
{file = "click-8.1.3.tar.gz", hash = "sha256:7682dc8afb30297001674575ea00d1814d808d6a36af415a82bd481d37ba7b8e"},
]
colorama = [
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"},
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"},
]
execnet = [
{file = "execnet-1.9.0-py2.py3-none-any.whl", hash = "sha256:a295f7cc774947aac58dde7fdc85f4aa00c42adf5d8f5468fc630c1acf30a142"},
{file = "execnet-1.9.0.tar.gz", hash = "sha256:8f694f3ba9cc92cab508b152dcfe322153975c29bda272e2fd7f3f00f36e47c5"},
]
filelock = [
{file = "filelock-3.7.0-py3-none-any.whl", hash = "sha256:c7b5fdb219b398a5b28c8e4c1893ef5f98ece6a38c6ab2c22e26ec161556fed6"},
{file = "filelock-3.7.0.tar.gz", hash = "sha256:b795f1b42a61bbf8ec7113c341dad679d772567b936fbd1bf43c9a238e673e20"},
]
flake8 = [
{file = "flake8-3.9.2-py2.py3-none-any.whl", hash = "sha256:bf8fd333346d844f616e8d47905ef3a3384edae6b4e9beb0c5101e25e3110907"},
{file = "flake8-3.9.2.tar.gz", hash = "sha256:07528381786f2a6237b061f6e96610a4167b226cb926e2aa2b6b1d78057c576b"},
]
flake8-polyfill = [
{file = "flake8-polyfill-1.0.2.tar.gz", hash = "sha256:e44b087597f6da52ec6393a709e7108b2905317d0c0b744cdca6208e670d8eda"},
{file = "flake8_polyfill-1.0.2-py2.py3-none-any.whl", hash = "sha256:12be6a34ee3ab795b19ca73505e7b55826d5f6ad7230d31b18e106400169b9e9"},
]
ghp-import = [
{file = "ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343"},
{file = "ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619"},
]
gitdb = [
{file = "gitdb-4.0.9-py3-none-any.whl", hash = "sha256:8033ad4e853066ba6ca92050b9df2f89301b8fc8bf7e9324d412a63f8bf1a8fd"},
{file = "gitdb-4.0.9.tar.gz", hash = "sha256:bac2fd45c0a1c9cf619e63a90d62bdc63892ef92387424b855792a6cabe789aa"},
]
gitpython = [
{file = "GitPython-3.1.27-py3-none-any.whl", hash = "sha256:5b68b000463593e05ff2b261acff0ff0972df8ab1b70d3cdbd41b546c8b8fc3d"},
{file = "GitPython-3.1.27.tar.gz", hash = "sha256:1c885ce809e8ba2d88a29befeb385fcea06338d3640712b59ca623c220bb5704"},
]
idna = [
{file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"},
{file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"},
]
importlib-metadata = [
{file = "importlib_metadata-4.11.4-py3-none-any.whl", hash = "sha256:c58c8eb8a762858f49e18436ff552e83914778e50e9d2f1660535ffb364552ec"},
{file = "importlib_metadata-4.11.4.tar.gz", hash = "sha256:5d26852efe48c0a32b0509ffbc583fda1a2266545a78d104a6f4aff3db17d700"},
]
iniconfig = [
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"},
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"},
]
invoke = [
{file = "invoke-1.4.1-py2-none-any.whl", hash = "sha256:93e12876d88130c8e0d7fd6618dd5387d6b36da55ad541481dfa5e001656f134"},
{file = "invoke-1.4.1-py3-none-any.whl", hash = "sha256:87b3ef9d72a1667e104f89b159eaf8a514dbf2f3576885b2bbdefe74c3fb2132"},
{file = "invoke-1.4.1.tar.gz", hash = "sha256:de3f23bfe669e3db1085789fd859eb8ca8e0c5d9c20811e2407fa042e8a5e15d"},
]
jinja2 = [
{file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"},
{file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"},
]
markdown = [
{file = "Markdown-3.3.7-py3-none-any.whl", hash = "sha256:f5da449a6e1c989a4cea2631aa8ee67caa5a2ef855d551c88f9e309f4634c621"},
{file = "Markdown-3.3.7.tar.gz", hash = "sha256:cbb516f16218e643d8e0a95b309f77eb118cb138d39a4f27851e6a63581db874"},
]
markupsafe = [
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"},
{file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"},
{file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"},
{file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"},
{file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"},
{file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"},
{file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"},
{file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"},
{file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"},
{file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"},
{file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"},
{file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"},
{file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"},
{file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"},
{file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"},
{file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"},
{file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"},
{file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"},
{file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"},
{file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"},
]
mccabe = [
{file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"},
{file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"},
]
mdx-truly-sane-lists = [
{file = "mdx_truly_sane_lists-1.2-py3-none-any.whl", hash = "sha256:cc8bfa00f331403504e12377a9c94e6b40fc7db031e283316baeeeeac68f1da9"},
{file = "mdx_truly_sane_lists-1.2.tar.gz", hash = "sha256:4600ade0fbd452db8233e25d644b62f59b2798e40595ea2e1923e29bc40c5b98"},
]
mergedeep = [
{file = "mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307"},
{file = "mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8"},
]
mike = [
{file = "mike-1.1.2-py3-none-any.whl", hash = "sha256:4c307c28769834d78df10f834f57f810f04ca27d248f80a75f49c6fa2d1527ca"},
{file = "mike-1.1.2.tar.gz", hash = "sha256:56c3f1794c2d0b5fdccfa9b9487beb013ca813de2e3ad0744724e9d34d40b77b"},
]
mkdocs = [
{file = "mkdocs-1.3.0-py3-none-any.whl", hash = "sha256:26bd2b03d739ac57a3e6eed0b7bcc86168703b719c27b99ad6ca91dc439aacde"},
{file = "mkdocs-1.3.0.tar.gz", hash = "sha256:b504405b04da38795fec9b2e5e28f6aa3a73bb0960cb6d5d27ead28952bd35ea"},
]
mkdocs-material = [
{file = "mkdocs-material-7.3.6.tar.gz", hash = "sha256:1b1dbd8ef2508b358d93af55a5c5db3f141c95667fad802301ec621c40c7c217"},
{file = "mkdocs_material-7.3.6-py2.py3-none-any.whl", hash = "sha256:1b6b3e9e09f922c2d7f1160fe15c8f43d4adc0d6fb81aa6ff0cbc7ef5b78ec75"},
]
mkdocs-material-extensions = [
{file = "mkdocs-material-extensions-1.0.3.tar.gz", hash = "sha256:bfd24dfdef7b41c312ede42648f9eb83476ea168ec163b613f9abd12bbfddba2"},
{file = "mkdocs_material_extensions-1.0.3-py3-none-any.whl", hash = "sha256:a82b70e533ce060b2a5d9eb2bc2e1be201cf61f901f93704b4acf6e3d5983a44"},
]
more-itertools = [
{file = "more-itertools-8.13.0.tar.gz", hash = "sha256:a42901a0a5b169d925f6f217cd5a190e32ef54360905b9c39ee7db5313bfec0f"},
{file = "more_itertools-8.13.0-py3-none-any.whl", hash = "sha256:c5122bffc5f104d37c1626b8615b511f3427aa5389b94d61e5ef8236bfbc3ddb"},
]
mypy-extensions = [
{file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"},
{file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"},
]
packaging = [
{file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"},
{file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"},
]
pathspec = [
{file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"},
{file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"},
]
pep8-naming = [
{file = "pep8-naming-0.12.1.tar.gz", hash = "sha256:bb2455947757d162aa4cad55dba4ce029005cd1692f2899a21d51d8630ca7841"},
{file = "pep8_naming-0.12.1-py2.py3-none-any.whl", hash = "sha256:4a8daeaeb33cfcde779309fc0c9c0a68a3bbe2ad8a8308b763c5068f86eb9f37"},
]
platformdirs = [
{file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"},
{file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"},
]
pluggy = [
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
]
py = [
{file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"},
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
]
pycodestyle = [
{file = "pycodestyle-2.7.0-py2.py3-none-any.whl", hash = "sha256:514f76d918fcc0b55c6680472f0a37970994e07bbb80725808c17089be302068"},
{file = "pycodestyle-2.7.0.tar.gz", hash = "sha256:c389c1d06bf7904078ca03399a4816f974a1d590090fecea0c63ec26ebaf1cef"},
]
pyflakes = [
{file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"},
{file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"},
]
pygments = [
{file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"},
{file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"},
]
pymdown-extensions = [
{file = "pymdown_extensions-9.4-py3-none-any.whl", hash = "sha256:5b7432456bf555ce2b0ab3c2439401084cda8110f24f6b3ecef952b8313dfa1b"},
{file = "pymdown_extensions-9.4.tar.gz", hash = "sha256:1baa22a60550f731630474cad28feb0405c8101f1a7ddc3ec0ed86ee510bcc43"},
]
pyparsing = [
{file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"},
{file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"},
]
pyserial = [
{file = "pyserial-3.4-py2.py3-none-any.whl", hash = "sha256:e0770fadba80c31013896c7e6ef703f72e7834965954a78e71a3049488d4d7d8"},
{file = "pyserial-3.4.tar.gz", hash = "sha256:6e2d401fdee0eab996cf734e67773a0143b932772ca8b42451440cfed942c627"},
]
pytest = [
{file = "pytest-6.0.2-py3-none-any.whl", hash = "sha256:0e37f61339c4578776e090c3b8f6b16ce4db333889d65d0efb305243ec544b40"},
{file = "pytest-6.0.2.tar.gz", hash = "sha256:c8f57c2a30983f469bf03e68cdfa74dc474ce56b8f280ddcb080dfd91df01043"},
]
pytest-forked = [
{file = "pytest-forked-1.4.0.tar.gz", hash = "sha256:8b67587c8f98cbbadfdd804539ed5455b6ed03802203485dd2f53c1422d7440e"},
{file = "pytest_forked-1.4.0-py3-none-any.whl", hash = "sha256:bbbb6717efc886b9d64537b41fb1497cfaf3c9601276be8da2cccfea5a3c8ad8"},
]
pytest-httpserver = [
{file = "pytest_httpserver-0.3.8-py3-none-any.whl", hash = "sha256:8588edd98a7cec8b5fb481ad1180df0e928648816213c242974a318842d0befe"},
{file = "pytest_httpserver-0.3.8.tar.gz", hash = "sha256:d896a6556e426240837891b0552040ed4148e393ddf63f675b60d47bcd2d3f39"},
]
pytest-timeout = [
{file = "pytest-timeout-1.3.4.tar.gz", hash = "sha256:80faa19cd245a42b87a51699d640c00d937c02b749052bfca6bae8bdbe12c48e"},
{file = "pytest_timeout-1.3.4-py2.py3-none-any.whl", hash = "sha256:95ca727d4a1dace6ec5f0534d2940b8417ff8b782f7eef0ea09240bdd94d95c2"},
]
pytest-xdist = [
{file = "pytest-xdist-2.4.0.tar.gz", hash = "sha256:89b330316f7fc475f999c81b577c2b926c9569f3d397ae432c0c2e2496d61ff9"},
{file = "pytest_xdist-2.4.0-py3-none-any.whl", hash = "sha256:7b61ebb46997a0820a263553179d6d1e25a8c50d8a8620cd1aa1e20e3be99168"},
]
python-dateutil = [
{file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"},
{file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"},
]
pyyaml = [
{file = "PyYAML-5.4-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:f7a21e3d99aa3095ef0553e7ceba36fb693998fbb1226f1392ce33681047465f"},
{file = "PyYAML-5.4-cp27-cp27m-win32.whl", hash = "sha256:52bf0930903818e600ae6c2901f748bc4869c0c406056f679ab9614e5d21a166"},
{file = "PyYAML-5.4-cp27-cp27m-win_amd64.whl", hash = "sha256:a36a48a51e5471513a5aea920cdad84cbd56d70a5057cca3499a637496ea379c"},
{file = "PyYAML-5.4-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:5e7ac4e0e79a53451dc2814f6876c2fa6f71452de1498bbe29c0b54b69a986f4"},
{file = "PyYAML-5.4-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:cc552b6434b90d9dbed6a4f13339625dc466fd82597119897e9489c953acbc22"},
{file = "PyYAML-5.4-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:0dc9f2eb2e3c97640928dec63fd8dc1dd91e6b6ed236bd5ac00332b99b5c2ff9"},
{file = "PyYAML-5.4-cp36-cp36m-win32.whl", hash = "sha256:5a3f345acff76cad4aa9cb171ee76c590f37394186325d53d1aa25318b0d4a09"},
{file = "PyYAML-5.4-cp36-cp36m-win_amd64.whl", hash = "sha256:f3790156c606299ff499ec44db422f66f05a7363b39eb9d5b064f17bd7d7c47b"},
{file = "PyYAML-5.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:124fd7c7bc1e95b1eafc60825f2daf67c73ce7b33f1194731240d24b0d1bf628"},
{file = "PyYAML-5.4-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:8b818b6c5a920cbe4203b5a6b14256f0e5244338244560da89b7b0f1313ea4b6"},
{file = "PyYAML-5.4-cp37-cp37m-win32.whl", hash = "sha256:737bd70e454a284d456aa1fa71a0b429dd527bcbf52c5c33f7c8eee81ac16b89"},
{file = "PyYAML-5.4-cp37-cp37m-win_amd64.whl", hash = "sha256:7242790ab6c20316b8e7bb545be48d7ed36e26bbe279fd56f2c4a12510e60b4b"},
{file = "PyYAML-5.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cc547d3ead3754712223abb7b403f0a184e4c3eae18c9bb7fd15adef1597cc4b"},
{file = "PyYAML-5.4-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:8635d53223b1f561b081ff4adecb828fd484b8efffe542edcfdff471997f7c39"},
{file = "PyYAML-5.4-cp38-cp38-win32.whl", hash = "sha256:26fcb33776857f4072601502d93e1a619f166c9c00befb52826e7b774efaa9db"},
{file = "PyYAML-5.4-cp38-cp38-win_amd64.whl", hash = "sha256:b2243dd033fd02c01212ad5c601dafb44fbb293065f430b0d3dbf03f3254d615"},
{file = "PyYAML-5.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:31ba07c54ef4a897758563e3a0fcc60077698df10180abe4b8165d9895c00ebf"},
{file = "PyYAML-5.4-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:02c78d77281d8f8d07a255e57abdbf43b02257f59f50cc6b636937d68efa5dd0"},
{file = "PyYAML-5.4-cp39-cp39-win32.whl", hash = "sha256:fdc6b2cb4b19e431994f25a9160695cc59a4e861710cc6fc97161c5e845fc579"},
{file = "PyYAML-5.4-cp39-cp39-win_amd64.whl", hash = "sha256:8bf38641b4713d77da19e91f8b5296b832e4db87338d6aeffe422d42f1ca896d"},
{file = "PyYAML-5.4.tar.gz", hash = "sha256:3c49e39ac034fd64fd576d63bb4db53cda89b362768a67f07749d55f128ac18a"},
]
pyyaml-env-tag = [
{file = "pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069"},
{file = "pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb"},
]
requests = [
{file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"},
{file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"},
]
semver = [
{file = "semver-2.13.0-py2.py3-none-any.whl", hash = "sha256:ced8b23dceb22134307c1b8abfa523da14198793d9787ac838e70e29e77458d4"},
{file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"},
]
simplejson = [
{file = "simplejson-3.17.0-cp27-cp27m-macosx_10_13_x86_64.whl", hash = "sha256:87d349517b572964350cc1adc5a31b493bbcee284505e81637d0174b2758ba17"},
{file = "simplejson-3.17.0-cp27-cp27m-win32.whl", hash = "sha256:1d1e929cdd15151f3c0b2efe953b3281b2fd5ad5f234f77aca725f28486466f6"},
{file = "simplejson-3.17.0-cp27-cp27m-win_amd64.whl", hash = "sha256:1ea59f570b9d4916ae5540a9181f9c978e16863383738b69a70363bc5e63c4cb"},
{file = "simplejson-3.17.0-cp33-cp33m-win32.whl", hash = "sha256:8027bd5f1e633eb61b8239994e6fc3aba0346e76294beac22a892eb8faa92ba1"},
{file = "simplejson-3.17.0-cp33-cp33m-win_amd64.whl", hash = "sha256:22a7acb81968a7c64eba7526af2cf566e7e2ded1cb5c83f0906b17ff1540f866"},
{file = "simplejson-3.17.0-cp34-cp34m-win32.whl", hash = "sha256:17163e643dbf125bb552de17c826b0161c68c970335d270e174363d19e7ea882"},
{file = "simplejson-3.17.0-cp34-cp34m-win_amd64.whl", hash = "sha256:0fe3994207485efb63d8f10a833ff31236ed27e3b23dadd0bf51c9900313f8f2"},
{file = "simplejson-3.17.0-cp35-cp35m-win32.whl", hash = "sha256:4cf91aab51b02b3327c9d51897960c554f00891f9b31abd8a2f50fd4a0071ce8"},
{file = "simplejson-3.17.0-cp35-cp35m-win_amd64.whl", hash = "sha256:fc9051d249dd5512e541f20330a74592f7a65b2d62e18122ca89bf71f94db748"},
{file = "simplejson-3.17.0-cp36-cp36m-macosx_10_13_x86_64.whl", hash = "sha256:86afc5b5cbd42d706efd33f280fec7bd7e2772ef54e3f34cf6b30777cd19a614"},
{file = "simplejson-3.17.0-cp36-cp36m-win32.whl", hash = "sha256:926bcbef9eb60e798eabda9cd0bbcb0fca70d2779aa0aa56845749d973eb7ad5"},
{file = "simplejson-3.17.0-cp36-cp36m-win_amd64.whl", hash = "sha256:daaf4d11db982791be74b23ff4729af2c7da79316de0bebf880fa2d60bcc8c5a"},
{file = "simplejson-3.17.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:9a126c3a91df5b1403e965ba63b304a50b53d8efc908a8c71545ed72535374a3"},
{file = "simplejson-3.17.0-cp37-cp37m-win32.whl", hash = "sha256:fc046afda0ed8f5295212068266c92991ab1f4a50c6a7144b69364bdee4a0159"},
{file = "simplejson-3.17.0-cp37-cp37m-win_amd64.whl", hash = "sha256:7cce4bac7e0d66f3a080b80212c2238e063211fe327f98d764c6acbc214497fc"},
{file = "simplejson-3.17.0.tar.gz", hash = "sha256:2b4b2b738b3b99819a17feaf118265d0753d5536049ea570b3c43b51c4701e81"},
]
six = [
{file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"},
{file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"},
]
smmap = [
{file = "smmap-5.0.0-py3-none-any.whl", hash = "sha256:2aba19d6a040e78d8b09de5c57e96207b09ed71d8e55ce0959eeee6c8e190d94"},
{file = "smmap-5.0.0.tar.gz", hash = "sha256:c840e62059cd3be204b0c9c9f74be2c09d5648eddd4580d9314c3ecde0b30936"},
]
toml = [
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"},
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
]
tomli = [
{file = "tomli-2.0.1-py3-none-any.whl", hash = "sha256:939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc"},
{file = "tomli-2.0.1.tar.gz", hash = "sha256:de526c12914f0c550d15924c62d72abc48d6fe7364aa87328337a31007fe8a4f"},
]
typing-extensions = [
{file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"},
{file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"},
]
urllib3 = [
{file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"},
{file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"},
]
verspec = [
{file = "verspec-0.1.0-py3-none-any.whl", hash = "sha256:741877d5633cc9464c45a469ae2a31e801e6dbbaa85b9675d481cda100f11c31"},
{file = "verspec-0.1.0.tar.gz", hash = "sha256:c4504ca697b2056cdb4bfa7121461f5a0e81809255b41c03dda4ba823637c01e"},
]
watchdog = [
files = [
{file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:676263bee67b165f16b05abc52acc7a94feac5b5ab2449b491f1a97638a79277"},
{file = "watchdog-2.1.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:aa68d2d9a89d686fae99d28a6edf3b18595e78f5adf4f5c18fbfda549ac0f20c"},
{file = "watchdog-2.1.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5e2e51c53666850c3ecffe9d265fc5d7351db644de17b15e9c685dd3cdcd6f97"},
......@@ -1070,11 +499,27 @@ watchdog = [
{file = "watchdog-2.1.8-py3-none-win_ia64.whl", hash = "sha256:0fb60c7d31474b21acba54079ce9ff0136411183e9a591369417cddb1d7d00d7"},
{file = "watchdog-2.1.8.tar.gz", hash = "sha256:6d03149126864abd32715d4e9267d2754cede25a69052901399356ad3bc5ecff"},
]
werkzeug = [
{file = "Werkzeug-2.1.2-py3-none-any.whl", hash = "sha256:72a4b735692dd3135217911cbeaa1be5fa3f62bffb8745c5215420a03dc55255"},
{file = "Werkzeug-2.1.2.tar.gz", hash = "sha256:1ce08e8093ed67d638d63879fd1ba3735817f7a80de3674d293f5984f25fb6e6"},
]
zipp = [
[package.extras]
watchmedo = ["PyYAML (>=3.10)"]
[[package]]
name = "zipp"
version = "3.8.0"
description = "Backport of pathlib-compatible object wrapper for zip files"
category = "dev"
optional = false
python-versions = ">=3.7"
files = [
{file = "zipp-3.8.0-py3-none-any.whl", hash = "sha256:c4f6e5bbf48e74f7a38e7cc5b0480ff42b0ae5178957d564d18932525d5cf099"},
{file = "zipp-3.8.0.tar.gz", hash = "sha256:56bf8aadb83c24db6c4b577e13de374ccfb67da2078beba1d037c17980bf43ad"},
]
[package.extras]
docs = ["jaraco.packaging (>=9)", "rst.linker (>=1.9)", "sphinx"]
testing = ["func-timeout", "jaraco.itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.0.1)", "pytest-flake8", "pytest-mypy (>=0.9.1)"]
[metadata]
lock-version = "2.0"
python-versions = ">=3.8, !=3.9.7, <4"
content-hash = "609b3f624d4cffecdfb1d363139aee30f917c528d0a4312880e41025411771a2"
......@@ -6,18 +6,6 @@ authors = []
[tool.poetry.dependencies]
python = ">=3.8, !=3.9.7, <4"
pytest = "6.0.2"
simplejson = "3.17.0"
semver = "2.13.0"
pyserial = "3.4"
pyyaml = "5.4"
requests = "^2.22.0"
pytest-timeout = "1.3.4"
invoke = "1.4.1"
filelock = "^3.0.12"
pytest-xdist = "^2.1.0"
pytest_httpserver = "^0.3.5"
GitPython = "^3.1.12"
[tool.poetry.dev-dependencies]
mkdocs = "^1.2.1"
......@@ -25,10 +13,3 @@ mkdocs-material = "^7.1.8"
mdx-truly-sane-lists = "^1.2"
GitPython = "^3.1.20"
mike = "^1.0.1"
black = "^22.3"
flake8 = "^3.9.2"
pep8-naming = "^0.12.1"
[tool.black]
line-length = 120
target-version = ["py38"]
# Integration tests
This dir contains integration tests, aimed to test the Command Line Interface and its output from a pure user point of
view.
For instructions, see the [contributing guide](../docs/CONTRIBUTING.md#integration-tests).
# This file is part of arduino-cli.
#
# Copyright 2020 ARDUINO SA (http://www.arduino.cc/)
#
# This software is released under the GNU General Public License version 3,
# which covers the main part of arduino-cli.
# The terms of this license can be found at:
# https://www.gnu.org/licenses/gpl-3.0.en.html
#
# You can be released from the requirements of the above licenses by purchasing
# a commercial license. Buying such a license is mandatory if you want to modify or
# otherwise use the software for commercial activities involving the Arduino
# software without disclosing the source code of your own applications. To purchase
# a commercial license, send an email to license@arduino.cc.
# This file is part of arduino-cli.
#
# Copyright 2020 ARDUINO SA (http://www.arduino.cc/)
#
# This software is released under the GNU General Public License version 3,
# which covers the main part of arduino-cli.
# The terms of this license can be found at:
# https://www.gnu.org/licenses/gpl-3.0.en.html
#
# You can be released from the requirements of the above licenses by purchasing
# a commercial license. Buying such a license is mandatory if you want to modify or
# otherwise use the software for commercial activities involving the Arduino
# software without disclosing the source code of your own applications. To purchase
# a commercial license, send an email to license@arduino.cc.
import os
import collections
import json
Board = collections.namedtuple("Board", "address fqbn package architecture id core")
def running_on_ci():
"""
Returns whether the program is running on a CI environment
"""
val = os.getenv("APPVEYOR") or os.getenv("DRONE") or os.getenv("GITHUB_WORKFLOW")
return val is not None
def parse_json_traces(log_json_lines):
trace_entries = []
for entry in log_json_lines:
entry = json.loads(entry)
if entry.get("level") == "trace":
trace_entries.append(entry.get("msg"))
return trace_entries
# This file is part of arduino-cli.
#
# Copyright 2020 ARDUINO SA (http://www.arduino.cc/)
#
# This software is released under the GNU General Public License version 3,
# which covers the main part of arduino-cli.
# The terms of this license can be found at:
# https://www.gnu.org/licenses/gpl-3.0.en.html
#
# You can be released from the requirements of the above licenses by purchasing
# a commercial license. Buying such a license is mandatory if you want to modify or
# otherwise use the software for commercial activities involving the Arduino
# software without disclosing the source code of your own applications. To purchase
# a commercial license, send an email to license@arduino.cc.
import os
import platform
import signal
import shutil
import time
from pathlib import Path
import pytest
import simplejson as json
from invoke import Local
from invoke.context import Context
import tempfile
from filelock import FileLock
from .common import Board
def create_data_dir(tmpdir_factory):
# it seems that paths generated by pytest's tmpdir_factory are too
# long and may lead to arduino-cli compile failures due to the
# combination of (some or all of) the following reasons:
# 1) Windows not liking path >260 chars in len
# 2) arm-gcc not fully optimizing long paths
# 3) libraries requiring headers deep down the include path
# for example:
#
# from C:\Users\runneradmin\AppData\Local\Temp\pytest-of-runneradmin\pytest-0\A7\packages\arduino\hardware\mbed\1.1.4\cores\arduino/mbed/rtos/Thread.h:29, # noqa: E501
# from C:\Users\runneradmin\AppData\Local\Temp\pytest-of-runneradmin\pytest-0\A7\packages\arduino\hardware\mbed\1.1.4\cores\arduino/mbed/rtos/rtos.h:28, # noqa: E501
# from C:\Users\runneradmin\AppData\Local\Temp\pytest-of-runneradmin\pytest-0\A7\packages\arduino\hardware\mbed\1.1.4\cores\arduino/mbed/mbed.h:23, # noqa: E501
# from C:\Users\runneradmin\AppData\Local\Temp\pytest-of-runneradmin\pytest-0\A7\packages\arduino\hardware\mbed\1.1.4\cores\arduino/Arduino.h:32, # noqa: E501
# from C:\Users\RUNNER~1\AppData\Local\Temp\arduino-sketch-739B2B6DD21EB014317DA2A46062811B\sketch\magic_wand.ino.cpp:1: # noqa: E501
# [error]c:\users\runneradmin\appdata\local\temp\pytest-of-runneradmin\pytest-0\a7\packages\arduino\tools\arm-none-eabi-gcc\7-2017q4\arm-none-eabi\include\c++\7.2.1\new:39:10: fatal error: bits/c++config.h: No such file or directory # noqa: E501
#
# due to the above on Windows we cut the tmp path straight to /tmp/xxxxxxxx
if platform.system() == "Windows":
with tempfile.TemporaryDirectory() as tmp:
yield os.path.realpath(tmp)
# We don't need to remove the directory since
# tempfile.TemporaryDirectory deletes itself
# automatically when exits its scope.
else:
data = tmpdir_factory.mktemp("ArduinoTest")
yield os.path.realpath(data)
shutil.rmtree(data, ignore_errors=True)
@pytest.fixture(scope="session")
def session_data_dir(tmpdir_factory):
yield from create_data_dir(tmpdir_factory)
@pytest.fixture(scope="function")
def data_dir(tmpdir_factory):
"""
A tmp folder will be created before running
each test and deleted at the end, this way all the
tests work in isolation.
"""
yield from create_data_dir(tmpdir_factory)
@pytest.fixture(scope="session")
def downloads_dir(tmpdir_factory, worker_id):
"""
To save time and bandwidth, all the tests will access
the same download cache folder.
"""
download_dir = tmpdir_factory.mktemp("ArduinoTest", numbered=False)
# This folders should be created only once per session, if we're running
# tests in parallel using multiple processes we need to make sure this
# this fixture is executed only once, thus the use of the lockfile
if not worker_id == "master":
lock = Path(download_dir / "lock")
with FileLock(lock):
if not lock.is_file():
lock.touch()
yield os.path.realpath(download_dir)
shutil.rmtree(download_dir, ignore_errors=True)
@pytest.fixture(scope="function")
def working_dir(tmpdir_factory):
"""
A tmp folder to work in
will be created before running each test and deleted
at the end, this way all the tests work in isolation.
"""
work_dir = tmpdir_factory.mktemp("ArduinoTestWork")
yield os.path.realpath(work_dir)
shutil.rmtree(work_dir, ignore_errors=True)
@pytest.fixture(scope="function")
def run_command(pytestconfig, data_dir, downloads_dir, working_dir):
"""
Provide a wrapper around invoke's `run` API so that every test
will work in the same temporary folder.
Useful reference:
http://docs.pyinvoke.org/en/1.4/api/runners.html#invoke.runners.Result
"""
cli_path = Path(pytestconfig.rootdir).parent / "arduino-cli"
env = {
"ARDUINO_DATA_DIR": data_dir,
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
"ARDUINO_SKETCHBOOK_DIR": data_dir,
}
(Path(data_dir) / "packages").mkdir(exist_ok=True)
def _run(cmd: list, custom_working_dir=None, custom_env=None, hide=False):
if cmd is None:
cmd = []
quoted_cmd = [f'"{t}"' for t in cmd]
if not custom_working_dir:
custom_working_dir = working_dir
if not custom_env:
custom_env = env
cli_full_line = '"{}" {}'.format(cli_path, " ".join(quoted_cmd))
run_context = Context()
# It might happen that we need to change directories between drives on Windows,
# in that case the "/d" flag must be used otherwise directory wouldn't change
cd_command = "cd"
if platform.system() == "Windows":
cd_command += " /d"
# Context.cd() is not used since it doesn't work correctly on Windows.
# It escapes spaces in the path using "\ " but it doesn't always work,
# wrapping the path in quotation marks is the safest approach
with run_context.prefix(f'{cd_command} "{custom_working_dir}"'):
return run_context.run(cli_full_line, echo=True, hide=hide, warn=True, env=custom_env, encoding="utf-8")
return _run
@pytest.fixture(scope="function")
def daemon_runner(pytestconfig, data_dir, downloads_dir, working_dir):
"""
Provide an invoke's `Local` object that has started the arduino-cli in daemon mode.
This way is simple to start and kill the daemon when the test is finished
via the kill() function
Useful reference:
http://docs.pyinvoke.org/en/1.4/api/runners.html#invoke.runners.Local
http://docs.pyinvoke.org/en/1.4/api/runners.html
"""
cli_path = Path(pytestconfig.rootdir).parent / "arduino-cli"
cli_full_line = f'"{cli_path}" daemon'
env = {
"ARDUINO_DATA_DIR": data_dir,
"ARDUINO_DOWNLOADS_DIR": downloads_dir,
"ARDUINO_SKETCHBOOK_DIR": data_dir,
}
(Path(data_dir) / "packages").mkdir()
run_context = Context()
# It might happen that we need to change directories between drives on Windows,
# in that case the "/d" flag must be used otherwise directory wouldn't change
cd_command = "cd"
if platform.system() == "Windows":
cd_command += " /d"
# Context.cd() is not used since it doesn't work correctly on Windows.
# It escapes spaces in the path using "\ " but it doesn't always work,
# wrapping the path in quotation marks is the safest approach
run_context.prefix(f'{cd_command} "{working_dir}"')
# Local Class is the implementation of a Runner abstract class
runner = Local(run_context)
runner.run(cli_full_line, echo=False, hide=True, warn=True, env=env, asynchronous=True)
# we block here until the test function using this fixture has returned
yield runner
# Kill the runner's process as we finished our test (platform dependent)
os_signal = signal.SIGTERM
if platform.system() != "Windows":
os_signal = signal.SIGKILL
os.kill(runner.process.pid, os_signal)
@pytest.fixture(scope="function")
def detected_boards(run_command):
"""
This fixture provides a list of all the boards attached to the host.
This fixture will parse the JSON output of `arduino-cli board list --format json`
to extract all the connected boards data.
:returns a list `Board` objects.
"""
assert run_command(["core", "update-index"])
result = run_command(["board", "list", "--format", "json"])
assert result.ok
detected_boards = []
for port in json.loads(result.stdout):
for board in port.get("matching_boards", []):
fqbn = board.get("fqbn")
package, architecture, _id = fqbn.split(":")
detected_boards.append(
Board(
address=port["port"]["address"],
fqbn=fqbn,
package=package,
architecture=architecture,
id=_id,
core="{}:{}".format(package, architecture),
)
)
return detected_boards
@pytest.fixture(scope="function")
def copy_sketch(working_dir):
def _copy(sketch_name):
# Copies sketch to working directory for testing
sketch_path = Path(__file__).parent / "testdata" / sketch_name
test_sketch_path = Path(working_dir, sketch_name)
shutil.copytree(sketch_path, test_sketch_path)
return str(test_sketch_path)
return _copy
@pytest.fixture(scope="function")
def wait_for_board(run_command):
def _waiter(seconds=10):
# Waits for the specified amount of second for a board to be visible.
# This is necessary since it might happen that a board is not immediately
# available after a test upload and subsequent tests might consequently fail.
time_end = time.time() + seconds
while time.time() < time_end:
result = run_command(["board", "list", "--format", "json"])
ports = json.loads(result.stdout)
if len([p.get("boards", []) for p in ports]) > 0:
break
return _waiter
[pytest]
filterwarnings =
error
ignore::DeprecationWarning
ignore::ResourceWarning
markers =
slow: marks tests as slow (deselect with '-m "not slow"')
# -x to exit at first failure
# -s to disable per-test capture
# --verbose is what is says it is
# --tb=long sets the length of the traceback in case of failures
# See https://pypi.org/project/pytest-xdist/#parallelization for more info on parallelization
addopts = -x -s --verbose --tb=long
nessuno.name=Arduino Nessuno
nessuno.vid.0=0x2341
nessuno.pid.0=0x0043
nessuno.vid.1=0x2341
nessuno.pid.1=0x0001
nessuno.vid.2=0x2A03
nessuno.pid.2=0x0043
nessuno.vid.3=0x2341
nessuno.pid.3=0x0243
nessuno.upload.tool=avrdude
nessuno.upload.protocol=arduino
nessuno.upload.maximum_size=32256
nessuno.upload.maximum_data_size=2048
nessuno.upload.speed=115200
nessuno.bootloader.tool=avrdude
nessuno.bootloader.low_fuses=0xFF
nessuno.bootloader.high_fuses=0xDE
nessuno.bootloader.extended_fuses=0xFD
nessuno.bootloader.unlock_bits=0x3F
nessuno.bootloader.lock_bits=0x0F
nessuno.bootloader.file=optiboot/optiboot_atmega328.hex
nessuno.build.mcu=atmega328p
nessuno.build.f_cpu=16000000L
nessuno.build.board=AVR_NESSUNO
nessuno.build.core=arduino
nessuno.build.variant=standard
\ No newline at end of file
menu.security=Security setting
uno.menu.security.none=None
uno.menu.security.sien=Signature + Encryption
uno.menu.security.sien.build.postbuild.cmd="{tools.imgtool.cmd}" {tools.imgtool.flags}
uno.menu.security.none.build.postbuild.cmd="{tools.imgtool.cmd}" exit
uno.menu.security.sien.build.keys.keychain={runtime.hardware.path}/Default_Keys
uno.menu.security.sien.build.keys.sign_key=default-signing-key.pem
uno.menu.security.sien.build.keys.encrypt_key=default-encrypt-key.pem
## Create output secure image (bin file)
recipe.hooks.objcopy.postobjcopy.1.pattern={build.postbuild.cmd}
#
# IMGTOOL
#
tools.imgtool.cmd=echo
tools.imgtool.flags=sign --key "{build.keys.keychain}/{build.keys.sign_key}" --encrypt "{build.keys.keychain}/{build.keys.encrypt_key}" "{build.path}/{build.project_name}.bin" "{build.path}/{build.project_name}.bin" --align {build.alignment} --max-align {build.alignment} --version {build.version} --header-size {build.header_size} --pad-header --slot-size {build.slot_size}
\ No newline at end of file
:1020000000800020CD210000B5210000B521000096
:1020100000000000000000000000000000000000C0
:10202000000000000000000000000000B5210000DA
:102030000000000000000000B52100002122000087
:10204000B5210000B5210000B5210000B521000038
:10205000B5210000B5210000B5210000B921000024
:10206000B521000001210000B5210000B5210000CC
:10207000B5210000B521000011210000B5210000AC
:10208000B5210000B5210000B5210000B5210000F8
:1020900000000000B5210000B5210000B5210000BE
:1020A000B5210000B5210000B5210000B5210000D8
:1020B0000000000010B5064C2378002B07D1054B1B
:1020C000002B02D0044800E000BF0123237010BDA4
:1020D000000100200000000044490000044B10B53E
:1020E000002B03D00349044800E000BF10BDC046E8
:1020F00000000000040100204449000070477047C0
:1021000010B5024800F0C3FD10BDC0461C01002000
:1021100010B5024800F0BBFD10BDC04658030020BA
:10212000F7B501240326154F1549380000F040FB90
:102130001449154800F03CFB1449154800F038FBE1
:102140001449154800F034FB1449154800F030FBE1
:10215000144D1549280000F02BFB39002300009690
:1021600000220194114800F029FD290000961E2349
:102170001F2201940E4800F021FDF7BD94050020B8
:1021800000080042000C00429805002000100042A8
:102190009C05002000140042A00500200018004209
:1021A000A4050020A8050020001C00421C010020FE
:1021B00058030020FEE70000034B10B51B68002BFE
:1021C00000D0984710BDC046AC0500200F4A10480B
:1021D000110010B50F4B824202D0934209D1130077
:1021E000824209D100F07EF800F03AFEFEE710CB03
:1021F00010C18142FBD3F3E7074A8B42F2D00021A2
:10220000064B9A42EED202C2FBE7C0460000002015
:10221000000100204849000000010020B40B00200C
:1022200010B500F05CF8002801D100F04DF810BDA9
:10223000014B18607047C046AC050020F7B5134845
:10224000012284461249134C8E68636805689B0E10
:102250001340019288686268019F920E3A40674677
:102260003F6893420ED1BD420CD186420AD35B191E
:10227000FA254868AD00861B07486B437043000D84
:10228000C018FEBD3D0013000600E3E7B0050020C6
:1022900010E000E000ED00E05555000070B5041EB0
:1022A00011D0FFF7CBFFFA260500B60000F016F8B4
:1022B000FFF7C4FF401BB042F8D3FA23013C9B0058
:1022C000ED18002CF4D170BD10B5034A136801332A
:1022D000136000F033FA10BDB005002070470020F5
:1022E000704700001E2270B5464847494368934333
:1022F0001C3A1343436008238C6923438B61434C8E
:10230000434B9C829C8A14439C82DC681442FCD020
:102310000124404A14701578254203D055786DB2D7
:10232000002DF8DB01249460547864B2002CFBDBB0
:10233000394C5460547864B2002CFBDB8224E401F5
:102340005480547864B2002CFBDB02249C840E344D
:10235000DD682542FCD0314CDC621024DD6825426A
:10236000FCD09D8C2E4C2C439C841024DD6825428F
:10237000FCD002249D8C80262C439C844024DD6864
:102380003542FCD0DD682542F9D01024DD682542B5
:10239000FCD000249460547864B2002CFBDB214C08
:1023A0005460547864B2002CFBDB1C6A1E4D2C4038
:1023B00080251C621C6AAC431C62032393601B4B88
:1023C000536053785BB2002BFBDB0023FF240B72BE
:1023D000174A4B728B72CB72164B1A60164B174A08
:1023E0001B6811689A065B01C90E2340520F120246
:1023F0000B431343124A13858023426813434360FF
:1024000070BDC04600400041000400400C060000C2
:1024100000080040000C004001050100B905FF7DE7
:10242000040A000000070300FFFCFFFF0306010091
:10243000006CDC020000002024608000206080002E
:1024400000400042FA212E4B10B51868890001F0B7
:1024500021FE802301385B0498424FD229492A4A41
:102460004860C020136A00061B021B0A0343136264
:1024700000238B6007330B608021136A09061B025F
:102480001B0A0B431362FC22204B196A0A431A628F
:10249000FF22196A12020A431A62A022196AD202A2
:1024A0000A431A621A4B1C005A7852B2002AFBDB0C
:1024B000184A5A80184B1A00597EC9090129FBD0C5
:1024C000C821890099800521D970537EDB09012B31
:1024D000FBD0C02300205B011361907000F022F854
:1024E00063785BB2002BFBDB0C4B0D4A6380D37926
:1024F000DB09012BFBD04123537010BDFEE7C04622
:102500000000002010E000E000ED00E000040040CA
:10251000000C00401E40000000400042214000002E
:10252000004800421F4900B50B004A7ED209012A2B
:10253000FBD001380A282FD801F0A2FD1B2E2E2E29
:102540002E2E062E2E2411001A6917490A400F213B
:102550001A615A788A43110001220A4310E01A696D
:1025600011490A400F211A615A788A431100032247
:10257000F3E71A690C490A400F211A615A788A4315
:102580005A7000BD1A6908490A400F211A615A7829
:102590008A4311000222E0E7F022196912050A437A
:1025A000F3E7C04600400042FFFFFFF0182310B5DC
:1025B00008245843134A13181C57013412D001241D
:1025C0005B6882569C4003290CD808000E49D20152
:1025D0005218D318403301F053FD0210060B0221AC
:1025E0001970546010BD0621197054609461F9E7A8
:1025F0000621197054605461F4E702211970946047
:10260000F0E7C0461C440000004400411823F0B528
:1026100008245843114A13181C5701341BD00126B3
:1026200035005F688356BD400D4ADB019A189068FB
:1026300005420BD10C00601E8441D2194032107843
:1026400034400336A400B04320431070044A9B1862
:10265000002901D15D61F0BD9D61FCE71C440000D3
:1026600000440041182370B5082643432A4AD51870
:10267000AE573400013607D0072907DC00291DDAE0
:1026800001314C424C416442200070BD0B00083BBC
:10269000DBB20024032BF7D8092903D12100FFF76F
:1026A00085FFF1E70A2904D10839FFF77FFF0024ED
:1026B000EAE700240B29E7D10A39F0E76C68012525
:1026C00020009B56C9B262082840DB012C4211D081
:1026D00012480E351B189A1830321078090128401C
:1026E0000143C9B2117041221B19403319780A43C2
:1026F0001A70DCE70F26094D5B199A1830321578ED
:102700001B19B54329431170412240331978040045
:102710000A431A70B8E7C0461C4400000044004158
:10272000014B18607047C046040000200122024B94
:1027300052421A607047C04604000020164A10B585
:102740001368591C27D0013B1360002B23D172B6AC
:102750008122124B92000433934213D3104A012179
:102760001000147D0C42FCD02021148BFF319B08FB
:102770005B0021431183D3610A4B13800123027D47
:102780001A42FCD0BFF34F8F074B084ADA60BFF301
:102790004F8FC046FDE710BD040000200020000060
:1027A0000040004102A5FFFF00ED00E00400FA0533
:1027B000016070479446F0B505AC25789C1E621EFA
:1027C0009441624606689207376824063A432243DA
:1027D0000724326000682140AD010024426829438B
:1027E000022B00D05C030A4322434260F0BD30B5A7
:1027F000C0250368AD031C6812052A402243C0248B
:102800000904A40221400A431A6003685A68144369
:102810005C6030BD0123026811680B4313600368DC
:102820001A68D207FCD4DA69D207F9D470470223B8
:10283000026811680B4313600268D3699B07FCD4DC
:10284000704703681A7ED20702D41A7E9207FCD51D
:102850007047002203685A8370470368187E400758
:10286000C00F70470368187EC00970478023026854
:102870005B42117E0B43137670470368588B8007C9
:10288000C00F704702230268518B0B43538370477C
:102890000368187EC007C00F70470368188DC0B268
:1028A000704703681A7ED207FCD589B201201985CA
:1028B0007047012203689A757047012203681A75F0
:1028C000704700000368104A934213D00F4A9342A6
:1028D00012D00F4A934211D00E4A934210D00E4AA2
:1028E00093420FD001200D4A4042934201D106305D
:1028F00040B270470020FBE70120F9E70220F7E72C
:102900000320F5E70420F3E700080042000C004232
:10291000001000420014004200180042001C004257
:10292000F8B5FFF7CFFF00282CDB1D4BC0001818AF
:1029300005230479C3560320FF221840C0008240BB
:10294000C021D2438140002B1DDB1F2501201D40EB
:10295000C026A840134D7600A851C0269B089B00B6
:102960005B19B6009F593A401143995128603F23A3
:1029700023408024E4011C430B4B5C805A7852B204
:10298000002AFBDBF8BD0F200340083B07489B08EB
:102990009B001B18D86902401143D961E7E7C04684
:1029A0006C48000000E100E0000C004000ED00E099
:1029B000F8B504000F0016001D00FFF7B1FF20005E
:1029C000FFF728FF1C21BB000B4071072268090C90
:1029D0000B431360842322689375012F1AD11021B1
:1029E000012E00D008390C4B69431868C00001F073
:1029F00051FB0722216802408B895203DB04DB0C68
:102A000013438B81226803049089DB0C400B400345
:102A100018439081F8BDC046000000200120704797
:102A200010B50368014A1B6A984710BD13040000E3
:102A30000300FC33D9699A69914203D0DB69C0185D
:102A4000007D704701204042FBE710B5040000699B
:102A5000FFF7E0FE22000023FC329361D36186225F
:102A60009200A4186360A36010BDF0231B011940FD
:102A7000802306209B0099420AD00133FF330130A6
:102A8000994205D0802300205B00994200D1053097
:102A900070470F2001400020012903D00239481E51
:102AA0008141481C704700008923F0B5182785B084
:102AB00002919B000400C05C3B0008214343324E5E
:102AC0001500F3185956FFF7CDFD304B0821E05C97
:102AD0003B004343F3185956FFF7C4FD2C4BE25C0F
:102AE0000393022A09D11133E05CFF2805D00821A5
:102AF0004743F7197956FFF7B5FD8A27BF00E05D18
:102B0000FF2819D00121FFF751FD1822E35D21496B
:102B10005A43B356B618DB0158188B218900605010
:102B20001D4901225B188C218900635071688A401D
:102B30008D21890062501A600122029B11002069D8
:102B4000FFF736FF29002000FFF78FFF290006005E
:102B50002000FFF79EFFF0221540303D6A425541AC
:102B600003003100206901220095FFF723FE0B4B83
:102B70002069E25C039BE15CFFF739FE2069FFF707
:102B800056FE05B0F0BDC0461C4400002502000002
:102B900027020000184400411444004126020000AE
:102BA000802210B504000021520001F040FB2300F8
:102BB0000022FC3320005A609A6010BDF7B51D005A
:102BC00008AB1B780400009309AB1B781600019337
:102BD00000234360FA239B008360104B0F000833EF
:102BE00003601430FFF7DCFF20001D30FF30FFF7DB
:102BF000D7FF89239B002761E654094B009AE554CF
:102C0000084B2000E254019A074BE2548A22293BE8
:102C1000FF3B9200A3541032A354FEBD9C48000019
:102C20002502000026020000270200000300FC33FA
:102C300058689B68C01A01D50130FF30704710B545
:102C4000040020001D30FF30FFF7F0FF0028F8D10E
:102C50002069FFF7F6FD10BD10B51430FFF7E6FF51
:102C600010BD0300FC3359689A68914204DB5A682E
:102C70009868801AFF30704798685B68C01A0138FE
:102C8000F9E710B51D30FF30FFF7EBFF10BD10B5B1
:102C900004000069FFF7F1FD002805D02069FFF767
:102CA000FCFD2069FFF7EEFD2069FFF7D6FD002847
:102CB00020D02069FFF7F1FD2200FC329369D16931
:102CC0000133DBB28B4203D09169611808759361BF
:102CD0008A239B00E35CFF2B0CD020001430FFF70D
:102CE000C0FF092806DC8B238D229B009200E3584D
:102CF000A2581A602069FFF7CBFD00281AD02000E7
:102D00001D30FF30FFF792FF002822D086239B0062
:102D1000E31899685A68914218D08E219A68490040
:102D2000A218515C9A680132D2B29A602069C9B285
:102D3000FFF7B7FD2069FFF795FD002805D0206952
:102D4000FFF794FD2069FFF784FD10BD0121494282
:102D5000ECE72069FFF7B1FDECE7000070B5040077
:102D600000690D00FFF794FD00283FD1FF26862360
:102D70009B00E3185A689968013232408A4224D194
:102D8000EFF31083DB070ED41E4B5B68DB05DA0D17
:102D9000002BECD0103A53B212060DD49B081A4AFD
:102DA000C0339B009B582069FFF772FD0028DED0DE
:102DB0002000FFF76CFFDAE70F221340083B134AAD
:102DC0009B089B009B181B68EDE75A680132164070
:102DD0009A68964205D08E215A684900A218555427
:102DE0005E602069FFF765FD012070BD20001D3089
:102DF000FF30FFF71BFF0028B8D129002069FFF73B
:102E000050FDF1E700ED00E000E100E01CED00E026
:102E10000300FC33D9699A6970B5040091421AD055
:102E2000DA698218157DDA690132D2B2DA618A2351
:102E30009B00E35CFF2B0CD020001430FFF711FF48
:102E40000A2806DD8C238D229B009200E358A258AD
:102E50001A60280070BD01256D42E8E77047000048
:102E600010B5FFF7EFFA01F0A1F9FFF7F7FF012026
:102E7000FFF714FA094C200000F052FA200000F08D
:102E8000C7FAFFF73BF9FFF73AF9FFF727FA044BC8
:102E9000002BF8D000E000BFF5E7C046B4050020E5
:102EA00000000000F8B505000E0017000024BC4229
:102EB00008D02B682800315D1B689847002801D096
:102EC0000134F4E72000F8BD704770B50F26CB1D24
:102ED00002003240D5B22C0000093034092A00DD4E
:102EE00007341C705A1E994200D170BD1300EFE7E1
:102EF00010B50400806901F087F9A06A01F084F937
:102F0000200010BD10B50400FFF7F2FF200000F014
:102F100077FF200010BD000070B5032908D1324BA7
:102F20008000C058002802D00368DB68984770BD55
:102F300082291FD1C3B22D4D5A01AA1891692C4C78
:102F400080010C40C0218905214391612949083342
:102F50004018802150612A685B01D01804794942E9
:102F6000214301717020995C8143080030210143A5
:102F70009954DCE70029DAD1C024C1B21B4E4A01C2
:102F8000B21893681A4DA4052B40234393601A4B43
:102F90008001C0180B0050603068072608335B01C1
:102FA000195CB1430E0001213143195491690D4060
:102FB0002C43946170240F495161195CA1430C00AA
:102FC00010212143195491680C4CC3180C408021E6
:102FD0004903214391609168890B890391604022E4
:102FE00059790A435A71A2E7B80500206C0A0020FB
:102FF000FFFFFF8FE0050020A0070020FF3F00F04B
:10300000EFF3108303600123436072B670470368D7
:10301000002B02D162B6BFF36F8F704737B50569D9
:1030200004006846002D14D1FFF7EAFF019B621DE2
:10303000013B02D3D57FEDB2FAE768460193FFF773
:10304000E6FF002D01D100203EBD206AE369C01AD1
:10305000FAE7FFF7D5FF22000025019B3432013B40
:1030600002D31578EDB2FAE768460193FFF7CFFF78
:10307000002DE8D0206BE36AE9E70000F0B5FF25FA
:1030800001264268836811682B405B01CC186419E3
:10309000A77AD3183E43A672C6689C680B4FB60445
:1030A00036093C4034439C6083682B405B01D21856
:1030B0009468A40BA4039460402283682B400833D7
:1030C0005B01CB1819790A431A71F0BDFF3F00F07C
:1030D000F7B5056904000E0017006846002D43D1BE
:1030E000FFF78EFF019B601D013B5A1C0BD0C27F76
:1030F000591E002A05D168460193FFF788FF280072
:10310000FEBD0B00F1E768460193FFF780FFE3691E
:10311000AF420AD0226A9A4207D95A1CE261A269D8
:10312000D3181B7873550135F1E7226A9A42E6D12C
:103130000023E361013368462361FFF761FF22004A
:103140000021019B671D013B3532581CD3D0F97714
:1031500010785E1E002805D0200011700193FFF743
:103160008DFFECE73300F0E7FFF74AFF2000019BFB
:103170003430013B5A1C06D00278591ED5B2002AC1
:10318000B9D00B00F6E7684601930025FFF73FFF33
:10319000E36ABD4202D0226B9A421CD8226B9A424B
:1031A000ADD100236846E3622361FFF729FF2700C2
:1031B00022000021019B3437013B3532581C9AD044
:1031C000397010785E1E00280DD020001170019318
:1031D000FFF754FFEBE75A1CE262A26AD3181B7890
:1031E00073550135D4E73300E8E7F7B582684368E3
:1031F000D2B2110004000831186849014118C87999
:10320000C00729D501255201CD719B189A686169C3
:103210009204920C002923D12262226A002A41D012
:10322000A26A656168465A60FFF7EAFE3422944656
:103230002200019B671D013BA4443532591C2DD04F
:103240006146FD770978581ECEB2002905D001935A
:1032500068461570FFF7DBFEF7BD03001670EDE75B
:103260002263226B002A1DD0002227006261A2691E
:1032700068465A60FFF7C4FE019B621D9446013BFD
:1032800034373032591C09D061463D70C97F581E11
:10329000CEB20029DBD103001670F3E76846019334
:1032A000FFF7B5FE2000FFF7E9FED5E713B56A4644
:1032B00000230C00D01DD37100F0F4FD2368181812
:1032C000206000F083FE6B46D91D00F04BFE2368A2
:1032D00018186B462060D87916BD000003290ED15E
:1032E00080220E4B62311B68FF31585C5242024310
:1032F0005A5468226339FF32FF39995470470129C3
:10330000FCD18022054B24311B68FF31585C5242AE
:1033100002435A5428222339FF32EDE76C0A002079
:1033200070B500252F4B012104001A201D70FFF7F6
:103330003DF901211A20FFF769F92B4B01211920D2
:103340001D70FFF733F901211920FFF75FF92023E2
:10335000264A0F20D1690B43D361012224490B78FF
:1033600013430B70234B19788143197006211D7884
:103370002943197020490D782A430A701A780240AF
:103380001A70602219780A431A701C4B1C4A5A8022
:103390005A78D209FCD11B48FEF74AFF1A4D280083
:1033A00000F028FE280000F03BFE7F212B68C120A2
:1033B0001A7880000A401A70042219780A430C21F6
:1033C0001A701A898A4311491A810A581202120A7C
:1033D0000A5080220A6019787E3A0A431A70012343
:1033E000237070BDD5050020D405002000040040E6
:1033F000584400413C44004159440041000C004005
:1034000006400000D93D00006C0A002000E100E009
:103410000078002810D00121084B1B681A898A43C4
:103420001A810822198B0A431A830422198B0A4332
:103430001A830022024B1A607047C0466C0A0020B3
:10344000640A00200A000E498B699B0B9B038B6169
:103450000B680221FF3319729879823901439971FF
:10346000197A8907FCD57F20064B0240997A81435F
:10347000114380229972997A52420A439A72704794
:103480006C0A00200050004110B50B790C00002B95
:103490000CD1080000F014FD002801D0012010BD5F
:1034A000094A93699B0B9B039361F7E700F08EFD3C
:1034B000210000F07BFD0028F0D1034A93699B0BAB
:1034C0009B039361EBE7C0466C0A0020F7B50D0043
:1034D0001100832A19D1EBB2324C5A01A21891691A
:1034E0003148AD010840C0218905014391612F4950
:1034F00020686D187021083355615B011A5C8A439E
:10350000110040220A431A54F7BD022A45D1284A25
:10351000AB009858002802D003685B6998473820B0
:1035200000F06AFC234B8027036000231D4E7F00C0
:10353000421D036203614361C36146608560C760E9
:10354000D3772F32C36203630400137038005370C3
:1035500000F050FE0190A061380000F04BFEEBB28D
:103560005A01A062B21891680F4808330840C02180
:10357000890501439160316807265B01585CAD0005
:10358000B0430600032030435854019B2000536091
:10359000FFF774FD064B5C51B6E72800FFF7BCFC53
:1035A000B2E7C0466C0A0020FFFFFF8FE005002055
:1035B000B8050020DC48000070B505000124064B6A
:1035C000A200D258002A05D021002800FFF77EFF74
:1035D0000134F4E770BDC04608000020084B8A00A3
:1035E000D05810B5002803D003689B68984710BDD9
:1035F000044BC9B24901591888688004800CF6E769
:10360000B80500206C0A002010B50C00FFF7E6FF9B
:1036100000280CD0064BE4B21968802308346401FA
:103620000C1962795B42134363710223E37110BD8D
:103630006C0A002070B5CBB2124A13485C018901B4
:103640008918021951609168104D08330D4080218E
:1036500089022943402591609168890B8903916013
:1036600001685A018A1816793543157195796D06E6
:10367000FCD55B01C918CB79DB07FCD50019806844
:10368000C0B270BDA00700206C0A0020FF3F00F010
:1036900070B5140040220B4B0D001B68FF335979A5
:1036A0000A435A710021FFF7C5FFA04200D920004C
:1036B00000230549A34203D0CA5CEA540133F9E769
:1036C00070BDC0466C0A0020A007002010B50C4851
:1036D000C9B24901421893689B049B0C3F2B0BD93C
:1036E0009468403B9B04A40B9B0CA403234393606E
:1036F00041188868C0B210BD93689B0B9B03F6E726
:103700006C0A0020F0B51C002F4B85B01B6806002A
:103710000D000192002B54D02C4F3B78D9B2002BD6
:1037200002D11920FEF772FF64233B70284BAA00D8
:10373000D058002808D0036822005B680199984798
:103740000400200005B0F0BD29003000FFF746FF5F
:10375000844204D929003000FFF740FF040029000B
:103760003000FFF7B3FF0121EBB21A4F03935B0167
:103770000293029A3B6801989B18FF335A7A0A43D6
:103780005A72154BA9012200C91800F047FD002C00
:10379000D7D029003000FFF721FF0028D1D14021E8
:1037A000039B3A6808335B01D318187901431971F8
:1037B0000121D971029BD318FF339A7A0A439A7276
:1037C000BFE701246442BCE7640A0020D40500205E
:1037D000B80500206C0A0020A007002013B56B4636
:1037E000DC1D22000123FFF78DFF012801D1207885
:1037F00016BD01204042FBE7F0B51C003A4B85B0F6
:103800001B680E000192002B3FD08023DB019C42FD
:103810003BD8364D2B78D9B2002B02D11A20FEF7B7
:10382000F5FE642300272B70314BB201D3180293AD
:10383000002C2CD02F4B1B680393FF2333401D001B
:1038400000930835039B6D015D19AB79DB0921D02D
:10385000294B2A49186800F01DFC294B17215843B1
:1038600000F018FC274BEA79920713D49A5D002ADE
:1038700001D10138F7D201229A55009B5A011D4B04
:103880009B189A69920B92039A6101277F42380034
:1038900005B0F0BD00221B4B25009A55402C00D9E5
:1038A00040252A000199029800F0B8FC009BA90469
:1038B0005A01104B890C9B18029A7F195A619A6918
:1038C000641B920B92030A439A61009B039A08338C
:1038D0005B01D3180222DA715979823A0A435A718C
:1038E000019B5B190193A3E7640A0020D505002022
:1038F000E00500206C0A00200000002040420F007C
:1039000070110100D705002070B50C001D000D4B93
:10391000A601F618110030002A0000F07FFCE4B286
:10392000094A640114196661A369084928000B401B
:10393000A361A169AB04890B9B0C89031943A161A5
:1039400070BDC046E00500206C0A0020FF3F00F07B
:10395000F7B5104B0F001B7814000190002B0CD111
:103960000D4B16001D78002D09D00C4E0C483588E3
:1039700028182D1900F052FC35802000FEBD002EC5
:10398000FBD033007A1900210198FFF7BDFF2D18F5
:10399000361AF4E760090020610A0020620A00205C
:1039A00061090020F8B500200D00140000AF012AC5
:1039B00027D9D31D6A46DB08DB00D31A9D460800D1
:1039C00000F0F8FC6E460323022200210130400083
:1039D00030707370A2420DD2287800280AD0531C90
:1039E000DBB20135B0549C4203D00232F154D2B262
:1039F000F0E7220031000448FFF7AAFF431E984178
:103A0000C0B2BD46F8BDC046B4050020F0B50025E3
:103A1000012785B0184B0E0069461F700400009501
:103A2000FFF744FC154B01A90B806A3BFF3BCB71B0
:103A30006E3B0B72009B320009334B800E4B8D7135
:103A40004F7108711D70092E0FD00D4E092237706D
:103A50000C4F200000953D80FFF77AFF694620005B
:103A6000FFF724FC3A88084935702000FFF770FF03
:103A7000012005B0F0BDC046600900200902000029
:103A8000610A0020620A002061090020F0B5CF78A9
:103A900005000E0093B0022F09D1C9882B48FFF70B
:103AA000B5FF441EA041C4B2200013B0F0BD00F029
:103AB0008DFA310000F06AFA002803D0C417241AE6
:103AC000E40FF1E7012F0BD1F2882149112A11D817
:103AD000D2B2002A0ED02800FFF73AFF0124E3E714
:103AE0000400032FE0D1B378002B05D1F2881949E7
:103AF000032AEDD90A78EEE7022B06D1B2791649EE
:103B00002800FFF74FFF0400CEE7012B02D1B27966
:103B10001249F5E7032BC7D1114B01A91868FFF72C
:103B2000D4F9104B03A91868FFF7CFF90E4B05A97C
:103B30001868FFF7CAF90D4B07A91868FFF7C5F910
:103B40006B460533DC77B27901A9D9E7B4050020CB
:103B50000D49000000490000F4480000044900003D
:103B60000CA0800040A0800044A0800048A08000FD
:103B700037B5050048780C000B2810D800F080FA03
:103B8000061B0F310F484D7551546E71097801AA0B
:103B9000002906D1022311802800FFF7B5FE01207D
:103BA0003EBD00231380324B1B78012B00D11370D4
:103BB00002230021F0E78A780023012A09D16A460E
:103BC00093802C4B1B78012B00D11371022301AA87
:103BD000EFE7274A1370284A93699B0B9B03936175
:103BE000DDE78C78012C07D1224B01AA1C70234BF6
:103BF0001B7813702300DCE700208442D0D11C4BDB
:103C000001301D4A187093699B0B9B039361C7E7B2
:103C100028008978FFF716FCC1E72800FFF736FF78
:103C2000BEE70123164AC4E70B780020DB06B7D1B4
:103C30002800FFF7C1FC2A200221A278104BFF3098
:103C40001A600D4A13681C5C21434A241954FF343E
:103C5000195D2938FF3801431955D4E70123094A72
:103C6000A7E78A78074B1A60B5E7002098E7C046B7
:103C7000D6050020DE0500206C0A0020D048000098
:103C8000640A0020680A00204B4BF7B51C78070037
:103C9000002C00D083E0494E33689B8B1B070ED568
:103CA00021002000FFF738F9326810231100FF319E
:103CB000887A03438B72424B1C60082393833368DA
:103CC0009A8B52071FD504229A833E4A1378002B01
:103CD0000AD01378013BDBB213701378002B03D1A9
:103CE00001211A20FEF792FC374A1378002B0AD0E4
:103CF0001378013BDBB213701378002B03D1012141
:103D00001920FEF783FC3368FF331A7AD2061ED5DA
:103D100010221A72597930320A435A7160232B49A2
:103D200038000A781A423BD1FFF722FF3368FF338D
:103D3000002838D08022997952420A439A711A7A1F
:103D4000520604D540221A72597A0A435A723368CD
:103D500000241D8C01239D43EDB20193E1B2002D9F
:103D60001DD02B002341019A134215D02300326845
:103D700008335B01D318DA79D20702D4DB799B07C9
:103D800007D5134BA200D058002810D003681B6839
:103D90009847019BA3409D430134092CDED1F7BD18
:103DA000FFF772FBC2E720210A4A9171C7E738008A
:103DB000FFF794FAEDE7C046610A00206C0A002084
:103DC000640A0020D5050020D4050020A0070020AB
:103DD000B8050020FF50004110B50248FFF754FF1E
:103DE00010BDC046B4050020014B024A1A6070475E
:103DF0006C0A00200050004110B500F0FBF910BD26
:103E000010B500F001FA10BD3F20704713B56B46A6
:103E10000268D9710733546819000122A04716BD02
:103E200010B502210069FFF7D9FB10BD10B50321C1
:103E30000069FFF7E9FB10BD10B51300084A040044
:103E4000D279002A03D101230020636010BD0A004B
:103E500000690321FFF7D0FC0028F4D0F6E7C04644
:103E60003400002010B5054C03002068421C04D12A
:103E70001A68180052699047206010BD8000002029
:103E8000074A0300106810B5411C03D001235B42B0
:103E9000136010BD02211869FFF7A0FCF9E7C046C6
:103EA0008000002010B503784222023303700249DB
:103EB0000248FFF74DFD10BD3C000020B405002076
:103EC00010B50178030042780020A12908D1212AE9
:103ED00005D1174917481A3AFFF73AFD012010BDDE
:103EE0002129FCD1202A13D111491248193AFFF790
:103EF000CFFB96220E4BD200196891420ED1DA798F
:103F000001231A420AD1FA20FEF70AFC0020E6E754
:103F1000222A06D19A78064BDA71EAE7FEF706FC08
:103F2000F4E7232ADBD15A88034B1A60D7E7C0464F
:103F300034000020B405002030000020FA220021C7
:103F4000054B92009A60054A08321A60044A59608B
:103F50001A6119767047C046700B00202049000096
:103F6000B405002070B50E0000254468002C0BD06D
:103F70002368310020005B689847002802DBE46872
:103F80002D18F3E701256D42280070BD70B50D00B6
:103F90004468002C08D02368290020009B689847BB
:103FA000002802D1E468F4E7200070BD70B50D0070
:103FB0004468002C08D02368290020001B6898471B
:103FC000002802D1E468F4E7200070BD064A01230E
:103FD000116810B50C0005481C40194203D1044972
:103FE00044600180136010BD8C0B0020900B0020FA
:103FF0000204000070B50400012320CC00212A78BF
:104000002000134380222B70520000F010F9AB788F
:10401000DB07FCD4AB789B07F9D46C6270BD000061
:104020001F22144B70B51B68590B9C0C9B0111404F
:104030005B0F22401F2900D11A391F2A00D1023AF2
:10404000072B00D1043B1F2500688E01048D0A490F
:104050002A40214031430185018D14000A00AA4302
:1040600022430285028D1903044B13400B43038541
:1040700070BDC046246080003FF8FFFFFF8FFFFF48
:1040800002B4714649084900095C49008E4402BCEB
:104090007047C046002243088B4274D303098B4209
:1040A0005FD3030A8B4244D3030B8B4228D3030C08
:1040B0008B420DD3FF22090212BA030C8B4202D3AA
:1040C0001212090265D0030B8B4219D300E0090AD2
:1040D000C30B8B4201D3CB03C01A5241830B8B42DB
:1040E00001D38B03C01A5241430B8B4201D34B03C4
:1040F000C01A5241030B8B4201D30B03C01A524129
:10410000C30A8B4201D3CB02C01A5241830A8B42AD
:1041100001D38B02C01A5241430A8B4201D34B0296
:10412000C01A5241030A8B4201D30B02C01A5241FA
:10413000CDD2C3098B4201D3CB01C01A52418309AE
:104140008B4201D38B01C01A524143098B4201D3E8
:104150004B01C01A524103098B4201D30B01C01A13
:104160005241C3088B4201D3CB00C01A524183088D
:104170008B4201D38B00C01A524143088B4201D3BA
:104180004B00C01A5241411A00D20146524110461A
:104190007047FFE701B5002000F006F802BDC046F9
:1041A0000029F7D076E770477047C04670B5002603
:1041B0000C4D0D4C641BA410A64209D1002600F042
:1041C00021F90A4D0A4C641BA410A64205D170BD0A
:1041D000B300EB5898470136EEE7B300EB58984729
:1041E0000136F2E7E8000020E8000020E8000020A7
:1041F000F800002010B5034B0100186800F06AF8C1
:1042000010BDC0468400002010B5034B01001868A3
:1042100000F016F810BDC04684000020002310B541
:104220009A4200D110BDCC5CC4540133F8E70300BE
:104230008218934200D1704719700133F9E70000EA
:1042400070B50500002910D00C1F2368002B00DA80
:10425000E418280000F0B6F81D4A1368002B05D1B9
:1042600063601460280000F0B5F870BDA34208D95F
:10427000216860188342F3D118685B684118216097
:10428000EEE71A005B68002B01D0A342F9D9116850
:104290005018A0420BD120680918501811608342B1
:1042A000E0D118685B68411811605360DAE7A042FA
:1042B00002D90C232B60D5E721686018834203D113
:1042C00018685B684118216063605460CAE7C046A3
:1042D000980B0020F8B50323CD1C9D43083506003C
:1042E0000C2D1FD20C25A9421ED8300000F06AF810
:1042F00025490A681400002C1AD1244F3B68002B72
:1043000004D12100300000F043F83860290030006B
:1043100000F03EF8431C2BD10C233000336000F03A
:1043200059F803E0002DDEDA0C2333600020F8BDDD
:1043300023685B1B19D40B2B03D92360E418256079
:1043400003E06368A2420ED10B60300000F042F837
:10435000200007220B30231D9043C21A9842E6D05A
:104360001B1AA350E3E75360EFE722006468C2E73B
:104370000323C41C9C43A042E1D0211A300000F06A
:1043800007F8431CDBD1C7E7980B00209C0B0020EB
:10439000002370B5064D040008002B6000F024F8DF
:1043A000431C03D12B68002B00D0236070BDC04696
:1043B000A40B00200023C25C0133002AFBD1581E4D
:1043C0007047000010B5024800F00CF810BDC04660
:1043D000AC0B002010B5024800F005F810BDC04637
:1043E000AC0B002070477047044A03001068002897
:1043F00002D0C318136070470148FAE7A00B0020F1
:10440000B40B0020F8B5C046F8BC08BC9E46704707
:10441000F8B5C046F8BC08BC9E46704700000000D6
:104420000B000000020000001C000000FF00010162
:1044300001010B00000000000A0000000200000063
:104440001C000000FF00000100010A000000000045
:104450000E0000000800000004000000FF00000043
:1044600000000E0000000000090000000400000031
:104470001C000000FF000100010009000000000016
:1044800008000000040000001C000000FF00000005
:1044900000001000000000000F00000004000000F9
:1044A0001C000000FF00010301030F0000000000DA
:1044B00014000000050000002C000000FF000200B6
:1044C00002000400000000001500000008000000C9
:1044D00004000000FF00FFFFFFFF050000000000D8
:1044E00006000000040000001C000000060000019F
:1044F00000010600000000000700000004000000AA
:104500001C0000000700010101010700000000007D
:1045100012000000040000001C000000FF00000367
:104520000003020000000000100000000400000072
:104530001C000000FF00000200020000000000005C
:1045400013000000050000002C000000FF00030025
:104550000300030000000000110000000400000040
:104560001C000000FF000102010201000000000029
:104570000200000001000000020000000000FFFF38
:10458000FFFF020001000000080000000100000021
:1045900018000000020000040004080001000000F0
:1045A00009000000010000001800000003000104E1
:1045B00001040900000000000400000001000000E8
:1045C00018000000040000000000040000000000CB
:1045D00005000000010000001800000005000100B7
:1045E00001000500010000000200000001000000C1
:1045F000000000000A00FFFFFFFF020000000000B3
:10460000160000000200000004000000FF00FFFF91
:10461000FFFF06000000000017000000020000007D
:1046200004000000FF00FFFFFFFF07000000000084
:104630000C0000000300000004000000FF00FFFF6A
:10464000FFFF0C00010000000A0000000300000052
:1046500004000000FF00FFFFFFFF0A000100000050
:104660000B0000000300000004000000FF00FFFF3B
:10467000FFFF0B0001000000030000000B00000022
:1046800004000000FF00FFFFFFFFFF00000000002C
:104690001B0000000B00000004000000FF00FFFFF3
:1046A000FFFFFF00000000001C00000006000000EB
:1046B00000000000FF00FFFFFFFFFF000000000000
:1046C000180000000600000000000000FF00FFFFCF
:1046D000FFFFFF00000000001900000006000000BE
:1046E00000000000FF00FFFFFFFFFF0001000000CF
:1046F000160000000300000000000000FF00FFFFA4
:10470000FFFFFF0001000000170000000300000091
:1047100000000000FF00FFFFFFFFFF00000000009F
:10472000160000000200000000000000FF00FFFF74
:10473000FFFFFF0000000000170000000200000063
:1047400000000000FF00FFFFFFFFFF00000000006F
:10475000130000000200000000000000FF00FFFF47
:10476000FFFFFF000000000010000000020000003A
:1047700000000000FF00FFFFFFFFFF00000000003F
:10478000120000000200000000000000FF00FFFF18
:10479000FFFFFF0000000000110000000200000009
:1047A00000000000FF00FFFFFFFFFF00000000000F
:1047B0000D000000040000000C000000FF000100DC
:1047C000FFFF0D00000000001500000005000000C4
:1047D0000C000000FF000300FFFFFF0000000000CE
:1047E00006000000040000000C000000FF000001B3
:1047F000FFFFFF00000000000700000004000000B1
:104800000C000000FF000101FFFFFF00000000009E
:10481000030000000100000002000000FF00FFFF95
:10482000FFFFFF0000000000020000000100000088
:10483000020000001400FFFFFFFF02000000000064
:104840000600000001000000020000000600000158
:104850000001060000000000070000000100000049
:1048600002000000070001010101070000080042EA
:1048700014090000000C0042150A0000001000425C
:10488000160B000000140042170C00000018004234
:10489000180D0000001C0042190E0000000000006E
:1048A000000000005D2D0000A52E0000832C0000FC
:1048B0003F2C0000592C0000112E0000312A00006E
:1048C000212A0000A92A00004B2A00001D2A00000E
:1048D000000000000000000000000000EB310000BC
:1048E000D13000001D300000C92E0000F12E000064
:1048F000052F000046656174686572204D30000028
:104900000403090441646166727569740012010050
:1049100002EF0201409A230B800001010203010013
:1049200000000000000000000D3E0000393E0000C5
:10493000093E00002D3E0000213E0000813E0000A7
:08494000653E000000000000CC
:1049480040420F00FFFFFFFF00000000830000004F
:1049580002000000820000000000000000000000CB
:10496800000000000000000000000000000000003F
:10497800FFFFFFFF00C2010000000800080B000253
:1049880002020000090400000102020000052400E0
:104998001001042402060524060001052401010172
:1049A8000705810310001009040100020A00000035
:1049B80007050202400000070583024000000000CE
:1049C800FFFFFFFF8800002000000000000000003B
:1049D80000000000000000000000000000000000CF
:1049E80000000000000000000000000000000000BF
:1049F80000000000000000000000000000000000AF
:104A0800000000000000000000000000000000009E
:104A1800000000000000000000000000000000008E
:104A28000000000000000000DD200000212100003F
:104A3800E93D00003D3F0000B520000000000000F7
:04000003000021CD0B
:00000001FF
This source diff could not be displayed because it is too large. You can view the blob instead.
:100000000C9434000C9446000C9446000C9446006A
:100010000C9446000C9446000C9446000C94460048
:100020000C9446000C9446000C9446000C94460038
:100030000C9446000C9446000C9446000C94460028
:100040000C9448000C9446000C9446000C94460016
:100050000C9446000C9446000C9446000C94460008
:100060000C9446000C94460011241FBECFEFD8E03C
:10007000DEBFCDBF21E0A0E0B1E001C01D92A930FC
:10008000B207E1F70E9492000C94DC000C9400008F
:100090001F920F920FB60F9211242F933F938F93BD
:1000A0009F93AF93BF938091050190910601A0911A
:1000B0000701B09108013091040123E0230F2D378F
:1000C00058F50196A11DB11D2093040180930501EF
:1000D00090930601A0930701B0930801809100015D
:1000E00090910101A0910201B09103010196A11D1F
:1000F000B11D8093000190930101A0930201B09380
:100100000301BF91AF919F918F913F912F910F90DC
:100110000FBE0F901F90189526E8230F0296A11D81
:10012000B11DD2CF789484B5826084BD84B58160DE
:1001300084BD85B5826085BD85B5816085BD8091B2
:100140006E00816080936E0010928100809181002A
:100150008260809381008091810081608093810022
:10016000809180008160809380008091B1008460E4
:100170008093B1008091B00081608093B000809145
:100180007A00846080937A0080917A008260809304
:100190007A0080917A00816080937A0080917A0061
:1001A000806880937A001092C100C0E0D0E0209770
:0C01B000F1F30E940000FBCFF894FFCF99
:00000001FF
:020000040000FA
:100000000C9434000C9446000C9446000C9446006A
:100010000C9446000C9446000C9446000C94460048
:100020000C9446000C9446000C9446000C94460038
:100030000C9446000C9446000C9446000C94460028
:100040000C9448000C9446000C9446000C94460016
:100050000C9446000C9446000C9446000C94460008
:100060000C9446000C94460011241FBECFEFD8E03C
:10007000DEBFCDBF21E0A0E0B1E001C01D92A930FC
:10008000B207E1F70E9492000C94DC000C9400008F
:100090001F920F920FB60F9211242F933F938F93BD
:1000A0009F93AF93BF938091050190910601A0911A
:1000B0000701B09108013091040123E0230F2D378F
:1000C00058F50196A11DB11D2093040180930501EF
:1000D00090930601A0930701B0930801809100015D
:1000E00090910101A0910201B09103010196A11D1F
:1000F000B11D8093000190930101A0930201B09380
:100100000301BF91AF919F918F913F912F910F90DC
:100110000FBE0F901F90189526E8230F0296A11D81
:10012000B11DD2CF789484B5826084BD84B58160DE
:1001300084BD85B5826085BD85B5816085BD8091B2
:100140006E00816080936E0010928100809181002A
:100150008260809381008091810081608093810022
:10016000809180008160809380008091B1008460E4
:100170008093B1008091B00081608093B000809145
:100180007A00846080937A0080917A008260809304
:100190007A0080917A00816080937A0080917A0061
:1001A000806880937A001092C100C0E0D0E0209770
:0C01B000F1F30E940000FBCFF894FFCF99
:107E0000112484B714BE81FFF0D085E080938100F7
:107E100082E08093C00088E18093C10086E0809377
:107E2000C20080E18093C4008EE0C9D0259A86E02C
:107E300020E33CEF91E0309385002093840096BBD3
:107E4000B09BFECF1D9AA8958150A9F7CC24DD24C4
:107E500088248394B5E0AB2EA1E19A2EF3E0BF2EE7
:107E6000A2D0813461F49FD0082FAFD0023811F036
:107E7000013811F484E001C083E08DD089C08234E0
:107E800011F484E103C0853419F485E0A6D080C0E4
:107E9000853579F488D0E82EFF2485D0082F10E0AE
:107EA000102F00270E291F29000F111F8ED06801E7
:107EB0006FC0863521F484E090D080E0DECF843638
:107EC00009F040C070D06FD0082F6DD080E0C81688
:107ED00080E7D80618F4F601B7BEE895C0E0D1E017
:107EE00062D089930C17E1F7F0E0CF16F0E7DF06D8
:107EF00018F0F601B7BEE89568D007B600FCFDCFD4
:107F0000A601A0E0B1E02C9130E011968C91119780
:107F100090E0982F8827822B932B1296FA010C0160
:107F200087BEE89511244E5F5F4FF1E0A038BF0790
:107F300051F7F601A7BEE89507B600FCFDCF97BE46
:107F4000E89526C08437B1F42ED02DD0F82E2BD052
:107F50003CD0F601EF2C8F010F5F1F4F84911BD097
:107F6000EA94F801C1F70894C11CD11CFA94CF0C13
:107F7000D11C0EC0853739F428D08EE10CD085E9AC
:107F80000AD08FE07ACF813511F488E018D01DD067
:107F900080E101D065CF982F8091C00085FFFCCF94
:107FA0009093C60008958091C00087FFFCCF809118
:107FB000C00084FD01C0A8958091C6000895E0E648
:107FC000F0E098E1908380830895EDDF803219F02E
:107FD00088E0F5DFFFCF84E1DECF1F93182FE3DFCA
:107FE0001150E9F7F2DF1F91089580E0E8DFEE27F6
:047FF000FF270994CA
:027FFE00040479
:00000001FF
#define TRUE FALSE
\ No newline at end of file
#include <Arduino.h>
#line 1 {{QuoteCppString .sketch.MainFile.Name}}
void setup() {
}
void loop() {
}
#line 1 {{QuoteCppString (index .sketch.OtherSketchFiles 0).Name}}
#line 1 {{QuoteCppString (index .sketch.OtherSketchFiles 1).Name}}
String hello() {
return "world";
}
String hello() {
return "world";
}
\ No newline at end of file
void setup() {
}
void loop() {
}
\ No newline at end of file
{
"packages": [
{
"maintainer": "Arduino",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"websiteURL": "https://github.com/Arduino/arduino-cli",
"platforms": [
{
"category": "Test Category",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"checksum": "SHA-256:6a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "test_core",
"version": "1.0.0",
"architecture": "x86",
"archiveFileName": "core.zip",
"size": "486",
"toolsDependencies": [],
"boards": [
{
"name": "Test Board"
}
]
},
{
"category": "Test Category",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"checksum": "SHA-256:6a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "test_core",
"version": "2.0.0",
"architecture": "x86",
"archiveFileName": "core.zip",
"size": "486",
"toolsDependencies": [],
"boards": [
{
"name": "Test Board"
}
]
}
],
"tools": [],
"email": "test@example.com",
"name": "test"
},
{
"name": "zipslip",
"tools": [],
"email": "test@example.com",
"maintainer": "Arduino",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"websiteURL": "https://github.com/Arduino/arduino-cli",
"platforms": [
{
"category": "Zipslip Test",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/evil.zip",
"checksum": "SHA-256:9b85dfe23f13318efc0e541327f584a0f3674a773d46a7eb8b25f0f408d07f96",
"name": "zipslip",
"version": "1.0.0",
"architecture": "x86",
"archiveFileName": "evil.zip",
"size": "2184",
"toolsDependencies": [],
"boards": [
{
"name": "Test Board"
}
]
}
]
},
{
"name": "brokenchecksum",
"tools": [],
"email": "test@example.com",
"maintainer": "Arduino",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"websiteURL": "https://github.com/Arduino/arduino-cli",
"platforms": [
{
"category": "BrokenChecksum Test",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"checksum": "SHA-256:1a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "zipslip",
"version": "1.0.0",
"architecture": "x86",
"archiveFileName": "core.zip",
"size": "486",
"toolsDependencies": [],
"boards": [
{
"name": "Test Board"
}
]
}
]
},
{
"name": "Retrokits-RK002",
"maintainer": "Retrokits (www.retrokits.com)",
"websiteURL": "https://www.retrokits.com",
"email": "info@retrokits.com",
"help": { "online": "https://www.retrokits.com/rk002/arduino" },
"platforms": [
{
"name": "RK002",
"architecture": "arm",
"version": "1.0.5",
"category": "Contributed",
"help": {
"online": "https://www.retrokits.com/rk002/arduino"
},
"url": "https://www.retrokits.com/rk002/arduino/retrokits-rk002-1.0.5.tar.bz2",
"archiveFileName": "retrokits-rk002-1.0.5.tar.bz2",
"checksum": "SHA-256:9a012867baf4bb26f656f84502e0acce6a653c3452cca4505ebac77256802fb6",
"size": "290784",
"boards": [{ "name": "RK002" }],
"toolsDependencies": [
{
"packager": "arduino",
"version": "4.8.3-2014q1",
"name": "arm-none-eabi-gcc"
}
]
}
],
"tools": []
},
{
"name": "Retrokits-RK002",
"maintainer": "Retrokits (www.retrokits.com)",
"websiteURL": "https://www.retrokits.com",
"email": "info@retrokits.com",
"help": { "online": "https://www.retrokits.com/rk002/arduino" },
"platforms": [
{
"name": "RK002",
"architecture": "arm",
"version": "1.0.6",
"category": "Contributed",
"help": {
"online": "https://www.retrokits.com/rk002/arduino"
},
"url": "https://www.retrokits.com/rk002/arduino/retrokits-rk002-1.0.6.tar.bz2",
"archiveFileName": "retrokits-rk002-1.0.6.tar.bz2",
"checksum": "SHA-256:8a3b63efcf4dfaed047a37844861387e542d8519485b5305d5979630cb3feb20",
"size": "291631",
"boards": [{ "name": "RK002" }],
"toolsDependencies": [
{
"packager": "arduino",
"version": "4.8.3-2014q1",
"name": "arm-none-eabi-gcc"
}
]
}
],
"tools": []
},
{
"name": "Package",
"tools": [],
"email": "test@example.com",
"maintainer": "Arduino",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"websiteURL": "https://github.com/Arduino/arduino-cli",
"platforms": [
{
"category": "Test",
"help": {
"online": "https://github.com/Arduino/arduino-cli"
},
"url": "https://raw.githubusercontent.com/arduino/arduino-cli/master/test/testdata/core.zip",
"checksum": "SHA-256:6a338cf4d6d501176a2d352c87a8d72ac7488b8c5b82cdf2a4e2cef630391092",
"name": "Platform",
"version": "1.2.3",
"deprecated": true,
"architecture": "x86",
"archiveFileName": "core.zip",
"size": "486",
"toolsDependencies": [],
"boards": [
{
"name": "MyBoard"
}
]
}
]
}
]
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment