hardpy 0.11.0__py3-none-any.whl → 0.11.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.
@@ -56,6 +56,11 @@ def pytest_addoption(parser: Parser) -> None:
56
56
  default=con_data.database_url,
57
57
  help="database url",
58
58
  )
59
+ parser.addoption(
60
+ "--hardpy-tests-name",
61
+ action="store",
62
+ help="HardPy tests suite name",
63
+ )
59
64
  # TODO (xorialexandrov): Remove --hardpy-sp and --hardpy-sh in HardPy major version.
60
65
  # Addoptions left for compatibility with version 0.10.1 and below
61
66
  parser.addoption(
@@ -117,6 +122,7 @@ class HardpyPlugin:
117
122
  self._results = {}
118
123
  self._post_run_functions: list[Callable] = []
119
124
  self._dependencies = {}
125
+ self._tests_name: str = ""
120
126
 
121
127
  if system() == "Linux":
122
128
  signal.signal(signal.SIGTERM, self._stop_handler)
@@ -134,6 +140,12 @@ class HardpyPlugin:
134
140
  if database_url:
135
141
  con_data.database_url = str(database_url) # type: ignore
136
142
 
143
+ tests_name = config.getoption("--hardpy-tests-name")
144
+ if tests_name:
145
+ self._tests_name = str(tests_name)
146
+ else:
147
+ self._tests_name = str(PurePath(config.rootpath).name)
148
+
137
149
  is_clear_database = config.getoption("--hardpy-clear-database")
138
150
 
139
151
  sc_address = config.getoption("--sc-address")
@@ -174,11 +186,11 @@ class HardpyPlugin:
174
186
  def pytest_collection_modifyitems(
175
187
  self,
176
188
  session: Session,
177
- config: Config,
189
+ config: Config, # noqa: ARG002
178
190
  items: list[Item], # noqa: ARG002
179
191
  ) -> None:
180
192
  """Call after collection phase."""
181
- self._reporter.init_doc(str(PurePath(config.rootpath).name))
193
+ self._reporter.init_doc(self._tests_name)
182
194
 
183
195
  nodes = {}
184
196
  modules = set()
@@ -256,8 +268,8 @@ class HardpyPlugin:
256
268
 
257
269
  status = TestStatus.RUN
258
270
  is_skip_test = self._is_skip_test(node_info)
271
+ self._reporter.set_module_start_time(node_info.module_id)
259
272
  if not is_skip_test:
260
- self._reporter.set_module_start_time(node_info.module_id)
261
273
  self._reporter.set_case_start_time(node_info.module_id, node_info.case_id)
262
274
  else:
263
275
  status = TestStatus.SKIPPED
@@ -316,7 +328,11 @@ class HardpyPlugin:
316
328
 
317
329
  def pytest_runtest_logreport(self, report: TestReport) -> bool | None:
318
330
  """Call after call of each test item."""
319
- if report.when != "call" and report.failed is False:
331
+ is_skipped_by_plugin: bool = False
332
+ if report.when == "setup" and report.skipped is True:
333
+ # plugin-skipped tests should not have start and stop times
334
+ is_skipped_by_plugin = True
335
+ elif report.when != "call" and report.failed is False:
320
336
  # ignore setup and teardown phase or continue processing setup
321
337
  # and teardown failure (fixture exception handler)
322
338
  return True
@@ -329,10 +345,9 @@ class HardpyPlugin:
329
345
  case_id,
330
346
  TestStatus(report.outcome),
331
347
  )
332
- self._reporter.set_case_stop_time(
333
- module_id,
334
- case_id,
335
- )
348
+ # update case stop_time in non-skipped tests or user-skipped tests
349
+ if report.skipped is False or is_skipped_by_plugin is False:
350
+ self._reporter.set_case_stop_time(module_id, case_id)
336
351
 
337
352
  assertion_msg = self._decode_assertion_msg(report.longrepr)
338
353
  self._reporter.set_assertion_msg(module_id, case_id, assertion_msg)
@@ -45,6 +45,8 @@ class PyTestWrapper:
45
45
  "pytest",
