From c5b1beacd5e5b2358bf055fa7980f4342c396ea8 Mon Sep 17 00:00:00 2001 From: Avasam Date: Wed, 1 Nov 2023 15:37:39 -0400 Subject: [PATCH 1/3] Mark AbstractSandbox._mk_* as static methods --- setuptools/sandbox.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 017c897b86..99e85670a5 100644 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -298,6 +298,7 @@ def run(self, func): with self: return func() + @staticmethod def _mk_dual_path_wrapper(name): original = getattr(_os, name) @@ -312,6 +313,7 @@ def wrap(self, src, dst, *args, **kw): if hasattr(_os, name): locals()[name] = _mk_dual_path_wrapper(name) + @staticmethod def _mk_single_path_wrapper(name, original=None): original = original or getattr(_os, name) @@ -349,6 +351,7 @@ def wrap(self, path, *args, **kw): if hasattr(_os, name): locals()[name] = _mk_single_path_wrapper(name) + @staticmethod def _mk_single_with_return(name): original = getattr(_os, name) @@ -364,6 +367,7 @@ def wrap(self, path, *args, **kw): if hasattr(_os, name): locals()[name] = _mk_single_with_return(name) + @staticmethod def _mk_query(name): original = getattr(_os, name) From 1bde264006bbafac21949741c103e91937a6470d Mon Sep 17 00:00:00 2001 From: Avasam Date: Tue, 21 Nov 2023 20:24:01 -0500 Subject: [PATCH 2/3] TypeError: 'staticmethod' object is not callable --- setuptools/sandbox.py | 88 ++++++++++++++++++++----------------------- 1 file changed, 41 insertions(+), 47 deletions(-) diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 99e85670a5..73e3fe98f0 100644 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -262,6 +262,47 @@ def run_setup(setup_script, args): raise # Normal exit, just return +def _mk_dual_path_wrapper(name): + original = getattr(_os, name) + + def wrap(self, src, dst, *args, **kw): + if self._active: + src, dst = self._remap_pair(name, src, dst, *args, **kw) + return original(src, dst, *args, **kw) + + return wrap + +def _mk_single_path_wrapper(name, original=None): + original = original or getattr(_os, name) + + def wrap(self, path, *args, **kw): + if self._active: + path = self._remap_input(name, path, *args, **kw) + return original(path, *args, **kw) + + return wrap + +def _mk_single_with_return(name): + original = getattr(_os, name) + + def wrap(self, path, *args, **kw): + if self._active: + path = self._remap_input(name, path, *args, **kw) + return self._remap_output(name, original(path, *args, **kw)) + return original(path, *args, **kw) + + return wrap + +def _mk_query(name): + original = getattr(_os, name) + + def wrap(self, *args, **kw): + retval = original(*args, **kw) + if self._active: + return self._remap_output(name, retval) + return retval + + return wrap class AbstractSandbox: """Wrap 'os' module and 'open()' builtin for virtualizing setup scripts""" @@ -298,32 +339,10 @@ def run(self, func): with self: return func() - @staticmethod - def _mk_dual_path_wrapper(name): - original = getattr(_os, name) - - def wrap(self, src, dst, *args, **kw): - if self._active: - src, dst = self._remap_pair(name, src, dst, *args, **kw) - return original(src, dst, *args, **kw) - - return wrap - for name in ["rename", "link", "symlink"]: if hasattr(_os, name): locals()[name] = _mk_dual_path_wrapper(name) - @staticmethod - def _mk_single_path_wrapper(name, original=None): - original = original or getattr(_os, name) - - def wrap(self, path, *args, **kw): - if self._active: - path = self._remap_input(name, path, *args, **kw) - return original(path, *args, **kw) - - return wrap - if _file: _file = _mk_single_path_wrapper('file', _file) _open = _mk_single_path_wrapper('open', _open) @@ -350,35 +369,10 @@ def wrap(self, path, *args, **kw): ]: if hasattr(_os, name): locals()[name] = _mk_single_path_wrapper(name) - - @staticmethod - def _mk_single_with_return(name): - original = getattr(_os, name) - - def wrap(self, path, *args, **kw): - if self._active: - path = self._remap_input(name, path, *args, **kw) - return self._remap_output(name, original(path, *args, **kw)) - return original(path, *args, **kw) - - return wrap - for name in ['readlink', 'tempnam']: if hasattr(_os, name): locals()[name] = _mk_single_with_return(name) - @staticmethod - def _mk_query(name): - original = getattr(_os, name) - - def wrap(self, *args, **kw): - retval = original(*args, **kw) - if self._active: - return self._remap_output(name, retval) - return retval - - return wrap - for name in ['getcwd', 'tmpnam']: if hasattr(_os, name): locals()[name] = _mk_query(name) From 93950694636c9055264e3eb16d335c60a5287cfb Mon Sep 17 00:00:00 2001 From: Avasam Date: Tue, 21 Nov 2023 20:32:37 -0500 Subject: [PATCH 3/3] Run black --- setuptools/sandbox.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 73e3fe98f0..767996dee0 100644 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -262,6 +262,7 @@ def run_setup(setup_script, args): raise # Normal exit, just return + def _mk_dual_path_wrapper(name): original = getattr(_os, name) @@ -272,6 +273,7 @@ def wrap(self, src, dst, *args, **kw): return wrap + def _mk_single_path_wrapper(name, original=None): original = original or getattr(_os, name) @@ -282,6 +284,7 @@ def wrap(self, path, *args, **kw): return wrap + def _mk_single_with_return(name): original = getattr(_os, name) @@ -293,6 +296,7 @@ def wrap(self, path, *args, **kw): return wrap + def _mk_query(name): original = getattr(_os, name) @@ -304,6 +308,7 @@ def wrap(self, *args, **kw): return wrap + class AbstractSandbox: """Wrap 'os' module and 'open()' builtin for virtualizing setup scripts"""