remotedesktop 0.0.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.
- remotedesktop-0.0.1/.gitignore +24 -0
- remotedesktop-0.0.1/CLAUDE.md +38 -0
- remotedesktop-0.0.1/LICENSE +21 -0
- remotedesktop-0.0.1/PKG-INFO +35 -0
- remotedesktop-0.0.1/pyproject.toml +38 -0
- remotedesktop-0.0.1/readme.md +18 -0
- remotedesktop-0.0.1/run_claude.bat +1 -0
- remotedesktop-0.0.1/src/remotedesktop/__init__.py +3 -0
- remotedesktop-0.0.1/src/remotedesktop/client.py +27 -0
- remotedesktop-0.0.1/src/remotedesktop/server.py +27 -0
- remotedesktop-0.0.1/src/remotedesktop/viewer.py +15 -0
- remotedesktop-0.0.1/tests/conftest.py +7 -0
- remotedesktop-0.0.1/tests/test_smoke.py +18 -0
- remotedesktop-0.0.1/uv.lock +142 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
.eggs/
|
|
6
|
+
build/
|
|
7
|
+
dist/
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
|
|
13
|
+
# Testing
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
.coverage
|
|
16
|
+
htmlcov/
|
|
17
|
+
|
|
18
|
+
# Tooling caches
|
|
19
|
+
.mypy_cache/
|
|
20
|
+
.ruff_cache/
|
|
21
|
+
|
|
22
|
+
# IDE
|
|
23
|
+
.idea/
|
|
24
|
+
.vscode/
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## What This Project Is
|
|
6
|
+
|
|
7
|
+
A Python client/server remote desktop GUI application (PySide6) for Windows computers on the same LAN, per `readme.md`:
|
|
8
|
+
|
|
9
|
+
- **Autodiscovery and connection** of servers on the LAN.
|
|
10
|
+
- **In scope:** desktop screen, keyboard, mouse, and clipboard.
|
|
11
|
+
- **Out of scope:** shared drives, devices, and multimedia (e.g., audio).
|
|
12
|
+
- **Two GUI apps:** a client and a server, each run on its respective computer.
|
|
13
|
+
- **Trust model:** on first connection, the user on the server side must explicitly permit the client. After that, the client may reconnect whenever the server is running without further approval.
|
|
14
|
+
- **Constraint:** does not use Windows RDP and does not rely on any Microsoft-based authentication.
|
|
15
|
+
|
|
16
|
+
Both apps are currently window stubs with no networking implemented.
|
|
17
|
+
|
|
18
|
+
## Commands
|
|
19
|
+
|
|
20
|
+
Managed with `uv` (hatchling build backend, src layout):
|
|
21
|
+
|
|
22
|
+
- `uv sync` — create/update the venv with the project and dev dependencies
|
|
23
|
+
- `uv run pytest` — run all tests
|
|
24
|
+
- `uv run pytest tests/test_smoke.py::test_version` — run a single test
|
|
25
|
+
- `uv run remotedesktop-client` / `uv run remotedesktop-server` — launch the apps. These are `gui-scripts`, so they run detached with no console output; use `uv run python -m remotedesktop.client` (or `.server`) when you need stdout/tracebacks.
|
|
26
|
+
- `uv build` — build sdist and wheel into `dist/`
|
|
27
|
+
- `uv publish` — publish to PyPI
|
|
28
|
+
|
|
29
|
+
## Architecture
|
|
30
|
+
|
|
31
|
+
- Both apps are PySide6 GUI applications. `src/remotedesktop/client.py` (`ClientWindow`) and `src/remotedesktop/server.py` (`ServerWindow`) hold the app entry points; `main()` in each is wired to the `remotedesktop-client` / `remotedesktop-server` GUI scripts in `pyproject.toml`.
|
|
32
|
+
- The client-side remote desktop view is a widget, `ViewerWidget` in `src/remotedesktop/viewer.py`, hosted as `ClientWindow`'s central widget. Screen display and keyboard/mouse/clipboard forwarding belong in this widget, not in the window.
|
|
33
|
+
- The package version lives only in `src/remotedesktop/__init__.py` (`__version__`); hatchling reads it from there (`[tool.hatch.version]`), so bump it in that one place.
|
|
34
|
+
- Widget tests need a `QApplication`; use the session-scoped `qapp` fixture in `tests/conftest.py`.
|
|
35
|
+
|
|
36
|
+
## Environment Notes
|
|
37
|
+
|
|
38
|
+
- Target platform is Windows; development happens on Windows 11. Requires Python >=3.14.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 James Abel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: remotedesktop
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Remote desktop client/server for Windows computers on the same LAN, with autodiscovery. Provides screen, keyboard, mouse, and clipboard sharing without RDP or Microsoft authentication.
|
|
5
|
+
Author-email: James Abel <j@abel.co>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
9
|
+
Classifier: Environment :: Win32 (MS Windows)
|
|
10
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
11
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Topic :: System :: Networking
|
|
14
|
+
Requires-Python: >=3.14
|
|
15
|
+
Requires-Dist: pyside6>=6.11.1
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
17
|
+
|
|
18
|
+
# Remote Desktop
|
|
19
|
+
|
|
20
|
+
This is a Python client/server application that provide remote desktop
|
|
21
|
+
for Windows computers on the same LAN. It offers autodiscovery and
|
|
22
|
+
connection.
|
|
23
|
+
|
|
24
|
+
Connections to the desktop screen, keyboard, mouse, and clipboard are made.
|
|
25
|
+
Other connections are not provide, such as shared drives, devices, nor
|
|
26
|
+
multimedia (e.g., audio)
|
|
27
|
+
|
|
28
|
+
The client and server apps are both run on their respective computers.
|
|
29
|
+
The client requests connection to the server and for the initial connection
|
|
30
|
+
the user on the server side must permit the connection. After that,
|
|
31
|
+
the client can connect to the server whenever the server is running
|
|
32
|
+
without the server having to provide permission.
|
|
33
|
+
|
|
34
|
+
This does not use Windows RDP nor rely on any Microsoft based authentication.
|
|
35
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "remotedesktop"
|
|
3
|
+
dynamic = ["version"]
|
|
4
|
+
description = "Remote desktop client/server for Windows computers on the same LAN, with autodiscovery. Provides screen, keyboard, mouse, and clipboard sharing without RDP or Microsoft authentication."
|
|
5
|
+
readme = "readme.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
authors = [{ name = "James Abel", email = "j@abel.co" }]
|
|
8
|
+
requires-python = ">=3.14"
|
|
9
|
+
classifiers = [
|
|
10
|
+
"Development Status :: 2 - Pre-Alpha",
|
|
11
|
+
"Environment :: Win32 (MS Windows)",
|
|
12
|
+
"Intended Audience :: End Users/Desktop",
|
|
13
|
+
"Operating System :: Microsoft :: Windows",
|
|
14
|
+
"Programming Language :: Python :: 3",
|
|
15
|
+
"Topic :: System :: Networking",
|
|
16
|
+
]
|
|
17
|
+
dependencies = [
|
|
18
|
+
"pyside6>=6.11.1",
|
|
19
|
+
]
|
|
20
|
+
|
|
21
|
+
[project.gui-scripts]
|
|
22
|
+
remotedesktop-client = "remotedesktop.client:main"
|
|
23
|
+
remotedesktop-server = "remotedesktop.server:main"
|
|
24
|
+
|
|
25
|
+
[dependency-groups]
|
|
26
|
+
dev = [
|
|
27
|
+
"pytest>=8",
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
[build-system]
|
|
31
|
+
requires = ["hatchling"]
|
|
32
|
+
build-backend = "hatchling.build"
|
|
33
|
+
|
|
34
|
+
[tool.hatch.version]
|
|
35
|
+
path = "src/remotedesktop/__init__.py"
|
|
36
|
+
|
|
37
|
+
[tool.pytest.ini_options]
|
|
38
|
+
testpaths = ["tests"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Remote Desktop
|
|
2
|
+
|
|
3
|
+
This is a Python client/server application that provide remote desktop
|
|
4
|
+
for Windows computers on the same LAN. It offers autodiscovery and
|
|
5
|
+
connection.
|
|
6
|
+
|
|
7
|
+
Connections to the desktop screen, keyboard, mouse, and clipboard are made.
|
|
8
|
+
Other connections are not provide, such as shared drives, devices, nor
|
|
9
|
+
multimedia (e.g., audio)
|
|
10
|
+
|
|
11
|
+
The client and server apps are both run on their respective computers.
|
|
12
|
+
The client requests connection to the server and for the initial connection
|
|
13
|
+
the user on the server side must permit the connection. After that,
|
|
14
|
+
the client can connect to the server whenever the server is running
|
|
15
|
+
without the server having to provide permission.
|
|
16
|
+
|
|
17
|
+
This does not use Windows RDP nor rely on any Microsoft based authentication.
|
|
18
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
claude --permission-mode acceptEdits --dangerously-skip-permissions
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Client GUI application: discovers servers on the LAN, connects to one,
|
|
2
|
+
and shows its desktop in a viewer widget."""
|
|
3
|
+
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
from PySide6.QtWidgets import QApplication, QMainWindow
|
|
7
|
+
|
|
8
|
+
from remotedesktop.viewer import ViewerWidget
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ClientWindow(QMainWindow):
|
|
12
|
+
def __init__(self) -> None:
|
|
13
|
+
super().__init__()
|
|
14
|
+
self.setWindowTitle("Remote Desktop Client")
|
|
15
|
+
self.viewer = ViewerWidget(self)
|
|
16
|
+
self.setCentralWidget(self.viewer)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main() -> None:
|
|
20
|
+
app = QApplication(sys.argv)
|
|
21
|
+
window = ClientWindow()
|
|
22
|
+
window.show()
|
|
23
|
+
raise SystemExit(app.exec())
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
if __name__ == "__main__":
|
|
27
|
+
main()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""Server GUI application: shares this computer's desktop with permitted
|
|
2
|
+
clients and prompts the user to approve first-time connections."""
|
|
3
|
+
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
from PySide6.QtCore import Qt
|
|
7
|
+
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class ServerWindow(QMainWindow):
|
|
11
|
+
def __init__(self) -> None:
|
|
12
|
+
super().__init__()
|
|
13
|
+
self.setWindowTitle("Remote Desktop Server")
|
|
14
|
+
self.setCentralWidget(
|
|
15
|
+
QLabel("Not sharing", alignment=Qt.AlignmentFlag.AlignCenter)
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def main() -> None:
|
|
20
|
+
app = QApplication(sys.argv)
|
|
21
|
+
window = ServerWindow()
|
|
22
|
+
window.show()
|
|
23
|
+
raise SystemExit(app.exec())
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
if __name__ == "__main__":
|
|
27
|
+
main()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Viewer widget that displays the remote desktop inside the client GUI."""
|
|
2
|
+
|
|
3
|
+
from PySide6.QtCore import Qt
|
|
4
|
+
from PySide6.QtWidgets import QLabel, QVBoxLayout, QWidget
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class ViewerWidget(QWidget):
|
|
8
|
+
"""Displays the remote desktop screen and will forward keyboard, mouse,
|
|
9
|
+
and clipboard events to the connected server."""
|
|
10
|
+
|
|
11
|
+
def __init__(self, parent: QWidget | None = None) -> None:
|
|
12
|
+
super().__init__(parent)
|
|
13
|
+
self._placeholder = QLabel("Not connected", alignment=Qt.AlignmentFlag.AlignCenter)
|
|
14
|
+
layout = QVBoxLayout(self)
|
|
15
|
+
layout.addWidget(self._placeholder)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import remotedesktop
|
|
2
|
+
from remotedesktop.client import ClientWindow
|
|
3
|
+
from remotedesktop.server import ServerWindow
|
|
4
|
+
from remotedesktop.viewer import ViewerWidget
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def test_version() -> None:
|
|
8
|
+
assert remotedesktop.__version__
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_client_window_hosts_viewer(qapp) -> None:
|
|
12
|
+
window = ClientWindow()
|
|
13
|
+
assert isinstance(window.centralWidget(), ViewerWidget)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def test_server_window(qapp) -> None:
|
|
17
|
+
window = ServerWindow()
|
|
18
|
+
assert window.windowTitle() == "Remote Desktop Server"
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
version = 1
|
|
2
|
+
revision = 3
|
|
3
|
+
requires-python = ">=3.14"
|
|
4
|
+
|
|
5
|
+
[[package]]
|
|
6
|
+
name = "colorama"
|
|
7
|
+
version = "0.4.6"
|
|
8
|
+
source = { registry = "https://pypi.org/simple" }
|
|
9
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
|
10
|
+
wheels = [
|
|
11
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
[[package]]
|
|
15
|
+
name = "iniconfig"
|
|
16
|
+
version = "2.3.0"
|
|
17
|
+
source = { registry = "https://pypi.org/simple" }
|
|
18
|
+
sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" }
|
|
19
|
+
wheels = [
|
|
20
|
+
{ url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" },
|
|
21
|
+
]
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "packaging"
|
|
25
|
+
version = "26.2"
|
|
26
|
+
source = { registry = "https://pypi.org/simple" }
|
|
27
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d7/f1/e7a6dd94a8d4a5626c03e4e99c87f241ba9e350cd9e6d75123f992427270/packaging-26.2.tar.gz", hash = "sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661", size = 228134, upload-time = "2026-04-24T20:15:23.917Z" }
|
|
28
|
+
wheels = [
|
|
29
|
+
{ url = "https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl", hash = "sha256:5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e", size = 100195, upload-time = "2026-04-24T20:15:22.081Z" },
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[[package]]
|
|
33
|
+
name = "pluggy"
|
|
34
|
+
version = "1.6.0"
|
|
35
|
+
source = { registry = "https://pypi.org/simple" }
|
|
36
|
+
sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" }
|
|
37
|
+
wheels = [
|
|
38
|
+
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
|
|
39
|
+
]
|
|
40
|
+
|
|
41
|
+
[[package]]
|
|
42
|
+
name = "pygments"
|
|
43
|
+
version = "2.20.0"
|
|
44
|
+
source = { registry = "https://pypi.org/simple" }
|
|
45
|
+
sdist = { url = "https://files.pythonhosted.org/packages/c3/b2/bc9c9196916376152d655522fdcebac55e66de6603a76a02bca1b6414f6c/pygments-2.20.0.tar.gz", hash = "sha256:6757cd03768053ff99f3039c1a36d6c0aa0b263438fcab17520b30a303a82b5f", size = 4955991, upload-time = "2026-03-29T13:29:33.898Z" }
|
|
46
|
+
wheels = [
|
|
47
|
+
{ url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" },
|
|
48
|
+
]
|
|
49
|
+
|
|
50
|
+
[[package]]
|
|
51
|
+
name = "pyside6"
|
|
52
|
+
version = "6.11.1"
|
|
53
|
+
source = { registry = "https://pypi.org/simple" }
|
|
54
|
+
dependencies = [
|
|
55
|
+
{ name = "pyside6-addons" },
|
|
56
|
+
{ name = "pyside6-essentials" },
|
|
57
|
+
{ name = "shiboken6" },
|
|
58
|
+
]
|
|
59
|
+
wheels = [
|
|
60
|
+
{ url = "https://files.pythonhosted.org/packages/da/a6/27ba5947ed48918f7b74b7c43a1e280aac069e36f25adeb4c9adfac835c4/pyside6-6.11.1-cp310-abi3-macosx_13_0_universal2.whl", hash = "sha256:537682c3b7530817203e667c1f5a2f00486b37bf52c52eeab438544c7a0917f6", size = 571921, upload-time = "2026-05-13T09:47:36.402Z" },
|
|
61
|
+
{ url = "https://files.pythonhosted.org/packages/d8/de/af89d71410c83b10654d86ff9aff2a4f87c30163658f1cc145242e222526/pyside6-6.11.1-cp310-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:b1fc521ba2bb5109425ab8add06bddbdd524abcad06cfa012cc39a22a189feb2", size = 572102, upload-time = "2026-05-13T09:47:38.249Z" },
|
|
62
|
+
{ url = "https://files.pythonhosted.org/packages/b6/0e/d583bd3f7bf5046a4497b36f3902cfb64aa29554489a5a25c18e6b4ac0ac/pyside6-6.11.1-cp310-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:75f0005c3eb95c07cfb65522ec50d0815ac007a96482c21dc3cb4b4c04895d84", size = 572098, upload-time = "2026-05-13T09:47:39.44Z" },
|
|
63
|
+
{ url = "https://files.pythonhosted.org/packages/57/f2/d9d8ce1373dabb37e5919f63cd18446556079631d3f2eea3ada03c29f6b8/pyside6-6.11.1-cp310-abi3-win_amd64.whl", hash = "sha256:0968877ab1fb4ef3587a284da6fe05e8647ada56a6a3750b6395188e01f4aba6", size = 578377, upload-time = "2026-05-13T09:47:40.76Z" },
|
|
64
|
+
{ url = "https://files.pythonhosted.org/packages/96/02/a6057d8bd2bdb1940820fff2d627fdf4013148c9c57adf69fa40d3452ac3/pyside6-6.11.1-cp310-abi3-win_arm64.whl", hash = "sha256:acee467cb5f256cc47ebb9d815a054c1d8416da380c191b247a76d164aa3f805", size = 561765, upload-time = "2026-05-13T09:47:41.9Z" },
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
[[package]]
|
|
68
|
+
name = "pyside6-addons"
|
|
69
|
+
version = "6.11.1"
|
|
70
|
+
source = { registry = "https://pypi.org/simple" }
|
|
71
|
+
dependencies = [
|
|
72
|
+
{ name = "pyside6-essentials" },
|
|
73
|
+
{ name = "shiboken6" },
|
|
74
|
+
]
|
|
75
|
+
wheels = [
|
|
76
|
+
{ url = "https://files.pythonhosted.org/packages/3f/6b/8bc94aff48b63f788f2d84e5467c12362d68906ba742c0942f46cb04c879/pyside6_addons-6.11.1-cp310-abi3-macosx_13_0_universal2.whl", hash = "sha256:54733c77f789bef5f03c6aff4ad3bec8b2eff021f0cfcbc53d5e6c250ded24f9", size = 331714589, upload-time = "2026-05-13T09:39:12.36Z" },
|
|
77
|
+
{ url = "https://files.pythonhosted.org/packages/dd/62/fb1428a523b2a4541e232aab50d9e789e6b4526f37fd9593452a7ea5b6b3/pyside6_addons-6.11.1-cp310-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:8e6c65fbd73a512d6f72cda8d8277444a85a34dc99dd1dae9c21d35b8671bb1f", size = 175063224, upload-time = "2026-05-13T09:39:34.185Z" },
|
|
78
|
+
{ url = "https://files.pythonhosted.org/packages/ee/9b/2ccd52f66db55c06de65d0501170a1935d04d64d0a230c0d892284a02ce3/pyside6_addons-6.11.1-cp310-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:bf1c6c4e954e5eba3d2a7c661ad4b9689e8f09c7f4a16bdf29713371d11af993", size = 170553429, upload-time = "2026-05-13T09:39:54.424Z" },
|
|
79
|
+
{ url = "https://files.pythonhosted.org/packages/9a/bd/8adc4d350b3b363f3dfc8fccdcf5bfed25f7e36c2fff30c64e106f4f1572/pyside6_addons-6.11.1-cp310-abi3-win_amd64.whl", hash = "sha256:0d13c4dfd671b050a48e4f8d8ddc724b7248f9c0437e7fc47fdf316278572923", size = 168816308, upload-time = "2026-05-13T09:40:13.541Z" },
|
|
80
|
+
{ url = "https://files.pythonhosted.org/packages/65/b7/9a840d97f0f0f04e372a87e205dd30ee285b4e3b021b188459a917c9dc76/pyside6_addons-6.11.1-cp310-abi3-win_arm64.whl", hash = "sha256:3494f480dee92f415be2f2d989c0b3f4755ac332b28045cbf4ba0f5c5a22ba37", size = 35759347, upload-time = "2026-05-13T09:40:21.199Z" },
|
|
81
|
+
]
|
|
82
|
+
|
|
83
|
+
[[package]]
|
|
84
|
+
name = "pyside6-essentials"
|
|
85
|
+
version = "6.11.1"
|
|
86
|
+
source = { registry = "https://pypi.org/simple" }
|
|
87
|
+
dependencies = [
|
|
88
|
+
{ name = "shiboken6" },
|
|
89
|
+
]
|
|
90
|
+
wheels = [
|
|
91
|
+
{ url = "https://files.pythonhosted.org/packages/b3/da/10d9197e7370eb4fed8df5fc547b7548dec88e5c5949e2d450db4ae96feb/pyside6_essentials-6.11.1-cp310-abi3-macosx_13_0_universal2.whl", hash = "sha256:228de53c2bc26b07e5021fbe3614fc44ca08e4dab9999af08c2b389d2c239957", size = 110352945, upload-time = "2026-05-13T09:43:08.006Z" },
|
|
92
|
+
{ url = "https://files.pythonhosted.org/packages/5c/49/0e1237c4400bec7e335d2c4eeb49bc40d9fd88a9ac44ca9083ce1abdc308/pyside6_essentials-6.11.1-cp310-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:e3ef7027b41e4e55fadb56e3b3257dc8ee92154b639fe67fc4c8e05e9d976c60", size = 79908535, upload-time = "2026-05-13T09:43:24.836Z" },
|
|
93
|
+
{ url = "https://files.pythonhosted.org/packages/4c/c5/da4c5f23c6540ac5211a1f60177c8dee84b1bf40f2719479587ab8c60731/pyside6_essentials-6.11.1-cp310-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:a039b6da68a3a4b9d243217b2b98d475eed3f617159ef6be925badab53c11b0d", size = 78960051, upload-time = "2026-05-13T09:43:35.423Z" },
|
|
94
|
+
{ url = "https://files.pythonhosted.org/packages/64/0e/b663ecc96ca57b5c91b83b6615d6b174380b0faf30338125c26e053d6aa7/pyside6_essentials-6.11.1-cp310-abi3-win_amd64.whl", hash = "sha256:63311bd48e32c584599ab04b9ef7c324082374cd2c9fa533f978fb893bb47e40", size = 77549267, upload-time = "2026-05-13T09:43:44.92Z" },
|
|
95
|
+
{ url = "https://files.pythonhosted.org/packages/f1/12/eb6723faf5cb7fa581145da1c15f40d641b96e080f0491af2f1859fdeedb/pyside6_essentials-6.11.1-cp310-abi3-win_arm64.whl", hash = "sha256:11253ea52aabecefe9febddbbe78b43a824129e3af1cec98431028fba7fa954f", size = 57964512, upload-time = "2026-05-13T09:43:52.968Z" },
|
|
96
|
+
]
|
|
97
|
+
|
|
98
|
+
[[package]]
|
|
99
|
+
name = "pytest"
|
|
100
|
+
version = "9.1.1"
|
|
101
|
+
source = { registry = "https://pypi.org/simple" }
|
|
102
|
+
dependencies = [
|
|
103
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
104
|
+
{ name = "iniconfig" },
|
|
105
|
+
{ name = "packaging" },
|
|
106
|
+
{ name = "pluggy" },
|
|
107
|
+
{ name = "pygments" },
|
|
108
|
+
]
|
|
109
|
+
sdist = { url = "https://files.pythonhosted.org/packages/e4/47/b9efed96c114afcfa3c9d3fe98a76a1d14c74a9e266d397cf6eb64be5e01/pytest-9.1.1.tar.gz", hash = "sha256:1088fbde8f2b49d95a549a195707afa7a76a3ce9bcadc26b6d71f0ffda5fe313", size = 1636369, upload-time = "2026-06-19T10:58:32.857Z" }
|
|
110
|
+
wheels = [
|
|
111
|
+
{ url = "https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl", hash = "sha256:37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c", size = 386536, upload-time = "2026-06-19T10:58:31.347Z" },
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
[[package]]
|
|
115
|
+
name = "remotedesktop"
|
|
116
|
+
source = { editable = "." }
|
|
117
|
+
dependencies = [
|
|
118
|
+
{ name = "pyside6" },
|
|
119
|
+
]
|
|
120
|
+
|
|
121
|
+
[package.dev-dependencies]
|
|
122
|
+
dev = [
|
|
123
|
+
{ name = "pytest" },
|
|
124
|
+
]
|
|
125
|
+
|
|
126
|
+
[package.metadata]
|
|
127
|
+
requires-dist = [{ name = "pyside6", specifier = ">=6.11.1" }]
|
|
128
|
+
|
|
129
|
+
[package.metadata.requires-dev]
|
|
130
|
+
dev = [{ name = "pytest", specifier = ">=8" }]
|
|
131
|
+
|
|
132
|
+
[[package]]
|
|
133
|
+
name = "shiboken6"
|
|
134
|
+
version = "6.11.1"
|
|
135
|
+
source = { registry = "https://pypi.org/simple" }
|
|
136
|
+
wheels = [
|
|
137
|
+
{ url = "https://files.pythonhosted.org/packages/17/f3/f2b63df0251e7cd3172ea28e32ede52739de9566bcefcd0178681538ac81/shiboken6-6.11.1-cp310-abi3-macosx_13_0_universal2.whl", hash = "sha256:1a16867f103ef1c662a5f09dfed03273a9f81688b174555162c58e83650a3f02", size = 476874, upload-time = "2026-05-13T09:47:01.091Z" },
|
|
138
|
+
{ url = "https://files.pythonhosted.org/packages/c7/9b/e0355d8897b5c150770f1d95718aad17d432fcc9c035c04f3f58427d4693/shiboken6-6.11.1-cp310-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9a8bccfafc8805254cabcfa1edfaf55cd52889f4998c91ad0d9a4433fb1bcdbe", size = 272222, upload-time = "2026-05-13T09:47:02.653Z" },
|
|
139
|
+
{ url = "https://files.pythonhosted.org/packages/57/d5/dd4f1defed400be03340f2ede34b61f846776650b4e7ed9ebaf4c71979a2/shiboken6-6.11.1-cp310-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:1bd2f4314414df2d122d9f646e03b731bc6d6b5f77a5f53f99a4fe4e97d84e6f", size = 270350, upload-time = "2026-05-13T09:47:04.02Z" },
|
|
140
|
+
{ url = "https://files.pythonhosted.org/packages/52/b5/3f6fb2ee65b534193fb4ef713dd619dc31dadff5d12c16979a7699ad58be/shiboken6-6.11.1-cp310-abi3-win_amd64.whl", hash = "sha256:c2c6863aa80ec18c0f82cea3417837b279cdc60024ac17123461dc9042577df7", size = 1223647, upload-time = "2026-05-13T09:47:05.924Z" },
|
|
141
|
+
{ url = "https://files.pythonhosted.org/packages/98/d1/f15ca0e1666faae02c945f48e745ea35f8fcd8243b176109b4e2c4251f47/shiboken6-6.11.1-cp310-abi3-win_arm64.whl", hash = "sha256:7c8d9af17db4495d4fa5b1c393f218311c4855546b9dfa6a0bd21bcd66b55e9d", size = 1784170, upload-time = "2026-05-13T09:47:07.617Z" },
|
|
142
|
+
]
|