circuitkit 0.1.2__tar.gz → 0.1.4__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 (760) hide show
  1. {circuitkit-0.1.2 → circuitkit-0.1.4}/PKG-INFO +5 -2
  2. {circuitkit-0.1.2 → circuitkit-0.1.4}/README.md +4 -1
  3. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/index.md +1 -1
  4. {circuitkit-0.1.2 → circuitkit-0.1.4}/pyproject.toml +1 -1
  5. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/__init__.py +1 -1
  6. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/api.py +19 -0
  7. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/circuit.py +32 -9
  8. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/main.py +136 -42
  9. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/quick.py +13 -20
  10. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/d3_template.py +266 -5
  11. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/graph_viz.py +238 -116
  12. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/PKG-INFO +5 -2
  13. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/SOURCES.txt +3 -0
  14. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_interfaces_e2e.py +27 -0
  15. circuitkit-0.1.4/tests/integration/test_yaml_run_advanced.py +123 -0
  16. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_circuit.py +28 -4
  17. circuitkit-0.1.4/tests/unit/test_d3_lod.py +74 -0
  18. circuitkit-0.1.4/tests/unit/test_graph_viz_bounded.py +210 -0
  19. circuitkit-0.1.4/tests/unit/test_yaml_run_cli.py +435 -0
  20. circuitkit-0.1.2/tests/unit/test_yaml_run_cli.py +0 -255
  21. {circuitkit-0.1.2 → circuitkit-0.1.4}/.github/workflows/docs.yml +0 -0
  22. {circuitkit-0.1.2 → circuitkit-0.1.4}/.github/workflows/patch-release.yml +0 -0
  23. {circuitkit-0.1.2 → circuitkit-0.1.4}/LICENSE.md +0 -0
  24. {circuitkit-0.1.2 → circuitkit-0.1.4}/MANIFEST.in +0 -0
  25. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/API_REFERENCE.md +0 -0
  26. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/INSTALLATION.md +0 -0
  27. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/faq.md +0 -0
  28. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/license.md +0 -0
  29. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/release-notes.md +0 -0
  30. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/about/roadmap.md +0 -0
  31. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/architecture-registry.md +0 -0
  32. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/chat-templates.md +0 -0
  33. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/circuit-artifacts.md +0 -0
  34. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/hallucination-detection.md +0 -0
  35. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/memory-optimization.md +0 -0
  36. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/advanced/vllm-evaluation.md +0 -0
  37. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/acdc.md +0 -0
  38. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/capability-matrix.md +0 -0
  39. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/cdt.md +0 -0
  40. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/eap.md +0 -0
  41. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/ibcircuit.md +0 -0
  42. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/overview.md +0 -0
  43. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/algorithms/stability-tiers.md +0 -0
  44. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/applications.md +0 -0
  45. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/backends.md +0 -0
  46. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/dict-config.md +0 -0
  47. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/evaluation.md +0 -0
  48. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/flat-api.md +0 -0
  49. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/overview.md +0 -0
  50. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/pipeline.md +0 -0
  51. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/selectors.md +0 -0
  52. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/api-reference/tasks.md +0 -0
  53. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/blog/introducing-circuitkit.md +0 -0
  54. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/citation-map.md +0 -0
  55. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/applications.md +0 -0
  56. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/discovery.md +0 -0
  57. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/evaluation.md +0 -0
  58. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/overview.md +0 -0
  59. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/cli/yaml-config.md +0 -0
  60. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/documentation.md +0 -0
  61. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/new-algorithms.md +0 -0
  62. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/setup.md +0 -0
  63. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/standards.md +0 -0
  64. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/contributing/testing-on-cuda.md +0 -0
  65. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/dev_enterprise_runbook.md +0 -0
  66. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/ablation.md +0 -0
  67. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/baselines.md +0 -0
  68. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/benchmarking.md +0 -0
  69. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/causal-patching.md +0 -0
  70. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/framework.md +0 -0
  71. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/generalization.md +0 -0
  72. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/robustness.md +0 -0
  73. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/evaluation/stability.md +0 -0
  74. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/case-studies.md +0 -0
  75. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/notebooks.md +0 -0
  76. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/overview.md +0 -0
  77. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/examples/scripts.md +0 -0
  78. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/configuration.md +0 -0
  79. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/core-concepts.md +0 -0
  80. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/index.md +0 -0
  81. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/installation.md +0 -0
  82. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/quickstart.md +0 -0
  83. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/getting-started/taxonomy.md +0 -0
  84. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guidelines/Testing_Guidelines.md +0 -0
  85. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/CONCEPTS.md +0 -0
  86. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/circuit_artifact_guide.md +0 -0
  87. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/eap_ig_memory_optimization.md +0 -0
  88. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/hallucination_detection_guide.md +0 -0
  89. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/index.md +0 -0
  90. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/steering.md +0 -0
  91. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/guides/vllm_evaluation.md +0 -0
  92. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/product_blueprint.md +0 -0
  93. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/pypi_core_contract.md +0 -0
  94. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/reference/ARCHITECTURE_REGISTRY.md +0 -0
  95. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/reference/FEATURES.md +0 -0
  96. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/reference/index.md +0 -0
  97. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/references.md +0 -0
  98. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/trust/index.md +0 -0
  99. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/trust/results.md +0 -0
  100. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/trust/scope.md +0 -0
  101. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/applications.md +0 -0
  102. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/custom-data.md +0 -0
  103. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/data-corruption.md +0 -0
  104. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/data.md +0 -0
  105. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/evaluation.md +0 -0
  106. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/pipeline-overview.md +0 -0
  107. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/selectors.md +0 -0
  108. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/tasks.md +0 -0
  109. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/troubleshooting.md +0 -0
  110. {circuitkit-0.1.2 → circuitkit-0.1.4}/docs/user-guide/visualization.md +0 -0
  111. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/01-quickstart.py +0 -0
  112. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/02-discover-python-api.py +0 -0
  113. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/04-discover-yaml.py +0 -0
  114. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/05-evaluate-faithfulness.py +0 -0
  115. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/06-applications.py +0 -0
  116. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/07-pipeline.py +0 -0
  117. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/08-custom-data.py +0 -0
  118. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/09-load-and-reuse.py +0 -0
  119. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/10-steering.py +0 -0
  120. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/11-knowledge-editing.py +0 -0
  121. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/12-custom-corruption.py +0 -0
  122. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/13-transfer-matrix.py +0 -0
  123. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/14-faithfulness-audit-for-compliance.py +0 -0
  124. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/15-compression-for-deployment.py +0 -0
  125. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/16-tabular-model-audit.py +0 -0
  126. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/17-quantization-unlearning.py +0 -0
  127. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/18-banking-safety-steering.py +0 -0
  128. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/19-trade-finance-document-classification.py +0 -0
  129. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/20-transit-edge-deployment.py +0 -0
  130. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/21-quantization-permanent-unlearning.ipynb +0 -0
  131. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/22-gender-bias-audit-and-mitigation.ipynb +0 -0
  132. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/23-jailbreak-safety-steering.ipynb +0 -0
  133. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/case-studies/24-safety-refusal-custom-data.py +0 -0
  134. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/discovery/algorithm-comparison.py +0 -0
  135. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/discovery/benchmark-circuit-discovery.py +0 -0
  136. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e1_algo_validation_ioi.py +0 -0
  137. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e2_cross_family_discovery.py +0 -0
  138. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e3_neuron_level_ioi.py +0 -0
  139. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e4_custom_data_jailbreak.py +0 -0
  140. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/experiments/e567_downstream_applications.py +0 -0
  141. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/finetuning/finetune-llama.py +0 -0
  142. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/finetuning/finetune-qwen.py +0 -0
  143. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/00_colab_setup.ipynb +0 -0
  144. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/01_quickstart_pipeline.ipynb +0 -0
  145. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/02_algorithm_comparison.ipynb +0 -0
  146. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/03_custom_data_jailbreak.ipynb +0 -0
  147. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/04_evaluation_deep_dive.ipynb +0 -0
  148. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/05_visualization_gallery.ipynb +0 -0
  149. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/06_applications.ipynb +0 -0
  150. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/07_cli_and_yaml.ipynb +0 -0
  151. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/08_advanced_research_tools.ipynb +0 -0
  152. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/notebooks/demo_2p5min.ipynb +0 -0
  153. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/pruning/basic-prune.py +0 -0
  154. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/pruning/prune-llama.py +0 -0
  155. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/pruning/prune-qwen.py +0 -0
  156. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/quantization/quantize-llama.py +0 -0
  157. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/quantization/quantize-qwen.py +0 -0
  158. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/simple_csv_task.yaml +0 -0
  159. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/_common.py +0 -0
  160. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/_runner.py +0 -0
  161. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/01_eap_ig_activations_gpt2.py +0 -0
  162. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/02_eap_clean_corrupted_gpt2.py +0 -0
  163. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/03_eap_exact_gpt2.py +0 -0
  164. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/04_compare_eap_family_gpt2.py +0 -0
  165. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/05_atp_gd_gpt2.py +0 -0
  166. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/06_eap_gp_gpt2.py +0 -0
  167. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/07_relp_gpt2.py +0 -0
  168. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/08_ibcircuit_gpt2.py +0 -0
  169. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/09_peap_gpt2.py +0 -0
  170. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/10_cdt_gpt2.py +0 -0
  171. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/11_eap_ifr_gpt2.py +0 -0
  172. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/12_all_algos_llama.py +0 -0
  173. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/algos/_algos_common.py +0 -0
  174. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/01_pruning_gpt2_ioi.py +0 -0
  175. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/02_lora_healing_gpt2_ioi.py +0 -0
  176. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/03_pruning_gpt2_mmlu.py +0 -0
  177. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/04_pruning_gpt2_gender_bias.py +0 -0
  178. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/05_pruning_gpt2_sva.py +0 -0
  179. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/06_pruning_gpt2_capital_country.py +0 -0
  180. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/07_pruning_gpt2_boolq.py +0 -0
  181. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/08_pruning_gpt2_arc_easy.py +0 -0
  182. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/09_pruning_gpt2_hellaswag.py +0 -0
  183. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/10_pruning_gpt2_crows_pairs.py +0 -0
  184. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/11_knowledge_editing_gpt2.py +0 -0
  185. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/12_unlearning_tofu_gpt2.py +0 -0
  186. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/13_steering_gpt2_ioi.py +0 -0
  187. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/14_linear_probe_gpt2.py +0 -0
  188. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/15_hallucination_gpt2.py +0 -0
  189. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/16_peft_benchmark.py +0 -0
  190. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/17_knowledge_editing_full_gpt2.py +0 -0
  191. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/18_steering_safety_gpt2.py +0 -0
  192. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/19_quantization_llama1b.py +0 -0
  193. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/20_ctheta_steering_gpt2.py +0 -0
  194. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/21_ctheta_steering_llama1b.py +0 -0
  195. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/22_ctheta_advbench_refusal.py +0 -0
  196. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/23_ctheta_k_grid_gpt2.py +0 -0
  197. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/24_circuitkit_advbench_refusal_steering.py +0 -0
  198. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/25_knowledge_editing_llama_circuit.py +0 -0
  199. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/26_soft_healing_llama_circuit.py +0 -0
  200. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/27_hallucination_truthfulqa_llama.py +0 -0
  201. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/28_safety_dataset_pillar_evals.py +0 -0
  202. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/_apps_common.py +0 -0
  203. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/applications/_make_apps_cell.py +0 -0
  204. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/01_gpt2_ioi.py +0 -0
  205. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/02_gpt2_greater_than.py +0 -0
  206. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/03_llama1b_ioi.py +0 -0
  207. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/04_llama1b_greater_than.py +0 -0
  208. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/05_gpt2_mmlu.py +0 -0
  209. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/06_llama1b_mmlu.py +0 -0
  210. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/07_gpt2_gender_bias.py +0 -0
  211. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/08_gpt2_hypernymy.py +0 -0
  212. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/09_gpt2_sva.py +0 -0
  213. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/10_gpt2_capital_country.py +0 -0
  214. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/11_gpt2_boolq.py +0 -0
  215. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/12_gpt2_wmdp.py +0 -0
  216. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/13_gpt2_arc_easy.py +0 -0
  217. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/14_gpt2_arc_challenge.py +0 -0
  218. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/15_gpt2_hellaswag.py +0 -0
  219. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/16_gpt2_crows_pairs.py +0 -0
  220. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/17_gpt2_tofu.py +0 -0
  221. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/18_gpt2_gsm8k.py +0 -0
  222. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/99_aggregate.py +0 -0
  223. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/_bench_common.py +0 -0
  224. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/_custom_tasks.py +0 -0
  225. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/benchmark/_make_cell.py +0 -0
  226. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/01_pairwise_crowspairs.py +0 -0
  227. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/02_instruction_alpaca.py +0 -0
  228. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/03_conversational_sharegpt.py +0 -0
  229. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/04_mcq_mmlu_arc_hellaswag.py +0 -0
  230. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/05_forget_retain_tofu.py +0 -0
  231. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/06_strategies_all.py +0 -0
  232. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/07_e2e_discovery_mcq_gpt2.py +0 -0
  233. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/08_e2e_discovery_tofu_gpt2.py +0 -0
  234. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/09_e2e_discovery_crowspairs_llama1b.py +0 -0
  235. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/10_e2e_quality_stability_mcq_gpt2.py +0 -0
  236. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/11_e2e_all_algos_custom_mcq_gpt2.py +0 -0
  237. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/12_e2e_safety_advbench_gpt2.py +0 -0
  238. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/data/_data_common.py +0 -0
  239. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/master_aggregator.py +0 -0
  240. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/01_circuit_graph.py +0 -0
  241. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/02_activation_saliency.py +0 -0
  242. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/03_feature_saliency.py +0 -0
  243. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/04_circuit_editor.py +0 -0
  244. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/05_comparison_dashboard.py +0 -0
  245. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/06_jupyter_widgets.py +0 -0
  246. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/07_gallery_generator.py +0 -0
  247. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/08_plotter.py +0 -0
  248. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/09_eap_visualization.py +0 -0
  249. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/10_acdc_visualize.py +0 -0
  250. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/validation/visualizations/11_transfer_visualizer.py +0 -0
  251. {circuitkit-0.1.2 → circuitkit-0.1.4}/examples/visualization/graph-viz-example.py +0 -0
  252. {circuitkit-0.1.2 → circuitkit-0.1.4}/pytest.ini +0 -0
  253. {circuitkit-0.1.2 → circuitkit-0.1.4}/requirements.txt +0 -0
  254. {circuitkit-0.1.2 → circuitkit-0.1.4}/setup.cfg +0 -0
  255. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/__main__.py +0 -0
  256. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/__init__.py +0 -0
  257. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/cross_method_jaccard.py +0 -0
  258. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/metrics.py +0 -0
  259. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/analysis/scores.py +0 -0
  260. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/__init__.py +0 -0
  261. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/arch_registry.py +0 -0
  262. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/arch_utils.py +0 -0
  263. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/__init__.py +0 -0
  264. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_covariance.py +0 -0
  265. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_device.py +0 -0
  266. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_metrics.py +0 -0
  267. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/_tokenization.py +0 -0
  268. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/benchmark_analysis.py +0 -0
  269. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/cure_clue.py +0 -0
  270. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/hallucination_detection.py +0 -0
  271. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/common_utils/linear_probe.py +0 -0
  272. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/__init__.py +0 -0
  273. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/cake.py +0 -0
  274. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/circuit_guided_editing.py +0 -0
  275. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/fine_tune_editing.py +0 -0
  276. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/knowledge_editing.py +0 -0
  277. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/knowledge_editing_enhanced.py +0 -0
  278. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/mcircke.py +0 -0
  279. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/memit_wrapper.py +0 -0
  280. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/editing/rome_wrapper.py +0 -0
  281. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/__init__.py +0 -0
  282. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/benchmark_peft.py +0 -0
  283. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/circuit_tuning.py +0 -0
  284. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/healing_metrics.py +0 -0
  285. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/peft_methods.py +0 -0
  286. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/finetuning/soft_healing.py +0 -0
  287. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/__init__.py +0 -0
  288. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/eval_utils.py +0 -0
  289. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/__init__.py +0 -0
  290. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/prune.py +0 -0
  291. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/prune_llama.py +0 -0
  292. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/examples/prune_qwen.py +0 -0
  293. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/finetune_utils.py +0 -0
  294. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/importance.py +0 -0
  295. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/neuron_pruner.py +0 -0
  296. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/node_pruner.py +0 -0
  297. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/pruner.py +0 -0
  298. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/score_extractor.py +0 -0
  299. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/selectors/__init__.py +0 -0
  300. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/selectors/multi_granular_selector.py +0 -0
  301. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/selectors/taylor_selector.py +0 -0
  302. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/pruning/weight_pruner.py +0 -0
  303. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/__init__.py +0 -0
  304. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/examples/__init__.py +0 -0
  305. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/examples/quantize_llama.py +0 -0
  306. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/examples/quantize_qwen.py +0 -0
  307. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/llmcompressor_quantize.py +0 -0
  308. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/quant_utils.py +0 -0
  309. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/score_extractor.py +0 -0
  310. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/selectors/__init__.py +0 -0
  311. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/selectors/awq_selector.py +0 -0
  312. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/quantization/selectors/tacq_selector.py +0 -0
  313. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/__init__.py +0 -0
  314. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/examples/__init__.py +0 -0
  315. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/examples/finetune_llama.py +0 -0
  316. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/examples/finetune_qwen.py +0 -0
  317. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/finetune_utils.py +0 -0
  318. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/score_loader.py +0 -0
  319. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/selective_finetuning/selector.py +0 -0
  320. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/__init__.py +0 -0
  321. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/steering.py +0 -0
  322. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/steering_enhanced.py +0 -0
  323. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/applications/steering/weight_steering.py +0 -0
  324. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/__init__.py +0 -0
  325. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/circuit_artifact.py +0 -0
  326. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/converters.py +0 -0
  327. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/artifacts/scores.py +0 -0
  328. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/__init__.py +0 -0
  329. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/__init__.py +0 -0
  330. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/artifact_export.py +0 -0
  331. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/data.py +0 -0
  332. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/model_utils/__init__.py +0 -0
  333. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/model_utils/micro_model_utils.py +0 -0
  334. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/model_utils/transformer_lens_utils.py +0 -0
  335. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune.py +0 -0
  336. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/ACDC.py +0 -0
  337. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/__init__.py +0 -0
  338. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/mask_gradient.py +0 -0
  339. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/prune_algos/prune_algos.py +0 -0
  340. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/__init__.py +0 -0
  341. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/docstring_prompts.py +0 -0
  342. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/docstring_utils.py +0 -0
  343. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/induction_utils.py +0 -0
  344. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/ioi_dataset.py +0 -0
  345. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/tasks/ioi_utils.py +0 -0
  346. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/types.py +0 -0
  347. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/__init__.py +0 -0
  348. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/ablation_activations.py +0 -0
  349. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/custom_tqdm.py +0 -0
  350. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/graph_utils.py +0 -0
  351. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/misc.py +0 -0
  352. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/patch_wrapper.py +0 -0
  353. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/patchable_model.py +0 -0
  354. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/task_utils.py +0 -0
  355. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/utils/tensor_ops.py +0 -0
  356. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/acdc/visualize.py +0 -0
  357. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/__init__.py +0 -0
  358. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/adapter.py +0 -0
  359. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/propagation.py +0 -0
  360. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/__init__.py +0 -0
  361. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_ablations.py +0 -0
  362. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_basic.py +0 -0
  363. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_core.py +0 -0
  364. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_from_source_nodes.py +0 -0
  365. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/cdt_source_to_target.py +0 -0
  366. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/faithfulness_ablations.py +0 -0
  367. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/general.py +0 -0
  368. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/ioi_dataset.py +0 -0
  369. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/local_importance.py +0 -0
  370. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/pathology.py +0 -0
  371. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/toy_model.py +0 -0
  372. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/cdt/pyfunctions/wrappers.py +0 -0
  373. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/__init__.py +0 -0
  374. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/artifact_export.py +0 -0
  375. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/attribute.py +0 -0
  376. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/attribute_node.py +0 -0
  377. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/circuit_kit_adapter.py +0 -0
  378. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/eap_utils.py +0 -0
  379. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/evaluate.py +0 -0
  380. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/graph.py +0 -0
  381. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/metrics.py +0 -0
  382. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/py.typed +0 -0
  383. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/eap/visualization.py +0 -0
  384. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/__init__.py +0 -0
  385. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/artifact_export.py +0 -0
  386. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/ib_noise.py +0 -0
  387. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/ib_utils.py +0 -0
  388. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/model_wrapper.py +0 -0
  389. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/backends/ibcircuit/trainer.py +0 -0
  390. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/__init__.py +0 -0
  391. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/__init__.py +0 -0
  392. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/gptq.py +0 -0
  393. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/magnitude.py +0 -0
  394. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/random.py +0 -0
  395. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/sparsegpt.py +0 -0
  396. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/baselines/wanda.py +0 -0
  397. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/benchmark.py +0 -0
  398. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/benchmarks/reporting.py +0 -0
  399. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/__init__.py +0 -0
  400. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/config.py +0 -0
  401. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/debug.py +0 -0
  402. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/cli/utils.py +0 -0
  403. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/__init__.py +0 -0
  404. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/base.py +0 -0
  405. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/color_swap.py +0 -0
  406. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/distractor.py +0 -0
  407. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/distractor_variation.py +0 -0
  408. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/effectiveness.py +0 -0
  409. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/entity_swap.py +0 -0
  410. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/negation.py +0 -0
  411. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/paraphrase.py +0 -0
  412. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/pipeline.py +0 -0
  413. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/position_shift.py +0 -0
  414. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/role_swap.py +0 -0
  415. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/token_swap.py +0 -0
  416. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/validators.py +0 -0
  417. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/corruption/voice_swap.py +0 -0
  418. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/__init__.py +0 -0
  419. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/__init__.py +0 -0
  420. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/base.py +0 -0
  421. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/code.py +0 -0
  422. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/conversational.py +0 -0
  423. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/forget_retain.py +0 -0
  424. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/instruction.py +0 -0
  425. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/math.py +0 -0
  426. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/mcq.py +0 -0
  427. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/pairwise.py +0 -0
  428. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/adapters/safety_prompt.py +0 -0
  429. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/auto_detect.py +0 -0
  430. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/clean_only.py +0 -0
  431. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/__init__.py +0 -0
  432. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/base.py +0 -0
  433. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/benign_rewrite.py +0 -0
  434. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/code_syntax_corrupt.py +0 -0
  435. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/entity_swap.py +0 -0
  436. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/final_answer_swap.py +0 -0
  437. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/instruction_swap.py +0 -0
  438. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/llm_counterfactual.py +0 -0
  439. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/logical_negation.py +0 -0
  440. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/math_step_corrupt.py +0 -0
  441. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/mcq_choice_swap.py +0 -0
  442. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/operand_swap.py +0 -0
  443. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/profession_swap.py +0 -0
  444. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/resample.py +0 -0
  445. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/template.py +0 -0
  446. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/template_utils.py +0 -0
  447. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/corruption/token_swap.py +0 -0
  448. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/dataset_schema.py +0 -0
  449. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/eap_dataset.py +0 -0
  450. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/invariance_groups/__init__.py +0 -0
  451. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/invariance_groups/builder.py +0 -0
  452. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/invariance_groups/schema.py +0 -0
  453. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/normalized.py +0 -0
  454. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/normalized_task.py +0 -0
  455. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/__init__.py +0 -0
  456. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCCorrespondence.py +0 -0
  457. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCEdge.py +0 -0
  458. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCExperiment.py +0 -0
  459. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/TLACDCInterpNode.py +0 -0
  460. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/__init__.py +0 -0
  461. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/core/acdc_utils.py +0 -0
  462. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/__init__.py +0 -0
  463. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/cache.py +0 -0
  464. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/manager.py +0 -0
  465. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/generation/utils.py +0 -0
  466. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/__init__.py +0 -0
  467. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/greaterthan/greaterthan_32_ffd33106.json +0 -0
  468. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_16_8c879ddb.json +0 -0
  469. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_32_a432ca4a.json +0 -0
  470. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_500_1f7e7324.json +0 -0
  471. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_64_3bba747e.json +0 -0
  472. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_64_f4a164db.json +0 -0
  473. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/storage/ioi/ioi_8_e87df42e.json +0 -0
  474. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/__init__.py +0 -0
  475. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/binary_align/generate_binary_align.py +0 -0
  476. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/binary_align/jailbreak_binary.csv +0 -0
  477. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/binary_align/safe_binary.csv +0 -0
  478. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/capital_country/__init__.py +0 -0
  479. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/capital_country/utils.py +0 -0
  480. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/docstring/__init__.py +0 -0
  481. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/docstring/prompts.py +0 -0
  482. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/docstring/utils.py +0 -0
  483. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/double_io/__init__.py +0 -0
  484. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/double_io/double_io_dataset.py +0 -0
  485. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/gender_bias/__init__.py +0 -0
  486. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/gender_bias/utils.py +0 -0
  487. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/gender_bias/utils2.py +0 -0
  488. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/greaterthan/__init__.py +0 -0
  489. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/greaterthan/utils.py +0 -0
  490. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/hypernymy/__init__.py +0 -0
  491. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/hypernymy/utils.py +0 -0
  492. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/induction/__init__.py +0 -0
  493. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/induction/utils.py +0 -0
  494. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/ioi/__init__.py +0 -0
  495. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/ioi/ioi_dataset.py +0 -0
  496. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/ioi/utils.py +0 -0
  497. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/sva/__init__.py +0 -0
  498. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/sva/utils.py +0 -0
  499. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/task_data/tasks/wmdp/wmdp_utils.py +0 -0
  500. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/template.py +0 -0
  501. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/wikitext_calibration.py +0 -0
  502. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/data/worthiness.py +0 -0
  503. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/__init__.py +0 -0
  504. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/checkpoint_benchmark.py +0 -0
  505. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/evaluate.py +0 -0
  506. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/full.py +0 -0
  507. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/hf_checkpoint.py +0 -0
  508. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/intervention_faithfulness.py +0 -0
  509. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/lm_eval_simple.py +0 -0
  510. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/lm_harness.py +0 -0
  511. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/master_grid.py +0 -0
  512. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/mmlu_eval.py +0 -0
  513. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/__init__.py +0 -0
  514. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/ablation.py +0 -0
  515. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/baselines.py +0 -0
  516. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/causal_patching.py +0 -0
  517. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/generalization.py +0 -0
  518. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/intervention_reliability.py +0 -0
  519. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/robustness.py +0 -0
  520. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/pillars/stability.py +0 -0
  521. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/report.py +0 -0
  522. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/__init__.py +0 -0
  523. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/aggregator.py +0 -0
  524. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/robustness_report.py +0 -0
  525. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/reports/stability_report.py +0 -0
  526. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/stability_discovery.py +0 -0
  527. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/transfer.py +0 -0
  528. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/transfer_analysis.py +0 -0
  529. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/transfer_visualizer.py +0 -0
  530. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/evaluation/weight_based_eval.py +0 -0
  531. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/pipeline.py +0 -0
  532. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/__init__.py +0 -0
  533. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/cdt_selector.py +0 -0
  534. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/eap_gp_selector.py +0 -0
  535. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/eap_selector.py +0 -0
  536. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/gptq_selector.py +0 -0
  537. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/ibcircuit_selector.py +0 -0
  538. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/magnitude_selector.py +0 -0
  539. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/random_selector.py +0 -0
  540. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/relp_selector.py +0 -0
  541. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/selection/wanda_selector.py +0 -0
  542. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/__init__.py +0 -0
  543. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/_algorithm_families.py +0 -0
  544. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/_chat.py +0 -0
  545. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/auto_schema.py +0 -0
  546. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/bootstrap.py +0 -0
  547. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/__init__.py +0 -0
  548. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/boolq.py +0 -0
  549. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/capital_country.py +0 -0
  550. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/double_io.py +0 -0
  551. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/gender_bias.py +0 -0
  552. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/glue.py +0 -0
  553. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/greater_than.py +0 -0
  554. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/gsm8k.py +0 -0
  555. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/hypernymy.py +0 -0
  556. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ifeval.py +0 -0
  557. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ioi.py +0 -0
  558. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ioi_acdc.py +0 -0
  559. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/ioi_legacy.py +0 -0
  560. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/mmlu.py +0 -0
  561. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/sva.py +0 -0
  562. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/truthfulqa.py +0 -0
  563. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/winogrande.py +0 -0
  564. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/winogrande_mc.py +0 -0
  565. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/builtins/wmdp.py +0 -0
  566. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/generic.py +0 -0
  567. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/hf_factory.py +0 -0
  568. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/inspect.py +0 -0
  569. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/registry.py +0 -0
  570. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/safety_datasets.py +0 -0
  571. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/specs.py +0 -0
  572. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/__init__.py +0 -0
  573. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/classification_spec.py +0 -0
  574. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/generation_spec.py +0 -0
  575. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/mcq_spec.py +0 -0
  576. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/qa_spec.py +0 -0
  577. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/summarization_spec.py +0 -0
  578. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/type_specs/translation_spec.py +0 -0
  579. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/validator.py +0 -0
  580. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tasks/yaml_loader.py +0 -0
  581. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tooling/__init__.py +0 -0
  582. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/tooling/validate_environment.py +0 -0
  583. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/__init__.py +0 -0
  584. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/artifacts.py +0 -0
  585. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/async_processing.py +0 -0
  586. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/bootstrap.py +0 -0
  587. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/config.py +0 -0
  588. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/corruption_validation.py +0 -0
  589. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/dataset_cache.py +0 -0
  590. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/debug.py +0 -0
  591. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/debugging.py +0 -0
  592. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/device.py +0 -0
  593. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/distributed.py +0 -0
  594. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/exceptions.py +0 -0
  595. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/logging.py +0 -0
  596. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/memory.py +0 -0
  597. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/optimization.py +0 -0
  598. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/profiling.py +0 -0
  599. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/utils/token_utils.py +0 -0
  600. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/__init__.py +0 -0
  601. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/comparison.py +0 -0
  602. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/editor.py +0 -0
  603. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/feature_saliency.py +0 -0
  604. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/gallery.py +0 -0
  605. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/jupyter_suite.py +0 -0
  606. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/plotter.py +0 -0
  607. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/saliency.py +0 -0
  608. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/streamlit_app.py +0 -0
  609. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit/visualize/theme.py +0 -0
  610. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/dependency_links.txt +0 -0
  611. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/entry_points.txt +0 -0
  612. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/requires.txt +0 -0
  613. {circuitkit-0.1.2 → circuitkit-0.1.4}/src/circuitkit.egg-info/top_level.txt +0 -0
  614. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/__init__.py +0 -0
  615. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/__init__.py +0 -0
  616. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/conftest.py +0 -0
  617. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/debug_memit.py +0 -0
  618. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_architecture_registry.py +0 -0
  619. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_benchmark_analysis.py +0 -0
  620. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_benchmark_peft.py +0 -0
  621. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_circuit_artifact.py +0 -0
  622. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_covariance.py +0 -0
  623. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_cross_architecture.py +0 -0
  624. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_fine_tune_editing.py +0 -0
  625. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_hallucination_detection.py +0 -0
  626. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_knowledge_editing.py +0 -0
  627. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_knowledge_editing_enhanced.py +0 -0
  628. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_knowledge_editing_pipeline.py +0 -0
  629. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_linear_probe.py +0 -0
  630. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_peft_methods.py +0 -0
  631. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_pruner.py +0 -0
  632. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_steering.py +0 -0
  633. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_steering_enhanced.py +0 -0
  634. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_tokenization.py +0 -0
  635. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/apply/test_weight_steering.py +0 -0
  636. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_ib_noise.py +0 -0
  637. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_ib_utils.py +0 -0
  638. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_model_wrapper.py +0 -0
  639. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/ibcircuit/test_trainer.py +0 -0
  640. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/backends/test_artifact_export_integration.py +0 -0
  641. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/benchmarks/test_baselines.py +0 -0
  642. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/benchmarks/test_benchmark.py +0 -0
  643. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/conftest.py +0 -0
  644. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/__init__.py +0 -0
  645. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/run_corruption_tests.py +0 -0
  646. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_distractor.py +0 -0
  647. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_effectiveness.py +0 -0
  648. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_entity_swap.py +0 -0
  649. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_new_corruptions.py +0 -0
  650. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_paraphrase.py +0 -0
  651. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_pipeline.py +0 -0
  652. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_pipeline_integration_ioi.py +0 -0
  653. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_practical_examples.py +0 -0
  654. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_role_swap.py +0 -0
  655. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_strategies_integration.py +0 -0
  656. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_strategies_standalone.py +0 -0
  657. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_template.py +0 -0
  658. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_template_utils.py +0 -0
  659. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_token_swap.py +0 -0
  660. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/corruption/test_validators.py +0 -0
  661. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/data/test_data_corruption_strategies.py +0 -0
  662. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_chat_template_instruct.py +0 -0
  663. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_soft_healing_integration.py +0 -0
  664. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_steering_ioi.py +0 -0
  665. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_template_e2e.py +0 -0
  666. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_transfer_integration.py +0 -0
  667. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_transfer_matrix.py +0 -0
  668. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/test_transfer_minimal.py +0 -0
  669. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/verify_implementation.py +0 -0
  670. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/integration/verify_implementation_standalone.py +0 -0
  671. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/__init__.py +0 -0
  672. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_cdt_nonzero_scores.py +0 -0
  673. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_circuit_tuner_training.py +0 -0
  674. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_cli_and_api_args.py +0 -0
  675. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_data_adapters_and_utils.py +0 -0
  676. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_greater_than_tokenizer.py +0 -0
  677. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_pruner_gqa_kv_head.py +0 -0
  678. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/regression/test_steering_and_baselines.py +0 -0
  679. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/release/test_release.py +0 -0
  680. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/__init__.py +0 -0
  681. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_auto_schema.py +0 -0
  682. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_capital_country.py +0 -0
  683. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_chat_template.py +0 -0
  684. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_generic_task.py +0 -0
  685. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_glue.py +0 -0
  686. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_greater_than_corruption.py +0 -0
  687. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_gsm8k.py +0 -0
  688. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_ioi_regression.py +0 -0
  689. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_validator.py +0 -0
  690. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_winogrande.py +0 -0
  691. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/tasks/test_winogrande_mc.py +0 -0
  692. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/test_custom_data.py +0 -0
  693. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/__init__.py +0 -0
  694. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/conftest.py +0 -0
  695. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/sample_pipeline.yaml +0 -0
  696. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_api.py +0 -0
  697. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_attribute.py +0 -0
  698. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_attribute_node.py +0 -0
  699. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_baselines_multidraw.py +0 -0
  700. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_bootstrap.py +0 -0
  701. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_circuit_kit_adapter.py +0 -0
  702. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_circuit_scores.py +0 -0
  703. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_cli.py +0 -0
  704. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_cli_commands.py +0 -0
  705. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_cli_smoke.py +0 -0
  706. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_config_defaults.py +0 -0
  707. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_d5_d7_import.py +0 -0
  708. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_double_io.py +0 -0
  709. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_end_to_end.py +0 -0
  710. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_evaluate.py +0 -0
  711. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_extended_schema.py +0 -0
  712. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_finetune_utils.py +0 -0
  713. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_graph.py +0 -0
  714. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_graph_viz.py +0 -0
  715. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_graph_viz_standalone.py +0 -0
  716. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_hf_checkpoint.py +0 -0
  717. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_init_exports.py +0 -0
  718. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_instruction_swap_audit.py +0 -0
  719. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_mean_activations.py +0 -0
  720. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_mlp1.py +0 -0
  721. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_modules_exist.py +0 -0
  722. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_multi_token_answers.py +0 -0
  723. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_multi_token_unit.py +0 -0
  724. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_neuron_pruner.py +0 -0
  725. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_no_regressions.py +0 -0
  726. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_node_pruner.py +0 -0
  727. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_normalized_task.py +0 -0
  728. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_paraphrase_direct.py +0 -0
  729. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_perplexity_direct.py +0 -0
  730. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_perplexity_metric.py +0 -0
  731. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_perplexity_metric_simple.py +0 -0
  732. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_pillars.py +0 -0
  733. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_pipeline_smoke.py +0 -0
  734. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_pipeline_unit.py +0 -0
  735. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_quantize_export_flow.py +0 -0
  736. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_quick_api.py +0 -0
  737. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_quick_extensions.py +0 -0
  738. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_r2_effect_magnitude.py +0 -0
  739. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_ranking_metrics.py +0 -0
  740. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_report.py +0 -0
  741. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_score_loader.py +0 -0
  742. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_security_hardening.py +0 -0
  743. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_selector.py +0 -0
  744. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_selector_bugs.py +0 -0
  745. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_selector_registry.py +0 -0
  746. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_soft_healing.py +0 -0
  747. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_stability_robustness_reports.py +0 -0
  748. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_steering.py +0 -0
  749. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_structural_pruner.py +0 -0
  750. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_tokenize_warning_throttle.py +0 -0
  751. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_validators_direct.py +0 -0
  752. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_validators_standalone.py +0 -0
  753. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/unit/test_yaml_pipeline_config.py +0 -0
  754. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/__init__.py +0 -0
  755. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_comparison.py +0 -0
  756. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_editor.py +0 -0
  757. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_feature_saliency.py +0 -0
  758. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_gallery.py +0 -0
  759. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_jupyter_suite.py +0 -0
  760. {circuitkit-0.1.2 → circuitkit-0.1.4}/tests/visualize/test_saliency.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: circuitkit
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: Unified Discover, Evaluate, Intervene toolkit for mechanistic interpretability: 13 circuit discovery algorithms, 6-pillar faithfulness evaluation, and pruning / quantization / knowledge editing / unlearning / activation steering / contrastive weight steering interventions behind one API.
5
5
  Author: Hem Gosalia, Aditya Kasliwal, Vinay Kumar Sankarapu
