devsecops-engine-tools 1.13.2__py3-none-any.whl → 1.14.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.

Potentially problematic release.


This version of devsecops-engine-tools might be problematic. Click here for more details.

@@ -5,10 +5,10 @@ from dataclasses import dataclass
5
5
  class Exclusions:
6
6
  def __init__(self, **kwargs):
7
7
  self.id = kwargs.get("id", "")
8
- self.where = kwargs.get("where", "")
8
+ self.where = kwargs.get("where", "all")
9
9
  self.cve_id = kwargs.get("cve_id", "")
10
10
  self.create_date = kwargs.get("create_date", "")
11
11
  self.expired_date = kwargs.get("expired_date", "")
12
12
  self.severity = kwargs.get("severity", "")
13
13
  self.hu = kwargs.get("hu", "")
14
- self.reason = kwargs.get("reason", "Risk acceptance")
14
+ self.reason = kwargs.get("reason", "Risk Accepted")
@@ -51,9 +51,7 @@ class HandleRisk:
51
51
  "Error getting finding list in handle risk: {0}".format(str(e))
52
52
  )
53
53
 
54
- def _filter_engagements(
55
- self, engagements, service, endings_to_exclude, risk_config
56
- ):
54
+ def _filter_engagements(self, engagements, service, risk_config):
57
55
  filtered_engagements = []
58
56
  min_word_length = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_LENGTH"]
59
57
  words = [
@@ -65,21 +63,22 @@ class HandleRisk:
65
63
  ]
66
64
  check_words_regex = risk_config["HANDLE_SERVICE_NAME"]["REGEX_CHECK_WORDS"]
67
65
  min_word_amount = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_AMOUNT"]
66
+ endings = risk_config["HANDLE_SERVICE_NAME"]["CHECK_ENDING"]
68
67
 
69
68
  for engagement in engagements:
70
- if service.lower() in engagement.name.lower():
69
+ if service.lower() == engagement.name.lower():
71
70
  filtered_engagements += [engagement.name]
72
71
  elif re.search(check_words_regex, engagement.name.lower()) and (
73
72
  sum(1 for word in words if word.lower() in engagement.name.lower())
74
73
  >= min_word_amount
75
74
  ):
76
75
  filtered_engagements += [engagement.name]
77
- if endings_to_exclude:
78
- filtered_engagements = [
79
- engagement
80
- for engagement in filtered_engagements
81
- if not any(engagement.endswith(ending) for ending in endings_to_exclude)
82
- ]
76
+ elif endings:
77
+ if any(
78
+ (service.lower() + ending.lower() == engagement.name.lower())
79
+ for ending in endings
80
+ ):
81
+ filtered_engagements += [engagement.name]
83
82
 
84
83
  return filtered_engagements
85
84
 
@@ -106,30 +105,48 @@ class HandleRisk:
106
105
  return remaining_services
107
106
  return service_list
108
107
 
109
- def process(self, dict_args: any, remote_config: any):
110
- secret_tool = None
111
- if dict_args["use_secrets_manager"] == "true":
112
- secret_tool = self.secrets_manager_gateway.get_secret(remote_config)
108
+ def _should_skip_analysis(self, remote_config, pipeline_name, exclusions):
109
+ ignore_pattern = remote_config["IGNORE_ANALYSIS_PATTERN"]
110
+ return re.match(ignore_pattern, pipeline_name, re.IGNORECASE) or (
111
+ pipeline_name in exclusions
112
+ and exclusions[pipeline_name].get("SKIP_TOOL", 0)
113
+ )
113
114
 
115
+ def process(self, dict_args: any, remote_config: any):
114
116
  risk_config = self.devops_platform_gateway.get_remote_config(
115
117
  dict_args["remote_config_repo"], "engine_risk/ConfigTool.json"
116
118
  )
117
-
119
+ risk_exclusions = self.devops_platform_gateway.get_remote_config(
120
+ dict_args["remote_config_repo"], "engine_risk/Exclusions.json"
121
+ )
118
122
  pipeline_name = self.devops_platform_gateway.get_variable("pipeline_name")
123
+
124
+ input_core = InputCore(
125
+ [],
126
+ {},
127
+ "",
128
+ "",
129
+ pipeline_name,
130
+ self.devops_platform_gateway.get_variable("stage").capitalize(),
131
+ )
132
+
133
+ if self._should_skip_analysis(risk_config, pipeline_name, risk_exclusions):
134
+ print("Tool skipped by DevSecOps Policy.")
135
+ logger.info("Tool skipped by DevSecOps Policy.")
136
+ return [], input_core
137
+
138
+ secret_tool = None
139
+ if dict_args["use_secrets_manager"] == "true":
140
+ secret_tool = self.secrets_manager_gateway.get_secret(remote_config)
141
+
119
142
  service = pipeline_name
