hardpy 0.13.0__py3-none-any.whl → 0.15.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. hardpy/__init__.py +45 -10
  2. hardpy/cli/cli.py +32 -28
  3. hardpy/common/config.py +5 -4
  4. hardpy/common/stand_cloud/connector.py +2 -2
  5. hardpy/hardpy_panel/api.py +13 -3
  6. hardpy/hardpy_panel/frontend/dist/assets/{allPaths-Cg7WZDXy.js → allPaths-CV5wjLMB.js} +1 -1
  7. hardpy/hardpy_panel/frontend/dist/assets/{allPathsLoader-C79wUwqR.js → allPathsLoader-JIzW_pSb.js} +2 -2
  8. hardpy/hardpy_panel/frontend/dist/assets/browser-ponyfill-CccdstaD.js +2 -0
  9. hardpy/hardpy_panel/frontend/dist/assets/index-6RIgWzcZ.js +790 -0
  10. hardpy/hardpy_panel/frontend/dist/assets/{splitPathsBySizeLoader-hWuLTMwD.js → splitPathsBySizeLoader-DkZadBcn.js} +1 -1
  11. hardpy/hardpy_panel/frontend/dist/index.html +1 -1
  12. hardpy/hardpy_panel/frontend/dist/locales/de/translation.json +60 -0
  13. hardpy/hardpy_panel/frontend/dist/locales/en/translation.json +60 -0
  14. hardpy/hardpy_panel/frontend/dist/locales/es/translation.json +60 -0
  15. hardpy/hardpy_panel/frontend/dist/locales/fr/translation.json +60 -0
  16. hardpy/hardpy_panel/frontend/dist/locales/ja/translation.json +60 -0
  17. hardpy/hardpy_panel/frontend/dist/locales/ru/translation.json +60 -0
  18. hardpy/hardpy_panel/frontend/dist/locales/zh/translation.json +60 -0
  19. hardpy/pytest_hardpy/db/base_store.py +23 -0
  20. hardpy/pytest_hardpy/db/const.py +40 -19
  21. hardpy/pytest_hardpy/db/schema/v1.py +140 -326
  22. hardpy/pytest_hardpy/plugin.py +32 -1
  23. hardpy/pytest_hardpy/pytest_call.py +331 -22
  24. hardpy/pytest_hardpy/pytest_wrapper.py +25 -34
  25. hardpy/pytest_hardpy/reporter/hook_reporter.py +53 -2
  26. hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py +8 -2
  27. hardpy/pytest_hardpy/result/report_reader/couchdb_reader.py +1 -5
  28. hardpy/pytest_hardpy/utils/__init__.py +25 -11
  29. hardpy/pytest_hardpy/utils/const.py +72 -0
  30. hardpy/pytest_hardpy/utils/exception.py +7 -32
  31. hardpy/pytest_hardpy/utils/node_info.py +55 -1
  32. hardpy/pytest_hardpy/utils/stand_type.py +198 -0
  33. {hardpy-0.13.0.dist-info → hardpy-0.15.0.dist-info}/METADATA +2 -1
  34. {hardpy-0.13.0.dist-info → hardpy-0.15.0.dist-info}/RECORD +37 -28
  35. hardpy/hardpy_panel/frontend/dist/assets/index-De5CJ3kt.js +0 -790
  36. {hardpy-0.13.0.dist-info → hardpy-0.15.0.dist-info}/WHEEL +0 -0
  37. {hardpy-0.13.0.dist-info → hardpy-0.15.0.dist-info}/entry_points.txt +0 -0
  38. {hardpy-0.13.0.dist-info → hardpy-0.15.0.dist-info}/licenses/LICENSE +0 -0
