8
8
from contextlib import contextmanager
9
9
from pathlib import Path
10
10
from queue import Queue
11
- from typing import Any , Optional
11
+ from typing import Any
12
12
13
13
import grpc
14
14
57
57
class MoveNodesStreamer :
58
58
def __init__ (self , session_id : int , source : str = None ) -> None :
59
59
self .session_id : int = session_id
60
- self .source : Optional [ str ] = source
60
+ self .source : str | None = source
61
61
self .queue : SetQueue = SetQueue ()
62
62
63
63
def send_position (self , node_id : int , x : float , y : float ) -> None :
@@ -83,8 +83,8 @@ def send(self, request: wrappers.MoveNodesRequest) -> None:
83
83
def stop (self ) -> None :
84
84
self .queue .put (None )
85
85
86
- def next (self ) -> Optional [ core_pb2 .MoveNodesRequest ] :
87
- request : Optional [ wrappers .MoveNodesRequest ] = self .queue .get ()
86
+ def next (self ) -> core_pb2 .MoveNodesRequest | None :
87
+ request : wrappers .MoveNodesRequest | None = self .queue .get ()
88
88
if request :
89
89
return request .to_proto ()
90
90
else :
@@ -98,11 +98,11 @@ class EmanePathlossesStreamer:
98
98
def __init__ (self ) -> None :
99
99
self .queue : Queue = Queue ()
100
100
101
- def send (self , request : Optional [ wrappers .EmanePathlossesRequest ] ) -> None :
101
+ def send (self , request : wrappers .EmanePathlossesRequest | None ) -> None :
102
102
self .queue .put (request )
103
103
104
- def next (self ) -> Optional [ emane_pb2 .EmanePathlossesRequest ] :
105
- request : Optional [ wrappers .EmanePathlossesRequest ] = self .queue .get ()
104
+ def next (self ) -> emane_pb2 .EmanePathlossesRequest | None :
105
+ request : wrappers .EmanePathlossesRequest | None = self .queue .get ()
106
106
if request :
107
107
return request .to_proto ()
108
108
else :
@@ -116,11 +116,11 @@ class EmaneEventsStreamer:
116
116
def __init__ (self ) -> None :
117
117
self .queue : Queue = Queue ()
118
118
119
- def send (self , request : Optional [ wrappers .EmaneEventsRequest ] ) -> None :
119
+ def send (self , request : wrappers .EmaneEventsRequest | None ) -> None :
120
120
self .queue .put (request )
121
121
122
- def next (self ) -> Optional [ emane_pb2 .EmaneEventsRequest ] :
123
- request : Optional [ wrappers .EmaneEventsRequest ] = self .queue .get ()
122
+ def next (self ) -> emane_pb2 .EmaneEventsRequest | None :
123
+ request : wrappers .EmaneEventsRequest | None = self .queue .get ()
124
124
if request :
125
125
return request .to_proto ()
126
126
else :
@@ -133,6 +133,10 @@ def iter(self):
133
133
class InterfaceHelper :
134
134
"""
135
135
Convenience class to help generate IP4 and IP6 addresses for gRPC clients.
136
+
137
+ This is not a requirement to use, as interfaces can be created manually as
138
+ desired. Node IDs are used to index into a subnet, so if the subnet is tool small
139
+ of a pool of addresses and the node ID is too high, there will be a failure.
136
140
"""
137
141
138
142
def __init__ (self , ip4_prefix : str = None , ip6_prefix : str = None ) -> None :
@@ -242,8 +246,8 @@ def __init__(self, address: str = "localhost:50051", proxy: bool = False) -> Non
242
246
:param address: grpc server address to connect to
243
247
"""
244
248
self .address : str = address
245
- self .stub : Optional [ core_pb2_grpc .CoreApiStub ] = None
246
- self .channel : Optional [ grpc .Channel ] = None
249
+ self .stub : core_pb2_grpc .CoreApiStub | None = None
250
+ self .channel : grpc .Channel | None = None
247
251
self .proxy : bool = proxy
248
252
249
253
def start_session (
@@ -830,7 +834,7 @@ def open_xml(self, file_path: Path, start: bool = False) -> tuple[bool, int]:
830
834
Load a local scenario XML file to open as a new session.
831
835
832
836
:param file_path: path of scenario XML file
833
- :param start: tuple of result and session id when successful
837
+ :param start: instantiate session if true, false for a definition state
834
838
:return: tuple of result and session id
835
839
"""
836
840
with file_path .open ("r" ) as f :
@@ -934,7 +938,7 @@ def get_emane_event_channel(
934
938
response = self .stub .GetEmaneEventChannel (request )
935
939
return wrappers .EmaneEventChannel .from_proto (response )
936
940
937
- def execute_script (self , script : str , args : str ) -> Optional [ int ] :
941
+ def execute_script (self , script : str , args : str ) -> int | None :
938
942
"""
939
943
Executes a python script given context of the current CoreEmu object.
940
944
@@ -1073,9 +1077,7 @@ def create_service(
1073
1077
recreate : bool = False ,
1074
1078
) -> bool :
1075
1079
request = CreateServiceRequest (
1076
- service = service .to_proto (),
1077
- templates = templates ,
1078
- recreate = recreate ,
1080
+ service = service .to_proto (), templates = templates , recreate = recreate
1079
1081
)
1080
1082
response = self .stub .CreateService (request )
1081
1083
return response .result
0 commit comments