regscale-cli 6.20.7.0__py3-none-any.whl → 6.20.9.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 (41) hide show
  1. regscale/_version.py +1 -1
  2. regscale/core/app/api.py +8 -1
  3. regscale/core/app/application.py +130 -20
  4. regscale/core/utils/date.py +16 -16
  5. regscale/integrations/commercial/aqua/aqua.py +1 -1
  6. regscale/integrations/commercial/aws/cli.py +1 -1
  7. regscale/integrations/commercial/defender.py +1 -1
  8. regscale/integrations/commercial/ecr.py +1 -1
  9. regscale/integrations/commercial/ibm.py +1 -1
  10. regscale/integrations/commercial/nexpose.py +1 -1
  11. regscale/integrations/commercial/prisma.py +1 -1
  12. regscale/integrations/commercial/qualys/__init__.py +150 -77
  13. regscale/integrations/commercial/qualys/containers.py +2 -1
  14. regscale/integrations/commercial/qualys/scanner.py +5 -3
  15. regscale/integrations/commercial/snyk.py +14 -4
  16. regscale/integrations/commercial/synqly/ticketing.py +23 -11
  17. regscale/integrations/commercial/veracode.py +15 -4
  18. regscale/integrations/commercial/xray.py +1 -1
  19. regscale/integrations/public/cisa.py +7 -1
  20. regscale/integrations/public/nist_catalog.py +8 -2
  21. regscale/integrations/scanner_integration.py +18 -36
  22. regscale/models/integration_models/cisa_kev_data.json +51 -6
  23. regscale/models/integration_models/flat_file_importer/__init__.py +34 -19
  24. regscale/models/integration_models/send_reminders.py +8 -2
  25. regscale/models/integration_models/synqly_models/capabilities.json +1 -1
  26. regscale/models/regscale_models/control_implementation.py +40 -0
  27. regscale/models/regscale_models/issue.py +7 -4
  28. regscale/models/regscale_models/parameter.py +3 -2
  29. regscale/models/regscale_models/ports_protocol.py +15 -5
  30. regscale/models/regscale_models/vulnerability.py +1 -1
  31. regscale/utils/graphql_client.py +3 -6
  32. regscale/utils/threading/threadhandler.py +12 -2
  33. {regscale_cli-6.20.7.0.dist-info → regscale_cli-6.20.9.0.dist-info}/METADATA +13 -13
  34. {regscale_cli-6.20.7.0.dist-info → regscale_cli-6.20.9.0.dist-info}/RECORD +41 -40
  35. tests/regscale/core/test_app.py +402 -16
  36. tests/regscale/core/test_version_regscale.py +62 -0
  37. tests/regscale/test_init.py +2 -0
  38. {regscale_cli-6.20.7.0.dist-info → regscale_cli-6.20.9.0.dist-info}/LICENSE +0 -0
  39. {regscale_cli-6.20.7.0.dist-info → regscale_cli-6.20.9.0.dist-info}/WHEEL +0 -0
  40. {regscale_cli-6.20.7.0.dist-info → regscale_cli-6.20.9.0.dist-info}/entry_points.txt +0 -0
  41. {regscale_cli-6.20.7.0.dist-info → regscale_cli-6.20.9.0.dist-info}/top_level.txt +0 -0
@@ -313,6 +313,46 @@ class ControlImplementation(RegScaleModel):
313
313
  security_controls.append(ci)
314
314
  return security_controls
315
315
 
316
+ @classmethod
317
+ def get_control_label_map_by_parent(cls, parent_id: int, parent_module: str) -> Dict[str, int]:
318
+ """
319
+ Get a map of control names to implementation IDs by parent
320
+
321
+ :param int parent_id: The ID of the parent
322
+ :param str parent_module: The module of the parent
323
+ :return: A dictionary mapping control IDs to implementation IDs
324
+ :rtype: Dict[str, int]
325
+ """
326
+ logger.info("Getting control label map by parent...")
327
+ response = cls._get_api_handler().get(
328
+ endpoint=cls.get_endpoint("get_all_by_parent").format(intParentID=parent_id, strModule=parent_module)
329
+ )
330
+
331
+ if response and response.ok:
332
+ logger.info("Fetched control label map by parent successfully.")
333
+ return {parentheses_to_dot(ci["controlName"]): ci["id"] for ci in response.json()}
334
+ logger.info("Unable to get control label map by parent.")
335
+ return {}
336
+
337
+ @classmethod
338
+ def get_control_id_map_by_parent(cls, parent_id: int, parent_module: str) -> Dict[int, int]:
339
+ """
340
+ Get a map of control IDs to implementation IDs by parent
341
+
342
+ :param int plan_id: The ID of the plan
343
+ :return: A dictionary mapping control IDs to implementation IDs
344
+ :rtype: Dict[int, int]
345
+ """
346
+ logger.info("Getting control id map by parent...")
347
+ response = cls._get_api_handler().get(
348
+ endpoint=cls.get_endpoint("get_all_by_parent").format(intParentID=parent_id, strModule=parent_module)
349
+ )
350
+ if response and response.ok:
351
+ logger.info("Fetched control id map by parent successfully.")
352
+ return {ci["controlID"]: ci["id"] for ci in response.json()}
353
+ logger.info("Unable to get control id map by parent.")
354
+ return {}
355
+
316
356
  @classmethod
317
357
  def get_control_label_map_by_plan(cls, plan_id: int) -> Dict[str, int]:
318
358
  """
@@ -822,7 +822,9 @@ class Issue(RegScaleModel):
822
822
  return issues_data, attachments
823
823
 
824
824
  @classmethod
825
- def get_open_issues_ids_by_implementation_id(cls, plan_id: int) -> Dict[int, List[OpenIssueDict]]:
825
+ def get_open_issues_ids_by_implementation_id(
826
+ cls, plan_id: int, is_component: Optional[bool] = False
827
+ ) -> Dict[int, List[OpenIssueDict]]:
826
828
  """
827
829
  Get all open issues by implementation id for a given security plan
828
830
 
@@ -836,8 +838,9 @@ class Issue(RegScaleModel):
836
838
  take = 50
837
839
  skip = 0
838
840
  control_issues: Dict[int, List[OpenIssueDict]] = defaultdict(list)
841
+ module_str = "component" if is_component else "security plan"
839
842
  logger.info(
840
- f"Fetching open issues for controls and for security plan {plan_id}...",
843
+ f"Fetching open issues for controls and for {module_str} {plan_id}...",
841
844
  )
842
845
  supports_multiple_controls: bool = cls.is_multiple_controls_supported()
843
846
 
@@ -858,7 +861,7 @@ class Issue(RegScaleModel):
858
861
  skip: {skip},
859
862
  take: {take},
860
863
  where: {{
861
- securityPlanId: {{eq: {plan_id}}},
864
+ {"componentId" if is_component else "securityPlanId"}: {{eq: {plan_id}}},
862
865
  status: {{eq: "Open"}}
863
866
  }}