6
6
  Author-email: Pratinav Seth <pratinav.seth@lexsi.ai>
@@ -84,7 +84,10 @@ Requires-Dist: torchvision==0.21.0+cu126; extra == "gpu-cu126"
84
84
  Dynamic: license-file
85
85
 
86
86
  <p align="center">
87
- <img src="docs/assets/circuitkit-mark-v3.svg" width="140" alt="CircuitKit">
87
+ <picture>
88
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/circuitkit-logo-white.png">
89
+ <img src="docs/assets/circuitkit-logo-black.png" width="360" alt="CircuitKit">
90
+ </picture>
88
91
  </p>
89
92
 
90
93
  <h1 align="center">CircuitKit</h1>
@@ -1,5 +1,8 @@
1
1
  <p align="center">
2
- <img src="docs/assets/circuitkit-mark-v3.svg" width="140" alt="CircuitKit">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/circuitkit-logo-white.png">
4
+ <img src="docs/assets/circuitkit-logo-black.png" width="360" alt="CircuitKit">
5
+ </picture>
3
6
  </p>
4
7
 
5
8
  <h1 align="center">CircuitKit</h1>
@@ -6,7 +6,7 @@ hide:
6
6
 
7
7
  <div class="ck-hero" markdown>
8
8
 
9
- <div class="ck-hero-logo-wrap"><img class="ck-hero-mark" src="assets/circuitkit-mark-v3.svg" alt=""></div>
9
+ <div class="ck-hero-logo-wrap"><img class="ck-hero-mark ck-lexsi-on-light" src="assets/circuitkit-mark-black.svg" alt=""><img class="ck-hero-mark ck-lexsi-on-dark" src="assets/circuitkit-mark-white.svg" alt=""></div>
10
10
 
11
11
  <h1 class="ck-hero-title">Discover a circuit.<br><em>Then act on it.</em></h1>
12
12
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "circuitkit"
7
- version = "0.1.2"
7
+ version = "0.1.4"
8
8
  # Pratinav Seth, Hem Gosalia, and Aditya Kasliwal are equal co-first authors.
9
9
  # Pratinav Seth is the corresponding author. Author order is kept consistent
10
10
  # with src/circuitkit/__init__.py and CITATION.cff.
@@ -3,7 +3,7 @@ CircuitKit: A comprehensive toolkit for circuit discovery in transformer models.
3
3
  """
4
4
 
5
5
  # Version information
6
- __version__ = "0.1.2"
6
+ __version__ = "0.1.4"
7
7
  __author__ = "Pratinav Seth, Hem Gosalia, Aditya Kasliwal, Vinay Kumar Sankarapu"
8
8
  __description__ = "Unified Discover, Evaluate, Intervene toolkit for mechanistic interpretability"
9
9
  _API_EXPORTS = {"discover_circuit", "evaluate_circuit", "load_circuit"}
@@ -1399,6 +1399,24 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1399
1399
  (abs(score.item()), (node.name, neuron_idx))
1400
1400
  )
1401
1401
 
1402
+ # Per-node aggregate (max abs score among a node's neurons) so
1403
+ # `Circuit.from_artifact()` -- which only ever looks for a
1404
+ # "node_scores" key in the scores side-car, the same shape
1405
+ # node-level discovery produces -- gets a non-empty
1406
+ # `Circuit.scores` for neuron-level circuits too. Without
1407
+ # this, `Circuit.scores` silently ends up `{}` for every
1408
+ # neuron-level run (including Pipeline.discover()'s own
1409
+ # first, in-process Circuit construction, not just a later
1410
+ # reload), which is why neuron-level circuit graphs render
1411
+ # with every node/edge looking unscored. `neurons_scores`
1412
+ # (the full per-neuron tensor) is kept in the side-car
1413
+ # alongside this for anyone who needs the finer-grained
1414
+ # detail.
1415
+ node_scores: Dict[str, float] = {}
1416
+ for abs_score, (node_name, _neuron_idx) in all_neuron_scores:
1417
+ if abs_score > node_scores.get(node_name, float("-inf")):
1418
+ node_scores[node_name] = abs_score
1419
+
1402
1420
  all_neuron_scores.sort(key=lambda x: x[0]) # Sort by absolute score, ascending
1403
1421
  num_to_prune = int(len(all_neuron_scores) * pruning_cfg["target_sparsity"])
1404
1422
 
@@ -1433,6 +1451,7 @@ def discover_circuit( # noqa: C901 - complex function, refactor out of scope fo
1433
1451
  {
1434
1452
  "algo": algo,
1435
1453
  "level": "neuron",
1454
+ "node_scores": node_scores,
1436
1455
  "neurons_scores": graph.neurons_scores.cpu(),
1437
1456
  "total_neurons": len(all_neuron_scores),
1438
1457
  },
@@ -262,7 +262,14 @@ class Circuit:
262
262
  # ------------------------------------------------------------------ #
263
263
  # Visualisation #
264
264
  # ------------------------------------------------------------------ #
265
- def plot(self, output_path: Optional[Union[str, Path]] = None) -> Optional[str]:
265
+ def plot(
266
+ self,
267
+ output_path: Optional[Union[str, Path]] = None,
268
+ *,
269
+ max_nodes: Optional[int] = None,
270
+ max_edges: Optional[int] = None,
271
+ edge_threshold: float = 0.0,
272
+ ) -> Union[str, Dict[str, Any], None]:
266
273
  """Render the circuit as an interactive graph.