@@ -1 +1 @@
1
- import{_ as o,a as _,b as i,p as c,I as u}from"./index-De5CJ3kt.js";var p=function(n,s){return o(void 0,void 0,void 0,function(){var a,r;return _(this,function(e){switch(e.label){case 0:return a=c(n),s!==u.STANDARD?[3,2]:[4,i(()=>import("./index-xb4M2ucX.js").then(t=>t.I),[])];case 1:return r=e.sent(),[3,4];case 2:return[4,i(()=>import("./index-BMEat_ws.js").then(t=>t.I),[])];case 3:r=e.sent(),e.label=4;case 4:return[2,r[a]]}})})};export{p as splitPathsBySizeLoader};
1
+ import{_ as o,a as _,b as i,p as c,I as u}from"./index-6RIgWzcZ.js";var p=function(n,s){return o(void 0,void 0,void 0,function(){var a,r;return _(this,function(e){switch(e.label){case 0:return a=c(n),s!==u.STANDARD?[3,2]:[4,i(()=>import("./index-xb4M2ucX.js").then(t=>t.I),[])];case 1:return r=e.sent(),[3,4];case 2:return[4,i(()=>import("./index-BMEat_ws.js").then(t=>t.I),[])];case 3:r=e.sent(),e.label=4;case 4:return[2,r[a]]}})})};export{p as splitPathsBySizeLoader};
@@ -25,7 +25,7 @@
25
25
  Learn how to configure a non-root public URL by running `npm run build`.
26
26
  -->
27
27
  <title>HardPy Operator Panel</title>
28
- <script type="module" crossorigin src="/assets/index-De5CJ3kt.js"></script>
28
+ <script type="module" crossorigin src="/assets/index-6RIgWzcZ.js"></script>
29
29
  <link rel="stylesheet" crossorigin href="/assets/index-BwCQzehg.css">
30
30
  </head>
31
31
  <body>
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "HardPy Bedienfeld",
4
+ "lastLaunch": "Letzter Start:",
5
+ "duration": "Dauer",
6
+ "seconds": "s",
7
+ "soundOn": "Ton einschalten",
8
+ "soundOff": "Ton ausschalten",
9
+ "debugOn": "Debug-Modus einschalten",
10
+ "debugOff": "Debug-Modus ausschalten",
11
+ "connection": "Verbindung wird hergestellt... 🧐🔎",
12
+ "dbError": "Datenbankverbindungsfehler. 🙅🏽‍♀️🚫",
13
+ "noEntries": "Keine Einträge in der Datenbank 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "bereit",
16
+ "run": "läuft",
17
+ "passed": "bestanden",
18
+ "failed": "fehlgeschlagen",
19
+ "stopped": "gestoppt",
20
+ "unknown": "unbekannt"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "Starten",
25
+ "stop": "Stoppen",
26
+ "confirm": "Bestätigen"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "Datenbankverbindungsfehler",
30
+ "dbConnectionMessage": "Verbindung zur Datenbank konnte nicht hergestellt werden"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "Nachricht",
34
+ "imageAlt": "Operator-Nachrichtenbild",
35
+ "htmlCodeTitle": "HTML-Code",
36
+ "htmlLinkTitle": "HTML-Link",
37
+ "enterAnswer": "Antwort eingeben",
38
+ "fieldNotEmpty": "Das Feld darf nicht leer sein",
39
+ "notificationTitle": "Benachrichtigung",
40
+ "notificationDesc": "Das Fenster wurde geschlossen. Tests gestoppt.",
41
+ "numericInputError": "Bitte geben Sie eine Zahl ein",
42
+ "radioButtonError": "Bitte wählen Sie eine Option",
43
+ "checkboxError": "Bitte wählen Sie mindestens eine Option"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "Tests werden geladen... 🤔",
47
+ "refreshHint": "Versuchen Sie, die Seite zu aktualisieren.",
48
+ "standName": "Standortname",
49
+ "status": "Status",
50
+ "startTime": "Startzeit",
51
+ "finishTime": "Endzeit",
52
+ "alert": "Warnung"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "Name",
56
+ "dataColumn": "Daten",
57
+ "loading": "Wird geladen...",
58
+ "stubName": "Testgruppe"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "HardPy Operator Panel",
4
+ "lastLaunch": "Last launch:",
5
+ "duration": "Duration",
6
+ "seconds": "s",
7
+ "soundOn": "Turn on the sound",
8
+ "soundOff": "Turn off the sound",
9
+ "debugOn": "Turn on the debug mode",
10
+ "debugOff": "Turn off the debug mode",
11
+ "connection": "Establishing a connection... 🧐🔎",
12
+ "dbError": "Database connection error. 🙅🏽‍♀️🚫",
13
+ "noEntries": "No entries in the database 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "ready",
16
+ "run": "run",
17
+ "passed": "pass",
18
+ "failed": "fail",
19
+ "stopped": "stopped",
20
+ "unknown": "unknown"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "Start",
25
+ "stop": "Stop",
26
+ "confirm": "Confirm"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "Database Connection Error",
30
+ "dbConnectionMessage": "Failed to establish connection with the database"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "Message",
34
+ "imageAlt": "Operator message image",
35
+ "htmlCodeTitle": "HTML Code",
36
+ "htmlLinkTitle": "HTML Link",
37
+ "enterAnswer": "Enter answer",
38
+ "fieldNotEmpty": "The field must not be empty",
39
+ "notificationTitle": "Notification",
40
+ "notificationDesc": "The window was closed. Tests stopped.",
41
+ "numericInputError": "Please enter a number",
42
+ "radioButtonError": "Please select one option",
43
+ "checkboxError": "Please select at least one option"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "Loading tests... 🤔",
47
+ "refreshHint": "Try refreshing the page.",
48
+ "standName": "Stand name",
49
+ "status": "Status",
50
+ "startTime": "Start time",
51
+ "finishTime": "Finish time",
52
+ "alert": "Alert"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "Name",
56
+ "dataColumn": "Data",
57
+ "loading": "Loading...",
58
+ "stubName": "Test Suite"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "Panel de operador HardPy",
4
+ "lastLaunch": "Última lanzamiento:",
5
+ "duration": "Duración",
6
+ "seconds": "s",
7
+ "soundOn": "Activar sonido",
8
+ "soundOff": "Desactivar sonido",
9
+ "debugOn": "Activar modo de depuración",
10
+ "debugOff": "Desactivar modo de depuración",
11
+ "connection": "Estableciendo conexión... 🧐🔎",
12
+ "dbError": "Error de conexión a la base de datos. 🙅🏽‍♀️🚫",
13
+ "noEntries": "No hay entradas en la base de datos 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "listo",
16
+ "run": "ejecutando",
17
+ "passed": "aprobado",
18
+ "failed": "fallado",
19
+ "stopped": "detenido",
20
+ "unknown": "desconocido"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "Iniciar",
25
+ "stop": "Detener",
26
+ "confirm": "Confirmar"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "Error de conexión a la base de datos",
30
+ "dbConnectionMessage": "No se pudo establecer la conexión con la base de datos"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "Mensaje",
34
+ "imageAlt": "Imagen del mensaje del operador",
35
+ "htmlCodeTitle": "Código HTML",
36
+ "htmlLinkTitle": "Enlace HTML",
37
+ "enterAnswer": "Ingrese respuesta",
38
+ "fieldNotEmpty": "El campo no debe estar vacío",
39
+ "notificationTitle": "Notificación",
40
+ "notificationDesc": "La ventana fue cerrada. Pruebas detenidas.",
41
+ "numericInputError": "Por favor ingrese un número",
42
+ "radioButtonError": "Por favor seleccione una opción",
43
+ "checkboxError": "Por favor seleccione al menos una opción"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "Cargando pruebas... 🤔",
47
+ "refreshHint": "Intente actualizar la página.",
48
+ "standName": "Nombre del puesto",
49
+ "status": "Estado",
50
+ "startTime": "Hora de inicio",
51
+ "finishTime": "Hora de finalización",
52
+ "alert": "Alerta"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "Nombre",
56
+ "dataColumn": "Datos",
57
+ "loading": "Cargando...",
58
+ "stubName": "Conjunto de pruebas"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "Panneau opérateur HardPy",
4
+ "lastLaunch": "Dernière lancement:",
5
+ "duration": "Durée",
6
+ "seconds": "s",
7
+ "soundOn": "Activer le son",
8
+ "soundOff": "Désactiver le son",
9
+ "debugOn": "Activer le mode débogage",
10
+ "debugOff": "Désactiver le mode débogage",
11
+ "connection": "Établissement de la connexion... 🧐🔎",
12
+ "dbError": "Erreur de connexion à la base de données. 🙅🏽‍♀️🚫",
13
+ "noEntries": "Aucune entrée dans la base de données 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "prêt",
16
+ "run": "en cours",
17
+ "passed": "réussi",
18
+ "failed": "échoué",
19
+ "stopped": "arrêté",
20
+ "unknown": "inconnu"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "Commencer",
25
+ "stop": "Arrêter",
26
+ "confirm": "Confirmer"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "Erreur de connexion à la base de données",
30
+ "dbConnectionMessage": "Échec de la connexion à la base de données"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "Message",
34
+ "imageAlt": "Image du message de l'opérateur",
35
+ "htmlCodeTitle": "Code HTML",
36
+ "htmlLinkTitle": "Lien HTML",
37
+ "enterAnswer": "Entrez la réponse",
38
+ "fieldNotEmpty": "Le champ ne doit pas être vide",
39
+ "notificationTitle": "Notification",
40
+ "notificationDesc": "La fenêtre a été fermée. Tests arrêtés.",
41
+ "numericInputError": "Veuillez entrer un nombre",
42
+ "radioButtonError": "Veuillez sélectionner une option",
43
+ "checkboxError": "Veuillez sélectionner au moins une option"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "Chargement des tests... 🤔",
47
+ "refreshHint": "Essayez de rafraîchir la page.",
48
+ "standName": "Nom du stand",
49
+ "status": "Statut",
50
+ "startTime": "Heure de début",
51
+ "finishTime": "Heure de fin",
52
+ "alert": "Alerte"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "Nom",
56
+ "dataColumn": "Données",
57
+ "loading": "Chargement...",
58
+ "stubName": "Suite de tests"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "HardPy オペレーターパネル",
4
+ "lastLaunch": "最終起動:",
5
+ "duration": "期間",
6
+ "seconds": "秒",
7
+ "soundOn": "音をオンにする",
8
+ "soundOff": "音をオフにする",
9
+ "debugOn": "デバッグモードをオンにする",
10
+ "debugOff": "デバッグモードをオフにする",
11
+ "connection": "接続を確立しています... 🧐🔎",
12
+ "dbError": "データベース接続エラー. 🙅🏽‍♀️🚫",
13
+ "noEntries": "データベースにエントリがありません 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "準備完了",
16
+ "run": "実行中",
17
+ "passed": "合格",
18
+ "failed": "不合格",
19
+ "stopped": "停止",
20
+ "unknown": "不明"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "開始",
25
+ "stop": "停止",
26
+ "confirm": "確認"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "データベース接続エラー",
30
+ "dbConnectionMessage": "データベースへの接続に失敗しました"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "メッセージ",
34
+ "imageAlt": "オペレーターメッセージ画像",
35
+ "htmlCodeTitle": "HTMLコード",
36
+ "htmlLinkTitle": "HTMLリンク",
37
+ "enterAnswer": "回答を入力",
38
+ "fieldNotEmpty": "フィールドは空にできません",
39
+ "notificationTitle": "通知",
40
+ "notificationDesc": "ウィンドウが閉じられました。テストを停止しました。",
41
+ "numericInputError": "数字を入力してください",
42
+ "radioButtonError": "いずれかのオプションを選択してください",
43
+ "checkboxError": "少なくとも1つのオプションを選択してください"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "テストを読み込み中... 🤔",
47
+ "refreshHint": "ページを更新してみてください。",
48
+ "standName": "スタンド名",
49
+ "status": "ステータス",
50
+ "startTime": "開始時間",
51
+ "finishTime": "終了時間",
52
+ "alert": "警告"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "名前",
56
+ "dataColumn": "データ",
57
+ "loading": "読み込み中...",
58
+ "stubName": "テストスイート"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "Панель оператора HardPy",
4
+ "lastLaunch": "Последний запуск:",
5
+ "duration": "Длительность",
6
+ "seconds": "с",
7
+ "soundOn": "Включить звук",
8
+ "soundOff": "Выключить звук",
9
+ "debugOn": "Включить режим отладки",
10
+ "debugOff": "Выключить режим отладки",
11
+ "connection": "Установка соединения... 🧐🔎",
12
+ "dbError": "Ошибка подключения к базе данных. 🙅🏽‍♀️🚫",
13
+ "noEntries": "Нет записей в базе данных 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "готов",
16
+ "run": "выполнение",
17
+ "passed": "успех",
18
+ "failed": "провалено",
19
+ "stopped": "остановлено",
20
+ "unknown": "неизвестно"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "Старт",
25
+ "stop": "Стоп",
26
+ "confirm": "Подтвердить"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "Ошибка подключения к базе данных",
30
+ "dbConnectionMessage": "Не удалось установить соединение с базой данных"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "Сообщение",
34
+ "imageAlt": "Изображение в сообщении оператора",
35
+ "htmlCodeTitle": "HTML код",
36
+ "htmlLinkTitle": "HTML ссылка",
37
+ "enterAnswer": "Введите ответ",
38
+ "fieldNotEmpty": "Поле не должно быть пустым",
39
+ "notificationTitle": "Уведомление",
40
+ "notificationDesc": "Окно было закрыто. Тесты остановлены.",
41
+ "numericInputError": "Пожалуйста, введите число",
42
+ "radioButtonError": "Пожалуйста, выберите один вариант",
43
+ "checkboxError": "Пожалуйста, выберите хотя бы один вариант"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "Загрузка тестов... 🤔",
47
+ "refreshHint": "Попробуйте обновить страницу.",
48
+ "standName": "Название стенда",
49
+ "status": "Статус",
50
+ "startTime": "Время начала",
51
+ "finishTime": "Время завершения",
52
+ "alert": "Предупреждение"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "Название",
56
+ "dataColumn": "Данные",
57
+ "loading": "Загрузка...",
58
+ "stubName": "Тестовый набор"
59
+ }
60
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "app": {
3
+ "title": "HardPy 操作面板",
4
+ "lastLaunch": "上次启动:",
5
+ "duration": "持续时间",
6
+ "seconds": "秒",
7
+ "soundOn": "开启声音",
8
+ "soundOff": "关闭声音",
9
+ "debugOn": "开启调试模式",
10
+ "debugOff": "关闭调试模式",
11
+ "connection": "正在建立连接... 🧐🔎",
12
+ "dbError": "数据库连接错误. 🙅🏽‍♀️🚫",
13
+ "noEntries": "数据库中没有条目 🙅🏽‍♀️🚫",
14
+ "status": {
15
+ "ready": "就绪",
16
+ "run": "运行中",
17
+ "passed": "通过",
18
+ "failed": "失败",
19
+ "stopped": "已停止",
20
+ "unknown": "未知"
21
+ }
22
+ },
23
+ "button": {
24
+ "start": "开始",
25
+ "stop": "停止",
26
+ "confirm": "确认"
27
+ },
28
+ "error": {
29
+ "dbConnectionTitle": "数据库连接错误",
30
+ "dbConnectionMessage": "无法建立数据库连接"
31
+ },
32
+ "operatorDialog": {
33
+ "defaultTitle": "消息",
34
+ "imageAlt": "操作员消息图片",
35
+ "htmlCodeTitle": "HTML代码",
36
+ "htmlLinkTitle": "HTML链接",
37
+ "enterAnswer": "输入答案",
38
+ "fieldNotEmpty": "字段不能为空",
39
+ "notificationTitle": "通知",
40
+ "notificationDesc": "窗口已关闭。测试已停止。",
41
+ "numericInputError": "请输入数字",
42
+ "radioButtonError": "请选择一个选项",
43
+ "checkboxError": "请至少选择一个选项"
44
+ },
45
+ "suiteList": {
46
+ "loadingTests": "正在加载测试... 🤔",
47
+ "refreshHint": "尝试刷新页面。",
48
+ "standName": "测试台名称",
49
+ "status": "状态",
50
+ "startTime": "开始时间",
51
+ "finishTime": "完成时间",
52
+ "alert": "警报"
53
+ },
54
+ "testSuite": {
55
+ "nameColumn": "名称",
56
+ "dataColumn": "数据",
57
+ "loading": "加载中...",
58
+ "stubName": "测试套件"
59
+ }
60
+ }
@@ -91,19 +91,30 @@ class BaseStore(BaseConnector):
91
91
  "_id": self._doc_id,
