driverclient 0.2.30__tar.gz → 0.2.31__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 (25) hide show
  1. {driverclient-0.2.30 → driverclient-0.2.31}/PKG-INFO +1 -1
  2. {driverclient-0.2.30 → driverclient-0.2.31}/pyproject.toml +1 -1
  3. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/__init__.py +1 -1
  4. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/download.py +1 -19
  5. {driverclient-0.2.30 → driverclient-0.2.31}/.gitignore +0 -0
  6. {driverclient-0.2.30 → driverclient-0.2.31}/README.md +0 -0
  7. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/__main__.py +0 -0
  8. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/config.json +0 -0
  9. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/config.py +0 -0
  10. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/core/__init__.py +0 -0
  11. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/core/hardware.py +0 -0
  12. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/core/http.py +0 -0
  13. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/core/hwid.py +0 -0
  14. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/core/proc.py +0 -0
  15. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/events.py +0 -0
  16. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/main.py +0 -0
  17. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/__init__.py +0 -0
  18. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/automate.py +0 -0
  19. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/capture.py +0 -0
  20. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/diagnose.py +0 -0
  21. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/install.py +0 -0
  22. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/offline.py +0 -0
  23. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/resolve.py +0 -0
  24. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/ops/scan.py +0 -0
  25. {driverclient-0.2.30 → driverclient-0.2.31}/src/driverclient/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: driverclient
3
- Version: 0.2.30
3
+ Version: 0.2.31
4
4
  Summary: Driver Server client with an embeddable connector for config injection at runtime.
5
5
  Project-URL: Homepage, https://example.com/driverclient
6
6
  Author-email: Raja Sanaullah <sanaullah@99technologies.com>
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "driverclient"
7
- version = "0.2.30"
7
+ version = "0.2.31"
8
8
  description = "Driver Server client with an embeddable connector for config injection at runtime."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -26,7 +26,7 @@ from driverclient.main import run as _run
26
26
 
27
27
  __all__ = ["ClientEvent", "DriverClient"]
28
28
 
29
- __version__ = "0.2.30"
29
+ __version__ = "0.2.31"
30
30
 
31
31
 
32
32
  class DriverClient:
@@ -12,7 +12,6 @@ Factored out here so the two modes share one download implementation:
12
12
  • download_drivers() — fan the above out across a driver list in parallel
13
13
  """
14
14
 
15
- import shutil
16
15
  from concurrent.futures import ThreadPoolExecutor, as_completed
17
16
  from pathlib import Path
18
17
 
@@ -21,21 +20,7 @@ from driverclient.core.http import http_download_retry
21
20
 
22
21
  def download_driver(driver: dict, base: Path, repo_url: str, cfg: dict) -> tuple[Path, bool]:
23
22
  """Download all files for one driver into base/<binding_id>/.
24
- Returns (dest_dir, success). success is False if ANY file failed.
25
-
26
- On failure, dest is removed before returning. The live install path stages
27
- every driver under one shared `base` and installs it with a single batched
28
- `pnputil /add-driver base\\*.inf /subdirs` — that command globs the
29
- filesystem directly, so a driver this function reports as failed (and the
30
- caller correctly excludes from the install list) would otherwise still
31
- leave its already-downloaded files (commonly just the small .inf, if a
32
- large companion .sys/.dll timed out) sitting under base/<binding_id>/ for
33
- pnputil to find anyway. pnputil then tries to add that incomplete package —
34
- "cannot find the file specified" for its missing payload — which large
35
- graphics drivers hit most often (biggest files, likeliest to time out
36
- partway), and can poison the whole batched pass for the OTHER, fully
37
- downloaded drivers riding in the same pnputil call.
38
- """
23
+ Returns (dest_dir, success). success is False if ANY file failed."""
39
24
  bid = driver.get("binding_id") or driver.get("package_id", "")
40
25
  pkg_id = driver["package_id"]
41
26
  dest = base / bid
@@ -51,9 +36,6 @@ def download_driver(driver: dict, base: Path, repo_url: str, cfg: dict) -> tuple
51
36
  if not http_download_retry(url, path, f["sha256"], timeout=cfg["timeout_long"]):
52
37
  ok = False
53
38
 
54
- if not ok:
55
- shutil.rmtree(dest, ignore_errors=True)
56
-
57
39
  return dest, ok
58
40
 
59
41
 
File without changes
File without changes