Skip to content

Commit 4255995

Browse files
committed
Dump yaml in favor of saneyaml
saneyaml, reorder and refactor imports Signed-off-by: Hritik Vijay <hritikxx8@gmail.com>
1 parent d7d3206 commit 4255995

9 files changed

Lines changed: 31 additions & 34 deletions

File tree

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,5 @@ zipp==0.6.0
5757
requests==2.23.0
5858
toml==0.10.2
5959
PyYAML==5.4
60-
freezegun==1.1.0
60+
freezegun==1.1.0
61+
saneyaml==0.5.2

vulnerabilities/helpers.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828
from typing import List
2929

3030
import requests
31+
import saneyaml
3132
import toml
3233
import urllib3
33-
import yaml
3434
from packageurl import PackageURL
3535
from univers.versions import version_class_by_package_type
3636

@@ -49,7 +49,7 @@ class AffectedPackage:
4949

5050
def load_yaml(path):
5151
with open(path) as f:
52-
return yaml.safe_load(f)
52+
return saneyaml.load(f)
5353

5454

5555
def load_json(path):
@@ -64,7 +64,7 @@ def load_toml(path):
6464

6565
def fetch_yaml(url):
6666
response = requests.get(url)
67-
return yaml.safe_load(response.content)
67+
return saneyaml.load(response.content)
6868

6969

7070
# FIXME: this is NOT how etags work .

vulnerabilities/importers/alpine_linux.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from typing import Set
2929

3030
import requests
31-
import yaml
31+
import saneyaml
3232
from bs4 import BeautifulSoup
3333
from packageurl import PackageURL
3434
from schema import Or
@@ -113,7 +113,7 @@ def updated_advisories(self) -> Set[Advisory]:
113113
def _process_link(self, link) -> List[Advisory]:
114114
advisories = []
115115
yaml_response = requests.get(link).content
116-
record = yaml.safe_load(yaml_response)
116+
record = saneyaml.load(yaml_response)
117117

118118
if record["packages"] is None:
119119
return advisories

vulnerabilities/importers/elixir_security.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,19 @@
1919
# for any legal advice.
2020
# VulnerableCode is a free software tool from nexB Inc. and others.
2121
# Visit https://github.com/nexB/vulnerablecode/ for support and download.
22-
2322
import asyncio
24-
from typing import List, Set
23+
from typing import Set
2524

26-
import yaml
25+
from packageurl import PackageURL
2726
from univers.version_specifier import VersionSpecifier
2827
from univers.versions import SemverVersion
29-
from packageurl import PackageURL
3028

31-
from vulnerabilities.data_source import GitDataSource
3229
from vulnerabilities.data_source import Advisory
30+
from vulnerabilities.data_source import GitDataSource
3331
from vulnerabilities.data_source import Reference
34-
from vulnerabilities.package_managers import HexVersionAPI
3532
from vulnerabilities.helpers import load_yaml
3633
from vulnerabilities.helpers import nearest_patched_package
34+
from vulnerabilities.package_managers import HexVersionAPI
3735

3836

3937
class ElixirSecurityDataSource(GitDataSource):

vulnerabilities/importers/istio.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,21 @@
1919
# for any legal advice.
2020
# VulnerableCode is a free software tool from nexB Inc. and others.
2121
# Visit https://github.com/nexB/vulnerablecode/ for support and download.
22-
2322
import asyncio
2423
import re
25-
from typing import List, Set
26-
import yaml
24+
from typing import List
25+
from typing import Set
2726

27+
import saneyaml
28+
from packageurl import PackageURL
2829
from univers.version_specifier import VersionSpecifier
2930
from univers.versions import SemverVersion
30-
from packageurl import PackageURL
3131

32-
from vulnerabilities.data_source import Advisory, GitDataSource, Reference
33-
from vulnerabilities.package_managers import GitHubTagsAPI
32+
from vulnerabilities.data_source import Advisory
33+
from vulnerabilities.data_source import GitDataSource
34+
from vulnerabilities.data_source import Reference
3435
from vulnerabilities.helpers import nearest_patched_package
36+
from vulnerabilities.package_managers import GitHubTagsAPI
3537

3638
is_release = re.compile(r"^[\d.]+$", re.IGNORECASE).match
3739