92
92
  DF.MODULES: {},
93
93
  DF.DUT: {
94
+ DF.TYPE: None,
95
+ DF.NAME: None,
96
+ DF.REVISION: None,
94
97
  DF.SERIAL_NUMBER: None,
95
98
  DF.PART_NUMBER: None,
99
+ DF.SUB_UNITS: [],
96
100
  DF.INFO: {},
97
101
  },
98
102
  DF.TEST_STAND: {
99
103
  DF.HW_ID: None,
100
104
  DF.NAME: None,
105
+ DF.REVISION: None,
101
106
  DF.TIMEZONE: None,
102
107
  DF.LOCATION: None,
103
108
  DF.NUMBER: None,
109
+ DF.INSTRUMENTS: [],
104
110
  DF.DRIVERS: {},
105
111
  DF.INFO: {},
106
112
  },
113
+ DF.PROCESS: {
114
+ DF.NAME: None,
115
+ DF.NUMBER: None,
116
+ DF.INFO: {},
117
+ },
107
118
  }
108
119
 
109
120
  # init document
@@ -111,19 +122,31 @@ class BaseStore(BaseConnector):
111
122
  doc[DF.MODULES] = {}
112
123
 
113
124
  doc[DF.DUT] = {
125
+ DF.TYPE: None,
126
+ DF.NAME: None,
127
+ DF.REVISION: None,
114
128
  DF.SERIAL_NUMBER: None,
115
129
  DF.PART_NUMBER: None,
130
+ DF.SUB_UNITS: [],
116
131
  DF.INFO: {},
117
132
  }
