hardpy 0.11.2__py3-none-any.whl → 0.12.1__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 (56) hide show
  1. hardpy/__init__.py +6 -0
  2. hardpy/cli/cli.py +7 -0
  3. hardpy/cli/template.py +0 -4
  4. hardpy/hardpy_panel/frontend/dist/assets/allPaths-B26356fZ.js +1 -0
  5. hardpy/hardpy_panel/frontend/dist/assets/allPathsLoader-0BeGWuiy.js +2 -0
  6. hardpy/hardpy_panel/frontend/dist/assets/index-BMEat_ws.js +1 -0
  7. hardpy/hardpy_panel/frontend/dist/assets/index-Bl_IX0Up.js +790 -0
  8. hardpy/hardpy_panel/frontend/dist/assets/index-BwCQzehg.css +1 -0
  9. hardpy/hardpy_panel/frontend/dist/assets/index-xb4M2ucX.js +1 -0
  10. hardpy/hardpy_panel/frontend/dist/assets/splitPathsBySizeLoader-BEs5IL5-.js +1 -0
  11. hardpy/hardpy_panel/frontend/dist/index.html +45 -1
  12. hardpy/pytest_hardpy/db/base_store.py +2 -0
  13. hardpy/pytest_hardpy/db/const.py +1 -0
  14. hardpy/pytest_hardpy/db/schema/v1.py +7 -3
  15. hardpy/pytest_hardpy/plugin.py +51 -43
  16. hardpy/pytest_hardpy/pytest_call.py +25 -0
  17. hardpy/pytest_hardpy/reporter/hook_reporter.py +18 -0
  18. hardpy/pytest_hardpy/result/report_reader/stand_cloud_reader.py +26 -2
  19. hardpy/pytest_hardpy/utils/__init__.py +4 -0
  20. hardpy/pytest_hardpy/utils/exception.py +14 -0
  21. hardpy/pytest_hardpy/utils/node_info.py +58 -13
  22. {hardpy-0.11.2.dist-info → hardpy-0.12.1.dist-info}/METADATA +3 -1
  23. hardpy-0.12.1.dist-info/RECORD +76 -0
  24. hardpy/hardpy_panel/frontend/dist/asset-manifest.json +0 -36
  25. hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css +0 -2
  26. hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css.map +0 -1
  27. hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js +0 -2
  28. hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js.map +0 -1
  29. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-16px-paths.d605910e.chunk.js +0 -2
  30. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-16px-paths.d605910e.chunk.js.map +0 -1
  31. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-20px-paths.7ee05cc8.chunk.js +0 -2
  32. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-20px-paths.7ee05cc8.chunk.js.map +0 -1
  33. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js +0 -2
  34. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js.map +0 -1
  35. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js +0 -2
  36. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js.map +0 -1
  37. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js +0 -2
  38. hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js.map +0 -1
  39. hardpy/hardpy_panel/frontend/dist/static/js/main.fb8b84a3.js +0 -3
  40. hardpy/hardpy_panel/frontend/dist/static/js/main.fb8b84a3.js.LICENSE.txt +0 -90
  41. hardpy/hardpy_panel/frontend/dist/static/js/main.fb8b84a3.js.map +0 -1
  42. hardpy-0.11.2.dist-info/RECORD +0 -87
  43. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-16.e02ecf515378db143652.ttf → assets/blueprint-icons-16-Bfs1BwbR.ttf} +0 -0
  44. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-16.84db1772f4bfb529f64f.woff → assets/blueprint-icons-16-Btb8d-Hu.woff} +0 -0
  45. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-16.5c52b39c697f2323ce8b.svg → assets/blueprint-icons-16-CzsyEoPG.svg} +0 -0
  46. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-16.b67ee1736e20e37a3225.woff2 → assets/blueprint-icons-16-DrH54W_x.woff2} +0 -0
  47. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-16.520846c6beb41df528c8.eot → assets/blueprint-icons-16-RCDSkC4W.eot} +0 -0
  48. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-20.429cacb8accf72488451.ttf → assets/blueprint-icons-20-BGGGsqDJ.ttf} +0 -0
  49. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-20.8cecf62de42997e4d82f.woff2 → assets/blueprint-icons-20-D9WO2FSG.woff2} +0 -0
  50. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-20.afbadb627d43b7857223.eot → assets/blueprint-icons-20-Doom1bSH.eot} +0 -0
  51. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-20.6ae3791ee2d86fc228a6.svg → assets/blueprint-icons-20-DyVnGNfQ.svg} +0 -0
  52. /hardpy/hardpy_panel/frontend/dist/{static/media/blueprint-icons-20.e857f5a5132b8bfa71a1.woff → assets/blueprint-icons-20-ZW-9JnPf.woff} +0 -0
  53. /hardpy/hardpy_panel/frontend/dist/{static/media/logo_smol.5b16f92447a4a9e80331.png → assets/logo_smol-CK3jE85c.png} +0 -0
  54. {hardpy-0.11.2.dist-info → hardpy-0.12.1.dist-info}/WHEEL +0 -0
  55. {hardpy-0.11.2.dist-info → hardpy-0.12.1.dist-info}/entry_points.txt +0 -0
  56. {hardpy-0.11.2.dist-info → hardpy-0.12.1.dist-info}/licenses/LICENSE +0 -0
