regscale-cli 6.21.0.0__py3-none-any.whl → 6.21.1.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 regscale-cli might be problematic. Click here for more details.
- regscale/_version.py +1 -1
- regscale/integrations/commercial/__init__.py +1 -2
- regscale/integrations/commercial/amazon/common.py +79 -2
- regscale/integrations/commercial/aws/cli.py +183 -9
- regscale/integrations/commercial/aws/scanner.py +544 -9
- regscale/integrations/commercial/cpe.py +18 -1
- regscale/integrations/commercial/tenablev2/jsonl_scanner.py +2 -1
- regscale/integrations/commercial/wizv2/async_client.py +10 -3
- regscale/integrations/commercial/wizv2/click.py +102 -26
- regscale/integrations/commercial/wizv2/constants.py +249 -1
- regscale/integrations/commercial/wizv2/issue.py +2 -2
- regscale/integrations/commercial/wizv2/parsers.py +3 -2
- regscale/integrations/commercial/wizv2/policy_compliance.py +1858 -0
- regscale/integrations/commercial/wizv2/scanner.py +15 -21
- regscale/integrations/commercial/wizv2/utils.py +258 -85
- regscale/integrations/commercial/wizv2/variables.py +4 -3
- regscale/integrations/compliance_integration.py +1455 -0
- regscale/integrations/public/fedramp/fedramp_five.py +1 -1
- regscale/integrations/public/fedramp/markdown_parser.py +7 -1
- regscale/integrations/scanner_integration.py +30 -2
- regscale/models/app_models/__init__.py +1 -0
- regscale/models/integration_models/cisa_kev_data.json +73 -4
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/{integrations/commercial/wizv2/models.py → models/integration_models/wizv2.py} +4 -12
- regscale/models/regscale_models/file.py +4 -0
- regscale/models/regscale_models/issue.py +123 -0
- regscale/models/regscale_models/regscale_model.py +4 -2
- regscale/models/regscale_models/security_plan.py +1 -1
- regscale/utils/graphql_client.py +3 -1
- {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/METADATA +9 -9
- {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/RECORD +37 -34
- tests/regscale/core/test_version_regscale.py +5 -3
- tests/regscale/integrations/test_wiz_policy_compliance_affected_controls.py +154 -0
- {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/LICENSE +0 -0
- {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/WHEEL +0 -0
- {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/top_level.txt +0 -0
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
"""
|
|
3
|
+
"""Wiz v2 Integration Models (RegScale pattern)."""
|
|
4
4
|
|
|
5
|
-
# standard python imports
|
|
6
5
|
from enum import Enum
|
|
7
6
|
from typing import Optional
|
|
7
|
+
from datetime import datetime
|
|
8
8
|
|
|
9
9
|
from pydantic import BaseModel, Field
|
|
10
|
-
from datetime import datetime
|
|
11
10
|
|
|
12
11
|
from regscale.models import regscale_models
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
class AssetCategory(Enum):
|
|
16
|
-
"""Map Wiz assetTypes with RegScale assetCategories"""
|
|
15
|
+
"""Map Wiz assetTypes with RegScale assetCategories."""
|
|
17
16
|
|
|
18
17
|
SERVICE_USAGE_TECHNOLOGY = regscale_models.AssetCategory.Hardware
|
|
19
18
|
GATEWAY = regscale_models.AssetCategory.Hardware
|
|
@@ -90,6 +89,7 @@ class ComplianceReport(BaseModel):
|
|
|
90
89
|
control_id: Optional[str] = Field(None, alias="Control ID")
|
|
91
90
|
compliance_check: Optional[str] = Field(None, alias="Compliance Check Name (Wiz Subcategory)")
|
|
92
91
|
control_description: Optional[str] = Field(None, alias="Control Description")
|
|
92
|
+
issue_finding_id: Optional[str] = Field(None, alias="Issue/Finding ID")
|
|
93
93
|
severity: Optional[str] = Field(None, alias="Severity")
|
|
94
94
|
result: str = Field(..., alias="Result")
|
|
95
95
|
framework: Optional[str] = Field(None, alias="Framework")
|
|
@@ -102,11 +102,3 @@ class ComplianceReport(BaseModel):
|
|
|
102
102
|
resource_id: str = Field(..., alias="Resource ID")
|
|
103
103
|
resource_region: Optional[str] = Field(None, alias="Resource Region")
|
|
104
104
|
resource_cloud_platform: Optional[str] = Field(None, alias="Resource Cloud Platform")
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
# # Attempt to create an instance of the model again
|
|
108
|
-
# example_row = data.iloc[0].to_dict()
|
|
109
|
-
# example_compliance_report = ComplianceReport(**example_row)
|
|
110
|
-
#
|
|
111
|
-
# # Display the instance
|
|
112
|
-
# example_compliance_report.dict()
|
|
@@ -375,6 +375,10 @@ class File(BaseModel):
|
|
|
375
375
|
except KeyError:
|
|
376
376
|
if file_type == ".xlsx":
|
|
377
377
|
file_type_header = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
378
|
+
elif file_type == ".docx":
|
|
379
|
+
file_type_header = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
380
|
+
elif file_type == ".pptx":
|
|
381
|
+
file_type_header = "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
378
382
|
elif file_type == ".nessus":
|
|
379
383
|
file_type_header = "text/xml"
|
|
380
384
|
elif file_type == ".gz":
|
|
@@ -1270,6 +1270,129 @@ class Issue(RegScaleModel):
|
|
|
1270
1270
|
raise ValueError(f"riskAdjustment must be one of {allowed_values}")
|
|
1271
1271
|
return v
|
|
1272
1272
|
|
|
1273
|
+
# New method to determine and set isPoam based on NIST/FedRAMP criteria
|
|
1274
|
+
def set_is_poam(
|
|
1275
|
+
self,
|
|
1276
|
+
config: Optional[Dict[str, Any]] = None,
|
|
1277
|
+
standard: str = "fedramp",
|
|
1278
|
+
current_date: Optional[datetime] = None,
|
|
1279
|
+
) -> None:
|
|
1280
|
+
"""
|
|
1281
|
+
Sets the isPoam field based on NIST 800-53 or FedRAMP criteria, preserving historical POAM status.
|
|
1282
|
+
|
|
1283
|
+
Criteria:
|
|
1284
|
+
- Preserves isPoam=True for imported data, even if closed, for reporting purposes.
|
|
1285
|
+
- For new issues:
|
|
1286
|
+
- Skips if false positive, operational requirement, or deviation rationale exists.
|
|
1287
|
+
- FedRAMP: High/Critical issues are POAMs if open; scan-based issues are POAMs if overdue; non-scan issues are POAMs if open.
|
|
1288
|
+
- NIST: POAM for any open deficiency unless accepted as residual risk.
|
|
1289
|
+
- Uses config thresholds (e.g., {'critical': 30, 'high': 90, 'medium': 90, 'low': 365, 'status': 'Open'}).
|
|
1290
|
+
|
|
1291
|
+
Args:
|
|
1292
|
+
config: Optional dictionary with severity thresholds and status from init.yaml.
|
|
1293
|
+
Defaults to FedRAMP: {'critical': 30, 'high': 30, 'medium': 90, 'low': 180, 'status': 'Open'}.
|
|
1294
|
+
For NIST, uses {'critical': 30, 'high': 90, 'medium': 90, 'low': 180, 'status': 'Open'}.
|
|
1295
|
+
standard: 'fedramp' (default) or 'nist'.
|
|
1296
|
+
current_date: Optional datetime for calculation (defaults to current time).
|
|
1297
|
+
|
|
1298
|
+
Returns:
|
|
1299
|
+
None: Sets the isPoam attribute directly.
|
|
1300
|
+
"""
|
|
1301
|
+
# Use current time if not provided
|
|
1302
|
+
current_date = current_date or datetime.datetime.now()
|
|
1303
|
+
|
|
1304
|
+
# Preserve historical POAM status for imported data
|
|
1305
|
+
if self.isPoam:
|
|
1306
|
+
return
|
|
1307
|
+
|
|
1308
|
+
# Define open statuses
|
|
1309
|
+
open_statuses = {
|
|
1310
|
+
IssueStatus.Open,
|
|
1311
|
+
IssueStatus.Delayed,
|
|
1312
|
+
IssueStatus.PendingVerification,
|
|
1313
|
+
IssueStatus.VendorDependency,
|
|
1314
|
+
IssueStatus.PendingApproval,
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
# Skip if issue is accepted as residual risk
|
|
1318
|
+
if self.falsePositive or self.operationalRequirement or self.deviationRationale:
|
|
1319
|
+
self.isPoam = False
|
|
1320
|
+
return
|
|
1321
|
+
|
|
1322
|
+
# Load default thresholds based on standard if config is not provided
|
|
1323
|
+
config = config or (
|
|
1324
|
+
{"critical": 30, "high": 30, "medium": 90, "low": 180, "status": "Open"}
|
|
1325
|
+
if standard == "fedramp"
|
|
1326
|
+
else {"critical": 30, "high": 90, "medium": 90, "low": 180, "status": "Open"}
|
|
1327
|
+
)
|
|
1328
|
+
|
|
1329
|
+
# Map severity to remediation days
|
|
1330
|
+
severity_map = {
|
|
1331
|
+
IssueSeverity.Critical: config.get("critical", 30),
|
|
1332
|
+
IssueSeverity.High: config.get("high", 90),
|
|
1333
|
+
IssueSeverity.Moderate: config.get("medium", 90),
|
|
1334
|
+
IssueSeverity.Low: config.get("low", 365),
|
|
1335
|
+
IssueSeverity.NotAssigned: config.get("low", 365),
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1338
|
+
# Normalize severity
|
|
1339
|
+
severity = (
|
|
1340
|
+
IssueSeverity(self.severityLevel)
|
|
1341
|
+
if self.severityLevel in {s.value for s in IssueSeverity}
|
|
1342
|
+
else IssueSeverity.NotAssigned
|
|
1343
|
+
)
|
|
1344
|
+
threshold_days = severity_map[severity]
|
|
1345
|
+
|
|
1346
|
+
# Get detection date
|
|
1347
|
+
detection_date_str = self.dateFirstDetected or self.dateCreated
|
|
1348
|
+
if not detection_date_str:
|
|
1349
|
+
self.isPoam = False
|
|
1350
|
+
return
|
|
1351
|
+
|
|
1352
|
+
try:
|
|
1353
|
+
detection_date = datetime.datetime.strptime(detection_date_str, "%Y-%m-%dT%H:%M:%S")
|
|
1354
|
+
except ValueError:
|
|
1355
|
+
try:
|
|
1356
|
+
detection_date = datetime.datetime.strptime(detection_date_str, "%Y-%m-%d")
|
|
1357
|
+
except ValueError:
|
|
1358
|
+
self.isPoam = False
|
|
1359
|
+
return
|
|
1360
|
+
|
|
1361
|
+
days_since_detection = (current_date - detection_date).days
|
|
1362
|
+
|
|
1363
|
+
# Define scan sources
|
|
1364
|
+
scan_sources = {"Vulnerability Assessment", "FDCC/USGCB", "Penetration Test"}
|
|
1365
|
+
is_scan = self.identification in scan_sources
|
|
1366
|
+
|
|
1367
|
+
# Apply standard-specific logic
|
|
1368
|
+
if standard == "fedramp":
|
|
1369
|
+
# FedRAMP: High/Critical are always POAMs if open
|
|
1370
|
+
if severity in {IssueSeverity.High, IssueSeverity.Critical}:
|
|
1371
|
+
self.isPoam = self.status in open_statuses
|
|
1372
|
+
# Scan-based: POAM if overdue
|
|
1373
|
+
elif is_scan:
|
|
1374
|
+
self.isPoam = days_since_detection > threshold_days
|
|
1375
|
+
# Non-scan: POAM if open
|
|
1376
|
+
else:
|
|
1377
|
+
self.isPoam = self.status in open_statuses
|
|
1378
|
+
|
|
1379
|
+
# Handle vendor dependencies
|
|
1380
|
+
if self.vendorDependency and self.vendorLastUpdate:
|
|
1381
|
+
try:
|
|
1382
|
+
vendor_date = datetime.datetime.strptime(self.vendorLastUpdate, "%Y-%m-%dT%H:%M:%S")
|
|
1383
|
+
days_since_vendor = (current_date - vendor_date).days
|
|
1384
|
+
self.isPoam = days_since_vendor > threshold_days
|
|
1385
|
+
except ValueError:
|
|
1386
|
+
pass # Fall back to detection date logic
|
|
1387
|
+
|
|
1388
|
+
else: # NIST 800-53
|
|
1389
|
+
# NIST: POAM for any open deficiency
|
|
1390
|
+
self.isPoam = self.status in open_statuses
|
|
1391
|
+
|
|
1392
|
+
# Apply status filter from config if specified
|
|
1393
|
+
if "status" in config:
|
|
1394
|
+
self.isPoam = self.isPoam and self.status == config["status"]
|
|
1395
|
+
|
|
1273
1396
|
|
|
1274
1397
|
def build_issue_dict_from_query(a: Dict[str, Any]) -> Dict[str, Any]:
|
|
1275
1398
|
"""
|
|
@@ -1279,7 +1279,9 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
1279
1279
|
exc_info=True,
|
|
1280
1280
|
)
|
|
1281
1281
|
if response and not response.ok:
|
|
1282
|
-
logger.error(
|
|
1282
|
+
logger.error(
|
|
1283
|
+
f"Response Error: Code #{response.status_code}: {response.reason}\n{response.text}", exc_info=True
|
|
1284
|
+
)
|
|
1283
1285
|
if response is None:
|
|
1284
1286
|
error_msg = "Response was None"
|
|
1285
1287
|
logger.error(error_msg)
|
|
@@ -1522,7 +1524,7 @@ class RegScaleModel(BaseModel, ABC):
|
|
|
1522
1524
|
:return: A list of objects
|
|
1523
1525
|
:rtype: List[T]
|
|
1524
1526
|
"""
|
|
1525
|
-
response = cls._get_api_handler().get(endpoint=cls.get_endpoint("list"))
|
|
1527
|
+
response = cls._get_api_handler().get(endpoint=cls.get_endpoint("list").format(module_slug=cls._module_slug))
|
|
1526
1528
|
if response.ok:
|
|
1527
1529
|
return cast(List[T], [cls.get_object(object_id=sp["id"]) for sp in response.json()])
|
|
1528
1530
|
else:
|
regscale/utils/graphql_client.py
CHANGED
|
@@ -5,6 +5,8 @@ A module for making paginated GraphQL queries.
|
|
|
5
5
|
import logging
|
|
6
6
|
from typing import List, Dict, Optional, Any
|
|
7
7
|
|
|
8
|
+
import graphql
|
|
9
|
+
|
|
8
10
|
from regscale.core.app.utils.app_utils import create_progress_object, error_and_exit
|
|
9
11
|
|
|
10
12
|
logger = logging.getLogger(__name__)
|
|
@@ -90,7 +92,7 @@ class PaginatedGraphQLClient:
|
|
|
90
92
|
return result
|
|
91
93
|
except Exception as e:
|
|
92
94
|
logger.error(f"An error occurred while executing the query: {str(e)}", exc_info=True)
|
|
93
|
-
logger.error(f"Query: {self.query}")
|
|
95
|
+
logger.error(f"Query: {graphql.print_ast(self.query)}")
|
|
94
96
|
error_and_exit(f"Variable: {variables}")
|
|
95
97
|
|
|
96
98
|
def fetch_results(self, variables: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: regscale-cli
|
|
3
|
-
Version: 6.21.
|
|
3
|
+
Version: 6.21.1.0
|
|
4
4
|
Summary: Command Line Interface (CLI) for bulk processing/loading data into RegScale
|
|
5
5
|
Home-page: https://github.com/RegScale/regscale-cli
|
|
6
6
|
Author: Travis Howerton
|
|
@@ -56,7 +56,7 @@ Requires-Dist: pydantic ~=2.11.0
|
|
|
56
56
|
Requires-Dist: pypandoc
|
|
57
57
|
Requires-Dist: pypandoc-binary
|
|
58
58
|
Requires-Dist: pytest
|
|
59
|
-
Requires-Dist: python-dateutil ~=2.
|
|
59
|
+
Requires-Dist: python-dateutil ~=2.9.0
|
|
60
60
|
Requires-Dist: python-docx
|
|
61
61
|
Requires-Dist: python-jwt ==4.1.0
|
|
62
62
|
Requires-Dist: pyxnat ==1.5.*
|
|
@@ -137,7 +137,7 @@ Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow'
|
|
|
137
137
|
Requires-Dist: pypandoc ; extra == 'airflow'
|
|
138
138
|
Requires-Dist: pypandoc-binary ; extra == 'airflow'
|
|
139
139
|
Requires-Dist: pytest ; extra == 'airflow'
|
|
140
|
-
Requires-Dist: python-dateutil ~=2.
|
|
140
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'airflow'
|
|
141
141
|
Requires-Dist: python-docx ; extra == 'airflow'
|
|
142
142
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow'
|
|
143
143
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow'
|
|
@@ -222,7 +222,7 @@ Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow-azure'
|
|
|
222
222
|
Requires-Dist: pypandoc ; extra == 'airflow-azure'
|
|
223
223
|
Requires-Dist: pypandoc-binary ; extra == 'airflow-azure'
|
|
224
224
|
Requires-Dist: pytest ; extra == 'airflow-azure'
|
|
225
|
-
Requires-Dist: python-dateutil ~=2.
|
|
225
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'airflow-azure'
|
|
226
226
|
Requires-Dist: python-docx ; extra == 'airflow-azure'
|
|
227
227
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow-azure'
|
|
228
228
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow-azure'
|
|
@@ -307,7 +307,7 @@ Requires-Dist: pyodbc ; extra == 'airflow-sqlserver'
|
|
|
307
307
|
Requires-Dist: pypandoc ; extra == 'airflow-sqlserver'
|
|
308
308
|
Requires-Dist: pypandoc-binary ; extra == 'airflow-sqlserver'
|
|
309
309
|
Requires-Dist: pytest ; extra == 'airflow-sqlserver'
|
|
310
|
-
Requires-Dist: python-dateutil ~=2.
|
|
310
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'airflow-sqlserver'
|
|
311
311
|
Requires-Dist: python-docx ; extra == 'airflow-sqlserver'
|
|
312
312
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow-sqlserver'
|
|
313
313
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow-sqlserver'
|
|
@@ -397,7 +397,7 @@ Requires-Dist: pydantic ~=2.11.0 ; extra == 'all'
|
|
|
397
397
|
Requires-Dist: pypandoc ; extra == 'all'
|
|
398
398
|
Requires-Dist: pypandoc-binary ; extra == 'all'
|
|
399
399
|
Requires-Dist: pytest ; extra == 'all'
|
|
400
|
-
Requires-Dist: python-dateutil ~=2.
|
|
400
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'all'
|
|
401
401
|
Requires-Dist: python-docx ; extra == 'all'
|
|
402
402
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'all'
|
|
403
403
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'all'
|
|
@@ -460,7 +460,7 @@ Requires-Dist: pydantic ~=2.11.0 ; extra == 'ansible'
|
|
|
460
460
|
Requires-Dist: pypandoc ; extra == 'ansible'
|
|
461
461
|
Requires-Dist: pypandoc-binary ; extra == 'ansible'
|
|
462
462
|
Requires-Dist: pytest ; extra == 'ansible'
|
|
463
|
-
Requires-Dist: python-dateutil ~=2.
|
|
463
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'ansible'
|
|
464
464
|
Requires-Dist: python-docx ; extra == 'ansible'
|
|
465
465
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'ansible'
|
|
466
466
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'ansible'
|
|
@@ -539,7 +539,7 @@ Requires-Dist: pytest-rerunfailures ; extra == 'dev'
|
|
|
539
539
|
Requires-Dist: pytest-timeout ; extra == 'dev'
|
|
540
540
|
Requires-Dist: pytest-xdist ; extra == 'dev'
|
|
541
541
|
Requires-Dist: pytest >=5 ; extra == 'dev'
|
|
542
|
-
Requires-Dist: python-dateutil ~=2.
|
|
542
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'dev'
|
|
543
543
|
Requires-Dist: python-docx ; extra == 'dev'
|
|
544
544
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'dev'
|
|
545
545
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'dev'
|
|
@@ -612,7 +612,7 @@ Requires-Dist: pydantic ~=2.11.0 ; extra == 'server'
|
|
|
612
612
|
Requires-Dist: pypandoc ; extra == 'server'
|
|
613
613
|
Requires-Dist: pypandoc-binary ; extra == 'server'
|
|
614
614
|
Requires-Dist: pytest ; extra == 'server'
|
|
615
|
-
Requires-Dist: python-dateutil ~=2.
|
|
615
|
+
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'server'
|
|
616
616
|
Requires-Dist: python-docx ; extra == 'server'
|
|
617
617
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'server'
|
|
618
618
|
Requires-Dist: pyxnat ==1.5.* ; extra == 'server'
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
regscale/__init__.py,sha256=ZygAIkX6Nbjag1czWdQa-yP-GM1mBE_9ss21Xh__JFc,34
|
|
2
|
-
regscale/_version.py,sha256=
|
|
2
|
+
regscale/_version.py,sha256=ZNoBEcDPwvjFkcNtD13MCFkCIEI7M9cOOgL0ENSQ9Qo,1198
|
|
3
3
|
regscale/regscale.py,sha256=xcxnTwEwWgfO3Fnp0LVo32SZCJzAswq3WDZgm21nHnI,30914
|
|
4
4
|
regscale/airflow/__init__.py,sha256=yMwN0Bz4JbM0nl5qY_hPegxo_O2ilhTOL9PY5Njhn-s,270
|
|
5
5
|
regscale/airflow/click_dags.py,sha256=H3SUR5jkvInNMv1gu-VG-Ja_H-kH145CpQYNalWNAbE,4520
|
|
@@ -111,14 +111,15 @@ regscale/exceptions/validation_exception.py,sha256=_DW_GARtPr_Dyy8tolnvC_AYsHRsU
|
|
|
111
111
|
regscale/integrations/__init__.py,sha256=Sqthp3Jggo7co_go380cLn3OAb0cHwqL609_4QJSFBY,58
|
|
112
112
|
regscale/integrations/api_paginator.py,sha256=73rjaNM9mGv8evHAeoObXEjZPg-bJuGPo60ewCLEil8,33192
|
|
113
113
|
regscale/integrations/api_paginator_example.py,sha256=lEuYI-xEGcjnXuIzbCobCP0YRuukLF0s8S3d382SAH4,12119
|
|
114
|
+
regscale/integrations/compliance_integration.py,sha256=3mNQ03_eZwWjU2ADyL30IBKBsYuOWdXMIdEwvjrLU9w,63049
|
|
114
115
|
regscale/integrations/integration_override.py,sha256=HjYBCuvNpU3t3FptaqYAkdexLFOZBAFrFE9xU0RD1Nc,5867
|
|
115
116
|
regscale/integrations/jsonl_scanner_integration.py,sha256=l8nq_T3rE1XX-6HxrNHm3xzxCNWbIjxQvGMdtZWs7KQ,57003
|
|
116
|
-
regscale/integrations/scanner_integration.py,sha256=
|
|
117
|
+
regscale/integrations/scanner_integration.py,sha256=pkQtMFiKQEYjS23H54Md_iibuhHXhIYLKuMY4iYQ31w,144242
|
|
117
118
|
regscale/integrations/variables.py,sha256=MfQ34WuYVN5437A9sZ2ssHRkA3gFhMHfk1DVasceGmY,2336
|
|
118
|
-
regscale/integrations/commercial/__init__.py,sha256=
|
|
119
|
+
regscale/integrations/commercial/__init__.py,sha256=VW8x5m0FZxIGFjNpSN6CHF6xRzxeyKprOBFMpsvjfzM,13874
|
|
119
120
|
regscale/integrations/commercial/ad.py,sha256=YXSmK8vRf6yi2GnREGa5GrE6GelhFrLj44SY8AO1pK0,15509
|
|
120
121
|
regscale/integrations/commercial/burp.py,sha256=3BLNKLfwL1x7jfhd8MJD6hdHEpj58pOEtrtCkn2hcWA,3344
|
|
121
|
-
regscale/integrations/commercial/cpe.py,sha256=
|
|
122
|
+
regscale/integrations/commercial/cpe.py,sha256=vUHKGdq0UlR38pZWqqHLLTdDfooLtE9zIiFHdoFcUr0,5735
|
|
122
123
|
regscale/integrations/commercial/crowdstrike.py,sha256=6x7_GlYDRCZvPZwqgrDT5KMnXCa6H4RKO-FNkiYxHgU,40194
|
|
123
124
|
regscale/integrations/commercial/defender.py,sha256=yoKFAj4N-kpkKJIjiVDnFv8JbMsXYdyYTtle0BajnZ8,66573
|
|
124
125
|
regscale/integrations/commercial/dependabot.py,sha256=V4VbHbwrxHfe7eCilJ7U_MBeIO6X3wetGfIo2DJYe_c,7793
|
|
@@ -137,12 +138,12 @@ regscale/integrations/commercial/sqlserver.py,sha256=PcDLmsZ9xU5NlFpwPZyMhhxCgX4
|
|
|
137
138
|
regscale/integrations/commercial/veracode.py,sha256=sKeGXvjqP8LfFP56xavAyx5CxfKxpJIEw-PTxrHJ8bc,3374
|
|
138
139
|
regscale/integrations/commercial/xray.py,sha256=rsmlGqj4N7hzt6rW5UIKOBZD2maDVwXxOXiYKlI6F8c,2728
|
|
139
140
|
regscale/integrations/commercial/amazon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
140
|
-
regscale/integrations/commercial/amazon/common.py,sha256=
|
|
141
|
+
regscale/integrations/commercial/amazon/common.py,sha256=EHTu5YEceOsznZQTB7IF9K1oS-JDSYlFBBRMZDvMhaQ,6189
|
|
141
142
|
regscale/integrations/commercial/aqua/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
143
|
regscale/integrations/commercial/aqua/aqua.py,sha256=bdwqyir9ztGRwqZlWBQIHjtBEo2utSy5HJoraAx823I,2656
|
|
143
144
|
regscale/integrations/commercial/aws/__init__.py,sha256=Pii3CMGvIwZnTSenuvDvuybWXBtIRdGyvF02sykzg1A,203
|
|
144
|
-
regscale/integrations/commercial/aws/cli.py,sha256=
|
|
145
|
-
regscale/integrations/commercial/aws/scanner.py,sha256=
|
|
145
|
+
regscale/integrations/commercial/aws/cli.py,sha256=Q2QlUcbYRzZzg9VZ5RDOTdVkkWc4UFYX7f5cMNlOZMY,14853
|
|
146
|
+
regscale/integrations/commercial/aws/scanner.py,sha256=odN8nWhIlxGLBdVVVgfhp9wHq5yE32pzr9BK7OIjDkw,56770
|
|
146
147
|
regscale/integrations/commercial/aws/inventory/__init__.py,sha256=nBWBRs_lTbp3tfCcnmN855qQpnXtwyJ5miTXlD7Uhcs,4302
|
|
147
148
|
regscale/integrations/commercial/aws/inventory/base.py,sha256=KL1Ntz0h0WGDu84LQf3y92uLl9a0sl4yIFi6-ZIFAMI,2068
|
|
148
149
|
regscale/integrations/commercial/aws/inventory/resources/__init__.py,sha256=wP8TMIixWGCn2rBNFW6XzhME-xO8kpxi9edMUJgpso4,523
|
|
@@ -216,7 +217,7 @@ regscale/integrations/commercial/synqly/vulnerabilities.py,sha256=qPiw5oWOGQwZad
|
|
|
216
217
|
regscale/integrations/commercial/tenablev2/__init__.py,sha256=UpSY_oww83kz9c7amdbptJKwDB1gAOBQDS-Q9WFp588,295
|
|
217
218
|
regscale/integrations/commercial/tenablev2/authenticate.py,sha256=VPTmxaVCaah2gJYNeU9P1KoQ734ohGQ-wcVy6JfqDTE,1247
|
|
218
219
|
regscale/integrations/commercial/tenablev2/commands.py,sha256=4pUfHv_a3ddbKiS_nQ0W6u86rKGzm9PQbEF67OfsE-4,27862
|
|
219
|
-
regscale/integrations/commercial/tenablev2/jsonl_scanner.py,sha256=
|
|
220
|
+
regscale/integrations/commercial/tenablev2/jsonl_scanner.py,sha256=6dv92JslX_p_N6vuwCj4hj1OPy935a-ZjPz0dsWaXuw,83577
|
|
220
221
|
regscale/integrations/commercial/tenablev2/sc_scanner.py,sha256=WQ7ctneHz3fYOrR_GvVUJL3BuKNoN515y7pG8ATMjOM,24102
|
|
221
222
|
regscale/integrations/commercial/tenablev2/scanner.py,sha256=bKm7MmZ_xAjKwNT0x16WvuRbQcip3pXg8xqPNHejgKs,21584
|
|
222
223
|
regscale/integrations/commercial/tenablev2/stig_parsers.py,sha256=01h5ImYMUsjrVHaGgqj5JVBx6Jzlhg06ufu0SL_uBEs,5983
|
|
@@ -228,16 +229,16 @@ regscale/integrations/commercial/trivy/commands.py,sha256=YGQFtpQGkmcLT3X2OVp7lt
|
|
|
228
229
|
regscale/integrations/commercial/trivy/scanner.py,sha256=iiwTvjqRlLRgQvCs_FP0j83B7ApOta0MSXyO0-iHfSk,11309
|
|
229
230
|
regscale/integrations/commercial/wizv2/WizDataMixin.py,sha256=s7F_rVrP9IZa_x_vh3MswR7W_UBHRfd4kHGVsNX4ips,3606
|
|
230
231
|
regscale/integrations/commercial/wizv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
231
|
-
regscale/integrations/commercial/wizv2/async_client.py,sha256=
|
|
232
|
-
regscale/integrations/commercial/wizv2/click.py,sha256=
|
|
233
|
-
regscale/integrations/commercial/wizv2/constants.py,sha256=
|
|
234
|
-
regscale/integrations/commercial/wizv2/issue.py,sha256=
|
|
235
|
-
regscale/integrations/commercial/wizv2/
|
|
236
|
-
regscale/integrations/commercial/wizv2/
|
|
232
|
+
regscale/integrations/commercial/wizv2/async_client.py,sha256=a_UVGKFpfmufZLaigFaWFQTS8xTrJF6NcNKQjG7pMcw,12819
|
|
233
|
+
regscale/integrations/commercial/wizv2/click.py,sha256=8imtb5L4k1x0wvxGpANf-xQOpjnMM3KZ5LKX39Bwigc,15200
|
|
234
|
+
regscale/integrations/commercial/wizv2/constants.py,sha256=E7DDUhPVp372wZCVZZffdD7LRO6tGdxljaR_aHlzEx0,46910
|
|
235
|
+
regscale/integrations/commercial/wizv2/issue.py,sha256=PA_7BNpCnHGoAc1caU6COGHaIIvCBvIt6DLn3L7Bilo,13451
|
|
236
|
+
regscale/integrations/commercial/wizv2/parsers.py,sha256=dsSMiZaUrBXbuW7U-I5nLoF-TQlpvXys83sTSqT4Yks,11819
|
|
237
|
+
regscale/integrations/commercial/wizv2/policy_compliance.py,sha256=v-sWeeTYLc3EtOzZXpDMqEoWlbIL6jUKRI0kj2V4IyY,75167
|
|
237
238
|
regscale/integrations/commercial/wizv2/sbom.py,sha256=QcGaYiBGtZ3mBcbo-KGl-I2u6QHKAIinTk26LPy0Kng,4466
|
|
238
|
-
regscale/integrations/commercial/wizv2/scanner.py,sha256=
|
|
239
|
-
regscale/integrations/commercial/wizv2/utils.py,sha256=
|
|
240
|
-
regscale/integrations/commercial/wizv2/variables.py,sha256=
|
|
239
|
+
regscale/integrations/commercial/wizv2/scanner.py,sha256=0YgFtvYnFhevUJwbiWSUlBofCbR7cTkOsuGXTlR8NcY,74479
|
|
240
|
+
regscale/integrations/commercial/wizv2/utils.py,sha256=npdIwR_XG_5VZkr_YXgMe8cjhcYKncNndglD55qwWc8,55996
|
|
241
|
+
regscale/integrations/commercial/wizv2/variables.py,sha256=2DVIN4JPYX9hN6wTdEI9ZdHXYDPpYSu4mAC0yVibPLg,1992
|
|
241
242
|
regscale/integrations/commercial/wizv2/wiz_auth.py,sha256=qGcUhpC9eRkJIngmv3i9yHdp0q9rv6AvA5gHkypYzCE,5549
|
|
242
243
|
regscale/integrations/integration/__init__.py,sha256=WJgPLnEahD94QLE8NR8QCzlf8xk2ix76_WPDlf98ezU,70
|
|
243
244
|
regscale/integrations/integration/integration.py,sha256=pr_fbqBieYbqp3PdBjuqKuZCYFf0kF4GkFdlViTKG54,586
|
|
@@ -259,12 +260,12 @@ regscale/integrations/public/fedramp/docx_parser.py,sha256=EA9g1iTlB6-GtOzV9JwGW
|
|
|
259
260
|
regscale/integrations/public/fedramp/fedramp_cis_crm.py,sha256=IVASI6W0uEOg_SyxJSqyHev1KzSwEnF1RTWYT3qfViw,64576
|
|
260
261
|
regscale/integrations/public/fedramp/fedramp_common.py,sha256=Mdy3_WdCEcTwSXEEKXiODmr2YJTWcTg6jfyWZJWfruQ,115406
|
|
261
262
|
regscale/integrations/public/fedramp/fedramp_docx.py,sha256=eKkRwfcIi4aHJp4ajKDUGJECItwrZwYfCiKzmfB2W1Q,13703
|
|
262
|
-
regscale/integrations/public/fedramp/fedramp_five.py,sha256=
|
|
263
|
+
regscale/integrations/public/fedramp/fedramp_five.py,sha256=F5z4AcG2uJ7t8ygkzMKZ-W4qIKnbRjotwcXTkGeLezU,92613
|
|
263
264
|
regscale/integrations/public/fedramp/fedramp_traversal.py,sha256=BkgwsFluZO5g0Rc0WujYgbc1_YLofamJzFP7Z5UYfao,4528
|
|
264
265
|
regscale/integrations/public/fedramp/import_fedramp_r4_ssp.py,sha256=Opld0vEZ4b71cIDogu6ykTUL86tXZVTSnwQzjz8w_4U,9925
|
|
265
266
|
regscale/integrations/public/fedramp/import_workbook.py,sha256=VFNBjBNLLRL3WjkJmE9CamizNsLgfdX5g8YolOr8lPY,19658
|
|
266
267
|
regscale/integrations/public/fedramp/inventory_items.py,sha256=nBgVgigMyZ2C6fJ9QCvz-8KvSlGtqi1lqC3alBUlzyg,10080
|
|
267
|
-
regscale/integrations/public/fedramp/markdown_parser.py,sha256=
|
|
268
|
+
regscale/integrations/public/fedramp/markdown_parser.py,sha256=TwNFFRiXaoocNpjo8SfzBY8D6NTd7FsShnzE9V89kZw,5561
|
|
268
269
|
regscale/integrations/public/fedramp/metadata.py,sha256=eh8AA5YNHUxHGnlbLRmhovINBKqkAJR98EUFDX1g5Z0,26543
|
|
269
270
|
regscale/integrations/public/fedramp/parts_mapper.py,sha256=aBh1gWo-3-JFDDxHQaxrvqC7OFTxS6qWEFfoHlknomc,3787
|
|
270
271
|
regscale/integrations/public/fedramp/properties.py,sha256=Yr9NGM9-vFTbnipl7TRNfo83HJ7FKkCJSECaLtT35eQ,7007
|
|
@@ -299,7 +300,7 @@ regscale/models/hierarchy.py,sha256=XnQ-pjE3LKViwRQpxdCEU0TWBGzMJo1MqWgbEJgumAU,
|
|
|
299
300
|
regscale/models/inspect_models.py,sha256=oRJnLeeAUYIbYXsbPKNpMCyazxQnyH5r-2XxVc5Ih9c,2521
|
|
300
301
|
regscale/models/locking.py,sha256=5GumeAP3SBChurTgWRvh0wgCVwfos32mn0OYDwxhUmg,3151
|
|
301
302
|
regscale/models/platform.py,sha256=tTcnBZ-rr1n4X41OF9g3zGx-8ORS8BsOKjzSxwm6fZg,4242
|
|
302
|
-
regscale/models/app_models/__init__.py,sha256=
|
|
303
|
+
regscale/models/app_models/__init__.py,sha256=0V4Em8RqK83EZeMIa3tm_sDh9yOS7mzvKF01v-kJug0,219
|
|
303
304
|
regscale/models/app_models/catalog_compare.py,sha256=gLD8ti933nW70FcGlx6gp0Lbdo8cFnKky7JkRFAKfOU,7557
|
|
304
305
|
regscale/models/app_models/click.py,sha256=2kZuBOpHFjpFKtI7rT_ht26G9bjHL_EUUoYlLC-O3B4,9961
|
|
305
306
|
regscale/models/app_models/datetime_encoder.py,sha256=AvKkXWhrd87jTfNnY5Q2gw5IdXkCQDnE_44Lay2ZUAA,518
|
|
@@ -312,7 +313,7 @@ regscale/models/integration_models/azure_alerts.py,sha256=2etrpvcxa7jVQrc98bJlVG
|
|
|
312
313
|
regscale/models/integration_models/base64.py,sha256=sxV6O5qY1_TstJENX5jBPsSdQwmA83-NNhgJFunXiZE,570
|
|
313
314
|
regscale/models/integration_models/burp.py,sha256=FBEBkH3U0Q8vq71FFoWnvgLRF5Hkr9GYmQFmNNHFrVk,16932
|
|
314
315
|
regscale/models/integration_models/burp_models.py,sha256=UytDTAcCaxyu-knFkm_mEUH6UmWK3OTXKSC9Sc6OjVs,3669
|
|
315
|
-
regscale/models/integration_models/cisa_kev_data.json,sha256=
|
|
316
|
+
regscale/models/integration_models/cisa_kev_data.json,sha256=qtIeIg3jzABiXQ_98VSS4sufBo7UvywnaGaMt6SSIHQ,1251846
|
|
316
317
|
regscale/models/integration_models/defender_data.py,sha256=jsAcjKxiGmumGerj7xSWkFd6r__YpuKDnYX5o7xHDiE,2844
|
|
317
318
|
regscale/models/integration_models/defenderimport.py,sha256=Ze4kgwns-IYPyO7sBjEzW8PXWlxwU-DAo2fIyRcTC3k,6242
|
|
318
319
|
regscale/models/integration_models/drf.py,sha256=Aq7AdLa_CH97NrnR-CxaFI22JjVN9uCxVN7Z-BBUaNU,18896
|
|
@@ -328,6 +329,7 @@ regscale/models/integration_models/send_reminders.py,sha256=h9zOX5Hb7e4K7qFmG-Fi
|
|
|
328
329
|
regscale/models/integration_models/snyk.py,sha256=uxPAKcfbMX6GyNaPmKOex1OHJIcSkXTdnLK2TKBkjO4,13986
|
|
329
330
|
regscale/models/integration_models/trivy_import.py,sha256=R6aZXUaNKf5Gdo1kNxIKM-HMW95XDWVCG_gMrzDYNuQ,9210
|
|
330
331
|
regscale/models/integration_models/veracode.py,sha256=kYwsIojZDMxeXdUCio7XyNob4DHM0x-c8jv4zQCWoS0,10147
|
|
332
|
+
regscale/models/integration_models/wizv2.py,sha256=mGcr9cUHo3I3388YnNG6MFSm0WvE33D1fdYqre281KU,5515
|
|
331
333
|
regscale/models/integration_models/xray.py,sha256=U2XFPzBXrGhPiYNKSuderJ-ARf1-GcGuMJr2fcXZrs8,12755
|
|
332
334
|
regscale/models/integration_models/amazon_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
333
335
|
regscale/models/integration_models/amazon_models/inspector.py,sha256=AcV_Nk4ZJMJqmRMpmpbu8LDqp4F2D6GD_IcKsh9MYcs,12915
|
|
@@ -342,7 +344,7 @@ regscale/models/integration_models/flat_file_importer/__init__.py,sha256=IoM8SPj
|
|
|
342
344
|
regscale/models/integration_models/sbom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
343
345
|
regscale/models/integration_models/sbom/cyclone_dx.py,sha256=0pFR0BWBrF5c8_cC_8mj2MXvNOMHOdHbBYXvTVfFAh8,4058
|
|
344
346
|
regscale/models/integration_models/synqly_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
345
|
-
regscale/models/integration_models/synqly_models/capabilities.json,sha256=
|
|
347
|
+
regscale/models/integration_models/synqly_models/capabilities.json,sha256=ifZ1gy5R_F-ytd9N0AsYuHDDx3F-Z9D3I0rHxMROz-s,384906
|
|
346
348
|
regscale/models/integration_models/synqly_models/connector_types.py,sha256=8nxptkTexpskySnmL0obNAff_iu_fx6tJ7i1-4hJvao,461
|
|
347
349
|
regscale/models/integration_models/synqly_models/ocsf_mapper.py,sha256=e2kTOhWSNRnzbgMchMx-7c21pCgSv2DqWnxvajKEKJM,16960
|
|
348
350
|
regscale/models/integration_models/synqly_models/param.py,sha256=Xt5Zm6lC_VkLj7LF2qXo72TJZHysqttsp5ai0NCf1po,2643
|
|
@@ -389,7 +391,7 @@ regscale/models/regscale_models/email.py,sha256=kgEzXTUZr7uHksMOCextWbXJXYuRKyXO
|
|
|
389
391
|
regscale/models/regscale_models/evidence.py,sha256=R78f3eWjmBgusZbv8i9cd5O8Is43KjvxiaJH_CLERqE,4316
|
|
390
392
|
regscale/models/regscale_models/evidence_mapping.py,sha256=eovTJsl1cjZMvbhpOv70nILIHSXmURyU4mg_r09h4VQ,1444
|
|
391
393
|
regscale/models/regscale_models/facility.py,sha256=J3gGv0Tf3zNdyKGhb0iM8WjgjWqJHZLKdcN9n-jDrTA,1059
|
|
392
|
-
regscale/models/regscale_models/file.py,sha256=
|
|
394
|
+
regscale/models/regscale_models/file.py,sha256=zHIZvhgxMWTXX5ku98dRJcDSQ1VrRyUuorA6N9YEBzU,14711
|
|
393
395
|
regscale/models/regscale_models/filetag.py,sha256=jd99xcQsGheLFfy7PYtZEzT-re_Dp_ZoUF3GWYMsi0Q,1138
|
|
394
396
|
regscale/models/regscale_models/form_field_value.py,sha256=xKnbXWQl4xVuUQMbeRK23MbPO7SOMARBvvH2O98UOm4,5816
|
|
395
397
|
regscale/models/regscale_models/functional_roles.py,sha256=Vm_j-UZBKoaiONO75VqqCKnDHE6ynP0X5XZmKXl8UT8,932
|
|
@@ -400,7 +402,7 @@ regscale/models/regscale_models/implementation_role.py,sha256=ZjJOhjM3dVlulsGx3l
|
|
|
400
402
|
regscale/models/regscale_models/incident.py,sha256=jsS4MfigzjwFphvdIrBk62GfvbceQ8VL-AhfQSQM460,6028
|
|
401
403
|
regscale/models/regscale_models/inherited_control.py,sha256=RuQJgVyZgfoIrUG_vvwQYHECb3wsFjDH-zPj-bIFBNU,2007
|
|
402
404
|
regscale/models/regscale_models/interconnection.py,sha256=8Q9CGeHEX9TXQrim_NIAj9KuM4MwaUTpBLs_LKaXAlw,1256
|
|
403
|
-
regscale/models/regscale_models/issue.py,sha256=
|
|
405
|
+
regscale/models/regscale_models/issue.py,sha256=FwbtkdNL05isPrdtssHbtAjgG_djdqnd94xKkmeBKvo,58281
|
|
404
406
|
regscale/models/regscale_models/leveraged_authorization.py,sha256=OUrL8JQV3r7T3ldHlL6Y_ZLv6KuQIC-3eZW5wZ7XFUk,4192
|
|
405
407
|
regscale/models/regscale_models/line_of_inquiry.py,sha256=Uu0lQEhif0W6yTSkJo27GyQGmExSngJvyqGBTr4Q8Fg,1713
|
|
406
408
|
regscale/models/regscale_models/link.py,sha256=lAY4Ig3Menm1EqfcAbVJ7jsCsRO5tWtJIf-9-G9FXT8,6593
|
|
@@ -425,7 +427,7 @@ regscale/models/regscale_models/questionnaire.py,sha256=QMSXfNpSoaS8tkeo80C7OWLj
|
|
|
425
427
|
regscale/models/regscale_models/questionnaire_instance.py,sha256=1LgGTwFACmWx2xOOqUKhAUOms4_3L6NZySzuteg0_sI,8241
|
|
426
428
|
regscale/models/regscale_models/rbac.py,sha256=ulT9BzOpYNNVlBVfOmreGDTTAgzkAY5Si2rQhhIcUmY,5302
|
|
427
429
|
regscale/models/regscale_models/reference.py,sha256=P_7jT6H-NZIa7TyH3j98N-ZHlB6FsjpZVRZCCpms-D4,3253
|
|
428
|
-
regscale/models/regscale_models/regscale_model.py,sha256=
|
|
430
|
+
regscale/models/regscale_models/regscale_model.py,sha256=SU9CZXbtxBU6-hVW8jKlKWrJD7ypPG7wmATo7w8hSrw,69838
|
|
429
431
|
regscale/models/regscale_models/requirement.py,sha256=-8PnMbuWAZHol5X1w-fzm-moD784Et0oevSVbz6xLhU,767
|
|
430
432
|
regscale/models/regscale_models/risk.py,sha256=lZFDYPpTt0aEYCrYz5FBKk1Y4y2CKXYU1A8eEKT3zzg,8661
|
|
431
433
|
regscale/models/regscale_models/risk_issue_mapping.py,sha256=j6uR0x6xymJ0BsIwgnadeUQDshHNhU3VnpyItZp4dc4,2393
|
|
@@ -434,7 +436,7 @@ regscale/models/regscale_models/sbom.py,sha256=UYS3lBizGqz7A7vNPYBYzpL8PWIaXLl7Z
|
|
|
434
436
|
regscale/models/regscale_models/scan_history.py,sha256=o4e9P2rQlqlLj4mbgSPX44jutTJo1nocI1DDXyWyf6w,16741
|
|
435
437
|
regscale/models/regscale_models/search.py,sha256=rPbFDCnnBRHY5JJv9Ev3_6GjMlkdhUAsaUzC97eE2Ys,1015
|
|
436
438
|
regscale/models/regscale_models/security_control.py,sha256=GJEMkIh6IDX7Gs_z7ppmm0hqiXjC5qSbSYRYt85wOUg,6365
|
|
437
|
-
regscale/models/regscale_models/security_plan.py,sha256=
|
|
439
|
+
regscale/models/regscale_models/security_plan.py,sha256=D0QVU-_YtnvbUdwt90eSlxCS5ohMXbbpAo0D5GzRx7E,8604
|
|
438
440
|
regscale/models/regscale_models/software_inventory.py,sha256=FRAIfoUlS0kaX1HQRDyV5q4yxwRHilXbS52NSj6exo0,5555
|
|
439
441
|
regscale/models/regscale_models/stake_holder.py,sha256=JIuDTIky_3acDl-NOMwylTHkppN38JgPDZ1A6wM-BGE,1956
|
|
440
442
|
regscale/models/regscale_models/stig.py,sha256=y-PQuGg3pwDTfsNZGW6anaNAjIZBQoNe7GOLMiT5zfw,26329
|
|
@@ -465,7 +467,7 @@ regscale/utils/decorators.py,sha256=3QLjZ4_QfUSdJYYMw4nGE7EPdo2P7P3AERZxHHVgXDI,
|
|
|
465
467
|
regscale/utils/dict_utils.py,sha256=2iCUMUZP8urkmpzB3BpnaSMrEQtrT9u4HINLSXGiXyI,2468
|
|
466
468
|
regscale/utils/files.py,sha256=LtOca6DK4yZxBE037fRi1lsJeHmBmXLBkDq_er3Uhmw,2410
|
|
467
469
|
regscale/utils/fxns.py,sha256=dLmxVkeoYXljAs0JbWaehBqZ2BxrdZ9ilH9FGvWRWx4,914
|
|
468
|
-
regscale/utils/graphql_client.py,sha256=
|
|
470
|
+
regscale/utils/graphql_client.py,sha256=ENbvJlhRvk5XIVAFbDwTGOS7g6AfOW-bZRoTfWGZYl4,4519
|
|
469
471
|
regscale/utils/lists.py,sha256=CuxSVJNSFQ5TXtzXh5LQqL4yOZhuCmfcKbeQgjeBjok,459
|
|
470
472
|
regscale/utils/numbers.py,sha256=0LkZvewuKXogk6_oWF90OAoGIuzK1fjWZ4gRCC9_TlQ,301
|
|
471
473
|
regscale/utils/shell.py,sha256=H9Zzwt3zxyzWmfiH3tVrcIoAcEHtF_pXzM5ERd7PAGc,4176
|
|
@@ -503,7 +505,7 @@ tests/regscale/core/test_logz.py,sha256=Yf6tAthETLlYOEp3hee3ovDw-WnZ_6fTw3e1rjx4
|
|
|
503
505
|
tests/regscale/core/test_sbom_generator.py,sha256=lgzo1HRbkNIIDZIeKiM2JbbIYQsak0BpU0GlvbrcexM,2935
|
|
504
506
|
tests/regscale/core/test_validation_utils.py,sha256=5GHQfSVEr3f1HzEatI5CyCgGriyc-OPyKbc1YQ9zRjI,5464
|
|
505
507
|
tests/regscale/core/test_version.py,sha256=q8F2ERXxdToXbYxfOcP9f6lkUYaxF4jEmsPUmduMo9U,3216
|
|
506
|
-
tests/regscale/core/test_version_regscale.py,sha256=
|
|
508
|
+
tests/regscale/core/test_version_regscale.py,sha256=9DA1hFltt7pSWdFb3wP2bL3t4hAHsojoHvs1bolUjUw,2052
|
|
507
509
|
tests/regscale/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
508
510
|
tests/regscale/integrations/test_api_paginator.py,sha256=42-F8FMkJwkZ1Xlsj7YYVyOb6-rbxwI4F4H6Y4ZI9jA,18973
|
|
509
511
|
tests/regscale/integrations/test_integration_mapping.py,sha256=cXfWuE1h5Wrs-Nb--d83v0fllMQOs_IxYxquBJ90YNg,22549
|
|
@@ -511,6 +513,7 @@ tests/regscale/integrations/test_issue_creation.py,sha256=L4Fjww16S6sst2kqLoE0PK
|
|
|
511
513
|
tests/regscale/integrations/test_issue_due_date.py,sha256=Dh2JAxgOdbucIOGtxfefsYxGsNQlgx2Gk-g1Vguv_6A,1448
|
|
512
514
|
tests/regscale/integrations/test_property_and_milestone_creation.py,sha256=2Rx2maM7-4DMYpOH4pV6vcx3NDA84wXfqMwGvaAMVBo,26555
|
|
513
515
|
tests/regscale/integrations/test_update_finding_dates.py,sha256=2cyDpwnZUS965f84hNE4rb8BjuAYOLMK-zuLD6nai9k,13517
|
|
516
|
+
tests/regscale/integrations/test_wiz_policy_compliance_affected_controls.py,sha256=nFqOjr4-JRjZ0fJTQEhwsvnl56g4GRdX0yvS1wRpqUY,5845
|
|
514
517
|
tests/regscale/integrations/transformer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
515
518
|
tests/regscale/integrations/transformer/test_data_transformer.py,sha256=Na-trXL2n97b6H6V9CwVU4nvqkL8HMy7E2yvAuhKtSo,36584
|
|
516
519
|
tests/regscale/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -525,9 +528,9 @@ tests/regscale/models/test_regscale_model.py,sha256=ZsrEZkC4EtdIsoQuayn1xv2gEGcV
|
|
|
525
528
|
tests/regscale/models/test_report.py,sha256=IqUq7C__a1_q_mLaz0PE9Lq6fHggBsB14-AzEYNBxLw,4666
|
|
526
529
|
tests/regscale/models/test_tenable_integrations.py,sha256=PNJC2Zu6lv1xj7y6e1yOsz5FktSU3PRKb5x3n5YG3w0,4072
|
|
527
530
|
tests/regscale/models/test_user_model.py,sha256=e9olv28qBApgnvK6hFHOgXjUC-pkaV8aGDirEIWASL4,4427
|
|
528
|
-
regscale_cli-6.21.
|
|
529
|
-
regscale_cli-6.21.
|
|
530
|
-
regscale_cli-6.21.
|
|
531
|
-
regscale_cli-6.21.
|
|
532
|
-
regscale_cli-6.21.
|
|
533
|
-
regscale_cli-6.21.
|
|
531
|
+
regscale_cli-6.21.1.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
|
|
532
|
+
regscale_cli-6.21.1.0.dist-info/METADATA,sha256=oU0-rPZPY8mQa78wiIq1lcjOHw8-pLXmaW_fbK1uO3k,34955
|
|
533
|
+
regscale_cli-6.21.1.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
534
|
+
regscale_cli-6.21.1.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
|
|
535
|
+
regscale_cli-6.21.1.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
|
|
536
|
+
regscale_cli-6.21.1.0.dist-info/RECORD,,
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import os
|
|
2
|
+
from unittest import mock
|
|
3
|
+
|
|
2
4
|
import pytest
|
|
3
5
|
from click.testing import CliRunner
|
|
4
|
-
from unittest import mock
|
|
5
|
-
import warnings
|
|
6
|
-
import regscale.regscale as regscale
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
class TestRegscaleCLIVersion:
|
|
@@ -31,6 +30,8 @@ class TestRegscaleCLIVersion:
|
|
|
31
30
|
"""
|
|
32
31
|
Test that the CLI 'version' command prints the local RegScale version and exits successfully.
|
|
33
32
|
"""
|
|
33
|
+
import regscale.regscale as regscale
|
|
34
|
+
|
|
34
35
|
runner = CliRunner()
|
|
35
36
|
result = runner.invoke(regscale.cli, ["version"])
|
|
36
37
|
assert result.exit_code == 0
|
|
@@ -41,6 +42,7 @@ class TestRegscaleCLIVersion:
|
|
|
41
42
|
Test that the CLI 'version --server' command prints the server version if available.
|
|
42
43
|
Mocks the API call to return a dummy version.
|
|
43
44
|
"""
|
|
45
|
+
import regscale.regscale as regscale
|
|
44
46
|
|
|
45
47
|
class DummyApi:
|
|
46
48
|
def __init__(self):
|