This commit is contained in:
Chih Cheng Liang 2019-08-08 14:22:06 +08:00 committed by Kevin Mai-Husan Chia
parent 5903012e0e
commit c536aa3e07
19 changed files with 58 additions and 62 deletions

View File

@ -1,4 +1,4 @@
from typing import Any, Awaitable, Callable, List, Sequence
from typing import Any, List, Sequence
import multiaddr

View File

@ -1,5 +1,5 @@
from abc import ABC, abstractmethod
from typing import Any, Awaitable, Callable, List, Sequence
from typing import Any, List, Sequence
import multiaddr

View File

@ -1,5 +1,5 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING, Awaitable, Callable, Dict, Sequence
from typing import TYPE_CHECKING, Dict, Sequence
from multiaddr import Multiaddr
@ -12,7 +12,7 @@ from libp2p.typing import StreamHandlerFn
from .stream.net_stream_interface import INetStream
if TYPE_CHECKING:
from .notifee_interface import INotifee
from .notifee_interface import INotifee # noqa: F401
class INetwork(ABC):

View File

@ -7,7 +7,7 @@ from libp2p.network.stream.net_stream_interface import INetStream
from libp2p.stream_muxer.abc import IMuxedConn
if TYPE_CHECKING:
from .network_interface import INetwork
from .network_interface import INetwork # noqa: F401
class INotifee(ABC):

View File

@ -1,5 +1,5 @@
import asyncio
from typing import Awaitable, Callable, Dict, List, Sequence
from typing import Callable, Dict, List, Sequence
from multiaddr import Multiaddr

View File

@ -1,4 +1,4 @@
from typing import Dict, Tuple, TypeVar
from typing import Dict, Tuple
from libp2p.stream_muxer.abc import IMuxedStream
from libp2p.typing import StreamHandlerFn, TProtocol

View File

@ -1,5 +1,5 @@
from abc import ABC, abstractmethod
from typing import Dict, Tuple, TypeVar
from typing import Dict, Tuple
from libp2p.stream_muxer.abc import IMuxedStream
from libp2p.typing import StreamHandlerFn, TProtocol

View File

@ -15,7 +15,7 @@ from .pubsub_notifee import PubsubNotifee
from .validators import signature_validator
if TYPE_CHECKING:
from .pubsub_router_interface import IPubsubRouter
from .pubsub_router_interface import IPubsubRouter # noqa: F401
log = logging.getLogger(__name__)

View File

@ -8,8 +8,8 @@ from libp2p.network.stream.net_stream_interface import INetStream
from libp2p.stream_muxer.abc import IMuxedConn
if TYPE_CHECKING:
import asyncio
from libp2p.peer.id import ID
import asyncio # noqa: F401
from libp2p.peer.id import ID # noqa: F401
class PubsubNotifee(INotifee):

View File

@ -6,7 +6,7 @@ from libp2p.peer.id import ID
from .pb import rpc_pb2
if TYPE_CHECKING:
from .pubsub import Pubsub
from .pubsub import Pubsub # noqa: F401
class IPubsubRouter(ABC):

View File

@ -1,12 +1,11 @@
from typing import TYPE_CHECKING, cast
from typing import cast
from libp2p.security.secure_conn_interface import ISecureConn
from libp2p.security.secure_transport_interface import ISecureTransport
if TYPE_CHECKING:
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
class InsecureTransport(ISecureTransport):
@ -20,7 +19,7 @@ class InsecureTransport(ISecureTransport):
def __init__(self, transport_id: str) -> None:
self.transport_id = transport_id
async def secure_inbound(self, conn: "IRawConnection") -> ISecureConn:
async def secure_inbound(self, conn: IRawConnection) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are not the initiator)
@ -29,7 +28,7 @@ class InsecureTransport(ISecureTransport):
insecure_conn = InsecureConn(conn, self.transport_id)
return insecure_conn
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> ISecureConn:
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)
@ -40,21 +39,21 @@ class InsecureTransport(ISecureTransport):
class InsecureConn(ISecureConn):
conn: "IRawConnection"
details: "TSecurityDetails"
conn: IRawConnection
details: TSecurityDetails
def __init__(self, conn: "IRawConnection", conn_id: str) -> None:
def __init__(self, conn: IRawConnection, conn_id: str) -> None:
self.conn = conn
self.details = cast("TSecurityDetails", {})
self.details = cast(TSecurityDetails, {})
self.details["id"] = conn_id
def get_conn(self) -> "IRawConnection":
def get_conn(self) -> IRawConnection:
"""
:return: connection object that has been made secure
"""
return self.conn
def get_security_details(self) -> "TSecurityDetails":
def get_security_details(self) -> TSecurityDetails:
"""
:return: map containing details about the connections security
"""

View File

