mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-02-12 16:10:57 +00:00
replace: attributes with cache cached_property
This commit is contained in:
@ -3,6 +3,10 @@ import hashlib
|
|||||||
import base58
|
import base58
|
||||||
import multihash
|
import multihash
|
||||||
|
|
||||||
|
from functools import (
|
||||||
|
cached_property,
|
||||||
|
)
|
||||||
|
|
||||||
from libp2p.crypto.keys import (
|
from libp2p.crypto.keys import (
|
||||||
PublicKey,
|
PublicKey,
|
||||||
)
|
)
|
||||||
@ -36,25 +40,23 @@ if ENABLE_INLINING:
|
|||||||
|
|
||||||
class ID:
|
class ID:
|
||||||
_bytes: bytes
|
_bytes: bytes
|
||||||
_xor_id: int | None = None
|
|
||||||
_b58_str: str | None = None
|
|
||||||
|
|
||||||
def __init__(self, peer_id_bytes: bytes) -> None:
|
def __init__(self, peer_id_bytes: bytes) -> None:
|
||||||
self._bytes = peer_id_bytes
|
self._bytes = peer_id_bytes
|
||||||
|
|
||||||
@property
|
@cached_property
|
||||||
def xor_id(self) -> int:
|
def xor_id(self) -> int:
|
||||||
if not self._xor_id:
|
return int(sha256_digest(self._bytes).hex(), 16)
|
||||||
self._xor_id = int(sha256_digest(self._bytes).hex(), 16)
|
|
||||||
return self._xor_id
|
@cached_property
|
||||||
|
def base58(self) -> str:
|
||||||
|
return base58.b58encode(self._bytes).decode()
|
||||||
|
|
||||||
def to_bytes(self) -> bytes:
|
def to_bytes(self) -> bytes:
|
||||||
return self._bytes
|
return self._bytes
|
||||||
|
|
||||||
def to_base58(self) -> str:
|
def to_base58(self) -> str:
|
||||||
if not self._b58_str:
|
return self.base58
|
||||||
self._b58_str = base58.b58encode(self._bytes).decode()
|
|
||||||
return self._b58_str
|
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f"<libp2p.peer.id.ID ({self!s})>"
|
return f"<libp2p.peer.id.ID ({self!s})>"
|
||||||
|
|||||||
Reference in New Issue
Block a user