From 9ab7c56791218f59d1d6b9d597def14016d6966b Mon Sep 17 00:00:00 2001 From: Uriel Date: Sat, 7 Mar 2026 17:13:50 -0300 Subject: [PATCH] use a named tuple on parse_game_ports --- WebHostLib/customserver.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/WebHostLib/customserver.py b/WebHostLib/customserver.py index ac2e404531..c3965a9282 100644 --- a/WebHostLib/customserver.py +++ b/WebHostLib/customserver.py @@ -184,8 +184,14 @@ class WebHostContext(Context): return d +class GameRangePorts(typing.NamedTuple): + parsed_ports: list[range | list[int]] + weights: list[int] + ephemeral_allowed: bool + + @functools.cache -def parse_game_ports(game_ports: tuple[str | int]): +def parse_game_ports(game_ports: tuple[str | int]) -> GameRangePorts: parsed_ports: list[range | list[int]] = [] weights = [] ephemeral_allowed = False @@ -205,13 +211,15 @@ def parse_game_ports(game_ports: tuple[str | int]): weights.append(total_length) parsed_ports.append([int(item)]) - return parsed_ports, weights, total_length, ephemeral_allowed + return GameRangePorts(parsed_ports, weights, ephemeral_allowed) def create_random_port_socket(game_ports: tuple[str | int], host: str) -> socket.socket: - parsed_ports, weights, length, ephemeral_allowed = parse_game_ports(game_ports) + parsed_ports, weights, ephemeral_allowed = parse_game_ports(game_ports) # try to randomize the order of parsed ports with weights, but don't have duplicates of them - port_ranges = list(dict.fromkeys(random.choices(parsed_ports, weights=weights, k=len(parsed_ports)) + parsed_ports)) + port_ranges = list( + dict.fromkeys(random.choices(parsed_ports, cum_weights=weights, k=len(parsed_ports)) + parsed_ports) + ) remaining = 1024 for r in port_ranges: r_length = len(r)