ashlr-plugin 1.36.4

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 (499) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +39 -0
  3. package/.claude-plugin/plugin.json +36 -0
  4. package/.codex/agents/README.md +9 -0
  5. package/.codex/agents/ashlr-explorer.md +36 -0
  6. package/.codex/agents/ashlr-worker.md +38 -0
  7. package/.codex-plugin/plugin.json +45 -0
  8. package/.mcp.json +14 -0
  9. package/LICENSE +21 -0
  10. package/README.md +311 -0
  11. package/agents/ashlr-code.md +69 -0
  12. package/agents/ashlr-explore.md +44 -0
  13. package/agents/ashlr-plan.md +54 -0
  14. package/bench/fixtures/notebook-large.ipynb +660 -0
  15. package/bench/fixtures/notebook-small.ipynb +39 -0
  16. package/bench/fixtures/tasklist-closed.json +62 -0
  17. package/bench/fixtures/tasklist-large-mixed.json +27 -0
  18. package/bench/fixtures/tasklist-sprint-open.json +79 -0
  19. package/bench/fixtures/websearch-bun-runtime.json +32 -0
  20. package/bench/fixtures/websearch-react-hooks-patterns.json +32 -0
  21. package/bench/fixtures/websearch-typescript-generics.json +38 -0
  22. package/bench/refs/node-sdk/.refrev +1 -0
  23. package/bench/refs/node-sdk/README.md +17 -0
  24. package/bench/refs/node-sdk/src/agent/agent.ts +163 -0
  25. package/bench/refs/node-sdk/src/agent/create-agent-ui-stream.ts +83 -0
  26. package/bench/refs/node-sdk/src/agent/tool-loop-agent.ts +238 -0
  27. package/bench/refs/node-sdk/src/embed/embed-many.ts +409 -0
  28. package/bench/refs/node-sdk/src/embed/embed-result.ts +50 -0
  29. package/bench/refs/node-sdk/src/embed/embed.ts +257 -0
  30. package/bench/refs/node-sdk/src/error/invalid-argument-error.ts +34 -0
  31. package/bench/refs/node-sdk/src/error/invalid-tool-input-error.ts +33 -0
  32. package/bench/refs/node-sdk/src/error/no-object-generated-error.ts +70 -0
  33. package/bench/refs/node-sdk/src/generate-image/generate-image-result.ts +42 -0
  34. package/bench/refs/node-sdk/src/generate-image/generate-image.ts +362 -0
  35. package/bench/refs/node-sdk/src/generate-object/generate-object-result.ts +67 -0
  36. package/bench/refs/node-sdk/src/generate-object/generate-object.ts +501 -0
  37. package/bench/refs/node-sdk/src/generate-object/inject-json-instruction.ts +30 -0
  38. package/bench/refs/node-sdk/src/generate-object/output-strategy.ts +415 -0
  39. package/bench/refs/node-sdk/src/generate-object/repair-text.ts +12 -0
  40. package/bench/refs/node-sdk/src/generate-object/stream-object.ts +960 -0
  41. package/bench/refs/node-sdk/src/generate-speech/generate-speech.ts +191 -0
  42. package/bench/refs/node-sdk/src/generate-text/generate-text.ts +1484 -0
  43. package/bench/refs/node-sdk/src/generate-text/stream-text.ts +2708 -0
  44. package/bench/refs/node-sdk/src/generate-text/tool-call.ts +59 -0
  45. package/bench/refs/node-sdk/src/generate-text/tool-result.ts +36 -0
  46. package/bench/refs/node-sdk/src/telemetry/create-telemetry-dispatcher.ts +146 -0
  47. package/bench/refs/node-sdk/src/telemetry/telemetry-registry.ts +15 -0
  48. package/bench/refs/node-sdk/src/telemetry/telemetry.ts +223 -0
  49. package/bench/refs/node-sdk/src/util/async-iterable-stream.ts +94 -0
  50. package/bench/refs/node-sdk/src/util/consume-stream.ts +31 -0
  51. package/bench/refs/node-sdk/src/util/create-stitchable-stream.ts +112 -0
  52. package/bench/refs/node-sdk/src/util/download/download.ts +74 -0
  53. package/bench/refs/node-sdk/src/util/error-handler.ts +1 -0
  54. package/bench/refs/node-sdk/src/util/fix-json.ts +401 -0
  55. package/bench/refs/node-sdk/src/util/merge-objects.ts +79 -0
  56. package/bench/refs/python-lib/.refrev +1 -0
  57. package/bench/refs/python-lib/README.md +18 -0
  58. package/bench/refs/python-lib/pandas/core/_numba/executor.py +249 -0
  59. package/bench/refs/python-lib/pandas/core/_numba/extensions.py +586 -0
  60. package/bench/refs/python-lib/pandas/core/_numba/kernels/mean_.py +198 -0
  61. package/bench/refs/python-lib/pandas/core/_numba/kernels/min_max_.py +178 -0
  62. package/bench/refs/python-lib/pandas/core/_numba/kernels/sum_.py +255 -0
  63. package/bench/refs/python-lib/pandas/core/_numba/kernels/var_.py +251 -0
  64. package/bench/refs/python-lib/pandas/core/accessor.py +520 -0
  65. package/bench/refs/python-lib/pandas/core/api.py +138 -0
  66. package/bench/refs/python-lib/pandas/core/array_algos/masked_accumulations.py +97 -0
  67. package/bench/refs/python-lib/pandas/core/array_algos/masked_reductions.py +252 -0
  68. package/bench/refs/python-lib/pandas/core/array_algos/putmask.py +150 -0
  69. package/bench/refs/python-lib/pandas/core/array_algos/quantile.py +232 -0
  70. package/bench/refs/python-lib/pandas/core/array_algos/replace.py +159 -0
  71. package/bench/refs/python-lib/pandas/core/array_algos/take.py +609 -0
  72. package/bench/refs/python-lib/pandas/core/arraylike.py +534 -0
  73. package/bench/refs/python-lib/pandas/core/arrays/_arrow_string_mixins.py +434 -0
  74. package/bench/refs/python-lib/pandas/core/arrays/_mixins.py +630 -0
  75. package/bench/refs/python-lib/pandas/core/arrays/_ranges.py +276 -0
  76. package/bench/refs/python-lib/pandas/core/arrays/_utils.py +77 -0
  77. package/bench/refs/python-lib/pandas/core/arrays/arrow/accessors.py +521 -0
  78. package/bench/refs/python-lib/pandas/core/arrays/arrow/extension_types.py +174 -0
  79. package/bench/refs/python-lib/pandas/core/arrays/boolean.py +454 -0
  80. package/bench/refs/python-lib/pandas/core/arrays/floating.py +192 -0
  81. package/bench/refs/python-lib/pandas/core/arrays/integer.py +296 -0
  82. package/bench/refs/python-lib/pandas/core/arrays/masked.py +2140 -0
  83. package/bench/refs/python-lib/pandas/core/arrays/numeric.py +305 -0
  84. package/bench/refs/python-lib/pandas/core/arrays/numpy_.py +701 -0
  85. package/bench/refs/python-lib/pandas/core/arrays/period.py +1586 -0
  86. package/bench/refs/python-lib/pandas/core/arrays/sparse/accessor.py +505 -0
  87. package/bench/refs/python-lib/pandas/core/arrays/sparse/scipy_sparse.py +208 -0
  88. package/bench/refs/rust-project/.refrev +1 -0
  89. package/bench/refs/rust-project/README.md +17 -0
  90. package/bench/refs/rust-project/tokio/src/doc/os.rs +68 -0
  91. package/bench/refs/rust-project/tokio/src/fs/dir_builder.rs +129 -0
  92. package/bench/refs/rust-project/tokio/src/fs/file.rs +1113 -0
  93. package/bench/refs/rust-project/tokio/src/fs/mocks.rs +176 -0
  94. package/bench/refs/rust-project/tokio/src/fs/mod.rs +324 -0
  95. package/bench/refs/rust-project/tokio/src/fs/open_options.rs +856 -0
  96. package/bench/refs/rust-project/tokio/src/fs/read.rs +80 -0
  97. package/bench/refs/rust-project/tokio/src/fs/read_dir.rs +357 -0
  98. package/bench/refs/rust-project/tokio/src/fs/write.rs +99 -0
  99. package/bench/refs/rust-project/tokio/src/future/maybe_done.rs +123 -0
  100. package/bench/refs/rust-project/tokio/src/future/try_join.rs +82 -0
  101. package/bench/refs/rust-project/tokio/src/io/async_buf_read.rs +117 -0
  102. package/bench/refs/rust-project/tokio/src/io/async_read.rs +133 -0
  103. package/bench/refs/rust-project/tokio/src/io/async_seek.rs +96 -0
  104. package/bench/refs/rust-project/tokio/src/io/async_write.rs +402 -0
  105. package/bench/refs/rust-project/tokio/src/io/blocking.rs +339 -0
  106. package/bench/refs/rust-project/tokio/src/io/interest.rs +345 -0
  107. package/bench/refs/rust-project/tokio/src/io/join.rs +130 -0
  108. package/bench/refs/rust-project/tokio/src/io/mod.rs +308 -0
  109. package/bench/refs/rust-project/tokio/src/io/poll_evented.rs +319 -0
  110. package/bench/refs/rust-project/tokio/src/io/read_buf.rs +344 -0
  111. package/bench/refs/rust-project/tokio/src/io/ready.rs +322 -0
  112. package/bench/refs/rust-project/tokio/src/io/split.rs +166 -0
  113. package/bench/refs/rust-project/tokio/src/io/stderr.rs +148 -0
  114. package/bench/refs/rust-project/tokio/src/io/stdin.rs +98 -0
  115. package/bench/refs/rust-project/tokio/src/io/stdio_common.rs +222 -0
  116. package/bench/refs/rust-project/tokio/src/io/stdout.rs +197 -0
  117. package/bench/refs/rust-project/tokio/src/io/util/buf_reader.rs +311 -0
  118. package/bench/refs/rust-project/tokio/src/io/util/buf_stream.rs +207 -0
  119. package/bench/refs/rust-project/tokio/src/io/util/buf_writer.rs +310 -0
  120. package/bench/refs/rust-project/tokio/src/io/util/chain.rs +144 -0
  121. package/commands/_spawn-patterns.json +32 -0
  122. package/commands/ashlr-allow.md +21 -0
  123. package/commands/ashlr-benchmark.md +53 -0
  124. package/commands/ashlr-brief.md +97 -0
  125. package/commands/ashlr-budget.md +76 -0
  126. package/commands/ashlr-compact.md +54 -0
  127. package/commands/ashlr-dashboard.md +37 -0
  128. package/commands/ashlr-doctor.md +56 -0
  129. package/commands/ashlr-eco-mode.md +92 -0
  130. package/commands/ashlr-genome-init.md +24 -0
  131. package/commands/ashlr-genome-keygen.md +36 -0
  132. package/commands/ashlr-genome-loop.md +118 -0
  133. package/commands/ashlr-genome-push.md +36 -0
  134. package/commands/ashlr-genome-rewrap.md +48 -0
  135. package/commands/ashlr-genome-team-init.md +67 -0
  136. package/commands/ashlr-handoff.md +23 -0
  137. package/commands/ashlr-help.md +86 -0
  138. package/commands/ashlr-hook-timings.md +30 -0
  139. package/commands/ashlr-leaderboard.md +50 -0
  140. package/commands/ashlr-ollama-setup.md +39 -0
  141. package/commands/ashlr-orchestrate-status.md +72 -0
  142. package/commands/ashlr-orchestrate.md +83 -0
  143. package/commands/ashlr-parallelize.md +63 -0
  144. package/commands/ashlr-report-crash.md +33 -0
  145. package/commands/ashlr-resume.md +72 -0
  146. package/commands/ashlr-savings.md +24 -0
  147. package/commands/ashlr-settings.md +50 -0
  148. package/commands/ashlr-spawn.md +61 -0
  149. package/commands/ashlr-start.md +60 -0
  150. package/commands/ashlr-status.md +64 -0
  151. package/commands/ashlr-team-invite.md +47 -0
  152. package/commands/ashlr-tier.md +122 -0
  153. package/commands/ashlr-tour.md +60 -0
  154. package/commands/ashlr-update.md +155 -0
  155. package/commands/ashlr-upgrade.md +96 -0
  156. package/commands/goal.md +58 -0
  157. package/commands/loop.md +40 -0
  158. package/docs/CNAME +1 -0
  159. package/docs/PRO_TIER.md +104 -0
  160. package/docs/README.md +21 -0
  161. package/docs/architecture.md +415 -0
  162. package/docs/ashlr-pipe.md +161 -0
  163. package/docs/assets/logo.svg +19 -0
  164. package/docs/assets/og.png +0 -0
  165. package/docs/assets/og.svg +41 -0
  166. package/docs/benchmarks-v2.json +355 -0
  167. package/docs/benchmarks.json +102 -0
  168. package/docs/benchmarks.md +211 -0
  169. package/docs/billing.md +185 -0
  170. package/docs/cloud-genome.md +155 -0
  171. package/docs/competitive-wozcode.md +92 -0
  172. package/docs/deploy.md +325 -0
  173. package/docs/email-templates.md +113 -0
  174. package/docs/embed-tuning.md +103 -0
  175. package/docs/genome.md +120 -0
  176. package/docs/github-oauth-onboarding.md +127 -0
  177. package/docs/hero-video-script.md +129 -0
  178. package/docs/index.html +2262 -0
  179. package/docs/install-prompt.md +78 -0
  180. package/docs/install-windows.md +132 -0
  181. package/docs/install.ps1 +171 -0
  182. package/docs/install.sh +146 -0
  183. package/docs/launch/README.md +114 -0
  184. package/docs/launch/hn.md +49 -0
  185. package/docs/launch/reddit.md +45 -0
  186. package/docs/launch/x.md +65 -0
  187. package/docs/launch-post.md +112 -0
  188. package/docs/legal.md +78 -0
  189. package/docs/llm-providers.md +99 -0
  190. package/docs/multi-host-mcp.md +217 -0
  191. package/docs/multi-turn-architecture.md +108 -0
  192. package/docs/operations/deployment.md +108 -0
  193. package/docs/operations/error-monitoring.md +70 -0
  194. package/docs/operations/weekly-digest.md +70 -0
  195. package/docs/operations.md +494 -0
  196. package/docs/platform-support.md +133 -0
  197. package/docs/policy-packs.md +188 -0
  198. package/docs/press-kit/fact-sheet.md +78 -0
  199. package/docs/press-kit/founder-bio.md +3 -0
  200. package/docs/press-kit/logo.svg +33 -0
  201. package/docs/press-kit/screenshots.md +146 -0
  202. package/docs/pricing.md +251 -0
  203. package/docs/pro-backend-architecture.md +523 -0
  204. package/docs/producthunt.md +52 -0
  205. package/docs/router-migration.md +110 -0
  206. package/docs/session-log-schema.md +68 -0
  207. package/docs/social.md +95 -0
  208. package/docs/team-genome.md +528 -0
  209. package/docs/telemetry.md +194 -0
  210. package/docs/test-isolation.md +100 -0
  211. package/docs/upgrade.md +159 -0
  212. package/hooks/_hook-errors.ts +87 -0
  213. package/hooks/_hook-perf-emit.ts +113 -0
  214. package/hooks/_hook-timing-ledger.ts +1133 -0
  215. package/hooks/_nudge-throttle.ts +127 -0
  216. package/hooks/_recent-blocks.ts +127 -0
  217. package/hooks/audit-upload.ts +86 -0
  218. package/hooks/codex-hooks.json +171 -0
  219. package/hooks/commit-attribution.ts +179 -0
  220. package/hooks/edit-batching-nudge.ts +154 -0
  221. package/hooks/genome-scribe-hook.ts +219 -0
  222. package/hooks/hooks.json +294 -0
  223. package/hooks/orient-nudge-hook.ts +242 -0
  224. package/hooks/policy-enforce.ts +214 -0
  225. package/hooks/post-tool-use-embedding.ts +93 -0
  226. package/hooks/post-tool-use-genome.sh +37 -0
  227. package/hooks/post-tool-use-genome.ts +69 -0
  228. package/hooks/posttooluse-correlate.ts +122 -0
  229. package/hooks/posttooluse-dedupe-output.ts +241 -0
  230. package/hooks/posttooluse-genome-refresh.ts +223 -0
  231. package/hooks/posttooluse-native-nudge.ts +205 -0
  232. package/hooks/posttooluse-stale-result.ts +277 -0
  233. package/hooks/pretooluse-bash.ts +63 -0
  234. package/hooks/pretooluse-budget-guard.ts +318 -0
  235. package/hooks/pretooluse-common.ts +985 -0
  236. package/hooks/pretooluse-eco-router.ts +196 -0
  237. package/hooks/pretooluse-edit.sh +93 -0
  238. package/hooks/pretooluse-edit.ts +197 -0
  239. package/hooks/pretooluse-glob.ts +70 -0
  240. package/hooks/pretooluse-grep.sh +85 -0
  241. package/hooks/pretooluse-grep.ts +96 -0
  242. package/hooks/pretooluse-notebookedit.ts +121 -0
  243. package/hooks/pretooluse-read.sh +118 -0
  244. package/hooks/pretooluse-read.ts +118 -0
  245. package/hooks/pretooluse-task.ts +130 -0
  246. package/hooks/pretooluse-webfetch.ts +66 -0
  247. package/hooks/pretooluse-websearch.ts +85 -0
  248. package/hooks/pretooluse-write.ts +128 -0
  249. package/hooks/pulse-emit.ts +197 -0
  250. package/hooks/session-end-consolidate.sh +35 -0
  251. package/hooks/session-end-consolidate.ts +188 -0
  252. package/hooks/session-end-stats-gc.ts +80 -0
  253. package/hooks/session-log-append.sh +94 -0
  254. package/hooks/session-log-append.ts +116 -0
  255. package/hooks/session-start.ts +993 -0
  256. package/hooks/sessionend-hook-health-nudge.ts +451 -0
  257. package/hooks/sessionend-savings-nudge.ts +318 -0
  258. package/hooks/sessionend-status-line-nudge.ts +296 -0
  259. package/hooks/sessionstart-brief.ts +140 -0
  260. package/hooks/sessionstart-cost-refactor.ts +95 -0
  261. package/hooks/sessionstart-efficient.ts +110 -0
  262. package/hooks/sessionstart-genome-author.ts +93 -0
  263. package/hooks/sessionstart-lean-tools.ts +98 -0
  264. package/hooks/sessionstart-search.ts +97 -0
  265. package/hooks/stop-accounting.ts +152 -0
  266. package/hooks/subagent-stop-rollup.ts +162 -0
  267. package/hooks/userpromptsubmit-brief-trigger.ts +156 -0
  268. package/package.json +56 -0
  269. package/ports/README.md +108 -0
  270. package/ports/cursor/mcp.json +11 -0
  271. package/ports/goose/recipe.yaml +26 -0
  272. package/scripts/ashlr-mcp.ts +40 -0
  273. package/scripts/auto-update.ts +177 -0
  274. package/scripts/baseline-scan.ts +831 -0
  275. package/scripts/bench-orchestrate.ts +377 -0
  276. package/scripts/benchmark-refs.ts +292 -0
  277. package/scripts/bootstrap.mjs +100 -0
  278. package/scripts/brief-eval.ts +234 -0
  279. package/scripts/bump-version.ts +82 -0
  280. package/scripts/bun-resolve.d.mts +11 -0
  281. package/scripts/bun-resolve.mjs +59 -0
  282. package/scripts/calibrate-grep.ts +467 -0
  283. package/scripts/capture-grep-workload.ts +260 -0
  284. package/scripts/check-tier.ts +61 -0
  285. package/scripts/check-version-sync.ts +97 -0
  286. package/scripts/cli-orchestrate-status.ts +386 -0
  287. package/scripts/cli-orchestrate.ts +303 -0
  288. package/scripts/cli.ts +478 -0
  289. package/scripts/cloud-smoke-test.ts +313 -0
  290. package/scripts/coach-report.ts +373 -0
  291. package/scripts/context-db-migrate.ts +137 -0
  292. package/scripts/context-status.ts +43 -0
  293. package/scripts/demo-run.ts +255 -0
  294. package/scripts/deploy-smoke.sh +140 -0
  295. package/scripts/doctor.ts +992 -0
  296. package/scripts/embed-file-worker.ts +104 -0
  297. package/scripts/embed-tune.ts +308 -0
  298. package/scripts/errors-report.ts +428 -0
  299. package/scripts/find-test-leak.ts +69 -0
  300. package/scripts/generate-badge.ts +357 -0
  301. package/scripts/genome-auto-consolidate.ts +533 -0
  302. package/scripts/genome-auto-propose.ts +578 -0
  303. package/scripts/genome-cloud-pull.ts +363 -0
  304. package/scripts/genome-cloud-push.ts +382 -0
  305. package/scripts/genome-cloud-sync.ts +587 -0
  306. package/scripts/genome-commit-watcher.ts +295 -0
  307. package/scripts/genome-init.ts +986 -0
  308. package/scripts/genome-key.ts +233 -0
  309. package/scripts/genome-keygen.ts +168 -0
  310. package/scripts/genome-link.ts +59 -0
  311. package/scripts/genome-refresh-worker.ts +364 -0
  312. package/scripts/genome-rewrap.ts +90 -0
  313. package/scripts/genome-synthesizer.ts +679 -0
  314. package/scripts/genome-team-init.ts +312 -0
  315. package/scripts/handoff-pack.ts +438 -0
  316. package/scripts/hook-bootstrap.mjs +75 -0
  317. package/scripts/hook-timing-reader.ts +371 -0
  318. package/scripts/hook-timings-report.ts +554 -0
  319. package/scripts/install-genome-hooks.ts +196 -0
  320. package/scripts/install-onnx-model.ts +154 -0
  321. package/scripts/install-permissions.ts +276 -0
  322. package/scripts/install-status-line.ts +150 -0
  323. package/scripts/mcp-entrypoint.sh +78 -0
  324. package/scripts/mcp-entrypoint.ts +130 -0
  325. package/scripts/mdx-angle-bracket-lint.ts +152 -0
  326. package/scripts/measure-cold-start.ts +126 -0
  327. package/scripts/migrate-stats-to-sqlite.ts +86 -0
  328. package/scripts/ollama-setup.ts +498 -0
  329. package/scripts/onboarding-wizard.ts +1691 -0
  330. package/scripts/orchestrate-emit-telemetry.ts +177 -0
  331. package/scripts/orchestrate-expand.ts +517 -0
  332. package/scripts/orchestrate-run.ts +744 -0
  333. package/scripts/print-legend.ts +50 -0
  334. package/scripts/product-metadata.ts +38 -0
  335. package/scripts/prune-old-memories.ts +208 -0
  336. package/scripts/publish.sh +88 -0
  337. package/scripts/read-calibration.ts +122 -0
  338. package/scripts/report-crash.ts +226 -0
  339. package/scripts/run-benchmark.ts +750 -0
  340. package/scripts/run-root-tests.ts +28 -0
  341. package/scripts/savings-dashboard.ts +1258 -0
  342. package/scripts/savings-report-extras.ts +447 -0
  343. package/scripts/savings-status-line.ts +873 -0
  344. package/scripts/session-event-emit.ts +266 -0
  345. package/scripts/session-greet.ts +686 -0
  346. package/scripts/session-log-report.ts +551 -0
  347. package/scripts/session-resume.ts +614 -0
  348. package/scripts/set-hook-mode.ts +83 -0
  349. package/scripts/smoke-cross-platform.ts +117 -0
  350. package/scripts/smoke-realtime.ts +257 -0
  351. package/scripts/smoke-tools.ts +21 -0
  352. package/scripts/stats-cloud-pull.ts +213 -0
  353. package/scripts/stats-cloud-sync.ts +261 -0
  354. package/scripts/telemetry-flush.ts +160 -0
  355. package/scripts/telemetry-status.ts +266 -0
  356. package/scripts/timing-budget.ts +35 -0
  357. package/scripts/ui-animation.ts +120 -0
  358. package/scripts/ui.ts +431 -0
  359. package/scripts/upgrade-flow.ts +775 -0
  360. package/scripts/weekly-digest.ts +394 -0
  361. package/servers/_accounting.ts +78 -0
  362. package/servers/_ask-router.ts +84 -0
  363. package/servers/_ast-chunker.ts +434 -0
  364. package/servers/_ast-helpers.ts +183 -0
  365. package/servers/_ast-languages.ts +153 -0
  366. package/servers/_ast-refactor/_shared.ts +221 -0
  367. package/servers/_ast-refactor/cross-file-rename.ts +560 -0
  368. package/servers/_ast-refactor/extract-function.ts +357 -0
  369. package/servers/_ast-refactor/file-local-rename.ts +172 -0
  370. package/servers/_ast-refactor.ts +41 -0
  371. package/servers/_ast-skeleton.ts +107 -0
  372. package/servers/_bash-summarizers-registry.ts +1096 -0
  373. package/servers/_crash-dump.ts +210 -0
  374. package/servers/_cwd-clamp.ts +342 -0
  375. package/servers/_edit-log.ts +28 -0
  376. package/servers/_edit-match.ts +236 -0
  377. package/servers/_edit-validate.ts +196 -0
  378. package/servers/_embed-calibration.ts +123 -0
  379. package/servers/_embedding-cache.ts +401 -0
  380. package/servers/_embedding-model.ts +329 -0
  381. package/servers/_events.ts +113 -0
  382. package/servers/_genome-cache.ts +154 -0
  383. package/servers/_genome-commits.ts +172 -0
  384. package/servers/_genome-crypto-v2.ts +242 -0
  385. package/servers/_genome-crypto.ts +259 -0
  386. package/servers/_genome-discoveries.ts +140 -0
  387. package/servers/_genome-embed-populator.ts +216 -0
  388. package/servers/_genome-freshness.ts +134 -0
  389. package/servers/_genome-issues.ts +171 -0
  390. package/servers/_genome-live.ts +263 -0
  391. package/servers/_genome-prs.ts +188 -0
  392. package/servers/_genome-search.ts +479 -0
  393. package/servers/_genome-sync.ts +297 -0
  394. package/servers/_history-tracker.ts +279 -0
  395. package/servers/_http-helpers.ts +151 -0
  396. package/servers/_identity-hash.ts +151 -0
  397. package/servers/_llm-providers/anthropic.ts +132 -0
  398. package/servers/_llm-providers/cloud.ts +195 -0
  399. package/servers/_llm-providers/index.ts +350 -0
  400. package/servers/_llm-providers/local.ts +127 -0
  401. package/servers/_llm-providers/onnx.ts +393 -0
  402. package/servers/_llm-providers/types.ts +27 -0
  403. package/servers/_manifest-v2.ts +447 -0
  404. package/servers/_mcp-host.ts +93 -0
  405. package/servers/_nudge-events.ts +451 -0
  406. package/servers/_orchestrate-executor.ts +316 -0
  407. package/servers/_prefetch.ts +435 -0
  408. package/servers/_pricing.ts +256 -0
  409. package/servers/_pro.ts +381 -0
  410. package/servers/_read-cache.ts +44 -0
  411. package/servers/_router-handlers.ts +46 -0
  412. package/servers/_router.ts +55 -0
  413. package/servers/_run-with-timeout.ts +173 -0
  414. package/servers/_savings-render.ts +214 -0
  415. package/servers/_stats-sqlite.ts +640 -0
  416. package/servers/_stats.ts +1183 -0
  417. package/servers/_status-line-cells.ts +469 -0
  418. package/servers/_streaks.ts +162 -0
  419. package/servers/_summarize.ts +208 -0
  420. package/servers/_task-graph-render.ts +217 -0
  421. package/servers/_task-graph.ts +545 -0
  422. package/servers/_telemetry.ts +719 -0
  423. package/servers/_test-parsers.ts +530 -0
  424. package/servers/_test-watch.ts +626 -0
  425. package/servers/_text-helpers.ts +37 -0
  426. package/servers/_token-measure.ts +160 -0
  427. package/servers/_tool-base.ts +248 -0
  428. package/servers/_weekly-digest.ts +391 -0
  429. package/servers/ask-server-handlers.ts +49 -0
  430. package/servers/ask-server.ts +174 -0
  431. package/servers/bash-server-handlers.ts +138 -0
  432. package/servers/bash-server.ts +1136 -0
  433. package/servers/bench.ts +186 -0
  434. package/servers/diff-semantic-server-handlers.ts +39 -0
  435. package/servers/diff-semantic-server.ts +566 -0
  436. package/servers/diff-server-handlers.ts +317 -0
  437. package/servers/diff-server.ts +20 -0
  438. package/servers/edit-server-handlers.ts +31 -0
  439. package/servers/edit-server.ts +209 -0
  440. package/servers/edit-structural-server-handlers.ts +322 -0
  441. package/servers/efficiency-server-handlers.ts +161 -0
  442. package/servers/efficiency-server.ts +1135 -0
  443. package/servers/flush-server-handlers.ts +21 -0
  444. package/servers/flush-server.ts +19 -0
  445. package/servers/genome-server-handlers.ts +118 -0
  446. package/servers/genome-server.ts +397 -0
  447. package/servers/github-server-handlers.ts +187 -0
  448. package/servers/github-server.ts +856 -0
  449. package/servers/glob-server-handlers.ts +233 -0
  450. package/servers/glob-server.ts +20 -0
  451. package/servers/grep-server-handlers.ts +61 -0
  452. package/servers/grep-server.ts +564 -0
  453. package/servers/http-server-handlers.ts +36 -0
  454. package/servers/http-server.ts +149 -0
  455. package/servers/logs-server-handlers.ts +42 -0
  456. package/servers/logs-server.ts +359 -0
  457. package/servers/ls-server-handlers.ts +166 -0
  458. package/servers/ls-server.ts +20 -0
  459. package/servers/multi-edit-server-handlers.ts +51 -0
  460. package/servers/multi-edit-server.ts +422 -0
  461. package/servers/notebook-edit-server-handlers.ts +34 -0
  462. package/servers/notebook-edit-server.ts +181 -0
  463. package/servers/orient-server-handlers.ts +52 -0
  464. package/servers/orient-server.ts +436 -0
  465. package/servers/pipe-server-handlers.ts +68 -0
  466. package/servers/pipe-server.ts +300 -0
  467. package/servers/read-server-handlers.ts +42 -0
  468. package/servers/read-server.ts +206 -0
  469. package/servers/rename-file-server-handlers.ts +67 -0
  470. package/servers/rename-file-server.ts +699 -0
  471. package/servers/savings-server-handlers.ts +27 -0
  472. package/servers/savings-server.ts +54 -0
  473. package/servers/search-replace-regex-server-handlers.ts +96 -0
  474. package/servers/search-replace-regex-server.ts +751 -0
  475. package/servers/sql-server-handlers.ts +58 -0
  476. package/servers/sql-server.ts +505 -0
  477. package/servers/task-server-handlers.ts +358 -0
  478. package/servers/task-server.ts +24 -0
  479. package/servers/test-server-handlers.ts +351 -0
  480. package/servers/test-server.ts +20 -0
  481. package/servers/tree-server-handlers.ts +503 -0
  482. package/servers/tree-server.ts +20 -0
  483. package/servers/webfetch-server-handlers.ts +166 -0
  484. package/servers/webfetch-server.ts +20 -0
  485. package/servers/websearch-server-handlers.ts +215 -0
  486. package/servers/websearch-server.ts +19 -0
  487. package/servers/write-server-handlers.ts +27 -0
  488. package/servers/write-server.ts +97 -0
  489. package/skills/ashlr-brief/SKILL.md +80 -0
  490. package/skills/ashlr-codex-doctor/SKILL.md +21 -0
  491. package/skills/ashlr-codex-efficient-tools/SKILL.md +17 -0
  492. package/skills/ashlr-codex-genome-refresh/SKILL.md +20 -0
  493. package/skills/ashlr-codex-parallel-explore/SKILL.md +20 -0
  494. package/skills/ashlr-codex-savings/SKILL.md +17 -0
  495. package/skills/ashlr-cost-refactor/SKILL.md +50 -0
  496. package/skills/ashlr-efficient/SKILL.md +64 -0
  497. package/skills/ashlr-genome-author/SKILL.md +43 -0
  498. package/skills/ashlr-lean-tools/SKILL.md +43 -0
  499. package/skills/ashlr-search/SKILL.md +46 -0
