aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAdam Janovsky2025-03-10 08:12:53 +0100
committerAdam Janovsky2025-03-10 08:12:53 +0100
commit66d4cae9fe932d4d341cf8b09e9709ade8c6effa (patch)
tree04e27392c5e496a793870b35bcae625c396b2869 /src
parentc0288b91aaf6222d618b4b068b2fb78f75e3aa4a (diff)
parent035fc93d285608cf4fbb56539866bfc7352976cf (diff)
downloadsec-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.py2
-rw-r--r--src/sec_certs/dataset/auxiliary_dataset_handling.py2
-rw-r--r--src/sec_certs/dataset/cc.py16
-rw-r--r--src/sec_certs/dataset/fips.py10
-rw-r--r--src/sec_certs/dataset/protection_profile.py2
-rw-r--r--src/sec_certs/heuristics/cc.py2
-rw-r--r--src/sec_certs/heuristics/common.py2
-rw-r--r--src/sec_certs/heuristics/fips.py2
-rw-r--r--src/sec_certs/model/references_nlp/evaluation.py2
-rw-r--r--src/sec_certs/model/references_nlp/feature_extraction.py2
-rw-r--r--src/sec_certs/model/references_nlp/training.py2
-rw-r--r--src/sec_certs/sample/document_state.py2
-rw-r--r--src/sec_certs/serialization/pandas.py2
-rw-r--r--src/sec_certs/utils/cc_html_parsing.py2
-rw-r--r--src/sec_certs/utils/label_studio_utils.py2
-rw-r--r--src/sec_certs/utils/nvd_dataset_builder.py21
-rw-r--r--src/sec_certs/utils/plot_utils.py2
-rw-r--r--src/sec_certs/utils/profiling.py2
-rw-r--r--src/sec_certs/utils/tqdm.py2
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