hardpy 0.10.0__tar.gz → 0.10.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.
- {hardpy-0.10.0 → hardpy-0.10.1}/PKG-INFO +1 -1
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/stand_cloud/registration.py +28 -1
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/stand_cloud/token_storage.py +5 -1
- {hardpy-0.10.0 → hardpy-0.10.1}/pyproject.toml +1 -1
- {hardpy-0.10.0 → hardpy-0.10.1}/.gitignore +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/LICENSE +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/README.md +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/cli/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/cli/cli.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/cli/template.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/config.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/stand_cloud/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/stand_cloud/connector.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/stand_cloud/exception.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/common/stand_cloud/oauth_callback.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/api.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/asset-manifest.json +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/favicon.ico +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/index.html +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/logo192.png +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/logo512.png +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/manifest.json +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-16px-paths.d605910e.chunk.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-16px-paths.d605910e.chunk.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-20px-paths.7ee05cc8.chunk.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-20px-paths.7ee05cc8.chunk.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths-loader.0aa89747.chunk.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-all-paths.f63155c9.chunk.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/blueprint-icons-split-paths-by-size-loader.52a072d3.chunk.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js.LICENSE.txt +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js.map +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.520846c6beb41df528c8.eot +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.5c52b39c697f2323ce8b.svg +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.84db1772f4bfb529f64f.woff +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.b67ee1736e20e37a3225.woff2 +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-16.e02ecf515378db143652.ttf +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.429cacb8accf72488451.ttf +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.6ae3791ee2d86fc228a6.svg +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.8cecf62de42997e4d82f.woff2 +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.afbadb627d43b7857223.eot +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/blueprint-icons-20.e857f5a5132b8bfa71a1.woff +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/media/logo_smol.5b16f92447a4a9e80331.png +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/base_connector.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/base_server.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/base_store.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/const.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/runstore.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/schema/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/schema/v1.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/db/statestore.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/plugin.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/pytest_call.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/pytest_wrapper.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/reporter/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/reporter/base.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/reporter/hook_reporter.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/reporter/runner_reporter.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/couchdb_config.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/report_loader/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/report_loader/couchdb_loader.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/report_reader/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/report_reader/couchdb_reader.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/__init__.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/connection_data.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/const.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/dialog_box.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/exception.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/machineid.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/node_info.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/progress_calculator.py +0 -0
- {hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/utils/singleton.py +0 -0
|
@@ -12,6 +12,8 @@ import secrets
|
|
|
12
12
|
import socket
|
|
13
13
|
import subprocess
|
|
14
14
|
import sys
|
|
15
|
+
from contextlib import suppress
|
|
16
|
+
from platform import system
|
|
15
17
|
from time import sleep
|
|
16
18
|
from typing import TYPE_CHECKING
|
|
17
19
|
from urllib.parse import urlencode
|
|
@@ -109,6 +111,12 @@ def logout() -> bool:
|
|
|
109
111
|
delete_password(service_name, cred.username)
|
|
110
112
|
except KeyringError:
|
|
111
113
|
return False
|
|
114
|
+
# TODO(xorialexandrov): fix keyring clearing
|
|
115
|
+
# Windows does not clear refresh token by itself
|
|
116
|
+
if system() == "Windows":
|
|
117
|
+
storage_keyring, _ = get_token_store()
|
|
118
|
+
with suppress(KeyringError):
|
|
119
|
+
storage_keyring.delete_password(service_name, "refresh_token")
|
|
112
120
|
return True
|
|
113
121
|
|
|
114
122
|
|
|
@@ -147,6 +155,18 @@ def _create_callback_process(port: str) -> subprocess.Popen:
|
|
|
147
155
|
"--log-level=error",
|
|
148
156
|
]
|
|
149
157
|
|
|
158
|
+
if system() == "Windows":
|
|
159
|
+
env = os.environ.copy()
|
|
160
|
+
env["PYTHONUNBUFFERED"] = "1"
|
|
161
|
+
|
|
162
|
+
return subprocess.Popen( # noqa: S603
|
|
163
|
+
args,
|
|
164
|
+
stdout=subprocess.PIPE,
|
|
165
|
+
bufsize=1,
|
|
166
|
+
universal_newlines=True,
|
|
167
|
+
env=env,
|
|
168
|
+
creationflags=subprocess.CREATE_NEW_PROCESS_GROUP, # type: ignore
|
|
169
|
+
)
|
|
150
170
|
return subprocess.Popen( # noqa: S603
|
|
151
171
|
args,
|
|
152
172
|
stdout=subprocess.PIPE,
|
|
@@ -187,7 +207,14 @@ def _check_incorrect_response(response: dict, state: str) -> None:
|
|
|
187
207
|
print(f"{error}: {error_description}")
|
|
188
208
|
sys.exit(1)
|
|
189
209
|
|
|
190
|
-
|
|
210
|
+
|
|
211
|
+
def _par_data(
|
|
212
|
+
code_verifier: str,
|
|
213
|
+
client_id: str,
|
|
214
|
+
port: str,
|
|
215
|
+
state: str,
|
|
216
|
+
api_url: str,
|
|
217
|
+
) -> dict:
|
|
191
218
|
"""Create pushed authorization request data.
|
|
192
219
|
|
|
193
220
|
Returns:
|
|
@@ -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
|
+
from platform import system
|
|
5
6
|
from typing import TYPE_CHECKING
|
|
6
7
|
|
|
7
8
|
from keyring.core import load_keyring
|
|
@@ -16,7 +17,10 @@ def get_token_store() -> tuple[KeyringBackend, KeyringBackend]:
|
|
|
16
17
|
Returns:
|
|
17
18
|
tuple[KeyringBackend, KeyringBackend]: token store
|
|
18
19
|
"""
|
|
19
|
-
|
|
20
|
+
if system() == "Linux":
|
|
21
|
+
storage_keyring = load_keyring("keyring.backends.SecretService.Keyring")
|
|
22
|
+
elif system() == "Windows":
|
|
23
|
+
storage_keyring = load_keyring("keyring.backends.Windows.WinVaultKeyring")
|
|
20
24
|
# TODO(xorialexandrov): add memory keyring or other store
|
|
21
25
|
mem_keyring = storage_keyring
|
|
22
26
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css
RENAMED
|
File without changes
|
{hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/css/main.e8a862f1.css.map
RENAMED
|
File without changes
|
{hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/808.ce070002.chunk.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js
RENAMED
|
File without changes
|
|
File without changes
|
{hardpy-0.10.0 → hardpy-0.10.1}/hardpy/hardpy_panel/frontend/dist/static/js/main.8a7d8f7d.js.map
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hardpy-0.10.0 → hardpy-0.10.1}/hardpy/pytest_hardpy/result/report_loader/stand_cloud_loader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|