267
274
 
268
275
  Delegates to :class:`circuitkit.visualize.graph_viz.CircuitGraphVisualizer`.
@@ -271,15 +278,26 @@ class Circuit:
271
278
  returns ``None`` instead of raising.
272
279
 
273
280
  Args:
274
- output_path: Optional path for an HTML export. When omitted, an
275
- in-Jupyter interactive widget is returned where supported.
281
+ output_path: Optional export path. A ``.json`` extension writes a
282
+ bounded graph payload via
283
+ :meth:`CircuitGraphVisualizer.to_json` (see ``max_nodes`` /
284
+ ``max_edges`` / ``edge_threshold`` below); any other
285
+ extension (or ``None``) writes/returns the interactive HTML
286
+ export as before. Omitted entirely, an in-Jupyter interactive
287
+ widget is returned where supported.
288
+ max_nodes: For ``.json`` output only — cap on nodes kept.
289
+ max_edges: For ``.json`` output only — cap on edges kept.
290
+ edge_threshold: For ``.json`` output only — minimum normalized
291
+ edge weight to keep.
276
292
 
277
293
  Returns:
278
- The HTML string when ``output_path`` is given and rendering
279
- succeeded, otherwise ``None``.
294
+ The HTML string when ``output_path`` is an HTML/other path and
295
+ rendering succeeded; the exported dict when ``output_path`` is a
296
+ ``.json`` path; otherwise ``None``.
280
297
 
