modelaudit 0.2.36__tar.gz → 0.2.38__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 (925) hide show
  1. modelaudit-0.2.38/.github/PULL_REQUEST_TEMPLATE.md +17 -0
  2. modelaudit-0.2.38/.github/workflows/README.md +17 -0
  3. modelaudit-0.2.38/.github/workflows/codeql.yml +63 -0
  4. modelaudit-0.2.38/.github/workflows/docker-image-test.yml +200 -0
  5. modelaudit-0.2.38/.github/workflows/docker-publish.yml +70 -0
  6. modelaudit-0.2.38/.github/workflows/docs-check.yml +75 -0
  7. modelaudit-0.2.38/.github/workflows/nightly.yml +81 -0
  8. modelaudit-0.2.38/.github/workflows/perf.yml +215 -0
  9. modelaudit-0.2.38/.github/workflows/release-please.yml +771 -0
  10. modelaudit-0.2.38/.github/workflows/test.yml +1103 -0
  11. modelaudit-0.2.38/.gitignore +161 -0
  12. modelaudit-0.2.38/.release-please-manifest.json +4 -0
  13. modelaudit-0.2.38/AGENTS.md +210 -0
  14. modelaudit-0.2.38/CHANGELOG.md +1395 -0
  15. modelaudit-0.2.38/CONTRIBUTING.md +289 -0
  16. modelaudit-0.2.38/Dockerfile +49 -0
  17. modelaudit-0.2.38/Dockerfile.full +63 -0
  18. modelaudit-0.2.38/Dockerfile.tensorflow +32 -0
  19. modelaudit-0.2.38/MAINTAINERS.md +33 -0
  20. modelaudit-0.2.38/PKG-INFO +410 -0
  21. modelaudit-0.2.38/README.md +286 -0
  22. modelaudit-0.2.38/RULES.md +210 -0
  23. modelaudit-0.2.38/SECURITY.md +180 -0
  24. modelaudit-0.2.38/THIRD_PARTY_NOTICES.md +84 -0
  25. modelaudit-0.2.38/docs/agents/architecture.md +114 -0
  26. modelaudit-0.2.38/docs/agents/dependencies.md +155 -0
  27. modelaudit-0.2.38/docs/agents/new-scanner-quickstart.md +131 -0
  28. modelaudit-0.2.38/docs/agents/picklescan-package-split.md +133 -0
  29. modelaudit-0.2.38/docs/agents/release-process.md +91 -0
  30. modelaudit-0.2.38/docs/maintainers/cve-process.md +92 -0
  31. modelaudit-0.2.38/docs/maintainers/scanner-cve-coverage.md +49 -0
  32. modelaudit-0.2.38/docs/security/threat-model.md +101 -0
  33. modelaudit-0.2.38/docs/user/compatibility-matrix.md +55 -0
  34. modelaudit-0.2.38/docs/user/offline-air-gapped.md +81 -0
  35. modelaudit-0.2.38/docs/user/scanner-selection.md +51 -0
  36. modelaudit-0.2.38/docs/user/security-model.md +67 -0
  37. modelaudit-0.2.38/modelaudit/analysis/__init__.py +69 -0
  38. modelaudit-0.2.38/modelaudit/analysis/entropy_analyzer.py +237 -0
  39. modelaudit-0.2.38/modelaudit/analysis/integrated_analyzer.py +395 -0
  40. modelaudit-0.2.38/modelaudit/auth/config.py +375 -0
  41. modelaudit-0.2.38/modelaudit/cache/cache_policy.py +64 -0
  42. modelaudit-0.2.38/modelaudit/cli.py +3583 -0
  43. modelaudit-0.2.38/modelaudit/config/explanations.py +1333 -0
  44. modelaudit-0.2.38/modelaudit/core.py +1394 -0
  45. modelaudit-0.2.38/modelaudit/core_results.py +523 -0
  46. modelaudit-0.2.38/modelaudit/detectors/network_comm.py +1023 -0
  47. modelaudit-0.2.38/modelaudit/detectors/suspicious_symbols.py +1206 -0
  48. modelaudit-0.2.38/modelaudit/integrations/jfrog.py +176 -0
  49. modelaudit-0.2.38/modelaudit/integrations/license_checker.py +795 -0
  50. modelaudit-0.2.38/modelaudit/integrations/sarif_formatter.py +447 -0
  51. modelaudit-0.2.38/modelaudit/metadata_extractor.py +144 -0
  52. modelaudit-0.2.38/modelaudit/models.py +910 -0
  53. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/allocation_description_pb2.py +30 -0
  54. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/api_def_pb2.py +48 -0
  55. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/attr_value_pb2.py +58 -0
  56. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/cost_graph_pb2.py +54 -0
  57. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/cpp_shape_inference_pb2.py +48 -0
  58. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/dataset_metadata_pb2.py +30 -0
  59. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/dataset_options_pb2.py +56 -0
  60. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/dataset_pb2.py +46 -0
  61. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/device_attributes_pb2.py +36 -0
  62. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/full_type_pb2.py +32 -0
  63. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/function_pb2.py +74 -0
  64. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/graph_debug_info_pb2.py +52 -0
  65. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/graph_pb2.py +46 -0
  66. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/graph_transfer_info_pb2.py +54 -0
  67. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/kernel_def_pb2.py +42 -0
  68. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/log_memory_pb2.py +48 -0
  69. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/model_pb2.py +44 -0
  70. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/node_def_pb2.py +46 -0
  71. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/op_def_pb2.py +52 -0
  72. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/optimized_function_graph_pb2.py +45 -0
  73. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/reader_base_pb2.py +30 -0
  74. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/resource_handle_pb2.py +42 -0
  75. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/step_stats_pb2.py +62 -0
  76. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/tensor_description_pb2.py +42 -0
  77. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/tensor_pb2.py +64 -0
  78. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/tensor_shape_pb2.py +32 -0
  79. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/tensor_slice_pb2.py +32 -0
  80. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/types_pb2.py +32 -0
  81. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/variable_pb2.py +36 -0
  82. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/framework/versions_pb2.py +30 -0
  83. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/cluster_pb2.py +36 -0
  84. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/composite_tensor_variant_pb2.py +38 -0
  85. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/control_flow_pb2.py +40 -0
  86. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/core_platform_payloads_pb2.py +32 -0
  87. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/critical_section_pb2.py +32 -0
  88. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/data_service_pb2.py +42 -0
  89. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/debug_event_pb2.py +60 -0
  90. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/debug_pb2.py +36 -0
  91. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/device_filters_pb2.py +38 -0
  92. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/device_properties_pb2.py +36 -0
  93. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/fingerprint_pb2.py +38 -0
  94. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/meta_graph_pb2.py +106 -0
  95. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/named_tensor_pb2.py +38 -0
  96. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/remote_tensor_handle_pb2.py +42 -0
  97. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/rewriter_config_pb2.py +58 -0
  98. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/saved_model_pb2.py +38 -0
  99. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/saved_object_graph_pb2.py +86 -0
  100. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/saver_pb2.py +32 -0
  101. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/service_config_pb2.py +40 -0
  102. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/snapshot_pb2.py +50 -0
  103. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/struct_pb2.py +66 -0
  104. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/tensor_bundle_pb2.py +48 -0
  105. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/trackable_object_graph_pb2.py +48 -0
  106. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/transport_options_pb2.py +30 -0
  107. modelaudit-0.2.38/modelaudit/protos/tensorflow/core/protobuf/verifier_config_pb2.py +32 -0
  108. modelaudit-0.2.38/modelaudit/rule_catalog.py +809 -0
  109. modelaudit-0.2.38/modelaudit/rules.py +124 -0
  110. modelaudit-0.2.38/modelaudit/scanner_registry_metadata.py +569 -0
  111. modelaudit-0.2.38/modelaudit/scanner_results.py +455 -0
  112. modelaudit-0.2.38/modelaudit/scanner_selection.py +368 -0
  113. modelaudit-0.2.38/modelaudit/scanners/__init__.py +489 -0
  114. modelaudit-0.2.38/modelaudit/scanners/_evidence_redaction.py +97 -0
  115. modelaudit-0.2.38/modelaudit/scanners/archive_dispatch.py +148 -0
  116. modelaudit-0.2.38/modelaudit/scanners/archive_member_security.py +655 -0
  117. modelaudit-0.2.38/modelaudit/scanners/base.py +1428 -0
  118. modelaudit-0.2.38/modelaudit/scanners/catboost_scanner.py +555 -0
  119. modelaudit-0.2.38/modelaudit/scanners/executorch_scanner.py +196 -0
  120. modelaudit-0.2.38/modelaudit/scanners/flax_msgpack_scanner.py +1112 -0
  121. modelaudit-0.2.38/modelaudit/scanners/gguf_scanner.py +712 -0
  122. modelaudit-0.2.38/modelaudit/scanners/jax_checkpoint_scanner.py +1091 -0
  123. modelaudit-0.2.38/modelaudit/scanners/jinja2_template_scanner.py +923 -0
  124. modelaudit-0.2.38/modelaudit/scanners/joblib_scanner.py +617 -0
  125. modelaudit-0.2.38/modelaudit/scanners/keras_h5_scanner.py +1159 -0
  126. modelaudit-0.2.38/modelaudit/scanners/keras_utils.py +392 -0
  127. modelaudit-0.2.38/modelaudit/scanners/keras_zip_scanner.py +1977 -0
  128. modelaudit-0.2.38/modelaudit/scanners/lightgbm_scanner.py +458 -0
  129. modelaudit-0.2.38/modelaudit/scanners/llamafile_scanner.py +450 -0
  130. modelaudit-0.2.38/modelaudit/scanners/manifest_scanner.py +1155 -0
  131. modelaudit-0.2.38/modelaudit/scanners/metadata_scanner.py +360 -0
  132. modelaudit-0.2.38/modelaudit/scanners/mxnet_scanner.py +760 -0
  133. modelaudit-0.2.38/modelaudit/scanners/nemo_scanner.py +1026 -0
  134. modelaudit-0.2.38/modelaudit/scanners/numpy_scanner.py +648 -0
  135. modelaudit-0.2.38/modelaudit/scanners/onnx_scanner.py +979 -0
  136. modelaudit-0.2.38/modelaudit/scanners/openvino_scanner.py +335 -0
  137. modelaudit-0.2.38/modelaudit/scanners/paddle_scanner.py +141 -0
  138. modelaudit-0.2.38/modelaudit/scanners/pickle_scanner.py +2436 -0
  139. modelaudit-0.2.38/modelaudit/scanners/picklescan_adapter.py +783 -0
  140. modelaudit-0.2.38/modelaudit/scanners/pmml_scanner.py +530 -0
  141. modelaudit-0.2.38/modelaudit/scanners/pytorch_zip_scanner.py +2621 -0
  142. modelaudit-0.2.38/modelaudit/scanners/r_serialized_scanner.py +716 -0
  143. modelaudit-0.2.38/modelaudit/scanners/rar_scanner.py +67 -0
  144. modelaudit-0.2.38/modelaudit/scanners/rknn_scanner.py +389 -0
  145. modelaudit-0.2.38/modelaudit/scanners/rule_mapper.py +346 -0
  146. modelaudit-0.2.38/modelaudit/scanners/safetensors_scanner.py +805 -0
  147. modelaudit-0.2.38/modelaudit/scanners/sevenzip_scanner.py +937 -0
  148. modelaudit-0.2.38/modelaudit/scanners/skops_scanner.py +558 -0
  149. modelaudit-0.2.38/modelaudit/scanners/tar_scanner.py +640 -0
  150. modelaudit-0.2.38/modelaudit/scanners/tf_savedmodel_scanner.py +1443 -0
  151. modelaudit-0.2.38/modelaudit/scanners/torchserve_mar_scanner.py +2062 -0
  152. modelaudit-0.2.38/modelaudit/scanners/weight_distribution_scanner.py +864 -0
  153. modelaudit-0.2.38/modelaudit/scanners/xgboost_scanner.py +1050 -0
  154. modelaudit-0.2.38/modelaudit/scanners/zip_scanner.py +801 -0
  155. modelaudit-0.2.38/modelaudit/telemetry.py +1046 -0
  156. modelaudit-0.2.38/modelaudit/utils/file/detection.py +1783 -0
  157. modelaudit-0.2.38/modelaudit/utils/file/filtering.py +393 -0
  158. modelaudit-0.2.38/modelaudit/utils/file/streaming.py +288 -0
  159. modelaudit-0.2.38/modelaudit/utils/helpers/auto_defaults.py +283 -0
  160. modelaudit-0.2.38/modelaudit/utils/helpers/cache_decorator.py +205 -0
  161. modelaudit-0.2.38/modelaudit/utils/helpers/result_conversion.py +190 -0
  162. modelaudit-0.2.38/modelaudit/utils/helpers/retry.py +200 -0
  163. modelaudit-0.2.38/modelaudit/utils/helpers/types.py +182 -0
  164. modelaudit-0.2.38/modelaudit/utils/sources/cloud_storage.py +897 -0
  165. modelaudit-0.2.38/modelaudit/utils/sources/dvc.py +84 -0
  166. modelaudit-0.2.38/modelaudit/utils/sources/huggingface.py +485 -0
  167. modelaudit-0.2.38/modelaudit/utils/sources/huggingface_paths.py +214 -0
  168. modelaudit-0.2.38/modelaudit/utils/sources/jfrog.py +696 -0
  169. modelaudit-0.2.38/package-lock.json +27 -0
  170. modelaudit-0.2.38/packages/modelaudit-picklescan/CHANGELOG.md +88 -0
  171. modelaudit-0.2.38/packages/modelaudit-picklescan/Cargo.lock +133 -0
  172. modelaudit-0.2.38/packages/modelaudit-picklescan/Cargo.toml +22 -0
  173. modelaudit-0.2.38/packages/modelaudit-picklescan/README.md +79 -0
  174. modelaudit-0.2.38/packages/modelaudit-picklescan/pyproject.toml +103 -0
  175. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/README.md +11 -0
  176. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/expansion.rs +309 -0
  177. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/lib.rs +21 -0
  178. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/nested.rs +1223 -0
  179. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/nested_surface.rs +143 -0
  180. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/opcode.rs +849 -0
  181. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/options.rs +100 -0
  182. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/policy.rs +276 -0
  183. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/post_budget.rs +616 -0
  184. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/pybridge.rs +34 -0
  185. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/report.rs +286 -0
  186. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/stack.rs +236 -0
  187. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/state.rs +4002 -0
  188. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/strings.rs +896 -0
  189. modelaudit-0.2.38/packages/modelaudit-picklescan/rust/src/strings_policy.rs +79 -0
  190. modelaudit-0.2.38/packages/modelaudit-picklescan/src/modelaudit_picklescan/api.py +1052 -0
  191. modelaudit-0.2.38/packages/modelaudit-picklescan/src/modelaudit_picklescan/options.py +102 -0
  192. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/parity_corpus.py +192 -0
  193. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/test_adversarial_pickle_oracle.py +302 -0
  194. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/test_api.py +2729 -0
  195. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/test_native_interface.py +48 -0
  196. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/test_options.py +55 -0
  197. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/test_report.py +167 -0
  198. modelaudit-0.2.38/packages/modelaudit-picklescan/tests/test_rust_engine.py +367 -0
  199. modelaudit-0.2.38/pyproject.toml +402 -0
  200. modelaudit-0.2.38/release-please-config.json +43 -0
  201. modelaudit-0.2.38/scripts/README.md +39 -0
  202. modelaudit-0.2.38/scripts/check_circular_imports.py +115 -0
  203. modelaudit-0.2.38/scripts/compile_tensorflow_protos.sh +197 -0
  204. modelaudit-0.2.38/scripts/large_pickle_corpus_qa.py +1955 -0
  205. modelaudit-0.2.38/scripts/profile_scan.py +147 -0
  206. modelaudit-0.2.38/tests/assets/generators/generate_safetensors_assets.py +88 -0
  207. modelaudit-0.2.38/tests/assets/samples/jinja2/standalone/malicious_subprocess.template +6 -0
  208. modelaudit-0.2.38/tests/assets/samples/safetensors/malicious_import.safetensors +0 -0
  209. modelaudit-0.2.38/tests/assets/samples/safetensors/safe_model.safetensors +0 -0
  210. modelaudit-0.2.38/tests/benchmarks/test_picklescan_benchmarks.py +247 -0
  211. modelaudit-0.2.38/tests/benchmarks/test_scan_benchmarks.py +240 -0
  212. modelaudit-0.2.38/tests/cache/test_cache_correctness.py +652 -0
  213. modelaudit-0.2.38/tests/conftest.py +624 -0
  214. modelaudit-0.2.38/tests/detectors/test_network_comm_detector.py +569 -0
  215. modelaudit-0.2.38/tests/detectors/test_suspicious_symbols.py +530 -0
  216. modelaudit-0.2.38/tests/helpers/__init__.py +50 -0
  217. modelaudit-0.2.38/tests/helpers/file_creators.py +237 -0
  218. modelaudit-0.2.38/tests/integrations/test_jfrog.py +653 -0
  219. modelaudit-0.2.38/tests/integrations/test_jfrog_integration.py +425 -0
  220. modelaudit-0.2.38/tests/integrations/test_sarif_formatter.py +566 -0
  221. modelaudit-0.2.38/tests/scanners/test_base_scanner.py +1376 -0
  222. modelaudit-0.2.38/tests/scanners/test_catboost_scanner.py +201 -0
  223. modelaudit-0.2.38/tests/scanners/test_executorch_scanner.py +145 -0
  224. modelaudit-0.2.38/tests/scanners/test_flax_msgpack_scanner.py +635 -0
  225. modelaudit-0.2.38/tests/scanners/test_gguf_scanner.py +817 -0
  226. modelaudit-0.2.38/tests/scanners/test_jinja2_template_scanner.py +771 -0
  227. modelaudit-0.2.38/tests/scanners/test_joblib_scanner.py +78 -0
  228. modelaudit-0.2.38/tests/scanners/test_joblib_scanner_codecs.py +196 -0
  229. modelaudit-0.2.38/tests/scanners/test_keras_h5_scanner.py +1755 -0
  230. modelaudit-0.2.38/tests/scanners/test_keras_zip_scanner.py +3162 -0
  231. modelaudit-0.2.38/tests/scanners/test_lightgbm_scanner.py +176 -0
  232. modelaudit-0.2.38/tests/scanners/test_llamafile_scanner.py +210 -0
  233. modelaudit-0.2.38/tests/scanners/test_manifest_scanner.py +1034 -0
  234. modelaudit-0.2.38/tests/scanners/test_metadata_scanner.py +327 -0
  235. modelaudit-0.2.38/tests/scanners/test_mxnet_scanner.py +383 -0
  236. modelaudit-0.2.38/tests/scanners/test_nemo_scanner.py +983 -0
  237. modelaudit-0.2.38/tests/scanners/test_numpy_scanner.py +450 -0
  238. modelaudit-0.2.38/tests/scanners/test_onnx_scanner.py +934 -0
  239. modelaudit-0.2.38/tests/scanners/test_openvino_scanner.py +400 -0
  240. modelaudit-0.2.38/tests/scanners/test_pickle_scanner.py +1474 -0
  241. modelaudit-0.2.38/tests/scanners/test_picklescan_adapter.py +1472 -0
  242. modelaudit-0.2.38/tests/scanners/test_pmml_scanner.py +745 -0
  243. modelaudit-0.2.38/tests/scanners/test_pytorch_binary_scanner.py +322 -0
  244. modelaudit-0.2.38/tests/scanners/test_pytorch_zip_scanner.py +2361 -0
  245. modelaudit-0.2.38/tests/scanners/test_r_serialized_scanner.py +307 -0
  246. modelaudit-0.2.38/tests/scanners/test_rknn_scanner.py +139 -0
  247. modelaudit-0.2.38/tests/scanners/test_rule_mapper.py +72 -0
  248. modelaudit-0.2.38/tests/scanners/test_safetensors_scanner.py +621 -0
  249. modelaudit-0.2.38/tests/scanners/test_scanner_registry.py +614 -0
  250. modelaudit-0.2.38/tests/scanners/test_sevenzip_scanner.py +1898 -0
  251. modelaudit-0.2.38/tests/scanners/test_skops_scanner.py +784 -0
  252. modelaudit-0.2.38/tests/scanners/test_tar_scanner.py +1177 -0
  253. modelaudit-0.2.38/tests/scanners/test_tflite_scanner.py +372 -0
  254. modelaudit-0.2.38/tests/scanners/test_torchserve_mar_scanner.py +2143 -0
  255. modelaudit-0.2.38/tests/scanners/test_weight_distribution_scanner.py +782 -0
  256. modelaudit-0.2.38/tests/scanners/test_xgboost_scanner.py +1115 -0
  257. modelaudit-0.2.38/tests/scanners/test_zip_scanner.py +1899 -0
  258. modelaudit-0.2.38/tests/scripts/test_large_pickle_corpus_qa.py +303 -0
  259. modelaudit-0.2.38/tests/test_cli.py +2490 -0
  260. modelaudit-0.2.38/tests/test_committed_fixture_hygiene.py +158 -0
  261. modelaudit-0.2.38/tests/test_core.py +919 -0
  262. modelaudit-0.2.38/tests/test_dill_joblib_enhanced.py +67 -0
  263. modelaudit-0.2.38/tests/test_directory_file_filtering.py +470 -0
  264. modelaudit-0.2.38/tests/test_exit_codes.py +476 -0
  265. modelaudit-0.2.38/tests/test_integration.py +392 -0
  266. modelaudit-0.2.38/tests/test_jit_script_integration.py +194 -0
  267. modelaudit-0.2.38/tests/test_lazy_loading.py +477 -0
  268. modelaudit-0.2.38/tests/test_metadata_extractor.py +706 -0
  269. modelaudit-0.2.38/tests/test_models.py +822 -0
  270. modelaudit-0.2.38/tests/test_nested_pickle_integration.py +436 -0
  271. modelaudit-0.2.38/tests/test_network_comm_integration.py +303 -0
  272. modelaudit-0.2.38/tests/test_pickle_context_filtering.py +48 -0
  273. modelaudit-0.2.38/tests/test_regression_corpus.py +131 -0
  274. modelaudit-0.2.38/tests/test_regular_scan_hash.py +295 -0
  275. modelaudit-0.2.38/tests/test_rules.py +495 -0
  276. modelaudit-0.2.38/tests/test_scanner_selection.py +402 -0
  277. modelaudit-0.2.38/tests/test_security_enhancements.py +495 -0
  278. modelaudit-0.2.38/tests/test_streaming_scan.py +943 -0
  279. modelaudit-0.2.38/tests/test_telemetry.py +728 -0
  280. modelaudit-0.2.38/tests/test_telemetry_decoupling.py +498 -0
  281. modelaudit-0.2.38/tests/utils/file/test_advanced_size_limits.py +168 -0
  282. modelaudit-0.2.38/tests/utils/file/test_file_filter.py +345 -0
  283. modelaudit-0.2.38/tests/utils/file/test_file_type_validation_integration.py +457 -0
  284. modelaudit-0.2.38/tests/utils/file/test_filetype.py +1160 -0
  285. modelaudit-0.2.38/tests/utils/file/test_streaming_analysis.py +250 -0
  286. modelaudit-0.2.38/tests/utils/helpers/test_py_compile_improvements.py +326 -0
  287. modelaudit-0.2.38/tests/utils/sources/test_cloud_storage.py +858 -0
  288. modelaudit-0.2.38/tests/utils/sources/test_dvc_integration.py +336 -0
  289. modelaudit-0.2.38/tests/utils/sources/test_huggingface.py +838 -0
  290. modelaudit-0.2.38/tests/utils/test_result_conversion.py +348 -0
  291. modelaudit-0.2.38/uv.lock +5308 -0
  292. modelaudit-0.2.36/.github/PULL_REQUEST_TEMPLATE.md +0 -17
  293. modelaudit-0.2.36/.github/workflows/README.md +0 -15
  294. modelaudit-0.2.36/.github/workflows/codeql.yml +0 -63
  295. modelaudit-0.2.36/.github/workflows/docker-image-test.yml +0 -191
  296. modelaudit-0.2.36/.github/workflows/docker-publish.yml +0 -70
  297. modelaudit-0.2.36/.github/workflows/docs-check.yml +0 -75
  298. modelaudit-0.2.36/.github/workflows/nightly.yml +0 -63
  299. modelaudit-0.2.36/.github/workflows/perf.yml +0 -196
  300. modelaudit-0.2.36/.github/workflows/release-please.yml +0 -538
  301. modelaudit-0.2.36/.github/workflows/test.yml +0 -975
  302. modelaudit-0.2.36/.gitignore +0 -158
  303. modelaudit-0.2.36/.release-please-manifest.json +0 -3
  304. modelaudit-0.2.36/AGENTS.md +0 -210
  305. modelaudit-0.2.36/CHANGELOG.md +0 -1257
  306. modelaudit-0.2.36/CONTRIBUTING.md +0 -277
  307. modelaudit-0.2.36/Dockerfile +0 -33
  308. modelaudit-0.2.36/Dockerfile.full +0 -41
  309. modelaudit-0.2.36/Dockerfile.tensorflow +0 -32
  310. modelaudit-0.2.36/MAINTAINERS.md +0 -33
  311. modelaudit-0.2.36/PKG-INFO +0 -378
  312. modelaudit-0.2.36/README.md +0 -255
  313. modelaudit-0.2.36/RULES.md +0 -216
  314. modelaudit-0.2.36/SECURITY.md +0 -178
  315. modelaudit-0.2.36/THIRD_PARTY_NOTICES.md +0 -84
  316. modelaudit-0.2.36/docs/agents/architecture.md +0 -111
  317. modelaudit-0.2.36/docs/agents/dependencies.md +0 -151
  318. modelaudit-0.2.36/docs/agents/new-scanner-quickstart.md +0 -120
  319. modelaudit-0.2.36/docs/agents/picklescan-package-split.md +0 -127
  320. modelaudit-0.2.36/docs/agents/release-process.md +0 -88
  321. modelaudit-0.2.36/docs/agents/repo-correctness-audit.md +0 -209
  322. modelaudit-0.2.36/docs/maintainers/cve-gap-pr-plan-2026-03-20.md +0 -66
  323. modelaudit-0.2.36/docs/maintainers/cve-process.md +0 -87
  324. modelaudit-0.2.36/docs/maintainers/format-gap-plans/coreml-mlmodel.md +0 -132
  325. modelaudit-0.2.36/docs/maintainers/format-gap-plans/mxnet-models.md +0 -120
  326. modelaudit-0.2.36/docs/maintainers/format-gap-plans/tensorflow-metagraph.md +0 -107
  327. modelaudit-0.2.36/docs/maintainers/format-gap-plans/torchserve-mar.md +0 -168
  328. modelaudit-0.2.36/docs/security/threat-model.md +0 -100
  329. modelaudit-0.2.36/docs/user/compatibility-matrix.md +0 -51
  330. modelaudit-0.2.36/docs/user/offline-air-gapped.md +0 -81
  331. modelaudit-0.2.36/docs/user/security-model.md +0 -59
  332. modelaudit-0.2.36/modelaudit/analysis/__init__.py +0 -61
  333. modelaudit-0.2.36/modelaudit/analysis/entropy_analyzer.py +0 -238
  334. modelaudit-0.2.36/modelaudit/analysis/integrated_analyzer.py +0 -397
  335. modelaudit-0.2.36/modelaudit/auth/config.py +0 -377
  336. modelaudit-0.2.36/modelaudit/cache/cache_policy.py +0 -61
  337. modelaudit-0.2.36/modelaudit/cli.py +0 -3377
  338. modelaudit-0.2.36/modelaudit/config/explanations.py +0 -1297
  339. modelaudit-0.2.36/modelaudit/core.py +0 -1222
  340. modelaudit-0.2.36/modelaudit/core_results.py +0 -499
  341. modelaudit-0.2.36/modelaudit/detectors/network_comm.py +0 -809
  342. modelaudit-0.2.36/modelaudit/detectors/suspicious_symbols.py +0 -1182
  343. modelaudit-0.2.36/modelaudit/integrations/jfrog.py +0 -164
  344. modelaudit-0.2.36/modelaudit/integrations/license_checker.py +0 -728
  345. modelaudit-0.2.36/modelaudit/integrations/sarif_formatter.py +0 -385
  346. modelaudit-0.2.36/modelaudit/metadata_extractor.py +0 -139
  347. modelaudit-0.2.36/modelaudit/models.py +0 -827
  348. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/allocation_description_pb2.py +0 -37
  349. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/api_def_pb2.py +0 -48
  350. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/attr_value_pb2.py +0 -56
  351. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/cost_graph_pb2.py +0 -53
  352. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/cpp_shape_inference_pb2.py +0 -46
  353. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/dataset_metadata_pb2.py +0 -37
  354. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/dataset_options_pb2.py +0 -56
  355. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/dataset_pb2.py +0 -44
  356. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/device_attributes_pb2.py +0 -43
  357. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/full_type_pb2.py +0 -39
  358. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/function_pb2.py +0 -72
  359. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/graph_debug_info_pb2.py +0 -59
  360. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/graph_pb2.py +0 -43
  361. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/graph_transfer_info_pb2.py +0 -54
  362. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/kernel_def_pb2.py +0 -42
  363. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/log_memory_pb2.py +0 -48
  364. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/model_pb2.py +0 -51
  365. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/node_def_pb2.py +0 -45
  366. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/op_def_pb2.py +0 -49
  367. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/optimized_function_graph_pb2.py +0 -44
  368. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/reader_base_pb2.py +0 -37
  369. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/resource_handle_pb2.py +0 -41
  370. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/step_stats_pb2.py +0 -61
  371. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/tensor_description_pb2.py +0 -40
  372. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/tensor_pb2.py +0 -62
  373. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/tensor_shape_pb2.py +0 -39
  374. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/tensor_slice_pb2.py +0 -39
  375. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/types_pb2.py +0 -39
  376. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/variable_pb2.py +0 -43
  377. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/framework/versions_pb2.py +0 -37
  378. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/cluster_pb2.py +0 -43
  379. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/composite_tensor_variant_pb2.py +0 -38
  380. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/control_flow_pb2.py +0 -47
  381. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/core_platform_payloads_pb2.py +0 -39
  382. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/critical_section_pb2.py +0 -39
  383. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/data_service_pb2.py +0 -49
  384. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/debug_event_pb2.py +0 -59
  385. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/debug_pb2.py +0 -43
  386. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/device_filters_pb2.py +0 -45
  387. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/device_properties_pb2.py +0 -43
  388. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/fingerprint_pb2.py +0 -38
  389. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/meta_graph_pb2.py +0 -98
  390. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/named_tensor_pb2.py +0 -38
  391. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/remote_tensor_handle_pb2.py +0 -41
  392. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/rewriter_config_pb2.py +0 -57
  393. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/saved_model_pb2.py +0 -38
  394. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/saved_object_graph_pb2.py +0 -80
  395. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/saver_pb2.py +0 -39
  396. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/service_config_pb2.py +0 -40
  397. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/snapshot_pb2.py +0 -48
  398. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/struct_pb2.py +0 -64
  399. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/tensor_bundle_pb2.py +0 -45
  400. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/trackable_object_graph_pb2.py +0 -48
  401. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/transport_options_pb2.py +0 -37
  402. modelaudit-0.2.36/modelaudit/protos/tensorflow/core/protobuf/verifier_config_pb2.py +0 -39
  403. modelaudit-0.2.36/modelaudit/rule_catalog.py +0 -788
  404. modelaudit-0.2.36/modelaudit/rules.py +0 -115
  405. modelaudit-0.2.36/modelaudit/scanner_registry_metadata.py +0 -558
  406. modelaudit-0.2.36/modelaudit/scanner_results.py +0 -357
  407. modelaudit-0.2.36/modelaudit/scanners/__init__.py +0 -450
  408. modelaudit-0.2.36/modelaudit/scanners/archive_dispatch.py +0 -115
  409. modelaudit-0.2.36/modelaudit/scanners/archive_member_security.py +0 -26
  410. modelaudit-0.2.36/modelaudit/scanners/base.py +0 -1261
  411. modelaudit-0.2.36/modelaudit/scanners/catboost_scanner.py +0 -533
  412. modelaudit-0.2.36/modelaudit/scanners/executorch_scanner.py +0 -185
  413. modelaudit-0.2.36/modelaudit/scanners/flax_msgpack_scanner.py +0 -1080
  414. modelaudit-0.2.36/modelaudit/scanners/gguf_scanner.py +0 -680
  415. modelaudit-0.2.36/modelaudit/scanners/jax_checkpoint_scanner.py +0 -1092
  416. modelaudit-0.2.36/modelaudit/scanners/jinja2_template_scanner.py +0 -818
  417. modelaudit-0.2.36/modelaudit/scanners/joblib_scanner.py +0 -463
  418. modelaudit-0.2.36/modelaudit/scanners/keras_h5_scanner.py +0 -1142
  419. modelaudit-0.2.36/modelaudit/scanners/keras_utils.py +0 -388
  420. modelaudit-0.2.36/modelaudit/scanners/keras_zip_scanner.py +0 -1775
  421. modelaudit-0.2.36/modelaudit/scanners/lightgbm_scanner.py +0 -430
  422. modelaudit-0.2.36/modelaudit/scanners/llamafile_scanner.py +0 -445
  423. modelaudit-0.2.36/modelaudit/scanners/manifest_scanner.py +0 -1129
  424. modelaudit-0.2.36/modelaudit/scanners/metadata_scanner.py +0 -337
  425. modelaudit-0.2.36/modelaudit/scanners/mxnet_scanner.py +0 -677
  426. modelaudit-0.2.36/modelaudit/scanners/nemo_scanner.py +0 -451
  427. modelaudit-0.2.36/modelaudit/scanners/numpy_scanner.py +0 -583
  428. modelaudit-0.2.36/modelaudit/scanners/onnx_scanner.py +0 -842
  429. modelaudit-0.2.36/modelaudit/scanners/openvino_scanner.py +0 -263
  430. modelaudit-0.2.36/modelaudit/scanners/paddle_scanner.py +0 -144
  431. modelaudit-0.2.36/modelaudit/scanners/pickle_scanner.py +0 -8837
  432. modelaudit-0.2.36/modelaudit/scanners/pickle_support/__init__.py +0 -131
  433. modelaudit-0.2.36/modelaudit/scanners/pickle_support/opcode_stream.py +0 -763
  434. modelaudit-0.2.36/modelaudit/scanners/picklescan_adapter.py +0 -522
  435. modelaudit-0.2.36/modelaudit/scanners/pmml_scanner.py +0 -371
  436. modelaudit-0.2.36/modelaudit/scanners/pytorch_zip_scanner.py +0 -2007
  437. modelaudit-0.2.36/modelaudit/scanners/r_serialized_scanner.py +0 -696
  438. modelaudit-0.2.36/modelaudit/scanners/rknn_scanner.py +0 -390
  439. modelaudit-0.2.36/modelaudit/scanners/rule_mapper.py +0 -337
  440. modelaudit-0.2.36/modelaudit/scanners/safetensors_scanner.py +0 -812
  441. modelaudit-0.2.36/modelaudit/scanners/sevenzip_scanner.py +0 -909
  442. modelaudit-0.2.36/modelaudit/scanners/skops_scanner.py +0 -504
  443. modelaudit-0.2.36/modelaudit/scanners/tar_scanner.py +0 -626
  444. modelaudit-0.2.36/modelaudit/scanners/tf_savedmodel_scanner.py +0 -1447
  445. modelaudit-0.2.36/modelaudit/scanners/torchserve_mar_scanner.py +0 -2023
  446. modelaudit-0.2.36/modelaudit/scanners/weight_distribution_scanner.py +0 -867
  447. modelaudit-0.2.36/modelaudit/scanners/xgboost_scanner.py +0 -757
  448. modelaudit-0.2.36/modelaudit/scanners/zip_scanner.py +0 -641
  449. modelaudit-0.2.36/modelaudit/telemetry.py +0 -921
  450. modelaudit-0.2.36/modelaudit/utils/file/detection.py +0 -1391
  451. modelaudit-0.2.36/modelaudit/utils/file/filtering.py +0 -347
  452. modelaudit-0.2.36/modelaudit/utils/file/streaming.py +0 -288
  453. modelaudit-0.2.36/modelaudit/utils/helpers/auto_defaults.py +0 -283
  454. modelaudit-0.2.36/modelaudit/utils/helpers/cache_decorator.py +0 -201
  455. modelaudit-0.2.36/modelaudit/utils/helpers/result_conversion.py +0 -190
  456. modelaudit-0.2.36/modelaudit/utils/helpers/retry.py +0 -197
  457. modelaudit-0.2.36/modelaudit/utils/helpers/types.py +0 -182
  458. modelaudit-0.2.36/modelaudit/utils/sources/cloud_storage.py +0 -759
  459. modelaudit-0.2.36/modelaudit/utils/sources/dvc.py +0 -96
  460. modelaudit-0.2.36/modelaudit/utils/sources/huggingface.py +0 -458
  461. modelaudit-0.2.36/modelaudit/utils/sources/huggingface_paths.py +0 -135
  462. modelaudit-0.2.36/modelaudit/utils/sources/jfrog.py +0 -618
  463. modelaudit-0.2.36/package-lock.json +0 -27
  464. modelaudit-0.2.36/packages/modelaudit-picklescan/README.md +0 -63
  465. modelaudit-0.2.36/packages/modelaudit-picklescan/pyproject.toml +0 -104
  466. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/api.py +0 -125
  467. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/engine/__init__.py +0 -5
  468. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/engine/nested.py +0 -126
  469. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/engine/policy.py +0 -248
  470. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/engine/scanner.py +0 -1111
  471. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/engine/stream.py +0 -141
  472. modelaudit-0.2.36/packages/modelaudit-picklescan/src/modelaudit_picklescan/options.py +0 -74
  473. modelaudit-0.2.36/packages/modelaudit-picklescan/tests/test_api.py +0 -1030
  474. modelaudit-0.2.36/packages/modelaudit-picklescan/tests/test_options.py +0 -45
  475. modelaudit-0.2.36/packages/modelaudit-picklescan/tests/test_report.py +0 -145
  476. modelaudit-0.2.36/pyproject.toml +0 -401
  477. modelaudit-0.2.36/release-please-config.json +0 -22
  478. modelaudit-0.2.36/scripts/README.md +0 -35
  479. modelaudit-0.2.36/scripts/check_circular_imports.py +0 -121
  480. modelaudit-0.2.36/scripts/compare_pickle_scanners.py +0 -362
  481. modelaudit-0.2.36/scripts/compare_pickle_scanners_fixture_labels.json +0 -36
  482. modelaudit-0.2.36/scripts/compile_tensorflow_protos.sh +0 -154
  483. modelaudit-0.2.36/tests/assets/generators/generate_safetensors_assets.py +0 -115
  484. modelaudit-0.2.36/tests/assets/pickles/bypass_pocs/gen_bypass_v4.py +0 -431
  485. modelaudit-0.2.36/tests/assets/samples/jinja2/benign_conditional_format.json +0 -8
  486. modelaudit-0.2.36/tests/assets/samples/jinja2/benign_huggingface_chat.json +0 -33
  487. modelaudit-0.2.36/tests/assets/samples/jinja2/benign_simple_template.json +0 -9
  488. modelaudit-0.2.36/tests/assets/samples/jinja2/benign_template.j2 +0 -9
  489. modelaudit-0.2.36/tests/assets/samples/jinja2/malicious_cve_2024_34359.json +0 -34
  490. modelaudit-0.2.36/tests/assets/samples/jinja2/malicious_env_vars.json +0 -7
  491. modelaudit-0.2.36/tests/assets/samples/jinja2/malicious_file_read.json +0 -9
  492. modelaudit-0.2.36/tests/assets/samples/jinja2/malicious_loop_exploit.json +0 -9
  493. modelaudit-0.2.36/tests/assets/samples/jinja2/malicious_obfuscated.json +0 -7
  494. modelaudit-0.2.36/tests/assets/samples/jinja2/malicious_subprocess.template +0 -6
  495. modelaudit-0.2.36/tests/assets/samples/jinja2/tokenizer_config.json +0 -34
  496. modelaudit-0.2.36/tests/assets/samples/keras/basic_lambda_layer.h5 +0 -0
  497. modelaudit-0.2.36/tests/assets/samples/keras/keras_zip_format.keras +0 -0
  498. modelaudit-0.2.36/tests/assets/samples/keras/lambda_exfiltration.h5 +0 -0
  499. modelaudit-0.2.36/tests/assets/samples/keras/lambda_with_imports.h5 +0 -0
  500. modelaudit-0.2.36/tests/assets/samples/safetensors/malicious_import.safetensors +0 -0
  501. modelaudit-0.2.36/tests/assets/samples/safetensors/multiple_patterns.safetensors +0 -0
  502. modelaudit-0.2.36/tests/assets/samples/safetensors/obfuscated_metadata.safetensors +0 -0
  503. modelaudit-0.2.36/tests/assets/samples/safetensors/safe_model.safetensors +0 -0
  504. modelaudit-0.2.36/tests/assets/samples/safetensors/script_injection.safetensors +0 -0
  505. modelaudit-0.2.36/tests/assets/samples/safetensors/shell_commands.safetensors +0 -0
  506. modelaudit-0.2.36/tests/assets/samples/safetensors/suspicious_url.safetensors +0 -0
  507. modelaudit-0.2.36/tests/benchmarks/test_scan_benchmarks.py +0 -204
  508. modelaudit-0.2.36/tests/cache/test_cache_correctness.py +0 -601
  509. modelaudit-0.2.36/tests/conftest.py +0 -618
  510. modelaudit-0.2.36/tests/detectors/test_network_comm_detector.py +0 -379
  511. modelaudit-0.2.36/tests/detectors/test_suspicious_symbols.py +0 -515
  512. modelaudit-0.2.36/tests/helpers/__init__.py +0 -48
  513. modelaudit-0.2.36/tests/helpers/file_creators.py +0 -189
  514. modelaudit-0.2.36/tests/integrations/test_jfrog.py +0 -623
  515. modelaudit-0.2.36/tests/integrations/test_jfrog_integration.py +0 -377
  516. modelaudit-0.2.36/tests/integrations/test_sarif_formatter.py +0 -471
  517. modelaudit-0.2.36/tests/scanners/test_base_scanner.py +0 -993
  518. modelaudit-0.2.36/tests/scanners/test_catboost_scanner.py +0 -176
  519. modelaudit-0.2.36/tests/scanners/test_executorch_scanner.py +0 -143
  520. modelaudit-0.2.36/tests/scanners/test_flax_msgpack_scanner.py +0 -535
  521. modelaudit-0.2.36/tests/scanners/test_gguf_scanner.py +0 -728
  522. modelaudit-0.2.36/tests/scanners/test_jinja2_template_scanner.py +0 -600
  523. modelaudit-0.2.36/tests/scanners/test_joblib_scanner.py +0 -74
  524. modelaudit-0.2.36/tests/scanners/test_joblib_scanner_codecs.py +0 -153
  525. modelaudit-0.2.36/tests/scanners/test_keras_h5_scanner.py +0 -1618
  526. modelaudit-0.2.36/tests/scanners/test_keras_zip_scanner.py +0 -2728
  527. modelaudit-0.2.36/tests/scanners/test_lightgbm_scanner.py +0 -151
  528. modelaudit-0.2.36/tests/scanners/test_llamafile_scanner.py +0 -184
  529. modelaudit-0.2.36/tests/scanners/test_manifest_scanner.py +0 -957
  530. modelaudit-0.2.36/tests/scanners/test_metadata_scanner.py +0 -310
  531. modelaudit-0.2.36/tests/scanners/test_mxnet_scanner.py +0 -318
  532. modelaudit-0.2.36/tests/scanners/test_nemo_scanner.py +0 -437
  533. modelaudit-0.2.36/tests/scanners/test_numpy_scanner.py +0 -419
  534. modelaudit-0.2.36/tests/scanners/test_onnx_scanner.py +0 -693
  535. modelaudit-0.2.36/tests/scanners/test_openvino_scanner.py +0 -261
  536. modelaudit-0.2.36/tests/scanners/test_pickle_scanner.py +0 -7937
  537. modelaudit-0.2.36/tests/scanners/test_picklescan_adapter.py +0 -855
  538. modelaudit-0.2.36/tests/scanners/test_pmml_scanner.py +0 -443
  539. modelaudit-0.2.36/tests/scanners/test_pytorch_binary_scanner.py +0 -320
  540. modelaudit-0.2.36/tests/scanners/test_pytorch_zip_scanner.py +0 -1220
  541. modelaudit-0.2.36/tests/scanners/test_r_serialized_scanner.py +0 -280
  542. modelaudit-0.2.36/tests/scanners/test_rknn_scanner.py +0 -105
  543. modelaudit-0.2.36/tests/scanners/test_rule_mapper.py +0 -33
  544. modelaudit-0.2.36/tests/scanners/test_safetensors_scanner.py +0 -480
  545. modelaudit-0.2.36/tests/scanners/test_scanner_registry.py +0 -549
  546. modelaudit-0.2.36/tests/scanners/test_sevenzip_scanner.py +0 -1619
  547. modelaudit-0.2.36/tests/scanners/test_skops_scanner.py +0 -513
  548. modelaudit-0.2.36/tests/scanners/test_tar_scanner.py +0 -823
  549. modelaudit-0.2.36/tests/scanners/test_tflite_scanner.py +0 -377
  550. modelaudit-0.2.36/tests/scanners/test_torchserve_mar_scanner.py +0 -2089
  551. modelaudit-0.2.36/tests/scanners/test_weight_distribution_scanner.py +0 -799
  552. modelaudit-0.2.36/tests/scanners/test_xgboost_scanner.py +0 -524
  553. modelaudit-0.2.36/tests/scanners/test_zip_scanner.py +0 -974
  554. modelaudit-0.2.36/tests/scripts/test_compare_pickle_scanners.py +0 -211
  555. modelaudit-0.2.36/tests/test_cli.py +0 -2351
  556. modelaudit-0.2.36/tests/test_core.py +0 -716
  557. modelaudit-0.2.36/tests/test_dill_joblib_enhanced.py +0 -343
  558. modelaudit-0.2.36/tests/test_directory_file_filtering.py +0 -332
  559. modelaudit-0.2.36/tests/test_exit_codes.py +0 -428
  560. modelaudit-0.2.36/tests/test_integration.py +0 -394
  561. modelaudit-0.2.36/tests/test_jit_script_integration.py +0 -198
  562. modelaudit-0.2.36/tests/test_lazy_loading.py +0 -465
  563. modelaudit-0.2.36/tests/test_metadata_extractor.py +0 -613
  564. modelaudit-0.2.36/tests/test_models.py +0 -799
  565. modelaudit-0.2.36/tests/test_nested_pickle_integration.py +0 -430
  566. modelaudit-0.2.36/tests/test_network_comm_integration.py +0 -242
  567. modelaudit-0.2.36/tests/test_pickle_context_filtering.py +0 -369
  568. modelaudit-0.2.36/tests/test_regression_corpus.py +0 -119
  569. modelaudit-0.2.36/tests/test_regular_scan_hash.py +0 -278
  570. modelaudit-0.2.36/tests/test_rules.py +0 -464
  571. modelaudit-0.2.36/tests/test_security_enhancements.py +0 -462
  572. modelaudit-0.2.36/tests/test_streaming_scan.py +0 -771
  573. modelaudit-0.2.36/tests/test_telemetry.py +0 -678
  574. modelaudit-0.2.36/tests/test_telemetry_decoupling.py +0 -256
  575. modelaudit-0.2.36/tests/utils/file/test_advanced_size_limits.py +0 -164
  576. modelaudit-0.2.36/tests/utils/file/test_file_filter.py +0 -224
  577. modelaudit-0.2.36/tests/utils/file/test_file_type_validation_integration.py +0 -467
  578. modelaudit-0.2.36/tests/utils/file/test_filetype.py +0 -1070
  579. modelaudit-0.2.36/tests/utils/file/test_streaming_analysis.py +0 -193
  580. modelaudit-0.2.36/tests/utils/helpers/test_py_compile_improvements.py +0 -324
  581. modelaudit-0.2.36/tests/utils/sources/test_cloud_storage.py +0 -593
  582. modelaudit-0.2.36/tests/utils/sources/test_dvc_integration.py +0 -321
  583. modelaudit-0.2.36/tests/utils/sources/test_huggingface.py +0 -755
  584. modelaudit-0.2.36/tests/utils/test_result_conversion.py +0 -336
  585. modelaudit-0.2.36/uv.lock +0 -6241
  586. {modelaudit-0.2.36 → modelaudit-0.2.38}/.dockerignore +0 -0
  587. {modelaudit-0.2.36 → modelaudit-0.2.38}/.editorconfig +0 -0
  588. {modelaudit-0.2.36 → modelaudit-0.2.38}/.gitattributes +0 -0
  589. {modelaudit-0.2.36 → modelaudit-0.2.38}/.github/CODEOWNERS +0 -0
  590. {modelaudit-0.2.36 → modelaudit-0.2.38}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  591. {modelaudit-0.2.36 → modelaudit-0.2.38}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  592. {modelaudit-0.2.36 → modelaudit-0.2.38}/.github/markdown-link-check-config.json +0 -0
  593. {modelaudit-0.2.36 → modelaudit-0.2.38}/.github/workflows/validate-pr-title.yml +0 -0
  594. {modelaudit-0.2.36 → modelaudit-0.2.38}/.mailmap +0 -0
  595. {modelaudit-0.2.36 → modelaudit-0.2.38}/.modelaudit.toml.example +0 -0
  596. {modelaudit-0.2.36 → modelaudit-0.2.38}/.prettierignore +0 -0
  597. {modelaudit-0.2.36 → modelaudit-0.2.38}/CLAUDE.md +0 -0
  598. {modelaudit-0.2.36 → modelaudit-0.2.38}/CODE_OF_CONDUCT.md +0 -0
  599. {modelaudit-0.2.36 → modelaudit-0.2.38}/LICENSE +0 -0
  600. {modelaudit-0.2.36 → modelaudit-0.2.38}/MANIFEST.in +0 -0
  601. {modelaudit-0.2.36 → modelaudit-0.2.38}/SUPPORT.md +0 -0
  602. {modelaudit-0.2.36 → modelaudit-0.2.38}/codecov.yml +0 -0
  603. {modelaudit-0.2.36 → modelaudit-0.2.38}/docker-compose.yml +0 -0
  604. {modelaudit-0.2.36 → modelaudit-0.2.38}/docker-entrypoint.sh +0 -0
  605. {modelaudit-0.2.36 → modelaudit-0.2.38}/docs/maintainers/dependency-policy.md +0 -0
  606. {modelaudit-0.2.36 → modelaudit-0.2.38}/docs/maintainers/triage-playbook.md +0 -0
  607. {modelaudit-0.2.36 → modelaudit-0.2.38}/docs/user/metadata-extraction.md +0 -0
  608. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/__init__.py +0 -0
  609. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/__main__.py +0 -0
  610. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/anomaly_detector.py +0 -0
  611. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/enhanced_pattern_detector.py +0 -0
  612. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/framework_patterns.py +0 -0
  613. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/ml_context_analyzer.py +0 -0
  614. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/opcode_sequence_analyzer.py +0 -0
  615. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/semantic_analyzer.py +0 -0
  616. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/analysis/unified_context.py +0 -0
  617. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/auth/__init__.py +0 -0
  618. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/auth/client.py +0 -0
  619. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/__init__.py +0 -0
  620. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/adaptive_cache_keys.py +0 -0
  621. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/batch_operations.py +0 -0
  622. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/cache_manager.py +0 -0
  623. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/optimized_config.py +0 -0
  624. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/scan_results_cache.py +0 -0
  625. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/cache/trusted_config_store.py +0 -0
  626. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/__init__.py +0 -0
  627. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/constants.py +0 -0
  628. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/data/spdx_licenses.json +0 -0
  629. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/generated_keras_layers.py +0 -0
  630. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/local_config.py +0 -0
  631. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/name_blacklist.py +0 -0
  632. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/config/rule_config.py +0 -0
  633. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/detectors/__init__.py +0 -0
  634. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/detectors/cve_patterns.py +0 -0
  635. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/detectors/jit_script.py +0 -0
  636. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/detectors/secrets.py +0 -0
  637. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/integrations/__init__.py +0 -0
  638. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/integrations/mlflow.py +0 -0
  639. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/integrations/sbom_generator.py +0 -0
  640. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/progress/__init__.py +0 -0
  641. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/progress/base.py +0 -0
  642. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/progress/console.py +0 -0
  643. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/progress/file.py +0 -0
  644. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/progress/hooks.py +0 -0
  645. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/progress/multi_phase.py +0 -0
  646. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/LICENSE +0 -0
  647. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/NOTICE +0 -0
  648. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/__init__.py +0 -0
  649. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/py.typed +0 -0
  650. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/tensorflow/__init__.py +0 -0
  651. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/tensorflow/core/__init__.py +0 -0
  652. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/tensorflow/core/framework/__init__.py +0 -0
  653. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/protos/tensorflow/core/protobuf/__init__.py +0 -0
  654. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/py.typed +0 -0
  655. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/_archive_config.py +0 -0
  656. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/_archive_locations.py +0 -0
  657. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/_archive_outcomes.py +0 -0
  658. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/_string_extraction.py +0 -0
  659. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/cntk_scanner.py +0 -0
  660. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/compressed_scanner.py +0 -0
  661. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/coreml_scanner.py +0 -0
  662. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/oci_layer_scanner.py +0 -0
  663. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/pytorch_binary_scanner.py +0 -0
  664. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/pytorch_zip_support/__init__.py +0 -0
  665. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/pytorch_zip_support/archive_members.py +0 -0
  666. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/tensorrt_scanner.py +0 -0
  667. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/text_scanner.py +0 -0
  668. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/tf_metagraph_scanner.py +0 -0
  669. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/tflite_scanner.py +0 -0
  670. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/scanners/torch7_scanner.py +0 -0
  671. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/__init__.py +0 -0
  672. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/_path_hardening.py +0 -0
  673. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/auto_defaults.py +0 -0
  674. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/file/__init__.py +0 -0
  675. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/file/_compression.py +0 -0
  676. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/file/handlers.py +0 -0
  677. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/file/large_file_handler.py +0 -0
  678. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/__init__.py +0 -0
  679. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/assets.py +0 -0
  680. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/code_validation.py +0 -0
  681. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/disk_space.py +0 -0
  682. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/file_hash.py +0 -0
  683. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/file_iterator.py +0 -0
  684. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/interrupt_handler.py +0 -0
  685. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/ml_context.py +0 -0
  686. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/helpers/secure_hasher.py +0 -0
  687. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/lfs.py +0 -0
  688. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/model_extensions.py +0 -0
  689. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/sources/__init__.py +0 -0
  690. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/sources/_huggingface_cache.py +0 -0
  691. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/sources/pytorch_hub.py +0 -0
  692. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/utils/tensorflow_compat.py +0 -0
  693. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/version.py +0 -0
  694. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/whitelists/__init__.py +0 -0
  695. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/whitelists/huggingface_organizations.py +0 -0
  696. {modelaudit-0.2.36 → modelaudit-0.2.38}/modelaudit/whitelists/huggingface_popular.py +0 -0
  697. {modelaudit-0.2.36 → modelaudit-0.2.38}/package.json +0 -0
  698. {modelaudit-0.2.36 → modelaudit-0.2.38}/packages/modelaudit-picklescan/src/modelaudit_picklescan/__init__.py +0 -0
  699. {modelaudit-0.2.36 → modelaudit-0.2.38}/packages/modelaudit-picklescan/src/modelaudit_picklescan/py.typed +0 -0
  700. {modelaudit-0.2.36 → modelaudit-0.2.38}/packages/modelaudit-picklescan/src/modelaudit_picklescan/report.py +0 -0
  701. {modelaudit-0.2.36 → modelaudit-0.2.38}/packages/modelaudit-picklescan/tests/conftest.py +0 -0
  702. {modelaudit-0.2.36 → modelaudit-0.2.38}/packages/modelaudit-picklescan/tests/test_import_boundary.py +0 -0
  703. {modelaudit-0.2.36 → modelaudit-0.2.38}/packages/modelaudit-picklescan/uv.lock +0 -0
  704. {modelaudit-0.2.36 → modelaudit-0.2.38}/pyproject.toml.example +0 -0
  705. {modelaudit-0.2.36 → modelaudit-0.2.38}/renovate.json +0 -0
  706. {modelaudit-0.2.36 → modelaudit-0.2.38}/scripts/benchmark_report.py +0 -0
  707. {modelaudit-0.2.36 → modelaudit-0.2.38}/scripts/fetch_hf_org_models.py +0 -0
  708. {modelaudit-0.2.36 → modelaudit-0.2.38}/scripts/fetch_hf_top_models.py +0 -0
  709. {modelaudit-0.2.36 → modelaudit-0.2.38}/scripts/generate_keras_layer_inventory.py +0 -0
  710. {modelaudit-0.2.36 → modelaudit-0.2.38}/scripts/jax_flax_scanning_demo.py +0 -0
  711. {modelaudit-0.2.36 → modelaudit-0.2.38}/scripts/minimal_circular_check.py +0 -0
  712. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/__init__.py +0 -0
  713. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_analysis_modules.py +0 -0
  714. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_anomaly_detector.py +0 -0
  715. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_enhanced_pattern_detector.py +0 -0
  716. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_entropy_analyzer.py +0 -0
  717. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_framework_patterns.py +0 -0
  718. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_ml_context_analyzer.py +0 -0
  719. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_opcode_sequence_analyzer.py +0 -0
  720. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/analysis/test_unified_context.py +0 -0
  721. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit1_basic_torch_bypass.pkl +0 -0
  722. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit2_advanced_torch_bypass.pkl +0 -0
  723. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit3_sophisticated_hybrid.pkl +0 -0
  724. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit4_supply_chain_attack.pkl +0 -0
  725. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit5_ultra_high_confidence.pkl +0 -0
  726. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit6_ordereddict_bypass.pkl +0 -0
  727. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit7_nested_collections.pkl +0 -0
  728. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit9_manual_construction.pkl +0 -0
  729. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/exploits/exploit_ultimate_50pct.pkl +0 -0
  730. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_7z_test_assets.py +0 -0
  731. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_advanced_pickle_tests.py +0 -0
  732. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_evil_pickle.py +0 -0
  733. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_jinja2_test_assets.py +0 -0
  734. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_nested_pickle_assets.py +0 -0
  735. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_os_alias_tests.py +0 -0
  736. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_safe_nested_assets.py +0 -0
  737. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/generators/generate_security_assets.py +0 -0
  738. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/pickles/memo_attack.pkl +0 -0
  739. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/pickles/multiple_stream_attack.pkl +0 -0
  740. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/pickles/nt_alias_attack.pkl +0 -0
  741. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/pickles/posix_alias_attack.pkl +0 -0
  742. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/pickles/stack_global_attack.pkl +0 -0
  743. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/archives/path_traversal.zip +0 -0
  744. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/archives/safe_model.zip +0 -0
  745. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/benign/chatml_format.json +0 -0
  746. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/benign/complex_legitimate.json +0 -0
  747. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/benign/conditional_system.json +0 -0
  748. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/benign/huggingface_llama.json +0 -0
  749. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/benign/simple_roles.json +0 -0
  750. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/benign/special_tokens.json +0 -0
  751. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/edge_cases/empty_template.json +0 -0
  752. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/edge_cases/malformed_template.json +0 -0
  753. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/edge_cases/multiple_templates.json +0 -0
  754. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/edge_cases/no_template.json +0 -0
  755. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/edge_cases/oversized_template.json +0 -0
  756. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/attr_bypass.json +0 -0
  757. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/combined_attack.json +0 -0
  758. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/config_exploit.json +0 -0
  759. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/cve_2024_34359_original.json +0 -0
  760. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/direct_eval.json +0 -0
  761. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/env_extraction.json +0 -0
  762. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/file_access.json +0 -0
  763. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/hex_bypass.json +0 -0
  764. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/loop_discovery.json +0 -0
  765. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/network_exfil.json +0 -0
  766. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/request_exploit.json +0 -0
  767. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/malicious/subprocess_injection.json +0 -0
  768. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/obfuscated/base64_payload.json +0 -0
  769. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/obfuscated/char_construction.json +0 -0
  770. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/obfuscated/format_bypass.json +0 -0
  771. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/obfuscated/getattr_bypass.json +0 -0
  772. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/standalone/benign_chat.j2 +0 -0
  773. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/standalone/malicious_standalone.jinja +0 -0
  774. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/standalone/suspicious_benign.template +0 -0
  775. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/yaml/malicious_config.yaml +0 -0
  776. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/jinja2/yaml/model_config.yaml +0 -0
  777. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/keras/custom_layer_attack.h5 +0 -0
  778. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/keras/loss_injection.h5 +0 -0
  779. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/keras/malicious_lambda.h5 +0 -0
  780. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/keras/metric_injection.h5 +0 -0
  781. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/keras/safe_model.h5 +0 -0
  782. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/manifests/safe_config.json +0 -0
  783. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/manifests/suspicious_config.json +0 -0
  784. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/decode_exec_chain.pkl +0 -0
  785. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/dill_func.pkl +0 -0
  786. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/malicious_model_realistic.pkl +0 -0
  787. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/malicious_system_call.pkl +0 -0
  788. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/nested_pickle_base64.pkl +0 -0
  789. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/nested_pickle_hex.pkl +0 -0
  790. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/nested_pickle_multistage.pkl +0 -0
  791. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/nested_pickle_raw.pkl +0 -0
  792. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/safe_data.pkl +0 -0
  793. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/safe_large_model.pkl +0 -0
  794. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/safe_model_with_binary.pkl +0 -0
  795. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/safe_model_with_encoding.pkl +0 -0
  796. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/safe_model_with_tokens.pkl +0 -0
  797. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/safe_nested_structure.pkl +0 -0
  798. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pickles/simple_nested.pkl +0 -0
  799. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pipeline.skops +0 -0
  800. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pytorch/malicious_eval.pt +0 -0
  801. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/pytorch/safe_model.pt +0 -0
  802. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/tensorflow/malicious_pyfunc/saved_model.pb +0 -0
  803. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/samples/tensorflow/safe_savedmodel/saved_model.pb +0 -0
  804. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/agpl_component/agpl_model.pkl +0 -0
  805. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/agpl_component/neural_network.py +0 -0
  806. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mit_model/config.json +0 -0
  807. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mit_model/model.py +0 -0
  808. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mit_model/model_weights.pkl +0 -0
  809. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mixed_licenses/LICENSE +0 -0
  810. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mixed_licenses/apache_component.py +0 -0
  811. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mixed_licenses/dataset_cc_nc.json +0 -0
  812. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mixed_licenses/gpl_utility.py +0 -0
  813. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/mixed_licenses/mixed_model.pkl +0 -0
  814. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/unlicensed_dataset/embeddings.npy +0 -0
  815. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/unlicensed_dataset/features.csv +0 -0
  816. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/license_scenarios/unlicensed_dataset/training_data.json +0 -0
  817. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/security_scenarios/mixed_malicious_model/config.json +0 -0
  818. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/assets/scenarios/security_scenarios/mixed_malicious_model/model.pkl +0 -0
  819. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/cache/__init__.py +0 -0
  820. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/cache/test_optimized_config.py +0 -0
  821. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/cli_output.py +0 -0
  822. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/config/__init__.py +0 -0
  823. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/config/test_name_blacklist.py +0 -0
  824. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/demo_license_functionality.py +0 -0
  825. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/detectors/test_builtin_detection.py +0 -0
  826. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/detectors/test_compile_eval_variants.py +0 -0
  827. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/detectors/test_cve_detection.py +0 -0
  828. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/detectors/test_jit_script_detector.py +0 -0
  829. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/detectors/test_runpy_detection.py +0 -0
  830. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/detectors/test_secrets_detector.py +0 -0
  831. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/helpers/frameworks.py +0 -0
  832. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/integrations/test_license_checker.py +0 -0
  833. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/integrations/test_license_integration.py +0 -0
  834. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/integrations/test_mlflow_integration.py +0 -0
  835. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/integrations/test_sbom_license_integration.py +0 -0
  836. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/integrations/test_sbom_url_fixes.py +0 -0
  837. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/progress/__init__.py +0 -0
  838. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/progress/test_base.py +0 -0
  839. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_cntk_scanner.py +0 -0
  840. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_compressed_scanner.py +0 -0
  841. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_coreml_scanner.py +0 -0
  842. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_jax_checkpoint_scanner.py +0 -0
  843. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_oci_layer_scanner.py +0 -0
  844. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_onnx_dependency_handling.py +0 -0
  845. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_paddle_scanner.py +0 -0
  846. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_rule_code_registry_consistency.py +0 -0
  847. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_skops_content_analysis.py +0 -0
  848. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_tensorrt_scanner.py +0 -0
  849. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_tf_metagraph_scanner.py +0 -0
  850. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_tf_savedmodel_scanner.py +0 -0
  851. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/scanners/test_torch7_scanner.py +0 -0
  852. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_asset_inventory_integration.py +0 -0
  853. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_asset_list.py +0 -0
  854. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_auth_config.py +0 -0
  855. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_basic.py +0 -0
  856. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_benchmark_report.py +0 -0
  857. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_bug1_confidence_exploit.py +0 -0
  858. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cache_cli.py +0 -0
  859. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cache_optimizations.py +0 -0
  860. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_checks_recording.py +0 -0
  861. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cli_cache_dir.py +0 -0
  862. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cli_default_command.py +0 -0
  863. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cli_file_filtering.py +0 -0
  864. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cli_license_integration.py +0 -0
  865. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cli_logging_handlers.py +0 -0
  866. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cli_output.py +0 -0
  867. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cloud_url_detection.py +0 -0
  868. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_core_asset_extraction.py +0 -0
  869. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_cve_2025_10155_bin_pickle.py +0 -0
  870. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_debug_command.py +0 -0
  871. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_double_interrupt.py +0 -0
  872. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_false_positive_fixes.py +0 -0
  873. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_file_hash.py +0 -0
  874. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_gguf_sbom_integration.py +0 -0
  875. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_graceful_degradation.py +0 -0
  876. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_header_discrepancy.py +0 -0
  877. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_huggingface_extensions.py +0 -0
  878. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_huggingface_symlinks.py +0 -0
  879. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_importlib_detection.py +0 -0
  880. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_jax_flax_integration.py +0 -0
  881. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_lazy_loading_integration.py +0 -0
  882. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_manifest_name_policy.py +0 -0
  883. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_os_alias_detection.py +0 -0
  884. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_os_subprocess_detection.py +0 -0
  885. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_path_traversal.py +0 -0
  886. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_performance_benchmarks.py +0 -0
  887. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_progress.py +0 -0
  888. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_pydantic_models.py +0 -0
  889. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_python_version_warning.py +0 -0
  890. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_pytorch_zip_detection.py +0 -0
  891. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_real_world_dill_joblib.py +0 -0
  892. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_safetensors_optimization.py +0 -0
  893. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_secure_hasher.py +0 -0
  894. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_security_asset_integration.py +0 -0
  895. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_shebang_context.py +0 -0
  896. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_simple_jinja2.py +0 -0
  897. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_sklearn_joblib_false_positive.py +0 -0
  898. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_tensorflow_lambda_detection.py +0 -0
  899. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_timeout_configuration.py +0 -0
  900. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_utils.py +0 -0
  901. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_weak_hash_detection.py +0 -0
  902. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_webbrowser_detection.py +0 -0
  903. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_why_explanations.py +0 -0
  904. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/test_xdist_status.py +0 -0
  905. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/__init__.py +0 -0
  906. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/file/__init__.py +0 -0
  907. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/file/test_advanced_file_handler.py +0 -0
  908. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/file/test_integration_file_type_demo.py +0 -0
  909. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/file/test_large_file_handler.py +0 -0
  910. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/file/test_streaming_preview.py +0 -0
  911. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_asset_from_scan_result.py +0 -0
  912. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_auto_defaults.py +0 -0
  913. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_code_validation.py +0 -0
  914. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_disk_space.py +0 -0
  915. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_file_iterator.py +0 -0
  916. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_interrupt_handling.py +0 -0
  917. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_ml_context_false_positives.py +0 -0
  918. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/helpers/test_secure_hasher.py +0 -0
  919. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/sources/test_pytorch_hub.py +0 -0
  920. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/utils/test_lfs.py +0 -0
  921. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/whitelists/__init__.py +0 -0
  922. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/whitelists/test_combined.py +0 -0
  923. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/whitelists/test_huggingface_popular.py +0 -0
  924. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/whitelists/test_organizations.py +0 -0
  925. {modelaudit-0.2.36 → modelaudit-0.2.38}/tests/xdist_status.py +0 -0