@ -1,9 +1,7 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from libp2p.network.connection.raw_connection_interface import IRawConnection
from .typing import TSecurityDetails
from libp2p.network.connection.raw_connection_interface import IRawConnection
from .typing import TSecurityDetails
"""
@ -16,13 +14,13 @@ Relevant go repo: https://github.com/libp2p/go-conn-security/blob/master/interfa
class ISecureConn(ABC):
@abstractmethod
def get_conn(self) -> "IRawConnection":
def get_conn(self) -> IRawConnection:
"""
:return: the underlying raw connection
"""
@abstractmethod
def get_security_details(self) -> "TSecurityDetails":
def get_security_details(self) -> TSecurityDetails:
"""
:return: map containing details about the connections security
"""

View File

@ -1,10 +1,8 @@
from abc import ABC, abstractmethod
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from .secure_conn_interface import ISecureConn
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .secure_conn_interface import ISecureConn
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
"""
@ -17,7 +15,7 @@ Relevant go repo: https://github.com/libp2p/go-conn-security/blob/master/interfa
class ISecureTransport(ABC):
@abstractmethod
async def secure_inbound(self, conn: "IRawConnection") -> "ISecureConn":
async def secure_inbound(self, conn: IRawConnection) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are not the initiator)
@ -25,7 +23,7 @@ class ISecureTransport(ABC):
"""
@abstractmethod
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> "ISecureConn":
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)

View File

@ -1,5 +1,5 @@
from abc import ABC
from typing import Dict, NewType
from typing import Dict
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
@ -20,9 +20,9 @@ Relevant go repo: https://github.com/libp2p/go-conn-security/blob/master/interfa
class SecurityMultistream(ABC):
transports: Dict[TProtocol, "ISecureTransport"]
multiselect: "Multiselect"
multiselect_client: "MultiselectClient"
transports: Dict[TProtocol, ISecureTransport]
multiselect: Multiselect
multiselect_client: MultiselectClient
def __init__(self) -> None:
# Map protocol to secure transport
@ -34,7 +34,7 @@ class SecurityMultistream(ABC):
# Create multiselect client
self.multiselect_client = MultiselectClient()
def add_transport(self, protocol: TProtocol, transport: "ISecureTransport") -> None:
def add_transport(self, protocol: TProtocol, transport: ISecureTransport) -> None:
# Associate protocol with transport
self.transports[protocol] = transport
@ -43,7 +43,7 @@ class SecurityMultistream(ABC):
# we only care about selecting the protocol, not any handler function
self.multiselect.add_handler(protocol, None)
async def secure_inbound(self, conn: "IRawConnection") -> "ISecureConn":
async def secure_inbound(self, conn: IRawConnection) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are not the initiator)
@ -58,7 +58,7 @@ class SecurityMultistream(ABC):
return secure_conn
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> "ISecureConn":
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)
@ -73,7 +73,7 @@ class SecurityMultistream(ABC):
return secure_conn
async def select_transport(self, conn: "IRawConnection", initiator: bool) -> "ISecureTransport":
async def select_transport(self, conn: IRawConnection, initiator: bool) -> ISecureTransport:
"""
Select a transport that both us and the node on the
other end of conn support and agree on

View File

@ -1,13 +1,12 @@
import asyncio
from typing import TYPE_CHECKING, cast
from typing import cast
from libp2p.security.secure_conn_interface import ISecureConn
from libp2p.security.secure_transport_interface import ISecureTransport
if TYPE_CHECKING:
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
from libp2p.network.connection.raw_connection_interface import IRawConnection
from libp2p.peer.id import ID
from .typing import TSecurityDetails
class SimpleSecurityTransport(ISecureTransport):
@ -16,7 +15,7 @@ class SimpleSecurityTransport(ISecureTransport):
def __init__(self, key_phrase: str) -> None:
self.key_phrase = key_phrase
async def secure_inbound(self, conn: "IRawConnection") -> "ISecureConn":
async def secure_inbound(self, conn: IRawConnection) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are not the initiator)
@ -31,7 +30,7 @@ class SimpleSecurityTransport(ISecureTransport):
secure_conn = SimpleSecureConn(conn, self.key_phrase)
return secure_conn
async def secure_outbound(self, conn: "IRawConnection", peer_id: "ID") -> "ISecureConn":
async def secure_outbound(self, conn: IRawConnection, peer_id: ID) -> ISecureConn:
"""
Secure the connection, either locally or by communicating with opposing node via conn,
for an inbound connection (i.e. we are the initiator)
@ -52,22 +51,22 @@ class SimpleSecurityTransport(ISecureTransport):
class SimpleSecureConn(ISecureConn):
conn: "IRawConnection"
conn: IRawConnection
key_phrase: str
details: "TSecurityDetails"
details: TSecurityDetails
def __init__(self, conn: "IRawConnection", key_phrase: str) -> None:
def __init__(self, conn: IRawConnection, key_phrase: str) -> None:
self.conn = conn
self.details = cast("TSecurityDetails", {})
self.details = cast(TSecurityDetails, {})
self.details["key_phrase"] = key_phrase
def get_conn(self) -> "IRawConnection":
def get_conn(self) -> IRawConnection:
"""
:return: connection object that has been made secure
"""
return self.conn
def get_security_details(self) -> "TSecurityDetails":
def get_security_details(self) -> TSecurityDetails:
"""
:return: map containing details about the connections security
"""

View File

@ -89,7 +89,7 @@ async def no_common_protocol(host_a, host_b):
# try to creates a new new with a procotol not known by the other host
with pytest.raises(MultiselectClientError):
_ = await host_b.new_stream(host_a.get_id(), ["/fakeproto/0.0.1"])
await host_b.new_stream(host_a.get_id(), ["/fakeproto/0.0.1"])
@pytest.mark.asyncio

View File

@ -19,7 +19,7 @@ def test_init():
def test_no_init_value():
with pytest.raises(Exception) as _:
with pytest.raises(Exception):
ID()

View File

@ -28,7 +28,7 @@ def test_init_():
def test_init_no_value():
with pytest.raises(Exception) as _:
with pytest.raises(Exception):
PeerInfo()

View File

@ -4,6 +4,8 @@ from libp2p.pubsub.mcache import MessageCache
class Msg:
__slots__ = ["topicIDs", "seqno", "from_id"]
def __init__(self, topicIDs, seqno, from_id):
self.topicIDs = topicIDs
self.seqno = seqno