Metadata-Version: 2.4
Name: HWProbe
Version: 0.0.1b1
Summary: A cross-platform system information gatherer
Author-email: Mahasvan <mahasvan@gmail.com>
License-Expression: BSD-3-Clause
Project-URL: Homepage, https://github.com/Mahasvan/HWProbe
Project-URL: Issues, https://github.com/Mahasvan/HWProbe/issues
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pydantic
Dynamic: license-file

# HWProbe

A Python Library to simplify retrieval of hardware components of your computer.

- To get started, read the **[Quickstart](https://mahasvan.github.io/HWProbe/quickstart.html).**
- Additionally, you can view the **[Documentation](https://mahasvan.github.io/HWProbe/)**.

## Installation

### macOS / Linux

```bash
pip3 install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ HWProbe
```

### Windows

```bash
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ HWProbe
```

## Usage

```python
from hwprobe import HardwareManager
import json

hm = HardwareManager()

data = hm.fetch_hardware_info()

# All data returned are Pydantic models and have strict schema
# You can use it as is, or serialize it to JSON if you wish.
# We print the data in JSON here for readability.

json_data = json.loads(data.model_dump_json())
print(json.dumps(json_data, indent=2))
```

## Tracker

### Hardware Discovery Progress Tracker

| Component   | Linux | macOS  | Windows |
|-------------|:-----:|:------:|:-------:|
| CPU         |   ✅   |   ✅    |    ✅    |
| GPU         |   ✅   |   ✅    |    ✅    |
| Memory      |   ✅   |   ✅    |    ✅    |
| Network     |   ✅   |   ✅    |    ✅    |
| Storage     |   ✅   |   ✅    |    ✅    | 
| --          |  --   |   -    |    -    |
| Display     |   ❌   | ❌* (2) | ✅* (3)  |
| Audio       |   ❌   |   ❌    | ✅* (3)  |
| Motherboard |   ❌   |   ❌    |    ✅    |
| Vendor      |   ❌   |   ❌    |    ➖    |
| Input       |   ❌   |   ❌    |    ❌    |

1. PCIe gen info only for Nvidia
2. In progress
3. Need to rewrite C++ bindings

### Miscellaneous Tasks / Problems

| Task                                                                                             | Status |
|--------------------------------------------------------------------------------------------------|:------:|
| GH actions for compiling `interops/{platform}/*.{c\|cpp}` to their respective output directories |   ❌    |
| Group Pydantic Model fields into essential and optional                                          |   ❌    |
| Remove `pyobjc` dependency in macOS by rewriting dependent code chunks in C++                    |   ✅    |
| Autodetection of storage units                                                                   |   ❌    |

### Supporting Features

| Feature                                                                                                                      | Status |
|------------------------------------------------------------------------------------------------------------------------------|:------:|
| PCI Lookup — [DeviceHunt](https://devicehunt.com)                                                                            |   ❌    |
| PCI Lookup — [PCI IDs Repository](https://pci-ids.ucw.cz) ([GitHub](https://github.com/pciutils/pciids/blob/master/pci.ids)) |   ❌    |
| Logging                                                                                                                      |   ✅    |
| Working Library                                                                                                              |   ✅    |