46
46
  "--hardpy-db-url",
47
47
  self.config.database.connection_url(),
48
+ "--hardpy-tests-name",
49
+ self.config.tests_name,
48
50
  "--sc-address",
49
51
  self.config.stand_cloud.address,
50
52
  "--sc-connection-only"
@@ -62,6 +64,8 @@ class PyTestWrapper:
62
64
  "pytest",
63
65
  "--hardpy-db-url",
64
66
  self.config.database.connection_url(),
67
+ "--hardpy-tests-name",
68
+ self.config.tests_name,
65
69
  "--sc-address",
66
70
  self.config.stand_cloud.address,
67
71
  "--sc-connection-only"
@@ -111,6 +115,8 @@ class PyTestWrapper:
111
115
  "--collect-only",
112
116
  "--hardpy-db-url",
113
117
  self.config.database.connection_url(),
118
+ "--hardpy-tests-name",
119
+ self.config.tests_name,
114
120
  "--hardpy-pt",
115
121
  ]
116
122
 
@@ -149,3 +155,11 @@ class PyTestWrapper:
149
155
  bool | None: True if self._proc is not None
150
156
  """
151
157
  return self._proc and self._proc.poll() is None
158
+
159
+ def get_config(self) -> dict:
160
+ """Get HardPy configuration.
161
+
162
+ Returns:
163
+ dict: HardPy configuration
164
+ """
165
+ return ConfigManager().get_config().model_dump()
@@ -6,9 +6,13 @@ from hardpy.pytest_hardpy.result.report_loader.stand_cloud_loader import (
6
6
  StandCloudLoader,
7
7
  )
8
8
  from hardpy.pytest_hardpy.result.report_reader.couchdb_reader import CouchdbReader
9
+ from hardpy.pytest_hardpy.result.report_reader.stand_cloud_reader import (
10
+ StandCloudReader,
11
+ )
9
12
 
10
13
  __all__ = [
11
14
  "CouchdbLoader",
12
15
  "CouchdbReader",
13
16
  "StandCloudLoader",
17
+ "StandCloudReader",
14
18
  ]
@@ -58,17 +58,17 @@ class CouchdbConfig:
58
58
 
59
59
  try:
60
60
  response = requests.get(host_url, timeout=5)
61
- except requests.exceptions.RequestException:
61
+ except requests.exceptions.RequestException as exc:
62
62
  msg = f"Error CouchDB connecting to {host_url}."
63
- raise RuntimeError(msg) # noqa: B904
63
+ raise RuntimeError(msg) from exc
64
64
 
65
65
  # fmt: off
66
66
  try:
67
67
  couchdb_dict = ast.literal_eval(response._content.decode("utf-8")) # type: ignore # noqa: SLF001
68
68
  couchdb_dict.get("couchdb", False)
69
- except Exception: # noqa: BLE001
69
+ except Exception as exc:
70
70
  msg = f"Address {host_url} does not provide CouchDB attributes."
71
- raise RuntimeError(msg) # noqa: B904
71
+ raise RuntimeError(msg) from exc
72
72
  # fmt: on
73
73
 
74
74
  credentials = f"{self.user}:{self.password}"
@@ -93,8 +93,6 @@ class CouchdbConfig:
93
93
  if requests.get(request, timeout=5).status_code == success:
94
94
  return "http"
95
95
  raise OSError # noqa: TRY301
96
- except OSError:
96
+ except OSError as exc:
97
97
  msg = f"Error connecting to couchdb server {self.host}:{self.port}."
98
- raise RuntimeError( # noqa: B904
99
- msg,
100
- )
98
+ raise RuntimeError(msg) from exc
@@ -4,9 +4,8 @@ from __future__ import annotations
4
4
 
5
5
  from typing import TYPE_CHECKING
6
6
 
7
- from oauthlib.oauth2.rfc6749.errors import InvalidGrantError, TokenExpiredError
7
+ from oauthlib.oauth2.rfc6749.errors import OAuth2Error
8
8
  from requests.exceptions import HTTPError
9
- from requests_oauth2client.tokens import ExpiredAccessToken
10
9
 
11
10
  from hardpy.common.stand_cloud.connector import StandCloudConnector, StandCloudError
12
11
  from hardpy.pytest_hardpy.utils import ConnectionData
@@ -45,16 +44,14 @@ class StandCloudLoader:
45
44
  Raises:
46
45
  StandCloudError: if report not uploaded to StandCloud
47
46
  """
