interp-engine 1.3.0__tar.gz → 1.3.1__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 (174) hide show
  1. {interp_engine-1.3.0 → interp_engine-1.3.1}/PKG-INFO +1 -1
  2. {interp_engine-1.3.0 → interp_engine-1.3.1}/pyproject.toml +1 -1
  3. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_doc_code_fences.py +12 -1
  4. {interp_engine-1.3.0 → interp_engine-1.3.1}/.gitignore +0 -0
  5. {interp_engine-1.3.0 → interp_engine-1.3.1}/LICENSE +0 -0
  6. {interp_engine-1.3.0 → interp_engine-1.3.1}/README.md +0 -0
  7. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/README.md +0 -0
  8. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/__init__.py +0 -0
  9. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/bench_spec.py +0 -0
  10. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/cells.py +0 -0
  11. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/probe.py +0 -0
  12. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/probe_lens_stream.py +0 -0
  13. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/publish.py +0 -0
  14. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/report_bench.py +0 -0
  15. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/deepseek-v4-flash-0731__eager.json +0 -0
  16. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/deepseek-v4-flash-0731__vllm-cudagraph.json +0 -0
  17. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/deepseek-v4-flash-0731__vllm-dspark-cudagraph.json +0 -0
  18. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/deepseek-v4-flash-0731__vllm-dspark.json +0 -0
  19. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/deepseek-v4-flash-0731__vllm-static.json +0 -0
  20. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/deepseek-v4-flash-0731__vllm.json +0 -0
  21. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/gemma-2-2b__eager.json +0 -0
  22. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/gemma-2-2b__vllm-cudagraph.json +0 -0
  23. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/gemma-2-2b__vllm-static.json +0 -0
  24. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/gemma-2-2b__vllm.json +0 -0
  25. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/llama-3.1-8b__eager.json +0 -0
  26. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/llama-3.1-8b__vllm-cudagraph.json +0 -0
  27. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/llama-3.1-8b__vllm-static.json +0 -0
  28. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/llama-3.1-8b__vllm.json +0 -0
  29. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3-4b__eager.json +0 -0
  30. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3-4b__vllm-cudagraph.json +0 -0
  31. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3-4b__vllm-static.json +0 -0
  32. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3-4b__vllm.json +0 -0
  33. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3.8-27b__eager.json +0 -0
  34. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3.8-27b__vllm-cudagraph.json +0 -0
  35. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3.8-27b__vllm-static.json +0 -0
  36. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results/qwen3.8-27b__vllm.json +0 -0
  37. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/results-latest.md +0 -0
  38. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/run_all.sh +0 -0
  39. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/run_bench.py +0 -0
  40. {interp_engine-1.3.0 → interp_engine-1.3.1}/benchmarks/workloads.py +0 -0
  41. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/AGENT_INTEGRATION.md +0 -0
  42. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/ARCHITECTURE_QUIRKS.md +0 -0
  43. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/COMPATIBILITY.md +0 -0
  44. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/ENGINE_HOOK_MAPPINGS.md +0 -0
  45. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/GRADIENTS.md +0 -0
  46. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/INTERNALS.md +0 -0
  47. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/PERFORMANCE.md +0 -0
  48. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/PORTING.md +0 -0
  49. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/README.md +0 -0
  50. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/SUPPORTED_POINTS.md +0 -0
  51. {interp_engine-1.3.0 → interp_engine-1.3.1}/docs/USAGE.md +0 -0
  52. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/__init__.py +0 -0
  53. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/_loop.py +0 -0
  54. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/address.py +0 -0
  55. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/arch.py +0 -0
  56. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/attn_config.py +0 -0
  57. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/attn_scores.py +0 -0
  58. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/autograd_support.py +0 -0
  59. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/capture.py +0 -0
  60. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/chat_compose.py +0 -0
  61. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/chat_conventions.py +0 -0
  62. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/chat_formatters.py +0 -0
  63. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/cuda_preflight.py +0 -0
  64. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/dispatch.py +0 -0
  65. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/facts.py +0 -0
  66. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/hooks.py +0 -0
  67. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/lens.py +0 -0
  68. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/load.py +0 -0
  69. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/mappers.py +0 -0
  70. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/model.py +0 -0
  71. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/moe_routing.py +0 -0
  72. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/points.py +0 -0
  73. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/protocol.py +0 -0
  74. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/residual_basis.py +0 -0
  75. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/select.py +0 -0
  76. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/steer.py +0 -0
  77. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/steer_specs.py +0 -0
  78. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/sync.py +0 -0
  79. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/tokenize.py +0 -0
  80. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_backend.py +0 -0
  81. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/__init__.py +0 -0
  82. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/_demux.py +0 -0
  83. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/_hooks.py +0 -0
  84. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/_payload.py +0 -0
  85. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/_tree.py +0 -0
  86. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/attn.py +0 -0
  87. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/capture.py +0 -0
  88. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/graphs.py +0 -0
  89. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/lens/__init__.py +0 -0
  90. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/lens/intervene.py +0 -0
  91. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/lens/readout.py +0 -0
  92. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/lens/unembed.py +0 -0
  93. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/mhc.py +0 -0
  94. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/native.py +0 -0
  95. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/requests.py +0 -0
  96. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/static.py +0 -0
  97. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_capture/steering.py +0 -0
  98. {interp_engine-1.3.0 → interp_engine-1.3.1}/interp_engine/vllm_plugin.py +0 -0
  99. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/conftest.py +0 -0
  100. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/harness.py +0 -0
  101. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/model_expectations.yaml +0 -0
  102. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/synthetic_families.py +0 -0
  103. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_address.py +0 -0
  104. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_attn_config_tripwire.py +0 -0
  105. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_attn_probs_indexing.py +0 -0
  106. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_attn_scores.py +0 -0
  107. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_attn_z_gqa.py +0 -0
  108. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_autograd_support.py +0 -0
  109. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_bench_workloads.py +0 -0
  110. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_capability_refusals.py +0 -0
  111. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_capture_addressing.py +0 -0
  112. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_chat_compose.py +0 -0
  113. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_chat_formatters.py +0 -0
  114. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_chat_templates.py +0 -0
  115. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_core.py +0 -0
  116. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_cuda_preflight.py +0 -0
  117. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_eager_autograd.py +0 -0
  118. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_facts.py +0 -0
  119. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_family_points.py +0 -0
  120. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_gated_attn_out.py +0 -0
  121. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_head_contributions.py +0 -0
  122. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_hook_call_conventions.py +0 -0
  123. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_layer_kinds.py +0 -0
  124. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_load.py +0 -0
  125. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_logit_transform.py +0 -0
  126. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_mappers.py +0 -0
  127. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_mlp_internals.py +0 -0
  128. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_model_expectations.py +0 -0
  129. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_moe.py +0 -0
  130. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_multimodal_arch.py +0 -0
  131. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_new_models_gpu.py +0 -0
  132. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_no_chat_template.py +0 -0
  133. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_normalized_hook.py +0 -0
  134. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_packaging.py +0 -0
  135. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_parity_gpt2.py +0 -0
  136. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_per_layer_attn_dims.py +0 -0
  137. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_points_registry.py +0 -0
  138. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_protocol.py +0 -0
  139. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_published_benchmarks.py +0 -0
  140. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_qk_norm.py +0 -0
  141. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_qkv_layout.py +0 -0
  142. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_reasoning_spans.py +0 -0
  143. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_release.py +0 -0
  144. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_resid_mid.py +0 -0
  145. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_residual_basis.py +0 -0
  146. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_sandwich_norms.py +0 -0
  147. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_select.py +0 -0
  148. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_sliding_window_attn.py +0 -0
  149. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_small_models_gpu.py +0 -0
  150. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_static_dsv4_gpu.py +0 -0
  151. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_static_parity_gpu.py +0 -0
  152. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_static_set.py +0 -0
  153. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_static_warmup.py +0 -0
  154. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_steer_context.py +0 -0
  155. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_steer_math_parity.py +0 -0
  156. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_sync_loop.py +0 -0
  157. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_sync_parity.py +0 -0
  158. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_unified_free_functions.py +0 -0
  159. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_unresolved_families.py +0 -0
  160. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_capture_gpu.py +0 -0
  161. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_capture_scales.py +0 -0
  162. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_engine_loop.py +0 -0
  163. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_graph_path.py +0 -0
  164. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_graphs_on_gpu.py +0 -0
  165. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_hook_availability.py +0 -0
  166. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_hyper_connections.py +0 -0
  167. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_kv_isolation.py +0 -0
  168. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_new_points.py +0 -0
  169. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_only_families.py +0 -0
  170. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_plugin.py +0 -0
  171. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vllm_wire_grammar.py +0 -0
  172. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_vocabulary_boundary.py +0 -0
  173. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_worker_lens_capture_readout.py +0 -0
  174. {interp_engine-1.3.0 → interp_engine-1.3.1}/tests/test_worker_lens_readout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: interp-engine
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: A fast, standardized interpretability engine that supports most modern models and architectures. Powers Neuronpedia.
5
5
  Project-URL: Homepage, https://github.com/decoderesearch/interp-engine
