regscale-cli 6.24.0.0__py3-none-any.whl → 6.25.0.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/core/app/api.py +1 -1
- regscale/core/app/application.py +5 -3
- regscale/core/app/internal/evidence.py +308 -202
- regscale/dev/code_gen.py +84 -3
- regscale/integrations/commercial/__init__.py +2 -0
- regscale/integrations/commercial/jira.py +95 -22
- regscale/integrations/commercial/microsoft_defender/defender.py +326 -5
- regscale/integrations/commercial/microsoft_defender/defender_api.py +348 -14
- regscale/integrations/commercial/microsoft_defender/defender_constants.py +157 -0
- regscale/integrations/commercial/synqly/assets.py +99 -16
- regscale/integrations/commercial/synqly/query_builder.py +533 -0
- regscale/integrations/commercial/synqly/vulnerabilities.py +134 -14
- regscale/integrations/commercial/wizv2/click.py +23 -0
- regscale/integrations/commercial/wizv2/compliance_report.py +137 -26
- regscale/integrations/compliance_integration.py +247 -5
- regscale/integrations/scanner_integration.py +16 -0
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/integration_models/synqly_models/connectors/vulnerabilities.py +12 -2
- regscale/models/integration_models/synqly_models/filter_parser.py +332 -0
- regscale/models/integration_models/synqly_models/synqly_model.py +47 -3
- regscale/models/regscale_models/compliance_settings.py +28 -0
- regscale/models/regscale_models/component.py +1 -0
- regscale/models/regscale_models/control_implementation.py +143 -4
- regscale/regscale.py +1 -1
- regscale/validation/record.py +23 -1
- {regscale_cli-6.24.0.0.dist-info → regscale_cli-6.25.0.0.dist-info}/METADATA +9 -9
- {regscale_cli-6.24.0.0.dist-info → regscale_cli-6.25.0.0.dist-info}/RECORD +32 -30
- {regscale_cli-6.24.0.0.dist-info → regscale_cli-6.25.0.0.dist-info}/LICENSE +0 -0
- {regscale_cli-6.24.0.0.dist-info → regscale_cli-6.25.0.0.dist-info}/WHEEL +0 -0
- {regscale_cli-6.24.0.0.dist-info → regscale_cli-6.25.0.0.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.24.0.0.dist-info → regscale_cli-6.25.0.0.dist-info}/top_level.txt +0 -0
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
"""Model for a RegScale Security Control Implementation"""
|
|
4
4
|
# standard python imports
|
|
5
5
|
import logging
|
|
6
|
+
from functools import lru_cache
|
|
6
7
|
from enum import Enum
|
|
7
|
-
from typing import Any, Callable, Dict, List, Optional, Union
|
|
8
|
+
from typing import Any, Callable, Dict, List, Optional, Union
|
|
8
9
|
from urllib.parse import urljoin
|
|
9
10
|
|
|
10
11
|
import requests
|
|
@@ -19,7 +20,6 @@ from regscale.models.regscale_models.implementation_role import ImplementationRo
|
|
|
19
20
|
from regscale.models.regscale_models.regscale_model import RegScaleModel
|
|
20
21
|
from regscale.models.regscale_models.security_control import SecurityControl
|
|
21
22
|
|
|
22
|
-
|
|
23
23
|
logger = logging.getLogger("regscale")
|
|
24
24
|
PATCH_CONTENT_TYPE = "application/json-patch+json"
|
|
25
25
|
|
|
@@ -74,6 +74,7 @@ class ControlImplementation(RegScaleModel):
|
|
|
74
74
|
_get_objects_for_list = True
|
|
75
75
|
|
|
76
76
|
controlOwnerId: str = Field(default_factory=RegScaleModel.get_user_id)
|
|
77
|
+
controlOwnersIds: Optional[List[str]] = Field(default=None)
|
|
77
78
|
status: str # Required
|
|
78
79
|
controlID: int # Required foreign key to Security Control
|
|
79
80
|
status_lst: List[ControlImplementationStatus] = []
|
|
@@ -104,7 +105,9 @@ class ControlImplementation(RegScaleModel):
|
|
|
104
105
|
qiVendorCompliance: Optional[str] = None
|
|
105
106
|
qiIssues: Optional[str] = None
|
|
106
107
|
qiOverall: Optional[str] = None
|
|
107
|
-
responsibility:
|
|
108
|
+
responsibility: str = Field(
|
|
109
|
+
default_factory=lambda: ControlImplementation.get_default_responsibility()
|
|
110
|
+
) # Required field - Control Origination
|
|
108
111
|
inheritedControlId: Optional[int] = None
|
|
109
112
|
inheritedRequirementId: Optional[int] = None
|
|
110
113
|
inheritedSecurityPlanId: Optional[int] = None
|
|
@@ -153,9 +156,24 @@ class ControlImplementation(RegScaleModel):
|
|
|
153
156
|
"""
|
|
154
157
|
self.status_lst = self._get_status_enum()
|
|
155
158
|
|
|
159
|
+
# Backwards compatibility: Auto-populate controlOwnersIds if not set but controlOwnerId exists
|
|
160
|
+
if self.controlOwnersIds is None and self.controlOwnerId:
|
|
161
|
+
self.controlOwnersIds = [self.controlOwnerId]
|
|
162
|
+
|
|
163
|
+
# Set intelligent default responsibility if not explicitly set and we have parent info
|
|
164
|
+
if (
|
|
165
|
+
self.responsibility == self.get_default_responsibility()
|
|
166
|
+
and self.parentId
|
|
167
|
+
and self.parentModule == "securityplans"
|
|
168
|
+
):
|
|
169
|
+
# Try to get a more specific default based on the actual security plan's compliance settings
|
|
170
|
+
better_default = self.get_default_responsibility(parent_id=self.parentId)
|
|
171
|
+
if better_default != self.responsibility:
|
|
172
|
+
self.responsibility = better_default
|
|
173
|
+
|
|
156
174
|
def __setattr__(self, name: str, value: Any) -> None:
|
|
157
175
|
"""
|
|
158
|
-
Override __setattr__ to update status_lst when status changes.
|
|
176
|
+
Override __setattr__ to update status_lst when status changes and handle backwards compatibility.
|
|
159
177
|
|
|
160
178
|
:param str name: The attribute name
|
|
161
179
|
:param Any value: The attribute value
|
|
@@ -164,6 +182,127 @@ class ControlImplementation(RegScaleModel):
|
|
|
164
182
|
super().__setattr__(name, value)
|
|
165
183
|
if name == "status":
|
|
166
184
|
self.status_lst = self._get_status_enum()
|
|
185
|
+
elif name == "controlOwnerId" and value:
|
|
186
|
+
# Backwards compatibility: Auto-populate controlOwnersIds when controlOwnerId is set
|
|
187
|
+
if hasattr(self, "controlOwnersIds") and (
|
|
188
|
+
not hasattr(self, "_controlOwnersIds") or self._controlOwnersIds is None
|
|
189
|
+
):
|
|
190
|
+
super().__setattr__("controlOwnersIds", [value])
|
|
191
|
+
|
|
192
|
+
@classmethod
|
|
193
|
+
@lru_cache(maxsize=256)
|
|
194
|
+
def get_default_responsibility(
|
|
195
|
+
cls, parent_id: Optional[int] = None, compliance_setting_id: Optional[int] = None
|
|
196
|
+
) -> str:
|
|
197
|
+
"""
|
|
198
|
+
Get default responsibility (control origination) based on compliance settings.
|
|
199
|
+
|
|
200
|
+
Cached for high-performance bulk operations.
|
|
201
|
+
|
|
202
|
+
:param Optional[int] parent_id: The parent security plan ID to get compliance settings from
|
|
203
|
+
:param Optional[int] compliance_setting_id: Specific compliance setting ID override
|
|
204
|
+
:return: Default responsibility string
|
|
205
|
+
:rtype: str
|
|
206
|
+
"""
|
|
207
|
+
actual_compliance_setting_id = compliance_setting_id or cls._get_compliance_setting_id_from_parent(parent_id)
|
|
208
|
+
|
|
209
|
+
if actual_compliance_setting_id:
|
|
210
|
+
responsibility = cls._get_responsibility_from_compliance_settings(actual_compliance_setting_id)
|
|
211
|
+
if responsibility:
|
|
212
|
+
return responsibility
|
|
213
|
+
|
|
214
|
+
return cls._get_fallback_responsibility(actual_compliance_setting_id)
|
|
215
|
+
|
|
216
|
+
@classmethod
|
|
217
|
+
@lru_cache(maxsize=128)
|
|
218
|
+
def _get_compliance_setting_id_from_parent(cls, parent_id: Optional[int]) -> Optional[int]:
|
|
219
|
+
"""
|
|
220
|
+
Get compliance setting ID from parent security plan.
|
|
221
|
+
|
|
222
|
+
Cached to avoid repeated API calls for the same security plan.
|
|
223
|
+
"""
|
|
224
|
+
if not parent_id:
|
|
225
|
+
return None
|
|
226
|
+
|
|
227
|
+
try:
|
|
228
|
+
from regscale.models.regscale_models.security_plan import SecurityPlan
|
|
229
|
+
|
|
230
|
+
security_plan = SecurityPlan.get_object(parent_id)
|
|
231
|
+
return security_plan.complianceSettingsId if security_plan else None
|
|
232
|
+
except Exception:
|
|
233
|
+
return None
|
|
234
|
+
|
|
235
|
+
@classmethod
|
|
236
|
+
@lru_cache(maxsize=32)
|
|
237
|
+
def _get_responsibility_from_compliance_settings(cls, compliance_setting_id: int) -> Optional[str]:
|
|
238
|
+
"""
|
|
239
|
+
Get default responsibility from compliance settings API using settingsList endpoint.
|
|
240
|
+
|
|
241
|
+
Cached to avoid repeated API calls for the same compliance setting.
|
|
242
|
+
"""
|
|
243
|
+
try:
|
|
244
|
+
from regscale.models.regscale_models.compliance_settings import ComplianceSettings
|
|
245
|
+
|
|
246
|
+
return ComplianceSettings.get_default_responsibility_for_compliance_setting(compliance_setting_id)
|
|
247
|
+
except Exception:
|
|
248
|
+
pass
|
|
249
|
+
|
|
250
|
+
return None
|
|
251
|
+
|
|
252
|
+
@classmethod
|
|
253
|
+
def _get_fallback_responsibility(cls, compliance_setting_id: Optional[int] = None) -> str:
|
|
254
|
+
"""
|
|
255
|
+
Get intelligent fallback responsibility using framework-specific defaults.
|
|
256
|
+
|
|
257
|
+
:param Optional[int] compliance_setting_id: Compliance setting ID to determine framework type
|
|
258
|
+
:return: Fallback responsibility string
|
|
259
|
+
:rtype: str
|
|
260
|
+
"""
|
|
261
|
+
if compliance_setting_id:
|
|
262
|
+
return cls._get_framework_default_responsibility(compliance_setting_id)
|
|
263
|
+
|
|
264
|
+
# Ultimate fallback for unknown compliance settings
|
|
265
|
+
return ControlImplementationOrigin.SERVICE_PROVIDER_CORPORATE.value
|
|
266
|
+
|
|
267
|
+
@classmethod
|
|
268
|
+
def _get_framework_default_responsibility(cls, compliance_setting_id: int) -> str:
|
|
269
|
+
"""
|
|
270
|
+
Get default responsibility for a specific compliance framework.
|
|
271
|
+
|
|
272
|
+
:param int compliance_setting_id: The compliance setting ID (1=RegScale, 2=FedRAMP, 3=PCI, 4=DoD, 5=CMMC)
|
|
273
|
+
:return: Default responsibility string
|
|
274
|
+
:rtype: str
|
|
275
|
+
"""
|
|
276
|
+
try:
|
|
277
|
+
from regscale.models.regscale_models.compliance_settings import ComplianceSettings
|
|
278
|
+
|
|
279
|
+
default_value = ComplianceSettings.get_default_responsibility_for_compliance_setting(compliance_setting_id)
|
|
280
|
+
if default_value:
|
|
281
|
+
return default_value
|
|
282
|
+
except Exception:
|
|
283
|
+
pass
|
|
284
|
+
|
|
285
|
+
# Framework-specific fallbacks if API fails
|
|
286
|
+
fallback_map = {
|
|
287
|
+
1: "Provider", # RegScale Default
|
|
288
|
+
2: ImplementationControlOrigin.SERVICE_PROVIDER_CORPORATE.value, # FedRAMP
|
|
289
|
+
3: ImplementationControlOrigin.SERVICE_PROVIDER_CORPORATE.value, # PCI
|
|
290
|
+
4: "System-Specific", # DoD
|
|
291
|
+
5: "Provider", # CMMC
|
|
292
|
+
}
|
|
293
|
+
return fallback_map.get(compliance_setting_id, "Service Provider Corporate")
|
|
294
|
+
|
|
295
|
+
@classmethod
|
|
296
|
+
def clear_responsibility_cache(cls) -> None:
|
|
297
|
+
"""
|
|
298
|
+
Clear the responsibility lookup cache.
|
|
299
|
+
|
|
300
|
+
Call this method when compliance settings have been updated to ensure
|
|
301
|
+
fresh data is retrieved from the API.
|
|
302
|
+
"""
|
|
303
|
+
cls.get_default_responsibility.cache_clear()
|
|
304
|
+
cls._get_compliance_setting_id_from_parent.cache_clear()
|
|
305
|
+
cls._get_responsibility_from_compliance_settings.cache_clear()
|
|
167
306
|
|
|
168
307
|
@classmethod
|
|
169
308
|
def _get_additional_endpoints(cls) -> ConfigDict:
|
regscale/regscale.py
CHANGED
|
@@ -293,7 +293,7 @@ def banner():
|
|
|
293
293
|
\t[#05d1b7].clicli, [#15cfec].;loooool'
|
|
294
294
|
\t[#05d1b7].clicli, [#18a8e9].:oolloc.
|
|
295
295
|
\t[#05d1b7].clicli, [#ef7f2e].,cli,. [#18a8e9].clllll,
|
|
296
|
-
\t[#05d1b7].clicli. [#ef7f2e].,oxxxxd; [#
|
|
296
|
+
\t[#05d1b7].clicli. [#ef7f2e].,oxxxxd; [#18a8e9].:lllll;
|
|
297
297
|
\t[#05d1b7] ..cli. [#f68d1f]';cdxxxxxo, [#18a8e9].cllllc,
|
|
298
298
|
\t [#f68d1f].:odddddddc. [#1b97d5] .;ccccc:.
|
|
299
299
|
\t[#ffc42a] ..'. [#f68d1f].;ldddddddl' [#0c8cd7].':ccccc:.
|
regscale/validation/record.py
CHANGED
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
"""Rich Logging"""
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
# standard python imports
|
|
7
|
+
from typing import Optional
|
|
8
|
+
|
|
6
9
|
from regscale.core.app.api import Api
|
|
7
10
|
|
|
8
|
-
# standard python imports
|
|
9
11
|
from regscale.core.utils.graphql import GraphQLQuery
|
|
10
12
|
from regscale.models.regscale_models.modules import Modules
|
|
11
13
|
|
|
@@ -46,3 +48,23 @@ def validate_regscale_object(parent_id: int, parent_module: str) -> bool:
|
|
|
46
48
|
if mod_lookup.lower() in [k.lower() for k in dat.keys()] and dat[list(dat.keys())[0]]["totalCount"] > 0:
|
|
47
49
|
result = True
|
|
48
50
|
return result
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def validate_component_or_ssp(ssp_id: Optional[int], component_id: Optional[int]) -> None:
|
|
54
|
+
"""
|
|
55
|
+
Validate that either an SSP or component exists in RegScale.
|
|
56
|
+
|
|
57
|
+
:param Optional[int] ssp_id: The RegScale SSP ID
|
|
58
|
+
:param Optional[int] component_id: The RegScale component ID
|
|
59
|
+
:rtype: None
|
|
60
|
+
"""
|
|
61
|
+
from regscale.core.app.utils.app_utils import error_and_exit
|
|
62
|
+
|
|
63
|
+
if not ssp_id and not component_id:
|
|
64
|
+
error_and_exit("Please provide a RegScale SSP ID or component ID.")
|
|
65
|
+
if ssp_id and component_id:
|
|
66
|
+
error_and_exit("Please provide either a RegScale SSP ID or component ID, but not both.")
|
|
67
|
+
record_id = ssp_id or component_id
|
|
68
|
+
record_module = "securityplans" if ssp_id else "components"
|
|
69
|
+
if not validate_regscale_object(record_id, record_module):
|
|
70
|
+
error_and_exit(f"RegScale {record_module} ID #{record_id} does not exist.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: regscale-cli
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.25.0.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
|
|
@@ -36,7 +36,7 @@ Requires-Dist: google-cloud-asset ~=3.22
|
|
|
36
36
|
Requires-Dist: google-cloud-securitycenter ~=1.25
|
|
37
37
|
Requires-Dist: gql ~=3.5.0
|
|
38
38
|
Requires-Dist: inflect
|
|
39
|
-
Requires-Dist: jira
|
|
39
|
+
Requires-Dist: jira >=3.8.0
|
|
40
40
|
Requires-Dist: jwcrypto >=1.5.1
|
|
41
41
|
Requires-Dist: lxml ==5.3.0
|
|
42
42
|
Requires-Dist: markdown
|
|
@@ -105,7 +105,7 @@ Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow'
|
|
|
105
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
|
-
Requires-Dist: jira
|
|
108
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'airflow'
|
|
109
109
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'airflow'
|
|
110
110
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow'
|
|
111
111
|
Requires-Dist: lxml ==5.3.0 ; extra == 'airflow'
|
|
@@ -189,7 +189,7 @@ Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow-azure'
|
|
|
189
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
|
-
Requires-Dist: jira
|
|
192
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'airflow-azure'
|
|
193
193
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'airflow-azure'
|
|
194
194
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow-azure'
|
|
195
195
|
Requires-Dist: lxml ==5.3.0 ; extra == 'airflow-azure'
|
|
@@ -273,7 +273,7 @@ Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow-sqlserver'
|
|
|
273
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
|
-
Requires-Dist: jira
|
|
276
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'airflow-sqlserver'
|
|
277
277
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'airflow-sqlserver'
|
|
278
278
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow-sqlserver'
|
|
279
279
|
Requires-Dist: lxml ==5.3.0 ; extra == 'airflow-sqlserver'
|
|
@@ -365,7 +365,7 @@ Requires-Dist: importlib-resources ; extra == 'all'
|
|
|
365
365
|
Requires-Dist: inflect ; extra == 'all'
|
|
366
366
|
Requires-Dist: jinja2 ; extra == 'all'
|
|
367
367
|
Requires-Dist: jinja2 >=3.1.5 ; extra == 'all'
|
|
368
|
-
Requires-Dist: jira
|
|
368
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'all'
|
|
369
369
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'all'
|
|
370
370
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'all'
|
|
371
371
|
Requires-Dist: lxml ==5.3.0 ; extra == 'all'
|
|
@@ -440,7 +440,7 @@ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'ansible'
|
|
|
440
440
|
Requires-Dist: gql ~=3.5.0 ; extra == 'ansible'
|
|
441
441
|
Requires-Dist: inflect ; extra == 'ansible'
|
|
442
442
|
Requires-Dist: jinja2 ; extra == 'ansible'
|
|
443
|
-
Requires-Dist: jira
|
|
443
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'ansible'
|
|
444
444
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'ansible'
|
|
445
445
|
Requires-Dist: lxml ==5.3.0 ; extra == 'ansible'
|
|
446
446
|
Requires-Dist: markdown ; extra == 'ansible'
|
|
@@ -506,7 +506,7 @@ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'dev'
|
|
|
506
506
|
Requires-Dist: gql ~=3.5.0 ; extra == 'dev'
|
|
507
507
|
Requires-Dist: inflect ; extra == 'dev'
|
|
508
508
|
Requires-Dist: isort ; extra == 'dev'
|
|
509
|
-
Requires-Dist: jira
|
|
509
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'dev'
|
|
510
510
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'dev'
|
|
511
511
|
Requires-Dist: lxml-stubs ; extra == 'dev'
|
|
512
512
|
Requires-Dist: lxml ==5.3.0 ; extra == 'dev'
|
|
@@ -592,7 +592,7 @@ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'server'
|
|
|
592
592
|
Requires-Dist: gql ~=3.5.0 ; extra == 'server'
|
|
593
593
|
Requires-Dist: importlib-resources ; extra == 'server'
|
|
594
594
|
Requires-Dist: inflect ; extra == 'server'
|
|
595
|
-
Requires-Dist: jira
|
|
595
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'server'
|
|
596
596
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'server'
|
|
597
597
|
Requires-Dist: lxml ==5.3.0 ; extra == 'server'
|
|
598
598
|
Requires-Dist: markdown ; extra == 'server'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
regscale/__init__.py,sha256=ZygAIkX6Nbjag1czWdQa-yP-GM1mBE_9ss21Xh__JFc,34
|
|
2
|
-
regscale/_version.py,sha256=
|
|
3
|
-
regscale/regscale.py,sha256=
|
|
2
|
+
regscale/_version.py,sha256=2VqR4bHAUJozo-V_QrqGicdNxrWhSlj6A87PDDLku9k,1198
|
|
3
|
+
regscale/regscale.py,sha256=4LzcbkBxPh23cCLANVEEr6uNoZ0sebHec0N-VJm5_vA,31480
|
|
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
|
|
6
6
|
regscale/airflow/click_mixins.py,sha256=BTwKWsEu6KVtlrzFbXpD_RuEpMzc-CSnCCySUzqzCgQ,3571
|
|
@@ -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=
|
|
39
|
-
regscale/core/app/application.py,sha256=
|
|
38
|
+
regscale/core/app/api.py,sha256=yJhlKICpy8irEcZaFWq36_Bi2I_VcQ7Fh_LtGm0-H98,23632
|
|
39
|
+
regscale/core/app/application.py,sha256=JLPXjKYpFYHKmo4dmaAG1N9urMjPUdL5dbow_fPcUTM,32285
|
|
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
|
|
@@ -45,7 +45,7 @@ regscale/core/app/internal/catalog.py,sha256=svBAgFZaGrkNHh2gZEo1ex2vdjllAIc4940
|
|
|
45
45
|
regscale/core/app/internal/comparison.py,sha256=eRnCKhq3Kyzh-aUgD6phQH0eONCSCkl5Vz0dr2ymDpQ,16720
|
|
46
46
|
regscale/core/app/internal/control_editor.py,sha256=bvltPfUJERVcPW14njFzMHLzb4KLcXlmtAJMRDXegXI,19338
|
|
47
47
|
regscale/core/app/internal/encrypt.py,sha256=yOEMDDlpI0Sc0LkoeCtXbypnOF8cxoDrzKRU5d3POFQ,5927
|
|
48
|
-
regscale/core/app/internal/evidence.py,sha256=
|
|
48
|
+
regscale/core/app/internal/evidence.py,sha256=dB95G-0ppLyrYg2BvUhyrdyXZ419vjJPapPVm5q-VTI,52423
|
|
49
49
|
regscale/core/app/internal/file_uploads.py,sha256=EfQ4ViJBHzU9bxnFunK3ahA6T9A6pnA-Jk2NrtgmrQY,4776
|
|
50
50
|
regscale/core/app/internal/healthcheck.py,sha256=ef4Mwk19vi71bv-Xkny5_EGG1UXTbCO5dvEIzHyyfVA,2010
|
|
51
51
|
regscale/core/app/internal/login.py,sha256=GsFaBwmSc32liWoRnMFy78m8SuB9pfUV0c1lyCEXFEo,10996
|
|
@@ -100,7 +100,7 @@ regscale/core/utils/urls.py,sha256=ZcU9OJqDmVQXgu6BrLESIp2KMkkUuzTZZ_wHsZMzfA4,6
|
|
|
100
100
|
regscale/dev/__init__.py,sha256=wVP59B1iurp36ul8pD_CjmunJLHOdKWWodz1r5loNvw,190
|
|
101
101
|
regscale/dev/analysis.py,sha256=9s6pfTGK6FBqV-karQQnCc_GYHloETmFyvsvVJ5jBm8,15603
|
|
102
102
|
regscale/dev/cli.py,sha256=VT9QHhfJX10KdJlSL9zBx-D__0H7qqS8G1GPwOb59Xs,8783
|
|
103
|
-
regscale/dev/code_gen.py,sha256=
|
|
103
|
+
regscale/dev/code_gen.py,sha256=Pkb2J4t-2tzsvMBb-vpnwx8mVg4KnbyKlaufNwImXJY,26392
|
|
104
104
|
regscale/dev/dirs.py,sha256=wmEKM4UZjMXDiNi6a17JchhyfQNvJg6ACQmqT_Xt6V0,2044
|
|
105
105
|
regscale/dev/docs.py,sha256=Ngtd2Z0vYXYQXUIAqhL02f-_fUuIpmTPa5YIO3wAOHY,14678
|
|
106
106
|
regscale/dev/monitoring.py,sha256=h0pewRSXF8bLEtQ9dB3D0XqGTM4HtjaCiUUH3ijEllM,835
|
|
@@ -111,13 +111,13 @@ 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=
|
|
114
|
+
regscale/integrations/compliance_integration.py,sha256=as4cb4NWmY9mTaHtu75lvwxScB3OKE3Ge6ki7-zZNBE,91103
|
|
115
115
|
regscale/integrations/due_date_handler.py,sha256=qIOeFx4LPvOTpqJx8JV5Hj3FLlx0FoaYAsFoXqxYBcs,8343
|
|
116
116
|
regscale/integrations/integration_override.py,sha256=HjYBCuvNpU3t3FptaqYAkdexLFOZBAFrFE9xU0RD1Nc,5867
|
|
117
117
|
regscale/integrations/jsonl_scanner_integration.py,sha256=l8nq_T3rE1XX-6HxrNHm3xzxCNWbIjxQvGMdtZWs7KQ,57003
|
|
118
|
-
regscale/integrations/scanner_integration.py,sha256=
|
|
118
|
+
regscale/integrations/scanner_integration.py,sha256=T9AkwDdL1V2e6G31MLFYsbMzkyX4emqmomsp_muOdew,187010
|
|
119
119
|
regscale/integrations/variables.py,sha256=MfQ34WuYVN5437A9sZ2ssHRkA3gFhMHfk1DVasceGmY,2336
|
|
120
|
-
regscale/integrations/commercial/__init__.py,sha256=
|
|
120
|
+
regscale/integrations/commercial/__init__.py,sha256=U2RIsRe4lKufADRwMJY0RhSbL6TX4jLxpCtbcnzvI3k,14607
|
|
121
121
|
regscale/integrations/commercial/ad.py,sha256=YXSmK8vRf6yi2GnREGa5GrE6GelhFrLj44SY8AO1pK0,15509
|
|
122
122
|
regscale/integrations/commercial/burp.py,sha256=3BLNKLfwL1x7jfhd8MJD6hdHEpj58pOEtrtCkn2hcWA,3344
|
|
123
123
|
regscale/integrations/commercial/cpe.py,sha256=vUHKGdq0UlR38pZWqqHLLTdDfooLtE9zIiFHdoFcUr0,5735
|
|
@@ -126,7 +126,7 @@ regscale/integrations/commercial/dependabot.py,sha256=V4VbHbwrxHfe7eCilJ7U_MBeIO
|
|
|
126
126
|
regscale/integrations/commercial/ecr.py,sha256=oQafB_Lx4CbGDLb6fqNtY1oAWci6-XWsm39URNbqgrk,2687
|
|
127
127
|
regscale/integrations/commercial/gitlab.py,sha256=dzfqJQ68QI1ee_BriNMyPuXLkzOhc2vR1hhVfq2j13Y,12496
|
|
128
128
|
regscale/integrations/commercial/ibm.py,sha256=vFloNxSrM2BzoicMSiInYN5dF10BbYHJpJDyyMqZu2I,2766
|
|
129
|
-
regscale/integrations/commercial/jira.py,sha256=
|
|
129
|
+
regscale/integrations/commercial/jira.py,sha256=c_ixudk6YBhXHhrjOFtSzknaaOQh-nl0GqLPgl7P1AA,49906
|
|
130
130
|
regscale/integrations/commercial/nexpose.py,sha256=fx6O__y7eY0GaAbX8p24_V1VTFfOM7oia4r3aa_qVnE,2847
|
|
131
131
|
regscale/integrations/commercial/okta.py,sha256=VNwE848xiBxkha4DibkhLJN-fi0T8rLMd30PPAmRjpk,30837
|
|
132
132
|
regscale/integrations/commercial/prisma.py,sha256=oYS31HlI7GiShUy0r9Luv57Ex3cGqdJcIoVMrwDAC2c,2835
|
|
@@ -179,9 +179,9 @@ regscale/integrations/commercial/mappings/__init__.py,sha256=47DEQpj8HBSa-_TImW-
|
|
|
179
179
|
regscale/integrations/commercial/mappings/csf_controls.json,sha256=EHOLWrnFr0oRsHBx4LX6pLVoqLuX-Mn7O-CXuzpw-v4,57504
|
|
180
180
|
regscale/integrations/commercial/mappings/nist_800_53_r5_controls.json,sha256=Vuh8RkKhX84U8VG2zoLG94QL7mvWIF28M-u8B4paxgw,123879
|
|
181
181
|
regscale/integrations/commercial/microsoft_defender/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
182
|
-
regscale/integrations/commercial/microsoft_defender/defender.py,sha256=
|
|
183
|
-
regscale/integrations/commercial/microsoft_defender/defender_api.py,sha256=
|
|
184
|
-
regscale/integrations/commercial/microsoft_defender/defender_constants.py,sha256=
|
|
182
|
+
regscale/integrations/commercial/microsoft_defender/defender.py,sha256=JQLdSiGMuDFGXH8wdb3NQXuobcBprg1PR11OEOEBYyQ,51702
|
|
183
|
+
regscale/integrations/commercial/microsoft_defender/defender_api.py,sha256=_Gij8I26tTt6B0RTqRyKPAi58gwl_TnKwe1fu80CPIM,29433
|
|
184
|
+
regscale/integrations/commercial/microsoft_defender/defender_constants.py,sha256=pYIVii1ouy3FYM58UbAdlcYdVoC54vEv0M2FjFk0XmU,9516
|
|
185
185
|
regscale/integrations/commercial/microsoft_defender/defender_scanner.py,sha256=gUTtbv-yB2gDa3xXZpx1Ygq0hqa77I28516UOrwvla4,10615
|
|
186
186
|
regscale/integrations/commercial/nessus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
187
187
|
regscale/integrations/commercial/nessus/nessus_utils.py,sha256=lP1_xVmYeyL17muy0jGMnJ5xdON3mi22BVAyDHa9WfU,13525
|
|
@@ -218,10 +218,11 @@ regscale/integrations/commercial/stigv2/ckl_parser.py,sha256=RPrDGsKqAbTJMsJd3AY
|
|
|
218
218
|
regscale/integrations/commercial/stigv2/click_commands.py,sha256=-765vFF03aSjBxU9SYCpca7x8fPaoTDNQtbk4fKuwYw,2792
|
|
219
219
|
regscale/integrations/commercial/stigv2/stig_integration.py,sha256=-UlfL0BBI3jFGotctOJyTCRAU9zIXW6mwU7ySrRXE9U,11573
|
|
220
220
|
regscale/integrations/commercial/synqly/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
221
|
-
regscale/integrations/commercial/synqly/assets.py,sha256=
|
|
221
|
+
regscale/integrations/commercial/synqly/assets.py,sha256=2D26tvMvNIpR9YuD0P2h_6oqXfZf5y93xGhb2hPFsn0,6785
|
|
222
222
|
regscale/integrations/commercial/synqly/edr.py,sha256=4EQSI2-5QnaWXh1idhndToFDOHOb3xycWAdc8NY4Auk,2836
|
|
223
|
+
regscale/integrations/commercial/synqly/query_builder.py,sha256=1MAheCLG_3zUkvDeXbnCFEBybbG09OV-vUtBD0GLx0o,19306
|
|
223
224
|
regscale/integrations/commercial/synqly/ticketing.py,sha256=akucc9Ok4cTcivH_rmG927WJetJDhZ0L4IF27OC_KOE,8352
|
|
224
|
-
regscale/integrations/commercial/synqly/vulnerabilities.py,sha256=
|
|
225
|
+
regscale/integrations/commercial/synqly/vulnerabilities.py,sha256=h2M9wFlCcEpW3HOga6oxFBWeIERICQR9M7dU85_dIkA,12587
|
|
225
226
|
regscale/integrations/commercial/tenablev2/__init__.py,sha256=UpSY_oww83kz9c7amdbptJKwDB1gAOBQDS-Q9WFp588,295
|
|
226
227
|
regscale/integrations/commercial/tenablev2/authenticate.py,sha256=VPTmxaVCaah2gJYNeU9P1KoQ734ohGQ-wcVy6JfqDTE,1247
|
|
227
228
|
regscale/integrations/commercial/tenablev2/commands.py,sha256=4pUfHv_a3ddbKiS_nQ0W6u86rKGzm9PQbEF67OfsE-4,27862
|
|
@@ -238,8 +239,8 @@ regscale/integrations/commercial/trivy/scanner.py,sha256=iiwTvjqRlLRgQvCs_FP0j83
|
|
|
238
239
|
regscale/integrations/commercial/wizv2/WizDataMixin.py,sha256=s7F_rVrP9IZa_x_vh3MswR7W_UBHRfd4kHGVsNX4ips,3606
|
|
239
240
|
regscale/integrations/commercial/wizv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
240
241
|
regscale/integrations/commercial/wizv2/async_client.py,sha256=CElkHxbSlNfRnvJpf4JTBD293NJxQsR-QaTBuHINrLw,12946
|
|
241
|
-
regscale/integrations/commercial/wizv2/click.py,sha256=
|
|
242
|
-
regscale/integrations/commercial/wizv2/compliance_report.py,sha256=
|
|
242
|
+
regscale/integrations/commercial/wizv2/click.py,sha256=FkoXEUgZGQUyZNMdaDJTyNE8G_oXmIM5z6JlT-QQW8I,19831
|
|
243
|
+
regscale/integrations/commercial/wizv2/compliance_report.py,sha256=lFTgm78lrTSXJyqGA-wUbKJ2jOnFaHsV8_Ex95iIO-M,68717
|
|
243
244
|
regscale/integrations/commercial/wizv2/constants.py,sha256=emJHsfdsRuHhWTYqADV4-l6sZNJ-nWGj_l1abdFrXxk,49308
|
|
244
245
|
regscale/integrations/commercial/wizv2/data_fetcher.py,sha256=CmJyUCeTQIkYBu2LPicpTNwXJrYkRP3xxM55BJQhr2A,16258
|
|
245
246
|
regscale/integrations/commercial/wizv2/file_cleanup.py,sha256=ENBO9RDXL2kyHkBYaSai83i4kVTUJUF_F0JCj84i-ow,4178
|
|
@@ -359,17 +360,18 @@ regscale/models/integration_models/flat_file_importer/__init__.py,sha256=HYO7mrq
|
|
|
359
360
|
regscale/models/integration_models/sbom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
360
361
|
regscale/models/integration_models/sbom/cyclone_dx.py,sha256=0pFR0BWBrF5c8_cC_8mj2MXvNOMHOdHbBYXvTVfFAh8,4058
|
|
361
362
|
regscale/models/integration_models/synqly_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
362
|
-
regscale/models/integration_models/synqly_models/capabilities.json,sha256=
|
|
363
|
+
regscale/models/integration_models/synqly_models/capabilities.json,sha256=Wcf7dY1zjVfdK5YRRq2lDK_bCPBI9k5TdKKczk4M2Qg,405530
|
|
363
364
|
regscale/models/integration_models/synqly_models/connector_types.py,sha256=8nxptkTexpskySnmL0obNAff_iu_fx6tJ7i1-4hJvao,461
|
|
365
|
+
regscale/models/integration_models/synqly_models/filter_parser.py,sha256=8rdnHH7gW1A_uWRTexZXzCH-HzRVy5nlvFgtc7ztcsQ,12160
|
|
364
366
|
regscale/models/integration_models/synqly_models/ocsf_mapper.py,sha256=ftObPhGg9CamnwRZ5z6qi8pW2Gu4JYy8apEo33o7q00,16960
|
|
365
367
|
regscale/models/integration_models/synqly_models/param.py,sha256=Xt5Zm6lC_VkLj7LF2qXo72TJZHysqttsp5ai0NCf1po,2643
|
|
366
|
-
regscale/models/integration_models/synqly_models/synqly_model.py,sha256=
|
|
368
|
+
regscale/models/integration_models/synqly_models/synqly_model.py,sha256=qFvN0-3xvoM36GHHR4B0uHguCtVK2iJoEsJTB_OttdY,36419
|
|
367
369
|
regscale/models/integration_models/synqly_models/tenants.py,sha256=kewIZw-iv18bNXJGG3ghwuFJ4CK5iXQhn_x2-xvV0iM,1078
|
|
368
370
|
regscale/models/integration_models/synqly_models/connectors/__init__.py,sha256=J3YS7KXLnTPRzeM3lUQpy6HKH7CxPPsWCB-sPXSWcYA,189
|
|
369
371
|
regscale/models/integration_models/synqly_models/connectors/assets.py,sha256=HHNIAVh5pRuJe8sStqhFEc6VnX2wT0FcY5178nbQgkQ,3705
|
|
370
372
|
regscale/models/integration_models/synqly_models/connectors/edr.py,sha256=kio3uoEYubCHretpDOJqxdwmzid1IzbVYz0BF64zeL0,5547
|
|
371
373
|
regscale/models/integration_models/synqly_models/connectors/ticketing.py,sha256=yRBuCkRAVfa_C91r3WqJ9gxrQsoD0qV9cY48YXpJl70,25358
|
|
372
|
-
regscale/models/integration_models/synqly_models/connectors/vulnerabilities.py,sha256=
|
|
374
|
+
regscale/models/integration_models/synqly_models/connectors/vulnerabilities.py,sha256=e92dzLXVgEB66Vv79VWw73Ivk_uttDoiw1d4Ip3cFRQ,7577
|
|
373
375
|
regscale/models/integration_models/tenable_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
374
376
|
regscale/models/integration_models/tenable_models/integration.py,sha256=lplL8zmjTFuhLreW-4y7G1fiCOBgzNAaATq800jgTQc,10271
|
|
375
377
|
regscale/models/integration_models/tenable_models/models.py,sha256=dmG7btkN4YkDWwnfW5Ldc3tWEAGjPiaRgJjrqMOkPEU,15846
|
|
@@ -387,11 +389,11 @@ regscale/models/regscale_models/change.py,sha256=v-FxWrYijGbxAWk7WEIN3piUw8mM3EW
|
|
|
387
389
|
regscale/models/regscale_models/checklist.py,sha256=GM15N9krNmKNDJnOgtSDRlUTBVwYtttex_plc64OVWY,13290
|
|
388
390
|
regscale/models/regscale_models/classification.py,sha256=kz1TxaxnqEwAS3mF8jTH7wbu6EQRZPZqGwxlXb-QEw0,775
|
|
389
391
|
regscale/models/regscale_models/comment.py,sha256=EJtnk04JcyFUYeiVAHTPkoZuS8XndgmCr8KaprrywRo,1555
|
|
390
|
-
regscale/models/regscale_models/compliance_settings.py,sha256=
|
|
391
|
-
regscale/models/regscale_models/component.py,sha256=
|
|
392
|
+
regscale/models/regscale_models/compliance_settings.py,sha256=F2q7OQEgYK-HrPmDHMcV-6ywzrjnBnU5KGG3StVgK3E,4902
|
|
393
|
+
regscale/models/regscale_models/component.py,sha256=Zbl-glM2WYtDRKtnQSyhXRDY9fqBTSSGz_2pMkAsawg,14196
|
|
392
394
|
regscale/models/regscale_models/component_mapping.py,sha256=g0cbbW4X49SDdlB_YtKMrP4eiK9OkrJqiut0ucdyVDA,2162
|
|
393
395
|
regscale/models/regscale_models/control.py,sha256=mO46F1IfiXnLSb3YhylaS3SyjtT51s-r8b3hjix9Gbc,1072
|
|
394
|
-
regscale/models/regscale_models/control_implementation.py,sha256=
|
|
396
|
+
regscale/models/regscale_models/control_implementation.py,sha256=xLvc8hO48VI1kDKVP3ixdu0SVxnsMbFnYFzi89wR7w0,56338
|
|
395
397
|
regscale/models/regscale_models/control_objective.py,sha256=qGh8OtATjjc4JS-3bC1AX6TbgtRtz-I0dckbuZ2RzVo,9496
|
|
396
398
|
regscale/models/regscale_models/control_parameter.py,sha256=5VVkbVZTb2Hzy_WiybU2JtrvhQp8DLSWxRcbSKxktiI,3499
|
|
397
399
|
regscale/models/regscale_models/control_test.py,sha256=FG-fLS9JJf8__a84W2LtBXtEjzOH9iq2EO949vBx3eY,949
|
|
@@ -498,7 +500,7 @@ regscale/utils/threading/threadsafe_list.py,sha256=-ltEj-MQH0dN0z_5aalptwJw2_EAU
|
|
|
498
500
|
regscale/utils/threading/threadsafe_set.py,sha256=BWtS10abZdvMcgd3OT6VVpfS28e80hKNDtDkqIRPnPo,2952
|
|
499
501
|
regscale/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
500
502
|
regscale/validation/address.py,sha256=ZgF2ODljUDL7ri7IUUg_fXJxYpVVVqbUjlMHIsgPXJM,865
|
|
501
|
-
regscale/validation/record.py,sha256=
|
|
503
|
+
regscale/validation/record.py,sha256=v8_WS1NbEmlcLYW_8BRVT-UpvjhdmidyvYHlMeHMOlI,2225
|
|
502
504
|
regscale/visualization/__init__.py,sha256=F8fS2WyyvmXfdWWecWLY5wo5yyIvMZJrDqjSalBd9Mw,173
|
|
503
505
|
regscale/visualization/click.py,sha256=-fxIwc-RrI3iHdMNTk_dhplC8yUjZXcWuHfZa7ULRfo,922
|
|
504
506
|
tests/fixtures/__init__.py,sha256=sLuJtRNqBRm8lpE2yKvZFIqwtYho5A5O8KbJj_IpKhQ,41
|
|
@@ -553,9 +555,9 @@ tests/regscale/models/test_regscale_model.py,sha256=ZsrEZkC4EtdIsoQuayn1xv2gEGcV
|
|
|
553
555
|
tests/regscale/models/test_report.py,sha256=IqUq7C__a1_q_mLaz0PE9Lq6fHggBsB14-AzEYNBxLw,4666
|
|
554
556
|
tests/regscale/models/test_tenable_integrations.py,sha256=y1qaW77H094VSGHjZdlvF66UCt-nPEib9Mv3cdwbM94,32435
|
|
555
557
|
tests/regscale/models/test_user_model.py,sha256=e9olv28qBApgnvK6hFHOgXjUC-pkaV8aGDirEIWASL4,4427
|
|
556
|
-
regscale_cli-6.
|
|
557
|
-
regscale_cli-6.
|
|
558
|
-
regscale_cli-6.
|
|
559
|
-
regscale_cli-6.
|
|
560
|
-
regscale_cli-6.
|
|
561
|
-
regscale_cli-6.
|
|
558
|
+
regscale_cli-6.25.0.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
|
|
559
|
+
regscale_cli-6.25.0.0.dist-info/METADATA,sha256=O9zALayXiFJ3iPJ4BIgCxIpx1xHG1DpdL4Z7BJo8zBg,35027
|
|
560
|
+
regscale_cli-6.25.0.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
|
561
|
+
regscale_cli-6.25.0.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
|
|
562
|
+
regscale_cli-6.25.0.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
|
|
563
|
+
regscale_cli-6.25.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|