Skip to content

Commit 617ebc0

Browse files
Previous commit ommitted the actual patches for #44, #42, #41, #40
1 parent 1150550 commit 617ebc0

3 files changed

Lines changed: 27 additions & 13 deletions

File tree

src/metacheck/scripts/pitfalls/p002.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
def extract_license_from_file(somef_data: Dict) -> Optional[Dict[str, str]]:
66
"""
7-
Extract license content from LICENSE.md file in SoMEF output.
7+
Extract license content from LICENSE file in SoMEF output.
88
Returns a dict with source and content, or None if not found.
99
"""
1010
if "license" not in somef_data:
@@ -48,6 +48,8 @@ def check_license_template_placeholders(license_content: str) -> bool:
4848
r'\[copyright holder\]',
4949
r'<yyyy>',
5050
r'<name of copyright owner>',
51+
r'\[yyyy\]',
52+
r'\[name of copyright owner\]',
5153
]
5254

5355
content_lower = license_content.lower()

src/metacheck/scripts/pitfalls/p008.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ def is_valid_url_format(url: str) -> bool:
1515
if not url or not isinstance(url, str):
1616
return False
1717

18+
if url.startswith(('git+', 'git://', 'svn+', 'hg+', 'bzr+')):
19+
return True
20+
1821
try:
1922
result = urlparse(url)
2023
return all([result.scheme, result.netloc])

src/metacheck/scripts/warnings/w001.py

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,33 @@
22
from metacheck.utils.pitfall_utils import extract_metadata_source_filename
33

44

5-
def extract_requirements_from_metadata(somef_data: Dict) -> Optional[Dict]:
5+
def extract_requirements_from_metadata(somef_data: Dict) -> List[Dict]:
66
"""
77
Extract requirements from metadata files in SoMEF output.
8-
Returns a dict with source, requirements info, or None if not found.
8+
Returns a list of dicts with source and requirements info.
99
"""
1010
if "requirements" not in somef_data:
11-
return None
11+
return []
1212

1313
requirements_entries = somef_data["requirements"]
1414
if not isinstance(requirements_entries, list):
15-
return None
15+
return []
1616

1717
metadata_sources = ["codemeta.json", "DESCRIPTION", "composer.json", "package.json", "pom.xml", "pyproject.toml",
1818
"requirements.txt", "setup.py"]
1919

20+
results = []
2021
for entry in requirements_entries:
2122
if "source" in entry:
2223
source = entry["source"]
2324
if any(meta_file in source for meta_file in metadata_sources):
2425
if "result" in entry:
25-
return {
26+
results.append({
2627
"source": source,
2728
"requirement": entry["result"]
28-
}
29+
})
2930

30-
return None
31+
return results
3132

3233

3334
def check_requirement_has_version(requirement: Dict) -> bool:
@@ -97,19 +98,27 @@ def detect_unversioned_requirements(somef_data: Dict, file_name: str) -> Dict:
9798
"percentage_unversioned": 0.0
9899
}
99100

100-
requirements_data = extract_requirements_from_metadata(somef_data)
101+
requirements_data_list = extract_requirements_from_metadata(somef_data)
101102

102-
if not requirements_data:
103+
if not requirements_data_list:
103104
return result
104105

105-
result["metadata_source"] = requirements_data["source"]
106+
result["metadata_source"] = requirements_data_list[0]["source"]
107+
result["metadata_source_file"] = extract_metadata_source_filename(requirements_data_list[0]["source"])
106108

107-
total_reqs, unversioned_count, unversioned_names = analyze_requirements_versions(requirements_data)
109+
total_reqs = 0
110+
unversioned_count = 0
111+
unversioned_names = []
112+
113+
for req_data in requirements_data_list:
114+
cur_total, cur_unversioned, cur_names = analyze_requirements_versions(req_data)
115+
total_reqs += cur_total
116+
unversioned_count += cur_unversioned
117+
unversioned_names.extend(cur_names)
108118

109119
result["total_requirements"] = total_reqs
110120
result["unversioned_count"] = unversioned_count
111121
result["unversioned_requirements"] = unversioned_names
112-
result["metadata_source_file"] = extract_metadata_source_filename(requirements_data["source"])
113122

114123
if total_reqs > 0:
115124
result["percentage_unversioned"] = round((unversioned_count / total_reqs) * 100, 2)

0 commit comments

Comments
 (0)