@@ -0,0 +1,97 @@
1
+ """
2
+ masked_accumulations.py is for accumulation algorithms using a mask-based approach
3
+ for missing values.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from typing import TYPE_CHECKING
9
+
10
+ import numpy as np
11
+
12
+ if TYPE_CHECKING:
13
+ from collections.abc import Callable
14
+
15
+ from pandas._typing import npt
16
+
17
+
18
+ def _cum_func(
19
+ func: Callable,
20
+ values: np.ndarray,
21
+ mask: npt.NDArray[np.bool_],
22
+ *,
23
+ skipna: bool = True,
24
+ ) -> tuple[np.ndarray, npt.NDArray[np.bool_]]:
25
+ """
26
+ Accumulations for 1D masked array.
27
+
28
+ We will modify values in place to replace NAs with the appropriate fill value.
29
+
30
+ Parameters
31
+ ----------
32
+ func : np.cumsum, np.cumprod, np.maximum.accumulate, np.minimum.accumulate
33
+ values : np.ndarray
34
+ Numpy array with the values (can be of any dtype that support the
35
+ operation).
36
+ mask : np.ndarray
37
+ Boolean numpy array (True values indicate missing values).
38
+ skipna : bool, default True
39
+ Whether to skip NA.
40
+ """
41
+ dtype_info: np.iinfo | np.finfo
42
+ if values.dtype.kind == "f":
43
+ dtype_info = np.finfo(values.dtype.type)
44
+ elif values.dtype.kind in "iu":
45
+ dtype_info = np.iinfo(values.dtype.type)
46
+ elif values.dtype.kind == "b":
47
+ # Max value of bool is 1, but since we are setting into a boolean
48
+ # array, 255 is fine as well. Min value has to be 0 when setting
49
+ # into the boolean array.
50
+ dtype_info = np.iinfo(np.uint8)
51
+ else:
52
+ raise NotImplementedError(
53
+ f"No masked accumulation defined for dtype {values.dtype.type}"
54
+ )
55
+ try:
56
+ fill_value = {
57
+ np.cumprod: 1,
58
+ np.maximum.accumulate: dtype_info.min,
59
+ np.cumsum: 0,
60
+ np.minimum.accumulate: dtype_info.max,
61
+ }[func]
62
+ except KeyError as err:
63
+ raise NotImplementedError(
64
+ f"No accumulation for {func} implemented on BaseMaskedArray"
65
+ ) from err
66
+
67
+ values[mask] = fill_value
68
+
69
+ if not skipna:
70
+ mask = np.maximum.accumulate(mask)
71
+
72
+ values = func(values)
73
+ return values, mask
74
+
75
+
76
+ def cumsum(
77
+ values: np.ndarray, mask: npt.NDArray[np.bool_], *, skipna: bool = True
78
+ ) -> tuple[np.ndarray, npt.NDArray[np.bool_]]:
79
+ return _cum_func(np.cumsum, values, mask, skipna=skipna)
80
+
81
+
82
+ def cumprod(
83
+ values: np.ndarray, mask: npt.NDArray[np.bool_], *, skipna: bool = True
84
+ ) -> tuple[np.ndarray, npt.NDArray[np.bool_]]:
85
+ return _cum_func(np.cumprod, values, mask, skipna=skipna)
86
+
87
+
88
+ def cummin(
89
+ values: np.ndarray, mask: npt.NDArray[np.bool_], *, skipna: bool = True
90
+ ) -> tuple[np.ndarray, npt.NDArray[np.bool_]]:
91
+ return _cum_func(np.minimum.accumulate, values, mask, skipna=skipna)
92
+
93
+
94
+ def cummax(
95
+ values: np.ndarray, mask: npt.NDArray[np.bool_], *, skipna: bool = True
96
+ ) -> tuple[np.ndarray, npt.NDArray[np.bool_]]:
97
+ return _cum_func(np.maximum.accumulate, values, mask, skipna=skipna)
@@ -0,0 +1,252 @@
1
+ """
2
+ masked_reductions.py is for reduction algorithms using a mask-based approach
3
+ for missing values.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from typing import TYPE_CHECKING
9
+ import warnings
10
+
11
+ import numpy as np
12
+
13
+ from pandas._libs import (
14
+ lib,
15
+ missing as libmissing,
16
+ )
17
+
18
+ from pandas.core.nanops import check_below_min_count
19
+
20
+ if TYPE_CHECKING:
21
+ from collections.abc import Callable
22
+
23
+ from pandas._typing import (
24
+ AxisInt,
25
+ npt,
26
+ )
27
+
28
+
29
+ def _get_min_value(dtype: np.dtype) -> int | float:
30
+ """Get the minimum value for a given numpy dtype."""
31
+ if dtype.kind == "f":
32
+ return -np.inf
33
+ elif dtype.kind == "u":
34
+ return 0
35
+ else:
36
+ return np.iinfo(dtype).min
37
+
38
+
39
+ def _get_max_value(dtype: np.dtype) -> int | float:
40
+ """Get the maximum value for a given numpy dtype."""
41
+ if dtype.kind == "f":
42
+ return np.inf
43
+ else:
44
+ return np.iinfo(dtype).max
45
+
46
+
47
+ def _reductions(
48
+ func: Callable,
49
+ values: np.ndarray,
50
+ mask: npt.NDArray[np.bool_],
51
+ *,
52
+ skipna: bool = True,
53
+ min_count: int = 0,
54
+ axis: AxisInt | None = None,
55
+ initial: object | lib.NoDefault = lib.no_default,
56
+ **kwargs,
57
+ ):
58
+ """
59
+ Sum, mean or product for 1D masked array.
60
+
61
+ Parameters
62
+ ----------
63
+ func : np.sum or np.prod
64
+ values : np.ndarray
65
+ Numpy array with the values (can be of any dtype that support the
66
+ operation).
67
+ mask : np.ndarray[bool]
68
+ Boolean numpy array (True values indicate missing values).
69
+ skipna : bool, default True
70
+ Whether to skip NA.
71
+ min_count : int, default 0
72
+ The required number of valid values to perform the operation. If fewer than
73
+ ``min_count`` non-NA values are present the result will be NA.
74
+ axis : int, optional, default None
75
+ initial : scalar, optional
76
+ Starting value for the reduction. NumPy has a default value for most
77
+ data types, but for object-dtype arrays we need to specify it explicitly
78
+ """
79
+ if initial is not lib.no_default:
80
+ kwargs["initial"] = initial
81
+
82
+ if not skipna:
83
+ if axis is not None and values.ndim > 1:
84
+ # For 2D with axis, compute the reduction and let the caller
85
+ # handle per-row/column masking via _wrap_reduction_result.
86
+ return func(values, axis=axis, **kwargs)
87
+ if mask.any() or check_below_min_count(values.shape, None, min_count):
88
+ return libmissing.NA
89
+ else:
90
+ return func(values, axis=axis, **kwargs)
91
+ else:
92
+ if check_below_min_count(values.shape, mask, min_count) and (
93
+ axis is None or values.ndim == 1
94
+ ):
95
+ return libmissing.NA
96
+
97
+ return func(values, where=~mask, axis=axis, **kwargs)
98
+
99
+
100
+ def sum(
101
+ values: np.ndarray,
102
+ mask: npt.NDArray[np.bool_],
103
+ *,
104
+ skipna: bool = True,
105
+ min_count: int = 0,
106
+ axis: AxisInt | None = None,
107
+ initial: object | lib.NoDefault = lib.no_default,
108
+ ):
109
+ return _reductions(
110
+ np.sum,
111
+ values=values,
112
+ mask=mask,
113
+ skipna=skipna,
114
+ min_count=min_count,
115
+ axis=axis,
116
+ initial=initial,
117
+ )
118
+
119
+
120
+ def prod(
121
+ values: np.ndarray,
122
+ mask: npt.NDArray[np.bool_],
123
+ *,
124
+ skipna: bool = True,
125
+ min_count: int = 0,
126
+ axis: AxisInt | None = None,
127
+ ):
128
+ return _reductions(
129
+ np.prod, values=values, mask=mask, skipna=skipna, min_count=min_count, axis=axis
130
+ )
131
+
132
+
133
+ def _minmax(
134
+ func: Callable,
135
+ values: np.ndarray,
136
+ mask: npt.NDArray[np.bool_],
137
+ *,
138
+ skipna: bool = True,
139
+ axis: AxisInt | None = None,
140
+ ):
141
+ """
142
+ Reduction for 1D masked array.
143
+
144
+ Parameters
145
+ ----------
146
+ func : np.min or np.max
147
+ values : np.ndarray
148
+ Numpy array with the values (can be of any dtype that support the
149
+ operation).
150
+ mask : np.ndarray[bool]
151
+ Boolean numpy array (True values indicate missing values).
152
+ skipna : bool, default True
153
+ Whether to skip NA.
154
+ axis : int, optional, default None
155
+ """
156
+ if not skipna:
157
+ if axis is not None and values.ndim > 1:
158
+ # For 2D with axis, compute the reduction and let the caller
159
+ # handle per-row/column masking via _wrap_reduction_result.
160
+ return func(values, axis=axis)
161
+ if mask.any() or not values.size:
162
+ # min/max with empty array raise in numpy, pandas returns NA
163
+ return libmissing.NA
164
+ else:
165
+ return func(values, axis=axis)
166
+ else:
167
+ if axis is not None and values.ndim > 1:
168
+ # Can't use values[~mask] which would flatten the array.
169
+ # Instead, replace masked values with the identity element
170
+ # and then reduce.
171
+ if func is np.min:
172
+ fill_value = _get_max_value(values.dtype)
173
+ else:
174
+ fill_value = _get_min_value(values.dtype)
175
+ filled = np.where(mask, fill_value, values)
176
+ return func(filled, axis=axis)
177
+ subset = values[~mask]
178
+ if subset.size:
179
+ return func(subset, axis=axis)
180
+ else:
181
+ # min/max with empty array raise in numpy, pandas returns NA
182
+ return libmissing.NA
183
+
184
+
185
+ def min(
186
+ values: np.ndarray,
187
+ mask: npt.NDArray[np.bool_],
188
+ *,
189
+ skipna: bool = True,
190
+ axis: AxisInt | None = None,
191
+ ):
192
+ return _minmax(np.min, values=values, mask=mask, skipna=skipna, axis=axis)
193
+
194
+
195
+ def max(
196
+ values: np.ndarray,
197
+ mask: npt.NDArray[np.bool_],
198
+ *,
199
+ skipna: bool = True,
200
+ axis: AxisInt | None = None,
201
+ ):
202
+ return _minmax(np.max, values=values, mask=mask, skipna=skipna, axis=axis)
203
+
204
+
205
+ def mean(
206
+ values: np.ndarray,
207
+ mask: npt.NDArray[np.bool_],
208
+ *,
209
+ skipna: bool = True,
210
+ axis: AxisInt | None = None,
211
+ ):
212
+ if not values.size or (mask.all() and (axis is None or values.ndim == 1)):
213
+ return libmissing.NA
214
+ with warnings.catch_warnings():
215
+ warnings.simplefilter("ignore", RuntimeWarning)
216
+ return _reductions(np.mean, values=values, mask=mask, skipna=skipna, axis=axis)
217
+
218
+
219
+ def var(
220
+ values: np.ndarray,
221
+ mask: npt.NDArray[np.bool_],
222
+ *,
223
+ skipna: bool = True,
224
+ axis: AxisInt | None = None,
225
+ ddof: int = 1,
226
+ ):
227
+ if not values.size or (mask.all() and (axis is None or values.ndim == 1)):
228
+ return libmissing.NA
229
+
230
+ with warnings.catch_warnings():
231
+ warnings.simplefilter("ignore", RuntimeWarning)
232
+ return _reductions(
233
+ np.var, values=values, mask=mask, skipna=skipna, axis=axis, ddof=ddof
234
+ )
235
+
236
+
237
+ def std(
238
+ values: np.ndarray,
239
+ mask: npt.NDArray[np.bool_],
240
+ *,
241
+ skipna: bool = True,
242
+ axis: AxisInt | None = None,
243
+ ddof: int = 1,
244
+ ):
245
+ if not values.size or (mask.all() and (axis is None or values.ndim == 1)):
246
+ return libmissing.NA
247
+
248
+ with warnings.catch_warnings():
249
+ warnings.simplefilter("ignore", RuntimeWarning)
250
+ return _reductions(
251
+ np.std, values=values, mask=mask, skipna=skipna, axis=axis, ddof=ddof
252
+ )
@@ -0,0 +1,150 @@
1
+ """
2
+ EA-compatible analogue to np.putmask
3
+ """
4
+
5
+ from __future__ import annotations
6
+
7
+ from typing import (
8
+ TYPE_CHECKING,
9
+ Any,
10
+ )
11
+
12
+ import numpy as np
13
+
14
+ from pandas._libs import lib
15
+
16
+ from pandas.core.dtypes.cast import infer_dtype_from
17
+ from pandas.core.dtypes.common import is_list_like
18
+
19
+ from pandas.core.arrays import ExtensionArray
20
+
21
+ if TYPE_CHECKING:
22
+ from pandas._typing import (
23
+ ArrayLike,
24
+ npt,
25
+ )
26
+
27
+ from pandas import MultiIndex
28
+
29
+
30
+ def putmask_inplace(values: ArrayLike, mask: npt.NDArray[np.bool_], value: Any) -> None:
31
+ """
32
+ ExtensionArray-compatible implementation of np.putmask. The main
33
+ difference is we do not handle repeating or truncating like numpy.
34
+
35
+ Parameters
36
+ ----------
37
+ values: np.ndarray or ExtensionArray
38
+ mask : np.ndarray[bool]
39
+ We assume extract_bool_array has already been called.
40
+ value : Any
41
+ """
42
+
43
+ if (
44
+ not isinstance(values, np.ndarray)
45
+ or (values.dtype == object and not lib.is_scalar(value))
46
+ # GH#43424: np.putmask raises TypeError if we cannot cast between types with
47
+ # rule = "safe", a stricter guarantee we may not have here
48
+ or (
49
+ isinstance(value, np.ndarray) and not np.can_cast(value.dtype, values.dtype)
50
+ )
51
+ ):
52
+ # GH#19266 using np.putmask gives unexpected results with listlike value
53
+ # along with object dtype
54
+ if is_list_like(value) and len(value) == len(values):
55
+ values[mask] = value[mask]
56
+ else:
57
+ values[mask] = value
58
+ else:
59
+ # GH#37833 np.putmask is more performant than __setitem__
60
+ np.putmask(values, mask, value)
61
+
62
+
63
+ def putmask_without_repeat(
64
+ values: np.ndarray, mask: npt.NDArray[np.bool_], new: Any
65
+ ) -> None:
66
+ """
67
+ np.putmask will truncate or repeat if `new` is a listlike with
68
+ len(new) != len(values). We require an exact match.
69
+
70
+ Parameters
71
+ ----------
72
+ values : np.ndarray
73
+ mask : np.ndarray[bool]
74
+ new : Any
75
+ """
76
+ if getattr(new, "ndim", 0) >= 1:
77
+ new = new.astype(values.dtype, copy=False)
78
+
79
+ # TODO: this prob needs some better checking for 2D cases
80
+ nlocs = mask.sum()
81
+ if nlocs > 0 and is_list_like(new) and getattr(new, "ndim", 1) == 1:
82
+ shape = np.shape(new)
83
+ # np.shape compat for if setitem_datetimelike_compat
84
+ # changed arraylike to list e.g. test_where_dt64_2d
85
+ if nlocs == shape[-1]:
86
+ # GH#30567
87
+ # If length of ``new`` is less than the length of ``values``,
88
+ # `np.putmask` would first repeat the ``new`` array and then
89
+ # assign the masked values hence produces incorrect result.
90
+ # `np.place` on the other hand uses the ``new`` values at it is
91
+ # to place in the masked locations of ``values``
92
+ np.place(values, mask, new)
93
+ # i.e. values[mask] = new
94
+ elif mask.shape[-1] == shape[-1] or shape[-1] == 1:
95
+ np.putmask(values, mask, new)
96
+ else:
97
+ raise ValueError("cannot assign mismatch length to masked array")
98
+ else:
99
+ np.putmask(values, mask, new)
100
+
101
+
102
+ def validate_putmask(
103
+ values: ArrayLike | MultiIndex, mask: np.ndarray
104
+ ) -> tuple[npt.NDArray[np.bool_], bool]:
105
+ """
106
+ Validate mask and check if this putmask operation is a no-op.
107
+ """
108
+ mask = extract_bool_array(mask)
109
+ if mask.shape != values.shape:
110
+ raise ValueError("putmask: mask and data must be the same size")
111
+
112
+ noop = not mask.any()
113
+ return mask, noop
114
+
115
+
116
+ def extract_bool_array(mask: ArrayLike) -> npt.NDArray[np.bool_]:
117
+ """
118
+ If we have a SparseArray or BooleanArray, convert it to ndarray[bool].
119
+ """
120
+ if isinstance(mask, ExtensionArray):
121
+ # We could have BooleanArray, Sparse[bool], ...
122
+ # Except for BooleanArray, this is equivalent to just
123
+ # np.asarray(mask, dtype=bool)
124
+ mask = mask.to_numpy(dtype=bool, na_value=False)
125
+
126
+ mask = np.asarray(mask, dtype=bool)
127
+ return mask
128
+
129
+
130
+ def setitem_datetimelike_compat(values: np.ndarray, num_set: int, other: Any) -> Any:
131
+ """
132
+ Parameters
133
+ ----------
134
+ values : np.ndarray
135
+ num_set : int
136
+ For putmask, this is mask.sum()
137
+ other : Any
138
+ """
139
+ if values.dtype == object:
140
+ dtype, _ = infer_dtype_from(other)
141
+
142
+ if lib.is_np_dtype(dtype, "mM"):
143
+ # https://github.com/numpy/numpy/issues/12550
144
+ # timedelta64 will incorrectly cast to int
145
+ if not is_list_like(other):
146
+ other = [other] * num_set
147
+ else:
148
+ other = list(other)
149
+
150
+ return other