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.

Files changed (37) hide show
  1. regscale/_version.py +1 -1
  2. regscale/integrations/commercial/__init__.py +1 -2
  3. regscale/integrations/commercial/amazon/common.py +79 -2
  4. regscale/integrations/commercial/aws/cli.py +183 -9
  5. regscale/integrations/commercial/aws/scanner.py +544 -9
  6. regscale/integrations/commercial/cpe.py +18 -1
  7. regscale/integrations/commercial/tenablev2/jsonl_scanner.py +2 -1
  8. regscale/integrations/commercial/wizv2/async_client.py +10 -3
  9. regscale/integrations/commercial/wizv2/click.py +102 -26
  10. regscale/integrations/commercial/wizv2/constants.py +249 -1
  11. regscale/integrations/commercial/wizv2/issue.py +2 -2
  12. regscale/integrations/commercial/wizv2/parsers.py +3 -2
  13. regscale/integrations/commercial/wizv2/policy_compliance.py +1858 -0
  14. regscale/integrations/commercial/wizv2/scanner.py +15 -21
  15. regscale/integrations/commercial/wizv2/utils.py +258 -85
  16. regscale/integrations/commercial/wizv2/variables.py +4 -3
  17. regscale/integrations/compliance_integration.py +1455 -0
  18. regscale/integrations/public/fedramp/fedramp_five.py +1 -1
  19. regscale/integrations/public/fedramp/markdown_parser.py +7 -1
  20. regscale/integrations/scanner_integration.py +30 -2
  21. regscale/models/app_models/__init__.py +1 -0
  22. regscale/models/integration_models/cisa_kev_data.json +73 -4
  23. regscale/models/integration_models/synqly_models/capabilities.json +1 -1
  24. regscale/{integrations/commercial/wizv2/models.py → models/integration_models/wizv2.py} +4 -12
  25. regscale/models/regscale_models/file.py +4 -0
  26. regscale/models/regscale_models/issue.py +123 -0
  27. regscale/models/regscale_models/regscale_model.py +4 -2
  28. regscale/models/regscale_models/security_plan.py +1 -1
  29. regscale/utils/graphql_client.py +3 -1
  30. {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/METADATA +9 -9
  31. {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/RECORD +37 -34
  32. tests/regscale/core/test_version_regscale.py +5 -3
  33. tests/regscale/integrations/test_wiz_policy_compliance_affected_controls.py +154 -0
  34. {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/LICENSE +0 -0
  35. {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/WHEEL +0 -0
  36. {regscale_cli-6.21.0.0.dist-info → regscale_cli-6.21.1.0.dist-info}/entry_points.txt +0 -0
  37. {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
- """Class for a Wiz.io integration"""
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(f"Response Error: Code #{response.status_code}: {response.reason}\n{response.text}")
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:
@@ -176,7 +176,7 @@ class SecurityPlan(RegScaleModel):
176
176
  return {}
177
177
 
178
178
  @classmethod
179
- def get_list(cls) -> list:
179
+ def get_ssp_list(cls) -> list:
180
180
  """
181
181
  Get a list of objects.
182
182
 
@@ -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.0.0
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.8.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.8.2 ; extra == 'airflow'
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.8.2 ; extra == 'airflow-azure'
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.8.2 ; extra == 'airflow-sqlserver'
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.8.2 ; extra == 'all'
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.8.2 ; extra == 'ansible'
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.8.2 ; extra == 'dev'
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.8.2 ; extra == 'server'
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=17Hr2OW5lfl7oIZmlsvv4nSvqpeEGwYv23YLZ2Wbe9s,1198
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=gxSiwJtukI4MgICaPgGIX2UH1hSvqCanA5lV1XfOIIM,142841
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=sVbzBnLbKRhnAmRsIw8kRvfbyJojPfVqzH3OlgoxvqM,13927
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=eXZeDXicnp1yYgKuyKcthQUYxXi2Pgc__UD8lUqr5H0,4924
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=qX0GkUzl0PSwOPTtEH94Qgixi8D5s_Xbo2yMmQhcWnY,3343
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=B_Ol7p5PmaNqQK4Y5GVyONZZBbtadTSJAq70YRD6hBs,9227
145
- regscale/integrations/commercial/aws/scanner.py,sha256=E3antyGd1HG0cMAM6hurKeij6li7mCstKFQTl3XZ_z4,33600
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=zNruS_Oi6ls6lJTUxwdD6jRiXCvVLuGI2nvpF29pvU4,83485
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=NOlR10XFnyZFGyYbex7Nw2pUMNteVH2M2pz3cJTQe6M,12485
232
- regscale/integrations/commercial/wizv2/click.py,sha256=DPis8cMST7zVXMzajYUGqI5WNg6nh08afiQhExm54_c,12276
233
- regscale/integrations/commercial/wizv2/constants.py,sha256=JSWbQ7CTqqzpotmgCFVgIlw6_PHoXTb2pd6BChi8igk,39387
234
- regscale/integrations/commercial/wizv2/issue.py,sha256=qj5_g-SoOz6f5QDgs34GdQEyxFwJLKAWl1EVx7vjrAw,13407
235
- regscale/integrations/commercial/wizv2/models.py,sha256=hZ6557LJfcp1_NRbMM0V_G1erz1jEFmsuKPn86kXE54,5667
236
- regscale/integrations/commercial/wizv2/parsers.py,sha256=BD0i-80NhfQAHYPk0EAbUClXfzxLT3aHzb2Gs2ObVAk,11811
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=h4wr71sEha6eICdwbdzHdTz3_WZpZ9qz5Tnx1IuXnHU,74937
239
- regscale/integrations/commercial/wizv2/utils.py,sha256=7iRFt0iklU0VKnB63rhCmMqWocT78ul3AWUCfvO12QY,47868
240
- regscale/integrations/commercial/wizv2/variables.py,sha256=ukL1ul7EoV3Jh7eQW5kvSJkV3SoTfHxjTjxd5Z5J9wA,1903
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=F4KIOdnYaRjJrJHJYsN9Bmf6i5s0nus-t_GaAh8A3ow,92645
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=I2VI8NImOnHfB1eE3iLG_gK6uqqqImL7I_YEkzh6INE,5339
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=XmrkxwFJx49ofl5ICZniGmmJe8jO4RkKnHV01fMfrIQ,156
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=au0nG1gScjLv7evVJ9pqqtwEtqThCERCD9_9NtxUvAg,1246793
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=cNRDSSzgsKJM7QDh3VyvE2Sly9dRzbUTyMaGDy1jWNA,378892
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=peAu78t-zLeMsP9tmeubGAyBL77XRkXyJLaruWzjLac,14413
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=kRHGzbCqVzsZme3Ytp8E3IuGmLbP4CHWvpyIKNk0Lkk,53092
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=5B5NOMS9b0Oz8CDoiyU5FDNRWIsYMm1KPeC98QNnKxk,69748
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=DtxGJHCIuzj_F_iaP9uuHY5sObKo3zk_8BeC2jUJF7U,8600
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=IqN7IHSH8bE5w9SVRqib_9sLFDPCMp4hWAdkSS-tDZ8,4484
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=Amz4RfM6Xm8OnA9F4phAoJdrJMrsgU25b9Q6QxXOLTs,2013
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.0.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
529
- regscale_cli-6.21.0.0.dist-info/METADATA,sha256=dEQpH991O5ex_8-JIrcn7ZnjWJoRSVsLR0YTq9S7BBE,34955
530
- regscale_cli-6.21.0.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
531
- regscale_cli-6.21.0.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
532
- regscale_cli-6.21.0.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
533
- regscale_cli-6.21.0.0.dist-info/RECORD,,
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):