@@ -89,7 +91,7 @@ def get_data_from_yaml_lines(self, yaml_lines):
8991
'cves': '[CVE-2019-12243]'}
9092
"""
9193

92-
return yaml.safe_load("\n".join(yaml_lines))
94+
return saneyaml.load("\n".join(yaml_lines))
9395

9496
def get_yaml_lines(self, lines):
9597
"""The istio advisory file contains lines similar to yaml format .

vulnerabilities/importers/suse_backports.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,12 @@
1919
# for any legal advice.
2020
# VulnerableCode is a free software code scanning tool from nexB Inc. and others.
2121
# Visit https://github.com/nexB/vulnerablecode/ for support and download.
22-
23-
import yaml
2422
import dataclasses
2523

2624
import requests
27-
from packageurl import PackageURL
25+
import saneyaml
2826
from bs4 import BeautifulSoup
27+
from packageurl import PackageURL
2928

3029
from vulnerabilities.data_source import Advisory
3130
from vulnerabilities.data_source import DataSource
@@ -65,7 +64,7 @@ def _fetch_yaml(self, url):
6564
try:
6665
resp = requests.get(url)
6766
resp.raise_for_status()
68-
return yaml.safe_load(resp.content)
67+
return saneyaml.load(resp.content)
6968

7069
except requests.HTTPError:
7170
return {}

vulnerabilities/importers/suse_scores.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,23 +45,23 @@ def to_advisory(score_data):
4545
for cvss_score in score_data[cve_id]["cvss"]:
4646
score = None
4747
vector = None
48-
if cvss_score["version"] == 2.0:
48+
if cvss_score["version"] == "2.0":
4949
score = VulnerabilitySeverity(
5050
system=scoring_systems["cvssv2"], value=str(cvss_score["score"])
5151
)
5252
vector = VulnerabilitySeverity(
5353
system=scoring_systems["cvssv2_vector"], value=str(cvss_score["vector"])
5454
)
5555

56-
elif cvss_score["version"] == 3:
56+
elif cvss_score["version"] == "3":
5757
score = VulnerabilitySeverity(
5858
system=scoring_systems["cvssv3"], value=str(cvss_score["score"])
5959
)
6060
vector = VulnerabilitySeverity(
6161
system=scoring_systems["cvssv3_vector"], value=str(cvss_score["vector"])
6262
)
6363

64-
elif cvss_score["version"] == 3.1:
64+
elif cvss_score["version"] == "3.1":
6565
score = VulnerabilitySeverity(
6666
system=scoring_systems["cvssv3.1"], value=str(cvss_score["score"])
6767
)

vulnerabilities/tests/test_alpine.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,13 @@
2020
# for any legal advice.
2121
# VulnerableCode is a free software tool from nexB Inc. and others.
2222
# Visit https://github.com/nexB/vulnerablecode/ for support and download.
23-
2423
import os
25-
import yaml
2624
from unittest import TestCase
27-
from unittest.mock import patch, MagicMock
28-
29-
from packageurl import PackageURL
25+
from unittest.mock import MagicMock
26+
from unittest.mock import patch
3027

31-
from vulnerabilities.data_source import Advisory, Reference
28+
from vulnerabilities.data_source import Advisory
29+
from vulnerabilities.data_source import Reference
3230
from vulnerabilities.importers.alpine_linux import AlpineDataSource
3331

3432

vulnerabilities/tests/test_istio.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
# VulnerableCode is a free software tool from nexB Inc. and others.
2121
# Visit https://github.com/nexB/vulnerablecode/ for support and download.
2222

23-
import datetime
2423
import os
2524
from collections import OrderedDict
2625
from unittest import TestCase
@@ -70,7 +69,7 @@ def test_get_data_from_md(self):
7069
"cvss": "8.9",
7170
"vector": "CVSS:3.0/AV:A/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N/E:H/RL:O/RC:C",
7271
"releases": ["1.1 to 1.1.15", "1.2 to 1.2.6", "1.3 to 1.3.1"],
73-
"publishdate": datetime.date(2019, 5, 28),
72+
"publishdate": "2019-05-28",
7473
}
7574

7675
assert expected_data == actual_data

0 commit comments

Comments
 (0)