| 497 | |
| 498 | |
| 499 | class FSHookProxy: |
| 500 | def __init__( |
| 501 | self, |
| 502 | pm: PytestPluginManager, |
| 503 | remove_mods: AbstractSet[object], |
| 504 | ) -> None: |
| 505 | self.pm = pm |
| 506 | self.remove_mods = remove_mods |
| 507 | |
| 508 | def __getattr__(self, name: str) -> pluggy.HookCaller: |
| 509 | x = self.pm.subset_hook_caller(name, remove_plugins=self.remove_mods) |
| 510 | self.__dict__[name] = x |
| 511 | return x |
| 512 | |
| 513 | |
| 514 | class Interrupted(KeyboardInterrupt): |