hardpy 0.18.0__tar.gz → 0.18.1__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.
Files changed (86) hide show
  1. {hardpy-0.18.0 → hardpy-0.18.1}/PKG-INFO +1 -1
  2. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/cli/cli.py +7 -3
  3. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/connector.py +1 -1
  4. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/exception.py +0 -3
  5. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/api.py +6 -8
  6. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_synchronizer/synchronizer.py +10 -5
  7. {hardpy-0.18.0 → hardpy-0.18.1}/pyproject.toml +1 -1
  8. {hardpy-0.18.0 → hardpy-0.18.1}/.gitignore +0 -0
  9. {hardpy-0.18.0 → hardpy-0.18.1}/LICENSE +0 -0
  10. {hardpy-0.18.0 → hardpy-0.18.1}/README.md +0 -0
  11. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/__init__.py +0 -0
  12. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/cli/__init__.py +0 -0
  13. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/cli/template.py +0 -0
  14. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/__init__.py +0 -0
  15. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/config.py +0 -0
  16. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/singleton.py +0 -0
  17. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/__init__.py +0 -0
  18. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/oauth2.py +0 -0
  19. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/registration.py +0 -0
  20. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/token_manager.py +0 -0
  21. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/common/stand_cloud/utils.py +0 -0
  22. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/__init__.py +0 -0
  23. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/allPaths-31ulJ0tA.js +0 -0
  24. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/allPathsLoader-HPn4WHWu.js +0 -0
  25. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-B2twAPZE.ttf +0 -0
  26. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-C0Unyq1d.eot +0 -0
  27. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-CVy9qFng.svg +0 -0
  28. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-Ck1ifK4A.woff +0 -0
  29. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-DwWyHYRo.woff2 +0 -0
  30. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-9zitLjlL.woff2 +0 -0
  31. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-CjKGIKxE.woff +0 -0
  32. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-DQ09GSQq.svg +0 -0
  33. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-DmR755bS.ttf +0 -0
  34. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-p9MhBXD8.eot +0 -0
  35. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/browser-ponyfill-BQ1ipruI.js +0 -0
  36. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/index-B-fsa5Ru.js +0 -0
  37. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/index-B7T9xvaW.css +0 -0
  38. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/index-BK2y65ib.js +0 -0
  39. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/index-DLOviMB1.js +0 -0
  40. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/logo_smol-CK3jE85c.png +0 -0
  41. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/assets/splitPathsBySizeLoader-ev1ZiRR9.js +0 -0
  42. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/favicon.ico +0 -0
  43. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/index.html +0 -0
  44. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/de/translation.json +0 -0
  45. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/en/translation.json +0 -0
  46. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/es/translation.json +0 -0
  47. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/fr/translation.json +0 -0
  48. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/ja/translation.json +0 -0
  49. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/ru/translation.json +0 -0
  50. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/locales/zh/translation.json +0 -0
  51. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/logo192.png +0 -0
  52. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/logo512.png +0 -0
  53. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/hardpy_panel/frontend/dist/manifest.json +0 -0
  54. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/__init__.py +0 -0
  55. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/__init__.py +0 -0
  56. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/base_store.py +0 -0
  57. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/const.py +0 -0
  58. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/runstore.py +0 -0
  59. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/schema/__init__.py +0 -0
  60. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/schema/v1.py +0 -0
  61. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/stand_type.py +0 -0
  62. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/statestore.py +0 -0
  63. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/db/tempstore.py +0 -0
  64. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/plugin.py +0 -0
  65. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/pytest_call.py +0 -0
  66. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/pytest_wrapper.py +0 -0
  67. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/reporter/__init__.py +0 -0
  68. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/reporter/base.py +0 -0
  69. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/reporter/hook_reporter.py +0 -0
  70. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/reporter/runner_reporter.py +0 -0
  71. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/__init__.py +0 -0
  72. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/couchdb_config.py +0 -0
  73. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_loader/__init__.py +0 -0
  74. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_loader/couchdb_loader.py +0 -0
  75. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py +0 -0
  76. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_reader/__init__.py +0 -0
  77. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_reader/couchdb_reader.py +0 -0
  78. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_reader/stand_cloud_reader.py +0 -0
  79. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/result/report_synchronizer/__init__.py +0 -0
  80. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/__init__.py +0 -0
  81. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/const.py +0 -0
  82. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/dialog_box.py +0 -0
  83. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/exception.py +0 -0
  84. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/machineid.py +0 -0
  85. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/node_info.py +0 -0
  86. {hardpy-0.18.0 → hardpy-0.18.1}/hardpy/pytest_hardpy/utils/progress_calculator.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hardpy