864
867
  ) {{
@@ -886,7 +889,7 @@ class Issue(RegScaleModel):
886
889
  if not response.get(cls.get_module_string(), {}).get("pageInfo", {}).get("hasNextPage", False):
887
890
  break
888
891
  skip += take
889
- logger.info("Finished fetching %i open control issue(s) for security plan %i", len(control_issues), plan_id)
892
+ logger.info("Finished fetching %i open control issue(s) for %s %i", len(control_issues), module_str, plan_id)
890
893
  return control_issues
891
894
 
892
895
  @classmethod
@@ -37,7 +37,7 @@ class Parameter(RegScaleModel):
37
37
  uuid: Optional[str] = None
38
38
  name: str
39
39
  value: str
40
- controlImplementationId: int # Required, FK to ControlImplementation
40
+ controlImplementationId: int = Field(alias="controlImplementation") # Required, FK to ControlImplementation
41
41
  createdById: str = Field(default_factory=RegScaleModel.get_user_id) # FK to AspNetUsers
42
42
  dateCreated: str = Field(default_factory=get_current_datetime) # Required
43
43
  lastUpdatedById: str = Field(default_factory=RegScaleModel.get_user_id) # FK to AspNetUsers
@@ -97,7 +97,8 @@ class Parameter(RegScaleModel):
97
97
  """
98
98
  response = cls._get_api_handler().get(
99
99
  endpoint=cls.get_endpoint("merge").format(
100
- implementationID=implementation_id, securityControlID=security_control_id
100
+ implementationID=implementation_id,
101
+ securityControlID=security_control_id,
101
102
  )
102
103
  )
103
104
  if response and response.ok:
@@ -1,13 +1,23 @@
1
1
  #!/usr/bin/env python3
2
2
  # -*- coding: utf-8 -*-
3
3
  """Class for a RegScale Ports and Protocols"""
4
- from typing import Optional
4
+ from enum import Enum
5
+ from typing import Optional, Union
5
6
 
6
7
  from pydantic import ConfigDict
7
8
 
8
9
  from regscale.models.regscale_models.regscale_model import RegScaleModel
9
10
 
10
11
 
12
+ class Protocol(str, Enum):
13
+ """Enumeration for Protocols"""
14
+
15
+ TCP = "TCP"
16
+ UDP = "UDP"
17
+ TCP_UDP = "TCP/UDP"
18
+ OTHER = "Other"
19
+
20
+
11
21
  class PortsProtocol(RegScaleModel):
12
22
  """Ports And Protocols"""
13
23
 
@@ -27,10 +37,10 @@ class PortsProtocol(RegScaleModel):
27
37
  endPort: Optional[int] = 0
28
38
  parentId: Optional[int] = 0
29
39
  parentModule: Optional[str] = ""
30
- protocol: Optional[str] = None
31
- service: Optional[str] = None
32
- purpose: Optional[str] = None
33
- usedBy: Optional[str] = None
40
+ protocol: Optional[Union[str, Protocol]] = Protocol.OTHER
41
+ service: Optional[str] = "N/A"
42
+ purpose: Optional[str] = "N/A"
43
+ usedBy: Optional[str] = "N/A"
34
44
  createdById: Optional[str] = None
35
45
  lastUpdatedById: Optional[str] = None
36
46
  isPublic: Optional[bool] = True
@@ -86,7 +86,7 @@ class Vulnerability(RegScaleModel):
86
86
  tenantsId: int = Field(default=0)
87
87
  isPublic: bool = Field(default=False)
88
88
  dateClosed: Optional[str] = None
89
- status: Optional[Union[str, IssueStatus]] = Field(default_factory=IssueStatus.Open)
89
+ status: Optional[Union[str, IssueStatus]] = Field(default_factory=lambda: IssueStatus.Open)
90
90
  buildVersion: Optional[str] = None
91
91
  cvsSv3BaseVector: Optional[str] = None
92
92
  cvsSv2BaseVector: Optional[str] = None
@@ -5,7 +5,7 @@ A module for making paginated GraphQL queries.
5
5
  import logging
6
6
  from typing import List, Dict, Optional, Any
7
7
 
8
- from regscale.core.app.utils.app_utils import create_progress_object
8
+ from regscale.core.app.utils.app_utils import create_progress_object, error_and_exit
9
9
 
10
10
  logger = logging.getLogger(__name__)
11
11
 
@@ -81,7 +81,6 @@ class PaginatedGraphQLClient:
81
81
  :param Optional[str] after: The cursor for pagination (optional, defaults to None for the first page).
82
82
  :return: A dictionary containing the fetched page of results and pagination information.
83
83
  :rtype: Dict[str, Any]
84
- :raises: Exception if an error occurs during the query execution
85
84
  """
86
85
  variables = variables or {}
87
86
  variables["after"] = after
@@ -92,8 +91,7 @@ class PaginatedGraphQLClient:
92
91
  except Exception as e:
93
92
  logger.error(f"An error occurred while executing the query: {str(e)}", exc_info=True)
94
93
  logger.error(f"Query: {self.query}")
95
- logger.error(f"Variables: {variables}")
96
- raise
94
+ error_and_exit(f"Variable: {variables}")
97
95
 
98
96
  def fetch_results(self, variables: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
99
97
  """
@@ -102,7 +100,6 @@ class PaginatedGraphQLClient:
102
100
  :param Optional[Dict[str, Any]] variables: Optional query variables.
103
101
  :return: A dictionary containing the fetched page of results and pagination information.
104
102
  :rtype: Dict[str, Any]
105
- :raises: Exception if an error occurs during the query execution
106
103
  """
107
104
  try:
108
105
  result = self.client.execute(self.query, variable_values=variables)
@@ -111,4 +108,4 @@ class PaginatedGraphQLClient:
111
108
  logger.error(f"An error occurred while executing the query: {str(e)}", exc_info=True)
112
109
  logger.error(f"Query: {self.query}")
113
110
  logger.error(f"Variables: {variables}")
114
- raise
111
+ error_and_exit(f"Variable: {variables}")
@@ -102,7 +102,12 @@ def create_threads(process: Callable, args: Tuple, thread_count: int) -> None:
102
102
  from regscale.core.app.application import Application
103
103
 
104
104
  app = Application()
105
- max_threads = app.config["maxThreads"]
105
+ max_threads = app.config.get("maxThreads", 100)
106
+ if not isinstance(max_threads, int):
107
+ try:
108
+ max_threads = int(max_threads)
109
+ except (ValueError, TypeError):
110
+ max_threads = 100
106
111
  if threads := min(thread_count, max_threads):
107
112
  # start the threads with the number of threads allowed
108
113
  with ThreadPoolExecutor(max_workers=threads) as executor:
@@ -126,6 +131,11 @@ def thread_assignment(thread: int, total_items: int) -> list:
126
131
 
127
132
  app = Application()
128
133
  # set max threads
129
- max_threads = app.config["maxThreads"]
134
+ max_threads = app.config.get("maxThreads", 100)
135
+ if not isinstance(max_threads, int):
136
+ try:
137
+ max_threads = int(max_threads)
138
+ except (ValueError, TypeError):
139
+ max_threads = 100
130
140
 
131
141
  return [x for x in range(total_items) if x % max_threads == thread]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: regscale-cli
3
- Version: 6.20.7.0
3
+ Version: 6.20.9.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
@@ -51,7 +51,7 @@ Requires-Dist: pathlib ~=1.0.1
51
51
  Requires-Dist: pdfplumber ==0.7.6
52
52
  Requires-Dist: pre-commit
53
53
  Requires-Dist: psutil ~=6.1.0
54
- Requires-Dist: pyTenable
54
+ Requires-Dist: pyTenable >=1.6.3
55
55
  Requires-Dist: pydantic ~=2.11.0
56
56
  Requires-Dist: pypandoc
57
57
  Requires-Dist: pypandoc-binary
@@ -102,7 +102,7 @@ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow'
102
102
  Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow'
103
103
  Requires-Dist: gql ~=3.5.0 ; extra == 'airflow'
104
104
  Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow'
105
- Requires-Dist: importlib-metadata ==6.0.0 ; extra == 'airflow'
105
+ Requires-Dist: importlib-metadata >=6.5 ; extra == 'airflow'
106
106
  Requires-Dist: inflect ; extra == 'airflow'
107
107
  Requires-Dist: jinja2 >=3.1.5 ; extra == 'airflow'
108
108
  Requires-Dist: jira ==3.8.0 ; extra == 'airflow'
@@ -132,7 +132,7 @@ Requires-Dist: pre-commit ; extra == 'airflow'
132
132
  Requires-Dist: protobuf >=4.25.8 ; extra == 'airflow'
133
133
  Requires-Dist: psutil ~=6.1.0 ; extra == 'airflow'
134
134
  Requires-Dist: psycopg2-binary >=2.9.0 ; extra == 'airflow'
135
- Requires-Dist: pyTenable ; extra == 'airflow'
135
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'airflow'
136
136
  Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow'
137
137
  Requires-Dist: pypandoc ; extra == 'airflow'
138
138
  Requires-Dist: pypandoc-binary ; extra == 'airflow'
@@ -186,7 +186,7 @@ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow-azure'
186
186
  Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow-azure'
187
187
  Requires-Dist: gql ~=3.5.0 ; extra == 'airflow-azure'
188
188
  Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow-azure'
189
- Requires-Dist: importlib-metadata ==6.0.0 ; extra == 'airflow-azure'
189
+ Requires-Dist: importlib-metadata >=6.5 ; extra == 'airflow-azure'
190
190
  Requires-Dist: inflect ; extra == 'airflow-azure'
191
191
  Requires-Dist: jinja2 >=3.1.5 ; extra == 'airflow-azure'
192
192
  Requires-Dist: jira ==3.8.0 ; extra == 'airflow-azure'
@@ -217,7 +217,7 @@ Requires-Dist: pre-commit ; extra == 'airflow-azure'
217
217
  Requires-Dist: protobuf >=4.25.8 ; extra == 'airflow-azure'
218
218
  Requires-Dist: psutil ~=6.1.0 ; extra == 'airflow-azure'
219
219
  Requires-Dist: psycopg2-binary >=2.9.0 ; extra == 'airflow-azure'
220
- Requires-Dist: pyTenable ; extra == 'airflow-azure'
220
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'airflow-azure'
221
221
  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'
@@ -270,7 +270,7 @@ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow-sqlserver'
270
270
  Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow-sqlserver'
271
271
  Requires-Dist: gql ~=3.5.0 ; extra == 'airflow-sqlserver'
272
272
  Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow-sqlserver'
273
- Requires-Dist: importlib-metadata ==6.0.0 ; extra == 'airflow-sqlserver'
273
+ Requires-Dist: importlib-metadata >=6.5 ; extra == 'airflow-sqlserver'
274
274
  Requires-Dist: inflect ; extra == 'airflow-sqlserver'
275
275
  Requires-Dist: jinja2 >=3.1.5 ; extra == 'airflow-sqlserver'
276
276
  Requires-Dist: jira ==3.8.0 ; extra == 'airflow-sqlserver'
@@ -300,7 +300,7 @@ Requires-Dist: pre-commit ; extra == 'airflow-sqlserver'
300
300
  Requires-Dist: protobuf >=4.25.8 ; extra == 'airflow-sqlserver'
301
301
  Requires-Dist: psutil ~=6.1.0 ; extra == 'airflow-sqlserver'
302
302
  Requires-Dist: psycopg2-binary >=2.9.0 ; extra == 'airflow-sqlserver'
303
- Requires-Dist: pyTenable ; extra == 'airflow-sqlserver'
303
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'airflow-sqlserver'
304
304
  Requires-Dist: pydantic ~=2.11.0 ; extra == 'airflow-sqlserver'
305
305
  Requires-Dist: pymssql ; extra == 'airflow-sqlserver'
306
306
  Requires-Dist: pyodbc ; extra == 'airflow-sqlserver'
@@ -360,7 +360,7 @@ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'all'
360
360
  Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'all'
361
361
  Requires-Dist: gql ~=3.5.0 ; extra == 'all'
362
362
  Requires-Dist: greenlet >=3.0.3 ; extra == 'all'
363
- Requires-Dist: importlib-metadata ==6.0.0 ; extra == 'all'
363
+ Requires-Dist: importlib-metadata >=6.5 ; extra == 'all'
364
364
  Requires-Dist: importlib-resources ; extra == 'all'
365
365
  Requires-Dist: inflect ; extra == 'all'
366
366
  Requires-Dist: jinja2 ; extra == 'all'
@@ -392,7 +392,7 @@ Requires-Dist: pre-commit ; extra == 'all'
392
392
  Requires-Dist: protobuf >=4.25.8 ; extra == 'all'
393
393
  Requires-Dist: psutil ~=6.1.0 ; extra == 'all'
394
394
  Requires-Dist: psycopg2-binary >=2.9.0 ; extra == 'all'
395
- Requires-Dist: pyTenable ; extra == 'all'
395
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'all'
396
396
  Requires-Dist: pydantic ~=2.11.0 ; extra == 'all'
397
397
  Requires-Dist: pypandoc ; extra == 'all'
398
398
  Requires-Dist: pypandoc-binary ; extra == 'all'
@@ -455,7 +455,7 @@ Requires-Dist: pathlib ~=1.0.1 ; extra == 'ansible'
455
455
  Requires-Dist: pdfplumber ==0.7.6 ; extra == 'ansible'
456
456
  Requires-Dist: pre-commit ; extra == 'ansible'
457
457
  Requires-Dist: psutil ~=6.1.0 ; extra == 'ansible'
458
- Requires-Dist: pyTenable ; extra == 'ansible'
458
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'ansible'
459
459
  Requires-Dist: pydantic ~=2.11.0 ; extra == 'ansible'
460
460
  Requires-Dist: pypandoc ; extra == 'ansible'
461
461
  Requires-Dist: pypandoc-binary ; extra == 'ansible'
@@ -526,7 +526,7 @@ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'dev'
526
526
  Requires-Dist: pipenv ; extra == 'dev'
527
527
  Requires-Dist: pre-commit ; extra == 'dev'
528
528
  Requires-Dist: psutil ~=6.1.0 ; extra == 'dev'
529
- Requires-Dist: pyTenable ; extra == 'dev'
529
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'dev'
530
530
  Requires-Dist: pydantic ~=2.11.0 ; extra == 'dev'
531
531
  Requires-Dist: pylint ; extra == 'dev'
532
532
  Requires-Dist: pypandoc ; extra == 'dev'
@@ -607,7 +607,7 @@ Requires-Dist: pathlib ~=1.0.1 ; extra == 'server'
607
607
  Requires-Dist: pdfplumber ==0.7.6 ; extra == 'server'
608
608
  Requires-Dist: pre-commit ; extra == 'server'
609
609
  Requires-Dist: psutil ~=6.1.0 ; extra == 'server'
610
- Requires-Dist: pyTenable ; extra == 'server'
610
+ Requires-Dist: pyTenable >=1.6.3 ; extra == 'server'
611
611
  Requires-Dist: pydantic ~=2.11.0 ; extra == 'server'
612
612
  Requires-Dist: pypandoc ; extra == 'server'
613
613
  Requires-Dist: pypandoc-binary ; extra == 'server'
@@ -1,5 +1,5 @@
1
1
  regscale/__init__.py,sha256=ZygAIkX6Nbjag1czWdQa-yP-GM1mBE_9ss21Xh__JFc,34
2
- regscale/_version.py,sha256=YLSYeYSAYt1REUpmwrAD1VCEq2qczcUNPdm7IExPYMo,1198
2
+ regscale/_version.py,sha256=gKT5YQ9lUTUBh7pTS4c88lS7iYu1716siI0f5SPm0uc,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
@@ -35,8 +35,8 @@ regscale/core/decorators.py,sha256=YuX9VCbCJh76qlc_6ungu0nD4VT1VsV2spXH_bsDTfY,8
35
35
  regscale/core/lazy_group.py,sha256=S2-nA5tzm47A929NOTqGkzrzKuZQDlq2OAPbNnG1W1Q,2046
36
36
  regscale/core/login.py,sha256=-8vy1HVAtv1iARnZh6uzYtwmx8VFYPwLYR0QAf1ttCk,2714
37
37
  regscale/core/app/__init__.py,sha256=nGcCN1vWBAnZzoccIlt0jwWQdegCOrBWOB7LPhQkQSs,96
38
- regscale/core/app/api.py,sha256=_hwh1HWIIrPfL4jHDKlEmW5pQEr2Iq3idn4bYGtfPQo,23148
39
- regscale/core/app/application.py,sha256=TalC51f30Ox6o7LBsh2RcCdU_YqFuCbGw1zhK2vSS7s,25982
38
+ regscale/core/app/api.py,sha256=CSyUCV6haBAQ9IyE1FViJcAfTcoS5GJRaULwnRoAV9U,23499
39
+ regscale/core/app/application.py,sha256=6EHkTkx9u9Y1CBz6HYJMGbui4S2Nq8kqIngZfnWkZfg,31407
40
40
  regscale/core/app/logz.py,sha256=8AdBKmquv45JGi5fCMc38JqQg6-FpUONGmqfd5EGwrI,2583
41
41
  regscale/core/app/internal/__init__.py,sha256=rod4nmE7rrYDdbuYF4mCWz49TK_2r-v4tWy1UHW63r0,4808
42
42
  regscale/core/app/internal/admin_actions.py,sha256=hOdma7QGwFblmxEj9UTjiWWmZGUS5_ZFtxL2qZdhf-Q,7443
@@ -94,7 +94,7 @@ regscale/core/static/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
94
94
  regscale/core/static/regex.py,sha256=KLg-do2oPuUD6bQG9usqqSy5sxqlSEAEuUUbGVkZ6eU,384
95
95
  regscale/core/utils/__init__.py,sha256=Eyvc210t-KRqvTcV5DNWRjKO99CdWy_dC57wfggFWcw,3876
96
96
  regscale/core/utils/click_utils.py,sha256=y6vAbaPoT0Abb8siS1tvJxJQTm4sbWQTeq5nTDIgBtI,375
97
- regscale/core/utils/date.py,sha256=_45gTGY0NrnnC49ajuYLGU8QLcTUKYm09C_z93O1oKs,10005
97
+ regscale/core/utils/date.py,sha256=yGte1ttWRwKRKfU0LT5yPNfr62xn5YnDo4zMgAhua7k,10114
98
98
  regscale/core/utils/graphql.py,sha256=oXGBcAuDa0uasMnD4CokIzzKKa-IgExdKXLwtaK2_tA,8386
99
99
  regscale/core/utils/urls.py,sha256=ZcU9OJqDmVQXgu6BrLESIp2KMkkUuzTZZ_wHsZMzfA4,687
100
100
  regscale/dev/__init__.py,sha256=wVP59B1iurp36ul8pD_CjmunJLHOdKWWodz1r5loNvw,190
@@ -113,35 +113,35 @@ regscale/integrations/api_paginator.py,sha256=73rjaNM9mGv8evHAeoObXEjZPg-bJuGPo6
113
113
  regscale/integrations/api_paginator_example.py,sha256=lEuYI-xEGcjnXuIzbCobCP0YRuukLF0s8S3d382SAH4,12119
114
114
  regscale/integrations/integration_override.py,sha256=PH7t_bf-RCe_it3FJ61tlKX5UghqHuSEQNJWDfCamAg,5480
115
115
  regscale/integrations/jsonl_scanner_integration.py,sha256=l8nq_T3rE1XX-6HxrNHm3xzxCNWbIjxQvGMdtZWs7KQ,57003
116
- regscale/integrations/scanner_integration.py,sha256=lijwTk_VD_mhNN04lMgf_Wh3IKhv_INWESFgtjt_f8Q,135805
116
+ regscale/integrations/scanner_integration.py,sha256=sojtfRJShtUcvZtRncq6mP7x6vI7yw_Yxdy9Sq1B5y4,135113
117
117
  regscale/integrations/variables.py,sha256=AyaG286U-ek2uQ4qeYBAG3eh_QnlBlth1PKZI5Je5sc,2212
118
118
  regscale/integrations/commercial/__init__.py,sha256=sVbzBnLbKRhnAmRsIw8kRvfbyJojPfVqzH3OlgoxvqM,13927
119
119
  regscale/integrations/commercial/ad.py,sha256=YXSmK8vRf6yi2GnREGa5GrE6GelhFrLj44SY8AO1pK0,15509
120
120
  regscale/integrations/commercial/burp.py,sha256=3BLNKLfwL1x7jfhd8MJD6hdHEpj58pOEtrtCkn2hcWA,3344
121
121
  regscale/integrations/commercial/cpe.py,sha256=eXZeDXicnp1yYgKuyKcthQUYxXi2Pgc__UD8lUqr5H0,4924
122
122
  regscale/integrations/commercial/crowdstrike.py,sha256=6x7_GlYDRCZvPZwqgrDT5KMnXCa6H4RKO-FNkiYxHgU,40194
123
- regscale/integrations/commercial/defender.py,sha256=HAZj1lh4k2mYawsmouU7B2OpmfrGcf49qsEDkZrCPpw,66039
123
+ regscale/integrations/commercial/defender.py,sha256=EptT5e5vBZFJc93douDenT-dJRUGWdRwPvYsvb9Aik4,66033
124
124
  regscale/integrations/commercial/dependabot.py,sha256=V4VbHbwrxHfe7eCilJ7U_MBeIO6X3wetGfIo2DJYe_c,7793
125
- regscale/integrations/commercial/ecr.py,sha256=47iCigssDANlfHYGznU4rfOq6O-1QMGOuP8lBmn7Df0,2693
125
+ regscale/integrations/commercial/ecr.py,sha256=oQafB_Lx4CbGDLb6fqNtY1oAWci6-XWsm39URNbqgrk,2687
126
126
  regscale/integrations/commercial/gitlab.py,sha256=dzfqJQ68QI1ee_BriNMyPuXLkzOhc2vR1hhVfq2j13Y,12496
127
- regscale/integrations/commercial/ibm.py,sha256=RQrivu4tOl_8gh5iUa9m9sGbHusphP8rnU2BZZc9IMs,2772
127
+ regscale/integrations/commercial/ibm.py,sha256=vFloNxSrM2BzoicMSiInYN5dF10BbYHJpJDyyMqZu2I,2766
128
128
  regscale/integrations/commercial/jira.py,sha256=QRYuWfD_3dj87ImZr-eRwOGWrE7-gC7jvvd94F2YQdE,46322
129
- regscale/integrations/commercial/nexpose.py,sha256=lqPw9yk7ywHDoLwPeXKSz9DaLyVzOQIKOotCgayVTNE,2853
129
+ regscale/integrations/commercial/nexpose.py,sha256=fx6O__y7eY0GaAbX8p24_V1VTFfOM7oia4r3aa_qVnE,2847
130
130
  regscale/integrations/commercial/okta.py,sha256=VNwE848xiBxkha4DibkhLJN-fi0T8rLMd30PPAmRjpk,30837
131
- regscale/integrations/commercial/prisma.py,sha256=shr71NkaSfcg2m-Ak6EVV9ozAFPibiOoehEty24MtyA,2841
131
+ regscale/integrations/commercial/prisma.py,sha256=oYS31HlI7GiShUy0r9Luv57Ex3cGqdJcIoVMrwDAC2c,2835
132
132
  regscale/integrations/commercial/salesforce.py,sha256=vvXWlXxhJMQj45tU7wz7o4YbkhqjPlaMx_6SWYkI3Bs,36671
133
133
  regscale/integrations/commercial/servicenow.py,sha256=nUVZwt8-G1rQhwACX6i2BKIAjkMtd46uskBznxgOOsA,64014
134
- regscale/integrations/commercial/snyk.py,sha256=j2cN90BzzcZDeORDcnMbuQwL3__FRd-X5JnH3ZpMKJE,2816
134
+ regscale/integrations/commercial/snyk.py,sha256=CriDWqzZAT9OHYEUNnxBrluzW1C-S4XyoyW2kS4lv4s,3222
135
135
  regscale/integrations/commercial/sonarcloud.py,sha256=_E4DuKRZUqXNNPsxS3UJ3q6llVu-5sfw5pTHxe_UMk0,9821
136
136
  regscale/integrations/commercial/sqlserver.py,sha256=PcDLmsZ9xU5NlFpwPZyMhhxCgX4JK2Ztn2S6kCG4mws,11614
137
- regscale/integrations/commercial/veracode.py,sha256=SYJEXRgExwVPTWBcqap2jcsdggp-4TvdETLrSCVEOvo,2919
138
- regscale/integrations/commercial/xray.py,sha256=egJO6fCQ8jhSpyu6Gj2xczTtUMEiSAJKDz05dT-YZ6M,2734
137
+ regscale/integrations/commercial/veracode.py,sha256=sKeGXvjqP8LfFP56xavAyx5CxfKxpJIEw-PTxrHJ8bc,3374
138
+ regscale/integrations/commercial/xray.py,sha256=rsmlGqj4N7hzt6rW5UIKOBZD2maDVwXxOXiYKlI6F8c,2728
139
139
  regscale/integrations/commercial/amazon/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
140
140
  regscale/integrations/commercial/amazon/common.py,sha256=qX0GkUzl0PSwOPTtEH94Qgixi8D5s_Xbo2yMmQhcWnY,3343
141
141
  regscale/integrations/commercial/aqua/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- regscale/integrations/commercial/aqua/aqua.py,sha256=UrtECdLn5Nba758QCMnRxnOtUppnUQjtgkWHljllsHQ,2662
142
+ regscale/integrations/commercial/aqua/aqua.py,sha256=bdwqyir9ztGRwqZlWBQIHjtBEo2utSy5HJoraAx823I,2656
143
143
  regscale/integrations/commercial/aws/__init__.py,sha256=Pii3CMGvIwZnTSenuvDvuybWXBtIRdGyvF02sykzg1A,203
144
- regscale/integrations/commercial/aws/cli.py,sha256=Nkyyb1VrX25ouluHsUBPZzvclpg6bd6yLUlk8C51znI,9233
144
+ regscale/integrations/commercial/aws/cli.py,sha256=B_Ol7p5PmaNqQK4Y5GVyONZZBbtadTSJAq70YRD6hBs,9227
145
145
  regscale/integrations/commercial/aws/scanner.py,sha256=E3antyGd1HG0cMAM6hurKeij6li7mCstKFQTl3XZ_z4,33600
146
146
  regscale/integrations/commercial/aws/inventory/__init__.py,sha256=nBWBRs_lTbp3tfCcnmN855qQpnXtwyJ5miTXlD7Uhcs,4302
147
147
  regscale/integrations/commercial/aws/inventory/base.py,sha256=KL1Ntz0h0WGDu84LQf3y92uLl9a0sl4yIFi6-ZIFAMI,2068
@@ -183,10 +183,10 @@ regscale/integrations/commercial/nessus/scanner.py,sha256=xz-OBd98ZbKKWnuxsP7oTq
183
183
  regscale/integrations/commercial/opentext/__init__.py,sha256=zqCPb_4rYRZZPXfeKn4AoZyyYyQ6MU4C0lCs2ysOBhc,251
184
184
  regscale/integrations/commercial/opentext/commands.py,sha256=TTClFg16EzlXQOjdQQ6AdWuVuh7H2zO0V9rXd73-ni0,2572
185
185
  regscale/integrations/commercial/opentext/scanner.py,sha256=QAb9FPiYeQCEnqL3dnFBFe64LydwLaR8HWpYmabgcbE,22581
186
- regscale/integrations/commercial/qualys/__init__.py,sha256=ATKL6TvzgZNtJezlDu6K-_LZ5tEVpF8a2SsiIVTlVuI,88209
187
- regscale/integrations/commercial/qualys/containers.py,sha256=9jiBBgjoDRuOB2y5_rmOIgJ0nysrwZVgMTrBZW4fRzk,11958
186
+ regscale/integrations/commercial/qualys/__init__.py,sha256=wavc61vUdLTGyVmj3JKqv6dRs6HbZAVo2x-tc0U8PtQ,92060
187
+ regscale/integrations/commercial/qualys/containers.py,sha256=UBLx37xU-pam544xnwr_nzFIvokDmLiB7mF9ZoMwU3c,12047
188
188
  regscale/integrations/commercial/qualys/qualys_error_handler.py,sha256=2nlxeNLQMOpkiTij39VTsZg-2AFQsM6-rwlBW2pVpKY,18594
189
- regscale/integrations/commercial/qualys/scanner.py,sha256=cvz7j2X160l5RP74Vtq6-FagIDhT6zQfQPoQOTOR07c,56284
189
+ regscale/integrations/commercial/qualys/scanner.py,sha256=X-TvrDigfvSdJ-3GsDivlrEuVzZZwTQEF-PLSMsCvws,56554
190
190
  regscale/integrations/commercial/qualys/variables.py,sha256=TPoIW5_yNmU6c0AlLOpHQdxp6OrH8jUmMJikqT7YYz8,962
191
191
  regscale/integrations/commercial/sap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
192
  regscale/integrations/commercial/sap/click.py,sha256=pWgjUOA_4WKkDUWcE8z4EshnJUdrTl15NKUfKpKyqzE,522
@@ -211,7 +211,7 @@ regscale/integrations/commercial/stigv2/stig_integration.py,sha256=-UlfL0BBI3jFG
211
211
  regscale/integrations/commercial/synqly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
212
  regscale/integrations/commercial/synqly/assets.py,sha256=wAyoMaR5MizBifnKUnNrx6ZlnmneP07LEBjJuf1POZs,3329
213
213
  regscale/integrations/commercial/synqly/edr.py,sha256=IvObVzz5Y2a8iNjCP9dTfKUEv2ZAboCzcFqxI00Y6Do,2978
214
- regscale/integrations/commercial/synqly/ticketing.py,sha256=ubTVKqB_f-G6mE4EUxbsU5BkO-GlMTvRkJVRq_tl_jg,6399
214
+ regscale/integrations/commercial/synqly/ticketing.py,sha256=RoteG9YUvnArlB5Kvmysc3hPTbzVrvuI_f4CQQSfAy8,6890
215
215
  regscale/integrations/commercial/synqly/vulnerabilities.py,sha256=bLYECK4G3K-j_gXrfEwlse6Rc1ao4TTFezBYxW11CXM,7689
216
216
  regscale/integrations/commercial/tenablev2/__init__.py,sha256=UpSY_oww83kz9c7amdbptJKwDB1gAOBQDS-Q9WFp588,295
217
217
  regscale/integrations/commercial/tenablev2/authenticate.py,sha256=VPTmxaVCaah2gJYNeU9P1KoQ734ohGQ-wcVy6JfqDTE,1247
@@ -243,11 +243,11 @@ regscale/integrations/integration/integration.py,sha256=pr_fbqBieYbqp3PdBjuqKuZC
243
243
  regscale/integrations/integration/inventory.py,sha256=gHL1a6VSV3zf4DTmksEy8qXNrqhIun8TwLxhRpuEMqY,341
244
244
  regscale/integrations/integration/issue.py,sha256=HaCF_5F_U_E5ecYlMgOZiM-yhXnt7OLj47OAJkf9X3g,3507
245
245
  regscale/integrations/public/__init__.py,sha256=_TpTkqySBuI7GqMiRHtcQS-g9rAG5fcdd8EpCDWmrZ0,2949
246
- regscale/integrations/public/cisa.py,sha256=kq_fNlhTvX0Sa0zEfVPXpK1CZBhBb1gX4ixzcIVJnV4,21598
246
+ regscale/integrations/public/cisa.py,sha256=EE2rN4GWWEk5VLt4iMVwGMYB6yYPxe6KyW_tLs8dDmA,21870
247
247
  regscale/integrations/public/criticality_updater.py,sha256=bekadBBJkym5Dd9JZFNQmY3I0e1xgBvxkyVwgCNOKus,2806
248
248
  regscale/integrations/public/emass.py,sha256=culHHuXUlVYkB6DcVcnUvpBzU1eRyyVGgsJ3KqC8HOw,13672
249
249
  regscale/integrations/public/emass_slcm_import.py,sha256=9nvS2XWjSr65Y120tK_Dxd4uy7Tv_RUKpl__GKZmrWE,23974
250
- regscale/integrations/public/nist_catalog.py,sha256=1h0GKWwuqXuB1X_viyOkzvSYETlqYrm_t3hIQcHxHiE,10075
250
+ regscale/integrations/public/nist_catalog.py,sha256=lHevdsSBTwwVzynJl_ckCyQ4cFOYc2XaxG0TpzYfphM,10272
251
251
  regscale/integrations/public/oscal.py,sha256=GcPqRQqCmijCp7TmjBG4303YcJ7U4hfu6KiFSb9QC7Y,72675
252
252
  regscale/integrations/public/otx.py,sha256=i6mukISHLYmFJkxkkxhTkqtgcmXioZ00xLQ9YMg2Yzo,5401
253
253
  regscale/integrations/public/fedramp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -311,7 +311,7 @@ regscale/models/integration_models/azure_alerts.py,sha256=2etrpvcxa7jVQrc98bJlVG
311
311
  regscale/models/integration_models/base64.py,sha256=sxV6O5qY1_TstJENX5jBPsSdQwmA83-NNhgJFunXiZE,570
312
312
  regscale/models/integration_models/burp.py,sha256=FBEBkH3U0Q8vq71FFoWnvgLRF5Hkr9GYmQFmNNHFrVk,16932
313
313
  regscale/models/integration_models/burp_models.py,sha256=UytDTAcCaxyu-knFkm_mEUH6UmWK3OTXKSC9Sc6OjVs,3669
314
- regscale/models/integration_models/cisa_kev_data.json,sha256=9Q5Yhv6s8tWWtWBm6IUN9zV2IYuk-vvpGND6DETVTAs,1239665
314
+ regscale/models/integration_models/cisa_kev_data.json,sha256=sgYHr73aP2OTKC55f05J-HtI9bZPEkrp3GcFn8xyM4o,1243169
315
315
  regscale/models/integration_models/defender_data.py,sha256=jsAcjKxiGmumGerj7xSWkFd6r__YpuKDnYX5o7xHDiE,2844
316
316
  regscale/models/integration_models/defenderimport.py,sha256=OFwEH0Xu-HFLIZJZ8hP60Ov3lS8RR7KHEsw4wI8QnoE,5766
317
317
  regscale/models/integration_models/drf.py,sha256=Aq7AdLa_CH97NrnR-CxaFI22JjVN9uCxVN7Z-BBUaNU,18896
@@ -323,7 +323,7 @@ regscale/models/integration_models/nexpose.py,sha256=mfaVZP9GVbCwdqEYGrGZ0pwSdDX
323
323
  regscale/models/integration_models/prisma.py,sha256=83LeS96rUgaZvPzl6ei_FWjTFBojsyqzMWoSJ1CnsJ0,8280
324
324
  regscale/models/integration_models/qualys.py,sha256=YrMKA4i03EQ63LyFdbIsFfPMCRJC9ZWj__gv8Nb3xfo,27913
325
325
  regscale/models/integration_models/qualys_scanner.py,sha256=6rAeCR9qI10MM_LWtZtOhWaT6mERWtII2IxxyvQhfKw,6453
326
- regscale/models/integration_models/send_reminders.py,sha256=Zon6fyV0nODp8l5KuABe97Rz8l37o4biRb5iML7GHiE,26137
326
+ regscale/models/integration_models/send_reminders.py,sha256=h9zOX5Hb7e4K7qFmG-FixuNK1cHF0OF4HQl2W9fiIqE,26358
327
327
  regscale/models/integration_models/snyk.py,sha256=Wk04Dbz67s2uniWkfllRHhlEBrRYiZq5CRwkOpDyHls,11524
328
328
  regscale/models/integration_models/trivy_import.py,sha256=R6aZXUaNKf5Gdo1kNxIKM-HMW95XDWVCG_gMrzDYNuQ,9210
329
329
  regscale/models/integration_models/veracode.py,sha256=qcNllrTstGshpTaWDFm0Z-XYbP-mSVMWWiGoq5karO0,10431
@@ -337,11 +337,11 @@ regscale/models/integration_models/axonius_models/connectors/assets.py,sha256=6m
337
337
  regscale/models/integration_models/ecr_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
338
338
  regscale/models/integration_models/ecr_models/data.py,sha256=l28DCidXar1JygYBQZL9MYenQA9N-Cx3Skf51IOjZcw,1017
339
339
  regscale/models/integration_models/ecr_models/ecr.py,sha256=-s_5mj4BVKImrvfMaOJLT4qc5EqTCbv8qM4uJiH_nKc,9502
340
- regscale/models/integration_models/flat_file_importer/__init__.py,sha256=7UpnHHBN9B6WDjjWvoRpk6r-c4IfpP_BlERFFBbic9Q,39657
340
+ regscale/models/integration_models/flat_file_importer/__init__.py,sha256=Z-Gzk6v8h_JzHHuwlUr3R_vrBipLscfM0g_f8yjSVvw,40313
341
341
  regscale/models/integration_models/sbom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
342
342
  regscale/models/integration_models/sbom/cyclone_dx.py,sha256=0pFR0BWBrF5c8_cC_8mj2MXvNOMHOdHbBYXvTVfFAh8,4058
343
343
  regscale/models/integration_models/synqly_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
- regscale/models/integration_models/synqly_models/capabilities.json,sha256=TlYj_1dDBdICephntMKZR7HdLzpSqK_eMI8btz7q2-A,354906
344
+ regscale/models/integration_models/synqly_models/capabilities.json,sha256=kpHT6EWkFvjSmCOj1UErmPPIPuLhh-AjUjtvAewX36s,356796
345
345
  regscale/models/integration_models/synqly_models/connector_types.py,sha256=8nxptkTexpskySnmL0obNAff_iu_fx6tJ7i1-4hJvao,461
346
346
  regscale/models/integration_models/synqly_models/ocsf_mapper.py,sha256=e2kTOhWSNRnzbgMchMx-7c21pCgSv2DqWnxvajKEKJM,16960
347
347
  regscale/models/integration_models/synqly_models/param.py,sha256=Xt5Zm6lC_VkLj7LF2qXo72TJZHysqttsp5ai0NCf1po,2643
@@ -372,7 +372,7 @@ regscale/models/regscale_models/compliance_settings.py,sha256=e0Ghjozt8iCgzmCPfY
372
372
  regscale/models/regscale_models/component.py,sha256=zURPe-unWeHpkx6OoVq3AxdOYp7Ci14xXMy-AjYmXik,14149
373
373
  regscale/models/regscale_models/component_mapping.py,sha256=g0cbbW4X49SDdlB_YtKMrP4eiK9OkrJqiut0ucdyVDA,2162
374
374
  regscale/models/regscale_models/control.py,sha256=mO46F1IfiXnLSb3YhylaS3SyjtT51s-r8b3hjix9Gbc,1072
375
- regscale/models/regscale_models/control_implementation.py,sha256=nq-kln0V8lD3Bh4lW9-vmA1QILDqdg6qDB4FmlZAIv4,48357
375
+ regscale/models/regscale_models/control_implementation.py,sha256=mPpoCPxgCK7oYW-wKMfPzBgYeP9qqY9u71jRdSu44gY,50157
376
376
  regscale/models/regscale_models/control_objective.py,sha256=qGh8OtATjjc4JS-3bC1AX6TbgtRtz-I0dckbuZ2RzVo,9496
377
377
  regscale/models/regscale_models/control_parameter.py,sha256=5VVkbVZTb2Hzy_WiybU2JtrvhQp8DLSWxRcbSKxktiI,3499
378
378
  regscale/models/regscale_models/control_test.py,sha256=FG-fLS9JJf8__a84W2LtBXtEjzOH9iq2EO949vBx3eY,949
@@ -397,7 +397,7 @@ regscale/models/regscale_models/implementation_role.py,sha256=ZjJOhjM3dVlulsGx3l
397
397
  regscale/models/regscale_models/incident.py,sha256=jsS4MfigzjwFphvdIrBk62GfvbceQ8VL-AhfQSQM460,6028
398
398
  regscale/models/regscale_models/inherited_control.py,sha256=RuQJgVyZgfoIrUG_vvwQYHECb3wsFjDH-zPj-bIFBNU,2007
399
399
  regscale/models/regscale_models/interconnection.py,sha256=B8Y4I6KnN-T_gid08QM_o50OwGZcFfO8SJFY2uB68Ak,1256
400
- regscale/models/regscale_models/issue.py,sha256=9ufa-gboSYBBQ2wCTVV0wk6qcWsdX8K0plWj0c_zpus,49064
400
+ regscale/models/regscale_models/issue.py,sha256=P37yGe-d67tzFN34rbZINNuCz3mK5x7Cf8WDUh5Z1BU,49225
401
401
  regscale/models/regscale_models/leveraged_authorization.py,sha256=OUrL8JQV3r7T3ldHlL6Y_ZLv6KuQIC-3eZW5wZ7XFUk,4192
402
402
  regscale/models/regscale_models/line_of_inquiry.py,sha256=Uu0lQEhif0W6yTSkJo27GyQGmExSngJvyqGBTr4Q8Fg,1713
403
403
  regscale/models/regscale_models/link.py,sha256=lAY4Ig3Menm1EqfcAbVJ7jsCsRO5tWtJIf-9-G9FXT8,6593
@@ -407,9 +407,9 @@ regscale/models/regscale_models/module.py,sha256=a7lalHmVTQ04ZILnJxuFWdHYDtyusBM
407
407
  regscale/models/regscale_models/modules.py,sha256=yeva_tct88o2NFt93_zmqUcXZ3LucVbAv5FvQPru3cQ,8551
408
408
  regscale/models/regscale_models/objective.py,sha256=aJIpmkZ-NscqV2y8SGB4HYzm615b6mklyHnW9bL2ljk,249
409
409
  regscale/models/regscale_models/organization.py,sha256=E3Y5bwtgaIRL4rbKxU3DyfFVYUzP3d-1umG_CIUG3gE,714
410
- regscale/models/regscale_models/parameter.py,sha256=WS5onxkvz119brxugoBidK7K_3CeNVzchLTvW8aEdJs,3859
410
+ regscale/models/regscale_models/parameter.py,sha256=IEOVGaTUxRVNfwc6vN_y6eN45P5R1C4O4mz3uukiCSA,3915
411
411
  regscale/models/regscale_models/policy.py,sha256=IQ-niE1PP8L2OavYfOQQsvSInw1sw371mkJrGFyWZ94,2382
412
- regscale/models/regscale_models/ports_protocol.py,sha256=Pcn-R6bsmxWiaYEtlZuu7Zv0C4vVX8YHMWgGcd1MRCY,2146
412
+ regscale/models/regscale_models/ports_protocol.py,sha256=RGdXdNTn2C_elWPBZxwu7cs8v24oSgTiTjPnLk_tCiI,2347
413
413
  regscale/models/regscale_models/privacy.py,sha256=iADeNOyU7h0XQQQCtWRxxVD1fmYOCzmt8ZSn-LsThZw,2897
414
414
  regscale/models/regscale_models/profile.py,sha256=BY2_yhhbDC2UbtGtMSRnRWq5R_ik0rdqmAWY8-1G4bI,2692
415
415
  regscale/models/regscale_models/profile_link.py,sha256=Nxs4HgpRMC-ftSztelWqKf5J2x3NnEa3X9D4cAJh054,2213
@@ -443,7 +443,7 @@ regscale/models/regscale_models/task.py,sha256=le3N2GIUCEJrFnNh0DLU7RAcle4ULr8OP
443
443
  regscale/models/regscale_models/threat.py,sha256=4TNZcRnTgmlDwBsYu5Pbh9GRd8ZWAtqqr0Xph3uPNAA,7255
444
444
  regscale/models/regscale_models/user.py,sha256=wiU2qKwp3aYtmaHEmTtv8BbMEgFb913dHgc2VnmsAkg,7186
445
445
  regscale/models/regscale_models/user_group.py,sha256=vzlXHvPNsgJd38H0R3osi46Oj19QO5oPx0qXntQBKWI,1891
446
- regscale/models/regscale_models/vulnerability.py,sha256=klN8MYatevFGVaulex6WeLw-uvxT07ty-cXU9CxS_-Q,11042
446
+ regscale/models/regscale_models/vulnerability.py,sha256=CyR1hkt07Inn8U7Ac-DTntgJXeKM3RluldKy1RWTYIA,11050
447
447
  regscale/models/regscale_models/vulnerability_mapping.py,sha256=k14azHU7VwryHfXaJdvAMWXs3AqHDr7rnj602bscWQM,6260
448
448
  regscale/models/regscale_models/workflow.py,sha256=uMNVVAn5qR8wxjMP5PHbcvMmvPRe1gn1oclVUpbv52s,1873
449
449
  regscale/models/regscale_models/workflow_action.py,sha256=zMHrvUkTQJlkCj6Xx6wadozBwsVPpObj5GD81LI2VZc,925
@@ -460,7 +460,7 @@ regscale/utils/decorators.py,sha256=3QLjZ4_QfUSdJYYMw4nGE7EPdo2P7P3AERZxHHVgXDI,
460
460
  regscale/utils/dict_utils.py,sha256=2iCUMUZP8urkmpzB3BpnaSMrEQtrT9u4HINLSXGiXyI,2468
461
461
  regscale/utils/files.py,sha256=LtOca6DK4yZxBE037fRi1lsJeHmBmXLBkDq_er3Uhmw,2410
462
462
  regscale/utils/fxns.py,sha256=dLmxVkeoYXljAs0JbWaehBqZ2BxrdZ9ilH9FGvWRWx4,914
463
- regscale/utils/graphql_client.py,sha256=azW55ta9Fi5X6SfvNxcmBkU6b-_vTF9wogQou402d-4,4596
463
+ regscale/utils/graphql_client.py,sha256=IqN7IHSH8bE5w9SVRqib_9sLFDPCMp4hWAdkSS-tDZ8,4484
464
464
  regscale/utils/lists.py,sha256=CuxSVJNSFQ5TXtzXh5LQqL4yOZhuCmfcKbeQgjeBjok,459
465
465
  regscale/utils/numbers.py,sha256=0LkZvewuKXogk6_oWF90OAoGIuzK1fjWZ4gRCC9_TlQ,301
466
466
  regscale/utils/shell.py,sha256=H9Zzwt3zxyzWmfiH3tVrcIoAcEHtF_pXzM5ERd7PAGc,4176
@@ -468,7 +468,7 @@ regscale/utils/string.py,sha256=pY4eMcXRruCfGRaWKPN5NTWj6bXiKytxmU6XSxK4y6k,4198
468
468
  regscale/utils/synqly_utils.py,sha256=DjkdAxdUJBOU5YfAJ7pFFNBPSP37Gs9NQS10xduaYmA,6324
469
469
  regscale/utils/version.py,sha256=bOH1vlvOEAt1f-fzzFxtZrg3VcnqL5SA4ud1TjZVQGU,4265
470
470
  regscale/utils/threading/__init__.py,sha256=AuPiT3EijkUL4BSxtEQw3TrSvFW6oIfQzxtdy5sBCkk,296
471
- regscale/utils/threading/threadhandler.py,sha256=W6Ujc-kf0vOhlQgsMb7MRFImtBuWQ-IsOiCunRAqCuY,4709
471
+ regscale/utils/threading/threadhandler.py,sha256=5lp9US6bKwh372UqrTvvHWIIodCcPIUmpcfGeCwG3VM,5061
472
472
  regscale/utils/threading/threadsafe_counter.py,sha256=Dwt-jt4nN-ApMgpxONM7RFll6FU4hMCeZCW54rjDPjs,1037
473
473
  regscale/utils/threading/threadsafe_dict.py,sha256=XCVN5DoJsgZj-0tkDYAZb2QTLTZF9wS_ve-XKFJiywg,7656
474
474
  regscale/utils/threading/threadsafe_list.py,sha256=-ltEj-MQH0dN0z_5aalptwJw2_EAU6nn4RX32BDrhyI,2274
@@ -489,15 +489,16 @@ tests/mocks/xml.py,sha256=WYeZRZfyYmOi4TTvF7I53l3gKF4x1DE1dqy08szPkfQ,261
489
489
  tests/regscale/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
490
490
  tests/regscale/test_about.py,sha256=32YZC8XJW5QkIYIfwEVGIdIxQNUIbyzn3OzVcX_5X24,635
491
491
  tests/regscale/test_authorization.py,sha256=fls5ODCYiu0DdkwXFepO_GM-BP6tRaPmMCZWX6VD2e8,1899
492
- tests/regscale/test_init.py,sha256=W4deASP6ebAfheqaU5OaiGAfMP6vHGXkJBI4iO98cMQ,3998
492
+ tests/regscale/test_init.py,sha256=O_3Dh7s7ObycIZyd0-Y10NCTKdGnrnotcpU6CUB5pno,4180
493
493
  tests/regscale/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
494
494
  tests/regscale/core/test_api.py,sha256=25AsIT-jg8SrlkPeynUwwm4PvTOrHcRO2Ba_omnNLUY,7512
495
- tests/regscale/core/test_app.py,sha256=8HvRRD37pI_x4VjXyjs1g7JWXr-jFIbK_lYst4tLXjI,18922
495
+ tests/regscale/core/test_app.py,sha256=naFMgYRXWSHmYghhd8zsRJf1MsZwu0F1DClujmp-gtU,40593
496
496
  tests/regscale/core/test_login.py,sha256=Kl7ySS8JU7SzhmupaDexeUH8VOMjtMRJvW8-CimxHqU,1166
497
497
  tests/regscale/core/test_logz.py,sha256=Yf6tAthETLlYOEp3hee3ovDw-WnZ_6fTw3e1rjx4xSw,2621
498
498
  tests/regscale/core/test_sbom_generator.py,sha256=lgzo1HRbkNIIDZIeKiM2JbbIYQsak0BpU0GlvbrcexM,2935
499
499
  tests/regscale/core/test_validation_utils.py,sha256=5GHQfSVEr3f1HzEatI5CyCgGriyc-OPyKbc1YQ9zRjI,5464
500
500
  tests/regscale/core/test_version.py,sha256=q8F2ERXxdToXbYxfOcP9f6lkUYaxF4jEmsPUmduMo9U,3216
501
+ tests/regscale/core/test_version_regscale.py,sha256=Amz4RfM6Xm8OnA9F4phAoJdrJMrsgU25b9Q6QxXOLTs,2013
501
502
  tests/regscale/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
502
503
  tests/regscale/integrations/test_api_paginator.py,sha256=42-F8FMkJwkZ1Xlsj7YYVyOb6-rbxwI4F4H6Y4ZI9jA,18973
503
504
  tests/regscale/integrations/test_integration_mapping.py,sha256=ffl7opp6_IDxScSOfULy8ASqytYUMAqGA5c3PpAu3u8,1981
@@ -517,9 +518,9 @@ tests/regscale/models/test_regscale_model.py,sha256=ZsrEZkC4EtdIsoQuayn1xv2gEGcV
517
518
  tests/regscale/models/test_report.py,sha256=eiSvS_zS0aVeL0HBvtmHVvEzcfF9ZFVn2twj5g8KttY,970
518
519
  tests/regscale/models/test_tenable_integrations.py,sha256=PNJC2Zu6lv1xj7y6e1yOsz5FktSU3PRKb5x3n5YG3w0,4072
519
520
  tests/regscale/models/test_user_model.py,sha256=e9olv28qBApgnvK6hFHOgXjUC-pkaV8aGDirEIWASL4,4427
520
- regscale_cli-6.20.7.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
521
- regscale_cli-6.20.7.0.dist-info/METADATA,sha256=IZ2AyF4MaXO3ibPB0Lo44e6NmP5eiN0kd88da56UxSA,34899
522
- regscale_cli-6.20.7.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
523
- regscale_cli-6.20.7.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
524
- regscale_cli-6.20.7.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
525
- regscale_cli-6.20.7.0.dist-info/RECORD,,
521
+ regscale_cli-6.20.9.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
522
+ regscale_cli-6.20.9.0.dist-info/METADATA,sha256=JMEea5DFwZ0PLNWKrLxGzq6yKwrMCWTrp5qPxYCydR4,34955
523
+ regscale_cli-6.20.9.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
524
+ regscale_cli-6.20.9.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
525
+ regscale_cli-6.20.9.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
526
+ regscale_cli-6.20.9.0.dist-info/RECORD,,