regscale-cli 6.16.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.

Files changed (481) hide show
  1. regscale/__init__.py +1 -0
  2. regscale/airflow/__init__.py +9 -0
  3. regscale/airflow/azure/__init__.py +9 -0
  4. regscale/airflow/azure/cli.py +89 -0
  5. regscale/airflow/azure/upload_dags.py +116 -0
  6. regscale/airflow/click_dags.py +127 -0
  7. regscale/airflow/click_mixins.py +82 -0
  8. regscale/airflow/config.py +25 -0
  9. regscale/airflow/factories/__init__.py +0 -0
  10. regscale/airflow/factories/connections.py +58 -0
  11. regscale/airflow/factories/workflows.py +78 -0
  12. regscale/airflow/hierarchy.py +88 -0
  13. regscale/airflow/operators/__init__.py +0 -0
  14. regscale/airflow/operators/click.py +36 -0
  15. regscale/airflow/sensors/__init__.py +0 -0
  16. regscale/airflow/sensors/sql.py +107 -0
  17. regscale/airflow/sessions/__init__.py +0 -0
  18. regscale/airflow/sessions/sql/__init__.py +3 -0
  19. regscale/airflow/sessions/sql/queries.py +64 -0
  20. regscale/airflow/sessions/sql/sql_server_queries.py +248 -0
  21. regscale/airflow/tasks/__init__.py +0 -0
  22. regscale/airflow/tasks/branches.py +22 -0
  23. regscale/airflow/tasks/cli.py +116 -0
  24. regscale/airflow/tasks/click.py +73 -0
  25. regscale/airflow/tasks/debugging.py +9 -0
  26. regscale/airflow/tasks/groups.py +116 -0
  27. regscale/airflow/tasks/init.py +60 -0
  28. regscale/airflow/tasks/states.py +47 -0
  29. regscale/airflow/tasks/workflows.py +36 -0
  30. regscale/ansible/__init__.py +9 -0
  31. regscale/core/__init__.py +0 -0
  32. regscale/core/app/__init__.py +3 -0
  33. regscale/core/app/api.py +571 -0
  34. regscale/core/app/application.py +665 -0
  35. regscale/core/app/internal/__init__.py +136 -0
  36. regscale/core/app/internal/admin_actions.py +230 -0
  37. regscale/core/app/internal/assessments_editor.py +873 -0
  38. regscale/core/app/internal/catalog.py +316 -0
  39. regscale/core/app/internal/comparison.py +459 -0
  40. regscale/core/app/internal/control_editor.py +571 -0
  41. regscale/core/app/internal/encrypt.py +79 -0
  42. regscale/core/app/internal/evidence.py +1240 -0
  43. regscale/core/app/internal/file_uploads.py +151 -0
  44. regscale/core/app/internal/healthcheck.py +66 -0
  45. regscale/core/app/internal/login.py +305 -0
  46. regscale/core/app/internal/migrations.py +240 -0
  47. regscale/core/app/internal/model_editor.py +1701 -0
  48. regscale/core/app/internal/poam_editor.py +632 -0
  49. regscale/core/app/internal/workflow.py +105 -0
  50. regscale/core/app/logz.py +74 -0
  51. regscale/core/app/utils/XMLIR.py +258 -0
  52. regscale/core/app/utils/__init__.py +0 -0
  53. regscale/core/app/utils/api_handler.py +358 -0
  54. regscale/core/app/utils/app_utils.py +1110 -0
  55. regscale/core/app/utils/catalog_utils/__init__.py +0 -0
  56. regscale/core/app/utils/catalog_utils/common.py +91 -0
  57. regscale/core/app/utils/catalog_utils/compare_catalog.py +193 -0
  58. regscale/core/app/utils/catalog_utils/diagnostic_catalog.py +97 -0
  59. regscale/core/app/utils/catalog_utils/download_catalog.py +103 -0
  60. regscale/core/app/utils/catalog_utils/update_catalog.py +718 -0
  61. regscale/core/app/utils/catalog_utils/update_catalog_v2.py +1378 -0
  62. regscale/core/app/utils/catalog_utils/update_catalog_v3.py +1272 -0
  63. regscale/core/app/utils/catalog_utils/update_plans.py +334 -0
  64. regscale/core/app/utils/file_utils.py +238 -0
  65. regscale/core/app/utils/parser_utils.py +81 -0
  66. regscale/core/app/utils/pickle_file_handler.py +57 -0
  67. regscale/core/app/utils/regscale_utils.py +319 -0
  68. regscale/core/app/utils/report_utils.py +119 -0
  69. regscale/core/app/utils/variables.py +226 -0
  70. regscale/core/decorators.py +31 -0
  71. regscale/core/lazy_group.py +65 -0
  72. regscale/core/login.py +63 -0
  73. regscale/core/server/__init__.py +0 -0
  74. regscale/core/server/flask_api.py +473 -0
  75. regscale/core/server/helpers.py +373 -0
  76. regscale/core/server/rest.py +64 -0
  77. regscale/core/server/static/css/bootstrap.css +6030 -0
  78. regscale/core/server/static/css/bootstrap.min.css +6 -0
  79. regscale/core/server/static/css/main.css +176 -0
  80. regscale/core/server/static/images/regscale-cli.svg +49 -0
  81. regscale/core/server/static/images/regscale.svg +38 -0
  82. regscale/core/server/templates/base.html +74 -0
  83. regscale/core/server/templates/index.html +43 -0
  84. regscale/core/server/templates/login.html +28 -0
  85. regscale/core/server/templates/make_base64.html +22 -0
  86. regscale/core/server/templates/upload_STIG.html +109 -0
  87. regscale/core/server/templates/upload_STIG_result.html +26 -0
  88. regscale/core/server/templates/upload_ssp.html +144 -0
  89. regscale/core/server/templates/upload_ssp_result.html +128 -0
  90. regscale/core/static/__init__.py +0 -0
  91. regscale/core/static/regex.py +14 -0
  92. regscale/core/utils/__init__.py +117 -0
  93. regscale/core/utils/click_utils.py +13 -0
  94. regscale/core/utils/date.py +238 -0
  95. regscale/core/utils/graphql.py +254 -0
  96. regscale/core/utils/urls.py +23 -0
  97. regscale/dev/__init__.py +6 -0
  98. regscale/dev/analysis.py +454 -0
  99. regscale/dev/cli.py +235 -0
  100. regscale/dev/code_gen.py +492 -0
  101. regscale/dev/dirs.py +69 -0
  102. regscale/dev/docs.py +384 -0
  103. regscale/dev/monitoring.py +26 -0
  104. regscale/dev/profiling.py +216 -0
  105. regscale/exceptions/__init__.py +4 -0
  106. regscale/exceptions/license_exception.py +7 -0
  107. regscale/exceptions/validation_exception.py +9 -0
  108. regscale/integrations/__init__.py +1 -0
  109. regscale/integrations/commercial/__init__.py +486 -0
  110. regscale/integrations/commercial/ad.py +433 -0
  111. regscale/integrations/commercial/amazon/__init__.py +0 -0
  112. regscale/integrations/commercial/amazon/common.py +106 -0
  113. regscale/integrations/commercial/aqua/__init__.py +0 -0
  114. regscale/integrations/commercial/aqua/aqua.py +91 -0
  115. regscale/integrations/commercial/aws/__init__.py +6 -0
  116. regscale/integrations/commercial/aws/cli.py +322 -0
  117. regscale/integrations/commercial/aws/inventory/__init__.py +110 -0
  118. regscale/integrations/commercial/aws/inventory/base.py +64 -0
  119. regscale/integrations/commercial/aws/inventory/resources/__init__.py +19 -0
  120. regscale/integrations/commercial/aws/inventory/resources/compute.py +234 -0
  121. regscale/integrations/commercial/aws/inventory/resources/containers.py +113 -0
  122. regscale/integrations/commercial/aws/inventory/resources/database.py +101 -0
  123. regscale/integrations/commercial/aws/inventory/resources/integration.py +237 -0
  124. regscale/integrations/commercial/aws/inventory/resources/networking.py +253 -0
  125. regscale/integrations/commercial/aws/inventory/resources/security.py +240 -0
  126. regscale/integrations/commercial/aws/inventory/resources/storage.py +91 -0
  127. regscale/integrations/commercial/aws/scanner.py +823 -0
  128. regscale/integrations/commercial/azure/__init__.py +0 -0
  129. regscale/integrations/commercial/azure/common.py +32 -0
  130. regscale/integrations/commercial/azure/intune.py +488 -0
  131. regscale/integrations/commercial/azure/scanner.py +49 -0
  132. regscale/integrations/commercial/burp.py +78 -0
  133. regscale/integrations/commercial/cpe.py +144 -0
  134. regscale/integrations/commercial/crowdstrike.py +1117 -0
  135. regscale/integrations/commercial/defender.py +1511 -0
  136. regscale/integrations/commercial/dependabot.py +210 -0
  137. regscale/integrations/commercial/durosuite/__init__.py +0 -0
  138. regscale/integrations/commercial/durosuite/api.py +1546 -0
  139. regscale/integrations/commercial/durosuite/process_devices.py +101 -0
  140. regscale/integrations/commercial/durosuite/scanner.py +637 -0
  141. regscale/integrations/commercial/durosuite/variables.py +21 -0
  142. regscale/integrations/commercial/ecr.py +90 -0
  143. regscale/integrations/commercial/gcp/__init__.py +237 -0
  144. regscale/integrations/commercial/gcp/auth.py +96 -0
  145. regscale/integrations/commercial/gcp/control_tests.py +238 -0
  146. regscale/integrations/commercial/gcp/variables.py +18 -0
  147. regscale/integrations/commercial/gitlab.py +332 -0
  148. regscale/integrations/commercial/grype.py +165 -0
  149. regscale/integrations/commercial/ibm.py +90 -0
  150. regscale/integrations/commercial/import_all/__init__.py +0 -0
  151. regscale/integrations/commercial/import_all/import_all_cmd.py +467 -0
  152. regscale/integrations/commercial/import_all/scan_file_fingerprints.json +27 -0
  153. regscale/integrations/commercial/jira.py +1046 -0
  154. regscale/integrations/commercial/mappings/__init__.py +0 -0
  155. regscale/integrations/commercial/mappings/csf_controls.json +713 -0
  156. regscale/integrations/commercial/mappings/nist_800_53_r5_controls.json +1516 -0
  157. regscale/integrations/commercial/nessus/__init__.py +0 -0
  158. regscale/integrations/commercial/nessus/nessus_utils.py +429 -0
  159. regscale/integrations/commercial/nessus/scanner.py +416 -0
  160. regscale/integrations/commercial/nexpose.py +90 -0
  161. regscale/integrations/commercial/okta.py +798 -0
  162. regscale/integrations/commercial/opentext/__init__.py +0 -0
  163. regscale/integrations/commercial/opentext/click.py +99 -0
  164. regscale/integrations/commercial/opentext/scanner.py +143 -0
  165. regscale/integrations/commercial/prisma.py +91 -0
  166. regscale/integrations/commercial/qualys.py +1462 -0
  167. regscale/integrations/commercial/salesforce.py +980 -0
  168. regscale/integrations/commercial/sap/__init__.py +0 -0
  169. regscale/integrations/commercial/sap/click.py +31 -0
  170. regscale/integrations/commercial/sap/sysdig/__init__.py +0 -0
  171. regscale/integrations/commercial/sap/sysdig/click.py +57 -0
  172. regscale/integrations/commercial/sap/sysdig/sysdig_scanner.py +190 -0
  173. regscale/integrations/commercial/sap/tenable/__init__.py +0 -0
  174. regscale/integrations/commercial/sap/tenable/click.py +49 -0
  175. regscale/integrations/commercial/sap/tenable/scanner.py +196 -0
  176. regscale/integrations/commercial/servicenow.py +1756 -0
  177. regscale/integrations/commercial/sicura/__init__.py +0 -0
  178. regscale/integrations/commercial/sicura/api.py +855 -0
  179. regscale/integrations/commercial/sicura/commands.py +73 -0
  180. regscale/integrations/commercial/sicura/scanner.py +481 -0
  181. regscale/integrations/commercial/sicura/variables.py +16 -0
  182. regscale/integrations/commercial/snyk.py +90 -0
  183. regscale/integrations/commercial/sonarcloud.py +260 -0
  184. regscale/integrations/commercial/sqlserver.py +369 -0
  185. regscale/integrations/commercial/stig_mapper_integration/__init__.py +0 -0
  186. regscale/integrations/commercial/stig_mapper_integration/click_commands.py +38 -0
  187. regscale/integrations/commercial/stig_mapper_integration/mapping_engine.py +353 -0
  188. regscale/integrations/commercial/stigv2/__init__.py +0 -0
  189. regscale/integrations/commercial/stigv2/ckl_parser.py +349 -0
  190. regscale/integrations/commercial/stigv2/click_commands.py +95 -0
  191. regscale/integrations/commercial/stigv2/stig_integration.py +202 -0
  192. regscale/integrations/commercial/synqly/__init__.py +0 -0
  193. regscale/integrations/commercial/synqly/assets.py +46 -0
  194. regscale/integrations/commercial/synqly/ticketing.py +132 -0
  195. regscale/integrations/commercial/synqly/vulnerabilities.py +223 -0
  196. regscale/integrations/commercial/synqly_jira.py +840 -0
  197. regscale/integrations/commercial/tenablev2/__init__.py +0 -0
  198. regscale/integrations/commercial/tenablev2/authenticate.py +31 -0
  199. regscale/integrations/commercial/tenablev2/click.py +1584 -0
  200. regscale/integrations/commercial/tenablev2/scanner.py +504 -0
  201. regscale/integrations/commercial/tenablev2/stig_parsers.py +140 -0
  202. regscale/integrations/commercial/tenablev2/utils.py +78 -0
  203. regscale/integrations/commercial/tenablev2/variables.py +17 -0
  204. regscale/integrations/commercial/trivy.py +162 -0
  205. regscale/integrations/commercial/veracode.py +96 -0
  206. regscale/integrations/commercial/wizv2/WizDataMixin.py +97 -0
  207. regscale/integrations/commercial/wizv2/__init__.py +0 -0
  208. regscale/integrations/commercial/wizv2/click.py +429 -0
  209. regscale/integrations/commercial/wizv2/constants.py +1001 -0
  210. regscale/integrations/commercial/wizv2/issue.py +361 -0
  211. regscale/integrations/commercial/wizv2/models.py +112 -0
  212. regscale/integrations/commercial/wizv2/parsers.py +339 -0
  213. regscale/integrations/commercial/wizv2/sbom.py +115 -0
  214. regscale/integrations/commercial/wizv2/scanner.py +416 -0
  215. regscale/integrations/commercial/wizv2/utils.py +796 -0
  216. regscale/integrations/commercial/wizv2/variables.py +39 -0
  217. regscale/integrations/commercial/wizv2/wiz_auth.py +159 -0
  218. regscale/integrations/commercial/xray.py +91 -0
  219. regscale/integrations/integration/__init__.py +2 -0
  220. regscale/integrations/integration/integration.py +26 -0
  221. regscale/integrations/integration/inventory.py +17 -0
  222. regscale/integrations/integration/issue.py +100 -0
  223. regscale/integrations/integration_override.py +149 -0
  224. regscale/integrations/public/__init__.py +103 -0
  225. regscale/integrations/public/cisa.py +641 -0
  226. regscale/integrations/public/criticality_updater.py +70 -0
  227. regscale/integrations/public/emass.py +411 -0
  228. regscale/integrations/public/emass_slcm_import.py +697 -0
  229. regscale/integrations/public/fedramp/__init__.py +0 -0
  230. regscale/integrations/public/fedramp/appendix_parser.py +548 -0
  231. regscale/integrations/public/fedramp/click.py +479 -0
  232. regscale/integrations/public/fedramp/components.py +714 -0
  233. regscale/integrations/public/fedramp/docx_parser.py +259 -0
  234. regscale/integrations/public/fedramp/fedramp_cis_crm.py +1124 -0
  235. regscale/integrations/public/fedramp/fedramp_common.py +3181 -0
  236. regscale/integrations/public/fedramp/fedramp_docx.py +388 -0
  237. regscale/integrations/public/fedramp/fedramp_five.py +2343 -0
  238. regscale/integrations/public/fedramp/fedramp_traversal.py +138 -0
  239. regscale/integrations/public/fedramp/import_fedramp_r4_ssp.py +279 -0
  240. regscale/integrations/public/fedramp/import_workbook.py +495 -0
  241. regscale/integrations/public/fedramp/inventory_items.py +244 -0
  242. regscale/integrations/public/fedramp/mappings/__init__.py +0 -0
  243. regscale/integrations/public/fedramp/mappings/fedramp_r4_parts.json +7388 -0
  244. regscale/integrations/public/fedramp/mappings/fedramp_r5_params.json +8636 -0
  245. regscale/integrations/public/fedramp/mappings/fedramp_r5_parts.json +9605 -0
  246. regscale/integrations/public/fedramp/mappings/system_roles.py +34 -0
  247. regscale/integrations/public/fedramp/mappings/user.py +175 -0
  248. regscale/integrations/public/fedramp/mappings/values.py +141 -0
  249. regscale/integrations/public/fedramp/markdown_parser.py +150 -0
  250. regscale/integrations/public/fedramp/metadata.py +689 -0
  251. regscale/integrations/public/fedramp/models/__init__.py +59 -0
  252. regscale/integrations/public/fedramp/models/leveraged_auth_new.py +168 -0
  253. regscale/integrations/public/fedramp/models/poam_importer.py +522 -0
  254. regscale/integrations/public/fedramp/parts_mapper.py +107 -0
  255. regscale/integrations/public/fedramp/poam/__init__.py +0 -0
  256. regscale/integrations/public/fedramp/poam/scanner.py +851 -0
  257. regscale/integrations/public/fedramp/properties.py +201 -0
  258. regscale/integrations/public/fedramp/reporting.py +84 -0
  259. regscale/integrations/public/fedramp/resources.py +496 -0
  260. regscale/integrations/public/fedramp/rosetta.py +110 -0
  261. regscale/integrations/public/fedramp/ssp_logger.py +87 -0
  262. regscale/integrations/public/fedramp/system_characteristics.py +922 -0
  263. regscale/integrations/public/fedramp/system_control_implementations.py +582 -0
  264. regscale/integrations/public/fedramp/system_implementation.py +190 -0
  265. regscale/integrations/public/fedramp/xml_utils.py +87 -0
  266. regscale/integrations/public/nist_catalog.py +275 -0
  267. regscale/integrations/public/oscal.py +1946 -0
  268. regscale/integrations/public/otx.py +169 -0
  269. regscale/integrations/scanner_integration.py +2692 -0
  270. regscale/integrations/variables.py +25 -0
  271. regscale/models/__init__.py +7 -0
  272. regscale/models/app_models/__init__.py +5 -0
  273. regscale/models/app_models/catalog_compare.py +213 -0
  274. regscale/models/app_models/click.py +252 -0
  275. regscale/models/app_models/datetime_encoder.py +21 -0
  276. regscale/models/app_models/import_validater.py +321 -0
  277. regscale/models/app_models/mapping.py +260 -0
  278. regscale/models/app_models/pipeline.py +37 -0
  279. regscale/models/click_models.py +413 -0
  280. regscale/models/config.py +154 -0
  281. regscale/models/email_style.css +67 -0
  282. regscale/models/hierarchy.py +8 -0
  283. regscale/models/inspect_models.py +79 -0
  284. regscale/models/integration_models/__init__.py +0 -0
  285. regscale/models/integration_models/amazon_models/__init__.py +0 -0
  286. regscale/models/integration_models/amazon_models/inspector.py +262 -0
  287. regscale/models/integration_models/amazon_models/inspector_scan.py +206 -0
  288. regscale/models/integration_models/aqua.py +247 -0
  289. regscale/models/integration_models/azure_alerts.py +255 -0
  290. regscale/models/integration_models/base64.py +23 -0
  291. regscale/models/integration_models/burp.py +433 -0
  292. regscale/models/integration_models/burp_models.py +128 -0
  293. regscale/models/integration_models/cisa_kev_data.json +19333 -0
  294. regscale/models/integration_models/defender_data.py +93 -0
  295. regscale/models/integration_models/defenderimport.py +143 -0
  296. regscale/models/integration_models/drf.py +443 -0
  297. regscale/models/integration_models/ecr_models/__init__.py +0 -0
  298. regscale/models/integration_models/ecr_models/data.py +69 -0
  299. regscale/models/integration_models/ecr_models/ecr.py +239 -0
  300. regscale/models/integration_models/flat_file_importer.py +1079 -0
  301. regscale/models/integration_models/grype_import.py +247 -0
  302. regscale/models/integration_models/ibm.py +126 -0
  303. regscale/models/integration_models/implementation_results.py +85 -0
  304. regscale/models/integration_models/nexpose.py +140 -0
  305. regscale/models/integration_models/prisma.py +202 -0
  306. regscale/models/integration_models/qualys.py +720 -0
  307. regscale/models/integration_models/qualys_scanner.py +160 -0
  308. regscale/models/integration_models/sbom/__init__.py +0 -0
  309. regscale/models/integration_models/sbom/cyclone_dx.py +139 -0
  310. regscale/models/integration_models/send_reminders.py +620 -0
  311. regscale/models/integration_models/snyk.py +155 -0
  312. regscale/models/integration_models/synqly_models/__init__.py +0 -0
  313. regscale/models/integration_models/synqly_models/capabilities.json +1 -0
  314. regscale/models/integration_models/synqly_models/connector_types.py +22 -0
  315. regscale/models/integration_models/synqly_models/connectors/__init__.py +7 -0
  316. regscale/models/integration_models/synqly_models/connectors/assets.py +97 -0
  317. regscale/models/integration_models/synqly_models/connectors/ticketing.py +583 -0
  318. regscale/models/integration_models/synqly_models/connectors/vulnerabilities.py +169 -0
  319. regscale/models/integration_models/synqly_models/ocsf_mapper.py +331 -0
  320. regscale/models/integration_models/synqly_models/param.py +72 -0
  321. regscale/models/integration_models/synqly_models/synqly_model.py +733 -0
  322. regscale/models/integration_models/synqly_models/tenants.py +39 -0
  323. regscale/models/integration_models/tenable_models/__init__.py +0 -0
  324. regscale/models/integration_models/tenable_models/integration.py +187 -0
  325. regscale/models/integration_models/tenable_models/models.py +513 -0
  326. regscale/models/integration_models/trivy_import.py +231 -0
  327. regscale/models/integration_models/veracode.py +217 -0
  328. regscale/models/integration_models/xray.py +135 -0
  329. regscale/models/locking.py +100 -0
  330. regscale/models/platform.py +110 -0
  331. regscale/models/regscale_models/__init__.py +67 -0
  332. regscale/models/regscale_models/assessment.py +570 -0
  333. regscale/models/regscale_models/assessment_plan.py +52 -0
  334. regscale/models/regscale_models/asset.py +567 -0
  335. regscale/models/regscale_models/asset_mapping.py +190 -0
  336. regscale/models/regscale_models/case.py +42 -0
  337. regscale/models/regscale_models/catalog.py +261 -0
  338. regscale/models/regscale_models/cci.py +46 -0
  339. regscale/models/regscale_models/change.py +167 -0
  340. regscale/models/regscale_models/checklist.py +372 -0
  341. regscale/models/regscale_models/comment.py +49 -0
  342. regscale/models/regscale_models/compliance_settings.py +112 -0
  343. regscale/models/regscale_models/component.py +412 -0
  344. regscale/models/regscale_models/component_mapping.py +65 -0
  345. regscale/models/regscale_models/control.py +38 -0
  346. regscale/models/regscale_models/control_implementation.py +1128 -0
  347. regscale/models/regscale_models/control_objective.py +261 -0
  348. regscale/models/regscale_models/control_parameter.py +100 -0
  349. regscale/models/regscale_models/control_test.py +34 -0
  350. regscale/models/regscale_models/control_test_plan.py +75 -0
  351. regscale/models/regscale_models/control_test_result.py +52 -0
  352. regscale/models/regscale_models/custom_field.py +245 -0
  353. regscale/models/regscale_models/data.py +109 -0
  354. regscale/models/regscale_models/data_center.py +40 -0
  355. regscale/models/regscale_models/deviation.py +203 -0
  356. regscale/models/regscale_models/email.py +97 -0
  357. regscale/models/regscale_models/evidence.py +47 -0
  358. regscale/models/regscale_models/evidence_mapping.py +40 -0
  359. regscale/models/regscale_models/facility.py +59 -0
  360. regscale/models/regscale_models/file.py +382 -0
  361. regscale/models/regscale_models/filetag.py +37 -0
  362. regscale/models/regscale_models/form_field_value.py +94 -0
  363. regscale/models/regscale_models/group.py +169 -0
  364. regscale/models/regscale_models/implementation_objective.py +335 -0
  365. regscale/models/regscale_models/implementation_option.py +275 -0
  366. regscale/models/regscale_models/implementation_role.py +33 -0
  367. regscale/models/regscale_models/incident.py +177 -0
  368. regscale/models/regscale_models/interconnection.py +43 -0
  369. regscale/models/regscale_models/issue.py +1176 -0
  370. regscale/models/regscale_models/leveraged_authorization.py +125 -0
  371. regscale/models/regscale_models/line_of_inquiry.py +52 -0
  372. regscale/models/regscale_models/link.py +205 -0
  373. regscale/models/regscale_models/meta_data.py +64 -0
  374. regscale/models/regscale_models/mixins/__init__.py +0 -0
  375. regscale/models/regscale_models/mixins/parent_cache.py +124 -0
  376. regscale/models/regscale_models/module.py +224 -0
  377. regscale/models/regscale_models/modules.py +191 -0
  378. regscale/models/regscale_models/objective.py +14 -0
  379. regscale/models/regscale_models/parameter.py +87 -0
  380. regscale/models/regscale_models/ports_protocol.py +81 -0
  381. regscale/models/regscale_models/privacy.py +89 -0
  382. regscale/models/regscale_models/profile.py +50 -0
  383. regscale/models/regscale_models/profile_link.py +68 -0
  384. regscale/models/regscale_models/profile_mapping.py +124 -0
  385. regscale/models/regscale_models/project.py +63 -0
  386. regscale/models/regscale_models/property.py +278 -0
  387. regscale/models/regscale_models/question.py +85 -0
  388. regscale/models/regscale_models/questionnaire.py +87 -0
  389. regscale/models/regscale_models/questionnaire_instance.py +177 -0
  390. regscale/models/regscale_models/rbac.py +132 -0
  391. regscale/models/regscale_models/reference.py +86 -0
  392. regscale/models/regscale_models/regscale_model.py +1643 -0
  393. regscale/models/regscale_models/requirement.py +29 -0
  394. regscale/models/regscale_models/risk.py +274 -0
  395. regscale/models/regscale_models/sbom.py +54 -0
  396. regscale/models/regscale_models/scan_history.py +436 -0
  397. regscale/models/regscale_models/search.py +53 -0
  398. regscale/models/regscale_models/security_control.py +132 -0
  399. regscale/models/regscale_models/security_plan.py +204 -0
  400. regscale/models/regscale_models/software_inventory.py +159 -0
  401. regscale/models/regscale_models/stake_holder.py +64 -0
  402. regscale/models/regscale_models/stig.py +647 -0
  403. regscale/models/regscale_models/supply_chain.py +152 -0
  404. regscale/models/regscale_models/system_role.py +188 -0
  405. regscale/models/regscale_models/system_role_external_assignment.py +40 -0
  406. regscale/models/regscale_models/tag.py +37 -0
  407. regscale/models/regscale_models/tag_mapping.py +19 -0
  408. regscale/models/regscale_models/task.py +133 -0
  409. regscale/models/regscale_models/threat.py +196 -0
  410. regscale/models/regscale_models/user.py +175 -0
  411. regscale/models/regscale_models/user_group.py +55 -0
  412. regscale/models/regscale_models/vulnerability.py +242 -0
  413. regscale/models/regscale_models/vulnerability_mapping.py +162 -0
  414. regscale/models/regscale_models/workflow.py +55 -0
  415. regscale/models/regscale_models/workflow_action.py +34 -0
  416. regscale/models/regscale_models/workflow_instance.py +269 -0
  417. regscale/models/regscale_models/workflow_instance_step.py +114 -0
  418. regscale/models/regscale_models/workflow_template.py +58 -0
  419. regscale/models/regscale_models/workflow_template_step.py +45 -0
  420. regscale/regscale.py +815 -0
  421. regscale/utils/__init__.py +7 -0
  422. regscale/utils/b64conversion.py +14 -0
  423. regscale/utils/click_utils.py +118 -0
  424. regscale/utils/decorators.py +48 -0
  425. regscale/utils/dict_utils.py +59 -0
  426. regscale/utils/files.py +79 -0
  427. regscale/utils/fxns.py +30 -0
  428. regscale/utils/graphql_client.py +113 -0
  429. regscale/utils/lists.py +16 -0
  430. regscale/utils/numbers.py +12 -0
  431. regscale/utils/shell.py +148 -0
  432. regscale/utils/string.py +121 -0
  433. regscale/utils/synqly_utils.py +165 -0
  434. regscale/utils/threading/__init__.py +8 -0
  435. regscale/utils/threading/threadhandler.py +131 -0
  436. regscale/utils/threading/threadsafe_counter.py +47 -0
  437. regscale/utils/threading/threadsafe_dict.py +242 -0
  438. regscale/utils/threading/threadsafe_list.py +83 -0
  439. regscale/utils/version.py +104 -0
  440. regscale/validation/__init__.py +0 -0
  441. regscale/validation/address.py +37 -0
  442. regscale/validation/record.py +48 -0
  443. regscale/visualization/__init__.py +5 -0
  444. regscale/visualization/click.py +34 -0
  445. regscale_cli-6.16.0.0.dist-info/LICENSE +21 -0
  446. regscale_cli-6.16.0.0.dist-info/METADATA +659 -0
  447. regscale_cli-6.16.0.0.dist-info/RECORD +481 -0
  448. regscale_cli-6.16.0.0.dist-info/WHEEL +5 -0
  449. regscale_cli-6.16.0.0.dist-info/entry_points.txt +6 -0
  450. regscale_cli-6.16.0.0.dist-info/top_level.txt +2 -0
  451. tests/fixtures/__init__.py +2 -0
  452. tests/fixtures/api.py +87 -0
  453. tests/fixtures/models.py +91 -0
  454. tests/fixtures/test_fixture.py +144 -0
  455. tests/mocks/__init__.py +0 -0
  456. tests/mocks/objects.py +3 -0
  457. tests/mocks/response.py +32 -0
  458. tests/mocks/xml.py +13 -0
  459. tests/regscale/__init__.py +0 -0
  460. tests/regscale/core/__init__.py +0 -0
  461. tests/regscale/core/test_api.py +232 -0
  462. tests/regscale/core/test_app.py +406 -0
  463. tests/regscale/core/test_login.py +37 -0
  464. tests/regscale/core/test_logz.py +66 -0
  465. tests/regscale/core/test_sbom_generator.py +87 -0
  466. tests/regscale/core/test_validation_utils.py +163 -0
  467. tests/regscale/core/test_version.py +78 -0
  468. tests/regscale/models/__init__.py +0 -0
  469. tests/regscale/models/test_asset.py +71 -0
  470. tests/regscale/models/test_config.py +26 -0
  471. tests/regscale/models/test_control_implementation.py +27 -0
  472. tests/regscale/models/test_import.py +97 -0
  473. tests/regscale/models/test_issue.py +36 -0
  474. tests/regscale/models/test_mapping.py +52 -0
  475. tests/regscale/models/test_platform.py +31 -0
  476. tests/regscale/models/test_regscale_model.py +346 -0
  477. tests/regscale/models/test_report.py +32 -0
  478. tests/regscale/models/test_tenable_integrations.py +118 -0
  479. tests/regscale/models/test_user_model.py +121 -0
  480. tests/regscale/test_about.py +19 -0
  481. tests/regscale/test_authorization.py +65 -0