48
- api = self._sc_connector.get_api("api/test_run")
47
+ api = self._sc_connector.get_api("test_report")
49
48
 
50
49
  try:
51
50
  resp = api.post(verify=self._verify_ssl, json=report.model_dump())
52
- except ExpiredAccessToken as exc:
53
- raise StandCloudError(str(exc)) # type: ignore
54
- except TokenExpiredError as exc:
55
- raise StandCloudError(exc.description)
56
- except InvalidGrantError as exc:
57
- raise StandCloudError(exc.description)
51
+ except RuntimeError as exc:
52
+ raise StandCloudError(str(exc)) from exc
53
+ except OAuth2Error as exc:
54
+ raise StandCloudError(exc.description) from exc
58
55
  except HTTPError as exc:
59
56
  return exc.response # type: ignore
60
57
 
@@ -0,0 +1,84 @@
1
+ # Copyright (c) 2025 Everypin
2
+ # GNU General Public License v3.0 (see LICENSE or https://www.gnu.org/licenses/gpl-3.0.txt)
3
+ from __future__ import annotations
4
+
5
+ from typing import TYPE_CHECKING
6
+ from urllib.parse import urlencode
7
+
8
+ from oauthlib.oauth2.rfc6749.errors import OAuth2Error
9
+ from requests.exceptions import RequestException
10
+
11
+ from hardpy.common.stand_cloud.connector import StandCloudConnector, StandCloudError
12
+
13
+ if TYPE_CHECKING:
14
+ from typing import Any
15
+
16
+ from requests import Response
17
+ from requests_oauth2client import ApiClient
18
+
19
+
20
+ class StandCloudReader:
21
+ """StandCloud data reader.
22
+
23
+ The link to the documentation can be obtained by address:
24
+ https://service_name/integration/api/v1/docs
25
+
26
+ For example:
27
+ https://demo.standcloud.io/integration/api/v1/docs
28
+ """
29
+
30
+ def __init__(self, sc_connector: StandCloudConnector) -> None:
31
+ """Create StandCloud reader.
32
+
33
+ Args:
34
+ sc_connector (StandCloudConnector): StandCloud connector
35
+ """
36
+ self._verify_ssl = not __debug__
37
+ self._sc_connector = sc_connector
38
+
39
+ def test_run(self, run_id: str) -> Response:
40
+ """Get run data from '/test_run' endpoint.
41
+
42
+ Args:
43
+ run_id (str): UUIDv4 test run identifier.
44
+ Example: "3fa85f64-5717-4562-b3fc-2c963f66afa6"
45
+
46
+ Returns:
47
+ Response: test run data.
48
+ """
49
+ return self._request(endpoint=f"test_run/{run_id}")
50
+
51
+ def tested_dut(self, params: dict[str, Any]) -> Response:
52
+ """Get tested DUT's data from '/tested_dut' endpoint.
53
+
54
+ Args:
55
+ params (dict[str, Any]): tested DUT filters:
56
+ Examples: {
57
+ "test_stand_name": "Stand 1",
58
+ "part_number": "part_number_1",
59
+ "firmware_version": "1.2.3",
60
+ }
61
+
62
+ Returns:
63
+ Response: tested dut data.
64
+ """
65
+ return self._request(endpoint="tested_dut", params=params)
66
+
67
+ def _request(self, endpoint: str, params: dict[str, Any] | None = None) -> Response:
68
+ api = self._build_api(endpoint=endpoint, params=params)
69
+ try:
70
+ resp = api.get(verify=self._verify_ssl)
71
+ except RuntimeError as exc:
72
+ raise StandCloudError(str(exc)) from exc
73
+ except OAuth2Error as exc:
74
+ raise StandCloudError(exc.description) from exc
75
+ except RequestException as exc:
76
+ return exc.response # type: ignore
77
+
78
+ return resp
79
+
80
+ def _build_api(self, endpoint: str, params: dict | None = None) -> ApiClient:
81
+ if params is None:
82
+ return self._sc_connector.get_api(f"{endpoint}")
83
+ encoded_params = urlencode(params)
84
+ return self._sc_connector.get_api(f"{endpoint}?{encoded_params}")
@@ -289,9 +289,9 @@ class ImageComponent:
289
289
  try:
