Skip to content

chore(structure): split hook modules into role-specific files - #703

Open
RonnyPfannschmidt wants to merge 2 commits into
pytest-dev:mainfrom
RonnyPfannschmidt:refactor/split-hook-modules
Open

chore(structure): split hook modules into role-specific files#703
RonnyPfannschmidt wants to merge 2 commits into
pytest-dev:mainfrom
RonnyPfannschmidt:refactor/split-hook-modules

Conversation

@RonnyPfannschmidt

@RonnyPfannschmidt RonnyPfannschmidt commented Jul 22, 2026

Copy link
Copy Markdown
Member

Written with AI assistance (Cursor, then Claude Code). I reviewed it and I'm posting it.

Step 1 of 7 — bottom of the stack, targets main, mergeable on its own.

#703#704#706#707#708#709#710

Per-step review discussion lives on the fork: #6 (this step), then #5, #7, #8, #9, #10, #11.


_hooks.py had grown to hold the option types, both markers, HookSpec, HookImpl, and HookCaller at once. This splits it, and _callers.py, along role lines:

module holds
_config HookspecOpts, HookimplOpts, normalize_hookimpl_opts
_decorators HookspecMarker, HookimplMarker, HookSpec, varnames
_implementation HookImpl
_caller HookCaller, _SubsetHookCaller, HookRelay
_execution _multicall and the wrapper/teardown helpers

_hooks and _callers stay as re-export shims, so every existing import — including the private ones pytest and others reach for — keeps working.

Pure code movement, no behavior change. The point is to give the later steps (typed config objects, CompletionHook, a Protocol HookCaller) somewhere to land without each one also being a reorganization.

Also carries design/: the writeups for all seven steps, so the rationale sits next to the code rather than in the PR log.

@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the refactor/split-hook-modules branch from 8c3f2f7 to 7489fdb Compare July 24, 2026 16:53
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the refactor/split-hook-modules branch 3 times, most recently from f795cf2 to fcece74 Compare August 12, 2026 11:14
@RonnyPfannschmidt
RonnyPfannschmidt marked this pull request as ready for review September 9, 2026 20:20
Add the design/ writeup chain (decisions + per-step docs 01-07) that
guides the stacked refactoring branches. Exclude design/ from
blacken-docs since the docs use elided pseudo-code signatures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@RonnyPfannschmidt
RonnyPfannschmidt force-pushed the refactor/split-hook-modules branch from fcece74 to 451ce94 Compare September 12, 2026 19:04
Move hook types, markers, callers, implementations, and multicall out of
the monolithic _hooks/_callers modules so later typed-config and
CompletionHook work can land without thrashing one huge file. Keep
_hooks and _callers as re-export shims for import compatibility.

Co-authored-by: Cursor AI <ai@cursor.sh>
Co-authored-by: Cursor Grok 4.5 <grok@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant