troubadix 26.1.0__py3-none-any.whl → 26.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- troubadix/__version__.py +1 -1
- troubadix/helper/date_format.py +2 -3
- troubadix/plugins/copyright_text.py +1 -1
- troubadix/plugins/dependencies.py +1 -1
- troubadix/plugins/dependency_category_order.py +1 -1
- troubadix/plugins/deprecated_dependency.py +2 -2
- troubadix/plugins/deprecated_functions.py +2 -3
- troubadix/plugins/duplicated_script_tags.py +1 -2
- troubadix/plugins/grammar.py +4 -6
- troubadix/plugins/http_links_in_tags.py +2 -3
- troubadix/plugins/illegal_characters.py +1 -2
- troubadix/plugins/multiple_re_parameters.py +0 -1
- troubadix/plugins/overlong_description_lines.py +1 -1
- troubadix/plugins/overlong_script_tags.py +9 -14
- troubadix/plugins/qod.py +0 -1
- troubadix/plugins/script_calls_recommended.py +1 -1
- troubadix/plugins/script_family.py +1 -1
- troubadix/plugins/script_tag_whitespaces.py +1 -2
- troubadix/plugins/script_tags_mandatory.py +1 -1
- troubadix/plugins/script_version_and_last_modification_tags.py +1 -1
- troubadix/plugins/security_messages.py +2 -4
- troubadix/plugins/severity_date.py +0 -1
- troubadix/plugins/severity_format.py +0 -1
- troubadix/plugins/severity_origin.py +0 -1
- troubadix/plugins/spaces_before_dots.py +0 -1
- troubadix/plugins/spaces_in_filename.py +1 -1
- troubadix/plugins/trailing_spaces_tabs.py +1 -1
- troubadix/plugins/valid_script_tag_names.py +1 -1
- troubadix/reporter.py +2 -3
- troubadix/standalone_plugins/allowed_rev_diff.py +2 -2
- troubadix/standalone_plugins/changed_creation_date.py +1 -5
- troubadix/standalone_plugins/changed_oid.py +1 -2
- troubadix/standalone_plugins/changed_packages/package.py +12 -3
- troubadix/standalone_plugins/file_extensions.py +1 -1
- troubadix/standalone_plugins/no_solution.py +2 -4
- troubadix/standalone_plugins/util.py +0 -2
- troubadix/standalone_plugins/version_updated.py +1 -2
- {troubadix-26.1.0.dist-info → troubadix-26.2.0.dist-info}/METADATA +1 -1
- {troubadix-26.1.0.dist-info → troubadix-26.2.0.dist-info}/RECORD +42 -42
- {troubadix-26.1.0.dist-info → troubadix-26.2.0.dist-info}/WHEEL +1 -1
- {troubadix-26.1.0.dist-info → troubadix-26.2.0.dist-info}/entry_points.txt +0 -0
- {troubadix-26.1.0.dist-info → troubadix-26.2.0.dist-info}/licenses/LICENSE +0 -0
troubadix/__version__.py
CHANGED
troubadix/helper/date_format.py
CHANGED
|
@@ -56,7 +56,7 @@ def check_date(date: str, date_name: str, file: str, plugin: str) -> Iterator[Li
|
|
|
56
56
|
elif week_day_str != week_day_parsed:
|
|
57
57
|
formatted_date = week_day_parsed
|
|
58
58
|
yield LinterError(
|
|
59
|
-
f"Wrong day of week. Please change it from '{week_day_str}
|
|
59
|
+
f"Wrong day of week. Please change it from '{week_day_str}' to '{formatted_date}'.",
|
|
60
60
|
file=file,
|
|
61
61
|
plugin=plugin,
|
|
62
62
|
)
|
|
@@ -65,7 +65,6 @@ def check_date(date: str, date_name: str, file: str, plugin: str) -> Iterator[Li
|
|
|
65
65
|
def compare_date_with_last_modification_date(
|
|
66
66
|
date: str, date_name: str, last_mod_date: str, file: str, plugin: str
|
|
67
67
|
) -> Iterator[LinterResult]:
|
|
68
|
-
|
|
69
68
|
yield from check_date(
|
|
70
69
|
last_mod_date,
|
|
71
70
|
"last_modification",
|
|
@@ -76,7 +75,7 @@ def compare_date_with_last_modification_date(
|
|
|
76
75
|
try:
|
|
77
76
|
if parse_date(date) > parse_date(last_mod_date):
|
|
78
77
|
yield LinterError(
|
|
79
|
-
f"The {date_name} must not be greater than
|
|
78
|
+
f"The {date_name} must not be greater than last_modification date.",
|
|
80
79
|
file=file,
|
|
81
80
|
plugin=plugin,
|
|
82
81
|
)
|
|
@@ -101,7 +101,7 @@ class CheckCopyrightText(FileContentPlugin):
|
|
|
101
101
|
nasl_file.write_text(data=self.new_file_content, encoding=CURRENT_ENCODING)
|
|
102
102
|
|
|
103
103
|
yield LinterFix(
|
|
104
|
-
f"The copyright statement has been updated to
|
|
104
|
+
f"The copyright statement has been updated to {CORRECT_COPYRIGHT_PHRASE}",
|
|
105
105
|
file=nasl_file,
|
|
106
106
|
plugin=self.name,
|
|
107
107
|
)
|
|
@@ -77,7 +77,7 @@ class CheckDependencies(FilePlugin):
|
|
|
77
77
|
for dep in split_dependencies(match.group("value")):
|
|
78
78
|
if not any((root / vers / dep).exists() for vers in FEED_VERSIONS):
|
|
79
79
|
yield LinterError(
|
|
80
|
-
f"The script dependency {dep} could not
|
|
80
|
+
f"The script dependency {dep} could not be found within the VTs.",
|
|
81
81
|
file=self.context.nasl_file,
|
|
82
82
|
plugin=self.name,
|
|
83
83
|
)
|
|
@@ -132,7 +132,7 @@ class CheckDependencyCategoryOrder(FileContentPlugin):
|
|
|
132
132
|
|
|
133
133
|
if not dependency_path:
|
|
134
134
|
yield LinterError(
|
|
135
|
-
f"The script dependency {dep} could not
|
|
135
|
+
f"The script dependency {dep} could not be found within the VTs.",
|
|
136
136
|
file=nasl_file,
|
|
137
137
|
plugin=self.name,
|
|
138
138
|
)
|
|
@@ -78,7 +78,7 @@ class CheckDeprecatedDependency(FilePlugin):
|
|
|
78
78
|
|
|
79
79
|
if not dependency_path:
|
|
80
80
|
yield LinterError(
|
|
81
|
-
f"The script dependency {dep} could not
|
|
81
|
+
f"The script dependency {dep} could not be found within the VTs.",
|
|
82
82
|
file=self.context.nasl_file,
|
|
83
83
|
plugin=self.name,
|
|
84
84
|
)
|
|
@@ -88,7 +88,7 @@ class CheckDeprecatedDependency(FilePlugin):
|
|
|
88
88
|
dependency_deprecated = deprecated_pattern.search(dependency_content)
|
|
89
89
|
if dependency_deprecated:
|
|
90
90
|
yield LinterError(
|
|
91
|
-
f"VT depends on {dep}, which is marked
|
|
91
|
+
f"VT depends on {dep}, which is marked as deprecated.",
|
|
92
92
|
file=self.context.nasl_file,
|
|
93
93
|
plugin=self.name,
|
|
94
94
|
)
|
|
@@ -44,8 +44,7 @@ class CheckDeprecatedFunctions(FilePlugin):
|
|
|
44
44
|
deprecated_functions = {
|
|
45
45
|
'script_summary();, use script_tag(name:"summary", value:""); '
|
|
46
46
|
"instead": r"script_summary\s*\([^)]*\);",
|
|
47
|
-
"script_id();, use script_oid(); with "
|
|
48
|
-
"the full OID instead": r"script_id\s*\([0-9]+\);",
|
|
47
|
+
"script_id();, use script_oid(); with the full OID instead": r"script_id\s*\([0-9]+\);",
|
|
49
48
|
"security_note();": r"security_note\s*\([^)]*\);",
|
|
50
49
|
"security_warning();": r"security_warning\s*\([^)]*\);",
|
|
51
50
|
"security_hole();": r"security_hole\s*\([^)]*\);",
|
|
@@ -58,7 +57,7 @@ class CheckDeprecatedFunctions(FilePlugin):
|
|
|
58
57
|
for description, pattern in deprecated_functions.items():
|
|
59
58
|
if re.search(pattern, self.context.file_content, re.MULTILINE):
|
|
60
59
|
yield LinterError(
|
|
61
|
-
"Found a deprecated function call / description item:
|
|
60
|
+
f"Found a deprecated function call / description item: {description}",
|
|
62
61
|
file=self.context.nasl_file,
|
|
63
62
|
plugin=self.name,
|
|
64
63
|
)
|
|
@@ -81,8 +81,7 @@ class CheckDuplicatedScriptTags(FilePlugin):
|
|
|
81
81
|
match = list(match)
|
|
82
82
|
if len(match) > 1:
|
|
83
83
|
yield LinterError(
|
|
84
|
-
f"The VT is using the script tag '{tag.value}' "
|
|
85
|
-
"multiple number of times.",
|
|
84
|
+
f"The VT is using the script tag '{tag.value}' multiple number of times.",
|
|
86
85
|
file=self.context.nasl_file,
|
|
87
86
|
plugin=self.name,
|
|
88
87
|
)
|
troubadix/plugins/grammar.py
CHANGED
|
@@ -65,7 +65,7 @@ exceptions = [
|
|
|
65
65
|
# nb: Valid sentence
|
|
66
66
|
TextInFileCheck(
|
|
67
67
|
"2012/gb_VMSA-2010-0007.nasl",
|
|
68
|
-
"e. VMware VMnc Codec heap overflow vulnerabilities\n\n
|
|
68
|
+
"e. VMware VMnc Codec heap overflow vulnerabilities\n\n Vulnerabilities in the",
|
|
69
69
|
),
|
|
70
70
|
TextInFileCheck("gb_opensuse_2018_1900_1.nasl", "(Note that"),
|
|
71
71
|
# e.g.:
|
|
@@ -135,10 +135,9 @@ def get_grammer_pattern() -> re.Pattern:
|
|
|
135
135
|
r"links\s+mentioned\s+in(\s+the)?\s+reference|"
|
|
136
136
|
r"\s+an?(\s+remote)?(\s+(un)?authenticated)?\s+attackers|"
|
|
137
137
|
# e.g. "this flaws"
|
|
138
|
-
r"this\s+(vulnerabilities|(flaw|error|problem|issue|feature|file|
|
|
138
|
+
r"this\s+(vulnerabilities|(flaw|error|problem|issue|feature|file|request)s)|"
|
|
139
139
|
# e.g. "these flaw "
|
|
140
|
-
r"these\s+(vulnerability|(flaw|error|problem|issue|feature|file|"
|
|
141
|
-
r"request)\s+)|"
|
|
140
|
+
r"these\s+(vulnerability|(flaw|error|problem|issue|feature|file|request)\s+)|"
|
|
142
141
|
r"\s+or\s+not\.?(\"\);)?$|"
|
|
143
142
|
r"from(\s+the)?(\s+below)?mentioned\s+References?\s+link|"
|
|
144
143
|
r"software\s+it\s+fail|"
|
|
@@ -200,7 +199,7 @@ def get_grammer_pattern() -> re.Pattern:
|
|
|
200
199
|
r"in the in the|to an? to a|prior to prior to|to version to version|"
|
|
201
200
|
r"update to update to|"
|
|
202
201
|
# e.g. "is prone to a security bypass vulnerabilities"
|
|
203
|
-
r"is\s+prone\s+to\s+an?\s+[^\s]+\s+([^\s]+\s+)?vulnerabilities
|
|
202
|
+
r"is\s+prone\s+to\s+an?\s+[^\s]+\s+([^\s]+\s+)?vulnerabilities).*",
|
|
204
203
|
re.IGNORECASE,
|
|
205
204
|
)
|
|
206
205
|
|
|
@@ -221,7 +220,6 @@ class CheckGrammar(FilePlugin):
|
|
|
221
220
|
|
|
222
221
|
for match in pattern.finditer(self.context.file_content):
|
|
223
222
|
if match:
|
|
224
|
-
|
|
225
223
|
# nb: No strip() here for so that the exclusions can be handled
|
|
226
224
|
# more strict with e.g. leading or trailing newlines.
|
|
227
225
|
full_line = match.group(0)
|
|
@@ -102,9 +102,8 @@ class CheckHttpLinksInTags(FilePlugin):
|
|
|
102
102
|
if match:
|
|
103
103
|
if (
|
|
104
104
|
# fmt: off
|
|
105
|
-
"nvd.nist.gov/vuln/detail/CVE-" in match.group(
|
|
106
|
-
or "cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-"
|
|
107
|
-
in match.group('ref')
|
|
105
|
+
"nvd.nist.gov/vuln/detail/CVE-" in match.group("ref")
|
|
106
|
+
or "cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-" in match.group("ref")
|
|
108
107
|
# fmt: on
|
|
109
108
|
):
|
|
110
109
|
yield LinterError(
|
|
@@ -106,8 +106,7 @@ class CheckIllegalCharacters(FilePlugin):
|
|
|
106
106
|
for forbidden_char in found_forbidden_characters:
|
|
107
107
|
result, _ = FORBIDDEN_CHARS[forbidden_char]
|
|
108
108
|
yield result(
|
|
109
|
-
f"Found illegal character '{forbidden_char}' "
|
|
110
|
-
f"in {match.group(0)}",
|
|
109
|
+
f"Found illegal character '{forbidden_char}' in {match.group(0)}",
|
|
111
110
|
file=self.context.nasl_file,
|
|
112
111
|
plugin=self.name,
|
|
113
112
|
)
|
|
@@ -85,7 +85,7 @@ class CheckOverlongDescriptionLines(FileContentPlugin):
|
|
|
85
85
|
continue
|
|
86
86
|
|
|
87
87
|
yield LinterWarning(
|
|
88
|
-
f"Line {i} is too long
|
|
88
|
+
f"Line {i} is too long with {len(line)} characters. Max 100",
|
|
89
89
|
plugin=self.name,
|
|
90
90
|
file=nasl_file,
|
|
91
91
|
line=i,
|
|
@@ -1,19 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# SPDX-FileCopyrightText: 2022 Greenbone AG
|
|
2
2
|
#
|
|
3
3
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
4
|
-
#
|
|
5
|
-
# This program is free software: you can redistribute it and/or modify
|
|
6
|
-
# it under the terms of the GNU General Public License as published by
|
|
7
|
-
# the Free Software Foundation, either version 3 of the License, or
|
|
8
|
-
# (at your option) any later version.
|
|
9
|
-
#
|
|
10
|
-
# This program is distributed in the hope that it will be useful,
|
|
11
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
13
|
-
# GNU General Public License for more details.
|
|
14
|
-
#
|
|
15
|
-
# You should have received a copy of the GNU General Public License
|
|
16
|
-
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
17
4
|
|
|
18
5
|
from pathlib import Path
|
|
19
6
|
from typing import Iterator
|
|
@@ -27,8 +14,16 @@ from ..plugin import FileContentPlugin, LinterError, LinterResult
|
|
|
27
14
|
VALUE_LIMIT = 3000
|
|
28
15
|
|
|
29
16
|
IGNORE_FILES = [
|
|
17
|
+
# This has so many vulnerabilities, and we want at least mention each of them, so no way to
|
|
18
|
+
# shorten it down.
|
|
30
19
|
"monstra_cms_mult_vuln",
|
|
20
|
+
# Same as previously
|
|
21
|
+
"2017/gb_generic_http_web_app_params_dir_trav.nasl",
|
|
22
|
+
"2017/gb_generic_http_web_root_dir_trav.nasl",
|
|
23
|
+
"2021/gb_generic_http_web_dirs_dir_trav.nasl",
|
|
24
|
+
# These have auto-generated affected tags which we don't want to shorten down.
|
|
31
25
|
"gb_huawei-sa-",
|
|
26
|
+
# Needs a description for each option which we don't want to shorten down.
|
|
32
27
|
"lsc_options.nasl",
|
|
33
28
|
]
|
|
34
29
|
|
troubadix/plugins/qod.py
CHANGED
|
@@ -86,7 +86,7 @@ class CheckScriptCallsRecommended(FileContentPlugin):
|
|
|
86
86
|
file_content
|
|
87
87
|
):
|
|
88
88
|
yield LinterWarning(
|
|
89
|
-
"VT does not contain the following recommended call:
|
|
89
|
+
f"VT does not contain the following recommended call: 'script_{call}'",
|
|
90
90
|
file=nasl_file,
|
|
91
91
|
plugin=self.name,
|
|
92
92
|
)
|
|
@@ -130,7 +130,7 @@ class CheckScriptFamily(FileContentPlugin):
|
|
|
130
130
|
|
|
131
131
|
if matches[0].group("value") not in VALID_FAMILIES:
|
|
132
132
|
yield LinterError(
|
|
133
|
-
"Invalid or misspelled script family
|
|
133
|
+
f"Invalid or misspelled script family '{matches[0].group('value')}'",
|
|
134
134
|
file=nasl_file,
|
|
135
135
|
plugin=self.name,
|
|
136
136
|
)
|
|
@@ -59,8 +59,7 @@ class CheckScriptTagWhitespaces(FileContentPlugin):
|
|
|
59
59
|
r".*\s+$", match.group("value"), flags=re.S
|
|
60
60
|
):
|
|
61
61
|
yield LinterError(
|
|
62
|
-
f"{match.group(0)}: value contains a leading or"
|
|
63
|
-
" trailing whitespace character",
|
|
62
|
+
f"{match.group(0)}: value contains a leading or trailing whitespace character",
|
|
64
63
|
file=nasl_file,
|
|
65
64
|
plugin=self.name,
|
|
66
65
|
)
|
|
@@ -69,7 +69,7 @@ class CheckScriptTagsMandatory(FileContentPlugin):
|
|
|
69
69
|
for tag in MANDATORY_TAGS:
|
|
70
70
|
if not get_script_tag_pattern(tag).search(file_content):
|
|
71
71
|
yield LinterError(
|
|
72
|
-
"VT does not contain the following mandatory tag:
|
|
72
|
+
f"VT does not contain the following mandatory tag: 'script_{tag.value}'",
|
|
73
73
|
file=nasl_file,
|
|
74
74
|
plugin=self.name,
|
|
75
75
|
)
|
|
@@ -130,7 +130,7 @@ class CheckScriptVersionAndLastModificationTags(FileContentPlugin):
|
|
|
130
130
|
if not match_last_modified:
|
|
131
131
|
self.fix_last_modification_and_version = True
|
|
132
132
|
yield LinterError(
|
|
133
|
-
|
|
133
|
+
'VT is is using a wrong syntax for script_tag(name:"last_modification".',
|
|
134
134
|
file=nasl_file,
|
|
135
135
|
plugin=self.name,
|
|
136
136
|
)
|
|
@@ -59,8 +59,7 @@ class CheckSecurityMessages(FileContentPlugin):
|
|
|
59
59
|
|
|
60
60
|
if not _file_contains_security_message(file_content):
|
|
61
61
|
yield LinterError(
|
|
62
|
-
"VT is missing a security_message or implementing"
|
|
63
|
-
" function in a VT with severity",
|
|
62
|
+
"VT is missing a security_message or implementing function in a VT with severity",
|
|
64
63
|
file=nasl_file,
|
|
65
64
|
plugin=self.name,
|
|
66
65
|
)
|
|
@@ -81,8 +80,7 @@ class CheckSecurityMessages(FileContentPlugin):
|
|
|
81
80
|
|
|
82
81
|
if _file_contains_security_message(file_content):
|
|
83
82
|
yield LinterError(
|
|
84
|
-
"VT is using a security_message or implementing"
|
|
85
|
-
" function in a VT without severity",
|
|
83
|
+
"VT is using a security_message or implementing function in a VT without severity",
|
|
86
84
|
file=nasl_file,
|
|
87
85
|
plugin=self.name,
|
|
88
86
|
)
|
|
@@ -13,7 +13,7 @@ class CheckSpacesInFilename(FilePlugin):
|
|
|
13
13
|
def run(self) -> Iterator[LinterResult]:
|
|
14
14
|
if re.search(r"\s", self.context.nasl_file.name):
|
|
15
15
|
yield LinterError(
|
|
16
|
-
f"The VT {self.context.nasl_file}
|
|
16
|
+
f"The VT {self.context.nasl_file} contains whitespace in the filename",
|
|
17
17
|
file=self.context.nasl_file,
|
|
18
18
|
plugin=self.name,
|
|
19
19
|
)
|
|
@@ -44,7 +44,7 @@ class CheckTrailingSpacesTabs(FilePlugin):
|
|
|
44
44
|
continue
|
|
45
45
|
|
|
46
46
|
yield LinterError(
|
|
47
|
-
"The VT has one or more trailing spaces
|
|
47
|
+
f"The VT has one or more trailing spaces and/or tabs in line {line_number}!",
|
|
48
48
|
file=self.context.nasl_file,
|
|
49
49
|
plugin=self.name,
|
|
50
50
|
)
|
|
@@ -94,7 +94,7 @@ class CheckValidScriptTagNames(FileContentPlugin):
|
|
|
94
94
|
for match in matches:
|
|
95
95
|
if match.group("name") not in allowed_script_tag_names:
|
|
96
96
|
yield LinterError(
|
|
97
|
-
f"The script_tag name '{match.group('name')}'
|
|
97
|
+
f"The script_tag name '{match.group('name')}' is not allowed.",
|
|
98
98
|
file=nasl_file,
|
|
99
99
|
plugin=self.name,
|
|
100
100
|
)
|
troubadix/reporter.py
CHANGED
|
@@ -185,7 +185,7 @@ class Reporter:
|
|
|
185
185
|
if self._fix and self._ignore_warnings:
|
|
186
186
|
line = f"{plugin:48} {count['error']:8} {count['fix']:8}"
|
|
187
187
|
elif self._fix:
|
|
188
|
-
line = f"{plugin:48} {count['error']:8} {count['warning']:8}
|
|
188
|
+
line = f"{plugin:48} {count['error']:8} {count['warning']:8} {count['fix']:8}"
|
|
189
189
|
elif self._ignore_warnings:
|
|
190
190
|
line = f"{plugin:48} {count['error']:8}"
|
|
191
191
|
else:
|
|
@@ -203,8 +203,7 @@ class Reporter:
|
|
|
203
203
|
|
|
204
204
|
if self._fix and self._ignore_warnings:
|
|
205
205
|
line = (
|
|
206
|
-
f"{'sum':48} {self._result_counts.error_count:8}"
|
|
207
|
-
f" {self._result_counts.fix_count:8}"
|
|
206
|
+
f"{'sum':48} {self._result_counts.error_count:8} {self._result_counts.fix_count:8}"
|
|
208
207
|
)
|
|
209
208
|
elif self._fix:
|
|
210
209
|
line = (
|
|
@@ -29,7 +29,7 @@ def parse_arguments() -> Namespace:
|
|
|
29
29
|
"--directory",
|
|
30
30
|
default=Path.cwd(),
|
|
31
31
|
type=Path,
|
|
32
|
-
help="The directory the repository to check is located in.
|
|
32
|
+
help="The directory the repository to check is located in. Defaults to 'pwd'",
|
|
33
33
|
)
|
|
34
34
|
|
|
35
35
|
ignored_linestart_group = argument_parser.add_mutually_exclusive_group()
|
|
@@ -41,7 +41,7 @@ def parse_arguments() -> Namespace:
|
|
|
41
41
|
nargs="*",
|
|
42
42
|
type=str,
|
|
43
43
|
default=DEFAULT_IGNORED_LINESTARTS,
|
|
44
|
-
help="A list of line starts which will make the line be ignored.
|
|
44
|
+
help="A list of line starts which will make the line be ignored. Default: %(default)s",
|
|
45
45
|
)
|
|
46
46
|
|
|
47
47
|
ignored_linestart_group.add_argument(
|
|
@@ -21,7 +21,6 @@ CREATION_DATE_BASE_PATTERN = (
|
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def parse_arguments() -> Namespace:
|
|
24
|
-
|
|
25
24
|
parser = ArgumentParser(
|
|
26
25
|
description="Check for changed creation date",
|
|
27
26
|
)
|
|
@@ -43,8 +42,7 @@ def parse_arguments() -> Namespace:
|
|
|
43
42
|
type=file_type_existing,
|
|
44
43
|
default=[],
|
|
45
44
|
help=(
|
|
46
|
-
"List of files to diff. "
|
|
47
|
-
"If empty use all files added or modified in the commit range."
|
|
45
|
+
"List of files to diff. If empty use all files added or modified in the commit range."
|
|
48
46
|
),
|
|
49
47
|
)
|
|
50
48
|
args = parser.parse_args()
|
|
@@ -69,7 +67,6 @@ def check_changed_creation_date(commit_range: str, nasl_files: list[Path]) -> bo
|
|
|
69
67
|
creation_date_changed = False
|
|
70
68
|
|
|
71
69
|
for nasl_file in nasl_files:
|
|
72
|
-
|
|
73
70
|
if not nasl_file.exists():
|
|
74
71
|
continue
|
|
75
72
|
|
|
@@ -116,7 +113,6 @@ def check_changed_creation_date(commit_range: str, nasl_files: list[Path]) -> bo
|
|
|
116
113
|
|
|
117
114
|
|
|
118
115
|
def main() -> int:
|
|
119
|
-
|
|
120
116
|
try:
|
|
121
117
|
git_base = git("rev-parse", "--show-toplevel")
|
|
122
118
|
os.chdir(git_base.rstrip("\n"))
|
|
@@ -49,8 +49,7 @@ def parse_args(args: Iterable[str]) -> Namespace:
|
|
|
49
49
|
type=file_type_existing,
|
|
50
50
|
default=[],
|
|
51
51
|
help=(
|
|
52
|
-
"List of files to diff. "
|
|
53
|
-
"If empty use all files added or modified in the commit range."
|
|
52
|
+
"List of files to diff. If empty use all files added or modified in the commit range."
|
|
54
53
|
),
|
|
55
54
|
)
|
|
56
55
|
return parser.parse_args(args=args)
|
|
@@ -74,13 +74,22 @@ class Package:
|
|
|
74
74
|
|
|
75
75
|
return False
|
|
76
76
|
|
|
77
|
+
def __le__(self, other: "Package") -> bool:
|
|
78
|
+
# Sort by release first, then the other fields
|
|
79
|
+
if self.release != other.release:
|
|
80
|
+
return self.release < other.release
|
|
81
|
+
if self.name != other.name:
|
|
82
|
+
return self.name < other.name
|
|
83
|
+
|
|
84
|
+
return self.version <= other.version
|
|
85
|
+
|
|
77
86
|
def __str__(self) -> str:
|
|
78
|
-
result = f"{self.name
|
|
87
|
+
result = f"{self.name: <50} {self.version: <40} {self.release: <10}"
|
|
79
88
|
|
|
80
89
|
reasons = ", ".join(
|
|
81
|
-
f"{change}
|
|
90
|
+
f"{change}{' in new package' if direction == Direction.PASSIVE else ''}"
|
|
82
91
|
for change, direction in self.reasons.items()
|
|
83
92
|
)
|
|
84
|
-
result += f"{reasons
|
|
93
|
+
result += f"{reasons: <10}"
|
|
85
94
|
|
|
86
95
|
return result
|
|
@@ -73,7 +73,7 @@ def main() -> int:
|
|
|
73
73
|
print(file.relative_to(args.dir))
|
|
74
74
|
return 0
|
|
75
75
|
|
|
76
|
-
print(f"{len(unwanted_files)}
|
|
76
|
+
print(f"{len(unwanted_files)} Files with unwanted file extension were found:")
|
|
77
77
|
for file in unwanted_files:
|
|
78
78
|
print(file)
|
|
79
79
|
return 1
|
|
@@ -97,7 +97,7 @@ def parse_args() -> Namespace:
|
|
|
97
97
|
dest="threshold",
|
|
98
98
|
type=int,
|
|
99
99
|
default=12,
|
|
100
|
-
help="The threshold after which to assume no solution
|
|
100
|
+
help="The threshold after which to assume no solution will be provided anymore",
|
|
101
101
|
)
|
|
102
102
|
|
|
103
103
|
parser.add_argument(
|
|
@@ -239,9 +239,7 @@ def print_report(
|
|
|
239
239
|
"No solution should be expected at this point. "
|
|
240
240
|
)
|
|
241
241
|
else:
|
|
242
|
-
term.bold_info(
|
|
243
|
-
f"{len(vts)} VTs with no solution for " f"more than {milestone} month(s)"
|
|
244
|
-
)
|
|
242
|
+
term.bold_info(f"{len(vts)} VTs with no solution for more than {milestone} month(s)")
|
|
245
243
|
|
|
246
244
|
for vt, oid, creation, solution in vts:
|
|
247
245
|
term.info(str(vt.relative_to(root)))
|
|
@@ -68,8 +68,7 @@ def parse_args(args: Iterable[str]) -> Namespace:
|
|
|
68
68
|
type=file_type_existing,
|
|
69
69
|
default=[],
|
|
70
70
|
help=(
|
|
71
|
-
"List of files to diff. "
|
|
72
|
-
"If empty use all files added or modified in the commit range."
|
|
71
|
+
"List of files to diff. If empty use all files added or modified in the commit range."
|
|
73
72
|
),
|
|
74
73
|
)
|
|
75
74
|
return parser.parse_args(args=args)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
troubadix/__init__.py,sha256=K7sIXXDrC7YRb7BvIpdQ6ZfG_QkT0qUH_wAlHROVRfM,716
|
|
2
|
-
troubadix/__version__.py,sha256=
|
|
2
|
+
troubadix/__version__.py,sha256=dPvqj93xVP1Mtnqwnka5NO509MBNQAmpmvjyI-qbYdc,103
|
|
3
3
|
troubadix/argparser.py,sha256=VVntELpTVfRMUFZT7VlIhWxomnO4qdpN_H4GLfD9-Wk,7383
|
|
4
4
|
troubadix/codespell/codespell.additions,sha256=_nGI5znfb2BRta4O0tubGYQSLjOusgqT_sz_HFZvbm8,585
|
|
5
5
|
troubadix/codespell/codespell.exclude,sha256=4arAzknuJxPvGz0-tAFp4A3_VLaPR4_XdUE7UfIAGRI,148629
|
|
6
6
|
troubadix/codespell/codespell.ignore,sha256=2CP8u6O2VENcDpt2FfEDNmfa1Eh3D80yeYHT54GM1X4,1512
|
|
7
7
|
troubadix/helper/__init__.py,sha256=tp2fPLzwGEA_2eiJbvuePiY6rjYSFxx7VUsCV4fSwvw,1110
|
|
8
|
-
troubadix/helper/date_format.py,sha256=
|
|
8
|
+
troubadix/helper/date_format.py,sha256=3wV2rlKIFZ26h77MB8CnVxV2HdeMh_d4cCL2MDYMUOc,2446
|
|
9
9
|
troubadix/helper/helper.py,sha256=hoL725E5rIjgUS8tcWttXP_0gSlhcRc7Wvsn7KvMkps,3099
|
|
10
10
|
troubadix/helper/if_block_parser.py,sha256=jrD3KklKnBS8NgzA6HPNOCSJvvvLO2WFmmaIMdzFpeo,7924
|
|
11
11
|
troubadix/helper/linguistic_exception_handler.py,sha256=ydvNdF3LrCA_3EjofltUE1IQB4DwZ2iu0ZO-K_NnCIc,6703
|
|
@@ -15,78 +15,78 @@ troubadix/helper/text_utils.py,sha256=LOpabVTRgJmpUMvKDWvlALSvEeAQDV62vwBzTVMD2u
|
|
|
15
15
|
troubadix/plugin.py,sha256=tBteosz-soLPqY_AdjsCqN2qKaS5ahxcJ_hSoFlSPlY,3459
|
|
16
16
|
troubadix/plugins/__init__.py,sha256=5ks5gnSKdghUc8h1VTtnk-P8tnbf2DdqsNq7BMyFOds,8666
|
|
17
17
|
troubadix/plugins/badwords.py,sha256=E_YBoD-6xEDqp5N7TlU5mJu6fWReTydAgtaweLDpTpc,4864
|
|
18
|
-
troubadix/plugins/copyright_text.py,sha256=
|
|
18
|
+
troubadix/plugins/copyright_text.py,sha256=VyrL4obxj-GGdQeA6bTQG2oEFPB2dyNMLKX7s3EXk_c,3545
|
|
19
19
|
troubadix/plugins/copyright_year.py,sha256=7fA_EHphxlIgOhkDPJ2FJlcGzF0t8CKtCdlOCw93A-M,5398
|
|
20
20
|
troubadix/plugins/creation_date.py,sha256=kGfFQVJqwO36GJcA0ByPqZ42mspeGcuLJAA3xyW50aE,2337
|
|
21
21
|
troubadix/plugins/cve_format.py,sha256=Ue6b9RzuQZWOdBd6y5ruqdEq2zyRb2_FSUQScnjHOUQ,3400
|
|
22
22
|
troubadix/plugins/cvss_format.py,sha256=hmObghOvp0Gw3yn-wAJnHTwjcjILaVljyvfldxi_pmA,1904
|
|
23
|
-
troubadix/plugins/dependencies.py,sha256=
|
|
24
|
-
troubadix/plugins/dependency_category_order.py,sha256=
|
|
25
|
-
troubadix/plugins/deprecated_dependency.py,sha256=
|
|
26
|
-
troubadix/plugins/deprecated_functions.py,sha256=
|
|
23
|
+
troubadix/plugins/dependencies.py,sha256=5aNGDTTV3Sl6ms1DhGvYECOxq1VXvCOjDpJTYMV0NwY,4041
|
|
24
|
+
troubadix/plugins/dependency_category_order.py,sha256=1SZWwAkOAm6WhQ5keG6BHxXcQcEFMhtJiWRK5sbQqi0,6799
|
|
25
|
+
troubadix/plugins/deprecated_dependency.py,sha256=xknDLT7W6erQeEydwh1IQDYsvP3X4Agi0W0x5Rt5GN8,3597
|
|
26
|
+
troubadix/plugins/deprecated_functions.py,sha256=tRv2w7WnLb5PcRtOFO5b7oiUOWZk-KF2JSRjUVbImfY,2530
|
|
27
27
|
troubadix/plugins/double_end_points.py,sha256=RpZGQzCliUrCaO-Q3hAXw_9nrZ6Embl5dksBozFZnf0,2403
|
|
28
28
|
troubadix/plugins/duplicate_oid.py,sha256=dWxvQSW2kTiDGMs5-Zzpn1Dunx9mYkYfB89UCWZo9zQ,2622
|
|
29
|
-
troubadix/plugins/duplicated_script_tags.py,sha256=
|
|
29
|
+
troubadix/plugins/duplicated_script_tags.py,sha256=RJbyiTT1FS5WggBjteU6jnX2TSUWph0N7uudOIusf14,3096
|
|
30
30
|
troubadix/plugins/encoding.py,sha256=Ow_ZpyjtL2_nqhbukY_3EUhiR0agfSxMxJ4IcMSGsT4,2768
|
|
31
31
|
troubadix/plugins/forking_nasl_functions.py,sha256=HXnlyR5yGVUYvzIOUKVRy2VPfuZc5uoehDt-HkEXo7k,6033
|
|
32
32
|
troubadix/plugins/get_kb_on_services.py,sha256=1wLMohNZoEg1P7DiCRcpe6639SfvOsSMZWTta12VmgQ,3365
|
|
33
|
-
troubadix/plugins/grammar.py,sha256=
|
|
34
|
-
troubadix/plugins/http_links_in_tags.py,sha256=
|
|
33
|
+
troubadix/plugins/grammar.py,sha256=i-xjxLm4A5-FsOPRUybm8E0fp7lcxfqegB6wzziiaIY,10893
|
|
34
|
+
troubadix/plugins/http_links_in_tags.py,sha256=w1lEgvaMDckajpq4TXmN8bn4tbQheghfQmjmwpiHzfE,7465
|
|
35
35
|
troubadix/plugins/if_statement_syntax.py,sha256=5BRJwCCghvZn1AfvYzmk8l9S7aRqbVaLHhSKod_Q9zw,1429
|
|
36
|
-
troubadix/plugins/illegal_characters.py,sha256
|
|
36
|
+
troubadix/plugins/illegal_characters.py,sha256=-Hgu8kzeniwfM492pJVs7QlrTLwrSZd__b4EKp2kwmY,4204
|
|
37
37
|
troubadix/plugins/log_messages.py,sha256=ST5pwr8cZNMgxdMiSV2wm3jCFG34Rxd-6y-ozIcI070,2948
|
|
38
38
|
troubadix/plugins/malformed_dependencies.py,sha256=El9v-Hlc3rMzXFNyW-1WZrTcJWXTGURErWc92Jpopis,2962
|
|
39
39
|
troubadix/plugins/misplaced_compare_in_if.py,sha256=lqiKk09ksmaavhFhxfivttIQKXEr-nwYHHyhtVxPJJQ,4826
|
|
40
40
|
troubadix/plugins/missing_desc_exit.py,sha256=YwZlSY1RTTTBa_EBK6JAzCg9_jlCs8Oyp5pclNY-UkI,2381
|
|
41
41
|
troubadix/plugins/missing_tag_solution.py,sha256=iO7_6Us3w12AVPuiGK3AUU3S62K1lcZvcGK_-fvvQtk,2828
|
|
42
|
-
troubadix/plugins/multiple_re_parameters.py,sha256=
|
|
42
|
+
troubadix/plugins/multiple_re_parameters.py,sha256=8CRKGxQ6jzNCucDb1QM9LvjlTOJmOUBq4MaSRZrpRvg,1401
|
|
43
43
|
troubadix/plugins/newlines.py,sha256=2Uqsb4lG7rXEoCZD3Tdoku4YmB7WGqLQUPC3tJiEEso,2772
|
|
44
|
-
troubadix/plugins/overlong_description_lines.py,sha256=
|
|
45
|
-
troubadix/plugins/overlong_script_tags.py,sha256
|
|
44
|
+
troubadix/plugins/overlong_description_lines.py,sha256=VySzzZ6rbuXobPw9IEogjmJ0cahzmrjBZRZxALfKGlw,3283
|
|
45
|
+
troubadix/plugins/overlong_script_tags.py,sha256=-HV1pMVxgyinQ8Vnj6uPbdVOx2O0NEh894kQ_t49NqA,2195
|
|
46
46
|
troubadix/plugins/prod_svc_detect_in_vulnvt.py,sha256=5NX335QQLquxNamNt0_WGDpvB-XgNguv-77neEnKmx8,4234
|
|
47
|
-
troubadix/plugins/qod.py,sha256=
|
|
47
|
+
troubadix/plugins/qod.py,sha256=QkA_FjT4n-4y17qYVqGLW4RP1TcRi3TxGXGk2wO9sfk,4163
|
|
48
48
|
troubadix/plugins/reporting_consistency.py,sha256=yp4FQ8T6gVPzLDF5334mGG5m8n9x8c2I_ApfHzZpVRA,4024
|
|
49
49
|
troubadix/plugins/script_add_preference_id.py,sha256=ra_HROAarILUGFGKHgBlFet3gCRMPNML835IONiRbTU,1597
|
|
50
50
|
troubadix/plugins/script_add_preference_type.py,sha256=iyOC8DCyj0cAXFXFiUYWf1Wz79GLHMnGWOtGleItTnU,3589
|
|
51
51
|
troubadix/plugins/script_calls_empty_values.py,sha256=_MJ0hCb-VZzrnnzjPBaQrQvdbH4iOyxwcPcXtAZzbjw,2512
|
|
52
|
-
troubadix/plugins/script_calls_recommended.py,sha256=
|
|
52
|
+
troubadix/plugins/script_calls_recommended.py,sha256=xdG869wsuvQiGusrcqoRfAc2vdI5NqlkdUT8mCRMhAs,3135
|
|
53
53
|
troubadix/plugins/script_category.py,sha256=EsFoR6fKjnJNNJb2gLkftwXDhJ3RCfa5g8796N-jxX8,2184
|
|
54
54
|
troubadix/plugins/script_copyright.py,sha256=TcWw7D4WIYuD3XGKQ-gfPbd_px_iLXE68gwl5l7kdcE,2288
|
|
55
|
-
troubadix/plugins/script_family.py,sha256=
|
|
55
|
+
troubadix/plugins/script_family.py,sha256=ujjErdzQYflmSk-H8dcBW6H_8OhmFIihnjzJN6uu9M4,4079
|
|
56
56
|
troubadix/plugins/script_tag_form.py,sha256=k0PQv1LOTQVbs16X9RRYSV4vywl_AUCXa215w32FwI0,1735
|
|
57
|
-
troubadix/plugins/script_tag_whitespaces.py,sha256=
|
|
58
|
-
troubadix/plugins/script_tags_mandatory.py,sha256=
|
|
59
|
-
troubadix/plugins/script_version_and_last_modification_tags.py,sha256=
|
|
57
|
+
troubadix/plugins/script_tag_whitespaces.py,sha256=P_C9KqUczFmZPZPuQzVTd8CLroLLGVxLFz_8QTyjqYw,2252
|
|
58
|
+
troubadix/plugins/script_tags_mandatory.py,sha256=yS1qIrEjF7Oh2sU5m3mgC7a6FmMwAzTI1XdULaXBQhY,2642
|
|
59
|
+
troubadix/plugins/script_version_and_last_modification_tags.py,sha256=UASUhjyhQXKxUmeiVZMg9TvTDSUQ2aRIvFH7J2L4vrw,7505
|
|
60
60
|
troubadix/plugins/script_xref_form.py,sha256=cJsn2JNF39mY74Kc9fo-6o27PUdqCnlYH_2bjw-KxRU,1802
|
|
61
61
|
troubadix/plugins/script_xref_url.py,sha256=gXDRgwewWKO1rsREUPm1yPKEq58iD7bQSyOotftI6YA,5317
|
|
62
|
-
troubadix/plugins/security_messages.py,sha256=
|
|
62
|
+
troubadix/plugins/security_messages.py,sha256=j1z5pD4fWam9s2Su46T4sX9pJ-L7DTTKmSAML2BwQyc,4463
|
|
63
63
|
troubadix/plugins/set_get_kb_calls.py,sha256=WGu1CKLjn3VhbDo33IJ4TtWQ-kz9gInkJskTqOSMM6k,3415
|
|
64
|
-
troubadix/plugins/severity_date.py,sha256=
|
|
65
|
-
troubadix/plugins/severity_format.py,sha256=
|
|
66
|
-
troubadix/plugins/severity_origin.py,sha256=
|
|
64
|
+
troubadix/plugins/severity_date.py,sha256=dVxSunRdc9JZPysFmPsz2ksZwPFMQs-wJTZPKLdwTj8,1425
|
|
65
|
+
troubadix/plugins/severity_format.py,sha256=pCd--9HCwrDXa4M1LWRuwoanVtWFkhjaj1ketKmo_xM,957
|
|
66
|
+
troubadix/plugins/severity_origin.py,sha256=HWA03j5LP9gqCHF5hsqysw-l3iLGVBq0FMKVCerZzd8,957
|
|
67
67
|
troubadix/plugins/solution_text.py,sha256=xUe1wkA-5k3wNMeSA2ZCnicD3SF2kK3DPhWuKkUPelk,5808
|
|
68
68
|
troubadix/plugins/solution_type.py,sha256=5MxR_cRNpKka3-bPbyA0LaPL7QuLgRE7-6KShN1p9iQ,2590
|
|
69
|
-
troubadix/plugins/spaces_before_dots.py,sha256=
|
|
70
|
-
troubadix/plugins/spaces_in_filename.py,sha256=
|
|
69
|
+
troubadix/plugins/spaces_before_dots.py,sha256=NPmMcwaNXOCU1IvgINSN7H0nXf92e8mlOux-ZG5LEks,4765
|
|
70
|
+
troubadix/plugins/spaces_in_filename.py,sha256=qRIWHkVBLrTEbzqfRVotRPgXfpAAfdMnpnT0YUtXW14,592
|
|
71
71
|
troubadix/plugins/spelling.py,sha256=8x_4OTZAyofk_aoKkuLipl4WPgKhaR8nLnRRXn7KyLU,9497
|
|
72
72
|
troubadix/plugins/tabs.py,sha256=7zXaTZe4cZoZvrLyqntVfTeNN_W3D8dfQl67QevXxtc,1319
|
|
73
73
|
troubadix/plugins/todo_tbd.py,sha256=MN5fFwBhPmt3JDQ2Hx20B8yUy1vz7LIZC3rDIOzfW9M,1758
|
|
74
|
-
troubadix/plugins/trailing_spaces_tabs.py,sha256=
|
|
74
|
+
troubadix/plugins/trailing_spaces_tabs.py,sha256=X9C4Y5wy7F5QzfC4EtEsDcKuJfbdUNqDuMZYxma0Jxw,1832
|
|
75
75
|
troubadix/plugins/using_display.py,sha256=THHw0zOoEPeMwz3ftN2M6w09EdlNcy7IebKG6IWXH1A,3674
|
|
76
76
|
troubadix/plugins/valid_oid.py,sha256=eiItF9BVWlaUFKmtn8KH41X7a38MGn3LDBDuw0TvtA8,17850
|
|
77
|
-
troubadix/plugins/valid_script_tag_names.py,sha256
|
|
77
|
+
troubadix/plugins/valid_script_tag_names.py,sha256=-_82CAI-2sWEnqrQR79-zKBKyUsHQwQiAKy7GoMQ4FE,3398
|
|
78
78
|
troubadix/plugins/variable_assigned_in_if.py,sha256=M9dqY5kugKSvP9Ahdfm2SC0ou36NmNVy4dNv9HljJXw,3203
|
|
79
79
|
troubadix/plugins/variable_redefinition_in_foreach.py,sha256=DhABvLQIPdB1ezwvAOQHtOSQJZhMSAwTb7ky7nrXN0k,2450
|
|
80
80
|
troubadix/plugins/vt_file_permissions.py,sha256=-8rOUD0NpRwB0Ec5oQCcVpDVAaZqsUopqpGPB1To6fY,1521
|
|
81
81
|
troubadix/plugins/vt_placement.py,sha256=R3v2-iguzT7sP-gWw0AQr0wIUylF9dOCat5fyW66E_c,2720
|
|
82
|
-
troubadix/reporter.py,sha256=
|
|
82
|
+
troubadix/reporter.py,sha256=secwt8CJc5G6ndOsucvcAEfi5JyzhqG2QsEtOcc2iaE,9086
|
|
83
83
|
troubadix/results.py,sha256=jILEBvV9TMSlYba3R0lFXHy1DWdcJkAZkWCInzdysQ4,2523
|
|
84
84
|
troubadix/runner.py,sha256=Ua5BlR3lSLf3PhgwI1dYCv8ilM3Me5RTYKhTnaahzCw,5039
|
|
85
85
|
troubadix/standalone_plugins/__init__.py,sha256=kUR5RAFc7HCeiqdlX36dZOHkUI5wI6V_43RpEcD8b-0,22
|
|
86
|
-
troubadix/standalone_plugins/allowed_rev_diff.py,sha256=
|
|
87
|
-
troubadix/standalone_plugins/changed_creation_date.py,sha256=
|
|
86
|
+
troubadix/standalone_plugins/allowed_rev_diff.py,sha256=lkyg_7spoicuPpnBkj4c4U35XM-5_8uE7bKKu8J5d0Y,4003
|
|
87
|
+
troubadix/standalone_plugins/changed_creation_date.py,sha256=HTZZHmrupbIEP57tmkhVY98GTgsoBDjRla6WDJXbwoU,3450
|
|
88
88
|
troubadix/standalone_plugins/changed_cves.py,sha256=Qc3gdeJHfioD2UfG4PW1wrj_YKfKQcc3ocdFHgxc8Lk,2857
|
|
89
|
-
troubadix/standalone_plugins/changed_oid.py,sha256=
|
|
89
|
+
troubadix/standalone_plugins/changed_oid.py,sha256=RW_YTO1E3GWwz_91l5OlQC4aOAfGX1rsXGgtNxYjgak,3867
|
|
90
90
|
troubadix/standalone_plugins/changed_packages/changed_packages.py,sha256=O-k79wkeCVsKimBsONfKgoI5GYG3jpCFx4hU9B9qpoU,5690
|
|
91
91
|
troubadix/standalone_plugins/changed_packages/marker/__init__.py,sha256=Le59j2KcaXez1MIPjZ8GDJmSuLGkOVI3k2-BWO30Bc0,993
|
|
92
92
|
troubadix/standalone_plugins/changed_packages/marker/added_epoch.py,sha256=PfnG5B1v8SwOJw3ez-eb794PT7k-O4hJKDHMSd9lwNo,1797
|
|
@@ -95,7 +95,7 @@ troubadix/standalone_plugins/changed_packages/marker/added_udeb.py,sha256=EqSv7c
|
|
|
95
95
|
troubadix/standalone_plugins/changed_packages/marker/changed_update.py,sha256=A6nU6-itA32_PEvPSyaSd6pqSFqGc0R6BBvob1YzCCU,1906
|
|
96
96
|
troubadix/standalone_plugins/changed_packages/marker/dropped_architecture.py,sha256=VWEhhf3aia0orj_ISK1-1r0NJIOgCVbHTylP6h-pfXg,1602
|
|
97
97
|
troubadix/standalone_plugins/changed_packages/marker/marker.py,sha256=7uZXR2Ds_8soB_2wugCkOSz_3hoX03KMh2NAW0G5Dzg,1278
|
|
98
|
-
troubadix/standalone_plugins/changed_packages/package.py,sha256=
|
|
98
|
+
troubadix/standalone_plugins/changed_packages/package.py,sha256=2Dg2rFPJfzAIn_yEp7hKoApGdDq9hvAVOMmTs_2d5xg,3011
|
|
99
99
|
troubadix/standalone_plugins/common.py,sha256=PkScV-lisNY4WyrzwjV3dK1DF26hJv5JXTcREblJ0v0,1028
|
|
100
100
|
troubadix/standalone_plugins/dependency_graph/__init__.py,sha256=SQSaQXWmpq5-5ozpqMgvnvoYTK8oj64A5kie1m_5bWQ,88
|
|
101
101
|
troubadix/standalone_plugins/dependency_graph/checks.py,sha256=riE0miS5gQsynSBDK0LRlHLtVyUI1Q8mAttIY_mIOqQ,3998
|
|
@@ -103,14 +103,14 @@ troubadix/standalone_plugins/dependency_graph/cli.py,sha256=RIyGeSm83XJ88N7Ati6z
|
|
|
103
103
|
troubadix/standalone_plugins/dependency_graph/dependency_graph.py,sha256=qevcgWF-vVvU9rY34TeCLBhEJQGyL0Ze_kFt853AfzA,5458
|
|
104
104
|
troubadix/standalone_plugins/dependency_graph/models.py,sha256=7kLrjFRdyReTRTgxte6-3KCBve4evg91AcqkX4I8VJU,1002
|
|
105
105
|
troubadix/standalone_plugins/deprecate_vts.py,sha256=0IhSpk6Dk63suus1xVRwGiXJ_I1Bl_OaukSn8xg6kIM,9462
|
|
106
|
-
troubadix/standalone_plugins/file_extensions.py,sha256=
|
|
106
|
+
troubadix/standalone_plugins/file_extensions.py,sha256=uk-3mn1Gl9DuqkQ_-Q2mrXO7nqtm-EnnvM1gfKCIeNw,2294
|
|
107
107
|
troubadix/standalone_plugins/last_modification.py,sha256=U6eP0c-ZcQkM7iuZlrQqecBX2WtavPdLbt2atr_ZBnc,4280
|
|
108
|
-
troubadix/standalone_plugins/no_solution.py,sha256=
|
|
109
|
-
troubadix/standalone_plugins/util.py,sha256=
|
|
110
|
-
troubadix/standalone_plugins/version_updated.py,sha256=
|
|
108
|
+
troubadix/standalone_plugins/no_solution.py,sha256=XnbFGqskaoJY47TGovTSqWdIvC6aYqda2OuoH7lQKdE,8507
|
|
109
|
+
troubadix/standalone_plugins/util.py,sha256=BTRYHPaxlQrmHgY70dXr4jkky5jdE3CHWv7iwPQD2PE,694
|
|
110
|
+
troubadix/standalone_plugins/version_updated.py,sha256=pyCUklO3cg37ZSNOeBFzNU4ka746EURgPkcISnSBHDs,4100
|
|
111
111
|
troubadix/troubadix.py,sha256=tLYO_J5Wh3KQ9b45UCVAbF31R2990R1UFi_3dkBgcV8,6005
|
|
112
|
-
troubadix-26.
|
|
113
|
-
troubadix-26.
|
|
114
|
-
troubadix-26.
|
|
115
|
-
troubadix-26.
|
|
116
|
-
troubadix-26.
|
|
112
|
+
troubadix-26.2.0.dist-info/METADATA,sha256=MyOshPXKFnvr8XWdGWNI2oyI4AOcZcdLW9r0Y9_m56o,4535
|
|
113
|
+
troubadix-26.2.0.dist-info/WHEEL,sha256=kJCRJT_g0adfAJzTx2GUMmS80rTJIVHRCfG0DQgLq3o,88
|
|
114
|
+
troubadix-26.2.0.dist-info/entry_points.txt,sha256=ETEPBi4fKv3o7hzkzceX4838G6g5_5wRdEddYot8N6A,920
|
|
115
|
+
troubadix-26.2.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
116
|
+
troubadix-26.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|