codeaudit 1.9.1__tar.gz → 1.9.2__tar.gz

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.
Files changed (273) hide show
  1. {codeaudit-1.9.1 → codeaudit-1.9.2}/CHANGELOG.md +4 -0
  2. {codeaudit-1.9.1 → codeaudit-1.9.2}/PKG-INFO +1 -1
  3. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/codeauditcommands.md +1 -1
  4. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/ca_api_example_scanning.ipynb +35 -29
  5. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/codeauditchecks.html +1 -1
  6. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/demoscan.json +2 -2
  7. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/__about__.py +1 -1
  8. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/pypi_package_scan.py +29 -5
  9. codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_191.html +299 -0
  10. codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_191.js +91 -0
  11. codeaudit-1.9.2/src/dashboard/pyodide/deployed/dashboardapp.html +299 -0
  12. codeaudit-1.9.2/src/dashboard/pyodide/deployed/dashboardapp.js +91 -0
  13. codeaudit-1.9.1/src/dashboard/pyodide/deployed/dashboardapp.html +0 -295
  14. codeaudit-1.9.1/src/dashboard/pyodide/deployed/dashboardapp.js +0 -91
  15. {codeaudit-1.9.1 → codeaudit-1.9.2}/.github/workflows/python-test.yml +0 -0
  16. {codeaudit-1.9.1 → codeaudit-1.9.2}/.github/workflows/sast_validation.yml +0 -0
  17. {codeaudit-1.9.1 → codeaudit-1.9.2}/.gitignore +0 -0
  18. {codeaudit-1.9.1 → codeaudit-1.9.2}/CONTRIBUTE.md +0 -0
  19. {codeaudit-1.9.1 → codeaudit-1.9.2}/LICENSE.txt +0 -0
  20. {codeaudit-1.9.1 → codeaudit-1.9.2}/README.md +0 -0
  21. {codeaudit-1.9.1 → codeaudit-1.9.2}/SECURITY.md +0 -0
  22. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/.gitignore +0 -0
  23. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/class_index.html +0 -0
  24. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/coverage_html_cb_dd2e7eb5.js +0 -0
  25. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/favicon_32_cb_c827f16f.png +0 -0
  26. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/function_index.html +0 -0
  27. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/index.html +0 -0
  28. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/keybd_closed_cb_900cfef5.png +0 -0
  29. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/status.json +0 -0
  30. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/style_cb_9ff733b0.css +0 -0
  31. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8___about___py.html +0 -0
  32. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8___init___py.html +0 -0
  33. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_altairplots_py.html +0 -0
  34. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_api_helpers_py.html +0 -0
  35. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_api_interfaces_py.html +0 -0
  36. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_api_reporting_py.html +0 -0
  37. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_checkmodules_py.html +0 -0
  38. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_codeaudit_dashboard_py.html +0 -0
  39. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_codeaudit_py.html +0 -0
  40. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_complexitycheck_py.html +0 -0
  41. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_dashboard_reports_py.html +0 -0
  42. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_filehelpfunctions_py.html +0 -0
  43. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_htmlhelpfunctions_py.html +0 -0
  44. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_issuevalidations_py.html +0 -0
  45. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_privacy_lint_py.html +0 -0
  46. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_pypi_package_scan_py.html +0 -0
  47. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_reporting_py.html +0 -0
  48. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_security_checks_py.html +0 -0
  49. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_suppression_py.html +0 -0
  50. {codeaudit-1.9.1 → codeaudit-1.9.2}/cov_html/z_15dab3f49bf85fa8_totals_py.html +0 -0
  51. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/CLIcommands.ipynb +0 -0
  52. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/CONTRIBUTE.md +0 -0
  53. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/_config.yml +0 -0
  54. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/_static/nocxstyle.css +0 -0
  55. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/_toc.yml +0 -0
  56. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/about.md +0 -0
  57. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/apidocs/api_intro.md +0 -0
  58. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/apidocs/codeaudit.rst +0 -0
  59. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/apidocs/modules.rst +0 -0
  60. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/architecture.md +0 -0
  61. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/changelog.md +0 -0
  62. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/assert_check.md +0 -0
  63. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/base64_check.md +0 -0
  64. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/binding_check.md +0 -0
  65. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/builtinfunctions_check.md +0 -0
  66. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/chmod_check.md +0 -0
  67. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/directorycreation_check.md +0 -0
  68. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/dynamicimport_check.md +0 -0
  69. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/exception_check.md +0 -0
  70. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/ftp_check.md +0 -0
  71. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/hash_check.md +0 -0
  72. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/httpserver_check.md +0 -0
  73. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/input_check.md +0 -0
  74. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/loggingconf_check.md +0 -0
  75. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/marshal_check.md +0 -0
  76. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/mktemp_check.md +0 -0
  77. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/multiprocessing_check.md +0 -0
  78. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/pickle_check.md +0 -0
  79. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/random_check.md +0 -0
  80. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/shelve_check.md +0 -0
  81. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/shutil_check.md +0 -0
  82. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/subprocess_check.md +0 -0
  83. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/syscalls_check.md +0 -0
  84. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/systemcalls_check.md +0 -0
  85. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/tarfile_extract_check.md +0 -0
  86. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/xml_check.md +0 -0
  87. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checks/zipfile_check.md +0 -0
  88. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/checksinformation.md +0 -0
  89. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/cimode.md +0 -0
  90. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/codeauditchecks.md +0 -0
  91. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/codeauditoverview.md +0 -0
  92. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/complexitycheck.md +0 -0
  93. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/data_egress_implementation.md +0 -0
  94. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/data_exfiltration_detection.md +0 -0
  95. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/ca_api_example_basic.ipynb +0 -0
  96. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/ca_api_example_checks.ipynb +0 -0
  97. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/ca_api_example_json.ipynb +0 -0
  98. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/ca_api_example_overview.ipynb +0 -0
  99. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/ca_checks.ipynb +0 -0
  100. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/demofile.py +0 -0
  101. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/directoryscan.html +0 -0
  102. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/example_risk_heatmap.ipynb +0 -0
  103. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/example_weakness_perfile_view.ipynb +0 -0
  104. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/filescan.html +0 -0
  105. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/modulescan.html +0 -0
  106. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/examples/overview.html +0 -0
  107. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/features.md +0 -0
  108. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/filescan.md +0 -0
  109. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/filescan.png +0 -0
  110. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/handling_errors.md +0 -0
  111. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/help.md +0 -0
  112. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/howtoscan.md +0 -0
  113. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/OO.png +0 -0
  114. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/ROI_logo.png +0 -0
  115. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/YourLogoHere.png +0 -0
  116. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/ai_use.png +0 -0
  117. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/architecture_overview.png +0 -0
  118. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/codeauditlogo.png +0 -0
  119. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/filescan_screenshot_16012026.png +0 -0
  120. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/modulescan_screenshot_16012026.png +0 -0
  121. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/nocxbanner.png +0 -0
  122. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/overview_linkaudit.png +0 -0
  123. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/images/overview_screenshot_16012026.png +0 -0
  124. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/implementedvalidations.md +0 -0
  125. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/installation.md +0 -0
  126. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/intro.md +0 -0
  127. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/issues.md +0 -0
  128. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/license.md +0 -0
  129. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/makeitbetter.md +0 -0
  130. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/markingissues.md +0 -0
  131. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/modulescan.md +0 -0
  132. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/overviewplot.png +0 -0
  133. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/pca_overview.png +0 -0
  134. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/project_philosophy.md +0 -0
  135. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/sponsors.md +0 -0
  136. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/userguide.md +0 -0
  137. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/warnings.md +0 -0
  138. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/whatissast.md +0 -0
  139. {codeaudit-1.9.1 → codeaudit-1.9.2}/docs/whysast.md +0 -0
  140. {codeaudit-1.9.1 → codeaudit-1.9.2}/filescan.png +0 -0
  141. {codeaudit-1.9.1 → codeaudit-1.9.2}/pyproject.toml +0 -0
  142. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/__init__.py +0 -0
  143. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/altairplots.py +0 -0
  144. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/api_helpers.py +0 -0
  145. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/api_interfaces.py +0 -0
  146. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/api_reporting.py +0 -0
  147. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/checkmodules.py +0 -0
  148. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/ci_workflowscan.py +0 -0
  149. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/complexitycheck.py +0 -0
  150. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/corecli.py +0 -0
  151. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/dashboard_reports.py +0 -0
  152. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/data/sastchecks.csv +0 -0
  153. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/data/secretslist.txt +0 -0
  154. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/filehelpfunctions.py +0 -0
  155. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/htmlhelpfunctions.py +0 -0
  156. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/issuevalidations.py +0 -0
  157. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/privacy_lint.py +0 -0
  158. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/reporting.py +0 -0
  159. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/security_checks.py +0 -0
  160. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/simple.css +0 -0
  161. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/suppression.py +0 -0
  162. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/codeaudit/totals.py +0 -0
  163. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/__init__.py +0 -0
  164. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/dashboardapp.py +0 -0
  165. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/module_load_validation.html +0 -0
  166. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/module_load_validation2.html +0 -0
  167. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_171.html +0 -0
  168. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_171.js +0 -0
  169. /codeaudit-1.9.1/src/dashboard/pyodide/dashboardapp.html → /codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_190.html +0 -0
  170. /codeaudit-1.9.1/src/dashboard/pyodide/dashboardapp.js → /codeaudit-1.9.2/src/dashboard/pyodide/dashboardapp_190.js +0 -0
  171. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version162.html +0 -0
  172. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version162.js +0 -0
  173. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version166.html +0 -0
  174. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/dashboardapp_version166.js +0 -0
  175. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_171.html +0 -0
  176. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_171.js +0 -0
  177. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_180.html +0 -0
  178. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/pyodide/deployed/dashboardapp_180.js +0 -0
  179. {codeaudit-1.9.1 → codeaudit-1.9.2}/src/dashboard/requirements.txt +0 -0
  180. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/__init__.py +0 -0
  181. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/count_lines_file1.py +0 -0
  182. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/clean.py +0 -0
  183. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/elastic.py +0 -0
  184. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/example1.py +0 -0
  185. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/klyne.py +0 -0
  186. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/mixed.py +0 -0
  187. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/telemetry.py +0 -0
  188. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/spytestdir/telemetryfile2.py +0 -0
  189. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/suppression/sastsuppression_0.py +0 -0
  190. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/suppression/sastsuppression_1.py +0 -0
  191. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/suppression/sastsuppression_2.py +0 -0
  192. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_apicalls.py +0 -0
  193. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_apicalls2.py +0 -0
  194. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_base64.py +0 -0
  195. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_basicpatterns.py +0 -0
  196. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_chmod.py +0 -0
  197. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_constructspart2.py +0 -0
  198. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_correctexceptionuse.py +0 -0
  199. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_count_commentlines.py +0 -0
  200. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_directorycreation.py +0 -0
  201. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_directorycreation2.py +0 -0
  202. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_dynamic_import.py +0 -0
  203. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_edgecases.py +0 -0
  204. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_filescan_api.py +0 -0
  205. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_ftp.py +0 -0
  206. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_hashstrenght.py +0 -0
  207. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_importlib_util.py +0 -0
  208. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_modulecheck.py +0 -0
  209. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_obfuscatingbuiltins.py +0 -0
  210. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_oschecks.py +0 -0
  211. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_pylintreport.py +0 -0
  212. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_pypiscan.py +0 -0
  213. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_random.py +0 -0
  214. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_secretfinding.py +0 -0
  215. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_standardlibconstructs.py +0 -0
  216. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_subprocess.py +0 -0
  217. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_suppression.py +0 -0
  218. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_suppressionlogic.py +0 -0
  219. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_totalscheck.py +0 -0
  220. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_valid_python.py +0 -0
  221. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_wasmsafe_funtions.py +0 -0
  222. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/test_zstd.py +0 -0
  223. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/unit_tests/__init__.py +0 -0
  224. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/unit_tests/test_clean_import_list.py +0 -0
  225. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/unit_tests/test_collectsourcefiles.py +0 -0
  226. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/unit_tests/test_count_weaknesses.py +0 -0
  227. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/unit_tests/test_filehelpfunctions.py +0 -0
  228. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/unit_tests/test_readinsourcefile.py +0 -0
  229. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/allshit.py +0 -0
  230. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/apivalidations.py +0 -0
  231. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/assert.py +0 -0
  232. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/base64.py +0 -0
  233. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/chmod_things.py +0 -0
  234. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/codeaudit_scan.json +0 -0
  235. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/complexitycheck.py +0 -0
  236. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/correctcounts.py +0 -0
  237. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/danger_imports.py +0 -0
  238. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/directorycreation.py +0 -0
  239. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/directorycreation2.py +0 -0
  240. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/dunderexec_with_parsing_error.py +0 -0
  241. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/eval.py +0 -0
  242. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/eval2.py +0 -0
  243. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/exception.py +0 -0
  244. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/file3.py +0 -0
  245. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/file_with_warnings.py +0 -0
  246. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/ftp.py +0 -0
  247. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/gzip.py +0 -0
  248. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/hashcheck.py +0 -0
  249. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/httpserver.py +0 -0
  250. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/incorrect_python_file.py +0 -0
  251. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/inputstatement.py +0 -0
  252. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/linkaudit-0.9.9.tar.gz +0 -0
  253. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/malware.py +0 -0
  254. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/malwareAI.py +0 -0
  255. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/marshal.py +0 -0
  256. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/modulecheck.py +0 -0
  257. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/multiprocessing.py +0 -0
  258. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/obfuscating.py +0 -0
  259. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/oschecks.py +0 -0
  260. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/pickle.py +0 -0
  261. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/python2_file_willnotwork.py +0 -0
  262. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/random.py +0 -0
  263. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/shelve.py +0 -0
  264. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/shutil.py +0 -0
  265. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/subprocess.py +0 -0
  266. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/syslibrary.py +0 -0
  267. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/tarfilevalidation.py +0 -0
  268. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/tempcheck.py +0 -0
  269. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/validation1.py +0 -0
  270. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/validation2.py +0 -0
  271. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/xml.py +0 -0
  272. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/zipfile.py +0 -0
  273. {codeaudit-1.9.1 → codeaudit-1.9.2}/tests/validationfiles/zstd.py +0 -0
