# hardware-address
IEEE 802 MAC-48, EUI-48, EUI-64, and InfiniBand hardware addresses for Python.
[](https://pypi.org/project/hardware-address/)
[](https://github.com/al8n/hardware-address)
[](https://pypi.org/project/hardware-address/)
A fast, memory-safe library for working with hardware addresses, powered by Rust.
## Installation
```bash
pip install hardware_address
```
## Features
- 🚀 **Fast**: Native Rust implementation with Python bindings
- 🔒 **Memory Safe**: Written in Rust for guaranteed memory safety
- 🎯 **Type Safe**: Full type hints and IDE autocomplete support
- 📦 **Zero Dependencies**: No external dependencies
- 🔄 **Multiple Formats**: Parse and format addresses in colon, hyphen, or dot-separated formats
## Quick Start
```python
from hardware_address import MacAddr
# Parse from string
addr = MacAddr.parse("00:00:5e:00:53:01")
# Create from bytes
addr = MacAddr.from_bytes(b"\x00\x00\x5e\x00\x53\x01")
# String representation
print(str(addr)) # "00:00:5e:00:53:01"
print(repr(addr)) # MacAddr("00:00:5e:00:53:01")
# Get bytes
data = bytes(addr)
# Comparison and hashing
if addr1 == addr2:
print("Addresses match!")
# Use as dictionary key
devices = {addr: "Server 1"}
```
## Supported Address Types
### MacAddr (6 bytes)
IEEE 802 MAC-48/EUI-48 addresses:
```python
from hardware_address import MacAddr
addr = MacAddr.parse("00:00:5e:00:53:01")
print(addr) # 00:00:5e:00:53:01
```
### Eui64Addr (8 bytes)
EUI-64 addresses used in IPv6 and other protocols:
```python
from hardware_address import Eui64Addr
addr = Eui64Addr.parse("02:00:5e:10:00:00:00:01")
print(addr) # 02:00:5e:10:00:00:00:01
```
### InfiniBandAddr (20 bytes)
IP over InfiniBand link-layer addresses:
```python
from hardware_address import InfiniBandAddr
addr = InfiniBandAddr.parse(
"00:00:00:00:fe:80:00:00:00:00:00:00:02:00:5e:10:00:00:00:01"
)
```
## Parsing Formats
All address types support three parsing formats:
```python
from hardware_address import MacAddr
# Colon-separated (standard)
addr1 = MacAddr.parse("00:00:5e:00:53:01")
# Hyphen-separated (Windows style)
addr2 = MacAddr.parse("00-00-5e-00-53-01")
# Dot-separated (Cisco style)
addr3 = MacAddr.parse("0000.5e00.5301")
# All produce the same address
assert addr1 == addr2 == addr3
```
## API Reference
### Creating Addresses
```python
# From string
addr = MacAddr.parse("00:00:5e:00:53:01")
# From bytes
addr = MacAddr.from_bytes(b"\x00\x00\x5e\x00\x53\x01")
```
### Converting Addresses
```python
# To string (default format)
s = str(addr) # "00:00:5e:00:53:01"
# To bytes
data = bytes(addr) # b'\x00\x00\x5e\x00\x53\x01'
# Representation for debugging
r = repr(addr) # MacAddr("00:00:5e:00:53:01")
```
### Comparison Operations
```python
# Equality
if addr1 == addr2:
print("Equal")
# Ordering
if addr1 < addr2:
print("addr1 is less than addr2")
# Hashing (use as dict key)
devices = {addr: "Device 1"}
```
### Error Handling
```python
from hardware_address import MacAddr
try:
addr = MacAddr.parse("invalid")
except ValueError as e:
print(f"Parse error: {e}")
try:
addr = MacAddr.from_bytes(b"\x00\x00") # Wrong length
except ValueError as e:
print(f"Invalid length: {e}")
```
## Performance
This library is implemented in Rust and compiled to native code, providing:
- **Parsing**: ~10-50x faster than pure Python implementations
- **Memory**: Zero-copy operations where possible
- **Safety**: No buffer overflows or memory leaks
## Type Hints
Full type hints are included for IDE support:
```python
from hardware_address import MacAddr
from typing import Dict
def process_address(addr: MacAddr) -> bytes:
return bytes(addr)
devices: Dict[MacAddr, str] = {}
devices[MacAddr.parse("00:00:5e:00:53:01")] = "Server"
```
## Platform Support
Pre-built wheels are available for:
- **Linux**: x86_64, i686, aarch64, armv7
- **macOS**: x86_64 (Intel), aarch64 (Apple Silicon)
- **Windows**: x64, x86
- **Python**: 3.8, 3.9, 3.10, 3.11, 3.12
## License
Licensed under either of:
- Apache License, Version 2.0 ([LICENSE-APACHE](https://github.com/al8n/hardware-address/blob/main/LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](https://github.com/al8n/hardware-address/blob/main/LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
## Links
- [Documentation](https://docs.rs/hardware-address)
- [Source Code](https://github.com/al8n/hardware-address)
- [Issue Tracker](https://github.com/al8n/hardware-address/issues)
- [Rust Crate](https://crates.io/crates/hardware-address)
## Contributing
Contributions are welcome! See the [repository](https://github.com/al8n/hardware-address) for details.
Raw data
{
"_id": null,
"home_page": null,
"name": "hardware-address",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "mac-address, eui64, eui48, hardware-address, network, infiniband, ieee802",
"author": null,
"author_email": "Al Liu <scygliu1@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/9e/b8/2c82020f52d58fec364618777e44d8201d00934082b19b3cc59b7ec16b02/hardware_address-0.2.0.tar.gz",
"platform": null,
"description": "# hardware-address\n\nIEEE 802 MAC-48, EUI-48, EUI-64, and InfiniBand hardware addresses for Python.\n\n[](https://pypi.org/project/hardware-address/)\n[](https://github.com/al8n/hardware-address)\n[](https://pypi.org/project/hardware-address/)\n\nA fast, memory-safe library for working with hardware addresses, powered by Rust.\n\n## Installation\n\n```bash\npip install hardware_address\n```\n\n## Features\n\n- \ud83d\ude80 **Fast**: Native Rust implementation with Python bindings\n- \ud83d\udd12 **Memory Safe**: Written in Rust for guaranteed memory safety\n- \ud83c\udfaf **Type Safe**: Full type hints and IDE autocomplete support\n- \ud83d\udce6 **Zero Dependencies**: No external dependencies\n- \ud83d\udd04 **Multiple Formats**: Parse and format addresses in colon, hyphen, or dot-separated formats\n\n## Quick Start\n\n```python\nfrom hardware_address import MacAddr\n\n# Parse from string\naddr = MacAddr.parse(\"00:00:5e:00:53:01\")\n\n# Create from bytes\naddr = MacAddr.from_bytes(b\"\\x00\\x00\\x5e\\x00\\x53\\x01\")\n\n# String representation\nprint(str(addr)) # \"00:00:5e:00:53:01\"\nprint(repr(addr)) # MacAddr(\"00:00:5e:00:53:01\")\n\n# Get bytes\ndata = bytes(addr)\n\n# Comparison and hashing\nif addr1 == addr2:\n print(\"Addresses match!\")\n\n# Use as dictionary key\ndevices = {addr: \"Server 1\"}\n```\n\n## Supported Address Types\n\n### MacAddr (6 bytes)\n\nIEEE 802 MAC-48/EUI-48 addresses:\n\n```python\nfrom hardware_address import MacAddr\n\naddr = MacAddr.parse(\"00:00:5e:00:53:01\")\nprint(addr) # 00:00:5e:00:53:01\n```\n\n### Eui64Addr (8 bytes)\n\nEUI-64 addresses used in IPv6 and other protocols:\n\n```python\nfrom hardware_address import Eui64Addr\n\naddr = Eui64Addr.parse(\"02:00:5e:10:00:00:00:01\")\nprint(addr) # 02:00:5e:10:00:00:00:01\n```\n\n### InfiniBandAddr (20 bytes)\n\nIP over InfiniBand link-layer addresses:\n\n```python\nfrom hardware_address import InfiniBandAddr\n\naddr = InfiniBandAddr.parse(\n \"00:00:00:00:fe:80:00:00:00:00:00:00:02:00:5e:10:00:00:00:01\"\n)\n```\n\n## Parsing Formats\n\nAll address types support three parsing formats:\n\n```python\nfrom hardware_address import MacAddr\n\n# Colon-separated (standard)\naddr1 = MacAddr.parse(\"00:00:5e:00:53:01\")\n\n# Hyphen-separated (Windows style)\naddr2 = MacAddr.parse(\"00-00-5e-00-53-01\")\n\n# Dot-separated (Cisco style)\naddr3 = MacAddr.parse(\"0000.5e00.5301\")\n\n# All produce the same address\nassert addr1 == addr2 == addr3\n```\n\n## API Reference\n\n### Creating Addresses\n\n```python\n# From string\naddr = MacAddr.parse(\"00:00:5e:00:53:01\")\n\n# From bytes\naddr = MacAddr.from_bytes(b\"\\x00\\x00\\x5e\\x00\\x53\\x01\")\n```\n\n### Converting Addresses\n\n```python\n# To string (default format)\ns = str(addr) # \"00:00:5e:00:53:01\"\n\n# To bytes\ndata = bytes(addr) # b'\\x00\\x00\\x5e\\x00\\x53\\x01'\n\n# Representation for debugging\nr = repr(addr) # MacAddr(\"00:00:5e:00:53:01\")\n```\n\n### Comparison Operations\n\n```python\n# Equality\nif addr1 == addr2:\n print(\"Equal\")\n\n# Ordering\nif addr1 < addr2:\n print(\"addr1 is less than addr2\")\n\n# Hashing (use as dict key)\ndevices = {addr: \"Device 1\"}\n```\n\n### Error Handling\n\n```python\nfrom hardware_address import MacAddr\n\ntry:\n addr = MacAddr.parse(\"invalid\")\nexcept ValueError as e:\n print(f\"Parse error: {e}\")\n\ntry:\n addr = MacAddr.from_bytes(b\"\\x00\\x00\") # Wrong length\nexcept ValueError as e:\n print(f\"Invalid length: {e}\")\n```\n\n## Performance\n\nThis library is implemented in Rust and compiled to native code, providing:\n\n- **Parsing**: ~10-50x faster than pure Python implementations\n- **Memory**: Zero-copy operations where possible\n- **Safety**: No buffer overflows or memory leaks\n\n## Type Hints\n\nFull type hints are included for IDE support:\n\n```python\nfrom hardware_address import MacAddr\nfrom typing import Dict\n\ndef process_address(addr: MacAddr) -> bytes:\n return bytes(addr)\n\ndevices: Dict[MacAddr, str] = {}\ndevices[MacAddr.parse(\"00:00:5e:00:53:01\")] = \"Server\"\n```\n\n## Platform Support\n\nPre-built wheels are available for:\n\n- **Linux**: x86_64, i686, aarch64, armv7\n- **macOS**: x86_64 (Intel), aarch64 (Apple Silicon)\n- **Windows**: x64, x86\n- **Python**: 3.8, 3.9, 3.10, 3.11, 3.12\n\n## License\n\nLicensed under either of:\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](https://github.com/al8n/hardware-address/blob/main/LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](https://github.com/al8n/hardware-address/blob/main/LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n## Links\n\n- [Documentation](https://docs.rs/hardware-address)\n- [Source Code](https://github.com/al8n/hardware-address)\n- [Issue Tracker](https://github.com/al8n/hardware-address/issues)\n- [Rust Crate](https://crates.io/crates/hardware-address)\n\n## Contributing\n\nContributions are welcome! See the [repository](https://github.com/al8n/hardware-address) for details.\n\n",
"bugtrack_url": null,
"license": "MIT OR Apache-2.0",
"summary": "IEEE 802 MAC-48, EUI-48, EUI-64, or a 20-octet IP over InfiniBand link-layer addresses",
"version": "0.2.0",
"project_urls": {
"Bug Tracker": "https://github.com/al8n/hardware-address/issues",
"Documentation": "https://docs.rs/hardware-address",
"Homepage": "https://github.com/al8n/hardware-address",
"Repository": "https://github.com/al8n/hardware-address",
"Source Code": "https://github.com/al8n/hardware-address"
},
"split_keywords": [
"mac-address",
" eui64",
" eui48",
" hardware-address",
" network",
" infiniband",
" ieee802"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "e7a58ba6da0197b216d62795a3843657d3265df2edec65fb0adbf7617fa86ea7",
"md5": "8c0fee355f72ed7167be15a19a32fe85",
"sha256": "4576b99a8a157c6565ef3d49cc8db0d9cef84b326445f9c6b728c6f400497866"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "8c0fee355f72ed7167be15a19a32fe85",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 224220,
"upload_time": "2025-10-23T03:53:18",
"upload_time_iso_8601": "2025-10-23T03:53:18.073435Z",
"url": "https://files.pythonhosted.org/packages/e7/a5/8ba6da0197b216d62795a3843657d3265df2edec65fb0adbf7617fa86ea7/hardware_address-0.2.0-cp37-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "090748d050d256213721f5087d8d37e791f4c4d5a42679a329c20f91150c6115",
"md5": "fcdc8918004d722f97975b18fb2cdad6",
"sha256": "93a874a1cc1ef650e6318e6c0ec100d44d96048aa041f8aec40bf8f309070394"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "fcdc8918004d722f97975b18fb2cdad6",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 212732,
"upload_time": "2025-10-23T03:53:19",
"upload_time_iso_8601": "2025-10-23T03:53:19.709569Z",
"url": "https://files.pythonhosted.org/packages/09/07/48d050d256213721f5087d8d37e791f4c4d5a42679a329c20f91150c6115/hardware_address-0.2.0-cp37-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bc47b61bd591887a0c88501c52339d68968ba5a46972d95324a3deb3625dcc97",
"md5": "6ec482bfbb764257f912b4402859a784",
"sha256": "be3834aa38068568c9403a7149fcb2145e9bcf8acbd162b90d407c82a61a2da5"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "6ec482bfbb764257f912b4402859a784",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 230775,
"upload_time": "2025-10-23T03:53:21",
"upload_time_iso_8601": "2025-10-23T03:53:21.066305Z",
"url": "https://files.pythonhosted.org/packages/bc/47/b61bd591887a0c88501c52339d68968ba5a46972d95324a3deb3625dcc97/hardware_address-0.2.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "530f2e2044f66e72380963c028c7f979adeac980afdb90a1596dc90efd5c6f0b",
"md5": "c9eb8665e1ab07c970219bfe88cadefe",
"sha256": "3719ea66aecd920e2c5da781a9b87a7d4b12a57272c4b3257f6e7e18d987133f"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "c9eb8665e1ab07c970219bfe88cadefe",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 236883,
"upload_time": "2025-10-23T03:53:22",
"upload_time_iso_8601": "2025-10-23T03:53:22.413417Z",
"url": "https://files.pythonhosted.org/packages/53/0f/2e2044f66e72380963c028c7f979adeac980afdb90a1596dc90efd5c6f0b/hardware_address-0.2.0-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d473a04a77068c680ae53e546287ca5e23ed3b3c9c73922bbe00ded31015388d",
"md5": "fd96aac20b44187167a7782465362961",
"sha256": "1dfeadf3100e706b1762f000212f8a4b0423de2e96edc057e5a7a3f3134db067"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "fd96aac20b44187167a7782465362961",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 366765,
"upload_time": "2025-10-23T03:53:23",
"upload_time_iso_8601": "2025-10-23T03:53:23.444489Z",
"url": "https://files.pythonhosted.org/packages/d4/73/a04a77068c680ae53e546287ca5e23ed3b3c9c73922bbe00ded31015388d/hardware_address-0.2.0-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "63b7bd4098a4358e627cccce27e9d4512a6be5d6f9312fb2dc5232c2792258ca",
"md5": "0d430e6a603023a297feb4d3db19d0a4",
"sha256": "f7c0863e2817c6610d4a2efaa789438663a222d838ac8c37702f4ac082af0ece"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "0d430e6a603023a297feb4d3db19d0a4",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 270351,
"upload_time": "2025-10-23T03:53:24",
"upload_time_iso_8601": "2025-10-23T03:53:24.399769Z",
"url": "https://files.pythonhosted.org/packages/63/b7/bd4098a4358e627cccce27e9d4512a6be5d6f9312fb2dc5232c2792258ca/hardware_address-0.2.0-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "18e2d4e3ec6a73b7d25f364f63c891af2a162d36855f3e99c8b604322003a394",
"md5": "bc08947a1c6b5f0bd979cf30adc23a66",
"sha256": "3342cfcd13a274d8dbf6110caa65604a552fc67370c2984429354fef40893dca"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "bc08947a1c6b5f0bd979cf30adc23a66",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 245439,
"upload_time": "2025-10-23T03:53:25",
"upload_time_iso_8601": "2025-10-23T03:53:25.344763Z",
"url": "https://files.pythonhosted.org/packages/18/e2/d4e3ec6a73b7d25f364f63c891af2a162d36855f3e99c8b604322003a394/hardware_address-0.2.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1200a61c4b73f622c27a7c8a3307e6deebfbb7bdeb23568dd0b81d8a76efbb51",
"md5": "0ca297e82813f5859f12ea7dfd675fce",
"sha256": "4b0a2db47f892f9f67a4cbe9d427958b80e9660f7d8677181c9cd13ea6d90416"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "0ca297e82813f5859f12ea7dfd675fce",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 264746,
"upload_time": "2025-10-23T03:53:26",
"upload_time_iso_8601": "2025-10-23T03:53:26.281666Z",
"url": "https://files.pythonhosted.org/packages/12/00/a61c4b73f622c27a7c8a3307e6deebfbb7bdeb23568dd0b81d8a76efbb51/hardware_address-0.2.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "6019723bb66732b030bc166d471248641dbcd816b732ac99752a8c80cc1a8901",
"md5": "4db357e1bbf299803e0b64706e429525",
"sha256": "f08d6d228d121bd56a883f4dfb436eb46a8ba369057b922645f72c4ab4b2536f"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "4db357e1bbf299803e0b64706e429525",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 412043,
"upload_time": "2025-10-23T03:53:27",
"upload_time_iso_8601": "2025-10-23T03:53:27.466161Z",
"url": "https://files.pythonhosted.org/packages/60/19/723bb66732b030bc166d471248641dbcd816b732ac99752a8c80cc1a8901/hardware_address-0.2.0-cp37-abi3-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "50a3fd7e27f44d795dc9c38b3e7cac52fc24c196d9c08fadc5e38cb6444856e1",
"md5": "6b62ee87ab6db53d857467b2ee87aef2",
"sha256": "f6b51448840ae6498a597f17ab48234d35934b9939b75acce9e5102944a09c6a"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "6b62ee87ab6db53d857467b2ee87aef2",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 501675,
"upload_time": "2025-10-23T03:53:28",
"upload_time_iso_8601": "2025-10-23T03:53:28.539758Z",
"url": "https://files.pythonhosted.org/packages/50/a3/fd7e27f44d795dc9c38b3e7cac52fc24c196d9c08fadc5e38cb6444856e1/hardware_address-0.2.0-cp37-abi3-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "74e1a0ec5949df849f678dc1a777b1119fe9cf995b4d0a8498180ef0bf8db860",
"md5": "bf13471379cdf3bbdbb62a3f8466c6e2",
"sha256": "218f4d0cd9dfc2d0e198439106b2b73904ed7656916f4108b8aa5d3bff028a34"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "bf13471379cdf3bbdbb62a3f8466c6e2",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 444291,
"upload_time": "2025-10-23T03:53:29",
"upload_time_iso_8601": "2025-10-23T03:53:29.933348Z",
"url": "https://files.pythonhosted.org/packages/74/e1/a0ec5949df849f678dc1a777b1119fe9cf995b4d0a8498180ef0bf8db860/hardware_address-0.2.0-cp37-abi3-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "80dbf298e949194d837349c5fad1783d997edf65f9e484a1b788278c6e35ca27",
"md5": "d59b092b7b9050e1bfa7ad4d18a70557",
"sha256": "c211c145aab1f4a352f9158c465de68c4bbf657ba6b8f2b22834512853cf6a42"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "d59b092b7b9050e1bfa7ad4d18a70557",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 414026,
"upload_time": "2025-10-23T03:53:30",
"upload_time_iso_8601": "2025-10-23T03:53:30.933823Z",
"url": "https://files.pythonhosted.org/packages/80/db/f298e949194d837349c5fad1783d997edf65f9e484a1b788278c6e35ca27/hardware_address-0.2.0-cp37-abi3-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "53c2df65745fd9f76cfcc27a90e90035439ac95b2fcd3bb5509a2862bb4ae06e",
"md5": "ba04f6448443875060c13204b12e8762",
"sha256": "303d2413a4609cb5321802dab443796617d1b32e5c0b61b3cfae308658ef714b"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-win32.whl",
"has_sig": false,
"md5_digest": "ba04f6448443875060c13204b12e8762",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 137995,
"upload_time": "2025-10-23T03:53:32",
"upload_time_iso_8601": "2025-10-23T03:53:32.238880Z",
"url": "https://files.pythonhosted.org/packages/53/c2/df65745fd9f76cfcc27a90e90035439ac95b2fcd3bb5509a2862bb4ae06e/hardware_address-0.2.0-cp37-abi3-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4c914caf993a369826492034a5d8db01ec0d164644941b545f8f6632d86b680a",
"md5": "339a41f9b9c049eca8355806048c9421",
"sha256": "c11f901ec8b33968713176d124d724f38855553776cace18ed4abf71a4633bef"
},
"downloads": -1,
"filename": "hardware_address-0.2.0-cp37-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "339a41f9b9c049eca8355806048c9421",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": ">=3.8",
"size": 144429,
"upload_time": "2025-10-23T03:53:33",
"upload_time_iso_8601": "2025-10-23T03:53:33.372504Z",
"url": "https://files.pythonhosted.org/packages/4c/91/4caf993a369826492034a5d8db01ec0d164644941b545f8f6632d86b680a/hardware_address-0.2.0-cp37-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9eb82c82020f52d58fec364618777e44d8201d00934082b19b3cc59b7ec16b02",
"md5": "9c0348472321278ae802808c3df94fa1",
"sha256": "c5356786b33bf45d5c0b81bf7473b24bf8e859c058067b9d28fffd7bd0e28cb0"
},
"downloads": -1,
"filename": "hardware_address-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "9c0348472321278ae802808c3df94fa1",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 33201,
"upload_time": "2025-10-23T03:53:34",
"upload_time_iso_8601": "2025-10-23T03:53:34.221397Z",
"url": "https://files.pythonhosted.org/packages/9e/b8/2c82020f52d58fec364618777e44d8201d00934082b19b3cc59b7ec16b02/hardware_address-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-23 03:53:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "al8n",
"github_project": "hardware-address",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "hardware-address"
}