Skip to content

Commit 585a48f

Browse files
committed
adjust python code where possible to use updated Optional and Union type hinting for python 3.10
1 parent 8f4bf53 commit 585a48f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+428
-441
lines changed

daemon/core/api/grpc/client.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from contextlib import contextmanager
99
from pathlib import Path
1010
from queue import Queue
11-
from typing import Any, Optional
11+
from typing import Any
1212

1313
import grpc
1414

@@ -57,7 +57,7 @@
5757
class MoveNodesStreamer:
5858
def __init__(self, session_id: int, source: str = None) -> None:
5959
self.session_id: int = session_id
60-
self.source: Optional[str] = source
60+
self.source: str | None = source
6161
self.queue: SetQueue = SetQueue()
6262

6363
def send_position(self, node_id: int, x: float, y: float) -> None:
@@ -83,8 +83,8 @@ def send(self, request: wrappers.MoveNodesRequest) -> None:
8383
def stop(self) -> None:
8484
self.queue.put(None)
8585

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()
8888
if request:
8989
return request.to_proto()
9090
else:
@@ -98,11 +98,11 @@ class EmanePathlossesStreamer:
9898
def __init__(self) -> None:
9999
self.queue: Queue = Queue()
100100

101-
def send(self, request: Optional[wrappers.EmanePathlossesRequest]) -> None:
101+
def send(self, request: wrappers.EmanePathlossesRequest | None) -> None:
102102
self.queue.put(request)
103103

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()
106106
if request:
107107
return request.to_proto()
108108
else:
@@ -116,11 +116,11 @@ class EmaneEventsStreamer:
116116
def __init__(self) -> None:
117117
self.queue: Queue = Queue()
118118

119-
def send(self, request: Optional[wrappers.EmaneEventsRequest]) -> None:
119+
def send(self, request: wrappers.EmaneEventsRequest | None) -> None:
120120
self.queue.put(request)
121121

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()
124124
if request:
125125
return request.to_proto()
126126
else:
@@ -246,8 +246,8 @@ def __init__(self, address: str = "localhost:50051", proxy: bool = False) -> Non
246246
:param address: grpc server address to connect to
247247
"""
248248
self.address: str = address
249-
self.stub: Optional[core_pb2_grpc.CoreApiStub] = None
250-
self.channel: Optional[grpc.Channel] = None
249+
self.stub: core_pb2_grpc.CoreApiStub | None = None
250+
self.channel: grpc.Channel | None = None
251251
self.proxy: bool = proxy
252252

253253
def start_session(
@@ -938,7 +938,7 @@ def get_emane_event_channel(
938938
response = self.stub.GetEmaneEventChannel(request)
939939
return wrappers.EmaneEventChannel.from_proto(response)
940940

941-
def execute_script(self, script: str, args: str) -> Optional[int]:
941+
def execute_script(self, script: str, args: str) -> int | None:
942942
"""
943943
Executes a python script given context of the current CoreEmu object.
944944

daemon/core/api/grpc/events.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import logging
22
from collections.abc import Iterable
33
from queue import Empty, Queue
4-
from typing import Optional
54

65
from core.api.grpc import core_pb2, grpcutils
76
from core.api.grpc.grpcutils import convert_link_data
@@ -113,7 +112,7 @@ def add_handlers(self) -> None:
113112
if core_pb2.EventType.SESSION in self.event_types:
114113
self.session.broadcast_manager.add_handler(EventData, self.queue.put)
115114

116-
def process(self) -> Optional[core_pb2.Event]:
115+
def process(self) -> core_pb2.Event | None:
117116
"""
118117
Process the next event in the queue.
119118

daemon/core/api/grpc/grpcutils.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import logging
22
import time
33
from pathlib import Path
4-
from typing import Any, Optional, Union
4+
from typing import Any
55

66
import grpc
77
from google.protobuf.internal.containers import RepeatedCompositeFieldContainer
@@ -248,7 +248,7 @@ def convert_session_options(session: Session) -> dict[str, common_pb2.ConfigOpti
248248

249249
def get_config_options(
250250
config: dict[str, str],
251-
configurable_options: Union[ConfigurableOptions, type[ConfigurableOptions]],
251+
configurable_options: ConfigurableOptions | type[ConfigurableOptions],
252252
) -> dict[str, common_pb2.ConfigOption]:
253253
"""
254254
Retrieve configuration options in a form that is used by the grpc server.
@@ -524,9 +524,9 @@ def convert_options_proto(options: core_pb2.LinkOptions) -> LinkOptions:
524524

525525
def convert_link(
526526
node1: NodeBase,
527-
iface1: Optional[CoreInterface],
527+
iface1: CoreInterface | None,
528528
node2: NodeBase,
529-
iface2: Optional[CoreInterface],
529+
iface2: CoreInterface | None,
530530
options: LinkOptions,
531531
unidirectional: bool,
532532
) -> core_pb2.Link:
@@ -709,7 +709,7 @@ def get_hooks(session: Session) -> list[core_pb2.Hook]:
709709