281
298
  Example:
282
299
  >>> circuit.plot("ioi_circuit.html") # writes an interactive HTML
300
+ >>> circuit.plot("ioi_circuit.json", max_nodes=300, max_edges=3000)
283
301
  """
284
302
  if not self.scores:
285
303
  logger.info(
@@ -291,7 +309,6 @@ class Circuit:
291
309
  from .artifacts.scores import CircuitScores
292
310
  from .visualize.graph_viz import CircuitGraphVisualizer
293
311
 
294
-
295
312
  cs = self.circuit_scores
296
313
  if cs is None:
297
314
  cs = CircuitScores(
@@ -312,9 +329,8 @@ class Circuit:
312
329
  pruned_nodes = self.nodes
313
330
  elif isinstance(self.nodes, dict):
314
331
  # neuron-level artifact: flatten mlp + heads keys
315
- pruned_nodes = (
316
- list(self.nodes.get("mlp", {}).keys())
317
- + list(self.nodes.get("heads", {}).keys())
332
+ pruned_nodes = list(self.nodes.get("mlp", {}).keys()) + list(
333
+ self.nodes.get("heads", {}).keys()
318
334
  )
319
335
 
320
336
  graph_dict = {"nodes": {name: {} for name in self.scores}, "edges": []}
@@ -323,6 +339,13 @@ class Circuit:
323
339
  if output_path is not None:
324
340
  out = Path(output_path)
325
341
  out.parent.mkdir(parents=True, exist_ok=True)
342
+ if out.suffix.lower() == ".json":
343
+ return viz.to_json(
344
+ str(out),
345
+ max_nodes=max_nodes,
346
+ max_edges=max_edges,
347
+ edge_threshold=edge_threshold,
348
+ )
326
349
  title = f"Circuit ({self.task or 'unknown'} / {self.algorithm or 'eap-ig'})"
327
350
  return viz.to_html(str(out), title=title)
328
351
  return viz.interactive_widget()
@@ -1549,16 +1549,31 @@ def data_prepare(source, shape, strategy, max_records, output, hf_subset, hf_spl
1549
1549
  f"strategy={chosen_strategy or 'native'})"
1550
1550
  )
1551
1551
 
1552
+
1552
1553
  @data.command("template")
1553
1554
  @click.argument("source", type=click.Path(exists=True))
1554
- @click.option("--clean-prompt", required=True, help="Clean prompt template, e.g. 'The capital of {country} is'")
1555
- @click.option("--corrupt-prompt", default=None, help="Corrupt prompt template, e.g. 'The capital of {other_country} is'. Omit for ibcircuit/cdt.")
1555
+ @click.option(
1556
+ "--clean-prompt",
1557
+ required=True,
1558
+ help="Clean prompt template, e.g. 'The capital of {country} is'",
1559
+ )
1560
+ @click.option(
1561
+ "--corrupt-prompt",
1562
+ default=None,
1563
+ help="Corrupt prompt template, e.g. 'The capital of {other_country} is'. Omit for ibcircuit/cdt.",
1564
+ )
1556
1565
  @click.option("--clean-answer", required=True, help="Clean answer template, e.g. '{capital}'")
1557
- @click.option("--corrupt-answer", default=None, help="Corrupt answer template, e.g. '{other_capital}'. Omit for ibcircuit/cdt.")
1566
+ @click.option(
1567
+ "--corrupt-answer",
1568
+ default=None,
1569
+ help="Corrupt answer template, e.g. '{other_capital}'. Omit for ibcircuit/cdt.",
1570
+ )
1558
1571
  @click.option("--pairing-mode", type=click.Choice(["explicit", "auto_peer"]), default="explicit")
1559
1572
  @click.option("--max-records", type=int, default=256)
1560
1573
  @click.option("--output", required=True, help="Output NormalizedDataset JSON path.")
1561
- @click.option("--validate", "run_validation", is_flag=True, default=False, help="Run worthiness checks.")
1574
+ @click.option(
1575
+ "--validate", "run_validation", is_flag=True, default=False, help="Run worthiness checks."
1576
+ )
1562
1577
  @click.option(
1563
1578
  "--align-strategy",
1564
1579
  type=click.Choice(["filter", "pad_question", "none"]),
@@ -1643,6 +1658,7 @@ def data_template(
1643
1658
  else:
1644
1659
  try:
1645
1660
  from transformers import AutoTokenizer
1661
+
1646
1662
  tokenizer = AutoTokenizer.from_pretrained(model)
1647
1663
  click.echo(f"Loaded tokenizer from {model}")
1648
1664
  except Exception as e:
@@ -1676,7 +1692,9 @@ def data_template(
1676
1692
  pad_region_end=pad_region_end,
1677
1693
  )
1678
1694
  if pair_padding_side != "left":
1679
- ds.meta.setdefault("_alignment", {})["recommended_pair_padding_side"] = pair_padding_side
1695
+ ds.meta.setdefault("_alignment", {})[
1696
+ "recommended_pair_padding_side"
1697
+ ] = pair_padding_side
1680
1698
 
1681
1699
  _alignment = ds.meta.get("_alignment", {})
1682
1700
  if _alignment:
@@ -1692,6 +1710,7 @@ def data_template(
1692
1710
 
1693
1711
  if run_validation:
1694
1712
  from ..data.worthiness import evaluate_worthiness
1713
+
1695
1714
  report = evaluate_worthiness(ds)
1696
1715
  click.echo(report.render_terminal())
1697
1716
 
@@ -1717,6 +1736,7 @@ def data_template(
1717
1736
 
1718
1737
  if run_validation:
1719
1738
  from ..data.worthiness import evaluate_worthiness
1739
+
1720
1740
  report = evaluate_worthiness(ds)
1721
1741
  click.echo(report.render_terminal())
1722
1742
 
@@ -1728,23 +1748,37 @@ def data_template(
1728
1748
 
1729
1749
  if run_validation:
1730
1750
  from ..data.worthiness import evaluate_worthiness
1751
+
1731
1752
  report = evaluate_worthiness(ds)
1732
1753
  click.echo(report.render_terminal())
1733
1754
 
1734
1755
  ds.save_json(output)
1735
1756
  click.echo(f"Saved {len(ds)} template-paired records to {output} (paired={ds.n_paired})")
1736
1757
 
1758
+
1737
1759
  @data.command("clean-only")
1738
1760
  @click.argument("source", type=click.Path(exists=True))
1739
- @click.option("--prompt-column", default="prompt", show_default=True,
1740
- help="CSV column name for the clean prompt.")
1741
- @click.option("--answer-column", default="answer", show_default=True,
1742
- help="CSV column name for the answer. Pass 'none' to skip (valid for CD-T).")
1743
- @click.option("--max-records", type=int, default=None,
1744
- help="Truncate to this many records.")
1761
+ @click.option(
1762
+ "--prompt-column",
1763
+ default="prompt",
1764
+ show_default=True,
1765
+ help="CSV column name for the clean prompt.",
1766
+ )
1767
+ @click.option(
1768
+ "--answer-column",
1769
+ default="answer",
1770
+ show_default=True,
1771
+ help="CSV column name for the answer. Pass 'none' to skip (valid for CD-T).",
1772
+ )
1773
+ @click.option("--max-records", type=int, default=None, help="Truncate to this many records.")
1745
1774
  @click.option("--output", required=True, help="Output NormalizedDataset JSON path.")
1746
- @click.option("--validate", "run_validation", is_flag=True, default=False,
1747
- help="Run worthiness checks after loading.")
1775
+ @click.option(
1776
+ "--validate",
1777
+ "run_validation",
1778
+ is_flag=True,
1779
+ default=False,
1780
+ help="Run worthiness checks after loading.",
1781
+ )
1748
1782
  def data_clean_only(source, prompt_column, answer_column, max_records, output, run_validation):
1749
1783
  """Load SOURCE CSV as a clean-only dataset (no corrupt partner).