290
290
  with open(address, "rb") as file: # noqa: PTH123
291
291
  file_data = file.read()
292
- except FileNotFoundError:
292
+ except FileNotFoundError as exc:
293
293
  msg = "The image address is invalid"
294
- raise ImageError(msg) # noqa: B904
294
+ raise ImageError(msg) from exc
295
295
  self.address = address
296
296
  self.width = width
297
297
  self.border = border
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hardpy
3
- Version: 0.11.0
3
+ Version: 0.11.1
4
4
  Summary: HardPy library for device testing
5
5
  Project-URL: Homepage, https://github.com/everypinio/hardpy/
6
6
  Project-URL: Documentation, https://everypinio.github.io/hardpy/
@@ -1,20 +1,20 @@
1
- hardpy/__init__.py,sha256=j93-OCgVIy8Gm2EO1Nkwwja82dEcIb5odt8yAILd_Kk,1958
1
+ hardpy/__init__.py,sha256=uk-xLjGq0eR0qEj_oWwiuvq7RPAT6sTOIk8R26fLuOE,2065
2
2
  hardpy/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- hardpy/cli/cli.py,sha256=UmPBllh0DeMAc8aqTc6nZW3SAtp30gUzi3TN-hNXfjo,6140
3
+ hardpy/cli/cli.py,sha256=bBuxMfhE-nSYwGpKR8XuLZcZaDwdsK7smb5-O9cj3t4,8779
4
4
  hardpy/cli/template.py,sha256=ItgD2DSxxFiW7JOXRXNAT5KrBKe5kqDxQIRKLV3Kd0s,6352
5
5
  hardpy/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- hardpy/common/config.py,sha256=9fMFsuc3Bzy3LMmq8AhtF95jvJ0hca-ss-99Yvg5sh8,4758
7
- hardpy/common/stand_cloud/__init__.py,sha256=iOLOLdz06j8TLZBzHbYYuc0V5RYdEuG9ZbAxSg3rP2s,412
8
- hardpy/common/stand_cloud/connector.py,sha256=RBG-RDQmKGDey7mT13KiDtl-0ETIGivF-3LGtI67Odg,7334
6
+ hardpy/common/config.py,sha256=nA2r2FrdKl0e-OqVvoa-3KvQ26Af-b86j7RMhGsWCPE,4966
7
+ hardpy/common/stand_cloud/__init__.py,sha256=fezdiYAehtT2H-GAef-xZU12CbmCRe64XHA9UB3kJDU,456
8
+ hardpy/common/stand_cloud/connector.py,sha256=lOLiEcMOKqllx-nfItCpstDMnm_XVi8xdrff2NSYva0,7018
9
9
  hardpy/common/stand_cloud/exception.py,sha256=eKkqu5ylDRIGN_yZhvz2xVGm49XmlZ8nryALgdRqpbY,287
10
10
  hardpy/common/stand_cloud/oauth_callback.py,sha256=GkADOnQ46HwxKEdgG_4bS1xX0ybfdQqMK3us-dMuHVw,3322
11
11
  hardpy/common/stand_cloud/registration.py,sha256=HxvTex-PxanfVMYt7jiOuxs2lSMt0-f5PbWBvbobvCU,6754
12
12
  hardpy/common/stand_cloud/token_storage.py,sha256=aH3-BRefCR-CHd0La6wOEwWxBZY8wOkdXh8WE86vLMo,856