710710
def get_mobility_node(
711711
session: Session, node_id: int, context: ServicerContext
712-
) -> Union[WlanNode, EmaneNet]:
712+
) -> WlanNode | EmaneNet:
713713
"""
714714
Get mobility node.
715715
@@ -819,5 +819,5 @@ def configure_node(
819819
service.set_template(name, template)
820820

821821

822-
def get_optional(message: Message, name: str) -> Optional[Any]:
822+
def get_optional(message: Message, name: str) -> Any | None:
823823
return getattr(message, name) if message.HasField(name) else None

daemon/core/api/grpc/server.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
from concurrent import futures
1010
from pathlib import Path
1111
from re import Pattern
12-
from typing import Optional
1312

1413
import grpc
1514
from grpc import ServicerContext
@@ -107,7 +106,7 @@ def __init__(self, coreemu: CoreEmu) -> None:
107106
super().__init__()
108107
self.coreemu: CoreEmu = coreemu
109108
self.running: bool = True
110-
self.server: Optional[grpc.Server] = None
109+
self.server: grpc.Server | None = None
111110
# catch signals
112111
signal.signal(signal.SIGHUP, self._signal_handler)
113112
signal.signal(signal.SIGINT, self._signal_handler)

daemon/core/api/grpc/wrappers.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
from dataclasses import dataclass, field
22
from enum import Enum
33
from pathlib import Path
4-
from typing import Optional
54

65
from google.protobuf.internal.containers import MessageMap
76

@@ -615,9 +614,9 @@ class Node:
615614
canvas: int = None
616615

617616
# configurations
618-
emane_model_configs: dict[
619-
tuple[str, Optional[int]], dict[str, ConfigOption]
620-
] = field(default_factory=dict, repr=False)
617+
emane_model_configs: dict[tuple[str, int | None], dict[str, ConfigOption]] = field(
618+
default_factory=dict, repr=False
619+
)
621620
wlan_config: dict[str, ConfigOption] = field(default_factory=dict, repr=False)
622621
wireless_config: dict[str, ConfigOption] = field(default_factory=dict, repr=False)
623622
mobility_config: dict[str, ConfigOption] = field(default_factory=dict, repr=False)

daemon/core/config.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import logging
66
from collections import OrderedDict
77
from dataclasses import dataclass, field
8-
from typing import TYPE_CHECKING, Any, Optional, Union
8+
from typing import TYPE_CHECKING, Any
99

1010
from core.emane.nodes import EmaneNet
1111
from core.emulator.enumerations import ConfigDataTypes
@@ -119,7 +119,7 @@ class ConfigurableOptions:
119119
Provides a base for defining configuration options within CORE.
120120
"""
121121

122-
name: Optional[str] = None
122+
name: str | None = None
123123
options: list[Configuration] = []
124124

125125
@classmethod
@@ -252,7 +252,7 @@ def get_config(
252252

253253
def get_configs(
254254
self, node_id: int = _default_node, config_type: str = _default_type
255-
) -> Optional[dict[str, str]]:
255+
) -> dict[str, str] | None:
256256
"""
257257
Retrieve configurations for a node and configuration type.
258258
@@ -342,7 +342,7 @@ def get_model_config(self, node_id: int, model_name: str) -> dict[str, str]:
342342

343343
def set_model(
344344
self,
345-
node: Union[WlanNode, EmaneNet],
345+
node: WlanNode | EmaneNet,
346346
model_class: "WirelessModelType",
347347
config: dict[str, str] = None,
348348
) -> None:
@@ -362,7 +362,7 @@ def set_model(
362362
node.setmodel(model_class, config)
363363

364364
def get_models(
365-
self, node: Union[WlanNode, EmaneNet]
365+
self, node: WlanNode | EmaneNet
366366
) -> list[tuple[type, dict[str, str]]]:
367367
"""
368368
Return a list of model classes and values for a net if one has been

daemon/core/emane/emanemanager.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import logging
66
import threading
77
from enum import Enum
8-
from typing import TYPE_CHECKING, Optional
8+
from typing import TYPE_CHECKING
99

1010
from core import utils
1111
from core.emane.emanemodel import EmaneModel
@@ -72,7 +72,7 @@ def __init__(self, session: "Session") -> None:
7272
"emane_transform_port", 8200
7373
)
7474
self.doeventloop: bool = False
75-
self.eventmonthread: Optional[threading.Thread] = None
75+
self.eventmonthread: threading.Thread | None = None
7676

7777
# model for global EMANE configuration options
7878
self.node_configs: dict[int, dict[str, dict[str, str]]] = {}
@@ -96,7 +96,7 @@ def next_nem_id(self, iface: CoreInterface) -> int:
9696

