Metadata-Version: 2.4
Name: licensespring_vm_detection
Version: 1.0.0
Summary: LicenseSpring VM detection
License: LicenseSpring VM Detection License Agreement (LVMDLA)
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: license
Dynamic: license-file
Dynamic: summary

# LicenseSpring VM Detection

Python interface to VM Detection for Windows, Linux, and macOS.

## Usage

With the supplied package installed, assess the current environment:

```python
from licensespring_vm_detection import Detector

detector = Detector()
result = detector.detect()
print(result.vm_likelihood, result.vm_score)
print(result.hypervisors, result.containers)
```

`Detector()` uses the native library bundled with the package. To select a
separately supplied library:

```python
detector = Detector("/absolute/path/to/libvm_detection.so")
```

Use `vm_detection.dll` on Windows or `libvm_detection.dylib` on macOS. The native
library must match the operating system and Python process architecture.

Calls may run concurrently on one `Detector`. The binding manages native result
memory automatically. `detector.get_version()` returns the native library
version. Load failures raise `OSError`; native assessment failures raise
`RuntimeError`.

## Understanding the result

The score ranges from 0 to 99 and is a heuristic, not a probability.
`vm_likelihood` is `unknown`, `not_detected`, `possible`, `likely`, or
`very_likely`. Neither a zero score nor `not_detected` proves physical hardware.

`hypervisors` lists identified virtualization candidates. `containers`,
`compatibility_layers`, `host_hypervisors`, and `cloud_providers` describe
separate aspects of the environment. Their presence alone does not imply a
guest VM. A result may identify both a container and an underlying VM.

The complete result is in `result.raw`. `evidence` and `probes` contain diagnostic
information useful when reporting unexpected results to support. Diagnostic
identifiers may evolve; avoid hardcoding them into application policy.

See the native library's supplied API documentation for the complete JSON
schema and result ownership contract.

## License

Use is subject to the license supplied with the package.