1750
1784
 
@@ -1766,6 +1800,7 @@ def data_clean_only(source, prompt_column, answer_column, max_records, output, r
1766
1800
 
1767
1801
  if run_validation:
1768
1802
  from ..data.worthiness import evaluate_worthiness
1803
+
1769
1804
  report = evaluate_worthiness(ds)
1770
1805
  click.echo(report.render_terminal())
1771
1806
 
@@ -1775,6 +1810,7 @@ def data_clean_only(source, prompt_column, answer_column, max_records, output, r
1775
1810
  f"(compatible algorithms: ibcircuit, cdt)"
1776
1811
  )
1777
1812
 
1813
+
1778
1814
  @data.command("shapes")
1779
1815
  def data_shapes():
1780
1816
  """List supported dataset shapes + default strategies."""
@@ -1837,6 +1873,7 @@ def _resolve_source(source, hf_subset, hf_split, max_records):
1837
1873
  # inspect
1838
1874
  # ---------------------------------------------------------------------------
1839
1875
 
1876
+
1840
1877
  @cli.command()
1841
1878
  @click.argument("artifact_path", type=click.Path(exists=True))
1842
1879
  def inspect(artifact_path):
@@ -1874,22 +1911,29 @@ def inspect(artifact_path):
1874
1911
  # prune
1875
1912
  # ---------------------------------------------------------------------------
1876
1913
 
1914
+
1877
1915
  @cli.command()
1878
1916
  @click.option("--model", "-m", required=True, help="Model name or path (e.g., gpt2)")
1879
1917
  @click.option(
1880
- "--artifact", "-a", required=True, type=click.Path(exists=True),
1881
- help="Path to circuit artifact (.pt)"
1918
+ "--artifact",
1919
+ "-a",
1920
+ required=True,
1921
+ type=click.Path(exists=True),
1922
+ help="Path to circuit artifact (.pt)",
1923
+ )
1924
+ @click.option(
1925
+ "--sparsity", "-s", type=float, default=0.3, show_default=True, help="Target sparsity (0.0–1.0)"
1882
1926
  )
1883
- @click.option("--sparsity", "-s", type=float, default=0.3, show_default=True,
1884
- help="Target sparsity (0.0–1.0)")
1885
1927
  @click.option(
1886
- "--scope", type=click.Choice(["heads", "mlp", "both"]), default="both", show_default=True,
1887
- help="Which component type to prune"
1928
+ "--scope",
1929
+ type=click.Choice(["heads", "mlp", "both"]),
1930
+ default="both",
1931
+ show_default=True,
1932
+ help="Which component type to prune",
1888
1933
  )
1889
1934
  @click.option("--output", "-o", required=True, help="Output checkpoint directory path")
1890
1935
  @click.option(
1891
- "--precision", default="bfloat16", show_default=True,
1892
- help="Torch dtype for model loading"
1936
+ "--precision", default="bfloat16", show_default=True, help="Torch dtype for model loading"
1893
1937
  )
1894
1938
  def prune(model, artifact, sparsity, scope, output, precision):
1895
1939
  """Prune a model using a discovered circuit and export a HF checkpoint."""
@@ -1903,6 +1947,7 @@ def prune(model, artifact, sparsity, scope, output, precision):
1903
1947
  raise click.Abort()
1904
1948
 
1905
1949
  from ..circuit import Circuit
1950
+
1906
1951
  try:
1907
1952
  circuit = Circuit.from_artifact(artifact)
1908
1953
  except Exception as exc:
@@ -1926,24 +1971,34 @@ def prune(model, artifact, sparsity, scope, output, precision):
1926
1971
  # quantize
1927
1972
  # ---------------------------------------------------------------------------
1928
1973
 
1974
+
1929
1975
  @cli.command()
1930
1976
  @click.option("--model", "-m", required=True, help="Model name or path")
1931
1977
  @click.option(
1932
- "--artifact", "-a", required=True, type=click.Path(exists=True),
1933
- help="Path to circuit artifact (.pt)"
1978
+ "--artifact",
1979
+ "-a",
1980
+ required=True,
1981
+ type=click.Path(exists=True),
1982
+ help="Path to circuit artifact (.pt)",
1983
+ )
1984
+ @click.option("--bits", type=int, default=4, show_default=True, help="Quantization bit-width")
1985
+ @click.option(
1986
+ "--high-fraction",
1987
+ type=float,
1988
+ default=0.3,
1989
+ show_default=True,
1990
+ help="Fraction of top layers kept at high precision",
1934
1991
  )
1935
- @click.option("--bits", type=int, default=4, show_default=True,
1936
- help="Quantization bit-width")
1937
- @click.option("--high-fraction", type=float, default=0.3, show_default=True,
1938
- help="Fraction of top layers kept at high precision")
1939
1992
  @click.option(
1940
- "--backend", type=click.Choice(["quanto", "llmcompressor"]), default="quanto",
1941
- show_default=True, help="Quantization backend"
1993
+ "--backend",
1994
+ type=click.Choice(["quanto", "llmcompressor"]),
1995
+ default="quanto",
1996
+ show_default=True,
1997
+ help="Quantization backend",
1942
1998
  )
1943
1999
  @click.option("--output", "-o", required=True, help="Output checkpoint directory path")
1944
2000
  @click.option(
1945
- "--precision", default="bfloat16", show_default=True,
1946
- help="Torch dtype for model loading"
2001
+ "--precision", default="bfloat16", show_default=True, help="Torch dtype for model loading"
1947
2002
  )
1948
2003
  def quantize(model, artifact, bits, high_fraction, backend, output, precision):
1949
2004
  """Apply circuit-guided mixed-precision quantization and export a HF checkpoint."""
@@ -1957,6 +2012,7 @@ def quantize(model, artifact, bits, high_fraction, backend, output, precision):
1957
2012
  raise click.Abort()
1958
2013
 
1959
2014
  from ..circuit import Circuit
2015
+
1960
2016
  try:
1961
2017
  circuit = Circuit.from_artifact(artifact)
1962
2018
  except Exception as exc:
@@ -1969,7 +2025,8 @@ def quantize(model, artifact, bits, high_fraction, backend, output, precision):
1969
2025
  )
