mirror of
https://github.com/varun-r-mallya/py-libp2p.git
synced 2026-04-07 06:21:27 +00:00
Fix the rest of the typing hints (#232)
* ignore kad * fix swarm, and minor * fix init and swarm * ignore pb * enable mypy * fix basic host * fix tcp * fix mplex * add typing for pb * skip format pyi * [mypy] no need to ignore pb now * add typing to chat
This commit is contained in:
@ -1,7 +1,14 @@
|
||||
import asyncio
|
||||
from typing import Mapping, Sequence
|
||||
|
||||
from Crypto.PublicKey import RSA
|
||||
|
||||
from libp2p.kademlia.storage import IStorage
|
||||
from libp2p.network.network_interface import INetwork
|
||||
from libp2p.peer.peerstore_interface import IPeerStore
|
||||
from libp2p.routing.interfaces import IPeerRouting
|
||||
from libp2p.security.secure_transport_interface import ISecureTransport
|
||||
|
||||
from .host.basic_host import BasicHost
|
||||
from .kademlia.network import KademliaServer
|
||||
from .network.swarm import Swarm
|
||||
@ -11,9 +18,10 @@ from .routing.kademlia.kademlia_peer_router import KadmeliaPeerRouter
|
||||
from .security.insecure_security import InsecureTransport
|
||||
from .transport.tcp.tcp import TCP
|
||||
from .transport.upgrader import TransportUpgrader
|
||||
from .typing import TProtocol
|
||||
|
||||
|
||||
async def cleanup_done_tasks():
|
||||
async def cleanup_done_tasks() -> None:
|
||||
"""
|
||||
clean up asyncio done tasks to free up resources
|
||||
"""
|
||||
@ -27,13 +35,15 @@ async def cleanup_done_tasks():
|
||||
await asyncio.sleep(3)
|
||||
|
||||
|
||||
def generate_id():
|
||||
def generate_id() -> ID:
|
||||
new_key = RSA.generate(2048, e=65537).publickey().export_key("DER")
|
||||
new_id = ID.from_pubkey(new_key)
|
||||
return new_id
|
||||
|
||||
|
||||
def initialize_default_kademlia_router(ksize=20, alpha=3, id_opt=None, storage=None):
|
||||
def initialize_default_kademlia_router(
|
||||
ksize: int = 20, alpha: int = 3, id_opt: ID = None, storage: IStorage = None
|
||||
) -> KadmeliaPeerRouter:
|
||||
"""
|
||||
initialize kadmelia router when no kademlia router is passed in
|
||||
:param ksize: The k parameter from the paper
|
||||
@ -47,13 +57,21 @@ def initialize_default_kademlia_router(ksize=20, alpha=3, id_opt=None, storage=N
|
||||
id_opt = generate_id()
|
||||
|
||||
node_id = id_opt.to_bytes()
|
||||
server = KademliaServer(ksize=ksize, alpha=alpha, node_id=node_id, storage=storage)
|
||||
# ignore type for Kademlia module
|
||||
server = KademliaServer( # type: ignore
|
||||
ksize=ksize, alpha=alpha, node_id=node_id, storage=storage
|
||||
)
|
||||
return KadmeliaPeerRouter(server)
|
||||
|
||||
|
||||
def initialize_default_swarm(
|
||||
id_opt=None, transport_opt=None, muxer_opt=None, sec_opt=None, peerstore_opt=None, disc_opt=None
|
||||
):
|
||||
id_opt: ID = None,
|
||||
transport_opt: Sequence[str] = None,
|
||||
muxer_opt: Sequence[str] = None,
|
||||
sec_opt: Mapping[TProtocol, ISecureTransport] = None,
|
||||
peerstore_opt: IPeerStore = None,
|
||||
disc_opt: IPeerRouting = None,
|
||||
) -> Swarm:
|
||||
"""
|
||||
initialize swarm when no swarm is passed in
|
||||
:param id_opt: optional id for host
|
||||
@ -75,7 +93,7 @@ def initialize_default_swarm(
|
||||
# TODO TransportUpgrader is not doing anything really
|
||||
# TODO parse muxer and sec to pass into TransportUpgrader
|
||||
muxer = muxer_opt or ["mplex/6.7.0"]
|
||||
sec = sec_opt or {"insecure/1.0.0": InsecureTransport("insecure")}
|
||||
sec = sec_opt or {TProtocol("insecure/1.0.0"): InsecureTransport("insecure")}
|
||||
upgrader = TransportUpgrader(sec, muxer)
|
||||
|
||||
peerstore = peerstore_opt or PeerStore()
|
||||
@ -86,14 +104,14 @@ def initialize_default_swarm(
|
||||
|
||||
|
||||
async def new_node(
|
||||
swarm_opt=None,
|
||||
id_opt=None,
|
||||
transport_opt=None,
|
||||
muxer_opt=None,
|
||||
sec_opt=None,
|
||||
peerstore_opt=None,
|
||||
disc_opt=None,
|
||||
):
|
||||
swarm_opt: INetwork = None,
|
||||
id_opt: ID = None,
|
||||
transport_opt: Sequence[str] = None,
|
||||
muxer_opt: Sequence[str] = None,
|
||||
sec_opt: Mapping[TProtocol, ISecureTransport] = None,
|
||||
peerstore_opt: IPeerStore = None,
|
||||
disc_opt: IPeerRouting = None,
|
||||
) -> BasicHost:
|
||||
"""
|
||||
create new libp2p node
|
||||
:param swarm_opt: optional swarm
|
||||
|
||||
Reference in New Issue
Block a user