@@ -1,5 +1,9 @@
1
1
  # Change Log
2
2
 
3
+ ## Version 1.9.2:
4
+
5
+ * Fixed issue for API scan
6
+
3
7
  ## Version 1.9.1:
4
8
 
5
9
  **Added**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codeaudit
3
- Version: 1.9.1
3
+ Version: 1.9.2
4
4
  Summary: A modern Python security source code analyzer (SAST) based on distrust.
5
5
  Project-URL: Homepage, https://codeaudit.nocomplexity.com
6
6
  Project-URL: Documentation, https://github.com/nocomplexity/codeaudit#readme
@@ -1,6 +1,6 @@
1
1
  % THIS FILE IS GENERATED! - Use CLIcommands.ipynb to make it better!
2
2
  # Commands Overview
3
- Python Code Audit commands for: version: 1.9.1
3
+ Python Code Audit commands for: version: 1.9.2
4
4
  ```
5
5
  ----------------------------------------------------
6
6
  _ __ _
@@ -33,7 +33,15 @@
33
33
  "execution_count": 3,
34
34
  "id": "bbcc805d-0f4d-49fc-a0f5-3ad863fe6da8",
35
35
  "metadata": {},
36
- "outputs": [],
36
+ "outputs": [
37
+ {
38
+ "name": "stdout",
39
+ "output_type": "stream",
40
+ "text": [
41
+ "Exception: FileAudit Security Validation Failed - Only .py files are accepted (got extension ''): linkaudit\n"
42
+ ]
43
+ }
44
+ ],
37
45
  "source": [
38
46
  "result = filescan(packagename) # linkaudit is a package that is present on PyPI.org"
39
47
  ]
@@ -48,18 +56,20 @@
48
56
  "data": {
49
57
  "text/plain": [
50
58
  "{'name': 'Python_Code_Audit',\n",
51
- " 'version': '1.6.2',\n",
52
- " 'generated_on': '2026-04-10 16:09',\n",
59
+ " 'version': '1.9.1',\n",
60
+ " 'generated_on': '2026-10-09 19:26',\n",
53
61
  " 'package_name': 'linkaudit',\n",
54
- " 'package_release': '0.9.8',\n",
62
+ " 'package_release': '0.9.10',\n",
63
+ " 'update_date': '2026-10-08',\n",
64
+ " 'days_since_last_update': 1,\n",
55
65
  " 'statistics_overview': {'Number_Of_Files': 6,\n",
56
- " 'Number_Of_Lines': 523,\n",
57
- " 'AST_Nodes': 225,\n",
66
+ " 'Number_Of_Lines': 527,\n",
67
+ " 'AST_Nodes': 222,\n",
58
68
  " 'Core Modules': 6,\n",
59
- " 'External Modules': 3,\n",
69
+ " 'External Modules': 1,\n",
60
70
  " 'Functions': 16,\n",
61
71
  " 'Classes': 0,\n",
62
- " 'Comment_Lines': 194,\n",
72
+ " 'Comment_Lines': 189,\n",
63
73
  " 'Median_Complexity': 9.3,\n",
64
74
  " 'Maximum_Complexity': 26},\n",
65
75
  " 'module_overview': {'core_modules': ['asyncio',\n",
@@ -68,9 +78,9 @@
68
78
  " 'sys',\n",
69
79
  " 'urllib.error',\n",
70
80
  " 'urllib.request'],\n",
71
- " 'imported_modules': ['_version', 'fire', 'linkaudit']},\n",
81
+ " 'imported_modules': ['fire']},\n",
72
82
  " 'file_security_info': {0: {'FileName': '__init__.py',\n",
73
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/__init__.py',\n",
83
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/__init__.py',\n",
74
84
  " 'Number_Of_Lines': 10,\n",
75
85
  " 'AST_Nodes': 2,\n",
76
86
  " 'Std-Modules': 0,\n",
@@ -85,14 +95,14 @@
85
95
  " 'file_name': '__init__.py',\n",
86
96
  " 'sast_result': {}},\n",
87
97
  " 1: {'FileName': 'html_result.py',\n",
88
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/html_result.py',\n",
89
- " 'Number_Of_Lines': 83,\n",
90
- " 'AST_Nodes': 28,\n",
98
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/html_result.py',\n",
99
+ " 'Number_Of_Lines': 84,\n",
100
+ " 'AST_Nodes': 29,\n",
91
101
  " 'Std-Modules': 1,\n",
92
102
  " 'External-Modules': 0,\n",
93
103
  " 'Functions': 2,\n",
94
104
  " 'Classes': 0,\n",
95
- " 'Comment_Lines': 46,\n",
105
+ " 'Comment_Lines': 50,\n",
96
106
  " 'Complexity_Score': 6,\n",
97
107
  " 'warnings': 0,\n",
98
108
  " 'core_modules': ['os'],\n",
@@ -100,14 +110,14 @@
100
110
  " 'file_name': 'html_result.py',\n",
101
111
  " 'sast_result': {}},\n",
102
112
  " 2: {'FileName': 'markdownhelpers.py',\n",
103
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/markdownhelpers.py',\n",
104
- " 'Number_Of_Lines': 128,\n",
113
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/markdownhelpers.py',\n",
114
+ " 'Number_Of_Lines': 129,\n",
105
115
  " 'AST_Nodes': 50,\n",
106
116
  " 'Std-Modules': 2,\n",
107
117
  " 'External-Modules': 0,\n",
108
118
  " 'Functions': 4,\n",
109
119
  " 'Classes': 0,\n",
110
- " 'Comment_Lines': 37,\n",
120
+ " 'Comment_Lines': 38,\n",
111
121
  " 'Complexity_Score': 20,\n",
112
122
  " 'warnings': 0,\n",
113
123
  " 'core_modules': ['os', 're'],\n",
@@ -115,26 +125,22 @@
115
125
  " 'file_name': 'markdownhelpers.py',\n",
116
126
  " 'sast_result': {}},\n",
117
127
  " 3: {'FileName': 'linkaudit.py',\n",
118
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/linkaudit.py',\n",
119
- " 'Number_Of_Lines': 271,\n",
120
- " 'AST_Nodes': 135,\n",
128
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/linkaudit.py',\n",
129
+ " 'Number_Of_Lines': 273,\n",
130
+ " 'AST_Nodes': 131,\n",
121
131
  " 'Std-Modules': 5,\n",
122
132
  " 'External-Modules': 2,\n",
123
133
  " 'Functions': 9,\n",
124
134
  " 'Classes': 0,\n",
125
- " 'Comment_Lines': 84,\n",
135
+ " 'Comment_Lines': 74,\n",
126
136
  " 'Complexity_Score': 26,\n",
127
137
  " 'warnings': 0,\n",
128
138
  " 'core_modules': ['asyncio', 'os', 'sys', 'urllib.error', 'urllib.request'],\n",
129
139
  " 'imported_modules': ['fire', 'linkaudit'],\n",
130
140
  " 'file_name': 'linkaudit.py',\n",
131
- " 'sast_result': {171: {'line': 171,\n",
132
- " 'validation': 'input',\n",
133
- " 'severity': 'Low',\n",
134
- " 'info': 'User input must be strictly sanitized and validated to prevent injection vulnerabilities.',\n",
135
- " 'code': \"<pre><code class='language-python'> files_tocheck = markdownhelpers.collect_markdown_files(bookdirectory)\\n result_output = input(&quot;HTML output [H] (=Default) or TXT output [T]? )&quot;)\\n txtoutput = &quot;# Result of Link Audit for markdown files (URL checker) \\\\n\\\\n&quot;</code></pre>\"}}},\n",
141
+ " 'sast_result': {}},\n",
136
142
  " 4: {'FileName': '_version.py',\n",
137
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/_version.py',\n",
143
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/_version.py',\n",
138
144
  " 'Number_Of_Lines': 1,\n",
139
145
  " 'AST_Nodes': 1,\n",
140
146
  " 'Std-Modules': 0,\n",
@@ -149,7 +155,7 @@
149
155
  " 'file_name': '_version.py',\n",
150
156
  " 'sast_result': {}},\n",
151
157
  " 5: {'FileName': 'nocxhelpers.py',\n",
152
- " 'FilePath': '/tmp/codeaudit_sviyoehh/linkaudit-0.9.8/src/linkaudit/nocxhelpers.py',\n",
158
+ " 'FilePath': '/tmp/codeaudit_aftxsa3p/linkaudit-0.9.10/src/linkaudit/nocxhelpers.py',\n",
153
159
  " 'Number_Of_Lines': 30,\n",
154
160
  " 'AST_Nodes': 9,\n",
155
161
  " 'Std-Modules': 0,\n",
@@ -191,7 +197,7 @@
191
197
  "name": "python",
192
198
  "nbconvert_exporter": "python",
193
199
  "pygments_lexer": "ipython3",
194
- "version": "3.14.3"
200
+ "version": "3.14.7"
195
201
  }
196
202
  },
197
203
  "nbformat": 4,
@@ -774,4 +774,4 @@ footer {
774
774
  <td>Vulnerable to path traversal attacks if used with untrusted archives.</td>
775
775
  </tr>
776
776
  </tbody>
777
- </table><br><p>Number of implemented security validations:<b>89</b></p><p>Version of codeaudit: <b>1.9.1</b><p>Because Python and cybersecurity are constantly changing, issue reports <b>SHOULD</b> specify the codeaudit version used.</p><p><b>Disclaimer:</b> <i>This SAST tool <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> provides a powerful, automatic security analysis for Python source code. However, it's not a substitute for human review in combination with business knowledge. Undetected vulnerabilities may still exist.</i></p><p>This Python security report was created on: <b>2026-10-09 11:58</b> with <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> version <b>1.9.1</b></p><hr><footer><div class="footer-links">Check the <a href="https://nocomplexity.com/documents/codeaudit/intro.html" target="_blank">documentation</a> for help on found issues.<br>Codeaudit is made with <span class="heart">&#10084;</span> by cyber security professionals who advocate for <a href="https://nocomplexity.com/simplify-security/" target="_blank">open simple security solutions</a>.<br><a href="https://nocomplexity.com/documents/codeaudit/CONTRIBUTE.html" target="_blank">Join the community</a> and contribute to make this tool better!</div></footer></div></body></html>
777
+ </table><br><p>Number of implemented security validations:<b>89</b></p><p>Version of codeaudit: <b>1.9.2</b><p>Because Python and cybersecurity are constantly changing, issue reports <b>SHOULD</b> specify the codeaudit version used.</p><p><b>Disclaimer:</b> <i>This SAST tool <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> provides a powerful, automatic security analysis for Python source code. However, it's not a substitute for human review in combination with business knowledge. Undetected vulnerabilities may still exist.</i></p><p>This Python security report was created on: <b>2026-10-09 19:31</b> with <a href="https://github.com/nocomplexity/codeaudit" target="_blank"><b>Python Code Audit</b></a> version <b>1.9.2</b></p><hr><footer><div class="footer-links">Check the <a href="https://nocomplexity.com/documents/codeaudit/intro.html" target="_blank">documentation</a> for help on found issues.<br>Codeaudit is made with <span class="heart">&#10084;</span> by cyber security professionals who advocate for <a href="https://nocomplexity.com/simplify-security/" target="_blank">open simple security solutions</a>.<br><a href="https://nocomplexity.com/documents/codeaudit/CONTRIBUTE.html" target="_blank">Join the community</a> and contribute to make this tool better!</div></footer></div></body></html>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "Python_Code_Audit",
3
- "version": "1.9.1",
4
- "generated_on": "2026-10-09 11:58",
3
+ "version": "1.9.2",
4
+ "generated_on": "2026-10-09 19:31",
5
5
  "file_security_info": {
6
6
  "0": {
7
7
  "FileName": "demofile.py",
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Maikel Mardjan
2
2
  #
3
3
  # SPDX-License-Identifier: GPL-3.0-or-later
4
- __version__ = "1.9.1"
4
+ __version__ = "1.9.2"
@@ -14,6 +14,7 @@ Public API functions for Python Code Audit aka codeaudit on pypi.org
14
14
  """
15
15
 
16
16
  import gzip
17
+ import os
17
18
  import json
18
19
  import tarfile
19
20
  import tempfile
@@ -84,12 +85,35 @@ def get_pypi_download_info(package_name):
84
85
 
85
86
 
86
87
  def is_valid_tar_gz(path):
87
- """Return True if the given path is a valid .tar.gz file.
88
- Custom validation values for validate_tar_gz are used. So note that NOT all tar.gz files will be accepted. Use PyPI package scan instead if possible.
88
+ """Return True only if the path points to a valid .tar.gz archive.
89
+
90
+ Archives must pass custom validation limits:
91
+ - Maximum file size: 15 MiB
92
+ - Maximum number of tar members: 12,000
89
93
  """
90
- return bool(
91
- validate_tar_gz(path, max_file_size=15 * 1024 * 1024, max_tar_members=12000)
92
- )
94
+ try:
95
+ path = os.fspath(path)
96
+
97
+ return (
98
+ path.endswith(".tar.gz")
99
+ and validate_tar_gz(
100
+ path,
101
+ max_file_size=15 * 1024 * 1024,
102
+ max_tar_members=12000,
103
+ )
104
+ and tarfile.is_tarfile(path)
105
+ )
106
+ except (OSError, ValueError, TypeError, AttributeError, tarfile.TarError):
107
+ return False
108
+
109
+
110
+ # def is_valid_tar_gz(path):
111
+ # """Return True if the given path is a valid .tar.gz file.
112
+ # Custom validation values for validate_tar_gz are used. So note that NOT all tar.gz files will be accepted. Use PyPI package scan instead if possible.
113
+ # """
114
+ # return bool(
115
+ # validate_tar_gz(path, max_file_size=15 * 1024 * 1024, max_tar_members=12000)
116
+ # )
93
117
 
94
118
 
95
119
  def get_targz_package_source(
@@ -0,0 +1,299 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en" >
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <title>Python Security Code Audit</title>
6
+ <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.holoviz.org/panel/1.9.4/dist/images/apple-touch-icon.png"> <link rel="icon" href="./favicon.ico" type="">
7
+ <meta name="name" content="Python Security Code Audit">
8
+ <style>
9
+ html, body {
10
+ display: flow-root;
11
+ box-sizing: border-box;
12
+ height: 100%;
13
+ margin: 0;
14
+ padding: 0;
15
+ }
16
+ </style>
17
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" type="text/css" />
18
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" type="text/css" />
19
+
20
+ <style type="text/css">
21
+
22
+ :host(.pn-loading):before, .pn-loading:before {
23
+ background-color: #c3c3c3;
24
+ width: calc(min(40px, 300px));
25
+ height: calc(min(40px, 300px));
26
+ mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));
27
+ -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));
28
+ }
29
+ </style><script type="esms-options">{"shimMode": true}</script>
30
+
31
+ <script type="text/javascript" src="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/reactiveesm/es-module-shims@^1.10.0/dist/es-module-shims.min.js"></script>
32
+ <script type="text/javascript" src="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/vegaplot/vega@6.1.2"></script>
33
+ <script type="text/javascript" src="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/vegaplot/vega-lite@6.3.0"></script>
34
+ <script type="text/javascript" src="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/vegaplot/vega-embed@7.0.2"></script>
35
+ <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-3.8.2.min.js"></script>
36
+ <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.8.2.min.js"></script>
37
+ <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.8.2.min.js"></script>
38
+ <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.8.2.min.js"></script>
39
+ <script type="text/javascript" src="https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.8.2.min.js"></script>
40
+ <script type="text/javascript" src="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/material-components-web@7.0.0/dist/material-components-web.min.js"></script>
41
+ <script type="text/javascript" src="https://cdn.holoviz.org/panel/1.9.4/dist/panel.min.js"></script>
42
+
43
+ <script type="text/javascript">
44
+ Bokeh.set_log_level("info");
45
+ </script> <!-- Template CSS -->
46
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/css/loadingspinner.css">
47
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/css/listpanel.css">
48
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/css/markdown.css">
49
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/css/button.css">
50
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/css/loading.css?v=1.9.4">
51
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/material-components-web@7.0.0/dist/material-components-web.min.css">
52
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500">
53
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons&display=block">
54
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/theme/default.css?v=1.9.4">
55
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/theme/material_variables.css?v=1.9.4">
56
+ <link rel="stylesheet" href="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/materialtemplate/material.css?v=1.9.4">
57
+
58
+ <style>
59
+ :root {
60
+ --header-background: #1E2937;
61
+ --header-color: var(--design-primary-text-color, var(--panel-on-primary-color));
62
+ --sidebar-width: 370px;
63
+ }
64
+ #header {
65
+ --mdc-theme-background: var(--header-background);
66
+ --mdc-theme-on-background: var(--header-color);
67
+ --design-background-text-color: var(--header-color);
68
+ --design-background-color: var(--header-background);
69
+ background-color: var(--header-background);
70
+ color: var(--header-color);
71
+ }
72
+ .mdc-drawer {
73
+ width: var(--sidebar-width) !important;
74
+ }
75
+ .mdc-drawer.mdc-drawer--open:not(.mdc-drawer--closing)+.mdc-drawer-app-content {
76
+ margin-left: var(--sidebar-width) !important;
77
+ }
78
+ </style>
79
+
80
+ <style type="text/css">
81
+
82
+ :host(.pn-loading):before, .pn-loading:before {
83
+ background-color: #c3c3c3;
84
+ width: calc(min(40px, 300px));
85
+ height: calc(min(40px, 300px));
86
+ mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));
87
+ -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));
88
+ }
89
+ </style>
90
+
91
+ <!-- Template JS -->
92
+ <script src="https://cdn.holoviz.org/panel/1.9.4/dist/bundled/material-components-web@7.0.0/dist/material-components-web.min.js"></script>
93
+
94
+ </head>
95
+ <body class="pn-loading pn-arc">
96
+ <div class="mdc-typography" id="container">
97
+ <header class="mdc-top-app-bar app-bar mdc-top-app-bar--fixed" id="header">
98
+ <div class="mdc-top-app-bar__row">
99
+ <section class="mdc-top-app-bar__section mdc-top-app-bar__section--align-start">
100
+ <button class="material-icons mdc-top-app-bar__navigation-icon mdc-icon-button">menu</button>
101
+ <div class="title-bar">
102
+ <span class="mdc-top-app-bar__title app-header">
103
+ <a class="title" href="" >&nbsp;Python Security Code Audit</a> </span>
104
+ <div id="header-items">
105
+ </div>
106
+ </div>
107
+ </section>
108
+ <div class="pn-busy-container">
109
+ <div id="adf8e806-bc3d-4130-a693-5bfd34759f40" data-root-id="p1022" style="display: contents;"></div>
110
+ </div>
111
+ </div>
112
+ </header>
113
+
114
+ <aside class="mdc-drawer mdc-top-app-bar--fixed-adjust mdc-drawer--dismissible mdc-drawer--open" id="sidebar">
115
+ <div class="mdc-drawer__content">
116
+ <div class="mdc-list">
117
+ <div id="ea2f94ea-6831-4955-ac8f-cba21c1ddb60" data-root-id="p1037" style="display: contents;"></div>
118
+ </div>
119
+ </div>
120
+ </aside>
121
+
122
+ <div class="mdc-drawer-app-content mdc-top-app-bar--fixed-adjust">
123
+ <main class="main-content" id="main">
124
+ <div id="def00b21-fb92-44a0-905a-d2232d0e068f" data-root-id="p1023" style="display: contents;"></div>
125
+ </main>
126
+
127
+ <div id="pn-Modal" class="mdc-dialog">
128
+ <div class="mdc-dialog__container">
129
+ <div class="mdc-dialog__surface" role="alertdialog" aria-modal="true">
130
+ <div class="mdc-dialog__content" id="my-dialog-content">
131
+ </div>
132
+ </div>
133
+ </div>
134
+ </div>
135
+ </div>
136
+
137
+ <script type="text/javascript">
138
+ var drawer = mdc.drawer.MDCDrawer.attachTo(document.querySelector('.mdc-drawer'));
139
+ var topAppBar = mdc.topAppBar.MDCTopAppBar.attachTo(document.getElementById('header'));
140
+ topAppBar.setScrollTarget(document.getElementById('main'));
141
+ topAppBar.listen('MDCTopAppBar:nav', function() {
142
+ drawer.open = !drawer.open;
143
+ });
144
+
145
+ var modal_el = document.getElementById("pn-Modal");
146
+ var modal = new mdc.dialog.MDCDialog(modal_el);
147
+
148
+ window.onclick = function(event) {
149
+ if (event.target == modal_el) {
150
+ modal.close();
151
+ }
152
+ }
153
+ </script>
154
+
155
+ <div id="fc7f3ae4-51fc-41c9-98a4-2c0c66f43d8f" data-root-id="p1017" style="display: contents;"></div>
156
+ <div id="a4476893-e1d0-4849-a2e2-5fbf9a66a90e" data-root-id="p1019" style="display: contents;"></div>
157
+ <div id="de0d9311-3828-4ca2-a897-4f807e57f224" data-root-id="p1011" style="display: contents;"></div>
158
+ <div id="a1e9ce65-66a1-4847-973c-61c5c6dfe293" data-root-id="p1020" style="display: contents;"></div>
159
+
160
+ </div>
161
+
162
+ <script type="text/javascript">
163
+ const pyodideWorker = new Worker("./dashboardapp.js");
164
+ pyodideWorker.busy = false
165
+ pyodideWorker.queue = []
166
+
167
+ let patching = 0
168
+
169
+ function send_change(jsdoc, event) {
170
+ if ((event.setter_id != null && event.setter_id == 'py') || (patching > 0)) {
171
+ return
172
+ } else if (pyodideWorker.busy && event.model && event.attr) {
173
+ let events = []
174
+ for (const old_event of pyodideWorker.queue) {
175
+ if (!(old_event.model === event.model && old_event.attr === event.attr)) {
176
+ events.push(old_event)
177
+ }
178
+ }
179
+ events.push(event)
180
+ pyodideWorker.queue = events
181
+ return
182
+ }
183
+ const patch = jsdoc.create_json_patch([event])
184
+ pyodideWorker.busy = true
185
+ pyodideWorker.postMessage({type: 'patch', patch: patch})
186
+ }
187
+
188
+ pyodideWorker.onmessage = async (event) => {
189
+ const msg = event.data
190
+
191
+ const body = document.getElementsByTagName('body')[0]
192
+ const loading_msgs = document.getElementsByClassName('pn-loading-msg')
193
+ if (msg.type === 'idle') {
194
+ if (pyodideWorker.queue.length) {
195
+ const patch = pyodideWorker.jsdoc.create_json_patch(pyodideWorker.queue)
196
+ pyodideWorker.busy = true
197
+ pyodideWorker.queue = []
198
+ pyodideWorker.postMessage({type: 'patch', patch: patch})
199
+ } else {
200
+ pyodideWorker.busy = false
201
+ }
202
+ } else if (msg.type === 'status') {
203
+ let loading_msg
204
+ if (loading_msgs.length) {
205
+ loading_msg = loading_msgs[0]
206
+ } else if (body.classList.contains('pn-loading')) {
207
+ loading_msg = document.createElement('div')
208
+ loading_msg.classList.add('pn-loading-msg')
209
+ body.appendChild(loading_msg)
210
+ }
211
+ if (loading_msg != null) {
212
+ loading_msg.innerHTML = msg.msg
213
+ }
214
+ } else if (msg.type === 'render') {
215
+ const docs_json = JSON.parse(msg.docs_json)
216
+ const render_items = JSON.parse(msg.render_items)
217
+ const root_ids = JSON.parse(msg.root_ids)
218
+
219
+ // Remap roots in message to element IDs
220
+ const root_els = document.querySelectorAll('[data-root-id]')
221
+ const data_roots = []
222
+ for (const el of root_els) {
223
+ el.innerHTML = ''
224
+ data_roots.push([el.getAttribute('data-root-id'), el.id])
225
+ }
226
+ data_roots.sort((a, b) => a[0]<b[0] ? -1: 1)
227
+ const roots = {}
228
+ for (let i=0; i<data_roots.length; i++) {
229
+ roots[root_ids[i]] = data_roots[i][1]
230
+ }
231
+ render_items[0]['roots'] = roots
232
+ render_items[0]['root_ids'] = root_ids
233
+
234
+ // Clear pre-rendered contents
235
+ Bokeh.index.roots.map((v) => v.remove())
236
+
237
+ // Embed content
238
+ const [views] = await Bokeh.embed.embed_items(docs_json, render_items)
239
+
240
+ // Remove loading spinner and message
241
+ body.classList.remove("pn-loading", "arc")
242
+ for (const loading_msg of loading_msgs) {
243
+ loading_msg.remove()
244
+ }
245
+
246
+ // Setup bi-directional syncing
247
+ pyodideWorker.jsdoc = jsdoc = [...views.roots.values()][0].model.document
248
+ jsdoc.on_change(send_change.bind(null, jsdoc), false)
249
+ pyodideWorker.postMessage({'type': 'rendered'})
250
+ pyodideWorker.postMessage({'type': 'location', location: JSON.stringify(window.location)})
251
+ } else if (msg.type === 'patch') {
252
+ try {
253
+ patching += 1
254
+ pyodideWorker.jsdoc.apply_json_patch(msg.patch, msg.buffers)
255
+ } finally {
256
+ patching -= 1
257
+ }
258
+ }
259
+ };
260
+ </script>
261
+ <script type="application/json" id="p1059">
262
+ {"20bdc984-08ff-4334-a69b-5117e3920067":{"version":"3.8.2","title":"Python Security Code Audit","config":{"type":"object","name":"DocumentConfig","id":"p1009","attributes":{"reconnect_session":false,"notify_connection_status":false,"notifications":null}},"roots":[{"type":"object","name":"panel.models.location.Location","id":"p1011","attributes":{"name":"location","reload":false}},{"type":"object","name":"panel.models.markup.HTML","id":"p1017","attributes":{"name":"js_area","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"type":"object","name":"ImportedStyleSheet","id":"p1015","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.4/dist/css/loading.css"}},{"type":"object","name":"ImportedStyleSheet","id":"p1058","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.4/dist/bundled/theme/material.css"}}],"width":0,"height":0,"margin":0,"sizing_mode":"fixed","align":"start","disable_math":true}},{"type":"object","name":"panel.models.reactive_html.ReactiveHTML","id":"p1019","attributes":{"name":"actions","subscribed_events":{"type":"set","entries":["dom_event"]},"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"margin":0,"align":"start","data":{"type":"object","name":"MaterialTemplateActions1","id":"p1018","attributes":{"name":"MaterialTemplateActions00151","tags":["__ref:p1019"]}},"scripts":{"type":"map","entries":[["open_modal",["modal.open();\nsetTimeout(function() {{\n window.dispatchEvent(new Event(&amp;#x27;resize&amp;#x27;));\n}}, 200);"]],["close_modal",["modal.close()"]]]}}},{"type":"object","name":"panel.models.browser.BrowserInfo","id":"p1020","attributes":{"name":"browser_info"}},{"type":"object","name":"panel.models.markup.HTML","id":"p1022","attributes":{"name":"busy_indicator","css_classes":["loader","light"],"stylesheets":[":host { --loading-spinner-size: 20px; }","\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"type":"object","name":"ImportedStyleSheet","id":"p1021","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.4/dist/css/loadingspinner.css"}},{"id":"p1058"}],"min_width":20,"min_height":20,"margin":[5,10],"align":"start","text":"&amp;lt;span&amp;gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;"}},{"type":"object","name":"panel.models.layout.Column","id":"p1023","attributes":{"name":"main-132733648307616","tags":["main"],"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"type":"object","name":"ImportedStyleSheet","id":"p1016","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.4/dist/css/listpanel.css"}},{"id":"p1058"}],"min_width":0,"min_height":0,"margin":0,"sizing_mode":"stretch_both","align":"start","children":[{"type":"object","name":"panel.models.tabs.Tabs","id":"p1024","attributes":{"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"min_width":0,"min_height":0,"margin":0,"sizing_mode":"stretch_both","align":"start","tabs":[{"type":"object","name":"TabPanel","id":"p1026","attributes":{"name":"Column00126","title":"Package Overview","child":{"type":"object","name":"panel.models.layout.Column","id":"p1025","attributes":{"name":"Column00126","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1016"},{"id":"p1058"}],"margin":0,"align":"start"}}}},{"type":"object","name":"TabPanel","id":"p1028","attributes":{"name":"Column00127","title":"Used Modules","child":{"type":"object","name":"Spacer","id":"p1027","attributes":{"tags":["hidden"],"margin":0,"align":"start"}}}},{"type":"object","name":"TabPanel","id":"p1030","attributes":{"name":"Column00128","title":"Complexity Insights","child":{"type":"object","name":"Spacer","id":"p1029","attributes":{"tags":["hidden"],"margin":0,"align":"start"}}}},{"type":"object","name":"TabPanel","id":"p1032","attributes":{"name":"Column00129","title":"Weaknesses Overview","child":{"type":"object","name":"Spacer","id":"p1031","attributes":{"tags":["hidden"],"margin":0,"align":"start"}}}},{"type":"object","name":"TabPanel","id":"p1034","attributes":{"name":"Column00130","title":"Weaknesses per file","child":{"type":"object","name":"Spacer","id":"p1033","attributes":{"tags":["hidden"],"margin":0,"align":"start"}}}},{"type":"object","name":"TabPanel","id":"p1036","attributes":{"name":"Column00131","title":"Weaknesses Details","child":{"type":"object","name":"Spacer","id":"p1035","attributes":{"tags":["hidden"],"margin":0,"align":"start"}}}}]}}]}},{"type":"object","name":"panel.models.layout.Column","id":"p1037","attributes":{"name":"nav-132733648307072","tags":["nav"],"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1016"},{"id":"p1058"}],"min_width":300,"margin":0,"sizing_mode":"stretch_width","align":"start","children":[{"type":"object","name":"panel.models.markup.HTML","id":"p1039","attributes":{"css_classes":["markdown"],"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"type":"object","name":"ImportedStyleSheet","id":"p1038","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.4/dist/css/markdown.css"}},{"id":"p1058"}],"margin":[5,10],"align":"start","text":"&amp;lt;h2 id=&amp;quot;package-code-security-scan&amp;quot;&amp;gt;Package Code Security Scan &amp;lt;a class=&amp;quot;header-anchor&amp;quot; href=&amp;quot;#package-code-security-scan&amp;quot;&amp;gt;\u00b6&amp;lt;/a&amp;gt;&amp;lt;/h2&amp;gt;\n"}},{"type":"object","name":"panel.models.widgets.TextInput","id":"p1040","attributes":{"subscribed_events":{"type":"set","entries":["enter-pressed"]},"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"width":300,"min_width":300,"margin":[5,10],"align":"start","title":"Python Package Name","placeholder":"Enter PyPI package (e.g., requests)...","max_length":5000}},{"type":"object","name":"Row","id":"p1041","attributes":{"name":"Row00137","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1016"},{"id":"p1058"}],"margin":0,"align":"start","children":[{"type":"object","name":"panel.models.widgets.Button","id":"p1043","attributes":{"button_type":"primary","subscribed_events":{"type":"set","entries":["button_click"]},"css_classes":["solid"],"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"type":"object","name":"ImportedStyleSheet","id":"p1042","attributes":{"url":"https://cdn.holoviz.org/panel/1.9.4/dist/css/button.css"}},{"id":"p1058"}],"margin":[5,10],"align":"start","label":"Start Scan"}},{"type":"object","name":"Row","id":"p1044","attributes":{"name":"Row00119","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1016"},{"id":"p1058"}],"margin":0,"align":"center","children":[{"type":"object","name":"Switch","id":"p1045","attributes":{"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"margin":[5,10],"align":"center","active":true,"label":"Honor SAST suppressions"}},{"type":"object","name":"panel.models.widgets.TooltipIcon","id":"p1048","attributes":{"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"margin":[5,10],"align":"center","description":{"type":"object","name":"Tooltip","id":"p1047","attributes":{"syncable":false,"stylesheets":[":host { white-space: initial; max-width: 300px; }"],"position":"right","content":{"type":"object","name":"bokeh.models.dom.HTML","id":"p1046","attributes":{"html":["&lt;p&gt;Disable security markers in the code during the scan&lt;/p&gt;\n"]}}}}}}]}}]}},{"type":"object","name":"panel.models.markup.HTML","id":"p1050","attributes":{"css_classes":["loader","light"],"stylesheets":[":host { --loading-spinner-size: 60px; }","\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1021"},{"id":"p1058"}],"min_width":60,"min_height":60,"margin":[5,10],"align":"start","text":"&amp;lt;span&amp;gt;&amp;lt;b&amp;gt;Scanning...&amp;lt;/b&amp;gt;&amp;lt;/span&amp;gt;"}},{"type":"object","name":"panel.models.markup.HTML","id":"p1051","attributes":{"css_classes":["markdown"],"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1038"},{"id":"p1058"}],"margin":[5,10],"align":"start","text":"&amp;lt;h3&amp;gt;Ready to scan.&amp;lt;/h3&amp;gt;\n"}},{"type":"object","name":"Spacer","id":"p1052","attributes":{"name":"Spacer00138","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"height":20,"min_height":20,"margin":0,"align":"start"}},{"type":"object","name":"panel.models.markup.HTML","id":"p1053","attributes":{"styles":{"type":"map","entries":[["background","linear-gradient(135deg, #F0FDF4, #ECFDF5)"],["padding","18px"],["min-width","200px"],["font-size","15px"],["color","#1F2937"],["border","1px solid #D1FAE5"],["border-left","4px solid #10B981"],["border-radius","12px"],["box-shadow","0 2px 6px rgba(0, 0, 0, 0.05)"]]},"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"},"\n .bk-panel {\n background: transparent !important;\n }\n "],"min_width":0,"margin":[5,10],"sizing_mode":"stretch_width","align":"start","text":"\n &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Python Code Audit&amp;lt;/b&amp;gt; is a Static Application Security Testing (SAST) tool used to find security weaknesses in Python code.&amp;lt;/p&amp;gt;\n &amp;lt;p&amp;gt;Use the CLI version for powerful command-line scanning with many more options.&amp;lt;p&amp;gt;\n &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;This tool runs entirely in your browser. No data is ever sent to a server. No analytics. No telemetry. Ever.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;\n &amp;lt;br&amp;gt;&amp;lt;br&amp;gt; \n &amp;lt;a href=&amp;quot;https://nocomplexity.com/documents/codeaudit/intro.html&amp;quot;\n target=&amp;quot;_blank&amp;quot;\n style=&amp;quot;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background-color: #24292f;\n color: white;\n text-decoration: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 15px;\n transition: all 0.2s ease;\n width: 200px;\n &amp;quot;&amp;gt;Documentation\n &amp;lt;/a&amp;gt;\n &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;\n &amp;lt;a href=&amp;quot;https://github.com/nocomplexity/codeaudit&amp;quot;\n target=&amp;quot;_blank&amp;quot;\n style=&amp;quot;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n padding: 10px 18px;\n background-color: #24292f;\n color: white;\n text-decoration: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 15px;\n transition: all 0.2s ease;\n width: 200px;\n &amp;quot;&amp;gt;\n &amp;lt;svg xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; fill=&amp;quot;currentColor&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot;&amp;gt;\n &amp;lt;path d=&amp;quot;M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.66-1.455-3.66-1.455-.495-1.26-1.2-1.59-1.2-1.59-.975-.66.075-.645.075-.645 1.08.075 1.65 1.11 1.65 1.11 0.96 1.635 2.505 1.17 3.12.885.09-.69.375-1.17.675-1.44-2.55-.285-5.22-1.275-5.22-5.67 0-1.26.45-2.28 1.185-3.09-.12-.285-.51-1.425.105-2.97 0 0 .975-.315 3.195 1.185.93-.255 1.92-.375 2.91-.375s1.98.12 2.91.375c2.22-1.5 3.195-1.185 3.195-1.185.615 1.545.225 2.685.105 2.97.735.81 1.185 1.83 1.185 3.09 0 4.41-2.67 5.385-5.22 5.67.405.345.765 1.02.765 2.07 0 1.5-.015 2.715-.015 3.09 0 .315.225.69.825.57C20.565 21.795 24 17.31 24 12c0-6.63-5.37-12-12-12z&amp;quot;/&amp;gt;\n &amp;lt;/svg&amp;gt;\n GitHub\n &amp;lt;/a&amp;gt;\n \n ","disable_math":true}},{"type":"object","name":"Spacer","id":"p1054","attributes":{"name":"Spacer00139","stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"height":10,"min_height":10,"margin":0,"align":"start"}},{"type":"object","name":"panel.models.markup.HTML","id":"p1055","attributes":{"stylesheets":["\n:host(.pn-loading):before, .pn-loading:before {\n background-color: #c3c3c3;\n width: calc(min(40px, 300px));\n height: calc(min(40px, 300px));\n mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n -webkit-mask-size: calc(min(40px, 300px)) calc(min(40px, 300px));\n}",{"id":"p1015"},{"id":"p1058"}],"margin":[5,10],"align":"start","text":"&amp;lt;br&amp;gt;&amp;lt;b&amp;gt;Disclaimer:&amp;lt;/b&amp;gt; This scan only evaluates Python files. Security weaknesses can also exist in other files used by a Python package.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;This SAST tool &amp;lt;a href=&amp;quot;https://github.com/nocomplexity/codeaudit&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Python Code Audit&amp;lt;/a&amp;gt; provides a powerful, automatic security analysis for Python source code. However, it&amp;#x27;s not a substitute for human review in combination with business knowledge. Undetected vulnerabilities may still exist.&amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;&amp;lt;a href=&amp;quot;https://nocomplexity.com/documents/codeaudit/intro.html&amp;quot;&amp;gt;Python Code Audit&amp;lt;/a&amp;gt;&amp;lt;/strong&amp;gt; Dashboard - version 1.9.1&amp;lt;/p&amp;gt;","disable_math":true}}]}}],"defs":[{"type":"model","name":"ReactiveHTML1"},{"type":"model","name":"FlexBox1","properties":[{"name":"align_content","kind":"Any","default":"flex-start"},{"name":"align_items","kind":"Any","default":"flex-start"},{"name":"flex_direction","kind":"Any","default":"row"},{"name":"flex_wrap","kind":"Any","default":"wrap"},{"name":"gap","kind":"Any","default":""},{"name":"justify_content","kind":"Any","default":"flex-start"}]},{"type":"model","name":"FloatPanel1","properties":[{"name":"config","kind":"Any","default":{"type":"map"}},{"name":"contained","kind":"Any","default":true},{"name":"position","kind":"Any","default":"right-top"},{"name":"offsetx","kind":"Any","default":null},{"name":"offsety","kind":"Any","default":null},{"name":"theme","kind":"Any","default":"primary"},{"name":"status","kind":"Any","default":"normalized"}]},{"type":"model","name":"GridStack1","properties":[{"name":"ncols","kind":"Any","default":null},{"name":"nrows","kind":"Any","default":null},{"name":"allow_resize","kind":"Any","default":true},{"name":"allow_drag","kind":"Any","default":true},{"name":"state","kind":"Any","default":[]}]},{"type":"model","name":"drag1","properties":[{"name":"slider_width","kind":"Any","default":5},{"name":"slider_color","kind":"Any","default":"black"},{"name":"start","kind":"Any","default":0},{"name":"end","kind":"Any","default":100},{"name":"value","kind":"Any","default":50}]},{"type":"model","name":"click1","properties":[{"name":"terminal_output","kind":"Any","default":""},{"name":"debug_name","kind":"Any","default":""},{"name":"clears","kind":"Any","default":0}]},{"type":"model","name":"ReactiveESM1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"JSComponent1","properties":[{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"ReactComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"AnyWidgetComponent1","properties":[{"name":"use_shadow_dom","kind":"Any","default":true},{"name":"esm_constants","kind":"Any","default":{"type":"map"}}]},{"type":"model","name":"FastWrapper1","properties":[{"name":"object","kind":"Any","default":null},{"name":"style","kind":"Any","default":null}]},{"type":"model","name":"NotificationArea1","properties":[{"name":"js_events","kind":"Any","default":{"type":"map"}},{"name":"max_notifications","kind":"Any","default":5},{"name":"notifications","kind":"Any","default":[]},{"name":"position","kind":"Any","default":"bottom-right"},{"name":"_clear","kind":"Any","default":0},{"name":"types","kind":"Any","default":[{"type":"map","entries":[["type","warning"],["background","#ffc107"],["icon",{"type":"map","entries":[["className","fas fa-exclamation-triangle"],["tagName","i"],["color","white"]]}]]},{"type":"map","entries":[["type","info"],["background","#007bff"],["icon",{"type":"map","entries":[["className","fas fa-info-circle"],["tagName","i"],["color","white"]]}]]}]}]},{"type":"model","name":"Notification","properties":[{"name":"background","kind":"Any","default":null},{"name":"duration","kind":"Any","default":3000},{"name":"icon","kind":"Any","default":null},{"name":"message","kind":"Any","default":""},{"name":"notification_type","kind":"Any","default":null},{"name":"_rendered","kind":"Any","default":false},{"name":"_destroyed","kind":"Any","default":false}]},{"type":"model","name":"TemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"BootstrapTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"TemplateEditor1","properties":[{"name":"layout","kind":"Any","default":[]}]},{"type":"model","name":"MaterialTemplateActions1","properties":[{"name":"open_modal","kind":"Any","default":0},{"name":"close_modal","kind":"Any","default":0}]},{"type":"model","name":"request_value1","properties":[{"name":"fill","kind":"Any","default":"none"},{"name":"_synced","kind":"Any","default":null},{"name":"_request_sync","kind":"Any","default":0}]}]}}
263
+ </script>
264
+ <script type="text/javascript">
265
+ (function() {
266
+ const fn = function() {
267
+ Bokeh.safely(function() {
268
+ (function(root) {
269
+ function embed_document(root) {
270
+ const docs_json = document.getElementById('p1059').textContent;
271
+ const render_items = [{"docid":"20bdc984-08ff-4334-a69b-5117e3920067","roots":{"p1011":"de0d9311-3828-4ca2-a897-4f807e57f224","p1017":"fc7f3ae4-51fc-41c9-98a4-2c0c66f43d8f","p1019":"a4476893-e1d0-4849-a2e2-5fbf9a66a90e","p1020":"a1e9ce65-66a1-4847-973c-61c5c6dfe293","p1022":"adf8e806-bc3d-4130-a693-5bfd34759f40","p1023":"def00b21-fb92-44a0-905a-d2232d0e068f","p1037":"ea2f94ea-6831-4955-ac8f-cba21c1ddb60"},"root_ids":["p1011","p1017","p1019","p1020","p1022","p1023","p1037"]}];
272
+ root.Bokeh.embed.embed_items(docs_json, render_items);
273
+ }
274
+ if (root.Bokeh !== undefined) {
275
+ embed_document(root);
276
+ } else {
277
+ let attempts = 0;
278
+ const timer = setInterval(function(root) {
279
+ if (root.Bokeh !== undefined) {
280
+ clearInterval(timer);
281
+ embed_document(root);
282
+ } else {
283
+ attempts++;
284
+ if (attempts > 100) {
285
+ clearInterval(timer);
286
+ console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
287
+ }
288
+ }
289
+ }, 10, root)
290
+ }
291
+ })(window);
292
+ });
293
+ };
294
+ if (document.readyState != "loading") fn();
295
+ else document.addEventListener("DOMContentLoaded", fn, {once: true});
296
+ })();
297
+ </script>
298
+ </body>
299
+ </html>