From f67e2ae9a840dddc92e7b3c94190db2c4f025a5a Mon Sep 17 00:00:00 2001 From: Leon Lan Date: Thu, 29 Feb 2024 17:34:35 +0100 Subject: [PATCH] Get rid of Tuple, List and Dict --- tests/parse/test_parse_utils.py | 6 ++---- vrplib/parse/parse_distances.py | 4 ++-- vrplib/parse/parse_solomon.py | 6 +++--- vrplib/parse/parse_solution.py | 4 ++-- vrplib/parse/parse_utils.py | 4 ++-- vrplib/parse/parse_vrplib.py | 10 +++++----- vrplib/read/read_instance.py | 4 ++-- vrplib/read/read_solution.py | 4 ++-- vrplib/write/write_instance.py | 6 +++--- vrplib/write/write_solution.py | 6 +++--- 10 files changed, 26 insertions(+), 28 deletions(-) diff --git a/tests/parse/test_parse_utils.py b/tests/parse/test_parse_utils.py index 0602829a..8153ca50 100644 --- a/tests/parse/test_parse_utils.py +++ b/tests/parse/test_parse_utils.py @@ -1,5 +1,3 @@ -from typing import List - import pytest from numpy.testing import assert_equal @@ -7,7 +5,7 @@ @pytest.mark.parametrize(("text", "expected"), [("", []), ("\n", [])]) -def test_empty_lines(text: str, expected: List[str]): +def test_empty_lines(text: str, expected: list[str]): assert_equal(text2lines(text), expected) @@ -23,5 +21,5 @@ def test_empty_lines(text: str, expected: List[str]): (" # comment after whitespace", []), ], ) -def test_comments(text: str, expected: List[str]): +def test_comments(text: str, expected: list[str]): assert_equal(text2lines(text), expected) diff --git a/vrplib/parse/parse_distances.py b/vrplib/parse/parse_distances.py index 41c0db70..7da5e4a5 100644 --- a/vrplib/parse/parse_distances.py +++ b/vrplib/parse/parse_distances.py @@ -1,11 +1,11 @@ from itertools import combinations -from typing import List, Optional, Union +from typing import Optional, Union import numpy as np def parse_distances( - data: List, + data: list, edge_weight_type: str, edge_weight_format: Optional[str] = None, node_coord: Optional[np.ndarray] = None, diff --git a/vrplib/parse/parse_solomon.py b/vrplib/parse/parse_solomon.py index 1013c97a..dbc4e8b1 100644 --- a/vrplib/parse/parse_solomon.py +++ b/vrplib/parse/parse_solomon.py @@ -1,11 +1,11 @@ -from typing import Dict, List, Union +from typing import Union import numpy as np from .parse_distances import pairwise_euclidean from .parse_utils import text2lines -Instance = Dict[str, Union[str, float, np.ndarray]] +Instance = dict[str, Union[str, float, np.ndarray]] def parse_solomon(text: str, compute_edge_weights: bool = True) -> Instance: @@ -46,7 +46,7 @@ def parse_solomon(text: str, compute_edge_weights: bool = True) -> Instance: return instance -def is_valid_solomon_instance(lines: List[str]): +def is_valid_solomon_instance(lines: list[str]): """ Checks if the passed-in lines follow the Solomon format requirements. """ diff --git a/vrplib/parse/parse_solution.py b/vrplib/parse/parse_solution.py index f812063a..3cf384f9 100644 --- a/vrplib/parse/parse_solution.py +++ b/vrplib/parse/parse_solution.py @@ -1,8 +1,8 @@ -from typing import Dict, List, Union +from typing import Union from .parse_utils import infer_type, text2lines -Solution = Dict[str, Union[float, str, List]] +Solution = dict[str, Union[float, str, list]] def parse_solution(text: str) -> Solution: diff --git a/vrplib/parse/parse_utils.py b/vrplib/parse/parse_utils.py index b5579035..39989a3e 100644 --- a/vrplib/parse/parse_utils.py +++ b/vrplib/parse/parse_utils.py @@ -1,7 +1,7 @@ -from typing import List, Union +from typing import Union -def text2lines(text: str) -> List[str]: +def text2lines(text: str) -> list[str]: """ Takes a string and returns a list of non-empty, stripped lines. Also removes any comment lines from the given string. diff --git a/vrplib/parse/parse_vrplib.py b/vrplib/parse/parse_vrplib.py index 7ec3f9b5..c750bc1a 100644 --- a/vrplib/parse/parse_vrplib.py +++ b/vrplib/parse/parse_vrplib.py @@ -1,12 +1,12 @@ import re -from typing import Dict, List, Tuple, Union +from typing import Union import numpy as np from .parse_distances import parse_distances from .parse_utils import infer_type, text2lines -Instance = Dict[str, Union[str, float, np.ndarray]] +Instance = dict[str, Union[str, float, np.ndarray]] def parse_vrplib(text: str, compute_edge_weights: bool = True) -> Instance: @@ -53,7 +53,7 @@ def parse_vrplib(text: str, compute_edge_weights: bool = True) -> Instance: return instance -def group_specifications_and_sections(lines: List[str]): +def group_specifications_and_sections(lines: list[str]): """ Groups instance lines into specifications and section parts. """ @@ -88,7 +88,7 @@ def group_specifications_and_sections(lines: List[str]): return specs, sections -def parse_specification(line: str) -> Tuple[str, Union[float, str]]: +def parse_specification(line: str) -> tuple[str, Union[float, str]]: """ Parses a specification line as keyword-value pair, split at the first colon occurrence. The keyword is made lowercase and the value is unmodified. @@ -97,7 +97,7 @@ def parse_specification(line: str) -> Tuple[str, Union[float, str]]: return k.lower(), infer_type(v) -def parse_section(lines: List, instance: Dict) -> np.ndarray: +def parse_section(lines: list, instance: dict) -> np.ndarray: """ Parses the data section into numpy arrays. """ diff --git a/vrplib/read/read_instance.py b/vrplib/read/read_instance.py index 90c311ab..8451c4d9 100644 --- a/vrplib/read/read_instance.py +++ b/vrplib/read/read_instance.py @@ -1,5 +1,5 @@ import os -from typing import Any, Dict, Union +from typing import Any, Union from vrplib.parse import parse_solomon, parse_vrplib @@ -8,7 +8,7 @@ def read_instance( path: Union[str, os.PathLike], instance_format: str = "vrplib", compute_edge_weights: bool = True, -) -> Dict[str, Any]: +) -> dict[str, Any]: """ Reads the instance from the passed-in file path. diff --git a/vrplib/read/read_solution.py b/vrplib/read/read_solution.py index f072b8e1..b2faa9a7 100644 --- a/vrplib/read/read_solution.py +++ b/vrplib/read/read_solution.py @@ -1,10 +1,10 @@ import os -from typing import Any, Dict, Union +from typing import Any, Union from vrplib.parse import parse_solution -def read_solution(path: Union[str, os.PathLike]) -> Dict[str, Union[str, Any]]: +def read_solution(path: Union[str, os.PathLike]) -> dict[str, Union[str, Any]]: """ Reads the solution from the passed-in file path. diff --git a/vrplib/write/write_instance.py b/vrplib/write/write_instance.py index a022bdc6..8b2ca324 100644 --- a/vrplib/write/write_instance.py +++ b/vrplib/write/write_instance.py @@ -1,14 +1,14 @@ import os -from typing import Dict, List, Tuple, TypeVar, Union +from typing import TypeVar, Union import numpy as np -_ArrayLike = TypeVar("_ArrayLike", List, Tuple, np.ndarray) +_ArrayLike = TypeVar("_ArrayLike", list, tuple, np.ndarray) def write_instance( path: Union[str, os.PathLike], - data: Dict[str, Union[str, int, float, _ArrayLike]], + data: dict[str, Union[str, int, float, _ArrayLike]], ): """ Writes a VRP instance to file following the VRPLIB format [1]. diff --git a/vrplib/write/write_solution.py b/vrplib/write/write_solution.py index a5b79779..48da1054 100644 --- a/vrplib/write/write_solution.py +++ b/vrplib/write/write_solution.py @@ -1,11 +1,11 @@ import os -from typing import Any, Dict, List, Optional, Union +from typing import Any, Optional, Union def write_solution( path: Union[str, os.PathLike], - routes: List[List[int]], - data: Optional[Dict[str, Any]] = None, + routes: list[list[int]], + data: Optional[dict[str, Any]] = None, ): """ Writes a VRP solution to file following the VRPLIB convention.