hardpy/__init__.py CHANGED
@@ -19,6 +19,7 @@ from hardpy.pytest_hardpy.pytest_call import (
19
19
  set_stand_info,
20
20
  set_stand_location,
21
21
  set_stand_name,
22
+ set_stand_number,
22
23
  )
23
24
  from hardpy.pytest_hardpy.result import (
24
25
  CouchdbLoader,
@@ -34,12 +35,14 @@ from hardpy.pytest_hardpy.utils import (
34
35
  DuplicateSerialNumberError,
35
36
  DuplicateTestStandLocationError,
36
37
  DuplicateTestStandNameError,
38
+ DuplicateTestStandNumberError,
37
39
  HTMLComponent,
38
40
  ImageComponent,
39
41
  MultistepWidget,
40
42
  NumericInputWidget,
41
43
  RadiobuttonWidget,
42
44
  StepWidget,
45
+ TestStandNumberError,
43
46
  TextInputWidget,
44
47
  )
45
48
 
@@ -53,6 +56,7 @@ __all__ = [
53
56
  "DuplicateSerialNumberError",
54
57
  "DuplicateTestStandLocationError",
55
58
  "DuplicateTestStandNameError",
59
+ "DuplicateTestStandNumberError",
56
60
  "HTMLComponent",
57
61
  "ImageComponent",
58
62
  "MultistepWidget",
@@ -63,6 +67,7 @@ __all__ = [
63
67
  "StandCloudLoader",
64
68
  "StandCloudReader",
65
69
  "StepWidget",
70
+ "TestStandNumberError",
66
71
  "TextInputWidget",
67
72
  "clear_operator_message",
68
73
  "get_current_attempt",
@@ -80,4 +85,5 @@ __all__ = [
80
85
  "set_stand_info",
81
86
  "set_stand_location",
82
87
  "set_stand_name",
88
+ "set_stand_number",
83
89
  ]
hardpy/cli/cli.py CHANGED
@@ -2,6 +2,7 @@
2
2
  # GNU General Public License v3.0 (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
3
3
  from __future__ import annotations
4
4
 
5
+ import socket
5
6
  import sys
6
7
  from pathlib import Path
7
8
  from typing import Annotated, Optional
@@ -150,6 +151,12 @@ def run(tests_dir: Annotated[Optional[str], typer.Argument()] = None) -> None:
150
151
  sys.exit()
151
152
 
152
153
  print("\nLaunch the HardPy operator panel...")
154
+
155
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
156
+ if s.connect_ex((config.frontend.host, config.frontend.port)) == 0:
157
+ print(f"Error: Specified port {config.frontend.port} is already in use")
158
+ sys.exit(1)
159
+
153
160
  print(f"http://{config.frontend.host}:{config.frontend.port}\n")
154
161
 
155
162
  uvicorn_run(
hardpy/cli/template.py CHANGED
@@ -132,10 +132,6 @@ headers = accept, authorization, content-type, origin, referer, x-csrf-token
132
132
  """ # noqa: E501
133
133
 
134
134
  pytest_ini = """[pytest]
135
- log_cli = true
136
- log_cli_level = INFO
137
- log_cli_format = %%(asctime)s [%%(levelname)s] %%(message)s
138
- log_cli_date_format = %H:%M:%S
139
135
  addopts = --hardpy-pt
140
136
  --hardpy-db-url http://{}:{}@{}:{}/
141
137
  """
@@ -0,0 +1 @@
1
+ import{I as n}from"./index-xb4M2ucX.js";import{I as e}from"./index-BMEat_ws.js";import{p as r,I as s}from"./index-Bl_IX0Up.js";function I(o,t){var a=r(o);return t===s.STANDARD?n[a]:e[a]}function p(o){return r(o)}export{n as IconSvgPaths16,e as IconSvgPaths20,I as getIconPaths,p as iconNameToPathsRecordKey};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/allPaths-B26356fZ.js","assets/index-xb4M2ucX.js","assets/index-BMEat_ws.js","assets/index-Bl_IX0Up.js","assets/index-BwCQzehg.css"])))=>i.map(i=>d[i]);
2
+ import{_ as o,a as n,b as i}from"./index-Bl_IX0Up.js";var _=function(e,a){return o(void 0,void 0,void 0,function(){var t;return n(this,function(r){switch(r.label){case 0:return[4,i(()=>import("./allPaths-B26356fZ.js"),__vite__mapDeps([0,1,2,3,4]))];case 1:return t=r.sent().getIconPaths,[2,t(e,a)]}})})};export{_ as allPathsLoader};