118
133
 
119
134
  doc[DF.TEST_STAND] = {
120
135
  DF.HW_ID: None,
121
136
  DF.NAME: None,
137
+ DF.REVISION: None,
122
138
  DF.TIMEZONE: None,
123
139
  DF.LOCATION: None,
124
140
  DF.NUMBER: None,
141
+ DF.INSTRUMENTS: [],
125
142
  DF.DRIVERS: {},
126
143
  DF.INFO: {},
127
144
  }
128
145
 
146
+ doc[DF.PROCESS] = {
147
+ DF.NAME: None,
148
+ DF.NUMBER: None,
149
+ DF.INFO: {},
150
+ }
151
+
129
152
  return doc
@@ -1,4 +1,4 @@
1
- # Copyright (c) 2024 Everypin
1
+ # Copyright (c) 2025 Everypin
2
2
  # GNU General Public License v3.0 (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
3
3
 
4
4
  from enum import Enum
@@ -7,35 +7,56 @@ from enum import Enum
7
7
  class DatabaseField(str, Enum):
8
8
  """Database field."""
9
9
 
10
+ # common
10
11
  NAME = "name"
12
+ USER = "user"
13
+ BATCH_SN = "batch_serial_number"
14
+ CAUSED_DUT_FAILURE_ID = "caused_dut_failure_id"
15
+ GROUP = "group"
16
+ ERROR_CODE = "error_code"
11
17
  STATUS = "status"