13
13
  hardpy/hardpy_panel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- hardpy/hardpy_panel/api.py,sha256=2brUDu8gAV7WduZTlxfW_ax-Z7loE-RXzZgrUUd33L4,3073
15
- hardpy/hardpy_panel/frontend/dist/asset-manifest.json,sha256=WVqZE4iDaw0CeBzkAEjZGv8-HeJdJY0c8_BlZvjYF0E,2824
14
+ hardpy/hardpy_panel/api.py,sha256=BRY_RuYKPo0e1WdVCPS7iA46GzLIc5A4hLPvtagKqRc,3533
15
+ hardpy/hardpy_panel/frontend/dist/asset-manifest.json,sha256=eSmAD0a5xY2pvZpUyrsawbYB1wN7ONRsaERS6c3FR2M,2824
16
16
  hardpy/hardpy_panel/frontend/dist/favicon.ico,sha256=sgIk5PKUKEKBDpkSrc8dJgjpObp0iF82Mec0GpfKId4,15406
17
- hardpy/hardpy_panel/frontend/dist/index.html,sha256=JsE-kpgc5chDXMfxf65920hRssqGsd5R_lsRiTv0QE4,656
17
+ hardpy/hardpy_panel/frontend/dist/index.html,sha256=ReKvf5Fsb9ZpwpIjy5y2CvR3V_oK2dTCAggdU6ILYiA,656
18
18
  hardpy/hardpy_panel/frontend/dist/logo192.png,sha256=E4K7drvhJCg9HcTpRihOXZhVJVBZ7-W97Se-3tDb46o,14485
19
19
  hardpy/hardpy_panel/frontend/dist/logo512.png,sha256=-fIMbqX7PYUpheK4kX1C1erRTe_hHZwFQYDLrAbhFRU,34188
20
20
  hardpy/hardpy_panel/frontend/dist/manifest.json,sha256=PfmJlN2JMJtHS6OnhU4b4X5wPQC_yRBdjesjoirObSA,502
@@ -32,9 +32,9 @@ hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.c
32
32
  hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js.map,sha256=p1xKHRK4AZutkZsQHiWSNU61tYp7I3iUuyLLm3eqkHQ,2833
33
33
  hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js,sha256=Jl5xm_jQ9IXKhCagHHvnIhwYXb379Q5FFBiqPoKdUIE,605
34
34
  hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js.map,sha256=amJiG2QaJMRR9Y2M0C2soOqd75xdQHhsVKjwrDSIIT0,2224
35
- hardpy/hardpy_panel/frontend/dist/static/js/main.114c5914.js,sha256=IvWCfa7IRGZE65jUrSKA2axkcC9x_qRF-SwbESSs7Hg,1017092
36
- hardpy/hardpy_panel/frontend/dist/static/js/main.114c5914.js.LICENSE.txt,sha256=ForPNukClWMEP3pF9LMYoU-ve-LsyCH-rYU8eLki_FY,2315
37
- hardpy/hardpy_panel/frontend/dist/static/js/main.114c5914.js.map,sha256=gaZHxb-xbVW1kLzwRDOfbspJMHc40X6y9NbCKBC61ZI,5089110
35
+ hardpy/hardpy_panel/frontend/dist/static/js/main.fb8b84a3.js,sha256=P7SNLoxtL05KRld5YInGWNQouolJmUeQipzt_WQnVAU,1017440
36
+ hardpy/hardpy_panel/frontend/dist/static/js/main.fb8b84a3.js.LICENSE.txt,sha256=ForPNukClWMEP3pF9LMYoU-ve-LsyCH-rYU8eLki_FY,2315
37
+ hardpy/hardpy_panel/frontend/dist/static/js/main.fb8b84a3.js.map,sha256=zkEWQn20YM-8rGdgCVGeL6exckn_tsN1_7gRDj8k5Ik,5090116
38
38
  hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.520846c6beb41df528c8.eot,sha256=PTCTrQYNHX2hIPUaYWtOKrI30-iQGXt_EGxq6JCXie0,117628
