regscale-cli 6.24.0.0__py3-none-any.whl → 6.24.0.1__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.

@@ -4,7 +4,7 @@
4
4
  # standard python imports
5
5
  import logging
6
6
  from enum import Enum
7
- from typing import Any, Callable, Dict, List, Optional, Union, TypeVar
7
+ from typing import Any, Callable, Dict, List, Optional, Union
8
8
  from urllib.parse import urljoin
9
9
 
10
10
  import requests
@@ -19,7 +19,6 @@ from regscale.models.regscale_models.implementation_role import ImplementationRo
19
19
  from regscale.models.regscale_models.regscale_model import RegScaleModel
20
20
  from regscale.models.regscale_models.security_control import SecurityControl
21
21
 
22
-
23
22
  logger = logging.getLogger("regscale")
24
23
  PATCH_CONTENT_TYPE = "application/json-patch+json"
25
24
 
@@ -74,6 +73,7 @@ class ControlImplementation(RegScaleModel):
74
73
  _get_objects_for_list = True
75
74
 
76
75
  controlOwnerId: str = Field(default_factory=RegScaleModel.get_user_id)
76
+ controlOwnersIds: Optional[List[str]] = Field(default=None)
77
77
  status: str # Required
78
78
  controlID: int # Required foreign key to Security Control
79
79
  status_lst: List[ControlImplementationStatus] = []
@@ -153,9 +153,13 @@ class ControlImplementation(RegScaleModel):
153
153
  """
154
154
  self.status_lst = self._get_status_enum()
155
155
 
156
+ # Backwards compatibility: Auto-populate controlOwnersIds if not set but controlOwnerId exists
157
+ if self.controlOwnersIds is None and self.controlOwnerId:
158
+ self.controlOwnersIds = [self.controlOwnerId]
159
+
156
160
  def __setattr__(self, name: str, value: Any) -> None:
157
161
  """
158
- Override __setattr__ to update status_lst when status changes.
162
+ Override __setattr__ to update status_lst when status changes and handle backwards compatibility.
159
163
 
160
164
  :param str name: The attribute name
161
165
  :param Any value: The attribute value
@@ -164,6 +168,12 @@ class ControlImplementation(RegScaleModel):
164
168
  super().__setattr__(name, value)
165
169
  if name == "status":
166
170
  self.status_lst = self._get_status_enum()
171
+ elif name == "controlOwnerId" and value:
172
+ # Backwards compatibility: Auto-populate controlOwnersIds when controlOwnerId is set
173
+ if hasattr(self, "controlOwnersIds") and (
174
+ not hasattr(self, "_controlOwnersIds") or self._controlOwnersIds is None
175
+ ):
176
+ super().__setattr__("controlOwnersIds", [value])
167
177
 
168
178
  @classmethod
169
179
  def _get_additional_endpoints(cls) -> ConfigDict:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: regscale-cli
3
- Version: 6.24.0.0
3
+ Version: 6.24.0.1
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 ==3.8.0
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 ==3.8.0 ; extra == 'airflow'
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 ==3.8.0 ; extra == 'airflow-azure'
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 ==3.8.0 ; extra == 'airflow-sqlserver'
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 ==3.8.0 ; extra == 'all'
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 ==3.8.0 ; extra == 'ansible'
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 ==3.8.0 ; extra == 'dev'
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 ==3.8.0 ; extra == 'server'
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,5 +1,5 @@
1
1
  regscale/__init__.py,sha256=ZygAIkX6Nbjag1czWdQa-yP-GM1mBE_9ss21Xh__JFc,34
2
- regscale/_version.py,sha256=aEKcQkG8x8HCLF1r9TPYAUjkbrx8MzUY1sWdBWNufv4,1198
2
+ regscale/_version.py,sha256=JL218X9JiZcVsnhMIqE9ghaSDLJVxf4wbgCb15r1No0,1198
3
3
  regscale/regscale.py,sha256=u25AiF58XIfAG2fKjqxVWDhaAOK8-gZ19Y-eWYlM5TI,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
@@ -111,7 +111,7 @@ 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=cyc8iPGhKgvb7G9sN1ja4Fi4Rq91llBnJbTkGSKHINE,79967
114
+ regscale/integrations/compliance_integration.py,sha256=aKMxTRoJ5J3gDPJhzIvTKfIkamPSFDBvRrvRscEjxms,90212
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
@@ -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=vhXfVGv2cow_hSKCo2I3k9w9ppfCCrnsa3Mp-mGnd0M,46929
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
@@ -238,8 +238,8 @@ regscale/integrations/commercial/trivy/scanner.py,sha256=iiwTvjqRlLRgQvCs_FP0j83
238
238
  regscale/integrations/commercial/wizv2/WizDataMixin.py,sha256=s7F_rVrP9IZa_x_vh3MswR7W_UBHRfd4kHGVsNX4ips,3606
239
239
  regscale/integrations/commercial/wizv2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
240
  regscale/integrations/commercial/wizv2/async_client.py,sha256=CElkHxbSlNfRnvJpf4JTBD293NJxQsR-QaTBuHINrLw,12946
241
- regscale/integrations/commercial/wizv2/click.py,sha256=N5GLs3q-oMJzJqqEfy9luuXjc7yKSb0ibLRYmYGqZqw,18873
242
- regscale/integrations/commercial/wizv2/compliance_report.py,sha256=_Ntrq_uaGU6JW5keCxZKKBsA17FZwvHlQ9afS5euwog,62959
241
+ regscale/integrations/commercial/wizv2/click.py,sha256=FkoXEUgZGQUyZNMdaDJTyNE8G_oXmIM5z6JlT-QQW8I,19831
242
+ regscale/integrations/commercial/wizv2/compliance_report.py,sha256=iCmTw7P46UOg-yKQJMRaVSU6yI-jG-trSXpA4i3I9PE,67417
243
243
  regscale/integrations/commercial/wizv2/constants.py,sha256=emJHsfdsRuHhWTYqADV4-l6sZNJ-nWGj_l1abdFrXxk,49308
244
244
  regscale/integrations/commercial/wizv2/data_fetcher.py,sha256=CmJyUCeTQIkYBu2LPicpTNwXJrYkRP3xxM55BJQhr2A,16258
245
245
  regscale/integrations/commercial/wizv2/file_cleanup.py,sha256=ENBO9RDXL2kyHkBYaSai83i4kVTUJUF_F0JCj84i-ow,4178
@@ -359,7 +359,7 @@ regscale/models/integration_models/flat_file_importer/__init__.py,sha256=HYO7mrq
359
359
  regscale/models/integration_models/sbom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
360
360
  regscale/models/integration_models/sbom/cyclone_dx.py,sha256=0pFR0BWBrF5c8_cC_8mj2MXvNOMHOdHbBYXvTVfFAh8,4058
361
361
  regscale/models/integration_models/synqly_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
362
- regscale/models/integration_models/synqly_models/capabilities.json,sha256=R7Oq3YrgFc3HVS0X8DvXrAsAnLIgmos8Rih2PVxh6R4,399849
362
+ regscale/models/integration_models/synqly_models/capabilities.json,sha256=drWHHUXEfKp1ZM1eIHJvDPJc31p0BmQtDdM9yc8bPTE,402957
363
363
  regscale/models/integration_models/synqly_models/connector_types.py,sha256=8nxptkTexpskySnmL0obNAff_iu_fx6tJ7i1-4hJvao,461
364
364
  regscale/models/integration_models/synqly_models/ocsf_mapper.py,sha256=ftObPhGg9CamnwRZ5z6qi8pW2Gu4JYy8apEo33o7q00,16960
365
365
  regscale/models/integration_models/synqly_models/param.py,sha256=Xt5Zm6lC_VkLj7LF2qXo72TJZHysqttsp5ai0NCf1po,2643
@@ -391,7 +391,7 @@ regscale/models/regscale_models/compliance_settings.py,sha256=e0Ghjozt8iCgzmCPfY
391
391
  regscale/models/regscale_models/component.py,sha256=zURPe-unWeHpkx6OoVq3AxdOYp7Ci14xXMy-AjYmXik,14149
392
392
  regscale/models/regscale_models/component_mapping.py,sha256=g0cbbW4X49SDdlB_YtKMrP4eiK9OkrJqiut0ucdyVDA,2162
393
393
  regscale/models/regscale_models/control.py,sha256=mO46F1IfiXnLSb3YhylaS3SyjtT51s-r8b3hjix9Gbc,1072
394
- regscale/models/regscale_models/control_implementation.py,sha256=Kj4zDQcn5SQHNy7peh80sCDoveD02I6MBstY82BgOB4,50345
394
+ regscale/models/regscale_models/control_implementation.py,sha256=NI0ygYljT7l0ALbRVs-G7TACK2b2TNtfzGApBDezxWI,51032
395
395
  regscale/models/regscale_models/control_objective.py,sha256=qGh8OtATjjc4JS-3bC1AX6TbgtRtz-I0dckbuZ2RzVo,9496
396
396
  regscale/models/regscale_models/control_parameter.py,sha256=5VVkbVZTb2Hzy_WiybU2JtrvhQp8DLSWxRcbSKxktiI,3499
397
397
  regscale/models/regscale_models/control_test.py,sha256=FG-fLS9JJf8__a84W2LtBXtEjzOH9iq2EO949vBx3eY,949
@@ -553,9 +553,9 @@ tests/regscale/models/test_regscale_model.py,sha256=ZsrEZkC4EtdIsoQuayn1xv2gEGcV
553
553
  tests/regscale/models/test_report.py,sha256=IqUq7C__a1_q_mLaz0PE9Lq6fHggBsB14-AzEYNBxLw,4666
554
554
  tests/regscale/models/test_tenable_integrations.py,sha256=y1qaW77H094VSGHjZdlvF66UCt-nPEib9Mv3cdwbM94,32435
555
555
  tests/regscale/models/test_user_model.py,sha256=e9olv28qBApgnvK6hFHOgXjUC-pkaV8aGDirEIWASL4,4427
556
- regscale_cli-6.24.0.0.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
557
- regscale_cli-6.24.0.0.dist-info/METADATA,sha256=6T2bohVMlgbNakpTUiGWynlNicpTrapmkXGtBXxS7zQ,35027
558
- regscale_cli-6.24.0.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
559
- regscale_cli-6.24.0.0.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
560
- regscale_cli-6.24.0.0.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
561
- regscale_cli-6.24.0.0.dist-info/RECORD,,
556
+ regscale_cli-6.24.0.1.dist-info/LICENSE,sha256=ytNhYQ9Rmhj_m-EX2pPq9Ld6tH5wrqqDYg-fCf46WDU,1076
557
+ regscale_cli-6.24.0.1.dist-info/METADATA,sha256=vkWjV2W0j1jST2KqNVVh1M5fcForsGgnV3JFzQSK-ag,35027
558
+ regscale_cli-6.24.0.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
559
+ regscale_cli-6.24.0.1.dist-info/entry_points.txt,sha256=cLOaIP1eRv1yZ2u7BvpE3aB4x3kDrDwkpeisKOu33z8,269
560
+ regscale_cli-6.24.0.1.dist-info/top_level.txt,sha256=Uv8VUCAdxRm70bgrD4YNEJUmDhBThad_1aaEFGwRByc,15
561
+ regscale_cli-6.24.0.1.dist-info/RECORD,,