6
6
  Project-URL: Repository, https://github.com/decoderesearch/interp-engine
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "interp-engine"
3
- version = "1.3.0"
3
+ version = "1.3.1"
4
4
  description = "A fast, standardized interpretability engine that supports most modern models and architectures. Powers Neuronpedia."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -48,6 +48,12 @@ DOC_FILES = (
48
48
  "benchmarks/README.md",
49
49
  )
50
50
 
51
+ #: The samples site, which is nothing *but* fences a reader pastes -- so it is the doc that rot
52
+ #: hurts most. Globbed rather than listed: a page there is one file with one job, and adding one
53
+ #: should not need an edit here. Its own build would not catch a rename, since it never imports
54
+ #: the package.
55
+ SAMPLE_DOCS = tuple(sorted(str(p.relative_to(ROOT)) for p in (ROOT / "visualizer-web/docs-site/docs").glob("*.md")))
56
+
51
57
  #: Submodules the docs may import from directly. The package's own ``__init__`` says these two are
52
58
  #: reachable-but-not-re-exported on purpose (the worker RPC names, and the payload codecs), so a doc
53
59
  #: that shows tier-1 integration has to name them.
@@ -85,7 +91,7 @@ def _engine_imports(tree: ast.Module) -> list[tuple[str, str]]:
85
91
 
86
92
  DOC_FENCES = [
87
93
  pytest.param(path, line, source, id=f"{path}:{line}")
88
- for path in DOC_FILES
94
+ for path in DOC_FILES + SAMPLE_DOCS
89
95
  for line, source in _fences((ROOT / path).read_text())
90
96
  ]
91
97
 
@@ -98,6 +104,11 @@ def test_the_doc_list_still_matches_the_docs_on_disk():
98
104
  assert (ROOT / path).exists(), f"{path} is listed here but does not exist"
99
105
 
100
106
 
107
+ def test_the_samples_site_was_found():
108
+ """The glob above is silent when the directory moves, which would drop every sample page."""
109
+ assert len(SAMPLE_DOCS) > 5, f"only {len(SAMPLE_DOCS)} sample pages found; did docs-site move?"
110
+
111
+
101
112
  def test_there_are_fences_to_check():
102
113
  """Guards against the regex silently matching nothing after a format change."""
103
114
  assert len(DOC_FENCES) > 15, f"only {len(DOC_FENCES)} python fences found; did the fence format change?"
File without changes
File without changes
File without changes