hardware-address


Namehardware-address JSON
Version 0.2.0 PyPI version JSON
download
home_pageNone
SummaryIEEE 802 MAC-48, EUI-48, EUI-64, or a 20-octet IP over InfiniBand link-layer addresses
upload_time2025-10-23 03:53:34
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT OR Apache-2.0
keywords mac-address eui64 eui48 hardware-address network infiniband ieee802
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # hardware-address

IEEE 802 MAC-48, EUI-48, EUI-64, and InfiniBand hardware addresses for Python.

[![PyPI version](https://img.shields.io/pypi/v/hardware-address.svg)](https://pypi.org/project/hardware-address/)
[![License](https://img.shields.io/badge/License-Apache%202.0%2FMIT-blue.svg)](https://github.com/al8n/hardware-address)
[![Python versions](https://img.shields.io/pypi/pyversions/hardware-address.svg)](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[![PyPI version](https://img.shields.io/pypi/v/hardware-address.svg)](https://pypi.org/project/hardware-address/)\n[![License](https://img.shields.io/badge/License-Apache%202.0%2FMIT-blue.svg)](https://github.com/al8n/hardware-address)\n[![Python versions](https://img.shields.io/pypi/pyversions/hardware-address.svg)](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"
}
        
Elapsed time: 2.88459s