9797
def get_config(
9898
self, key: int, model: str, default: bool = True
99-
) -> Optional[dict[str, str]]:
99+
) -> dict[str, str] | None:
100100
"""
101101
Get the current or default configuration for an emane model.
102102
@@ -326,10 +326,10 @@ def setup_control_channels(
326326
if eventgroup != otagroup:
327327
node.node_net_client.create_route(eventgroup, eventdev)
328328

329-
def get_iface(self, nem_id: int) -> Optional[CoreInterface]:
329+
def get_iface(self, nem_id: int) -> CoreInterface | None:
330330
return self.nems_to_ifaces.get(nem_id)
331331

332-
def get_nem_id(self, iface: CoreInterface) -> Optional[int]:
332+
def get_nem_id(self, iface: CoreInterface) -> int | None:
333333
return self.ifaces_to_nems.get(iface)
334334

335335
def get_nem_port(self, iface: CoreInterface) -> int:
@@ -338,7 +338,7 @@ def get_nem_port(self, iface: CoreInterface) -> int:
338338

339339
def get_nem_position(
340340
self, iface: CoreInterface
341-
) -> Optional[tuple[int, float, float, int]]:
341+
) -> tuple[int, float, float, int] | None:
342342
"""
343343
Retrieves nem position for a given interface.
344344
@@ -480,7 +480,7 @@ def check_node_models(self) -> None:
480480

481481
def get_nem_link(
482482
self, nem1: int, nem2: int, flags: MessageFlags = MessageFlags.NONE
483-
) -> Optional[LinkData]:
483+
) -> LinkData | None:
484484
iface1 = self.get_iface(nem1)
485485
if not iface1:
486486
logger.error("invalid nem: %s", nem1)

daemon/core/emane/emanemodel.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""
44
import logging
55
from pathlib import Path
6-
from typing import Optional
76

87
from core.config import ConfigBool, ConfigGroup, ConfigString, Configuration
98
from core.emane import emanemanifest
@@ -37,13 +36,13 @@ class EmaneModel(WirelessModel):
3736
platform_config: list[Configuration] = []
3837

3938
# default mac configuration settings
40-
mac_library: Optional[str] = None
41-
mac_xml: Optional[str] = None
39+
mac_library: str | None = None
40+
mac_xml: str | None = None
4241
mac_defaults: dict[str, str] = {}
4342
mac_config: list[Configuration] = []
4443

4544
# default phy configuration settings, using the universal model
46-
phy_library: Optional[str] = None
45+
phy_library: str | None = None
4746
phy_xml: str = "emanephy.xml"
4847
phy_defaults: dict[str, str] = {
4948
"subid": "1",

daemon/core/emane/eventmanager.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import threading
3-
from typing import Callable, Optional, Union
3+
from typing import Callable, Union
44

55
from core.errors import CoreError
66

@@ -51,7 +51,7 @@ def __init__(
5151
self.port: int = port
5252
self.location_handler: Callable[[LocationEvent], None] = location_handler
5353
self.running: bool = False
54-
self.thread: Optional[threading.Thread] = None
54+
self.thread: threading.Thread | None = None
5555
logger.info("starting emane event service %s %s:%s", device, group, port)
5656
self.events: EventService = EventService(
5757
eventchannel=(group, port, device), otachannel=None
@@ -125,7 +125,7 @@ def create_service(
125125
else:
126126
self.nem_service[nem_id] = service
127127

128-
def get_service(self, nem_id: int) -> Optional[EmaneEventService]:
128+
def get_service(self, nem_id: int) -> EmaneEventService | None:
129129
service = self.nem_service.get(nem_id)
130130
if not service:
131131
logger.error("failure to find event service for nem(%s)", nem_id)

daemon/core/emane/linkmonitor.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import sched
33
import threading
44
import time
5-
from typing import TYPE_CHECKING, Optional
5+
from typing import TYPE_CHECKING
66

77
from lxml import etree
88

@@ -40,7 +40,7 @@ def __init__(self, losses: dict[float, float]) -> None:
4040
self.loss_lookup: dict[int, float] = {}
4141
for index, value in enumerate(self.sinrs):
4242
self.loss_lookup[index] = self.losses[value]
43-
self.mac_id: Optional[str] = None
43+
self.mac_id: str | None = None
4444

4545
def get_loss(self, sinr: float) -> float:
4646
index = self._get_index(sinr)
@@ -59,7 +59,7 @@ def __init__(self, from_nem: int, to_nem: int, sinr: float) -> None:
5959
self.from_nem: int = from_nem
6060
self.to_nem: int = to_nem
6161
self.sinr: float = sinr
62-
self.last_seen: Optional[float] = None
62+
self.last_seen: float | None = None
6363
self.updated: bool = False
6464
self.touch()
6565

@@ -182,10 +182,10 @@ def __init__(self, emane_manager: "EmaneManager") -> None:
182182
self.clients: list[EmaneClient] = []
183183
self.links: dict[tuple[int, int], EmaneLink] = {}
184184
self.complete_links: set[tuple[int, int]] = set()
185-
self.loss_threshold: Optional[int] = None
186-
self.link_interval: Optional[int] = None
187-
self.link_timeout: Optional[int] = None
188-
self.scheduler: Optional[sched.scheduler] = None
185+
self.loss_threshold: int | None = None
186+
self.link_interval: int | None = None
187+
self.link_timeout: int | None = None
188+
self.scheduler: sched.scheduler | None = None
189189
self.running: bool = False
190190

191191
def start(self) -> None:

0 commit comments

Comments
 (0)