diff options
Diffstat (limited to 'src')
24 files changed, 51 insertions, 40 deletions
diff --git a/src/sec_certs/cli.py b/src/sec_certs/cli.py index 9bd74108..4b613af4 100644 --- a/src/sec_certs/cli.py +++ b/src/sec_certs/cli.py @@ -3,10 +3,10 @@ from __future__ import annotations import logging import sys +from collections.abc import Callable from dataclasses import dataclass, field from datetime import datetime from pathlib import Path -from typing import Callable import click from pydantic import ValidationError diff --git a/src/sec_certs/dataset/cc.py b/src/sec_certs/dataset/cc.py index 16c95e84..7eea6db7 100644 --- a/src/sec_certs/dataset/cc.py +++ b/src/sec_certs/dataset/cc.py @@ -4,10 +4,11 @@ import itertools import locale import shutil import tempfile +from collections.abc import Iterator from dataclasses import dataclass from datetime import datetime from pathlib import Path -from typing import ClassVar, Iterator, cast +from typing import ClassVar, cast import numpy as np import pandas as pd diff --git a/src/sec_certs/dataset/cc_scheme.py b/src/sec_certs/dataset/cc_scheme.py index a2550014..e099f9de 100644 --- a/src/sec_certs/dataset/cc_scheme.py +++ b/src/sec_certs/dataset/cc_scheme.py @@ -1,8 +1,8 @@ from __future__ import annotations import logging +from collections.abc import Mapping from pathlib import Path -from typing import Mapping from sec_certs import constants from sec_certs.dataset.json_path_dataset import JSONPathDataset diff --git a/src/sec_certs/dataset/cpe.py b/src/sec_certs/dataset/cpe.py index f7cbf9d5..efcb3ded 100644 --- a/src/sec_certs/dataset/cpe.py +++ b/src/sec_certs/dataset/cpe.py @@ -2,9 +2,10 @@ from __future__ import annotations import logging import tempfile +from collections.abc import Iterator from datetime import datetime from pathlib import Path -from typing import Any, Iterator +from typing import Any import pandas as pd diff --git a/src/sec_certs/dataset/dataset.py b/src/sec_certs/dataset/dataset.py index 454e86bd..71974bf0 100644 --- a/src/sec_certs/dataset/dataset.py +++ b/src/sec_certs/dataset/dataset.py @@ -8,10 +8,11 @@ import re import shutil import tempfile from abc import ABC, abstractmethod +from collections.abc import Iterator from dataclasses import dataclass from datetime import datetime from pathlib import Path -from typing import Any, Generic, Iterator, TypeVar, cast +from typing import Any, Generic, TypeVar, cast import pandas as pd diff --git a/src/sec_certs/dataset/fips_algorithm.py b/src/sec_certs/dataset/fips_algorithm.py index f3f27c0b..4a87b3ef 100644 --- a/src/sec_certs/dataset/fips_algorithm.py +++ b/src/sec_certs/dataset/fips_algorithm.py @@ -3,9 +3,9 @@ from __future__ import annotations import itertools import logging import re +from collections.abc import Iterator from pathlib import Path from tempfile import TemporaryDirectory -from typing import Iterator import pandas as pd from bs4 import BeautifulSoup diff --git a/src/sec_certs/dataset/fips_iut.py b/src/sec_certs/dataset/fips_iut.py index 0251bf9b..0df36073 100644 --- a/src/sec_certs/dataset/fips_iut.py +++ b/src/sec_certs/dataset/fips_iut.py @@ -1,9 +1,9 @@ from __future__ import annotations +from collections.abc import Iterator, Mapping from dataclasses import dataclass from pathlib import Path from tempfile import NamedTemporaryFile -from typing import Iterator, Mapping import requests diff --git a/src/sec_certs/dataset/fips_mip.py b/src/sec_certs/dataset/fips_mip.py index dd61e60e..a1a1ab2d 100644 --- a/src/sec_certs/dataset/fips_mip.py +++ b/src/sec_certs/dataset/fips_mip.py @@ -1,11 +1,11 @@ from __future__ import annotations +from collections.abc import Iterator, Mapping from dataclasses import dataclass from datetime import date from operator import attrgetter from pathlib import Path from tempfile import NamedTemporaryFile -from typing import Iterator, Mapping import requests diff --git a/src/sec_certs/model/cc_matching.py b/src/sec_certs/model/cc_matching.py index 1e95c7ba..4e6f5735 100644 --- a/src/sec_certs/model/cc_matching.py +++ b/src/sec_certs/model/cc_matching.py @@ -1,7 +1,8 @@ from __future__ import annotations import contextlib -from typing import Any, Iterable, Mapping, Sequence +from collections.abc import Iterable, Mapping, Sequence +from typing import Any from sec_certs.configuration import config from sec_certs.model.matching import AbstractMatcher diff --git a/src/sec_certs/model/cpe_matching.py b/src/sec_certs/model/cpe_matching.py index c331a3b9..2d4d1609 100644 --- a/src/sec_certs/model/cpe_matching.py +++ b/src/sec_certs/model/cpe_matching.py @@ -4,7 +4,7 @@ import itertools import logging import operator import re -from typing import Pattern +from re import Pattern from rapidfuzz import fuzz diff --git a/src/sec_certs/model/fips_matching.py b/src/sec_certs/model/fips_matching.py index 50079611..9f0708f2 100644 --- a/src/sec_certs/model/fips_matching.py +++ b/src/sec_certs/model/fips_matching.py @@ -1,8 +1,8 @@ from __future__ import annotations import typing +from collections.abc import Iterable, Mapping, Sequence from datetime import date -from typing import Iterable, Mapping, Sequence from sec_certs.configuration import config from sec_certs.model.matching import AbstractMatcher diff --git a/src/sec_certs/model/matching.py b/src/sec_certs/model/matching.py index 9c0591f9..bf214e6f 100644 --- a/src/sec_certs/model/matching.py +++ b/src/sec_certs/model/matching.py @@ -1,8 +1,9 @@ from __future__ import annotations from abc import ABC, abstractmethod +from collections.abc import Sequence from heapq import heappop, heappush -from typing import Any, Generic, Sequence, TypeVar +from typing import Any, Generic, TypeVar from rapidfuzz import fuzz diff --git a/src/sec_certs/model/reference_finder.py b/src/sec_certs/model/reference_finder.py index 94a3b29f..873a51b2 100644 --- a/src/sec_certs/model/reference_finder.py +++ b/src/sec_certs/model/reference_finder.py @@ -1,18 +1,19 @@ from __future__ import annotations -from typing import Callable, Dict, List, Optional, Set, TypeVar +from collections.abc import Callable +from typing import TypeVar from sec_certs.sample.certificate import Certificate, References CertSubType = TypeVar("CertSubType", bound=Certificate) -Certificates = Dict[str, CertSubType] -ReferencedByDirect = Dict[str, Set[str]] -ReferencedByIndirect = Dict[str, Set[str]] -ReferencesType = Dict[str, Dict[str, Optional[Set[str]]]] -IDMapping = Dict[str, List[str]] -UnknownReferences = Dict[str, Set[str]] +Certificates = dict[str, CertSubType] +ReferencedByDirect = dict[str, set[str]] +ReferencedByIndirect = dict[str, set[str]] +ReferencesType = dict[str, dict[str, set[str] | None]] +IDMapping = dict[str, list[str]] +UnknownReferences = dict[str, set[str]] IDLookupFunc = Callable[[CertSubType], str] -ReferenceLookupFunc = Callable[[CertSubType], Set[str]] +ReferenceLookupFunc = Callable[[CertSubType], set[str]] # TODO: All of this can and should be rewritten on top of networkx or some other graph library. diff --git a/src/sec_certs/model/sar_transformer.py b/src/sec_certs/model/sar_transformer.py index a60f7495..394afa14 100644 --- a/src/sec_certs/model/sar_transformer.py +++ b/src/sec_certs/model/sar_transformer.py @@ -1,7 +1,8 @@ from __future__ import annotations import logging -from typing import Dict, Iterable, cast +from collections.abc import Iterable +from typing import cast from sec_certs.sample.cc import CCCertificate from sec_certs.sample.sar import SAR, SAR_DICT_KEY @@ -68,13 +69,13 @@ class SARTransformer: sec_level_sars = SARTransformer._parse_sars_from_security_level_list(cert.security_level) if st_keywords_may_have_sars(cert): - st_dict: dict = cast(Dict, cert.pdf_data.st_keywords) + st_dict: dict = cast(dict, cert.pdf_data.st_keywords) st_sars = SARTransformer._parse_sar_dict(st_dict[SAR_DICT_KEY], cert.dgst) else: st_sars = set() if report_keywords_may_have_sars(cert): - report_dict: dict = cast(Dict, cert.pdf_data.report_keywords) + report_dict: dict = cast(dict, cert.pdf_data.report_keywords) report_sars = SARTransformer._parse_sar_dict(report_dict[SAR_DICT_KEY], cert.dgst) else: report_sars = set() diff --git a/src/sec_certs/model/transitive_vulnerability_finder.py b/src/sec_certs/model/transitive_vulnerability_finder.py index 5eafea93..93c1496e 100644 --- a/src/sec_certs/model/transitive_vulnerability_finder.py +++ b/src/sec_certs/model/transitive_vulnerability_finder.py @@ -2,9 +2,10 @@ from __future__ import annotations import logging from collections import Counter +from collections.abc import Callable from dataclasses import dataclass, field from enum import Enum -from typing import Callable, Dict, Optional, Set, TypeVar +from typing import TypeVar from sec_certs.sample.certificate import Certificate, References from sec_certs.serialization.json import ComplexSerializableType @@ -25,8 +26,8 @@ class TransitiveCVEs(ComplexSerializableType): indirect_transitive_cves: set[str] | None = field(default=None) -Certificates = Dict[str, CertSubType] -Vulnerabilities = Dict[str, Dict[str, Optional[Set[str]]]] +Certificates = dict[str, CertSubType] +Vulnerabilities = dict[str, dict[str, set[str] | None]] class TransitiveVulnerabilityFinder: diff --git a/src/sec_certs/sample/cc_scheme.py b/src/sec_certs/sample/cc_scheme.py index bc0c0792..73946cf3 100644 --- a/src/sec_certs/sample/cc_scheme.py +++ b/src/sec_certs/sample/cc_scheme.py @@ -6,11 +6,12 @@ import hashlib import math import tempfile import warnings +from collections.abc import Callable, Iterable from dataclasses import dataclass from datetime import datetime from enum import Enum from pathlib import Path -from typing import Any, Callable, ClassVar, Iterable +from typing import Any, ClassVar from urllib.parse import urljoin import requests diff --git a/src/sec_certs/sample/fips.py b/src/sec_certs/sample/fips.py index e0bcb74a..8e9268cf 100644 --- a/src/sec_certs/sample/fips.py +++ b/src/sec_certs/sample/fips.py @@ -2,10 +2,11 @@ from __future__ import annotations import itertools import re +from collections.abc import Callable from dataclasses import dataclass, field from datetime import date from pathlib import Path -from typing import Any, Callable, ClassVar, Final, Literal +from typing import Any, ClassVar, Final, Literal import dateutil import numpy as np diff --git a/src/sec_certs/sample/fips_iut.py b/src/sec_certs/sample/fips_iut.py index a603a2c2..47fd8524 100644 --- a/src/sec_certs/sample/fips_iut.py +++ b/src/sec_certs/sample/fips_iut.py @@ -1,10 +1,10 @@ from __future__ import annotations +from collections.abc import Iterator, Mapping from dataclasses import dataclass from datetime import date, datetime from pathlib import Path from tempfile import NamedTemporaryFile -from typing import Iterator, Mapping import requests from bs4 import BeautifulSoup, Tag diff --git a/src/sec_certs/sample/fips_mip.py b/src/sec_certs/sample/fips_mip.py index 89c46d01..0720e520 100644 --- a/src/sec_certs/sample/fips_mip.py +++ b/src/sec_certs/sample/fips_mip.py @@ -1,13 +1,13 @@ from __future__ import annotations import logging +from collections.abc import Iterator, Mapping from dataclasses import dataclass from datetime import date, datetime from enum import Enum from functools import total_ordering from pathlib import Path from tempfile import NamedTemporaryFile -from typing import Iterator, Mapping import requests from bs4 import BeautifulSoup, Tag diff --git a/src/sec_certs/serialization/json.py b/src/sec_certs/serialization/json.py index 5add6edc..dad0ebb7 100644 --- a/src/sec_certs/serialization/json.py +++ b/src/sec_certs/serialization/json.py @@ -3,10 +3,11 @@ from __future__ import annotations import copy import gzip import json +from collections.abc import Callable from datetime import date, datetime from functools import wraps from pathlib import Path -from typing import Any, Callable, TypeVar +from typing import Any, TypeVar from sec_certs import constants diff --git a/src/sec_certs/utils/helpers.py b/src/sec_certs/utils/helpers.py index c103a2d3..c0440008 100644 --- a/src/sec_certs/utils/helpers.py +++ b/src/sec_certs/utils/helpers.py @@ -4,11 +4,12 @@ import hashlib import logging import re import time +from collections.abc import Collection from contextlib import nullcontext from datetime import datetime from functools import partial from pathlib import Path -from typing import Any, Collection +from typing import Any import numpy as np import pkgconfig diff --git a/src/sec_certs/utils/parallel_processing.py b/src/sec_certs/utils/parallel_processing.py index ae3f0b44..a30e080b 100644 --- a/src/sec_certs/utils/parallel_processing.py +++ b/src/sec_certs/utils/parallel_processing.py @@ -1,9 +1,10 @@ from __future__ import annotations import time +from collections.abc import Callable, Iterable from multiprocessing import cpu_count from multiprocessing.pool import Pool, ThreadPool -from typing import Any, Callable, Iterable +from typing import Any from sec_certs.configuration import config from sec_certs.utils.tqdm import tqdm diff --git a/src/sec_certs/utils/plot_utils.py b/src/sec_certs/utils/plot_utils.py index b9e7ac7c..eca79070 100644 --- a/src/sec_certs/utils/plot_utils.py +++ b/src/sec_certs/utils/plot_utils.py @@ -1,5 +1,3 @@ -from typing import Dict, List, Tuple - from networkx import DiGraph from pandas import DataFrame @@ -20,8 +18,8 @@ def get_cert_property(df: DataFrame, cert_id: int, column: str) -> str: def get_fips_cert_references_graph( - df: DataFrame, cert_id: int, colour_mapper: Dict[str, str] -) -> Tuple[DiGraph, List[str]]: + df: DataFrame, cert_id: int, colour_mapper: dict[str, str] +) -> tuple[DiGraph, list[str]]: if cert_id not in df["cert_id"].unique(): raise ValueError(f"Cert ID: {cert_id} is not in the dataset") @@ -45,7 +43,7 @@ def get_fips_cert_references_graph( return graph, colour_map -def get_most_referenced_cert_graph(df: DataFrame, status_colour_mapper: Dict[str, str]) -> Tuple[DiGraph, List[str]]: +def get_most_referenced_cert_graph(df: DataFrame, status_colour_mapper: dict[str, str]) -> tuple[DiGraph, list[str]]: graph = DiGraph() colour_map = [] max_referenced_by_num = df["incoming_direct_references_count"].max() @@ -66,7 +64,7 @@ def get_most_referenced_cert_graph(df: DataFrame, status_colour_mapper: Dict[str return graph, colour_map -def get_most_referencing_cert_graph(df: DataFrame, status_colour_mapper: Dict[str, str]) -> Tuple[DiGraph, List[str]]: +def get_most_referencing_cert_graph(df: DataFrame, status_colour_mapper: dict[str, str]) -> tuple[DiGraph, list[str]]: graph = DiGraph() colour_map = [] max_referencing_num = df["outgoing_direct_references_count"].max() diff --git a/src/sec_certs/utils/sanitization.py b/src/sec_certs/utils/sanitization.py index 3563e1f4..17e34362 100644 --- a/src/sec_certs/utils/sanitization.py +++ b/src/sec_certs/utils/sanitization.py @@ -28,7 +28,7 @@ def sanitize_date(record: pd.Timestamp | date | np.datetime64) -> date | None: return None if isinstance(record, pd.Timestamp): return record.date() - if isinstance(record, (date, type(None))): + if isinstance(record, date | type(None)): return record raise ValueError("Unsupported type given as input") |