3
- Version: 0.18.0
3
+ Version: 0.18.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/
@@ -330,9 +330,13 @@ def _validate_running_config(config: HardpyConfig, tests_dir: str) -> None:
330
330
  sys.exit()
331
331
 
332
332
  def _validate_config(config: HardpyConfig) -> None:
333
- if config.stand_cloud.autosync_timeout < 1:
334
- print("StandCloud autosync timeout must be greater than 0.")
335
- sys.exit()
333
+ if config.stand_cloud.autosync:
334
+ if config.stand_cloud.autosync_timeout < 1:
335
+ print("StandCloud autosync timeout must be greater than 0.")
336
+ sys.exit()
337
+ if not config.stand_cloud.api_key:
338
+ print("StandCloud API key is empty.")
339
+ sys.exit()
336
340
 
337
341
 
338
342
  def _request_hardpy(url: str, timeout: int = 5) -> str:
@@ -166,7 +166,7 @@ class StandCloudConnector:
166
166
  except OAuth2Error as exc:
167
167
  raise StandCloudError(exc.description) from exc
168
168
  except RequestException as exc:
169
- raise StandCloudError(exc.strerror) from exc # type: ignore
169
+ raise StandCloudError(exc.strerror or str(exc)) from exc # type: ignore
170
170
 
171
171
  return resp
172
172
 
@@ -4,6 +4,3 @@
4
4
 
5
5
  class StandCloudError(Exception):
6
6
  """Base StandCloud error."""
7
-
8
- def __init__(self, msg: str) -> None:
9
- super().__init__(f"StandCloud error: {msg}")
@@ -93,9 +93,8 @@ async def sync_stand_cloud(sc_sync_interval_minutes: int) -> None:
93
93
  except asyncio.CancelledError:
94
94
  logger.info("StandCloud synchronization task cancelled.")
95
95
  break
96
- except Exception: # noqa: BLE001
97
- # TODO (xorialexandrov): add more information to logging
98
- logger.info("Error during StandCloud synchronization")
96
+ except Exception as exc: # noqa: BLE001
97
+ logger.info(f"Error during StandCloud synchronization. {exc}")
99
98
  await asyncio.sleep(sc_sync_interval)
100
99
 
101
100
 
@@ -208,12 +207,11 @@ async def stand_cloud_sync() -> dict:
208
207
  app.state.executor,
209
208
  app.state.sc_synchronizer.sync,
210
209
  )
211
- except Exception: # noqa: BLE001
212
- msg = "Error during StandCloud synchronization"
213
- # TODO (xorialexandrov): add more information to logging
214
- logger.info("Error during StandCloud synchronization")
210
+ except Exception as exc: # noqa: BLE001
211
+ msg = f"Error during StandCloud synchronization. {exc}"
212
+ logger.info(msg)
215
213
  return {"status": msg}
216
- logger.info(f"StandCloud sucnronization status: {sync_result}")
214
+ logger.info(f"StandCloud syncronization status: {sync_result}")
217
215
  return {"status": sync_result}
218
216
 
219
217
 
@@ -31,10 +31,7 @@ class StandCloudSynchronizer:
31
31
  """
32
32
  if not self._tempstore.reports():
33
33
  return "All reports are synchronized with StandCloud"
34
- try:
35
- loader = self._create_sc_loader()
36
- except StandCloudError as err:
37
- raise StandCloudError(str(err)) from err
34
+ loader = self._create_sc_loader()
38
35
 
39
36
  invalid_reports = []
40
37
  success_report_counter = 0
@@ -117,5 +114,13 @@ class StandCloudSynchronizer:
117
114
 
118
115
  def _create_sc_loader(self) -> StandCloudLoader:
119
116
  loader = StandCloudLoader()
120
- loader.healthcheck()
117
+ response = loader.healthcheck()
118
+ if response.status_code != HTTPStatus.OK:
119
+ url = response.url
120
+ code = response.status_code
121
+ msg = f"StandCloud healthcheck at {url} is unavailable, status code: {code}"
122
+ raise StandCloudError(msg)
123
+ if response.status_code == HTTPStatus.OK and response.text != "{}":
124
+ msg = f"StandCloud healthcheck at {response.url} is unavailable"
125
+ raise StandCloudError(msg)
121
126
  return loader
@@ -3,7 +3,7 @@
3
3
 
4
4
  [project]
5
5
  name = "hardpy"
6
- version = "0.18.0"
6
+ version = "0.18.1"
7
7
  description = "HardPy library for device testing"
8
8
  license = "GPL-3.0-or-later"
9
9
  authors = [{ name = "Everypin", email = "info@everypin.io" }]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes