hardpy 0.18.1__tar.gz → 0.18.3__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.1 → hardpy-0.18.3}/PKG-INFO +3 -3
  2. {hardpy-0.18.1 → hardpy-0.18.3}/README.md +1 -1
  3. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/token_manager.py +2 -0
  4. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/plugin.py +3 -3
  5. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/pytest_wrapper.py +4 -4
  6. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_synchronizer/synchronizer.py +2 -1
  7. {hardpy-0.18.1 → hardpy-0.18.3}/pyproject.toml +2 -2
  8. {hardpy-0.18.1 → hardpy-0.18.3}/.gitignore +0 -0
  9. {hardpy-0.18.1 → hardpy-0.18.3}/LICENSE +0 -0
  10. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/__init__.py +0 -0
  11. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/cli/__init__.py +0 -0
  12. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/cli/cli.py +0 -0
  13. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/cli/template.py +0 -0
  14. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/__init__.py +0 -0
  15. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/config.py +0 -0
  16. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/singleton.py +0 -0
  17. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/__init__.py +0 -0
  18. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/connector.py +0 -0
  19. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/exception.py +0 -0
  20. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/oauth2.py +0 -0
  21. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/registration.py +0 -0
  22. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/common/stand_cloud/utils.py +0 -0
  23. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/__init__.py +0 -0
  24. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/api.py +0 -0
  25. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/allPaths-31ulJ0tA.js +0 -0
  26. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/allPathsLoader-HPn4WHWu.js +0 -0
  27. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-B2twAPZE.ttf +0 -0
  28. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-C0Unyq1d.eot +0 -0
  29. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-CVy9qFng.svg +0 -0
  30. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-Ck1ifK4A.woff +0 -0
  31. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-16-DwWyHYRo.woff2 +0 -0
  32. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-9zitLjlL.woff2 +0 -0
  33. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-CjKGIKxE.woff +0 -0
  34. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-DQ09GSQq.svg +0 -0
  35. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-DmR755bS.ttf +0 -0
  36. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/blueprint-icons-20-p9MhBXD8.eot +0 -0
  37. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/browser-ponyfill-BQ1ipruI.js +0 -0
  38. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/index-B-fsa5Ru.js +0 -0
  39. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/index-B7T9xvaW.css +0 -0
  40. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/index-BK2y65ib.js +0 -0
  41. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/index-DLOviMB1.js +0 -0
  42. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/logo_smol-CK3jE85c.png +0 -0
  43. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/assets/splitPathsBySizeLoader-ev1ZiRR9.js +0 -0
  44. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/favicon.ico +0 -0
  45. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/index.html +0 -0
  46. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/de/translation.json +0 -0
  47. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/en/translation.json +0 -0
  48. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/es/translation.json +0 -0
  49. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/fr/translation.json +0 -0
  50. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/ja/translation.json +0 -0
  51. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/ru/translation.json +0 -0
  52. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/locales/zh/translation.json +0 -0
  53. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/logo192.png +0 -0
  54. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/logo512.png +0 -0
  55. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/hardpy_panel/frontend/dist/manifest.json +0 -0
  56. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/__init__.py +0 -0
  57. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/__init__.py +0 -0
  58. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/base_store.py +0 -0
  59. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/const.py +0 -0
  60. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/runstore.py +0 -0
  61. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/schema/__init__.py +0 -0
  62. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/schema/v1.py +0 -0
  63. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/stand_type.py +0 -0
  64. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/statestore.py +0 -0
  65. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/db/tempstore.py +0 -0
  66. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/pytest_call.py +0 -0
  67. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/reporter/__init__.py +0 -0
  68. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/reporter/base.py +0 -0
  69. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/reporter/hook_reporter.py +0 -0
  70. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/reporter/runner_reporter.py +0 -0
  71. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/__init__.py +0 -0
  72. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/couchdb_config.py +0 -0
  73. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_loader/__init__.py +0 -0
  74. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_loader/couchdb_loader.py +0 -0
  75. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py +0 -0
  76. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_reader/__init__.py +0 -0
  77. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_reader/couchdb_reader.py +0 -0
  78. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_reader/stand_cloud_reader.py +0 -0
  79. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/result/report_synchronizer/__init__.py +0 -0
  80. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/utils/__init__.py +0 -0
  81. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/utils/const.py +0 -0
  82. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/utils/dialog_box.py +0 -0
  83. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/utils/exception.py +0 -0
  84. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/utils/machineid.py +0 -0
  85. {hardpy-0.18.1 → hardpy-0.18.3}/hardpy/pytest_hardpy/utils/node_info.py +0 -0
  86. {hardpy-0.18.1 → hardpy-0.18.3}/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.1
3
+ Version: 0.18.3
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/
@@ -33,7 +33,7 @@ Requires-Dist: oauthlib<4,>=3.1.0
33
33
  Requires-Dist: py-machineid~=0.6.0
34
34
  Requires-Dist: pycouchdb<2,>=1.14.2
35
35
  Requires-Dist: pydantic<3,>=2.4.0
36
- Requires-Dist: pytest<9,>=7
36
+ Requires-Dist: pytest>=7
37
37
  Requires-Dist: qrcode>=8
38
38
  Requires-Dist: requests-oauth2client<2,>=1.5.0
39
39
  Requires-Dist: requests-oauthlib<3,>=2.0.0
@@ -66,7 +66,7 @@ HardPy is a python library for creating a test bench for devices.
66
66
 
67
67
  [![PyPI version](https://img.shields.io/pypi/v/hardpy)](https://pypi.org/project/hardpy/)
68
68
  ![python versions](https://img.shields.io/pypi/pyversions/hardpy.svg)
69
- [![pytest versions](https://img.shields.io/badge/pytest-%3E%3D7.0%20%3C9.0-blue)](https://docs.pytest.org/en/latest/)
69
+ [![pytest versions](https://img.shields.io/badge/pytest-%3E%3D7.0-blue)](https://docs.pytest.org/en/latest/)
70
70
  [![Documentation](https://img.shields.io/badge/Documentation%20-Overview%20-%20%23007ec6)](https://everypinio.github.io/hardpy/)
71
71
  [![Reddit](https://img.shields.io/badge/-Reddit-FF4500?style=flat&logo=reddit&logoColor=white)](https://www.reddit.com/r/HardPy)
72
72
  [![Telegram](https://img.shields.io/badge/-Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/everypin)
@@ -10,7 +10,7 @@ HardPy is a python library for creating a test bench for devices.
10
10
 
11
11
  [![PyPI version](https://img.shields.io/pypi/v/hardpy)](https://pypi.org/project/hardpy/)
12
12
  ![python versions](https://img.shields.io/pypi/pyversions/hardpy.svg)
13
- [![pytest versions](https://img.shields.io/badge/pytest-%3E%3D7.0%20%3C9.0-blue)](https://docs.pytest.org/en/latest/)
13
+ [![pytest versions](https://img.shields.io/badge/pytest-%3E%3D7.0-blue)](https://docs.pytest.org/en/latest/)
14
14
  [![Documentation](https://img.shields.io/badge/Documentation%20-Overview%20-%20%23007ec6)](https://everypinio.github.io/hardpy/)
15
15
  [![Reddit](https://img.shields.io/badge/-Reddit-FF4500?style=flat&logo=reddit&logoColor=white)](https://www.reddit.com/r/HardPy)
16
16
  [![Telegram](https://img.shields.io/badge/-Telegram-2CA5E0?style=flat&logo=telegram&logoColor=white)](https://t.me/everypin)
@@ -124,6 +124,8 @@ class TokenManager:
124
124
  storage_keyring = load_keyring("keyring.backends.SecretService.Keyring")
125
125
  elif system() == "Windows":
126
126
  storage_keyring = load_keyring("keyring.backends.Windows.WinVaultKeyring")
127
+ elif system() == "Darwin":
128
+ storage_keyring = load_keyring("keyring.backends.macOS.KeyChain")
127
129
  # TODO(xorialexandrov): add memory keyring or other store
128
130
  mem_keyring = storage_keyring
129
131
 
@@ -140,10 +140,10 @@ class HardpyPlugin:
140
140
  self._start_args = {}
141
141
  self._sc_syncronizer = StandCloudSynchronizer()
142
142
 
143
- if system() == "Linux":
144
- signal.signal(signal.SIGTERM, self._stop_handler)
145
- elif system() == "Windows":
143
+ if system() == "Windows":
146
144
  signal.signal(signal.SIGBREAK, self._stop_handler) # type: ignore
145
+ else:
146
+ signal.signal(signal.SIGTERM, self._stop_handler)
147
147
  self._log = getLogger(__name__)
148
148
 
149
149
  # Initialization hooks
@@ -65,7 +65,7 @@ class PyTestWrapper:
65
65
  cwd=self._config_manager.tests_path,
66
66
  creationflags=subprocess.CREATE_NEW_PROCESS_GROUP,
67
67
  )
68
- if system() == "Linux":
68
+ else:
69
69
  self._proc = subprocess.Popen( # noqa: S603
70
70
  cmd,
71
71
  cwd=self._config_manager.tests_path,
@@ -80,10 +80,10 @@ class PyTestWrapper:
80
80
  bool: True if pytest was running and stopped
81
81
  """
82
82
  if self.is_running() and self._proc:
83
- if system() == "Linux":
84
- self._proc.terminate()
85
- elif system() == "Windows":
83
+ if system() == "Windows":
86
84
  self._proc.send_signal(signal.CTRL_BREAK_EVENT) # type: ignore
85
+ else:
86
+ self._proc.terminate()
87
87
  return True
88
88
  return False
89
89
 
@@ -106,7 +106,7 @@ class StandCloudSynchronizer:
106
106
  msg += "\nInvalid reports:\n\n"
107
107
  for _report in invalid_reports:
108
108
  report_id, reason = next(iter(_report.items()))
109
- msg += f"{report_id}: {reason}\n"
109
+ msg += f"Report id: {report_id}: {reason}\n"
110
110
  raise StandCloudError(msg)
111
111
  if not msg:
112
112
  msg = "All reports are synchronized with StandCloud"
@@ -120,6 +120,7 @@ class StandCloudSynchronizer:
120
120
  code = response.status_code
121
121
  msg = f"StandCloud healthcheck at {url} is unavailable, status code: {code}"
122
122
  raise StandCloudError(msg)
123
+ # if the response.text contains invalid page data but status code is 200:
123
124
  if response.status_code == HTTPStatus.OK and response.text != "{}":
124
125
  msg = f"StandCloud healthcheck at {response.url} is unavailable"
125
126
  raise StandCloudError(msg)
@@ -3,7 +3,7 @@
3
3
 
4
4
  [project]
5
5
  name = "hardpy"
6
- version = "0.18.1"
6
+ version = "0.18.3"
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" }]
@@ -30,7 +30,7 @@
30
30
  "glom>=23.3.0",
31
31
  "pydantic>=2.4.0, <3",
32
32
  "natsort>=8.4.0",
33
- "pytest>=7, <9",
33
+ "pytest>=7",
34
34
  "typer>=0.12,<1",
35
35
  "tomli_w>=1.1.0, <2",
36
36
  "tomli>=2.0.1, <3",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes