regscale-cli 6.21.2.0__py3-none-any.whl → 6.28.2.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.
- regscale/_version.py +1 -1
- regscale/airflow/hierarchy.py +2 -2
- regscale/core/app/api.py +5 -2
- regscale/core/app/application.py +36 -6
- regscale/core/app/internal/control_editor.py +73 -21
- regscale/core/app/internal/evidence.py +727 -204
- regscale/core/app/internal/login.py +4 -2
- regscale/core/app/internal/model_editor.py +219 -64
- regscale/core/app/utils/app_utils.py +86 -12
- regscale/core/app/utils/catalog_utils/common.py +1 -1
- regscale/core/login.py +21 -4
- regscale/core/utils/async_graphql_client.py +363 -0
- regscale/core/utils/date.py +77 -1
- regscale/dev/cli.py +26 -0
- regscale/dev/code_gen.py +109 -24
- regscale/dev/version.py +72 -0
- regscale/integrations/commercial/__init__.py +30 -2
- regscale/integrations/commercial/aws/audit_manager_compliance.py +3908 -0
- regscale/integrations/commercial/aws/cli.py +3107 -54
- regscale/integrations/commercial/aws/cloudtrail_control_mappings.py +333 -0
- regscale/integrations/commercial/aws/cloudtrail_evidence.py +501 -0
- regscale/integrations/commercial/aws/cloudwatch_control_mappings.py +357 -0
- regscale/integrations/commercial/aws/cloudwatch_evidence.py +490 -0
- regscale/integrations/commercial/{amazon → aws}/common.py +71 -19
- regscale/integrations/commercial/aws/config_compliance.py +914 -0
- regscale/integrations/commercial/aws/conformance_pack_mappings.py +198 -0
- regscale/integrations/commercial/aws/control_compliance_analyzer.py +439 -0
- regscale/integrations/commercial/aws/evidence_generator.py +283 -0
- regscale/integrations/commercial/aws/guardduty_control_mappings.py +340 -0
- regscale/integrations/commercial/aws/guardduty_evidence.py +1053 -0
- regscale/integrations/commercial/aws/iam_control_mappings.py +368 -0
- regscale/integrations/commercial/aws/iam_evidence.py +574 -0
- regscale/integrations/commercial/aws/inventory/__init__.py +338 -22
- regscale/integrations/commercial/aws/inventory/base.py +107 -5
- regscale/integrations/commercial/aws/inventory/resources/analytics.py +390 -0
- regscale/integrations/commercial/aws/inventory/resources/applications.py +234 -0
- regscale/integrations/commercial/aws/inventory/resources/audit_manager.py +513 -0
- regscale/integrations/commercial/aws/inventory/resources/cloudtrail.py +315 -0
- regscale/integrations/commercial/aws/inventory/resources/cloudtrail_logs_metadata.py +476 -0
- regscale/integrations/commercial/aws/inventory/resources/cloudwatch.py +191 -0
- regscale/integrations/commercial/aws/inventory/resources/compute.py +328 -9
- regscale/integrations/commercial/aws/inventory/resources/config.py +464 -0
- regscale/integrations/commercial/aws/inventory/resources/containers.py +74 -9
- regscale/integrations/commercial/aws/inventory/resources/database.py +481 -31
- regscale/integrations/commercial/aws/inventory/resources/developer_tools.py +253 -0
- regscale/integrations/commercial/aws/inventory/resources/guardduty.py +286 -0
- regscale/integrations/commercial/aws/inventory/resources/iam.py +470 -0
- regscale/integrations/commercial/aws/inventory/resources/inspector.py +476 -0
- regscale/integrations/commercial/aws/inventory/resources/integration.py +175 -61
- regscale/integrations/commercial/aws/inventory/resources/kms.py +447 -0
- regscale/integrations/commercial/aws/inventory/resources/machine_learning.py +358 -0
- regscale/integrations/commercial/aws/inventory/resources/networking.py +390 -67
- regscale/integrations/commercial/aws/inventory/resources/s3.py +394 -0
- regscale/integrations/commercial/aws/inventory/resources/security.py +268 -72
- regscale/integrations/commercial/aws/inventory/resources/securityhub.py +473 -0
- regscale/integrations/commercial/aws/inventory/resources/storage.py +288 -29
- regscale/integrations/commercial/aws/inventory/resources/systems_manager.py +657 -0
- regscale/integrations/commercial/aws/inventory/resources/vpc.py +655 -0
- regscale/integrations/commercial/aws/kms_control_mappings.py +288 -0
- regscale/integrations/commercial/aws/kms_evidence.py +879 -0
- regscale/integrations/commercial/aws/ocsf/__init__.py +7 -0
- regscale/integrations/commercial/aws/ocsf/constants.py +115 -0
- regscale/integrations/commercial/aws/ocsf/mapper.py +435 -0
- regscale/integrations/commercial/aws/org_control_mappings.py +286 -0
- regscale/integrations/commercial/aws/org_evidence.py +666 -0
- regscale/integrations/commercial/aws/s3_control_mappings.py +356 -0
- regscale/integrations/commercial/aws/s3_evidence.py +632 -0
- regscale/integrations/commercial/aws/scanner.py +1072 -205
- regscale/integrations/commercial/aws/security_hub.py +319 -0
- regscale/integrations/commercial/aws/session_manager.py +282 -0
- regscale/integrations/commercial/aws/ssm_control_mappings.py +291 -0
- regscale/integrations/commercial/aws/ssm_evidence.py +492 -0
- regscale/integrations/commercial/jira.py +489 -153
- 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/qualys/__init__.py +167 -68
- regscale/integrations/commercial/qualys/scanner.py +305 -39
- regscale/integrations/commercial/sarif/sairf_importer.py +432 -0
- regscale/integrations/commercial/sarif/sarif_converter.py +67 -0
- regscale/integrations/commercial/sicura/api.py +79 -42
- regscale/integrations/commercial/sicura/commands.py +8 -2
- regscale/integrations/commercial/sicura/scanner.py +83 -44
- regscale/integrations/commercial/stigv2/ckl_parser.py +5 -5
- regscale/integrations/commercial/synqly/assets.py +133 -16
- regscale/integrations/commercial/synqly/edr.py +2 -8
- regscale/integrations/commercial/synqly/query_builder.py +536 -0
- regscale/integrations/commercial/synqly/ticketing.py +27 -0
- regscale/integrations/commercial/synqly/vulnerabilities.py +165 -28
- regscale/integrations/commercial/tenablev2/cis_parsers.py +453 -0
- regscale/integrations/commercial/tenablev2/cis_scanner.py +447 -0
- regscale/integrations/commercial/tenablev2/commands.py +146 -5
- regscale/integrations/commercial/tenablev2/scanner.py +1 -3
- regscale/integrations/commercial/tenablev2/stig_parsers.py +113 -57
- regscale/integrations/commercial/wizv2/WizDataMixin.py +1 -1
- regscale/integrations/commercial/wizv2/click.py +191 -76
- regscale/integrations/commercial/wizv2/compliance/__init__.py +15 -0
- regscale/integrations/commercial/wizv2/{policy_compliance_helpers.py → compliance/helpers.py} +78 -60
- regscale/integrations/commercial/wizv2/compliance_report.py +1592 -0
- regscale/integrations/commercial/wizv2/core/__init__.py +133 -0
- regscale/integrations/commercial/wizv2/{async_client.py → core/client.py} +7 -3
- regscale/integrations/commercial/wizv2/{constants.py → core/constants.py} +92 -89
- regscale/integrations/commercial/wizv2/core/file_operations.py +237 -0
- regscale/integrations/commercial/wizv2/fetchers/__init__.py +11 -0
- regscale/integrations/commercial/wizv2/{data_fetcher.py → fetchers/policy_assessment.py} +66 -9
- regscale/integrations/commercial/wizv2/file_cleanup.py +104 -0
- regscale/integrations/commercial/wizv2/issue.py +776 -28
- regscale/integrations/commercial/wizv2/models/__init__.py +0 -0
- regscale/integrations/commercial/wizv2/parsers/__init__.py +34 -0
- regscale/integrations/commercial/wizv2/{parsers.py → parsers/main.py} +1 -1
- regscale/integrations/commercial/wizv2/processors/__init__.py +11 -0
- regscale/integrations/commercial/wizv2/{finding_processor.py → processors/finding.py} +1 -1
- regscale/integrations/commercial/wizv2/reports.py +243 -0
- regscale/integrations/commercial/wizv2/sbom.py +1 -1
- regscale/integrations/commercial/wizv2/scanner.py +1031 -441
- regscale/integrations/commercial/wizv2/utils/__init__.py +48 -0
- regscale/integrations/commercial/wizv2/{utils.py → utils/main.py} +116 -61
- regscale/integrations/commercial/wizv2/variables.py +89 -3
- regscale/integrations/compliance_integration.py +1036 -151
- regscale/integrations/control_matcher.py +432 -0
- regscale/integrations/due_date_handler.py +333 -0
- regscale/integrations/milestone_manager.py +291 -0
- regscale/integrations/public/__init__.py +14 -0
- regscale/integrations/public/cci_importer.py +834 -0
- regscale/integrations/public/csam/__init__.py +0 -0
- regscale/integrations/public/csam/csam.py +938 -0
- regscale/integrations/public/csam/csam_agency_defined.py +179 -0
- regscale/integrations/public/csam/csam_common.py +154 -0
- regscale/integrations/public/csam/csam_controls.py +432 -0
- regscale/integrations/public/csam/csam_poam.py +124 -0
- regscale/integrations/public/fedramp/click.py +77 -6
- regscale/integrations/public/fedramp/docx_parser.py +10 -1
- regscale/integrations/public/fedramp/fedramp_cis_crm.py +675 -289
- regscale/integrations/public/fedramp/fedramp_five.py +1 -1
- regscale/integrations/public/fedramp/poam/scanner.py +75 -7
- regscale/integrations/public/fedramp/poam_export_v5.py +888 -0
- regscale/integrations/scanner_integration.py +1961 -430
- regscale/models/integration_models/CCI_List.xml +1 -0
- regscale/models/integration_models/aqua.py +2 -2
- regscale/models/integration_models/cisa_kev_data.json +805 -11
- regscale/models/integration_models/flat_file_importer/__init__.py +5 -8
- regscale/models/integration_models/nexpose.py +36 -10
- regscale/models/integration_models/qualys.py +3 -4
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/integration_models/synqly_models/connectors/vulnerabilities.py +87 -18
- regscale/models/integration_models/synqly_models/filter_parser.py +332 -0
- regscale/models/integration_models/synqly_models/ocsf_mapper.py +124 -25
- regscale/models/integration_models/synqly_models/synqly_model.py +89 -16
- regscale/models/locking.py +12 -8
- regscale/models/platform.py +4 -2
- regscale/models/regscale_models/__init__.py +7 -0
- regscale/models/regscale_models/assessment.py +2 -1
- regscale/models/regscale_models/catalog.py +1 -1
- regscale/models/regscale_models/compliance_settings.py +251 -1
- regscale/models/regscale_models/component.py +1 -0
- regscale/models/regscale_models/control_implementation.py +236 -41
- regscale/models/regscale_models/control_objective.py +74 -5
- regscale/models/regscale_models/file.py +2 -0
- regscale/models/regscale_models/form_field_value.py +5 -3
- regscale/models/regscale_models/inheritance.py +44 -0
- regscale/models/regscale_models/issue.py +301 -102
- regscale/models/regscale_models/milestone.py +33 -14
- regscale/models/regscale_models/organization.py +3 -0
- regscale/models/regscale_models/regscale_model.py +310 -73
- regscale/models/regscale_models/security_plan.py +4 -2
- regscale/models/regscale_models/vulnerability.py +3 -3
- regscale/regscale.py +25 -4
- regscale/templates/__init__.py +0 -0
- regscale/utils/threading/threadhandler.py +20 -15
- regscale/validation/record.py +23 -1
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/METADATA +17 -33
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/RECORD +310 -111
- tests/core/__init__.py +0 -0
- tests/core/utils/__init__.py +0 -0
- tests/core/utils/test_async_graphql_client.py +472 -0
- tests/fixtures/test_fixture.py +13 -8
- tests/regscale/core/test_login.py +171 -4
- tests/regscale/integrations/commercial/__init__.py +0 -0
- tests/regscale/integrations/commercial/aws/__init__.py +0 -0
- tests/regscale/integrations/commercial/aws/test_audit_manager_compliance.py +1304 -0
- tests/regscale/integrations/commercial/aws/test_audit_manager_evidence_aggregation.py +341 -0
- tests/regscale/integrations/commercial/aws/test_aws_analytics_collector.py +260 -0
- tests/regscale/integrations/commercial/aws/test_aws_applications_collector.py +242 -0
- tests/regscale/integrations/commercial/aws/test_aws_audit_manager_collector.py +1155 -0
- tests/regscale/integrations/commercial/aws/test_aws_cloudtrail_collector.py +534 -0
- tests/regscale/integrations/commercial/aws/test_aws_config_collector.py +400 -0
- tests/regscale/integrations/commercial/aws/test_aws_developer_tools_collector.py +203 -0
- tests/regscale/integrations/commercial/aws/test_aws_guardduty_collector.py +315 -0
- tests/regscale/integrations/commercial/aws/test_aws_iam_collector.py +458 -0
- tests/regscale/integrations/commercial/aws/test_aws_inspector_collector.py +353 -0
- tests/regscale/integrations/commercial/aws/test_aws_inventory_integration.py +530 -0
- tests/regscale/integrations/commercial/aws/test_aws_kms_collector.py +919 -0
- tests/regscale/integrations/commercial/aws/test_aws_machine_learning_collector.py +237 -0
- tests/regscale/integrations/commercial/aws/test_aws_s3_collector.py +722 -0
- tests/regscale/integrations/commercial/aws/test_aws_scanner_integration.py +722 -0
- tests/regscale/integrations/commercial/aws/test_aws_securityhub_collector.py +792 -0
- tests/regscale/integrations/commercial/aws/test_aws_systems_manager_collector.py +918 -0
- tests/regscale/integrations/commercial/aws/test_aws_vpc_collector.py +996 -0
- tests/regscale/integrations/commercial/aws/test_cli_evidence.py +431 -0
- tests/regscale/integrations/commercial/aws/test_cloudtrail_control_mappings.py +452 -0
- tests/regscale/integrations/commercial/aws/test_cloudtrail_evidence.py +788 -0
- tests/regscale/integrations/commercial/aws/test_config_compliance.py +298 -0
- tests/regscale/integrations/commercial/aws/test_conformance_pack_mappings.py +200 -0
- tests/regscale/integrations/commercial/aws/test_control_compliance_analyzer.py +375 -0
- tests/regscale/integrations/commercial/aws/test_datetime_parsing.py +223 -0
- tests/regscale/integrations/commercial/aws/test_evidence_generator.py +386 -0
- tests/regscale/integrations/commercial/aws/test_guardduty_control_mappings.py +564 -0
- tests/regscale/integrations/commercial/aws/test_guardduty_evidence.py +1041 -0
- tests/regscale/integrations/commercial/aws/test_iam_control_mappings.py +718 -0
- tests/regscale/integrations/commercial/aws/test_iam_evidence.py +1375 -0
- tests/regscale/integrations/commercial/aws/test_kms_control_mappings.py +656 -0
- tests/regscale/integrations/commercial/aws/test_kms_evidence.py +1163 -0
- tests/regscale/integrations/commercial/aws/test_ocsf_mapper.py +370 -0
- tests/regscale/integrations/commercial/aws/test_org_control_mappings.py +546 -0
- tests/regscale/integrations/commercial/aws/test_org_evidence.py +1240 -0
- tests/regscale/integrations/commercial/aws/test_s3_control_mappings.py +672 -0
- tests/regscale/integrations/commercial/aws/test_s3_evidence.py +987 -0
- tests/regscale/integrations/commercial/aws/test_scanner_evidence.py +373 -0
- tests/regscale/integrations/commercial/aws/test_security_hub_config_filtering.py +539 -0
- tests/regscale/integrations/commercial/aws/test_session_manager.py +516 -0
- tests/regscale/integrations/commercial/aws/test_ssm_control_mappings.py +588 -0
- tests/regscale/integrations/commercial/aws/test_ssm_evidence.py +735 -0
- tests/regscale/integrations/commercial/conftest.py +28 -0
- tests/regscale/integrations/commercial/microsoft_defender/__init__.py +1 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender.py +1517 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender_api.py +1748 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender_constants.py +327 -0
- tests/regscale/integrations/commercial/microsoft_defender/test_defender_scanner.py +487 -0
- tests/regscale/integrations/commercial/test_aws.py +3742 -0
- tests/regscale/integrations/commercial/test_burp.py +48 -0
- tests/regscale/integrations/commercial/test_crowdstrike.py +49 -0
- tests/regscale/integrations/commercial/test_dependabot.py +341 -0
- tests/regscale/integrations/commercial/test_gcp.py +1543 -0
- tests/regscale/integrations/commercial/test_gitlab.py +549 -0
- tests/regscale/integrations/commercial/test_ip_mac_address_length.py +84 -0
- tests/regscale/integrations/commercial/test_jira.py +2204 -0
- tests/regscale/integrations/commercial/test_npm_audit.py +42 -0
- tests/regscale/integrations/commercial/test_okta.py +1228 -0
- tests/regscale/integrations/commercial/test_sarif_converter.py +251 -0
- tests/regscale/integrations/commercial/test_sicura.py +349 -0
- tests/regscale/integrations/commercial/test_snow.py +423 -0
- tests/regscale/integrations/commercial/test_sonarcloud.py +394 -0
- tests/regscale/integrations/commercial/test_sqlserver.py +186 -0
- tests/regscale/integrations/commercial/test_stig.py +33 -0
- tests/regscale/integrations/commercial/test_stig_mapper.py +153 -0
- tests/regscale/integrations/commercial/test_stigv2.py +406 -0
- tests/regscale/integrations/commercial/test_wiz.py +1365 -0
- tests/regscale/integrations/commercial/test_wiz_inventory.py +256 -0
- tests/regscale/integrations/commercial/wizv2/__init__.py +339 -0
- tests/regscale/integrations/commercial/wizv2/compliance/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/compliance/test_helpers.py +903 -0
- tests/regscale/integrations/commercial/wizv2/core/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/core/test_auth.py +701 -0
- tests/regscale/integrations/commercial/wizv2/core/test_client.py +1037 -0
- tests/regscale/integrations/commercial/wizv2/core/test_file_operations.py +989 -0
- tests/regscale/integrations/commercial/wizv2/fetchers/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/fetchers/test_policy_assessment.py +805 -0
- tests/regscale/integrations/commercial/wizv2/parsers/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/parsers/test_main.py +1153 -0
- tests/regscale/integrations/commercial/wizv2/processors/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/processors/test_finding.py +671 -0
- tests/regscale/integrations/commercial/wizv2/test_WizDataMixin.py +537 -0
- tests/regscale/integrations/commercial/wizv2/test_click_comprehensive.py +851 -0
- tests/regscale/integrations/commercial/wizv2/test_compliance_report_comprehensive.py +910 -0
- tests/regscale/integrations/commercial/wizv2/test_compliance_report_normalization.py +138 -0
- tests/regscale/integrations/commercial/wizv2/test_file_cleanup.py +283 -0
- tests/regscale/integrations/commercial/wizv2/test_file_operations.py +260 -0
- tests/regscale/integrations/commercial/wizv2/test_issue.py +343 -0
- tests/regscale/integrations/commercial/wizv2/test_issue_comprehensive.py +1203 -0
- tests/regscale/integrations/commercial/wizv2/test_reports.py +497 -0
- tests/regscale/integrations/commercial/wizv2/test_sbom.py +643 -0
- tests/regscale/integrations/commercial/wizv2/test_scanner_comprehensive.py +805 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_click_client_id.py +165 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_compliance_report.py +1394 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_compliance_unit.py +341 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_control_normalization.py +138 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_findings_comprehensive.py +364 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_inventory_comprehensive.py +644 -0
- tests/regscale/integrations/commercial/wizv2/test_wiz_status_mapping.py +149 -0
- tests/regscale/integrations/commercial/wizv2/test_wizv2.py +1218 -0
- tests/regscale/integrations/commercial/wizv2/test_wizv2_utils.py +519 -0
- tests/regscale/integrations/commercial/wizv2/utils/__init__.py +1 -0
- tests/regscale/integrations/commercial/wizv2/utils/test_main.py +1523 -0
- tests/regscale/integrations/public/__init__.py +0 -0
- tests/regscale/integrations/public/fedramp/__init__.py +1 -0
- tests/regscale/integrations/public/fedramp/test_gen_asset_list.py +150 -0
- tests/regscale/integrations/public/fedramp/test_poam_export_v5.py +1293 -0
- tests/regscale/integrations/public/test_alienvault.py +220 -0
- tests/regscale/integrations/public/test_cci.py +1053 -0
- tests/regscale/integrations/public/test_cisa.py +1021 -0
- tests/regscale/integrations/public/test_emass.py +518 -0
- tests/regscale/integrations/public/test_fedramp.py +1152 -0
- tests/regscale/integrations/public/test_fedramp_cis_crm.py +3661 -0
- tests/regscale/integrations/public/test_file_uploads.py +506 -0
- tests/regscale/integrations/public/test_oscal.py +453 -0
- tests/regscale/integrations/test_compliance_status_mapping.py +406 -0
- tests/regscale/integrations/test_control_matcher.py +1421 -0
- tests/regscale/integrations/test_control_matching.py +155 -0
- tests/regscale/integrations/test_milestone_manager.py +408 -0
- tests/regscale/models/test_control_implementation.py +118 -3
- tests/regscale/models/test_form_field_value_integration.py +304 -0
- tests/regscale/models/test_issue.py +378 -1
- tests/regscale/models/test_module_integration.py +582 -0
- tests/regscale/models/test_tenable_integrations.py +811 -105
- regscale/integrations/commercial/wizv2/policy_compliance.py +0 -3057
- regscale/integrations/public/fedramp/mappings/fedramp_r4_parts.json +0 -7388
- regscale/integrations/public/fedramp/mappings/fedramp_r5_parts.json +0 -9605
- regscale/integrations/public/fedramp/parts_mapper.py +0 -107
- /regscale/integrations/commercial/{amazon → sarif}/__init__.py +0 -0
- /regscale/integrations/commercial/wizv2/{wiz_auth.py → core/auth.py} +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/LICENSE +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/WHEEL +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.21.2.0.dist-info → regscale_cli-6.28.2.1.dist-info}/top_level.txt +0 -0
regscale/regscale.py
CHANGED
|
@@ -135,12 +135,18 @@ set_permissions = import_command_with_timing(INTERNAL, "set_permissions")
|
|
|
135
135
|
PUBLIC = "regscale.integrations.public"
|
|
136
136
|
alienvault = import_command_with_timing(PUBLIC, "alienvault")
|
|
137
137
|
cisa = import_command_with_timing(PUBLIC, "cisa")
|
|
138
|
+
csam = import_command_with_timing(PUBLIC, "csam")
|
|
138
139
|
emass = import_command_with_timing(PUBLIC, "emass")
|
|
139
140
|
fedramp = import_command_with_timing(PUBLIC, "fedramp")
|
|
140
141
|
nist = import_command_with_timing(PUBLIC, "nist")
|
|
141
142
|
oscal = import_command_with_timing(PUBLIC, "oscal")
|
|
142
143
|
criticality_updater = import_command_with_timing(PUBLIC, "criticality_updater")
|
|
143
144
|
|
|
145
|
+
############################################################
|
|
146
|
+
# Utils
|
|
147
|
+
############################################################
|
|
148
|
+
cci_importer = import_command_with_timing("regscale.integrations.public.cci_importer", "cci_importer")
|
|
149
|
+
|
|
144
150
|
############################################################
|
|
145
151
|
# Commercial Integrations
|
|
146
152
|
############################################################
|
|
@@ -171,6 +177,7 @@ okta = import_command_with_timing(COMMERCIAL, "okta")
|
|
|
171
177
|
prisma = import_command_with_timing(COMMERCIAL, "prisma")
|
|
172
178
|
qualys = import_command_with_timing(COMMERCIAL, "qualys")
|
|
173
179
|
salesforce = import_command_with_timing(COMMERCIAL, "salesforce")
|
|
180
|
+
sarif = import_command_with_timing(COMMERCIAL, "sarif")
|
|
174
181
|
sap = import_command_with_timing("regscale.integrations.commercial.sap.click", "sap")
|
|
175
182
|
sysdig = import_command_with_timing("regscale.integrations.commercial.sap.sysdig.click", "sysdig")
|
|
176
183
|
servicenow = import_command_with_timing(COMMERCIAL, "servicenow")
|
|
@@ -286,7 +293,7 @@ def banner():
|
|
|
286
293
|
\t[#05d1b7].clicli, [#15cfec].;loooool'
|
|
287
294
|
\t[#05d1b7].clicli, [#18a8e9].:oolloc.
|
|
288
295
|
\t[#05d1b7].clicli, [#ef7f2e].,cli,. [#18a8e9].clllll,
|
|
289
|
-
\t[#05d1b7].clicli. [#ef7f2e].,oxxxxd; [#
|
|
296
|
+
\t[#05d1b7].clicli. [#ef7f2e].,oxxxxd; [#18a8e9].:lllll;
|
|
290
297
|
\t[#05d1b7] ..cli. [#f68d1f]';cdxxxxxo, [#18a8e9].cllllc,
|
|
291
298
|
\t [#f68d1f].:odddddddc. [#1b97d5] .;ccccc:.
|
|
292
299
|
\t[#ffc42a] ..'. [#f68d1f].;ldddddddl' [#0c8cd7].':ccccc:.
|
|
@@ -470,12 +477,21 @@ def validate_token():
|
|
|
470
477
|
cls=NotRequiredIf,
|
|
471
478
|
not_required_if=["token"],
|
|
472
479
|
)
|
|
480
|
+
@click.option(
|
|
481
|
+
"--app_id",
|
|
482
|
+
type=click.INT,
|
|
483
|
+
help="RegScale App ID to login with.",
|
|
484
|
+
default=1,
|
|
485
|
+
prompt=False,
|
|
486
|
+
required=False,
|
|
487
|
+
)
|
|
473
488
|
def login(
|
|
474
489
|
username: Optional[str],
|
|
475
490
|
password: Optional[str],
|
|
476
491
|
token: Optional[str] = None,
|
|
477
492
|
domain: Optional[str] = None,
|
|
478
493
|
mfa_token: Optional[str] = None,
|
|
494
|
+
app_id: Optional[int] = 1,
|
|
479
495
|
):
|
|
480
496
|
"""Logs the user into their RegScale instance."""
|
|
481
497
|
from regscale.core.app.application import Application
|
|
@@ -495,9 +511,10 @@ def login(
|
|
|
495
511
|
mfa_token=mfa_token,
|
|
496
512
|
app=app,
|
|
497
513
|
host=domain,
|
|
514
|
+
app_id=app_id,
|
|
498
515
|
)
|
|
499
516
|
else:
|
|
500
|
-
lg.login(str_user=username, str_password=password, app=app, host=domain)
|
|
517
|
+
lg.login(str_user=username, str_password=password, app=app, host=domain, app_id=app_id)
|
|
501
518
|
|
|
502
519
|
|
|
503
520
|
# Check the health of the RegScale Application
|
|
@@ -755,8 +772,8 @@ cli.add_command(catalog) # add Catalog Management Feature
|
|
|
755
772
|
cli.add_command(compare) # add Comparison support
|
|
756
773
|
cli.add_command(control_editor) # add Control Editor Feature
|
|
757
774
|
cli.add_command(evidence) # add Evidence Feature
|
|
758
|
-
cli.add_command(migrations) # add data migration support
|
|
759
775
|
cli.add_command(issues) # add POAM(Issues) Editor Feature
|
|
776
|
+
cli.add_command(migrations) # add data migration support
|
|
760
777
|
cli.add_command(model) # add POAM(Issues) Editor Feature
|
|
761
778
|
cli.add_command(set_permissions) # add builk editor for record permissions
|
|
762
779
|
|
|
@@ -790,15 +807,16 @@ cli.add_command(prisma) # add Prisma support
|
|
|
790
807
|
cli.add_command(qualys) # add Qualys Functionality
|
|
791
808
|
cli.add_command(salesforce) # add Salesforce support
|
|
792
809
|
cli.add_command(sap) # add SAP Concur support
|
|
810
|
+
cli.add_command(sarif) # add SARIF Converter support
|
|
793
811
|
cli.add_command(servicenow) # add ServiceNow support
|
|
794
812
|
cli.add_command(sicura) # add Sicura Integration
|
|
795
813
|
cli.add_command(snyk) # add Snyk support
|
|
796
|
-
cli.add_command(veracode) # add Veracode Integration
|
|
797
814
|
cli.add_command(sonarcloud) # add SonarCloud Integration
|
|
798
815
|
cli.add_command(stig) # add STIGv2 support
|
|
799
816
|
cli.add_command(stig_mapper) # add STIG Mapper support
|
|
800
817
|
cli.add_command(tenable) # add Tenable & TenableV2 support
|
|
801
818
|
cli.add_command(trivy) # add Trivy support
|
|
819
|
+
cli.add_command(veracode) # add Veracode Integration
|
|
802
820
|
cli.add_command(wiz) # add Wiz support
|
|
803
821
|
cli.add_command(xray) # add JFrog Xray support
|
|
804
822
|
|
|
@@ -807,11 +825,14 @@ cli.add_command(xray) # add JFrog Xray support
|
|
|
807
825
|
############################################################
|
|
808
826
|
cli.add_command(alienvault) # add Alienvault OTX integration
|
|
809
827
|
cli.add_command(cisa) # add CISA support
|
|
828
|
+
cli.add_command(criticality_updater) # add Criticality Updater support
|
|
829
|
+
cli.add_command(csam) # add CSAM support
|
|
810
830
|
cli.add_command(emass) # add eMASS support
|
|
811
831
|
cli.add_command(fedramp) # add FedRAMP support
|
|
812
832
|
cli.add_command(nist) # add Nist_Catalog support
|
|
813
833
|
cli.add_command(oscal) # add OSCAL support
|
|
814
834
|
cli.add_command(criticality_updater) # add Criticality Updater support
|
|
835
|
+
cli.add_command(cci_importer) # add CCI Importer support
|
|
815
836
|
|
|
816
837
|
# start function for the CLI
|
|
817
838
|
if __name__ == "__main__":
|
|
File without changes
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"""Thread handler to create and start threads"""
|
|
4
4
|
|
|
5
5
|
from concurrent.futures import ThreadPoolExecutor, TimeoutError, as_completed
|
|
6
|
-
from typing import Any, Callable, List, Tuple, Union
|
|
6
|
+
from typing import Any, Callable, List, Optional, Tuple, Union
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class ThreadManager:
|
|
@@ -98,16 +98,7 @@ def create_threads(process: Callable, args: Tuple, thread_count: int) -> None:
|
|
|
98
98
|
:param int thread_count: # of threads needed
|
|
99
99
|
:rtype: None
|
|
100
100
|
"""
|
|
101
|
-
|
|
102
|
-
from regscale.core.app.application import Application
|
|
103
|
-
|
|
104
|
-
app = Application()
|
|
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
|
|
101
|
+
max_threads = _determine_max_threads()
|
|
111
102
|
if threads := min(thread_count, max_threads):
|
|
112
103
|
# start the threads with the number of threads allowed
|
|
113
104
|
with ThreadPoolExecutor(max_workers=threads) as executor:
|
|
@@ -127,15 +118,29 @@ def thread_assignment(thread: int, total_items: int) -> list:
|
|
|
127
118
|
:return: List of items to process for the given thread
|
|
128
119
|
:rtype: list
|
|
129
120
|
"""
|
|
121
|
+
max_threads = _determine_max_threads()
|
|
122
|
+
|
|
123
|
+
return [x for x in range(total_items) if x % max_threads == thread]
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def _determine_max_threads(default: Optional[int] = 100) -> int:
|
|
127
|
+
"""
|
|
128
|
+
Function to determine the max threads to use by checking the Application config
|
|
129
|
+
|
|
130
|
+
:param Optional[int] default: The default max threads to use if the Application config is not set, defaults to 100
|
|
131
|
+
:return: The max threads to use
|
|
132
|
+
:rtype: int
|
|
133
|
+
"""
|
|
130
134
|
from regscale.core.app.application import Application
|
|
131
135
|
|
|
132
136
|
app = Application()
|
|
137
|
+
if app.running_in_airflow:
|
|
138
|
+
default = 20
|
|
133
139
|
# set max threads
|
|
134
|
-
max_threads = app.config.get("maxThreads",
|
|
140
|
+
max_threads = app.config.get("maxThreads", default)
|
|
135
141
|
if not isinstance(max_threads, int):
|
|
136
142
|
try:
|
|
137
143
|
max_threads = int(max_threads)
|
|
138
144
|
except (ValueError, TypeError):
|
|
139
|
-
max_threads =
|
|
140
|
-
|
|
141
|
-
return [x for x in range(total_items) if x % max_threads == thread]
|
|
145
|
+
max_threads = default
|
|
146
|
+
return max_threads
|
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.28.2.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
|
|
@@ -30,13 +30,12 @@ Requires-Dist: distro ==1.8.0
|
|
|
30
30
|
Requires-Dist: docx ==0.2.4
|
|
31
31
|
Requires-Dist: filelock ~=3.13.1
|
|
32
32
|
Requires-Dist: frontend
|
|
33
|
-
Requires-Dist: future ~=0.18.3
|
|
34
33
|
Requires-Dist: google-api-python-client
|
|
35
34
|
Requires-Dist: google-cloud-asset ~=3.22
|
|
36
35
|
Requires-Dist: google-cloud-securitycenter ~=1.25
|
|
37
36
|
Requires-Dist: gql ~=3.5.0
|
|
38
37
|
Requires-Dist: inflect
|
|
39
|
-
Requires-Dist: jira
|
|
38
|
+
Requires-Dist: jira >=3.8.0
|
|
40
39
|
Requires-Dist: jwcrypto >=1.5.1
|
|
41
40
|
Requires-Dist: lxml ==5.3.0
|
|
42
41
|
Requires-Dist: markdown
|
|
@@ -59,7 +58,6 @@ Requires-Dist: pytest
|
|
|
59
58
|
Requires-Dist: python-dateutil ~=2.9.0
|
|
60
59
|
Requires-Dist: python-docx
|
|
61
60
|
Requires-Dist: python-jwt ==4.1.0
|
|
62
|
-
Requires-Dist: pyxnat ==1.5.*
|
|
63
61
|
Requires-Dist: rapidfuzz ~=3.7
|
|
64
62
|
Requires-Dist: regscale-python-ssp
|
|
65
63
|
Requires-Dist: requests >=2.32.0
|
|
@@ -68,7 +66,7 @@ Requires-Dist: setuptools
|
|
|
68
66
|
Requires-Dist: simple-salesforce
|
|
69
67
|
Requires-Dist: smart-open ~=7.0
|
|
70
68
|
Requires-Dist: static
|
|
71
|
-
Requires-Dist: synqly
|
|
69
|
+
Requires-Dist: synqly ==0.4.56
|
|
72
70
|
Requires-Dist: tools
|
|
73
71
|
Requires-Dist: typing-extensions ~=4.12.2
|
|
74
72
|
Requires-Dist: wheel
|
|
@@ -96,7 +94,6 @@ Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow'
|
|
|
96
94
|
Requires-Dist: flask-appbuilder >=4.0.0 ; extra == 'airflow'
|
|
97
95
|
Requires-Dist: flask >=2.3.2 ; extra == 'airflow'
|
|
98
96
|
Requires-Dist: frontend ; extra == 'airflow'
|
|
99
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'airflow'
|
|
100
97
|
Requires-Dist: google-api-python-client ; extra == 'airflow'
|
|
101
98
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow'
|
|
102
99
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow'
|
|
@@ -105,7 +102,7 @@ Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow'
|
|
|
105
102
|
Requires-Dist: importlib-metadata >=6.5 ; extra == 'airflow'
|
|
106
103
|
Requires-Dist: inflect ; extra == 'airflow'
|
|
107
104
|
Requires-Dist: jinja2 >=3.1.5 ; extra == 'airflow'
|
|
108
|
-
Requires-Dist: jira
|
|
105
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'airflow'
|
|
109
106
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'airflow'
|
|
110
107
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow'
|
|
111
108
|
Requires-Dist: lxml ==5.3.0 ; extra == 'airflow'
|
|
@@ -140,7 +137,6 @@ Requires-Dist: pytest ; extra == 'airflow'
|
|
|
140
137
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'airflow'
|
|
141
138
|
Requires-Dist: python-docx ; extra == 'airflow'
|
|
142
139
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow'
|
|
143
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow'
|
|
144
140
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'airflow'
|
|
145
141
|
Requires-Dist: regscale-python-ssp ; extra == 'airflow'
|
|
146
142
|
Requires-Dist: requests >=2.32.0 ; extra == 'airflow'
|
|
@@ -150,7 +146,7 @@ Requires-Dist: setuptools >=69.0.0 ; extra == 'airflow'
|
|
|
150
146
|
Requires-Dist: simple-salesforce ; extra == 'airflow'
|
|
151
147
|
Requires-Dist: smart-open ~=7.0 ; extra == 'airflow'
|
|
152
148
|
Requires-Dist: static ; extra == 'airflow'
|
|
153
|
-
Requires-Dist: synqly ; extra == 'airflow'
|
|
149
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'airflow'
|
|
154
150
|
Requires-Dist: tools ; extra == 'airflow'
|
|
155
151
|
Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'airflow'
|
|
156
152
|
Requires-Dist: wheel ; extra == 'airflow'
|
|
@@ -180,7 +176,6 @@ Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow-azure'
|
|
|
180
176
|
Requires-Dist: flask-appbuilder >=4.0.0 ; extra == 'airflow-azure'
|
|
181
177
|
Requires-Dist: flask >=2.3.2 ; extra == 'airflow-azure'
|
|
182
178
|
Requires-Dist: frontend ; extra == 'airflow-azure'
|
|
183
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'airflow-azure'
|
|
184
179
|
Requires-Dist: google-api-python-client ; extra == 'airflow-azure'
|
|
185
180
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow-azure'
|
|
186
181
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow-azure'
|
|
@@ -189,7 +184,7 @@ Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow-azure'
|
|
|
189
184
|
Requires-Dist: importlib-metadata >=6.5 ; extra == 'airflow-azure'
|
|
190
185
|
Requires-Dist: inflect ; extra == 'airflow-azure'
|
|
191
186
|
Requires-Dist: jinja2 >=3.1.5 ; extra == 'airflow-azure'
|
|
192
|
-
Requires-Dist: jira
|
|
187
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'airflow-azure'
|
|
193
188
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'airflow-azure'
|
|
194
189
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow-azure'
|
|
195
190
|
Requires-Dist: lxml ==5.3.0 ; extra == 'airflow-azure'
|
|
@@ -225,7 +220,6 @@ Requires-Dist: pytest ; extra == 'airflow-azure'
|
|
|
225
220
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'airflow-azure'
|
|
226
221
|
Requires-Dist: python-docx ; extra == 'airflow-azure'
|
|
227
222
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow-azure'
|
|
228
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow-azure'
|
|
229
223
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'airflow-azure'
|
|
230
224
|
Requires-Dist: regscale-python-ssp ; extra == 'airflow-azure'
|
|
231
225
|
Requires-Dist: requests >=2.32.0 ; extra == 'airflow-azure'
|
|
@@ -235,7 +229,7 @@ Requires-Dist: setuptools >=69.0.0 ; extra == 'airflow-azure'
|
|
|
235
229
|
Requires-Dist: simple-salesforce ; extra == 'airflow-azure'
|
|
236
230
|
Requires-Dist: smart-open ~=7.0 ; extra == 'airflow-azure'
|
|
237
231
|
Requires-Dist: static ; extra == 'airflow-azure'
|
|
238
|
-
Requires-Dist: synqly ; extra == 'airflow-azure'
|
|
232
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'airflow-azure'
|
|
239
233
|
Requires-Dist: tools ; extra == 'airflow-azure'
|
|
240
234
|
Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'airflow-azure'
|
|
241
235
|
Requires-Dist: wheel ; extra == 'airflow-azure'
|
|
@@ -264,7 +258,6 @@ Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow-sqlserver'
|
|
|
264
258
|
Requires-Dist: flask-appbuilder >=4.0.0 ; extra == 'airflow-sqlserver'
|
|
265
259
|
Requires-Dist: flask >=2.3.2 ; extra == 'airflow-sqlserver'
|
|
266
260
|
Requires-Dist: frontend ; extra == 'airflow-sqlserver'
|
|
267
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'airflow-sqlserver'
|
|
268
261
|
Requires-Dist: google-api-python-client ; extra == 'airflow-sqlserver'
|
|
269
262
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow-sqlserver'
|
|
270
263
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow-sqlserver'
|
|
@@ -273,7 +266,7 @@ Requires-Dist: greenlet >=3.0.3 ; extra == 'airflow-sqlserver'
|
|
|
273
266
|
Requires-Dist: importlib-metadata >=6.5 ; extra == 'airflow-sqlserver'
|
|
274
267
|
Requires-Dist: inflect ; extra == 'airflow-sqlserver'
|
|
275
268
|
Requires-Dist: jinja2 >=3.1.5 ; extra == 'airflow-sqlserver'
|
|
276
|
-
Requires-Dist: jira
|
|
269
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'airflow-sqlserver'
|
|
277
270
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'airflow-sqlserver'
|
|
278
271
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow-sqlserver'
|
|
279
272
|
Requires-Dist: lxml ==5.3.0 ; extra == 'airflow-sqlserver'
|
|
@@ -310,7 +303,6 @@ Requires-Dist: pytest ; extra == 'airflow-sqlserver'
|
|
|
310
303
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'airflow-sqlserver'
|
|
311
304
|
Requires-Dist: python-docx ; extra == 'airflow-sqlserver'
|
|
312
305
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow-sqlserver'
|
|
313
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow-sqlserver'
|
|
314
306
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'airflow-sqlserver'
|
|
315
307
|
Requires-Dist: regscale-python-ssp ; extra == 'airflow-sqlserver'
|
|
316
308
|
Requires-Dist: requests >=2.32.0 ; extra == 'airflow-sqlserver'
|
|
@@ -320,7 +312,7 @@ Requires-Dist: setuptools >=69.0.0 ; extra == 'airflow-sqlserver'
|
|
|
320
312
|
Requires-Dist: simple-salesforce ; extra == 'airflow-sqlserver'
|
|
321
313
|
Requires-Dist: smart-open ~=7.0 ; extra == 'airflow-sqlserver'
|
|
322
314
|
Requires-Dist: static ; extra == 'airflow-sqlserver'
|
|
323
|
-
Requires-Dist: synqly ; extra == 'airflow-sqlserver'
|
|
315
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'airflow-sqlserver'
|
|
324
316
|
Requires-Dist: tools ; extra == 'airflow-sqlserver'
|
|
325
317
|
Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'airflow-sqlserver'
|
|
326
318
|
Requires-Dist: wheel ; extra == 'airflow-sqlserver'
|
|
@@ -354,7 +346,6 @@ Requires-Dist: flask-rebar ; extra == 'all'
|
|
|
354
346
|
Requires-Dist: flask-restx ; extra == 'all'
|
|
355
347
|
Requires-Dist: flask >=2.3.2 ; extra == 'all'
|
|
356
348
|
Requires-Dist: frontend ; extra == 'all'
|
|
357
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'all'
|
|
358
349
|
Requires-Dist: google-api-python-client ; extra == 'all'
|
|
359
350
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'all'
|
|
360
351
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'all'
|
|
@@ -365,7 +356,7 @@ Requires-Dist: importlib-resources ; extra == 'all'
|
|
|
365
356
|
Requires-Dist: inflect ; extra == 'all'
|
|
366
357
|
Requires-Dist: jinja2 ; extra == 'all'
|
|
367
358
|
Requires-Dist: jinja2 >=3.1.5 ; extra == 'all'
|
|
368
|
-
Requires-Dist: jira
|
|
359
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'all'
|
|
369
360
|
Requires-Dist: jmespath ==1.0.0 ; extra == 'all'
|
|
370
361
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'all'
|
|
371
362
|
Requires-Dist: lxml ==5.3.0 ; extra == 'all'
|
|
@@ -400,7 +391,6 @@ Requires-Dist: pytest ; extra == 'all'
|
|
|
400
391
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'all'
|
|
401
392
|
Requires-Dist: python-docx ; extra == 'all'
|
|
402
393
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'all'
|
|
403
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'all'
|
|
404
394
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'all'
|
|
405
395
|
Requires-Dist: regscale-python-ssp ; extra == 'all'
|
|
406
396
|
Requires-Dist: requests >=2.32.0 ; extra == 'all'
|
|
@@ -410,7 +400,7 @@ Requires-Dist: setuptools >=69.0.0 ; extra == 'all'
|
|
|
410
400
|
Requires-Dist: simple-salesforce ; extra == 'all'
|
|
411
401
|
Requires-Dist: smart-open ~=7.0 ; extra == 'all'
|
|
412
402
|
Requires-Dist: static ; extra == 'all'
|
|
413
|
-
Requires-Dist: synqly ; extra == 'all'
|
|
403
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'all'
|
|
414
404
|
Requires-Dist: tools ; extra == 'all'
|
|
415
405
|
Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'all'
|
|
416
406
|
Requires-Dist: werkzeug >=2.3.8 ; extra == 'all'
|
|
@@ -433,14 +423,13 @@ Requires-Dist: distro ==1.8.0 ; extra == 'ansible'
|
|
|
433
423
|
Requires-Dist: docx ==0.2.4 ; extra == 'ansible'
|
|
434
424
|
Requires-Dist: filelock ~=3.13.1 ; extra == 'ansible'
|
|
435
425
|
Requires-Dist: frontend ; extra == 'ansible'
|
|
436
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'ansible'
|
|
437
426
|
Requires-Dist: google-api-python-client ; extra == 'ansible'
|
|
438
427
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'ansible'
|
|
439
428
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'ansible'
|
|
440
429
|
Requires-Dist: gql ~=3.5.0 ; extra == 'ansible'
|
|
441
430
|
Requires-Dist: inflect ; extra == 'ansible'
|
|
442
431
|
Requires-Dist: jinja2 ; extra == 'ansible'
|
|
443
|
-
Requires-Dist: jira
|
|
432
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'ansible'
|
|
444
433
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'ansible'
|
|
445
434
|
Requires-Dist: lxml ==5.3.0 ; extra == 'ansible'
|
|
446
435
|
Requires-Dist: markdown ; extra == 'ansible'
|
|
@@ -463,7 +452,6 @@ Requires-Dist: pytest ; extra == 'ansible'
|
|
|
463
452
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'ansible'
|
|
464
453
|
Requires-Dist: python-docx ; extra == 'ansible'
|
|
465
454
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'ansible'
|
|
466
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'ansible'
|
|
467
455
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'ansible'
|
|
468
456
|
Requires-Dist: regscale-python-ssp ; extra == 'ansible'
|
|
469
457
|
Requires-Dist: requests >=2.32.0 ; extra == 'ansible'
|
|
@@ -472,7 +460,7 @@ Requires-Dist: setuptools ; extra == 'ansible'
|
|
|
472
460
|
Requires-Dist: simple-salesforce ; extra == 'ansible'
|
|
473
461
|
Requires-Dist: smart-open ~=7.0 ; extra == 'ansible'
|
|
474
462
|
Requires-Dist: static ; extra == 'ansible'
|
|
475
|
-
Requires-Dist: synqly ; extra == 'ansible'
|
|
463
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'ansible'
|
|
476
464
|
Requires-Dist: tools ; extra == 'ansible'
|
|
477
465
|
Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'ansible'
|
|
478
466
|
Requires-Dist: wheel ; extra == 'ansible'
|
|
@@ -499,14 +487,13 @@ Requires-Dist: filelock ~=3.13.1 ; extra == 'dev'
|
|
|
499
487
|
Requires-Dist: flake8 ; extra == 'dev'
|
|
500
488
|
Requires-Dist: freezegun ; extra == 'dev'
|
|
501
489
|
Requires-Dist: frontend ; extra == 'dev'
|
|
502
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'dev'
|
|
503
490
|
Requires-Dist: google-api-python-client ; extra == 'dev'
|
|
504
491
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'dev'
|
|
505
492
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'dev'
|
|
506
493
|
Requires-Dist: gql ~=3.5.0 ; extra == 'dev'
|
|
507
494
|
Requires-Dist: inflect ; extra == 'dev'
|
|
508
495
|
Requires-Dist: isort ; extra == 'dev'
|
|
509
|
-
Requires-Dist: jira
|
|
496
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'dev'
|
|
510
497
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'dev'
|
|
511
498
|
Requires-Dist: lxml-stubs ; extra == 'dev'
|
|
512
499
|
Requires-Dist: lxml ==5.3.0 ; extra == 'dev'
|
|
@@ -542,7 +529,6 @@ Requires-Dist: pytest >=5 ; extra == 'dev'
|
|
|
542
529
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'dev'
|
|
543
530
|
Requires-Dist: python-docx ; extra == 'dev'
|
|
544
531
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'dev'
|
|
545
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'dev'
|
|
546
532
|
Requires-Dist: radon ; extra == 'dev'
|
|
547
533
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'dev'
|
|
548
534
|
Requires-Dist: regscale-python-ssp ; extra == 'dev'
|
|
@@ -555,7 +541,7 @@ Requires-Dist: sphinx ; extra == 'dev'
|
|
|
555
541
|
Requires-Dist: sphinx-autodoc-typehints ; extra == 'dev'
|
|
556
542
|
Requires-Dist: sphinx-click ; extra == 'dev'
|
|
557
543
|
Requires-Dist: static ; extra == 'dev'
|
|
558
|
-
Requires-Dist: synqly ; extra == 'dev'
|
|
544
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'dev'
|
|
559
545
|
Requires-Dist: tools ; extra == 'dev'
|
|
560
546
|
Requires-Dist: types-python-dateutil ; extra == 'dev'
|
|
561
547
|
Requires-Dist: types-pyyaml ; extra == 'dev'
|
|
@@ -585,14 +571,13 @@ Requires-Dist: flask-appbuilder ; extra == 'server'
|
|
|
585
571
|
Requires-Dist: flask-rebar ; extra == 'server'
|
|
586
572
|
Requires-Dist: flask-restx ; extra == 'server'
|
|
587
573
|
Requires-Dist: frontend ; extra == 'server'
|
|
588
|
-
Requires-Dist: future ~=0.18.3 ; extra == 'server'
|
|
589
574
|
Requires-Dist: google-api-python-client ; extra == 'server'
|
|
590
575
|
Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'server'
|
|
591
576
|
Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'server'
|
|
592
577
|
Requires-Dist: gql ~=3.5.0 ; extra == 'server'
|
|
593
578
|
Requires-Dist: importlib-resources ; extra == 'server'
|
|
594
579
|
Requires-Dist: inflect ; extra == 'server'
|
|
595
|
-
Requires-Dist: jira
|
|
580
|
+
Requires-Dist: jira >=3.8.0 ; extra == 'server'
|
|
596
581
|
Requires-Dist: jwcrypto >=1.5.1 ; extra == 'server'
|
|
597
582
|
Requires-Dist: lxml ==5.3.0 ; extra == 'server'
|
|
598
583
|
Requires-Dist: markdown ; extra == 'server'
|
|
@@ -615,7 +600,6 @@ Requires-Dist: pytest ; extra == 'server'
|
|
|
615
600
|
Requires-Dist: python-dateutil ~=2.9.0 ; extra == 'server'
|
|
616
601
|
Requires-Dist: python-docx ; extra == 'server'
|
|
617
602
|
Requires-Dist: python-jwt ==4.1.0 ; extra == 'server'
|
|
618
|
-
Requires-Dist: pyxnat ==1.5.* ; extra == 'server'
|
|
619
603
|
Requires-Dist: rapidfuzz ~=3.7 ; extra == 'server'
|
|
620
604
|
Requires-Dist: regscale-python-ssp ; extra == 'server'
|
|
621
605
|
Requires-Dist: requests >=2.32.0 ; extra == 'server'
|
|
@@ -624,7 +608,7 @@ Requires-Dist: setuptools ; extra == 'server'
|
|
|
624
608
|
Requires-Dist: simple-salesforce ; extra == 'server'
|
|
625
609
|
Requires-Dist: smart-open ~=7.0 ; extra == 'server'
|
|
626
610
|
Requires-Dist: static ; extra == 'server'
|
|
627
|
-
Requires-Dist: synqly ; extra == 'server'
|
|
611
|
+
Requires-Dist: synqly ==0.4.56 ; extra == 'server'
|
|
628
612
|
Requires-Dist: tools ; extra == 'server'
|
|
629
613
|
Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'server'
|
|
630
614
|
Requires-Dist: werkzeug >=2.3.8 ; extra == 'server'
|