39
39
  hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.5c52b39c697f2323ce8b.svg,sha256=lDCQy06aS-9bmhwuFOUs-EdcR8MP2wqwAwky5oamtkQ,509417
40
40
  hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.84db1772f4bfb529f64f.woff,sha256=edyqQN0nw4dNBs1pgr7pQB7nJhhR6T_YfklFcG_fHj0,53344
@@ -47,9 +47,9 @@ hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.afbadb627d43b7
47
47
  hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.e857f5a5132b8bfa71a1.woff,sha256=mQZTxE1PyyAL16VWuASOvXlZFwuI4aCPvbrhfgpdIdU,55356
48
48
  hardpy/hardpy_panel/frontend/dist/static/media/logo_smol.5b16f92447a4a9e80331.png,sha256=E4K7drvhJCg9HcTpRihOXZhVJVBZ7-W97Se-3tDb46o,14485
49
49
  hardpy/pytest_hardpy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
50
- hardpy/pytest_hardpy/plugin.py,sha256=Mwx_FEYhenNfrKLHexvSzWk9bobXJTfo40qCvi-2LGk,17500
50
+ hardpy/pytest_hardpy/plugin.py,sha256=kpvLY6eNcEs1zLorJWhJybkidLUB501LTfTOtPjbMoo,18196
51
51
  hardpy/pytest_hardpy/pytest_call.py,sha256=CL1cIGu5WLm0au7riQ-xVlX0_f8nmubIedBXxRX98tc,12319
52
- hardpy/pytest_hardpy/pytest_wrapper.py,sha256=SdG4fRQTmxbQqDfdiM_Wx6EwQpV06Rm9CpfLmZ3pkhg,4719
52
+ hardpy/pytest_hardpy/pytest_wrapper.py,sha256=_eULTqbJhFj0uu3XPplS4WSrI_LJC_ZX2kA5t5YJ49U,5162
53
53
  hardpy/pytest_hardpy/db/__init__.py,sha256=G6y13JPh8HaH2O9E3_LTH_bTUVSgiezQFjDGaNIljec,557
54
54
  hardpy/pytest_hardpy/db/base_connector.py,sha256=5a476F5LwvFUfQ4Yc0Q6biacULDrCk8UHPlpc6n0NRQ,1111
55
55
  hardpy/pytest_hardpy/db/base_server.py,sha256=XqTff225iIymPYUGGEja9r9WOilVw7ljcAVp1M8VuAI,404
@@ -63,24 +63,25 @@ hardpy/pytest_hardpy/reporter/__init__.py,sha256=rztpM2HlLUpMOvad0JHbZU4Mk8PDDQy
63
63
  hardpy/pytest_hardpy/reporter/base.py,sha256=IGVzKpOTN2uauhrUn3HWTyHhhMQFXAWcOvfo1EzDOkw,2707
64
64
  hardpy/pytest_hardpy/reporter/hook_reporter.py,sha256=8cOlOgmLqDty4ib3p5gkZdi6ZAYqAFIjQhQ3Vm6AHGU,11952
65
65
  hardpy/pytest_hardpy/reporter/runner_reporter.py,sha256=YsK8wrLIulsixePG6WNfC4MagpKfhP5j0CUaXkcfeL0,790
66
- hardpy/pytest_hardpy/result/__init__.py,sha256=JEFxF8yCnBcUSkvRFIjOCTafMIQuMXCBL23Uj0vSX2E,469
67
- hardpy/pytest_hardpy/result/couchdb_config.py,sha256=rzUc2cg6uUnDo6RPHTaWR_RbmN_uZ77dWGCXQYz8iNk,3292
66
+ hardpy/pytest_hardpy/result/__init__.py,sha256=2afpuEuOcxYfIEOwWzsGZe960iQaPVCmsbYujijQg1s,592
67
+ hardpy/pytest_hardpy/result/couchdb_config.py,sha256=ujxyJYM2pdZzi3GZ2Zysbz2_ZeTRN5sQc8AGuzRJm_0,3243
68
68
  hardpy/pytest_hardpy/result/report_loader/__init__.py,sha256=wq5Y-_JW2ExCRnQ9VVesKmTToEQrcTY5RxNJIWaT9ag,374