120
143
  service_list = []
121
144
 
122
145
  if risk_config["HANDLE_SERVICE_NAME"]["ENABLED"].lower() == "true":
123
- exclusive_endings = risk_config["HANDLE_SERVICE_NAME"]["EXCLUSIVE_ENDING"]
124
- endings_to_exclude = [
125
- ending
126
- for ending in exclusive_endings
127
- if not pipeline_name.endswith(ending)
128
- ]
129
146
  service = next(
130
147
  (
131
148
  pipeline_name.replace(ending, "")
132
- for ending in exclusive_endings
149
+ for ending in risk_config["HANDLE_SERVICE_NAME"]["CHECK_ENDING"]
133
150
  if pipeline_name.endswith(ending)
134
151
  ),
135
152
  pipeline_name,
@@ -147,7 +164,7 @@ class HandleRisk:
147
164
  service_code, dict_args, secret_tool, remote_config
148
165
  )
149
166
  service_list += self._filter_engagements(
150
- engagements, service, endings_to_exclude, risk_config
167
+ engagements, service, risk_config
151
168
  )
152
169
 
153
170
  service_list += [service]
@@ -180,15 +197,9 @@ class HandleRisk:
180
197
  dict_args,
181
198
  findings,
182
199
  exclusions,
200
+ new_service_list,
183
201
  self.devops_platform_gateway,
184
202
  self.print_table_gateway,
185
203
  )
186
- input_core = InputCore(
187
- [],
188
- {},
189
- "",
190
- "",
191
- pipeline_name,
192
- self.devops_platform_gateway.get_variable("stage").capitalize(),
193
- )
204
+
194
205
  return result, input_core
@@ -220,7 +220,8 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
220
220
  all_findings_query_params = {
221
221
  "limit": config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
222
222
  "LIMITS_QUERY"
223
- ]
223
+ ],
224
+ "duplicate": "false"
224
225
  }
225
226
  max_retries = config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
226
227
  "MAX_RETRIES_QUERY"
@@ -13,7 +13,12 @@ logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
13
13
 
14
14
 
15
15
  def runner_engine_risk(
16
- dict_args, findings, vm_exclusions, devops_platform_gateway, print_table_gateway
16
+ dict_args,
17
+ findings,
18
+ vm_exclusions,
19
+ services,
20
+ devops_platform_gateway,
21
+ print_table_gateway,
17
22
  ):
18
23
  add_epss_gateway = FirstCsv()
19
24
 
@@ -23,5 +28,6 @@ def runner_engine_risk(
23
28
  print_table_gateway,
24
29
  dict_args,
25
30
  findings,
31
+ services,
26
32
  vm_exclusions,
27
33
  )
@@ -118,9 +118,11 @@ class BreakBuild:
118
118
 
119
119
  def _remediation_rate_control(self, all_report: "list[Report]"):
120
120
  remote_config = self.remote_config
121
- remediation_rate_value = self._get_percentage(
122
- (sum(1 for report in all_report if report.mitigated)) / len(all_report)
123
- )
121
+ mitigated = sum(1 for report in all_report if report.mitigated)
122
+ total = len(all_report)
123
+ print(f"Mitigated count: {mitigated} Total count: {total}")
124
+ remediation_rate_value = self._get_percentage(mitigated / total)
125
+
124
126
  risk_threshold = remote_config["THRESHOLD"]["REMEDIATION_RATE"]
125
127
  self.remediation_rate = remediation_rate_value
126
128
 
@@ -151,14 +153,6 @@ class BreakBuild:
151
153
  def _get_percentage(self, decimal):
152
154
  return round(decimal * 100, 3)
153
155
 
154
- def _get_applied_exclusion(self, report: Report):
155
- for exclusion in self.exclusions:
156
- if exclusion.id and (report.id == exclusion.id):
157
- return exclusion
158
- elif exclusion.id and (report.vuln_id_from_tool == exclusion.id):
159
- return exclusion
160
- return None
161
-
162
156
  def _map_applied_exclusion(self, exclusions: "list[Exclusions]"):
