diff options
| author | Adam Janovsky | 2025-03-10 08:12:53 +0100 |
|---|---|---|
| committer | Adam Janovsky | 2025-03-10 08:12:53 +0100 |
| commit | 66d4cae9fe932d4d341cf8b09e9709ade8c6effa (patch) | |
| tree | 04e27392c5e496a793870b35bcae625c396b2869 /src | |
| parent | c0288b91aaf6222d618b4b068b2fb78f75e3aa4a (diff) | |
| parent | 035fc93d285608cf4fbb56539866bfc7352976cf (diff) | |
| download | sec-certs-66d4cae9fe932d4d341cf8b09e9709ade8c6effa.tar.gz sec-certs-66d4cae9fe932d4d341cf8b09e9709ade8c6effa.tar.zst sec-certs-66d4cae9fe932d4d341cf8b09e9709ade8c6effa.zip | |
merge main
Diffstat (limited to 'src')
| -rw-r--r-- | src/sec_certs/constants.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/dataset/auxiliary_dataset_handling.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/dataset/cc.py | 16 | ||||
| -rw-r--r-- | src/sec_certs/dataset/fips.py | 10 | ||||
| -rw-r--r-- | src/sec_certs/dataset/protection_profile.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/heuristics/cc.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/heuristics/common.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/heuristics/fips.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/model/references_nlp/evaluation.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/model/references_nlp/feature_extraction.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/model/references_nlp/training.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/sample/document_state.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/serialization/pandas.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/utils/cc_html_parsing.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/utils/label_studio_utils.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/utils/nvd_dataset_builder.py | 21 | ||||
| -rw-r--r-- | src/sec_certs/utils/plot_utils.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/utils/profiling.py | 2 | ||||
| -rw-r--r-- | src/sec_certs/utils/tqdm.py | 2 |
19 files changed, 63 insertions, 16 deletions
diff --git a/src/sec_certs/constants.py b/src/sec_certs/constants.py index 5626f999..fc3dd3a5 100644 --- a/src/sec_certs/constants.py +++ b/src/sec_certs/constants.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import re from typing import Final, Literal diff --git a/src/sec_certs/dataset/auxiliary_dataset_handling.py b/src/sec_certs/dataset/auxiliary_dataset_handling.py index cd67f929..0fc6de15 100644 --- a/src/sec_certs/dataset/auxiliary_dataset_handling.py +++ b/src/sec_certs/dataset/auxiliary_dataset_handling.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import gzip import itertools import json diff --git a/src/sec_certs/dataset/cc.py b/src/sec_certs/dataset/cc.py index fa95f5cf..fdd0d48d 100644 --- a/src/sec_certs/dataset/cc.py +++ b/src/sec_certs/dataset/cc.py @@ -101,12 +101,16 @@ class CCDataset(Dataset[CCCertificate], ComplexSerializableType): super().__init__(certs, root_dir, name, description, state, aux_handlers) if aux_handlers is None: self.aux_handlers = { - CPEDatasetHandler: CPEDatasetHandler(self.auxiliary_datasets_dir), - CVEDatasetHandler: CVEDatasetHandler(self.auxiliary_datasets_dir), - CPEMatchDictHandler: CPEMatchDictHandler(self.auxiliary_datasets_dir), - CCSchemeDatasetHandler: CCSchemeDatasetHandler(self.auxiliary_datasets_dir), - ProtectionProfileDatasetHandler: ProtectionProfileDatasetHandler(self.auxiliary_datasets_dir), - CCMaintenanceUpdateDatasetHandler: CCMaintenanceUpdateDatasetHandler(self.auxiliary_datasets_dir), + CPEDatasetHandler: CPEDatasetHandler(self.auxiliary_datasets_dir if self.is_backed else None), + CVEDatasetHandler: CVEDatasetHandler(self.auxiliary_datasets_dir if self.is_backed else None), + CPEMatchDictHandler: CPEMatchDictHandler(self.auxiliary_datasets_dir if self.is_backed else None), + CCSchemeDatasetHandler: CCSchemeDatasetHandler(self.auxiliary_datasets_dir if self.is_backed else None), + ProtectionProfileDatasetHandler: ProtectionProfileDatasetHandler( + self.auxiliary_datasets_dir if self.is_backed else None + ), + CCMaintenanceUpdateDatasetHandler: CCMaintenanceUpdateDatasetHandler( + self.auxiliary_datasets_dir if self.is_backed else None + ), } def to_pandas(self) -> pd.DataFrame: diff --git a/src/sec_certs/dataset/fips.py b/src/sec_certs/dataset/fips.py index a64ca3d7..0f756b0a 100644 --- a/src/sec_certs/dataset/fips.py +++ b/src/sec_certs/dataset/fips.py @@ -68,10 +68,12 @@ class FIPSDataset(Dataset[FIPSCertificate], ComplexSerializableType): super().__init__(certs, root_dir, name, description, state, aux_handlers) if aux_handlers is None: self.aux_handlers = { - CPEDatasetHandler: CPEDatasetHandler(self.auxiliary_datasets_dir), - CVEDatasetHandler: CVEDatasetHandler(self.auxiliary_datasets_dir), - FIPSAlgorithmDatasetHandler: FIPSAlgorithmDatasetHandler(self.auxiliary_datasets_dir), - CPEMatchDictHandler: CPEMatchDictHandler(self.auxiliary_datasets_dir), + CPEDatasetHandler: CPEDatasetHandler(self.auxiliary_datasets_dir if self.is_backed else None), + CVEDatasetHandler: CVEDatasetHandler(self.auxiliary_datasets_dir if self.is_backed else None), + FIPSAlgorithmDatasetHandler: FIPSAlgorithmDatasetHandler( + self.auxiliary_datasets_dir if self.is_backed else None + ), + CPEMatchDictHandler: CPEMatchDictHandler(self.auxiliary_datasets_dir if self.is_backed else None), } LIST_OF_CERTS_HTML: Final[dict[str, str]] = { diff --git a/src/sec_certs/dataset/protection_profile.py b/src/sec_certs/dataset/protection_profile.py index 40113c87..d5b9363c 100644 --- a/src/sec_certs/dataset/protection_profile.py +++ b/src/sec_certs/dataset/protection_profile.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import shutil from pathlib import Path from typing import ClassVar, Literal diff --git a/src/sec_certs/heuristics/cc.py b/src/sec_certs/heuristics/cc.py index 435c69ed..c881019d 100644 --- a/src/sec_certs/heuristics/cc.py +++ b/src/sec_certs/heuristics/cc.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging import re from collections.abc import Iterable diff --git a/src/sec_certs/heuristics/common.py b/src/sec_certs/heuristics/common.py index 8a2b4769..21d5f514 100644 --- a/src/sec_certs/heuristics/common.py +++ b/src/sec_certs/heuristics/common.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import itertools import logging import re diff --git a/src/sec_certs/heuristics/fips.py b/src/sec_certs/heuristics/fips.py index 4abecc4e..4b38c2d3 100644 --- a/src/sec_certs/heuristics/fips.py +++ b/src/sec_certs/heuristics/fips.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging from sec_certs.model.reference_finder import ReferenceFinder diff --git a/src/sec_certs/model/references_nlp/evaluation.py b/src/sec_certs/model/references_nlp/evaluation.py index ed3b2700..296de790 100644 --- a/src/sec_certs/model/references_nlp/evaluation.py +++ b/src/sec_certs/model/references_nlp/evaluation.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging from pathlib import Path from typing import Literal diff --git a/src/sec_certs/model/references_nlp/feature_extraction.py b/src/sec_certs/model/references_nlp/feature_extraction.py index 996972d7..c8a04acf 100644 --- a/src/sec_certs/model/references_nlp/feature_extraction.py +++ b/src/sec_certs/model/references_nlp/feature_extraction.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import itertools import logging import re diff --git a/src/sec_certs/model/references_nlp/training.py b/src/sec_certs/model/references_nlp/training.py index e0abe94f..8d3a7046 100644 --- a/src/sec_certs/model/references_nlp/training.py +++ b/src/sec_certs/model/references_nlp/training.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging import os diff --git a/src/sec_certs/sample/document_state.py b/src/sec_certs/sample/document_state.py index a2cf1769..ef598c5e 100644 --- a/src/sec_certs/sample/document_state.py +++ b/src/sec_certs/sample/document_state.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from dataclasses import dataclass from pathlib import Path diff --git a/src/sec_certs/serialization/pandas.py b/src/sec_certs/serialization/pandas.py index dc0aae18..06aff355 100644 --- a/src/sec_certs/serialization/pandas.py +++ b/src/sec_certs/serialization/pandas.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from abc import ABC, abstractmethod diff --git a/src/sec_certs/utils/cc_html_parsing.py b/src/sec_certs/utils/cc_html_parsing.py index 956353bf..2603b3ce 100644 --- a/src/sec_certs/utils/cc_html_parsing.py +++ b/src/sec_certs/utils/cc_html_parsing.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import logging from datetime import datetime from typing import Any diff --git a/src/sec_certs/utils/label_studio_utils.py b/src/sec_certs/utils/label_studio_utils.py index 9c70b938..82d663be 100644 --- a/src/sec_certs/utils/label_studio_utils.py +++ b/src/sec_certs/utils/label_studio_utils.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import json import logging from pathlib import Path diff --git a/src/sec_certs/utils/nvd_dataset_builder.py b/src/sec_certs/utils/nvd_dataset_builder.py index bffde677..102d78b1 100644 --- a/src/sec_certs/utils/nvd_dataset_builder.py +++ b/src/sec_certs/utils/nvd_dataset_builder.py @@ -5,6 +5,7 @@ import logging import math import random import time +import typing from abc import ABC, abstractmethod from dataclasses import dataclass, field from datetime import datetime @@ -16,13 +17,15 @@ import requests from requests import RequestException, Response from sec_certs import constants -from sec_certs.dataset.cpe import CPEDataset, CPEMatchDict -from sec_certs.dataset.cve import CVEDataset + +if typing.TYPE_CHECKING: + from sec_certs.dataset.cpe import CPEDataset, CPEMatchDict + from sec_certs.dataset.cve import CVEDataset from sec_certs.utils.parallel_processing import process_parallel logger = logging.getLogger(__name__) -DatasetType = TypeVar("DatasetType", CPEDataset, CVEDataset, CPEMatchDict) +DatasetType = TypeVar("DatasetType", "CPEDataset", "CVEDataset", "CPEMatchDict") @dataclass @@ -282,7 +285,7 @@ class NvdDatasetBuilder(Generic[DatasetType], ABC): return self._process_responses(self._ok_responses, dataset_to_fill) -class CpeNvdDatasetBuilder(NvdDatasetBuilder[CPEDataset]): +class CpeNvdDatasetBuilder(NvdDatasetBuilder["CPEDataset"]): _ENDPOINT: Final[str] = "CPE" _ENDPOINT_URL: Final[str] = "https://services.nvd.nist.gov/rest/json/cpes/2.0" _RESULTS_PER_PAGE: Final[int] = 10000 @@ -298,10 +301,12 @@ class CpeNvdDatasetBuilder(NvdDatasetBuilder[CPEDataset]): @staticmethod def _init_new_dataset() -> CPEDataset: + from sec_certs.dataset.cpe import CPEDataset + return CPEDataset() -class CveNvdDatasetBuilder(NvdDatasetBuilder[CVEDataset]): +class CveNvdDatasetBuilder(NvdDatasetBuilder["CVEDataset"]): _ENDPOINT: Final[str] = "CVE" _ENDPOINT_URL: Final[str] = "https://services.nvd.nist.gov/rest/json/cves/2.0" _RESULTS_PER_PAGE: Final[int] = 2000 @@ -317,10 +322,12 @@ class CveNvdDatasetBuilder(NvdDatasetBuilder[CVEDataset]): @staticmethod def _init_new_dataset() -> CVEDataset: + from sec_certs.dataset.cve import CVEDataset + return CVEDataset() -class CpeMatchNvdDatasetBuilder(NvdDatasetBuilder[CPEMatchDict]): +class CpeMatchNvdDatasetBuilder(NvdDatasetBuilder["CPEMatchDict"]): _ENDPOINT: Final[str] = "CPEMatch" _ENDPOINT_URL: Final[str] = "https://services.nvd.nist.gov/rest/json/cpematch/2.0" _RESULTS_PER_PAGE: Final[int] = 500 @@ -362,4 +369,6 @@ class CpeMatchNvdDatasetBuilder(NvdDatasetBuilder[CPEMatchDict]): @staticmethod def _init_new_dataset() -> CPEMatchDict: + from sec_certs.dataset.cpe import CPEMatchDict + return CPEMatchDict({"timestamp": datetime.fromtimestamp(0).isoformat(), "match_strings": {}}) diff --git a/src/sec_certs/utils/plot_utils.py b/src/sec_certs/utils/plot_utils.py index eca79070..f289cc06 100644 --- a/src/sec_certs/utils/plot_utils.py +++ b/src/sec_certs/utils/plot_utils.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from networkx import DiGraph from pandas import DataFrame diff --git a/src/sec_certs/utils/profiling.py b/src/sec_certs/utils/profiling.py index 7da67070..4c7d0911 100644 --- a/src/sec_certs/utils/profiling.py +++ b/src/sec_certs/utils/profiling.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import gc from contextlib import contextmanager from datetime import datetime diff --git a/src/sec_certs/utils/tqdm.py b/src/sec_certs/utils/tqdm.py index 0a23903f..c7c8958b 100644 --- a/src/sec_certs/utils/tqdm.py +++ b/src/sec_certs/utils/tqdm.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from tqdm.auto import tqdm as tqdm_original from sec_certs.configuration import config |
