From e3d3e988e1c09834199b4f17a066401e757e58a6 Mon Sep 17 00:00:00 2001 From: Avasam Date: Mon, 28 Oct 2024 15:07:45 -0400 Subject: [PATCH] Add fake __getattribute__ to AbstractSandbox to let type-checkers know it has a bunch of dynamic methods --- setuptools/sandbox.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 5dedeeb47f..4f8a515b58 100644 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -12,7 +12,7 @@ import tempfile import textwrap from types import TracebackType -from typing import TYPE_CHECKING, ClassVar +from typing import TYPE_CHECKING, Any, ClassVar import pkg_resources from pkg_resources import working_set @@ -406,6 +406,11 @@ def _remap_pair(self, operation, src, dst, *args, **kw): self._remap_input(operation + '-to', dst, *args, **kw), ) + if TYPE_CHECKING: + # This is a catch-all for all the dynamically created attributes. + # This isn't public API anyway + def __getattribute__(self, name: str) -> Any: ... + if hasattr(os, 'devnull'): _EXCEPTIONS = [os.devnull]