163
157
  return [
164
158
  {
@@ -173,22 +167,27 @@ class BreakBuild:
173
167
  ]
174
168
 
175
169
  def _apply_exclusions(self, report_list: "list[Report]"):
176
- new_report_list = []
170
+ filtered_reports = []
177
171
  applied_exclusions = []
178
- exclusions_ids = {exclusion.id for exclusion in self.exclusions if exclusion.id}
179
172
 
180
173
  for report in report_list:
181
- if report.vuln_id_from_tool and (
182
- report.vuln_id_from_tool in exclusions_ids
183
- ):
184
- applied_exclusions.append(self._get_applied_exclusion(report))
185
- elif report.id and (report.id in exclusions_ids):
186
- applied_exclusions.append(self._get_applied_exclusion(report))
187
- else:
174
+ exclude = False
175
+ for exclusion in self.exclusions:
176
+ if (
177
+ (
178
+ report.vuln_id_from_tool
179
+ and report.vuln_id_from_tool == exclusion.id
180
+ )
181
+ or (report.id and report.id == exclusion.id)
182
+ ) and ((exclusion.where in report.where) or (exclusion.where == "all")):
183
+ exclude = True
184
+ applied_exclusions.append(exclusion)
185
+ break
186
+ if not exclude:
188
187
  report.reason = "Remediation Rate"
189
- new_report_list.append(report)
188
+ filtered_reports.append(report)
190
189
 
191
- return new_report_list, applied_exclusions
190
+ return filtered_reports, applied_exclusions
192
191
 
193
192
  def _tag_blacklist_control(self, report_list: "list[Report]"):
194
193
  remote_config = self.remote_config
@@ -245,7 +244,10 @@ class BreakBuild:
245
244
  report.risk_score = round(
246
245
  remote_config["WEIGHTS"]["severity"].get(report.severity.lower(), 0)
247
246
  + remote_config["WEIGHTS"]["epss_score"] * report.epss_score
248
- + remote_config["WEIGHTS"]["age"] * report.age
247
+ + min(
248
+ remote_config["WEIGHTS"]["age"] * report.age,
249
+ remote_config["WEIGHTS"]["max_age"],
250
+ )
249
251
  + sum(
250
252
  remote_config["WEIGHTS"]["tags"].get(tag, 0)
251
253
  for tag in report.tags
@@ -11,14 +11,14 @@ class GetExclusions:
11
11
  findings,
12
12
  risk_config,
13
13
  risk_exclusions,
14
- pipeline_name,
14
+ services,
15
15
  ):
16
16
  self.devops_platform_gateway = devops_platform_gateway
17
17
  self.dict_args = dict_args
18
18
  self.findings = findings
19
19
  self.risk_config = risk_config
20
20
  self.risk_exclusions = risk_exclusions
21
- self.pipeline_name = pipeline_name
21
+ self.services = services
22
22
 
23
23
  def process(self):
24
24
  core_config = self.devops_platform_gateway.get_remote_config(
@@ -49,7 +49,8 @@ class GetExclusions:
49
49
 
50
50
  def _get_exclusions(self, config, key):
51
51
  exclusions = []
52
- for scope in ["All", self.pipeline_name]:
52
+ scope_list = ["All"] + self.services
53
+ for scope in scope_list:
53
54
  if config.get(scope, None) and config[scope].get(key, None):
54
55
  exclusions.extend(
55
56
  [
@@ -26,6 +26,7 @@ def init_engine_risk(
26
26
  print_table_gateway,
27
27
  dict_args,
28
28
  findings,
29
+ services,
29
30
  vm_exclusions,
30
31
  ):
31
32
  remote_config = devops_platform_gateway.get_remote_config(
@@ -34,17 +35,12 @@ def init_engine_risk(
34
35
  risk_exclusions = devops_platform_gateway.get_remote_config(
35
36
  dict_args["remote_config_repo"], "engine_risk/Exclusions.json"
36
37
  )
37
- pipeline_name = devops_platform_gateway.get_variable("pipeline_name")
38
- if should_skip_analysis(remote_config, pipeline_name, risk_exclusions):
39
- print("Tool skipped by DevSecOps Policy.")
40
- logger.info("Tool skipped by DevSecOps Policy.")
41
- return
42
38
 
43
39
  return process_findings(
44
40
  findings,
45
41
  vm_exclusions,
46
42
  dict_args,
47
- pipeline_name,
43
+ services,
48
44
  risk_exclusions,
49
45
  remote_config,
50
46
  add_epss_gateway,
@@ -53,18 +49,11 @@ def init_engine_risk(
53
49
  )
54
50
 
55
51
 
56
- def should_skip_analysis(remote_config, pipeline_name, exclusions):
57
- ignore_pattern = remote_config["IGNORE_ANALYSIS_PATTERN"]
58
- return re.match(ignore_pattern, pipeline_name, re.IGNORECASE) or (
59
- pipeline_name in exclusions and exclusions[pipeline_name].get("SKIP_TOOL", 0)
60
- )
61
-
62
-
63
52
  def process_findings(
64
53
  findings,
65
54
  vm_exclusions,
66
55
  dict_args,
67
- pipeline_name,
56
+ services,
68
57
  risk_exclusions,
69
58
  remote_config,
70
59
  add_epss_gateway,
@@ -86,7 +75,7 @@ def process_findings(
86
75
  dict_args,
87
76
  remote_config,
88
77
  risk_exclusions,
89
- pipeline_name,
78
+ services,
90
79
  add_epss_gateway,
91
80
  print_table_gateway,
92
81
  )
@@ -100,7 +89,7 @@ def process_active_findings(
100
89
  dict_args,
101
90
  remote_config,
102
91
  risk_exclusions,
103
- pipeline_name,
92
+ services,
104
93
  add_epss_gateway,
105
94
  print_table_gateway,
106
95
  ):
@@ -111,7 +100,7 @@ def process_active_findings(
111
100
  data_added,
112
101
  remote_config,
113
102
  risk_exclusions,
114
- pipeline_name,
103
+ services,
115
104
  )
116
105
  exclusions = get_exclusions.process()
117
106
  break_build = BreakBuild(
@@ -1 +1 @@
1
- version = '1.13.2'
1
+ version = '1.14.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.13.2
3
+ Version: 1.14.0
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -1,5 +1,5 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=gINKbMqc1Nd_zyGu2UQhdNduMWxlSjF2tSzcHjXwN74,19
2
+ devsecops_engine_tools/version.py,sha256=oB3CD-aoOXzQYqOvkxp0DM_gsf5lrHCmWwwlwsT3uDI,19
3
3
  devsecops_engine_tools/engine_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  devsecops_engine_tools/engine_core/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  devsecops_engine_tools/engine_core/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -10,7 +10,7 @@ devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_T
10
10
  devsecops_engine_tools/engine_core/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  devsecops_engine_tools/engine_core/src/domain/model/custom_level_vulnerability.py,sha256=eO9m76WVslcwhYbF9IAXqhI_iYK6zKLiOVt_3AxsOLY,302
12
12
  devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=YLeOj4O7kNsUx8RD6pwBQdFLYbkm7Eh-F-ohZ3jFGbs,599
13
- devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=4Cn65ARrCw2xMAYEwoNlPUYVo5NVO0IPd6tj0wGDZig,498
13
+ devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=rFinY7wQsIu4nNPdT9WlvzB-1S1tS3J3oQgb8tDxbZk,499
14
14
  devsecops_engine_tools/engine_core/src/domain/model/finding.py,sha256=MntDksQuPt1L-1Ww3nK7NbMLfVwRjxPGCN_oHYXbbWk,383
15
15
  devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzCwsGxnrlvvk84S5iNYJRDQWbaQP9MwR3N7tVM,422
16
16
  devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py,sha256=ntn_UWqHc6sT5g_LozBdjdewTQxFsp7Kt8M0xqw-k_o,98
@@ -26,7 +26,7 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gate
26
26
  devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=c98JSdYYPyr82VZR4MRy49xSBVxueERbAS1mWwKqV6g,878
27
27
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=JP-i5SFaMN7Yi4uDCe_AE1kJ197g1IJGcwQdq-RYbk4,16198
29
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=JWVYBs3O89r2WDv1R_Ww0G4RxruFslsX_th4_UykOLI,7585
29
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=1vctNN5aSPGsSgrldPiYg2Fq86q6Z9DzFdazjWAm2Do,8133
30
30
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=yrPQdNvFNDeS4g4UxdxFDj-yw17K_OZ3T-HDEiePknE,7041
31
31
  devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
32
32
  devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -37,7 +37,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
37
37
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=blI4ZrquRE4y6DJ7N2YRx1nL0wrAXvdpx0fLSUf5qwA,4831
39
39
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=Ci4QY8zzdJR2RgZOCwoL2oPEcZ-NPesTVVQMR6epb2Y,16558
40
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=bqtDUeaEqdecvyJ6cRx9CCiCG3F-Y6FPM74xHcW6o3o,16596
41
41
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=pxlgjhX4-Dssn-XHKK8AdCOj6Ry6VcQtoDf5q8CxTks,3731
43
43
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -64,7 +64,7 @@ devsecops_engine_tools/engine_dast/src/infrastructure/helpers/__init__.py,sha256
64
64
  devsecops_engine_tools/engine_risk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
65
  devsecops_engine_tools/engine_risk/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
66
  devsecops_engine_tools/engine_risk/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
- devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py,sha256=slE5CxJ-I2-FW9I9MKSOhjeCdBQEzGKXdFfXJd7XPQ8,789
67
+ devsecops_engine_tools/engine_risk/src/applications/runner_engine_risk.py,sha256=4-QLLQ1XIpJdnprDkxlNH5kf2-mHpm74nl8K5JRD_4Q,838
68
68
  devsecops_engine_tools/engine_risk/src/deployment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
69
  devsecops_engine_tools/engine_risk/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
70
  devsecops_engine_tools/engine_risk/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -73,15 +73,15 @@ devsecops_engine_tools/engine_risk/src/domain/model/gateways/__init__.py,sha256=
73
73
  devsecops_engine_tools/engine_risk/src/domain/model/gateways/add_epss_gateway.py,sha256=cTm4QSxiaUt7ETCdXWZxKEus8pmEDA3e9k5b39SLDDE,178
74
74
  devsecops_engine_tools/engine_risk/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  devsecops_engine_tools/engine_risk/src/domain/usecases/add_data.py,sha256=4wqDj-q7hJfJscvrbMDcy7tONqxdxl-CSl_TWTRUGKA,402
76
- devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=5iGoHwyTPGaYEad598xmCcx_HzKx1IEPVLCQOnhgubE,11377
77
- devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py,sha256=4wOIBwVVQDg5zUgijrFUeOcIyIbOvv32WR8a93nlEb4,2314
76
+ devsecops_engine_tools/engine_risk/src/domain/usecases/break_build.py,sha256=sYcsReL3FF_9_NTEcK-sFCFHK5Hi9zJrMpD4cDLAX4w,11380
77
+ devsecops_engine_tools/engine_risk/src/domain/usecases/get_exclusions.py,sha256=o4vMpmgt5q1BsaWpGZWdCHPVs1CFyj-P3TrgOSEBcqM,2327
78
78
  devsecops_engine_tools/engine_risk/src/domain/usecases/handle_filters.py,sha256=w18CVVSs0mkfLYo7f-wZJv1afoPWzEU-IBKUzk7LMYI,832
79
79
  devsecops_engine_tools/engine_risk/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
80
  devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
81
  devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  devsecops_engine_tools/engine_risk/src/infrastructure/driven_adapters/first_csv/first_epss_csv.py,sha256=pWaRmIwVyiB5mlmWySHIx-DUgN9vtKQc-MqyRNVlTJo,2150
83
83
  devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=HlWPr8Mg7kjnDGDmYqJRk-dJk-V8qDhtB08uUXBPVdw,3399
84
+ devsecops_engine_tools/engine_risk/src/infrastructure/entry_points/entry_point_risk.py,sha256=URwX6I8Rihhy8x-bUR1XsZ_S3jZT61WdIkGMjPJN0ZA,2820
85
85
  devsecops_engine_tools/engine_risk/src/infrastructure/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
86
  devsecops_engine_tools/engine_sast/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
87
  devsecops_engine_tools/engine_sast/engine_code/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -286,8 +286,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
286
286
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
287
287
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
288
288
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=esLnDBxP9MQBvV8noVohTrdWSVuljTKRpZgrn2kaD_c,192
289
- devsecops_engine_tools-1.13.2.dist-info/METADATA,sha256=USwxL0_YhSsRlQXGR2x_bk98RTJ1NDt1GWYaLns6wNk,10854
290
- devsecops_engine_tools-1.13.2.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
291
- devsecops_engine_tools-1.13.2.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
292
- devsecops_engine_tools-1.13.2.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
293
- devsecops_engine_tools-1.13.2.dist-info/RECORD,,
289
+ devsecops_engine_tools-1.14.0.dist-info/METADATA,sha256=n-afXgS_Ad--GHwm-4ACrBejpCD5-iXKK8ajHfxgjuQ,10854
290
+ devsecops_engine_tools-1.14.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
291
+ devsecops_engine_tools-1.14.0.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
292
+ devsecops_engine_tools-1.14.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
293
+ devsecops_engine_tools-1.14.0.dist-info/RECORD,,