1970
2026
  try:
1971
2027
  quantized = quick.quantize(
1972
- tl_model, circuit,
2028
+ tl_model,
2029
+ circuit,
1973
2030
  bits=bits,
1974
2031
  high_fraction=high_fraction,
1975
2032
  backend=backend,
@@ -1985,26 +2042,41 @@ def quantize(model, artifact, bits, high_fraction, backend, output, precision):
1985
2042
  # export
1986
2043
  # ---------------------------------------------------------------------------
1987
2044
 
2045
+
1988
2046
  @cli.command()
1989
2047
  @click.option("--model", "-m", required=True, help="Model name or path")
1990
2048
  @click.option(
1991
- "--artifact", "-a", required=True, type=click.Path(exists=True),
1992
- help="Path to circuit artifact (.pt)"
2049
+ "--artifact",
2050
+ "-a",
2051
+ required=True,
2052
+ type=click.Path(exists=True),
2053
+ help="Path to circuit artifact (.pt)",
1993
2054
  )
1994
2055
  @click.option("--output", "-o", required=True, help="Output checkpoint directory path")
1995
2056
  @click.option(
1996
- "--intervention", type=click.Choice(["pruning", "quantization"]), default="pruning",
1997
- show_default=True, help="Intervention type applied before export"
2057
+ "--intervention",
2058
+ type=click.Choice(["pruning", "quantization"]),
2059
+ default="pruning",
2060
+ show_default=True,
2061
+ help="Intervention type applied before export",
1998
2062
  )
1999
- @click.option("--sparsity", "-s", type=float, default=0.3, show_default=True,
2000
- help="Sparsity for pruning intervention")
2001
2063
  @click.option(
2002
- "--scope", type=click.Choice(["heads", "mlp", "both"]), default="both", show_default=True,
2003
- help="Pruning scope (only used when intervention=pruning)"
2064
+ "--sparsity",
2065
+ "-s",
2066
+ type=float,
2067
+ default=0.3,
2068
+ show_default=True,
2069
+ help="Sparsity for pruning intervention",
2070
+ )
2071
+ @click.option(
2072
+ "--scope",
2073
+ type=click.Choice(["heads", "mlp", "both"]),
2074
+ default="both",
2075
+ show_default=True,
2076
+ help="Pruning scope (only used when intervention=pruning)",
2004
2077
  )
2005
2078
  @click.option(
2006
- "--precision", default="bfloat16", show_default=True,
2007
- help="Torch dtype for model loading"
2079
+ "--precision", default="bfloat16", show_default=True, help="Torch dtype for model loading"
2008
2080
  )
2009
2081
  def export(model, artifact, output, intervention, sparsity, scope, precision):
2010
2082
  """Apply an intervention to a model and export a HuggingFace checkpoint.
@@ -2049,6 +2121,7 @@ def export(model, artifact, output, intervention, sparsity, scope, precision):
2049
2121
  # run (YAML pipeline)
2050
2122
  # ---------------------------------------------------------------------------
2051
2123
 
2124
+
2052
2125
  @cli.command()
2053
2126
  @click.argument("config_path", type=click.Path(exists=True))
2054
2127
  def run(config_path):
@@ -2106,6 +2179,14 @@ def run(config_path):
2106
2179
  if disc:
2107
2180
  console.print("[cyan]Step: discovery[/cyan]")
2108
2181
  try:
2182
+ # ig_steps/mlp_hook/chat_template_mode reach Pipeline.discover()'s
2183
+ # **kw only when the YAML sets them, so unset keys behave exactly
2184
+ # as before (no seed override, no extra discovery-config keys).
2185
+ extra_disc_kw = {
2186
+ key: disc[key]
2187
+ for key in ("ig_steps", "mlp_hook", "chat_template_mode")
2188
+ if key in disc
2189
+ }
2109
2190
  pipe.discover(
2110
2191
  algorithm=disc.get("algorithm", "eap-ig"),
2111
2192
  level=disc.get("level", "node"),
@@ -2113,6 +2194,8 @@ def run(config_path):
2113
2194
  n_examples=disc.get("n_examples", 128),
2114
2195
  batch_size=disc.get("batch_size", 4),
2115
2196
  scope=disc.get("scope", "both"),
2197
+ seed=disc.get("seed"),
2198
+ **extra_disc_kw,
2116
2199
  )
2117
2200
  console.print(f" Circuit: {pipe._circuit!r}")
2118
2201
  except Exception as exc:
@@ -2127,6 +2210,8 @@ def run(config_path):
2127
2210
  pipe.evaluate(
2128
2211
  pillars=eval_cfg.get("pillars"),
2129
2212
  n_examples=eval_cfg.get("n_examples", 256),
2213
+ n_stability_runs=eval_cfg.get("n_stability_runs", 5),
2214
+ target_task=eval_cfg.get("target_task"),
2130
2215
  )
2131
2216
  except Exception as exc:
2132
2217
  console.print(f"[yellow]Warning: evaluation failed:[/yellow] {exc}")
@@ -2188,9 +2273,18 @@ def run(config_path):
2188
2273
  if viz_cfg and viz_cfg.get("enabled", True) and pipe._circuit is not None:
2189
2274
  console.print("[cyan]Step: visualize[/cyan]")
2190
2275
  try:
2276
+ # max_nodes/max_edges/edge_threshold only apply to a `.json` output
2277
+ # (a bounded graph payload); only forward them when the YAML sets
2278
+ # them, so other visualize modes (comparison/dashboard) are unaffected.
2279
+ extra_viz_kw = {
2280
+ key: viz_cfg[key]
2281
+ for key in ("max_nodes", "max_edges", "edge_threshold")
2282
+ if key in viz_cfg
2283
+ }
2191
2284
  pipe.visualize(
2192
2285
  mode=viz_cfg.get("mode", "graph"),
2193
2286
  output=viz_cfg.get("output"),
2287
+ **extra_viz_kw,
2194
2288
  )
2195
2289
  except Exception as exc:
2196
2290
  console.print(f"[yellow]Warning: visualize failed:[/yellow] {exc}")
@@ -39,7 +39,7 @@ if TYPE_CHECKING: # pragma: no cover - typing only
39
39
  from transformer_lens import HookedTransformer
40
40
 
41
41
  from .evaluation.report import FaithfulnessReport
42
-
42
+
43
43
  from pathlib import Path
44
44
 
45
45
  __all__ = [
@@ -656,9 +656,7 @@ def quantize(
656
656
  import re
657
657
 
658
658
  if backend not in ("quanto", "llmcompressor"):
659
- raise ValueError(
660
- f"backend must be 'quanto' or 'llmcompressor', got {backend!r}"
661
- )
659
+ raise ValueError(f"backend must be 'quanto' or 'llmcompressor', got {backend!r}")
662
660
 
663
661
  if not circuit.scores:
664
662
  raise ValueError(
@@ -688,9 +686,7 @@ def quantize(
688
686
  n_layers = getattr(cfg, "num_hidden_layers", None)
689
687
  if n_layers is None and cfg is not None:
690
688
  # Gemma-3 / multimodal configs nest the decoder under text_config.
691
- n_layers = getattr(
692
- getattr(cfg, "text_config", None), "num_hidden_layers", None
693
- )
689
+ n_layers = getattr(getattr(cfg, "text_config", None), "num_hidden_layers", None)
694
690
  if n_layers is None and max_layer >= 0:
695
691
  n_layers = max_layer + 1
696
692
  if not n_layers:
@@ -702,9 +698,9 @@ def quantize(
702
698
  if tokenizer is None:
703
699
  from transformers import AutoTokenizer
704
700
 
705
- repo_id = getattr(
706
- getattr(model, "config", None), "_name_or_path", None
707
- ) or circuit.model_name
701
+ repo_id = (
702
+ getattr(getattr(model, "config", None), "_name_or_path", None) or circuit.model_name
703
+ )
708
704
  if not repo_id:
709
705
  raise ValueError(
710
706
  "quantize(backend='llmcompressor') needs a tokenizer; pass "
@@ -812,9 +808,7 @@ def export_checkpoint(
812
808
  return path
813
809
 
814
810
 
815
- def _push_checkpoint_to_hub(
816
- path: str, hub_repo: Optional[str], hub_private: bool
817
- ) -> None:
811
+ def _push_checkpoint_to_hub(path: str, hub_repo: Optional[str], hub_private: bool) -> None:
818
812
  """Upload a written checkpoint directory to the HuggingFace Hub.
819
813
 
820
814
  Opt-in archival path for :func:`export_checkpoint`. The local checkpoint is
@@ -822,9 +816,7 @@ def _push_checkpoint_to_hub(
822
816
  authenticated token (``huggingface-cli login`` or ``HF_TOKEN``).
823
817
  """
824
818
  if not hub_repo:
825
- raise ValueError(
826
- "export_checkpoint(push_to_hub=True) needs hub_repo='org/name'."
827
- )
819
+ raise ValueError("export_checkpoint(push_to_hub=True) needs hub_repo='org/name'.")
828
820
  try:
829
821
  from huggingface_hub import HfApi
830
822
  except ImportError as exc: # pragma: no cover - optional dependency
@@ -898,7 +890,8 @@ def benchmark(
898
890
  dtype=dtype,
899
891
  **kw,
900
892
  )
901
-
893
+
894
+
902
895
  # --------------------------------------------------------------------------- #
903
896
  # load_scores #
904
897
  # --------------------------------------------------------------------------- #
@@ -1026,6 +1019,7 @@ def selective_finetune(
1026
1019
  )
1027
1020
  try:
1028
1021
  from transformers import AutoConfig
1022
+
1029
1023
  hf_cfg = AutoConfig.from_pretrained(resolved_model)
1030
1024
  if n_layers is None:
1031
1025
  n_layers = hf_cfg.num_hidden_layers
@@ -1105,7 +1099,7 @@ def visualize_circuit(
1105
1099
  ... second_circuit=circuit2, output="compare.html")
1106
1100
  """
1107
1101
  if mode == "graph":
1108
- return circuit.plot(output)
1102
+ return circuit.plot(output, **kw)
1109
1103
 
1110
1104
  if mode == "comparison":
1111
1105
  from .visualize.comparison import ComparisonDashboard
@@ -1152,6 +1146,5 @@ def visualize_circuit(
1152
1146
  return None
1153
1147
 
1154
1148
  raise ValueError(
1155
- f"Unknown visualization mode: {mode!r}. "
1156
- "Use 'graph', 'comparison', or 'dashboard'."
1149
+ f"Unknown visualization mode: {mode!r}. " "Use 'graph', 'comparison', or 'dashboard'."
1157
1150
  )