This release is a pre-release and may not be stable for production use.
pyxpo-device
Facts about the device a pyxpo app runs on: brand, model, OS, memory and device type. The API follows expo-device.
pip install pyxpo-device
[tool.pyxpo]
modules = ["device"]
import pyxpo_device as Device
print(Device.brand, Device.model_name, Device.os_name, Device.os_version)
if Device.device_type == Device.DeviceType.TABLET:
...
uptime_ms = await Device.get_uptime_async()
Every name also has its expo-device spelling (Device.modelName, Device.getUptimeAsync).
Constants
Read once at app start, no bridge round trip. None where a platform has no value.
| Name | iOS | Android |
|---|---|---|
is_device |
False on the Simulator | False on an emulator (best-effort check) |
brand, manufacturer |
"Apple" |
Build.BRAND, Build.MANUFACTURER |
model_name |
Marketing name for known iPhones, else the identifier | Build.MODEL |
model_id |
Identifier, for example "iPhone17,3" |
None |
design_name, product_name |
None | Build.DEVICE, Build.PRODUCT |
device_year_class |
Release year of known iPhones | None |
total_memory |
Bytes of RAM | Bytes of RAM |
supported_cpu_architectures |
["arm64"] |
Build.SUPPORTED_ABIS |
os_name |
"iOS" or "iPadOS" |
"Android" |
os_version |
For example "26.0" |
For example "15" |
os_build_id, os_internal_build_id |
Kernel OS build | Build.DISPLAY, Build.ID |
os_build_fingerprint, platform_api_level |
None | Build.FINGERPRINT, API level |
device_name |
UIDevice.name (a generic name on iOS 16+) |
Device name setting, else the model |
device_type |
DeviceType from the interface idiom |
DeviceType from TV mode and screen width (600dp+ = tablet) |
On the desktop the values come from Python's platform module and device_type is DESKTOP.
Functions
get_device_type_async()->DeviceTypeget_uptime_async()-> milliseconds since boot, not counting deep sleepget_max_memory_async()-> Android: the runtime's memory limit in bytes; elsewhereMAX_SAFE_INTEGERis_rooted_experimental_async()-> best-effort jailbreak or root check. Easy to fool; never use it for security.is_side_loading_enabled_async()-> Android: whether the app may install apps (needsREQUEST_INSTALL_PACKAGESon Android 8+)get_platform_features_async()-> Android system feature names;[]elsewherehas_platform_feature_async(feature)-> Android: for example"android.hardware.camera";Falseelsewhere
Permissions
None.
Metadata
Release files for pyxpo-device 0.1.0a1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyxpo_device-0.1.0a1.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyxpo_device-0.1.0a1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.8 kB
Release files / pyxpo_device-0.1.0a1.tar.gz
| Download URL | pyxpo_device-0.1.0a1.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
44247a8a1448517bff1a771ff999b562e522b092e66d2a02a1181f618de3f1ba
|
|
BLAKE2b-256 checksum How to use checksums |
818763a702a62a2c3a117268a40d6f6f6844f32ea0ec1a756fc01d4223a83b0b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / pyxpo_device-0.1.0a1-py3-none-any.whl
| Download URL | pyxpo_device-0.1.0a1-py3-none-any.whl |
|---|---|
| Size | 11.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
73562186b483ee34a511b767a01f1f82e0614530e1dfe9b748bdefefcbdb945f
|
|
BLAKE2b-256 checksum How to use checksums |
432280f06253cb08a809f0b4186e9e250d299211107fb1a7de7719344ff01037
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency log