driverclient 0.2.26__tar.gz → 0.2.27__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.26 → driverclient-0.2.27}/PKG-INFO +1 -1
  2. {driverclient-0.2.26 → driverclient-0.2.27}/pyproject.toml +1 -1
  3. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/__init__.py +1 -1
  4. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/capture.py +16 -3
  5. {driverclient-0.2.26 → driverclient-0.2.27}/.gitignore +0 -0
  6. {driverclient-0.2.26 → driverclient-0.2.27}/README.md +0 -0
  7. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/__main__.py +0 -0
  8. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/config.json +0 -0
  9. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/config.py +0 -0
  10. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/core/__init__.py +0 -0
  11. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/core/hardware.py +0 -0
  12. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/core/http.py +0 -0
  13. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/core/hwid.py +0 -0
  14. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/core/proc.py +0 -0
  15. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/events.py +0 -0
  16. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/main.py +0 -0
  17. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/__init__.py +0 -0
  18. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/automate.py +0 -0
  19. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/diagnose.py +0 -0
  20. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/download.py +0 -0
  21. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/install.py +0 -0
  22. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/offline.py +0 -0
  23. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/resolve.py +0 -0
  24. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/ops/scan.py +0 -0
  25. {driverclient-0.2.26 → driverclient-0.2.27}/src/driverclient/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: driverclient
3
- Version: 0.2.26
3
+ Version: 0.2.27
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.26"
7
+ version = "0.2.27"
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"
@@ -25,7 +25,7 @@ from driverclient.main import run as _run
25
25
 
26
26
  __all__ = ["DriverClient", "ClientEvent"]
27
27
 
28
- __version__ = "0.2.26"
28
+ __version__ = "0.2.27"
29
29
 
30
30
 
31
31
  class DriverClient:
@@ -344,11 +344,22 @@ def wu_full() -> CaptureResult:
344
344
 
345
345
  # ══ Missing-HWID classification ═══════════════════════════════════════════════
346
346
 
347
+ _INBOX_INADEQUATE_CLASSES = {"display adapters"}
348
+
349
+
347
350
  def classify_missing(not_found: list[str], scan_result: ScanResult) -> dict[str, list[str]]:
348
351
  """Bucket repo-missing HWIDs by what the machine says about their device:
349
352
  inbox (Windows ships the driver — not applicable), oem_local (OEM driver
350
353
  installed locally — capturable), driverless (genuinely missing — WU
351
- candidate), unknown (HWID not in scan)."""
354
+ candidate), unknown (HWID not in scan).
355
+
356
+ Display adapters are excluded from the inbox bucket: Microsoft Basic
357
+ Display Adapter is Windows' inbox fallback for a GPU whose real driver
358
+ was never bound, and it leaves the device non-accelerated — unlike other
359
+ inbox drivers (HID, mass storage, ...) it is not adequate coverage. Such
360
+ a device is treated as driverless so it still reaches WU / gets captured
361
+ once a real driver shows up, instead of being silently written off.
362
+ """
352
363
  hwid_to_device: dict[str, Device] = {}
353
364
  for dev in scan_result.devices:
354
365
  for h in dev.hwids:
@@ -363,8 +374,10 @@ def classify_missing(not_found: list[str], scan_result: ScanResult) -> dict[str,
363
374
  buckets["unknown"].append(hwid)
364
375
  elif not dev.has_driver:
365
376
  buckets["driverless"].append(hwid)
366
- elif dev.is_inbox:
377
+ elif dev.is_inbox and dev.class_name.lower() not in _INBOX_INADEQUATE_CLASSES:
367
378
  buckets["inbox"].append(hwid)
379
+ elif dev.is_inbox:
380
+ buckets["driverless"].append(hwid)
368
381
  else:
369
382
  buckets["oem_local"].append(hwid)
370
383
  return buckets
@@ -1070,4 +1083,4 @@ def _upload_worker(upload_q: queue.Queue, counts: dict,
1070
1083
  # Extension selection was removed: capture now packs every file
1071
1084
  # pnputil /export-driver produces (see _do_export), so the dump_extensions /
1072
1085
  # dump_extensions_overrides config keys are no longer consulted — filtering by
1073
- # extension is what caused incomplete packages (broken link D).
1086
+ # extension is what caused incomplete packages (broken link D).
File without changes
File without changes