12
18
  START_TIME = "start_time"
13
19
  STOP_TIME = "stop_time"
14
- ASSERTION_MSG = "assertion_msg"
15
- MSG = "msg"
16
- MODULES = "modules"
17
- CASES = "cases"
20
+ NUMBER = "number"
21
+ REVISION = "revision"
22
+ INFO = "info"
18
23
  TIMEZONE = "timezone"
19
- PROGRESS = "progress"
20
- ARTIFACT = "artifact"
21
- DUT = "dut"
24
+ MSG = "msg"
25
+ ASSERTION_MSG = "assertion_msg"
22
26
  PART_NUMBER = "part_number"
23
- INFO = "info"
24
- TEST_STAND = "test_stand"
25
27
  SERIAL_NUMBER = "serial_number"
26
- DRIVERS = "drivers"
27
- DIALOG_BOX = "dialog_box"
28
- OPERATOR_MSG = "operator_msg"
28
+ SUB_UNITS = "sub_units"
29
29
  ATTEMPT = "attempt"
30
30
  LOCATION = "location"
31
31
  HW_ID = "hw_id"
32
- TITLE = "title"
33
- VISIBLE = "visible"
34
- IMAGE = "image"
35
- HTML = "html"
36
- ID = "id"
32
+ DRIVERS = "drivers"
33
+ TYPE = "type"
34
+ CHART = "chart"
35
+
36
+ # table name
37
+ DUT = "dut"
38
+ TEST_STAND = "test_stand"
39
+ PROCESS = "process"
40
+
41
+ # collection
42
+ MODULES = "modules"
43
+ CASES = "cases"
44
+ INSTRUMENTS = "instruments"
45
+ MEASUREMENTS = "measurements"
46
+
47
+ # statestore
48
+ PROGRESS = "progress"
49
+ DIALOG_BOX = "dialog_box"
50
+ OPERATOR_MSG = "operator_msg"
37
51
  FONT_SIZE = "font_size"
38
52
  ALERT = "alert"
39
53
  OPERATOR_DATA = "operator_data"
40
54
  DIALOG = "dialog"
41
- NUMBER = "number"
55
+ VISIBLE = "visible"
56
+ TITLE = "title"
57
+ IMAGE = "image"
58
+ HTML = "html"
59
+ ID = "id"
60
+
61
+ # runstore
62
+ ARTIFACT = "artifact"