69
69
  hardpy/pytest_hardpy/result/report_loader/couchdb_loader.py,sha256=KcZ0JkCgWhrj2J9M04JBDy0fpqtpVEYtu9GCLDG27pU,2255
70
- hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py,sha256=RM6teBUvX5BlYUEHnElqIBvbbfx0G98vwjlCecI6FG8,2405
70
+ hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py,sha256=lRPDGIOFquo-KcCYxR6C4vnfe1m_dBWENFN8IkNZDPc,2217
71
71
  hardpy/pytest_hardpy/result/report_reader/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  hardpy/pytest_hardpy/result/report_reader/couchdb_reader.py,sha256=GrROwfTVyJaVLPBxkvOM35HCksFEnWm0aVI8FibPikg,5911
73
+ hardpy/pytest_hardpy/result/report_reader/stand_cloud_reader.py,sha256=H-qXND3X1dZfwzg_9ch5rIltZi9e_GxMqc5uG0OkGdQ,2771
73
74
  hardpy/pytest_hardpy/utils/__init__.py,sha256=xA4g-d4Z75phko-Vay7ZRSxzIO3FB5-IAiyMyXLZnoE,1511
74
75
  hardpy/pytest_hardpy/utils/connection_data.py,sha256=Oq1LdIpmYkwakNCNwAPD-FTH4W7lj_v8vYkQCqJTof8,449
75
76
  hardpy/pytest_hardpy/utils/const.py,sha256=RuzRmnpvmUylRbj8CxtaVbo7J9kp6rELvjPdfUzMQLU,407
76
- hardpy/pytest_hardpy/utils/dialog_box.py,sha256=RjUArdN-xGFM3WQzxI8QaZeJk6lynG06ZDOnstVq038,11222
77
+ hardpy/pytest_hardpy/utils/dialog_box.py,sha256=LNukQ7ukUzLUFmwwH6L6M8wWmF-Mo4HF-UpVkyf8nY8,11224
77
78
  hardpy/pytest_hardpy/utils/exception.py,sha256=bsyExxcFrpArO1WK-tiqwYuPtVC43jj3eHquLcR-3vc,1381
78
79
  hardpy/pytest_hardpy/utils/machineid.py,sha256=6JAzUt7KtjTYn8kL9hSMaCQ20U8liH-zDT9v-5Ch7Q8,296
79
80
  hardpy/pytest_hardpy/utils/node_info.py,sha256=mA7u1KHHLIq70ZNOOF7NVlxMmfhwGanVyXpBNfBWQDk,4121
80
81
  hardpy/pytest_hardpy/utils/progress_calculator.py,sha256=TPl2gG0ZSvMe8otPythhF9hkD6fa6-mJAhy9yI83-yE,1071
81
82
  hardpy/pytest_hardpy/utils/singleton.py,sha256=tjUGs48o_vBeVpRsEBZEOTCoCUikpIFmQ1c3rsfymso,948
82
- hardpy-0.11.0.dist-info/METADATA,sha256=397yygx3Gjw9Zs_F4gC9rdwo8Iyvp-SyfPrbeAcyXFM,3909
83
- hardpy-0.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
84
- hardpy-0.11.0.dist-info/entry_points.txt,sha256=nL2sMkKMScNaOE0IPkYnu9Yr-BUswZvGSrwY-SxHY3E,102
85
- hardpy-0.11.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
86
- hardpy-0.11.0.dist-info/RECORD,,
83
+ hardpy-0.11.1.dist-info/METADATA,sha256=HrXnRUpVUaEsHdFPoYSRAuTw_77lnHLZBb6tK-3HjCo,3909
84
+ hardpy-0.11.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
85
+ hardpy-0.11.1.dist-info/entry_points.txt,sha256=nL2sMkKMScNaOE0IPkYnu9Yr-BUswZvGSrwY-SxHY3E,102
86
+ hardpy-0.11.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
87
+ hardpy-0.11.1.dist-info/RECORD,,