![Ver/TestedPython](https://img.shields.io/pypi/pyversions/testplans)
![Ver/Os](https://img.shields.io/badge/os_development-Windows-blue)
![repo/Created](https://img.shields.io/github/created-at/centroid457/testplans)
![Commit/Last](https://img.shields.io/github/last-commit/centroid457/testplans)
![Tests/GitHubWorkflowStatus](https://github.com/centroid457/testplans/actions/workflows/test_linux.yml/badge.svg)
![Tests/GitHubWorkflowStatus](https://github.com/centroid457/testplans/actions/workflows/test_windows.yml/badge.svg)
![repo/Size](https://img.shields.io/github/repo-size/centroid457/testplans)
![Commit/Count/t](https://img.shields.io/github/commit-activity/t/centroid457/testplans)
![Commit/Count/y](https://img.shields.io/github/commit-activity/y/centroid457/testplans)
![Commit/Count/m](https://img.shields.io/github/commit-activity/m/centroid457/testplans)
# testplans (current v0.4.34/![Ver/Pypi Latest](https://img.shields.io/pypi/v/testplans?label=pypi%20latest))
## DESCRIPTION_SHORT
simple testplan framework for several DUTs
## DESCRIPTION_LONG
designed to apply testplan for several DUTs
## ПОНЯТИЯ
TC - TestCase
TP - TestPlan
DUT - Device Under Test - тестируемое устройство
## АРХИТЕКТУРА
- тестплан
- работает в потоке,
- может быть остановлен в любой момент terminate(), при этом завершает все запущенные тесткейсы
- имеет настройки которые принимаются всеми тесткейсами за базовые и могут быть перезаписаны ими для себя
- имеет списки классов TC и обьектов DUT (генерирует обьекты TC для каждого DUT)
- для себя не разделяет обьекты тесткейсов, работает строго с классом тесткейса,
- выполняет все тесткейсы в порядке их следования на списке DUT
- в один момент времени выполняется только один класс тесткейса
- тесткейсы
- работают в потоке,
- может быть остановлен в любой момент terminate(), при этом завершаются безопасно (исполняются все teardown обьектов и глобальный классовый тесткейса),
- представляет собой класс инициируемый с входным параметром DUT,
- выполняются тесткейсы строго по очереди,
- каждый тесткейс выполняется на всех устройствах либо асинхронно, либо синхронно в зависимости от настройки,
- работа тесткейса полностью управляется классом тесткейса на серии устройств (возможно выполнение парных тестов с выбором нужных пар внутри тесткейса),
- результаты
- все результаты находятся в пока в обьекте тесткейса
- итогового (result)
- промежуточных результатов (details)
- настройки
- управление
- SKIP всех возможных вариантов (полностью тесткейс для всех устройств, полностью DUT для всех TC, отдельный TC на отдельном DUT),
- выполнение тесткейса синхронно/асинхронно
- данные для использования в тесткейсах
- реализовано в файлах JSON
- для каждого тесткейса и общие для тестплана (кейсовые накладываются на плановые)
- GUI тестплана
- запуск GUI опциональный,
- старт/стоп тестплана,
- отображение текущего тесткейса,
- отображение результата тескейса на каждом тестируемом устройстве,
- отображение промежуточных результатов (details)
- API
- минимальное API и запуск
## Features
1. [THREADS]:
- safe work in independent TCs
- safe stop process at any moment by terminate
2. [SKIP]:
- tc
- tc on dut
- dut
3. [DEVICES__BREEDER_INST]:
- keep all in one instance
- use variants: single device for all duts or list for pairing each dut
********************************************************************************
## License
See the [LICENSE](LICENSE) file for license rights and limitations (MIT).
## Release history
See the [HISTORY.md](HISTORY.md) file for release history.
## Installation
```commandline
pip install testplans
```
## Import
```python
from testplans import *
```
********************************************************************************
## USAGE EXAMPLES
See tests, sourcecode and docstrings for other examples.
********************************************************************************
Raw data
{
"_id": null,
"home_page": "https://github.com/centroid457/",
"name": "testplans",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "testplan, testplan structure framework, testplan gui, testplan multy dut, testplan several dut",
"author": "Andrei Starichenko",
"author_email": "centroid@mail.ru",
"download_url": "https://files.pythonhosted.org/packages/74/03/a42258ebddfa8a459cb59b53380a57172ecdf93ae6936e607fff8938d945/testplans-0.4.34.tar.gz",
"platform": null,
"description": "![Ver/TestedPython](https://img.shields.io/pypi/pyversions/testplans)\r\n![Ver/Os](https://img.shields.io/badge/os_development-Windows-blue) \r\n![repo/Created](https://img.shields.io/github/created-at/centroid457/testplans)\r\n![Commit/Last](https://img.shields.io/github/last-commit/centroid457/testplans)\r\n![Tests/GitHubWorkflowStatus](https://github.com/centroid457/testplans/actions/workflows/test_linux.yml/badge.svg)\r\n![Tests/GitHubWorkflowStatus](https://github.com/centroid457/testplans/actions/workflows/test_windows.yml/badge.svg) \r\n![repo/Size](https://img.shields.io/github/repo-size/centroid457/testplans)\r\n![Commit/Count/t](https://img.shields.io/github/commit-activity/t/centroid457/testplans)\r\n![Commit/Count/y](https://img.shields.io/github/commit-activity/y/centroid457/testplans)\r\n![Commit/Count/m](https://img.shields.io/github/commit-activity/m/centroid457/testplans)\r\n\r\n# testplans (current v0.4.34/![Ver/Pypi Latest](https://img.shields.io/pypi/v/testplans?label=pypi%20latest))\r\n\r\n## DESCRIPTION_SHORT\r\nsimple testplan framework for several DUTs\r\n\r\n## DESCRIPTION_LONG\r\ndesigned to apply testplan for several DUTs\r\n\r\n## \u041f\u041e\u041d\u042f\u0422\u0418\u042f\r\n TC - TestCase\r\n TP - TestPlan\r\n DUT - Device Under Test - \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e\r\n\r\n## \u0410\u0420\u0425\u0418\u0422\u0415\u041a\u0422\u0423\u0420\u0410\r\n- \u0442\u0435\u0441\u0442\u043f\u043b\u0430\u043d\r\n - \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a\u0435,\r\n - \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 terminate(), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442 \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u044b\r\n - \u0438\u043c\u0435\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u043c\u0438 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430\u043c\u0438 \u0437\u0430 \u0431\u0430\u0437\u043e\u0432\u044b\u0435 \u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u0438\u043c\u0438 \u0434\u043b\u044f \u0441\u0435\u0431\u044f\r\n - \u0438\u043c\u0435\u0435\u0442 \u0441\u043f\u0438\u0441\u043a\u0438 \u043a\u043b\u0430\u0441\u0441\u043e\u0432 TC \u0438 \u043e\u0431\u044c\u0435\u043a\u0442\u043e\u0432 DUT (\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u043e\u0431\u044c\u0435\u043a\u0442\u044b TC \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e DUT)\r\n - \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u043d\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0435\u0442 \u043e\u0431\u044c\u0435\u043a\u0442\u044b \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u0441 \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430,\r\n - \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0432\u0441\u0435 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u044b \u0432 \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0438\u0445 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0441\u043f\u0438\u0441\u043a\u0435 DUT\r\n - \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043a\u043b\u0430\u0441\u0441 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430\r\n- \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u044b\r\n - \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 \u043f\u043e\u0442\u043e\u043a\u0435,\r\n - \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043b\u044e\u0431\u043e\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 terminate(), \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e (\u0438\u0441\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435 teardown \u043e\u0431\u044c\u0435\u043a\u0442\u043e\u0432 \u0438 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441\u043e\u0432\u044b\u0439 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430), \r\n - \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u043d\u0438\u0446\u0438\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0441 \u0432\u0445\u043e\u0434\u043d\u044b\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c DUT,\r\n - \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u044b \u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438,\r\n - \u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043d\u0430 \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u043b\u0438\u0431\u043e \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e, \u043b\u0438\u0431\u043e \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438,\r\n - \u0440\u0430\u0431\u043e\u0442\u0430 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430 \u043d\u0430 \u0441\u0435\u0440\u0438\u0438 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 (\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0430\u0440\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 \u0441 \u0432\u044b\u0431\u043e\u0440\u043e\u043c \u043d\u0443\u0436\u043d\u044b\u0445 \u043f\u0430\u0440 \u0432\u043d\u0443\u0442\u0440\u0438 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430),\r\n- \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b\r\n - \u0432\u0441\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u043e\u043a\u0430 \u0432 \u043e\u0431\u044c\u0435\u043a\u0442\u0435 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430\r\n - \u0438\u0442\u043e\u0433\u043e\u0432\u043e\u0433\u043e (result)\r\n - \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 (details)\r\n- \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438\r\n - \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\r\n - SKIP \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 (\u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432, \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e DUT \u0434\u043b\u044f \u0432\u0441\u0435\u0445 TC, \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 TC \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c DUT),\r\n - \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e/\u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\r\n - \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430\u0445\r\n - \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0432 \u0444\u0430\u0439\u043b\u0430\u0445 JSON\r\n - \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430 \u0438 \u043e\u0431\u0449\u0438\u0435 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043f\u043b\u0430\u043d\u0430 (\u043a\u0435\u0439\u0441\u043e\u0432\u044b\u0435 \u043d\u0430\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430 \u043f\u043b\u0430\u043d\u043e\u0432\u044b\u0435)\r\n- GUI \u0442\u0435\u0441\u0442\u043f\u043b\u0430\u043d\u0430\r\n - \u0437\u0430\u043f\u0443\u0441\u043a GUI \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439,\r\n - \u0441\u0442\u0430\u0440\u0442/\u0441\u0442\u043e\u043f \u0442\u0435\u0441\u0442\u043f\u043b\u0430\u043d\u0430,\r\n - \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u0435\u0441\u0442\u043a\u0435\u0439\u0441\u0430,\r\n - \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u0442\u0435\u0441\u043a\u0435\u0439\u0441\u0430 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435,\r\n - \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u044b\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 (details)\r\n- API \r\n - \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 API \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\r\n\r\n\r\n## Features\r\n1. [THREADS]: \r\n\t- safe work in independent TCs \r\n\t- safe stop process at any moment by terminate \r\n2. [SKIP]: \r\n\t- tc \r\n\t- tc on dut \r\n\t- dut \r\n3. [DEVICES__BREEDER_INST]: \r\n\t- keep all in one instance \r\n\t- use variants: single device for all duts or list for pairing each dut \r\n\r\n\r\n********************************************************************************\r\n## License\r\nSee the [LICENSE](LICENSE) file for license rights and limitations (MIT).\r\n\r\n\r\n## Release history\r\nSee the [HISTORY.md](HISTORY.md) file for release history.\r\n\r\n\r\n## Installation\r\n```commandline\r\npip install testplans\r\n```\r\n\r\n\r\n## Import\r\n```python\r\nfrom testplans import *\r\n```\r\n\r\n\r\n********************************************************************************\r\n## USAGE EXAMPLES\r\nSee tests, sourcecode and docstrings for other examples. \r\n\r\n********************************************************************************\r\n",
"bugtrack_url": null,
"license": null,
"summary": "simple testplan framework for several DUTs",
"version": "0.4.34",
"project_urls": {
"Homepage": "https://github.com/centroid457/",
"Source": "https://github.com/centroid457/testplans"
},
"split_keywords": [
"testplan",
" testplan structure framework",
" testplan gui",
" testplan multy dut",
" testplan several dut"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "57a41b9ec2cd54710e11f60b18de7cc2d805b4d96ea96f0bc108fcf9b676dad2",
"md5": "f2ead3eead7592b79c24a348c66a9ff1",
"sha256": "c36b2883e14bc87fe6fd950524b4a90c05c5ef7523fdad3a4fa3abc933dad7ed"
},
"downloads": -1,
"filename": "testplans-0.4.34-py3-none-any.whl",
"has_sig": false,
"md5_digest": "f2ead3eead7592b79c24a348c66a9ff1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 22153,
"upload_time": "2024-10-24T08:43:40",
"upload_time_iso_8601": "2024-10-24T08:43:40.553328Z",
"url": "https://files.pythonhosted.org/packages/57/a4/1b9ec2cd54710e11f60b18de7cc2d805b4d96ea96f0bc108fcf9b676dad2/testplans-0.4.34-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7403a42258ebddfa8a459cb59b53380a57172ecdf93ae6936e607fff8938d945",
"md5": "04d13ba4881d4f64e62a2a45ce2b898a",
"sha256": "3cf5a0eaf504add52b1c5ca5b15c7c484d3e551af4abe59cb215f51d6a4bf465"
},
"downloads": -1,
"filename": "testplans-0.4.34.tar.gz",
"has_sig": false,
"md5_digest": "04d13ba4881d4f64e62a2a45ce2b898a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 22113,
"upload_time": "2024-10-24T08:43:41",
"upload_time_iso_8601": "2024-10-24T08:43:41.759638Z",
"url": "https://files.pythonhosted.org/packages/74/03/a42258ebddfa8a459cb59b53380a57172ecdf93ae6936e607fff8938d945/testplans-0.4.34.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-24 08:43:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "centroid457",
"github_project": "testplans",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "build",
"specs": []
},
{
"name": "twine",
"specs": []
},
{
"name": "setuptools",
"specs": []
},
{
"name": "cli_user",
"specs": []
},
{
"name": "pytest",
"specs": []
},
{
"name": "pytest_aux",
"specs": []
},
{
"name": "logger_aux",
"specs": []
},
{
"name": "object_info",
"specs": []
},
{
"name": "requirements_checker",
"specs": []
},
{
"name": "classes_aux",
"specs": []
},
{
"name": "funcs_aux",
"specs": []
},
{
"name": "singleton_meta",
"specs": []
},
{
"name": "annot_attrs",
"specs": []
},
{
"name": "numpy",
"specs": []
},
{
"name": "pyqt_templates",
"specs": []
},
{
"name": "server_templates",
"specs": []
},
{
"name": "private_values",
"specs": []
},
{
"name": "bus_user",
"specs": []
},
{
"name": "PyQt5",
"specs": []
},
{
"name": "requests",
"specs": []
},
{
"name": "pydantic",
"specs": []
},
{
"name": "aiohttp",
"specs": []
},
{
"name": "FastAPI",
"specs": []
},
{
"name": "PyYAML",
"specs": []
},
{
"name": "uvicorn",
"specs": []
},
{
"name": "pyserial",
"specs": []
},
{
"name": "smbus2",
"specs": []
},
{
"name": "cli_user",
"specs": []
}
],
"lcname": "testplans"
}