aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorAdam Janovsky2023-04-19 11:50:33 +0200
committerAdam Janovsky2023-04-19 11:50:33 +0200
commite08e69095aa98f84b45cac31ebff5687b5b4295e (patch)
treec444f92c47c3bd2ce466f5eaa9b7572546775a83 /src
parent88f46304f3d679b17e2f41b79134cd046e2ed732 (diff)
downloadsec-certs-e08e69095aa98f84b45cac31ebff5687b5b4295e.tar.gz
sec-certs-e08e69095aa98f84b45cac31ebff5687b5b4295e.tar.zst
sec-certs-e08e69095aa98f84b45cac31ebff5687b5b4295e.zip
replace some ifs with dictionaray setdefault
Diffstat (limited to 'src')
-rw-r--r--src/sec_certs/dataset/cpe.py7
-rw-r--r--src/sec_certs/dataset/cve.py5
-rw-r--r--src/sec_certs/model/cpe_matching.py5
-rw-r--r--src/sec_certs/serialization/json.py4
4 files changed, 6 insertions, 15 deletions
diff --git a/src/sec_certs/dataset/cpe.py b/src/sec_certs/dataset/cpe.py
index 62f4d500..aadac766 100644
--- a/src/sec_certs/dataset/cpe.py
+++ b/src/sec_certs/dataset/cpe.py
@@ -117,11 +117,8 @@ class CPEDataset(JSONPathDataset, ComplexSerializableType):
return pd.DataFrame([x.pandas_tuple for x in self], columns=CPE.pandas_columns).set_index("uri")
def get_title_to_cpes_dict(self) -> dict[str, set[CPE]]:
- title_to_cpes_dict = {}
+ title_to_cpes_dict: dict[str, set[CPE]] = {}
for cpe in self:
if cpe.title:
- if cpe.title not in title_to_cpes_dict:
- title_to_cpes_dict[cpe.title] = {cpe}
- else:
- title_to_cpes_dict[cpe.title].add(cpe)
+ title_to_cpes_dict.setdefault(cpe.title, set()).add(cpe)
return title_to_cpes_dict
diff --git a/src/sec_certs/dataset/cve.py b/src/sec_certs/dataset/cve.py
index 4e94a5d9..8bf3b40e 100644
--- a/src/sec_certs/dataset/cve.py
+++ b/src/sec_certs/dataset/cve.py
@@ -138,10 +138,7 @@ class CVEDataset(JSONPathDataset, ComplexSerializableType):
continue
for cpe_uri in vulnerable_cpe_uris:
- if cpe_uri in self._cpe_uri_to_cve_ids_lookup:
- self._cpe_uri_to_cve_ids_lookup[cpe_uri].add(cve.cve_id)
- else:
- self._cpe_uri_to_cve_ids_lookup[cpe_uri] = {cve.cve_id}
+ self._cpe_uri_to_cve_ids_lookup.setdefault(cpe_uri, set()).add(cve.cve_id)
def _get_cves_from_exactly_matched_cpes(self, cpe_uris: set[str]) -> set[str]:
return set(
diff --git a/src/sec_certs/model/cpe_matching.py b/src/sec_certs/model/cpe_matching.py
index 3015aeaa..1a02008b 100644
--- a/src/sec_certs/model/cpe_matching.py
+++ b/src/sec_certs/model/cpe_matching.py
@@ -70,10 +70,7 @@ class CPEClassifier:
for cpe in tqdm(sufficiently_long_cpes, desc="Fitting the CPE classifier"):
self.vendor_to_versions_[cpe.vendor].add(cpe.version)
- if (cpe.vendor, cpe.version) not in self.vendor_version_to_cpe_:
- self.vendor_version_to_cpe_[(cpe.vendor, cpe.version)] = {cpe}
- else:
- self.vendor_version_to_cpe_[(cpe.vendor, cpe.version)].add(cpe)
+ self.vendor_version_to_cpe_.setdefault((cpe.vendor, cpe.version), set()).add(cpe)
def predict(self, X: list[tuple[str, str, str]]) -> list[set[str] | None]:
"""
diff --git a/src/sec_certs/serialization/json.py b/src/sec_certs/serialization/json.py
index 7f86ab3b..314352bb 100644
--- a/src/sec_certs/serialization/json.py
+++ b/src/sec_certs/serialization/json.py
@@ -95,7 +95,7 @@ class ComplexSerializableType:
# Decorator for serialization
def serialize(func: Callable):
@wraps(func)
- def inner_func(*args, **kwargs):
+ def _serialize(*args, **kwargs):
if not args or not issubclass(type(args[0]), ComplexSerializableType):
raise ValueError(
"@serialize decorator is to be used only on instance methods of ComplexSerializableType child classes."
@@ -112,7 +112,7 @@ def serialize(func: Callable):
args[0].to_json()
return result
- return inner_func
+ return _serialize
def get_class_fullname(obj: Any) -> str: