hardpy 0.10.1__tar.gz → 0.11.0__tar.gz
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.
- {hardpy-0.10.1 → hardpy-0.11.0}/PKG-INFO +1 -1
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/__init__.py +2 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/cli/cli.py +0 -12
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/cli/template.py +0 -4
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/config.py +11 -21
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/asset-manifest.json +3 -3
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/index.html +1 -1
- hardpy-0.11.0/hardpy/hardpy_panel/frontend/dist/static/js/main.114c5914.js +3 -0
- hardpy-0.11.0/hardpy/hardpy_panel/frontend/dist/static/js/main.114c5914.js.map +1 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/base_store.py +7 -2
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/const.py +3 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/schema/v1.py +22 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/plugin.py +4 -12
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/pytest_call.py +30 -41
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/pytest_wrapper.py +7 -17
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/reporter/base.py +9 -4
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/reporter/hook_reporter.py +7 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/__init__.py +2 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/connection_data.py +0 -4
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/dialog_box.py +59 -6
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/exception.py +1 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/pyproject.toml +1 -1
- hardpy-0.10.1/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js +0 -3
- hardpy-0.10.1/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js.map +0 -1
- {hardpy-0.10.1 → hardpy-0.11.0}/.gitignore +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/LICENSE +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/README.md +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/cli/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/stand_cloud/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/stand_cloud/connector.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/stand_cloud/exception.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/stand_cloud/oauth_callback.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/stand_cloud/registration.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/common/stand_cloud/token_storage.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/api.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/favicon.ico +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/logo192.png +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/logo512.png +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/manifest.json +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css.map +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js.map +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-16px-paths.d605910e.chunk.js +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-16px-paths.d605910e.chunk.js.map +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-20px-paths.7ee05cc8.chunk.js +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-20px-paths.7ee05cc8.chunk.js.map +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js.map +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js.map +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js.map +0 -0
- /hardpy-0.10.1/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js.LICENSE.txt → /hardpy-0.11.0/hardpy/hardpy_panel/frontend/dist/static/js/main.114c5914.js.LICENSE.txt +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.520846c6beb41df528c8.eot +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.5c52b39c697f2323ce8b.svg +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.84db1772f4bfb529f64f.woff +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.b67ee1736e20e37a3225.woff2 +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.e02ecf515378db143652.ttf +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.429cacb8accf72488451.ttf +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.6ae3791ee2d86fc228a6.svg +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.8cecf62de42997e4d82f.woff2 +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.afbadb627d43b7857223.eot +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.e857f5a5132b8bfa71a1.woff +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/hardpy_panel/frontend/dist/static/media/logo_smol.5b16f92447a4a9e80331.png +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/base_connector.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/base_server.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/runstore.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/schema/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/db/statestore.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/reporter/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/reporter/runner_reporter.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/couchdb_config.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/report_loader/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/report_loader/couchdb_loader.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/report_reader/__init__.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/result/report_reader/couchdb_reader.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/const.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/machineid.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/node_info.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/progress_calculator.py +0 -0
- {hardpy-0.10.1 → hardpy-0.11.0}/hardpy/pytest_hardpy/utils/singleton.py +0 -0
|
@@ -30,6 +30,7 @@ from hardpy.pytest_hardpy.utils import (
|
|
|
30
30
|
DuplicateSerialNumberError,
|
|
31
31
|
DuplicateTestStandLocationError,
|
|
32
32
|
DuplicateTestStandNameError,
|
|
33
|
+
HTMLComponent,
|
|
33
34
|
ImageComponent,
|
|
34
35
|
MultistepWidget,
|
|
35
36
|
NumericInputWidget,
|
|
@@ -48,6 +49,7 @@ __all__ = [
|
|
|
48
49
|
"DuplicateSerialNumberError",
|
|
49
50
|
"DuplicateTestStandLocationError",
|
|
50
51
|
"DuplicateTestStandNameError",
|
|
52
|
+
"HTMLComponent",
|
|
51
53
|
"ImageComponent",
|
|
52
54
|
"MultistepWidget",
|
|
53
55
|
"NumericInputWidget",
|
|
@@ -59,14 +59,6 @@ def init( # noqa: PLR0913
|
|
|
59
59
|
default=default_config.frontend.port,
|
|
60
60
|
help="Specify a frontend port.",
|
|
61
61
|
),
|
|
62
|
-
socket_host: str = typer.Option(
|
|
63
|
-
default=default_config.socket.host,
|
|
64
|
-
help="Specify a socket host.",
|
|
65
|
-
),
|
|
66
|
-
socket_port: int = typer.Option(
|
|
67
|
-
default=default_config.socket.port,
|
|
68
|
-
help="Specify a socket port.",
|
|
69
|
-
),
|
|
70
62
|
sc_address: str = typer.Option(
|
|
71
63
|
default="",
|
|
72
64
|
help="Specify a StandCloud address.",
|
|
@@ -87,8 +79,6 @@ def init( # noqa: PLR0913
|
|
|
87
79
|
database_port (int): Database port
|
|
88
80
|
frontend_host (str): Panel operator host
|
|
89
81
|
frontend_port (int): Panel operator port
|
|
90
|
-
socket_host (str): Socket host
|
|
91
|
-
socket_port (int): Socket port
|
|
92
82
|
sc_address (str): StandCloud address
|
|
93
83
|
sc_connection_only (bool): Flag to check StandCloud service availability
|
|
94
84
|
"""
|
|
@@ -101,8 +91,6 @@ def init( # noqa: PLR0913
|
|
|
101
91
|
database_port=database_port,
|
|
102
92
|
frontend_host=frontend_host,
|
|
103
93
|
frontend_port=frontend_port,
|
|
104
|
-
socket_host=socket_host,
|
|
105
|
-
socket_port=socket_port,
|
|
106
94
|
sc_address=sc_address,
|
|
107
95
|
sc_connection_only=sc_connection_only,
|
|
108
96
|
)
|
|
@@ -138,8 +138,6 @@ log_cli_format = %%(asctime)s [%%(levelname)s] %%(message)s
|
|
|
138
138
|
log_cli_date_format = %H:%M:%S
|
|
139
139
|
addopts = --hardpy-pt
|
|
140
140
|
--hardpy-db-url http://{}:{}@{}:{}/
|
|
141
|
-
--hardpy-sh {}
|
|
142
|
-
--hardpy-sp {}
|
|
143
141
|
"""
|
|
144
142
|
|
|
145
143
|
test_1_py = """import pytest
|
|
@@ -207,8 +205,6 @@ class TemplateGenerator:
|
|
|
207
205
|
self._config.database.password,
|
|
208
206
|
self._config.database.host,
|
|
209
207
|
self._config.database.port,
|
|
210
|
-
self._config.socket.host,
|
|
211
|
-
self._config.socket.port,
|
|
212
208
|
)
|
|
213
209
|
|
|
214
210
|
@property
|
|
@@ -42,14 +42,6 @@ class FrontendConfig(BaseModel):
|
|
|
42
42
|
port: int = 8000
|
|
43
43
|
|
|
44
44
|
|
|
45
|
-
class SocketConfig(BaseModel):
|
|
46
|
-
"""Socket configuration."""
|
|
47
|
-
|
|
48
|
-
model_config = ConfigDict(extra="forbid")
|
|
49
|
-
|
|
50
|
-
host: str = "localhost"
|
|
51
|
-
port: int = 6525
|
|
52
|
-
|
|
53
45
|
class StandCloudConfig(BaseModel):
|
|
54
46
|
"""StandCloud configuration."""
|
|
55
47
|
|
|
@@ -58,7 +50,7 @@ class StandCloudConfig(BaseModel):
|
|
|
58
50
|
address: str = ""
|
|
59
51
|
connection_only: bool = False
|
|
60
52
|
|
|
61
|
-
class HardpyConfig(BaseModel):
|
|
53
|
+
class HardpyConfig(BaseModel, extra="allow"):
|
|
62
54
|
"""HardPy configuration."""
|
|
63
55
|
|
|
64
56
|
model_config = ConfigDict(extra="forbid")
|
|
@@ -67,7 +59,6 @@ class HardpyConfig(BaseModel):
|
|
|
67
59
|
tests_dir: str = "tests"
|
|
68
60
|
database: DatabaseConfig = DatabaseConfig()
|
|
69
61
|
frontend: FrontendConfig = FrontendConfig()
|
|
70
|
-
socket: SocketConfig = SocketConfig()
|
|
71
62
|
stand_cloud: StandCloudConfig = StandCloudConfig()
|
|
72
63
|
|
|
73
64
|
|
|
@@ -87,8 +78,6 @@ class ConfigManager:
|
|
|
87
78
|
database_port: int,
|
|
88
79
|
frontend_host: str,
|
|
89
80
|
frontend_port: int,
|
|
90
|
-
socket_host: str,
|
|
91
|
-
socket_port: int,
|
|
92
81
|
sc_address: str = "",
|
|
93
82
|
sc_connection_only: bool = False,
|
|
94
83
|
) -> None:
|
|
@@ -102,8 +91,6 @@ class ConfigManager:
|
|
|
102
91
|
database_port (int): Database port.
|
|
103
92
|
frontend_host (str): Operator panel host.
|
|
104
93
|
frontend_port (int): Operator panel port.
|
|
105
|
-
socket_host (str): Socket host.
|
|
106
|
-
socket_port (int): Socket port.
|
|
107
94
|
sc_address (str): StandCloud address.
|
|
108
95
|
sc_connection_only (bool): StandCloud check availability.
|
|
109
96
|
"""
|
|
@@ -114,8 +101,6 @@ class ConfigManager:
|
|
|
114
101
|
cls.obj.database.port = database_port
|
|
115
102
|
cls.obj.frontend.host = frontend_host
|
|
116
103
|
cls.obj.frontend.port = frontend_port
|
|
117
|
-
cls.obj.socket.host = socket_host
|
|
118
|
-
cls.obj.socket.port = socket_port
|
|
119
104
|
cls.obj.stand_cloud.address = sc_address
|
|
120
105
|
cls.obj.stand_cloud.connection_only = sc_connection_only
|
|
121
106
|
|
|
@@ -149,13 +134,18 @@ class ConfigManager:
|
|
|
149
134
|
return None
|
|
150
135
|
try:
|
|
151
136
|
with Path.open(toml_path / "hardpy.toml", "rb") as f:
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
logger.exception(
|
|
137
|
+
toml_data = tomli.load(f)
|
|
138
|
+
except tomli.TOMLDecodeError as exc:
|
|
139
|
+
msg = f"Error parsing TOML: {exc}"
|
|
140
|
+
logger.exception(msg)
|
|
141
|
+
return None
|
|
142
|
+
|
|
143
|
+
try:
|
|
144
|
+
cls.obj = HardpyConfig(**toml_data)
|
|
156
145
|
except ValidationError:
|
|
157
146
|
logger.exception("Error parsing TOML")
|
|
158
|
-
|
|
147
|
+
return None
|
|
148
|
+
return cls.obj
|
|
159
149
|
|
|
160
150
|
@classmethod
|
|
161
151
|
def get_config(cls) -> HardpyConfig:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/static/css/main.e8a862f1.css",
|
|
4
|
-
"main.js": "/static/js/main.
|
|
4
|
+
"main.js": "/static/js/main.114c5914.js",
|
|
5
5
|
"blueprint-icons-all-paths-loader.js": "/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js",
|
|
6
6
|
"blueprint-icons-split-paths-by-size-loader.js": "/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js",
|
|
7
7
|
"static/js/808.ce070002.chunk.js": "/static/js/808.ce070002.chunk.js",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"static/media/logo_smol.png": "/static/media/logo_smol.5b16f92447a4a9e80331.png",
|
|
22
22
|
"index.html": "/index.html",
|
|
23
23
|
"main.e8a862f1.css.map": "/static/css/main.e8a862f1.css.map",
|
|
24
|
-
"main.
|
|
24
|
+
"main.114c5914.js.map": "/static/js/main.114c5914.js.map",
|
|
25
25
|
"blueprint-icons-all-paths-loader.0aa89747.chunk.js.map": "/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js.map",
|
|
26
26
|
"blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js.map": "/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js.map",
|
|
27
27
|
"808.ce070002.chunk.js.map": "/static/js/808.ce070002.chunk.js.map",
|
|
@@ -31,6 +31,6 @@
|
|
|
31
31
|
},
|
|
32
32
|
"entrypoints": [
|
|
33
33
|
"static/css/main.e8a862f1.css",
|
|
34
|
-
"static/js/main.
|
|
34
|
+
"static/js/main.114c5914.js"
|
|
35
35
|
]
|
|
36
36
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>HardPy Operator Panel</title><script defer="defer" src="/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#000000"/><meta name="description" content="Web site created using create-react-app"/><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>HardPy Operator Panel</title><script defer="defer" src="/static/js/main.114c5914.js"></script><link href="/static/css/main.e8a862f1.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|