@@ -0,0 +1,659 @@
1
+ Metadata-Version: 2.1
2
+ Name: regscale-cli
3
+ Version: 6.16.0.0
4
+ Summary: Command Line Interface (CLI) for bulk processing/loading data into RegScale
5
+ Home-page: https://github.com/RegScale/regscale-cli
6
+ Author: Travis Howerton
7
+ Author-email: thowerton@regscale.com
8
+ License: MIT
9
+ Classifier: Operating System :: OS Independent
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Requires-Python: >=3.9, <4
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: PyMuPDF >=1.24.7
19
+ Requires-Dist: PyYAML ==6.0.1
20
+ Requires-Dist: beautifulsoup4
21
+ Requires-Dist: boto3 ==1.35.10
22
+ Requires-Dist: botocore ==1.35.10
23
+ Requires-Dist: bs4
24
+ Requires-Dist: cacheout
25
+ Requires-Dist: click ==8.1.3
26
+ Requires-Dist: colorama ==0.4.5
27
+ Requires-Dist: crowdstrike-falconpy ==1.4.5
28
+ Requires-Dist: cryptography >=43.0.1
29
+ Requires-Dist: distro ==1.8.0
30
+ Requires-Dist: docx ==0.2.4
31
+ Requires-Dist: filelock ~=3.13.1
32
+ Requires-Dist: frontend
33
+ Requires-Dist: future ~=0.18.3
34
+ Requires-Dist: google-api-python-client
35
+ Requires-Dist: google-cloud-asset ~=3.22
36
+ Requires-Dist: google-cloud-securitycenter ~=1.25
37
+ Requires-Dist: gql ~=3.5.0
38
+ Requires-Dist: inflect
39
+ Requires-Dist: jira ==3.8.0
40
+ Requires-Dist: jwcrypto >=1.5.1
41
+ Requires-Dist: lxml ==5.3.0
42
+ Requires-Dist: markdown
43
+ Requires-Dist: matplotlib
44
+ Requires-Dist: msal ~=1.30.0
45
+ Requires-Dist: nessus-file-reader
46
+ Requires-Dist: numpy >=2.0.0
47
+ Requires-Dist: openpyxl
48
+ Requires-Dist: packaging ~=23.1
49
+ Requires-Dist: pandas
50
+ Requires-Dist: pathlib ~=1.0.1
51
+ Requires-Dist: pdfplumber ==0.7.6
52
+ Requires-Dist: pre-commit
53
+ Requires-Dist: psutil ==5.9.6
54
+ Requires-Dist: pyTenable
55
+ Requires-Dist: pydantic ~=2.9.2
56
+ Requires-Dist: pypandoc
57
+ Requires-Dist: pypandoc-binary
58
+ Requires-Dist: pytest
59
+ Requires-Dist: python-dateutil ~=2.8.2
60
+ Requires-Dist: python-docx
61
+ Requires-Dist: python-jwt ==4.1.0
62
+ Requires-Dist: pyxnat ==1.5.*
63
+ Requires-Dist: rapidfuzz ~=3.7
64
+ Requires-Dist: regscale-python-ssp
65
+ Requires-Dist: requests >=2.31.0
66
+ Requires-Dist: rich ==13.8.0
67
+ Requires-Dist: setuptools
68
+ Requires-Dist: simple-salesforce
69
+ Requires-Dist: smart-open ~=7.0
70
+ Requires-Dist: static
71
+ Requires-Dist: synqly
72
+ Requires-Dist: tools
73
+ Requires-Dist: typing-extensions ~=4.12.2
74
+ Requires-Dist: wheel
75
+ Requires-Dist: xmltodict
76
+ Provides-Extra: airflow
77
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'airflow'
78
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'airflow'
79
+ Requires-Dist: apache-airflow-providers-common-sql ; extra == 'airflow'
80
+ Requires-Dist: apache-airflow-providers-postgres ; extra == 'airflow'
81
+ Requires-Dist: apache-airflow >=2.10.3 ; extra == 'airflow'
82
+ Requires-Dist: beautifulsoup4 ; extra == 'airflow'
83
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'airflow'
84
+ Requires-Dist: botocore ==1.35.10 ; extra == 'airflow'
85
+ Requires-Dist: bs4 ; extra == 'airflow'
86
+ Requires-Dist: cacheout ; extra == 'airflow'
87
+ Requires-Dist: click ==8.1.3 ; extra == 'airflow'
88
+ Requires-Dist: colorama ==0.4.5 ; extra == 'airflow'
89
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'airflow'
90
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'airflow'
91
+ Requires-Dist: distro ==1.8.0 ; extra == 'airflow'
92
+ Requires-Dist: docx ==0.2.4 ; extra == 'airflow'
93
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow'
94
+ Requires-Dist: flask ; extra == 'airflow'
95
+ Requires-Dist: flask-appbuilder ; extra == 'airflow'
96
+ Requires-Dist: frontend ; extra == 'airflow'
97
+ Requires-Dist: future ~=0.18.3 ; extra == 'airflow'
98
+ Requires-Dist: google-api-python-client ; extra == 'airflow'
99
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow'
100
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow'
101
+ Requires-Dist: gql ~=3.5.0 ; extra == 'airflow'
102
+ Requires-Dist: inflect ; extra == 'airflow'
103
+ Requires-Dist: jinja2 ; extra == 'airflow'
104
+ Requires-Dist: jira ==3.8.0 ; extra == 'airflow'
105
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow'
106
+ Requires-Dist: lxml ==5.3.0 ; extra == 'airflow'
107
+ Requires-Dist: markdown ; extra == 'airflow'
108
+ Requires-Dist: matplotlib ; extra == 'airflow'
109
+ Requires-Dist: msal ~=1.30.0 ; extra == 'airflow'
110
+ Requires-Dist: nessus-file-reader ; extra == 'airflow'
111
+ Requires-Dist: networkx ; extra == 'airflow'
112
+ Requires-Dist: numpy >=2.0.0 ; extra == 'airflow'
113
+ Requires-Dist: openpyxl ; extra == 'airflow'
114
+ Requires-Dist: packaging ~=23.1 ; extra == 'airflow'
115
+ Requires-Dist: pandas ; extra == 'airflow'
116
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'airflow'
117
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'airflow'
118
+ Requires-Dist: pre-commit ; extra == 'airflow'
119
+ Requires-Dist: psutil ==5.9.6 ; extra == 'airflow'
120
+ Requires-Dist: psycopg2-binary ; extra == 'airflow'
121
+ Requires-Dist: pyTenable ; extra == 'airflow'
122
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'airflow'
123
+ Requires-Dist: pypandoc ; extra == 'airflow'
124
+ Requires-Dist: pypandoc-binary ; extra == 'airflow'
125
+ Requires-Dist: pytest ; extra == 'airflow'
126
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'airflow'
127
+ Requires-Dist: python-docx ; extra == 'airflow'
128
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow'
129
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow'
130
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'airflow'
131
+ Requires-Dist: regscale-python-ssp ; extra == 'airflow'
132
+ Requires-Dist: requests >=2.31.0 ; extra == 'airflow'
133
+ Requires-Dist: rich ==13.8.0 ; extra == 'airflow'
134
+ Requires-Dist: setuptools ; extra == 'airflow'
135
+ Requires-Dist: simple-salesforce ; extra == 'airflow'
136
+ Requires-Dist: smart-open ~=7.0 ; extra == 'airflow'
137
+ Requires-Dist: static ; extra == 'airflow'
138
+ Requires-Dist: synqly ; extra == 'airflow'
139
+ Requires-Dist: tools ; extra == 'airflow'
140
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'airflow'
141
+ Requires-Dist: wheel ; extra == 'airflow'
142
+ Requires-Dist: xmltodict ; extra == 'airflow'
143
+ Provides-Extra: airflow-azure
144
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'airflow-azure'
145
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'airflow-azure'
146
+ Requires-Dist: apache-airflow-providers-common-sql ; extra == 'airflow-azure'
147
+ Requires-Dist: apache-airflow-providers-microsoft-azure ; extra == 'airflow-azure'
148
+ Requires-Dist: apache-airflow-providers-postgres ; extra == 'airflow-azure'
149
+ Requires-Dist: apache-airflow >=2.10.3 ; extra == 'airflow-azure'
150
+ Requires-Dist: azure-storage-blob ; extra == 'airflow-azure'
151
+ Requires-Dist: beautifulsoup4 ; extra == 'airflow-azure'
152
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'airflow-azure'
153
+ Requires-Dist: botocore ==1.35.10 ; extra == 'airflow-azure'
154
+ Requires-Dist: bs4 ; extra == 'airflow-azure'
155
+ Requires-Dist: cacheout ; extra == 'airflow-azure'
156
+ Requires-Dist: click ==8.1.3 ; extra == 'airflow-azure'
157
+ Requires-Dist: colorama ==0.4.5 ; extra == 'airflow-azure'
158
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'airflow-azure'
159
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'airflow-azure'
160
+ Requires-Dist: distro ==1.8.0 ; extra == 'airflow-azure'
161
+ Requires-Dist: docx ==0.2.4 ; extra == 'airflow-azure'
162
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow-azure'
163
+ Requires-Dist: flask ; extra == 'airflow-azure'
164
+ Requires-Dist: flask-appbuilder ; extra == 'airflow-azure'
165
+ Requires-Dist: frontend ; extra == 'airflow-azure'
166
+ Requires-Dist: future ~=0.18.3 ; extra == 'airflow-azure'
167
+ Requires-Dist: google-api-python-client ; extra == 'airflow-azure'
168
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow-azure'
169
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow-azure'
170
+ Requires-Dist: gql ~=3.5.0 ; extra == 'airflow-azure'
171
+ Requires-Dist: inflect ; extra == 'airflow-azure'
172
+ Requires-Dist: jinja2 ; extra == 'airflow-azure'
173
+ Requires-Dist: jira ==3.8.0 ; extra == 'airflow-azure'
174
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow-azure'
175
+ Requires-Dist: lxml ==5.3.0 ; extra == 'airflow-azure'
176
+ Requires-Dist: markdown ; extra == 'airflow-azure'
177
+ Requires-Dist: matplotlib ; extra == 'airflow-azure'
178
+ Requires-Dist: msal ~=1.30.0 ; extra == 'airflow-azure'
179
+ Requires-Dist: nessus-file-reader ; extra == 'airflow-azure'
180
+ Requires-Dist: networkx ; extra == 'airflow-azure'
181
+ Requires-Dist: numpy >=2.0.0 ; extra == 'airflow-azure'
182
+ Requires-Dist: openpyxl ; extra == 'airflow-azure'
183
+ Requires-Dist: packaging ~=23.1 ; extra == 'airflow-azure'
184
+ Requires-Dist: pandas ; extra == 'airflow-azure'
185
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'airflow-azure'
186
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'airflow-azure'
187
+ Requires-Dist: pendulum ==2.1.2 ; extra == 'airflow-azure'
188
+ Requires-Dist: pre-commit ; extra == 'airflow-azure'
189
+ Requires-Dist: psutil ==5.9.6 ; extra == 'airflow-azure'
190
+ Requires-Dist: psycopg2-binary ; extra == 'airflow-azure'
191
+ Requires-Dist: pyTenable ; extra == 'airflow-azure'
192
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'airflow-azure'
193
+ Requires-Dist: pypandoc ; extra == 'airflow-azure'
194
+ Requires-Dist: pypandoc-binary ; extra == 'airflow-azure'
195
+ Requires-Dist: pytest ; extra == 'airflow-azure'
196
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'airflow-azure'
197
+ Requires-Dist: python-docx ; extra == 'airflow-azure'
198
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow-azure'
199
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow-azure'
200
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'airflow-azure'
201
+ Requires-Dist: regscale-python-ssp ; extra == 'airflow-azure'
202
+ Requires-Dist: requests >=2.31.0 ; extra == 'airflow-azure'
203
+ Requires-Dist: rich ==13.8.0 ; extra == 'airflow-azure'
204
+ Requires-Dist: setuptools ; extra == 'airflow-azure'
205
+ Requires-Dist: simple-salesforce ; extra == 'airflow-azure'
206
+ Requires-Dist: smart-open ~=7.0 ; extra == 'airflow-azure'
207
+ Requires-Dist: static ; extra == 'airflow-azure'
208
+ Requires-Dist: synqly ; extra == 'airflow-azure'
209
+ Requires-Dist: tools ; extra == 'airflow-azure'
210
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'airflow-azure'
211
+ Requires-Dist: wheel ; extra == 'airflow-azure'
212
+ Requires-Dist: xmltodict ; extra == 'airflow-azure'
213
+ Provides-Extra: airflow-sqlserver
214
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'airflow-sqlserver'
215
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'airflow-sqlserver'
216
+ Requires-Dist: apache-airflow-providers-common-sql ; extra == 'airflow-sqlserver'
217
+ Requires-Dist: apache-airflow-providers-microsoft-mssql ; extra == 'airflow-sqlserver'
218
+ Requires-Dist: apache-airflow-providers-postgres ; extra == 'airflow-sqlserver'
219
+ Requires-Dist: apache-airflow >=2.10.3 ; extra == 'airflow-sqlserver'
220
+ Requires-Dist: beautifulsoup4 ; extra == 'airflow-sqlserver'
221
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'airflow-sqlserver'
222
+ Requires-Dist: botocore ==1.35.10 ; extra == 'airflow-sqlserver'
223
+ Requires-Dist: bs4 ; extra == 'airflow-sqlserver'
224
+ Requires-Dist: cacheout ; extra == 'airflow-sqlserver'
225
+ Requires-Dist: click ==8.1.3 ; extra == 'airflow-sqlserver'
226
+ Requires-Dist: colorama ==0.4.5 ; extra == 'airflow-sqlserver'
227
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'airflow-sqlserver'
228
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'airflow-sqlserver'
229
+ Requires-Dist: distro ==1.8.0 ; extra == 'airflow-sqlserver'
230
+ Requires-Dist: docx ==0.2.4 ; extra == 'airflow-sqlserver'
231
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'airflow-sqlserver'
232
+ Requires-Dist: flask ; extra == 'airflow-sqlserver'
233
+ Requires-Dist: flask-appbuilder ; extra == 'airflow-sqlserver'
234
+ Requires-Dist: frontend ; extra == 'airflow-sqlserver'
235
+ Requires-Dist: future ~=0.18.3 ; extra == 'airflow-sqlserver'
236
+ Requires-Dist: google-api-python-client ; extra == 'airflow-sqlserver'
237
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'airflow-sqlserver'
238
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'airflow-sqlserver'
239
+ Requires-Dist: gql ~=3.5.0 ; extra == 'airflow-sqlserver'
240
+ Requires-Dist: inflect ; extra == 'airflow-sqlserver'
241
+ Requires-Dist: jinja2 ; extra == 'airflow-sqlserver'
242
+ Requires-Dist: jira ==3.8.0 ; extra == 'airflow-sqlserver'
243
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'airflow-sqlserver'
244
+ Requires-Dist: lxml ==5.3.0 ; extra == 'airflow-sqlserver'
245
+ Requires-Dist: markdown ; extra == 'airflow-sqlserver'
246
+ Requires-Dist: matplotlib ; extra == 'airflow-sqlserver'
247
+ Requires-Dist: msal ~=1.30.0 ; extra == 'airflow-sqlserver'
248
+ Requires-Dist: nessus-file-reader ; extra == 'airflow-sqlserver'
249
+ Requires-Dist: networkx ; extra == 'airflow-sqlserver'
250
+ Requires-Dist: numpy >=2.0.0 ; extra == 'airflow-sqlserver'
251
+ Requires-Dist: openpyxl ; extra == 'airflow-sqlserver'
252
+ Requires-Dist: packaging ~=23.1 ; extra == 'airflow-sqlserver'
253
+ Requires-Dist: pandas ; extra == 'airflow-sqlserver'
254
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'airflow-sqlserver'
255
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'airflow-sqlserver'
256
+ Requires-Dist: pre-commit ; extra == 'airflow-sqlserver'
257
+ Requires-Dist: psutil ==5.9.6 ; extra == 'airflow-sqlserver'
258
+ Requires-Dist: psycopg2-binary ; extra == 'airflow-sqlserver'
259
+ Requires-Dist: pyTenable ; extra == 'airflow-sqlserver'
260
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'airflow-sqlserver'
261
+ Requires-Dist: pymssql ; extra == 'airflow-sqlserver'
262
+ Requires-Dist: pyodbc ; extra == 'airflow-sqlserver'
263
+ Requires-Dist: pypandoc ; extra == 'airflow-sqlserver'
264
+ Requires-Dist: pypandoc-binary ; extra == 'airflow-sqlserver'
265
+ Requires-Dist: pytest ; extra == 'airflow-sqlserver'
266
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'airflow-sqlserver'
267
+ Requires-Dist: python-docx ; extra == 'airflow-sqlserver'
268
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'airflow-sqlserver'
269
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'airflow-sqlserver'
270
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'airflow-sqlserver'
271
+ Requires-Dist: regscale-python-ssp ; extra == 'airflow-sqlserver'
272
+ Requires-Dist: requests >=2.31.0 ; extra == 'airflow-sqlserver'
273
+ Requires-Dist: rich ==13.8.0 ; extra == 'airflow-sqlserver'
274
+ Requires-Dist: setuptools ; extra == 'airflow-sqlserver'
275
+ Requires-Dist: simple-salesforce ; extra == 'airflow-sqlserver'
276
+ Requires-Dist: smart-open ~=7.0 ; extra == 'airflow-sqlserver'
277
+ Requires-Dist: static ; extra == 'airflow-sqlserver'
278
+ Requires-Dist: synqly ; extra == 'airflow-sqlserver'
279
+ Requires-Dist: tools ; extra == 'airflow-sqlserver'
280
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'airflow-sqlserver'
281
+ Requires-Dist: wheel ; extra == 'airflow-sqlserver'
282
+ Requires-Dist: xmltodict ; extra == 'airflow-sqlserver'
283
+ Provides-Extra: all
284
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'all'
285
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'all'
286
+ Requires-Dist: ansible ; extra == 'all'
287
+ Requires-Dist: apache-airflow-providers-common-sql ; extra == 'all'
288
+ Requires-Dist: apache-airflow-providers-postgres ; extra == 'all'
289
+ Requires-Dist: apache-airflow >=2.10.3 ; extra == 'all'
290
+ Requires-Dist: beautifulsoup4 ; extra == 'all'
291
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'all'
292
+ Requires-Dist: botocore ==1.35.10 ; extra == 'all'
293
+ Requires-Dist: bs4 ; extra == 'all'
294
+ Requires-Dist: cacheout ; extra == 'all'
295
+ Requires-Dist: click ==8.1.3 ; extra == 'all'
296
+ Requires-Dist: colorama ==0.4.5 ; extra == 'all'
297
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'all'
298
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'all'
299
+ Requires-Dist: distro ==1.8.0 ; extra == 'all'
300
+ Requires-Dist: docx ==0.2.4 ; extra == 'all'
301
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'all'
302
+ Requires-Dist: flask ; extra == 'all'
303
+ Requires-Dist: flask-apispec ; extra == 'all'
304
+ Requires-Dist: flask-appbuilder ; extra == 'all'
305
+ Requires-Dist: flask-rebar ; extra == 'all'
306
+ Requires-Dist: flask-restx ; extra == 'all'
307
+ Requires-Dist: frontend ; extra == 'all'
308
+ Requires-Dist: future ~=0.18.3 ; extra == 'all'
309
+ Requires-Dist: google-api-python-client ; extra == 'all'
310
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'all'
311
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'all'
312
+ Requires-Dist: gql ~=3.5.0 ; extra == 'all'
313
+ Requires-Dist: importlib-resources ; extra == 'all'
314
+ Requires-Dist: inflect ; extra == 'all'
315
+ Requires-Dist: jinja2 ; extra == 'all'
316
+ Requires-Dist: jira ==3.8.0 ; extra == 'all'
317
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'all'
318
+ Requires-Dist: lxml ==5.3.0 ; extra == 'all'
319
+ Requires-Dist: markdown ; extra == 'all'
320
+ Requires-Dist: matplotlib ; extra == 'all'
321
+ Requires-Dist: msal ~=1.30.0 ; extra == 'all'
322
+ Requires-Dist: nessus-file-reader ; extra == 'all'
323
+ Requires-Dist: networkx ; extra == 'all'
324
+ Requires-Dist: numpy >=2.0.0 ; extra == 'all'
325
+ Requires-Dist: openpyxl ; extra == 'all'
326
+ Requires-Dist: packaging ~=23.1 ; extra == 'all'
327
+ Requires-Dist: pandas ; extra == 'all'
328
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'all'
329
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'all'
330
+ Requires-Dist: pre-commit ; extra == 'all'
331
+ Requires-Dist: psutil ==5.9.6 ; extra == 'all'
332
+ Requires-Dist: psycopg2-binary ; extra == 'all'
333
+ Requires-Dist: pyTenable ; extra == 'all'
334
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'all'
335
+ Requires-Dist: pypandoc ; extra == 'all'
336
+ Requires-Dist: pypandoc-binary ; extra == 'all'
337
+ Requires-Dist: pytest ; extra == 'all'
338
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'all'
339
+ Requires-Dist: python-docx ; extra == 'all'
340
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'all'
341
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'all'
342
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'all'
343
+ Requires-Dist: regscale-python-ssp ; extra == 'all'
344
+ Requires-Dist: requests >=2.31.0 ; extra == 'all'
345
+ Requires-Dist: rich ==13.8.0 ; extra == 'all'
346
+ Requires-Dist: setuptools ; extra == 'all'
347
+ Requires-Dist: simple-salesforce ; extra == 'all'
348
+ Requires-Dist: smart-open ~=7.0 ; extra == 'all'
349
+ Requires-Dist: static ; extra == 'all'
350
+ Requires-Dist: synqly ; extra == 'all'
351
+ Requires-Dist: tools ; extra == 'all'
352
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'all'
353
+ Requires-Dist: werkzeug >=2.3.8 ; extra == 'all'
354
+ Requires-Dist: wheel ; extra == 'all'
355
+ Requires-Dist: xmltodict ; extra == 'all'
356
+ Provides-Extra: ansible
357
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'ansible'
358
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'ansible'
359
+ Requires-Dist: ansible ; extra == 'ansible'
360
+ Requires-Dist: beautifulsoup4 ; extra == 'ansible'
361
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'ansible'
362
+ Requires-Dist: botocore ==1.35.10 ; extra == 'ansible'
363
+ Requires-Dist: bs4 ; extra == 'ansible'
364
+ Requires-Dist: cacheout ; extra == 'ansible'
365
+ Requires-Dist: click ==8.1.3 ; extra == 'ansible'
366
+ Requires-Dist: colorama ==0.4.5 ; extra == 'ansible'
367
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'ansible'
368
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'ansible'
369
+ Requires-Dist: distro ==1.8.0 ; extra == 'ansible'
370
+ Requires-Dist: docx ==0.2.4 ; extra == 'ansible'
371
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'ansible'
372
+ Requires-Dist: frontend ; extra == 'ansible'
373
+ Requires-Dist: future ~=0.18.3 ; extra == 'ansible'
374
+ Requires-Dist: google-api-python-client ; extra == 'ansible'
375
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'ansible'
376
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'ansible'
377
+ Requires-Dist: gql ~=3.5.0 ; extra == 'ansible'
378
+ Requires-Dist: inflect ; extra == 'ansible'
379
+ Requires-Dist: jinja2 ; extra == 'ansible'
380
+ Requires-Dist: jira ==3.8.0 ; extra == 'ansible'
381
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'ansible'
382
+ Requires-Dist: lxml ==5.3.0 ; extra == 'ansible'
383
+ Requires-Dist: markdown ; extra == 'ansible'
384
+ Requires-Dist: matplotlib ; extra == 'ansible'
385
+ Requires-Dist: msal ~=1.30.0 ; extra == 'ansible'
386
+ Requires-Dist: nessus-file-reader ; extra == 'ansible'
387
+ Requires-Dist: numpy >=2.0.0 ; extra == 'ansible'
388
+ Requires-Dist: openpyxl ; extra == 'ansible'
389
+ Requires-Dist: packaging ~=23.1 ; extra == 'ansible'
390
+ Requires-Dist: pandas ; extra == 'ansible'
391
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'ansible'
392
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'ansible'
393
+ Requires-Dist: pre-commit ; extra == 'ansible'
394
+ Requires-Dist: psutil ==5.9.6 ; extra == 'ansible'
395
+ Requires-Dist: pyTenable ; extra == 'ansible'
396
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'ansible'
397
+ Requires-Dist: pypandoc ; extra == 'ansible'
398
+ Requires-Dist: pypandoc-binary ; extra == 'ansible'
399
+ Requires-Dist: pytest ; extra == 'ansible'
400
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'ansible'
401
+ Requires-Dist: python-docx ; extra == 'ansible'
402
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'ansible'
403
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'ansible'
404
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'ansible'
405
+ Requires-Dist: regscale-python-ssp ; extra == 'ansible'
406
+ Requires-Dist: requests >=2.31.0 ; extra == 'ansible'
407
+ Requires-Dist: rich ==13.8.0 ; extra == 'ansible'
408
+ Requires-Dist: setuptools ; extra == 'ansible'
409
+ Requires-Dist: simple-salesforce ; extra == 'ansible'
410
+ Requires-Dist: smart-open ~=7.0 ; extra == 'ansible'
411
+ Requires-Dist: static ; extra == 'ansible'
412
+ Requires-Dist: synqly ; extra == 'ansible'
413
+ Requires-Dist: tools ; extra == 'ansible'
414
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'ansible'
415
+ Requires-Dist: wheel ; extra == 'ansible'
416
+ Requires-Dist: xmltodict ; extra == 'ansible'
417
+ Provides-Extra: dev
418
+ Requires-Dist: GitPython ; extra == 'dev'
419
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'dev'
420
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'dev'
421
+ Requires-Dist: beautifulsoup4 ; extra == 'dev'
422
+ Requires-Dist: black ; extra == 'dev'
423
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'dev'
424
+ Requires-Dist: botocore ==1.35.10 ; extra == 'dev'
425
+ Requires-Dist: bs4 ; extra == 'dev'
426
+ Requires-Dist: cacheout ; extra == 'dev'
427
+ Requires-Dist: click ==8.1.3 ; extra == 'dev'
428
+ Requires-Dist: colorama ==0.4.5 ; extra == 'dev'
429
+ Requires-Dist: coveralls ; extra == 'dev'
430
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'dev'
431
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'dev'
432
+ Requires-Dist: darglint ; extra == 'dev'
433
+ Requires-Dist: distro ==1.8.0 ; extra == 'dev'
434
+ Requires-Dist: docx ==0.2.4 ; extra == 'dev'
435
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'dev'
436
+ Requires-Dist: flake8 ; extra == 'dev'
437
+ Requires-Dist: freezegun ; extra == 'dev'
438
+ Requires-Dist: frontend ; extra == 'dev'
439
+ Requires-Dist: future ~=0.18.3 ; extra == 'dev'
440
+ Requires-Dist: google-api-python-client ; extra == 'dev'
441
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'dev'
442
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'dev'
443
+ Requires-Dist: gql ~=3.5.0 ; extra == 'dev'
444
+ Requires-Dist: inflect ; extra == 'dev'
445
+ Requires-Dist: isort ; extra == 'dev'
446
+ Requires-Dist: jira ==3.8.0 ; extra == 'dev'
447
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'dev'
448
+ Requires-Dist: lxml-stubs ; extra == 'dev'
449
+ Requires-Dist: lxml ==5.3.0 ; extra == 'dev'
450
+ Requires-Dist: markdown ; extra == 'dev'
451
+ Requires-Dist: matplotlib ; extra == 'dev'
452
+ Requires-Dist: moto ; extra == 'dev'
453
+ Requires-Dist: msal ~=1.30.0 ; extra == 'dev'
454
+ Requires-Dist: mypy ; extra == 'dev'
455
+ Requires-Dist: nessus-file-reader ; extra == 'dev'
456
+ Requires-Dist: numpy >=2.0.0 ; extra == 'dev'
457
+ Requires-Dist: openpyxl ; extra == 'dev'
458
+ Requires-Dist: packaging ~=23.1 ; extra == 'dev'
459
+ Requires-Dist: pandas ; extra == 'dev'
460
+ Requires-Dist: pandas-stubs ; extra == 'dev'
461
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'dev'
462
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'dev'
463
+ Requires-Dist: pipenv ; extra == 'dev'
464
+ Requires-Dist: pre-commit ; extra == 'dev'
465
+ Requires-Dist: psutil ==5.9.6 ; extra == 'dev'
466
+ Requires-Dist: pyTenable ; extra == 'dev'
467
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'dev'
468
+ Requires-Dist: pylint ; extra == 'dev'
469
+ Requires-Dist: pypandoc ; extra == 'dev'
470
+ Requires-Dist: pypandoc-binary ; extra == 'dev'
471
+ Requires-Dist: pytest ; extra == 'dev'
472
+ Requires-Dist: pytest-cov ; extra == 'dev'
473
+ Requires-Dist: pytest-html ; extra == 'dev'
474
+ Requires-Dist: pytest-mock ; extra == 'dev'
475
+ Requires-Dist: pytest-rerunfailures ; extra == 'dev'
476
+ Requires-Dist: pytest-timeout ; extra == 'dev'
477
+ Requires-Dist: pytest-xdist ; extra == 'dev'
478
+ Requires-Dist: pytest >=5 ; extra == 'dev'
479
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'dev'
480
+ Requires-Dist: python-docx ; extra == 'dev'
481
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'dev'
482
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'dev'
483
+ Requires-Dist: radon ; extra == 'dev'
484
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'dev'
485
+ Requires-Dist: regscale-python-ssp ; extra == 'dev'
486
+ Requires-Dist: requests >=2.31.0 ; extra == 'dev'
487
+ Requires-Dist: rich ==13.8.0 ; extra == 'dev'
488
+ Requires-Dist: setuptools ; extra == 'dev'
489
+ Requires-Dist: simple-salesforce ; extra == 'dev'
490
+ Requires-Dist: smart-open ~=7.0 ; extra == 'dev'
491
+ Requires-Dist: sphinx ; extra == 'dev'
492
+ Requires-Dist: sphinx-autodoc-typehints ; extra == 'dev'
493
+ Requires-Dist: sphinx-click ; extra == 'dev'
494
+ Requires-Dist: static ; extra == 'dev'
495
+ Requires-Dist: synqly ; extra == 'dev'
496
+ Requires-Dist: tools ; extra == 'dev'
497
+ Requires-Dist: types-python-dateutil ; extra == 'dev'
498
+ Requires-Dist: types-pyyaml ; extra == 'dev'
499
+ Requires-Dist: types-requests ; extra == 'dev'
500
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'dev'
501
+ Requires-Dist: watchdog ; extra == 'dev'
502
+ Requires-Dist: wheel ; extra == 'dev'
503
+ Requires-Dist: xmltodict ; extra == 'dev'
504
+ Provides-Extra: server
505
+ Requires-Dist: PyMuPDF >=1.24.7 ; extra == 'server'
506
+ Requires-Dist: PyYAML ==6.0.1 ; extra == 'server'
507
+ Requires-Dist: beautifulsoup4 ; extra == 'server'
508
+ Requires-Dist: boto3 ==1.35.10 ; extra == 'server'
509
+ Requires-Dist: botocore ==1.35.10 ; extra == 'server'
510
+ Requires-Dist: bs4 ; extra == 'server'
511
+ Requires-Dist: cacheout ; extra == 'server'
512
+ Requires-Dist: click ==8.1.3 ; extra == 'server'
513
+ Requires-Dist: colorama ==0.4.5 ; extra == 'server'
514
+ Requires-Dist: crowdstrike-falconpy ==1.4.5 ; extra == 'server'
515
+ Requires-Dist: cryptography >=43.0.1 ; extra == 'server'
516
+ Requires-Dist: distro ==1.8.0 ; extra == 'server'
517
+ Requires-Dist: docx ==0.2.4 ; extra == 'server'
518
+ Requires-Dist: filelock ~=3.13.1 ; extra == 'server'
519
+ Requires-Dist: flask ; extra == 'server'
520
+ Requires-Dist: flask-apispec ; extra == 'server'
521
+ Requires-Dist: flask-appbuilder ; extra == 'server'
522
+ Requires-Dist: flask-rebar ; extra == 'server'
523
+ Requires-Dist: flask-restx ; extra == 'server'
524
+ Requires-Dist: frontend ; extra == 'server'
525
+ Requires-Dist: future ~=0.18.3 ; extra == 'server'
526
+ Requires-Dist: google-api-python-client ; extra == 'server'
527
+ Requires-Dist: google-cloud-asset ~=3.22 ; extra == 'server'
528
+ Requires-Dist: google-cloud-securitycenter ~=1.25 ; extra == 'server'
529
+ Requires-Dist: gql ~=3.5.0 ; extra == 'server'
530
+ Requires-Dist: importlib-resources ; extra == 'server'
531
+ Requires-Dist: inflect ; extra == 'server'
532
+ Requires-Dist: jira ==3.8.0 ; extra == 'server'
533
+ Requires-Dist: jwcrypto >=1.5.1 ; extra == 'server'
534
+ Requires-Dist: lxml ==5.3.0 ; extra == 'server'
535
+ Requires-Dist: markdown ; extra == 'server'
536
+ Requires-Dist: matplotlib ; extra == 'server'
537
+ Requires-Dist: msal ~=1.30.0 ; extra == 'server'
538
+ Requires-Dist: nessus-file-reader ; extra == 'server'
539
+ Requires-Dist: numpy >=2.0.0 ; extra == 'server'
540
+ Requires-Dist: openpyxl ; extra == 'server'
541
+ Requires-Dist: packaging ~=23.1 ; extra == 'server'
542
+ Requires-Dist: pandas ; extra == 'server'
543
+ Requires-Dist: pathlib ~=1.0.1 ; extra == 'server'
544
+ Requires-Dist: pdfplumber ==0.7.6 ; extra == 'server'
545
+ Requires-Dist: pre-commit ; extra == 'server'
546
+ Requires-Dist: psutil ==5.9.6 ; extra == 'server'
547
+ Requires-Dist: pyTenable ; extra == 'server'
548
+ Requires-Dist: pydantic ~=2.9.2 ; extra == 'server'
549
+ Requires-Dist: pypandoc ; extra == 'server'
550
+ Requires-Dist: pypandoc-binary ; extra == 'server'
551
+ Requires-Dist: pytest ; extra == 'server'
552
+ Requires-Dist: python-dateutil ~=2.8.2 ; extra == 'server'
553
+ Requires-Dist: python-docx ; extra == 'server'
554
+ Requires-Dist: python-jwt ==4.1.0 ; extra == 'server'
555
+ Requires-Dist: pyxnat ==1.5.* ; extra == 'server'
556
+ Requires-Dist: rapidfuzz ~=3.7 ; extra == 'server'
557
+ Requires-Dist: regscale-python-ssp ; extra == 'server'
558
+ Requires-Dist: requests >=2.31.0 ; extra == 'server'
559
+ Requires-Dist: rich ==13.8.0 ; extra == 'server'
560
+ Requires-Dist: setuptools ; extra == 'server'
561
+ Requires-Dist: simple-salesforce ; extra == 'server'
562
+ Requires-Dist: smart-open ~=7.0 ; extra == 'server'
563
+ Requires-Dist: static ; extra == 'server'
564
+ Requires-Dist: synqly ; extra == 'server'
565
+ Requires-Dist: tools ; extra == 'server'
566
+ Requires-Dist: typing-extensions ~=4.12.2 ; extra == 'server'
567
+ Requires-Dist: werkzeug >=2.3.8 ; extra == 'server'
568
+ Requires-Dist: wheel ; extra == 'server'
569
+ Requires-Dist: xmltodict ; extra == 'server'
570
+
571
+ # RegScale Command Line Interface (CLI)
572
+
573
+ This CLI application is for supporting advanced automation and bulk data processing related to the [RegScale Compliance Automation Platform](https://www.regscale.com). This application is intended to run as a "side car" that be scheduled via CRON job or serverless function to perform sophisticated data processing. The CLI includes multiple libraries for processing data, connecting to RegScale Application Programming Interfaces (APIs), and commercial integrations. This software may be packaged and included in other commercial software to lower the level of effort associated with building RegScale integrations to other commercial tools.
574
+
575
+ See [full documentation on regscale.readme.io](https://regscale.readme.io/docs/overview).
576
+
577
+
578
+ ## Installation
579
+
580
+ Create a virtual environment and install required Python libraries.
581
+
582
+ ### Shell
583
+ ```shell
584
+ # create and activate python virtual environment
585
+ python -m venv venv
586
+
587
+ # initialize environment
588
+ source venv/bin/activate
589
+
590
+ # upgrade pip
591
+ pip install --upgrade pip
592
+
593
+ # install RegScale CLI
594
+ pip install regscale-cli
595
+
596
+ # optional: install application with "server" packages
597
+ pip install "regscale-cli[server]"
598
+ ```
599
+
600
+ ### PowerShell
601
+ ```PowerShell
602
+ # create and activate python virtual environment
603
+ python -m venv venv
604
+
605
+ # initialize environment
606
+ .\venv\Scripts\Activate.ps1
607
+
608
+ # upgrade pip
609
+ pip install --upgrade pip
610
+
611
+ # install RegScale CLI
612
+ pip install regscale-cli
613
+
614
+ # optional: install application with "server" packages
615
+ pip install "regscale-cli[server]"
616
+ ```
617
+
618
+ ## Initialization
619
+
620
+ Initialize your CLI environment with the `init` command:
621
+
622
+ ```shell
623
+ # initialize RegScale CLI environment
624
+ regscale init
625
+ ```
626
+
627
+ The CLI will generate a default init.yaml file and prompt you for RegScale domain and to log in:
628
+
629
+ ```shell
630
+ Initializing your RegScale CLI environment...
631
+ Would you like to change your RegScale domain from https://regscale.yourcompany.com/? (Y/n): y
632
+
633
+ Please enter your RegScale domain.
634
+ Example: https://mydomain.regscale.com/
635
+ Domain: https://regscale.mycomapny.com
636
+ [2023/01/20 04:32;41] INFO [2023/01/20 04:32;41] [INFO ] Valid URL provided, regscale.py:349
637
+ init.yaml has been updated.
638
+ Would you like to log in to your RegScale instance? (Y/n): y
639
+ Please enter your username: rross
640
+ Please enter your password:
641
+ ```
642
+
643
+ ## Leaving the Virtual Environment
644
+
645
+ When you are done working with the CLI, you can leave the virtual environment with the `deactivate` command. This will return you to your system's default Python environment and this will work on PowerShell or shell.
646
+
647
+
648
+ ## Use Cases
649
+
650
+ - Sidecar for bulk processing compliance data such as vulnerability scans or continuous monitoring logs
651
+ - Processing and ingest of data such as National Institute of Standards and Technology (NIST) Open Security Control Assessment Language (OSCAL)
652
+ - Running CRON jobs to bulk-process data
653
+ - Managing users and identities from external sources
654
+ - Threat intelligence feeds
655
+
656
+ ## Specific Integrations
657
+
658
+ - See the [RegScale Documentation](https://regscale.readme.io/docs/overview) for details.
659
+