@@ -0,0 +1,17 @@
1
+ # Summary
2
+
3
+ Describe the change and user impact.
4
+
5
+ ## Validation
6
+
7
+ - [ ] `uv run ruff format --check modelaudit/ packages/modelaudit-picklescan/src packages/modelaudit-picklescan/tests tests/`
8
+ - [ ] `uv run ruff check modelaudit/ packages/modelaudit-picklescan/src packages/modelaudit-picklescan/tests tests/`
9
+ - [ ] `uv run mypy modelaudit/ packages/modelaudit-picklescan/src packages/modelaudit-picklescan/tests tests/`
10
+ - [ ] `uv run pytest -n auto -m "not slow and not integration" --maxfail=1`
11
+
12
+ ## Checklist
13
+
14
+ - [ ] I followed the security-first guidelines in `AGENTS.md`.
15
+ - [ ] I did not weaken detection behavior.
16
+ - [ ] I added/updated tests when behavior changed.
17
+ - [ ] I updated docs where needed.
@@ -0,0 +1,17 @@
1
+ # GitHub Actions Workflows
2
+
3
+ | Workflow | File | Triggers |
4
+ | -------------------------- | ----------------------- | ----------------------------------------- |
5
+ | **Python CI** | `test.yml` | Python, workflow, and dependency changes |
6
+ | **Performance Benchmarks** | `perf.yml` | PRs, pushes to main, manual dispatch |
7
+ | **Documentation Check** | `docs-check.yml` | Markdown/text/RST/license changes |
8
+ | **Docker Image CI** | `docker-image-test.yml` | Dockerfile or Python code changes |
9
+ | **Validate PR Title** | `validate-pr-title.yml` | PR open/edit events |
10
+ | **CodeQL** | `codeql.yml` | Pushes, PRs, weekly schedule, manual runs |
11
+ | **Nightly CI** | `nightly.yml` | Nightly schedule and manual dispatch |
12
+ | **Release** | `release-please.yml` | Pushes to main and manual dispatch |
13
+ | **Docker Publish** | `docker-publish.yml` | Published releases and manual dispatch |
14
+
15
+ Python CI ignores documentation-only PRs, which are handled by the documentation check workflow. Code PRs run fast feedback on Python 3.12, root matrix coverage on Python 3.10 and 3.13, the NumPy compatibility lane on Python 3.10 and 3.11, Windows tests on Python 3.11, and the standalone pickle package matrix on Python 3.10-3.13. Pushes to `main` run the full root and NumPy matrices across Python 3.10-3.13.
16
+
17
+ The performance workflow posts a sticky benchmark summary comment on same-repo PRs, uploads benchmark JSON plus Markdown summaries as workflow artifacts, and reports regressions or missing benchmarks without blocking the PR.
@@ -0,0 +1,63 @@
1
+ name: CodeQL Security Analysis
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+ schedule:
11
+ # Run weekly on Monday at 06:00 UTC
12
+ - cron: "0 6 * * 1"
13
+ workflow_dispatch:
14
+
15
+ permissions:
16
+ actions: read
17
+ contents: read
18
+ security-events: write
19
+
20
+ concurrency:
21
+ group: ${{ github.workflow }}-${{ github.ref }}
22
+ cancel-in-progress: ${{ github.event_name == 'pull_request' }}
23
+
24
+ jobs:
25
+ analyze-python:
26
+ name: Analyze Python
27
+ runs-on: ubuntu-latest
28
+ timeout-minutes: 20
29
+ steps:
30
+ - name: Checkout repo
31
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
32
+
33
+ - name: Initialize CodeQL
34
+ uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4
35
+ with:
36
+ languages: python
37
+ build-mode: none
38
+
39
+ - name: Perform CodeQL Analysis
40
+ uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
41
+ with:
42
+ category: "/language:python"
43
+ upload: ${{ github.event.pull_request.head.repo.fork == true && 'never' || 'always' }}
44
+
45
+ analyze-actions:
46
+ name: Analyze GitHub Actions
47
+ runs-on: ubuntu-latest
48
+ timeout-minutes: 20
49
+ steps:
50
+ - name: Checkout repo
51
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
52
+
53
+ - name: Initialize CodeQL
54
+ uses: github/codeql-action/init@c10b8064de6f491fea524254123dbe5e09572f13 # v4
55
+ with:
56
+ languages: actions
57
+ build-mode: none
58
+
59
+ - name: Perform CodeQL Analysis
60
+ uses: github/codeql-action/analyze@c10b8064de6f491fea524254123dbe5e09572f13 # v4
61
+ with:
62
+ category: "/language:actions"
63
+ upload: ${{ github.event.pull_request.head.repo.fork == true && 'never' || 'always' }}
@@ -0,0 +1,200 @@
1
+ name: Docker Image CI
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "Dockerfile*"
7
+ - ".dockerignore"
8
+ - "modelaudit/**"
9
+ - "packages/modelaudit-picklescan/**"
10
+ - "pyproject.toml"
11
+ - "uv.lock"
12
+ - ".github/workflows/docker-image-test.yml"
13
+ push:
14
+ branches:
15
+ - main
16
+ workflow_dispatch:
17
+
18
+ permissions:
19
+ contents: read
20
+ pull-requests: read
21
+
22
+ jobs:
23
+ # Detect what changed to optimize Docker builds
24
+ changes:
25
+ name: Detect Docker Changes
26
+ runs-on: ubuntu-latest
27
+ outputs:
28
+ docker: ${{ steps.filter.outputs.docker }}
29
+ full-image: ${{ steps.filter.outputs.full-image }}
30
+ steps:
31
+ - uses: actions/checkout@v6
32
+ - uses: dorny/paths-filter@v4
33
+ id: filter
34
+ with:
35
+ filters: |
36
+ docker:
37
+ - 'Dockerfile*'
38
+ - '.dockerignore'
39
+ - 'modelaudit/**'
40
+ - 'packages/modelaudit-picklescan/**'
41
+ - 'pyproject.toml'
42
+ - 'uv.lock'
43
+ - '.github/workflows/docker-image-test.yml'
44
+ full-image:
45
+ - 'Dockerfile.full'
46
+ - 'packages/modelaudit-picklescan/**'
47
+ - '.github/workflows/docker-image-test.yml'
48
+
49
+ build-test-lightweight:
50
+ name: Build and Test Lightweight Docker Image
51
+ needs: changes
52
+ # Only run if Docker-related files changed
53
+ if: needs.changes.outputs.docker == 'true'
54
+ runs-on: ubuntu-latest
55
+ timeout-minutes: 30 # Increased for reliability
56
+ steps:
57
+ - uses: actions/checkout@v6
58
+
59
+ - name: Set up Docker Buildx
60
+ uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
61
+
62
+ - name: Build lightweight image
63
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
64
+ with:
65
+ context: .
66
+ file: Dockerfile
67
+ tags: modelaudit:lightweight
68
+ load: true
69
+ cache-from: type=gha,scope=lightweight
70
+ cache-to: type=gha,mode=max,scope=lightweight
71
+ build-args: |
72
+ BUILDKIT_INLINE_CACHE=1
73
+
74
+ - name: Test lightweight container help command
75
+ run: |
76
+ docker run --rm modelaudit:lightweight --help
77
+
78
+ - name: Test lightweight container scan help
79
+ run: |
80
+ docker run --rm modelaudit:lightweight scan --help
81
+
82
+ - name: Test lightweight container version
83
+ run: |
84
+ # Test that the package is properly installed
85
+ docker run --rm modelaudit:lightweight --version
86
+
87
+ - name: Test lightweight container with invalid command
88
+ run: |
89
+ # This should fail gracefully
90
+ docker run --rm modelaudit:lightweight invalid-command && exit 1 || echo "Command properly rejected invalid input"
91
+
92
+ - name: Scan image for vulnerabilities
93
+ uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # 0.35.0
94
+ with:
95
+ # Pin an explicit released Trivy binary to avoid setup failures when
96
+ # auto-resolved tags exist without matching release assets.
97
+ version: v0.69.2
98
+ image-ref: modelaudit:lightweight
99
+ format: table
100
+ exit-code: "1"
101
+ severity: CRITICAL,HIGH
102
+ ignore-unfixed: true
103
+
104
+ - name: Test lightweight container with actual scan
105
+ run: |
106
+ # Create a test model file using Docker to ensure Python is available
107
+ docker run --rm -v $(pwd):/data python:3.11-slim@sha256:543d6cace00ffc96bc95d332493bb28a4332c6dd614aab5fcbd649ae8a7953d9 sh -c "python -c \"import pickle; pickle.dump({'test': 'data'}, open('/data/test.pkl', 'wb'))\""
108
+ # Now scan the created file
109
+ docker run --rm -v $(pwd):/data modelaudit:lightweight /data/test.pkl
110
+
111
+ build-test-full:
112
+ name: Build and Test Full Docker Image
113
+ needs: [changes, build-test-lightweight]
114
+ runs-on: ubuntu-latest
115
+ timeout-minutes: 90 # Increased for large ML dependency builds
116
+ # Only run if Dockerfile.full specifically changed
117
+ if: needs.changes.outputs.full-image == 'true'
118
+ steps:
119
+ - uses: actions/checkout@v6
120
+
121
+ - name: Set up QEMU
122
+ uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4
123
+
124
+ - name: Set up Docker Buildx
125
+ uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
126
+
127
+ - name: Build full image
128
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
129
+ with:
130
+ context: .
131
+ file: Dockerfile.full
132
+ tags: modelaudit:full
133
+ load: true
134
+ cache-from: type=gha,scope=full
135
+ cache-to: type=gha,mode=max,scope=full
136
+ build-args: |
137
+ BUILDKIT_INLINE_CACHE=1
138
+ timeout-minutes: 60 # Increased timeout for ML dependency build
139
+
140
+ - name: Test full container help command
141
+ run: |
142
+ docker run --rm modelaudit:full --help
143
+
144
+ - name: Test full container scan help
145
+ run: |
146
+ docker run --rm modelaudit:full scan --help
147
+
148
+ - name: Test full container version
149
+ run: |
150
+ # Test that the package is properly installed
151
+ docker run --rm modelaudit:full --version
152
+
153
+ - name: Test full container runs as non-root
154
+ run: |
155
+ docker run --rm modelaudit:full python -c "import os; uid = os.getuid(); print(f'Container UID: {uid}'); assert uid == 10001"
156
+
157
+ - name: Scan image for vulnerabilities
158
+ uses: aquasecurity/trivy-action@57a97c7e7821a5776cebc9bb87c984fa69cba8f1 # 0.35.0
159
+ with:
160
+ # Keep full-image scan on the same pinned released Trivy version.
161
+ version: v0.69.2
162
+ image-ref: modelaudit:full
163
+ format: table
164
+ exit-code: "1"
165
+ severity: CRITICAL,HIGH
166
+ ignore-unfixed: true
167
+
168
+ - name: Verify ML dependencies in full image
169
+ run: |
170
+ # Test that ML dependencies are available
171
+ docker run --rm modelaudit:full python -c "import tensorflow, torch, onnx; print('All ML dependencies available')" || echo "Warning: Some ML dependencies missing"
172
+
173
+ - name: Test full container with ML model scan
174
+ run: |
175
+ # Create the fixture with a root Python image because the full image intentionally runs as UID 10001.
176
+ docker run --rm -v $(pwd):/data python:3.11-slim@sha256:543d6cace00ffc96bc95d332493bb28a4332c6dd614aab5fcbd649ae8a7953d9 sh -c "python -c \"import pickle; pickle.dump({'test': 'data', 'numbers': [1, 2, 3]}, open('/data/test_numpy.pkl', 'wb')); print('Created test model')\""
177
+ # Scan the bind-mounted model as the non-root full image.
178
+ docker run --rm -v $(pwd):/data modelaudit:full /data/test_numpy.pkl
179
+
180
+ docker-ci-success:
181
+ name: Docker CI Success
182
+ needs: [build-test-lightweight]
183
+ # Don't require full image test to pass since it's conditional
184
+ if: always()
185
+ runs-on: ubuntu-latest
186
+ steps:
187
+ - name: Check if required jobs succeeded
188
+ run: |
189
+ LIGHTWEIGHT_RESULT="${{ needs.build-test-lightweight.result }}"
190
+ echo "Lightweight Docker build result: $LIGHTWEIGHT_RESULT"
191
+
192
+ # Success or skipped are both acceptable
193
+ # (skipped means the path filters determined the job wasn't needed)
194
+ if [[ "$LIGHTWEIGHT_RESULT" == "success" || "$LIGHTWEIGHT_RESULT" == "skipped" ]]; then
195
+ echo "Docker CI checks passed (or were skipped due to path filters)!"
196
+ exit 0
197
+ else
198
+ echo "Docker CI checks failed!"
199
+ exit 1
200
+ fi
@@ -0,0 +1,70 @@
1
+ name: Docker Publish
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+ workflow_dispatch:
7
+ inputs:
8
+ tag:
9
+ description: "Image tag (e.g., 0.2.26)"
10
+ required: true
11
+
12
+ permissions:
13
+ contents: read
14
+ packages: write
15
+
16
+ env:
17
+ REGISTRY: ghcr.io
18
+ IMAGE_NAME: ${{ github.repository }}
19
+
20
+ jobs:
21
+ publish:
22
+ name: Build and Push Docker Image
23
+ runs-on: ubuntu-latest
24
+ timeout-minutes: 30
25
+ steps:
26
+ - name: Checkout repo
27
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
28
+
29
+ - name: Set up QEMU
30
+ uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4
31
+
32
+ - name: Set up Docker Buildx
33
+ uses: docker/setup-buildx-action@4d04d5d9486b7bd6fa91e7baf45bbb4f8b9deedd # v4
34
+
35
+ - name: Log in to GHCR
36
+ uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121 # v4
37
+ with:
38
+ registry: ${{ env.REGISTRY }}
39
+ username: ${{ github.actor }}
40
+ password: ${{ secrets.GITHUB_TOKEN }}
41
+
42
+ - name: Extract metadata
43
+ id: meta
44
+ uses: docker/metadata-action@030e881283bb7a6894de51c315a6bfe6a94e05cf # v6
45
+ with:
46
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
47
+ tags: |
48
+ type=semver,pattern={{version}}
49
+ type=semver,pattern={{major}}.{{minor}}
50
+ type=sha
51
+ type=raw,value=latest,enable=${{ github.event_name == 'release' }}
52
+ type=raw,value=${{ inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }}
53
+
54
+ - name: Build and push lightweight image
55
+ uses: docker/build-push-action@bcafcacb16a39f128d818304e6c9c0c18556b85f # v7
56
+ with:
57
+ context: .
58
+ file: Dockerfile
59
+ platforms: linux/amd64,linux/arm64
60
+ push: true
61
+ tags: ${{ steps.meta.outputs.tags }}
62
+ labels: ${{ steps.meta.outputs.labels }}
63
+ cache-from: type=gha,scope=publish-lightweight
64
+ cache-to: type=gha,mode=max,scope=publish-lightweight
65
+
66
+ - name: Verify published image
67
+ run: |
68
+ # Pull and verify the image works
69
+ docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${GITHUB_SHA::7}
70
+ docker run --rm ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:sha-${GITHUB_SHA::7} --version
@@ -0,0 +1,75 @@
1
+ name: Documentation Check
2
+
3
+ on:
4
+ pull_request:
5
+ paths:
6
+ - "**.md"
7
+ - "**.txt"
8
+ - "**.rst"
9
+ - "LICENSE*"
10
+ - ".github/workflows/docs-check.yml"
11
+ push:
12
+ branches:
13
+ - main
14
+ paths:
15
+ - "**.md"
16
+ - "**.txt"
17
+ - "**.rst"
18
+ - "LICENSE*"
19
+ - ".github/workflows/docs-check.yml"
20
+
21
+ permissions:
22
+ contents: read
23
+
24
+ jobs:
25
+ format-check:
26
+ name: Check Documentation Formatting
27
+ runs-on: ubuntu-latest
28
+ timeout-minutes: 5
29
+ steps:
30
+ - name: Checkout repo
31
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
32
+
33
+ - name: Get changed files
34
+ id: changed-files
35
+ uses: tj-actions/changed-files@24d32ffd492484c1d75e0c0b894501ddb9d30d62 # v47
36
+ with:
37
+ files: |
38
+ **.md
39
+ **.yaml
40
+ **.yml
41
+ **.json
42
+
43
+ - name: Setup Node.js
44
+ if: steps.changed-files.outputs.any_changed == 'true'
45
+ uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6
46
+ with:
47
+ node-version: "24"
48
+
49
+ - name: Install Node dependencies
50
+ if: steps.changed-files.outputs.any_changed == 'true'
51
+ run: npm ci --ignore-scripts
52
+
53
+ - name: Check markdown formatting with prettier
54
+ if: steps.changed-files.outputs.any_changed == 'true'
55
+ run: |
56
+ echo "Checking formatting for changed files:"
57
+ echo "${{ steps.changed-files.outputs.all_changed_files }}"
58
+ npx prettier --check ${{ steps.changed-files.outputs.all_changed_files }} || (
59
+ echo "Documentation is not properly formatted. Run:"
60
+ echo "npm ci --ignore-scripts && npx prettier --write '**/*.{md,yaml,yml,json}'"
61
+ exit 1
62
+ )
63
+
64
+ - name: Skip if no relevant files changed
65
+ if: steps.changed-files.outputs.any_changed == 'false'
66
+ run: echo "No documentation files changed, skipping formatting check"
67
+
68
+ - name: Check for broken links in markdown
69
+ if: steps.changed-files.outputs.any_changed == 'true'
70
+ uses: gaurav-nelson/github-action-markdown-link-check@5c5dfc0ac2e225883c0e5f03a85311ec2830d368 # v1
71
+ with:
72
+ use-quiet-mode: "yes"
73
+ use-verbose-mode: "no"
74
+ config-file: ".github/markdown-link-check-config.json"
75
+ continue-on-error: true # Don't fail on broken external links
@@ -0,0 +1,81 @@
1
+ name: Nightly CI
2
+
3
+ on:
4
+ schedule:
5
+ # Run daily at 04:00 UTC
6
+ - cron: "0 4 * * *"
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ full-matrix:
14
+ name: Full Tests (Python ${{ matrix.python-version }})
15
+ runs-on: ubuntu-latest
16
+ timeout-minutes: 45
17
+ strategy:
18
+ fail-fast: false
19
+ matrix:
20
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
21
+ steps:
22
+ - name: Checkout repo
23
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
24
+
25
+ - name: Install uv
26
+ uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
27
+ with:
28
+ enable-cache: true
29
+
30
+ - name: Pin Python version
31
+ run: |
32
+ uv python pin ${{ matrix.python-version }}
33
+
34
+ - name: Install Rust toolchain
35
+ run: |
36
+ rustup toolchain install stable --profile minimal
37
+ rustup default stable
38
+
39
+ - name: Sync dependencies
40
+ run: |
41
+ uv sync --extra all-ci
42
+
43
+ - name: Run standalone picklescan Rust tests
44
+ run: |
45
+ cargo test --manifest-path packages/modelaudit-picklescan/Cargo.toml
46
+
47
+ - name: Run all tests (fast + slow + integration + performance)
48
+ run: |
49
+ uv run pytest -n auto --tb=short --durations=20
50
+
51
+ windows-full:
52
+ name: Windows Full Tests (Python 3.11)
53
+ runs-on: windows-latest
54
+ timeout-minutes: 45
55
+ steps:
56
+ - name: Checkout repo
57
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
58
+
59
+ - name: Install uv
60
+ uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7
61
+
62
+ - name: Pin Python version
63
+ run: |
64
+ uv python pin 3.11
65
+
66
+ - name: Install Rust toolchain
67
+ run: |
68
+ rustup toolchain install stable --profile minimal
69
+ rustup default stable
70
+
71
+ - name: Sync dependencies
72
+ run: |
73
+ uv sync --extra all-ci-windows
74
+
75
+ - name: Run standalone picklescan Rust tests
76
+ run: |
77
+ cargo test --manifest-path packages/modelaudit-picklescan/Cargo.toml
78
+
79
+ - name: Run all tests
80
+ run: |
81
+ uv run pytest -n auto --tb=short --durations=20