aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/sandbox.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2013-12-07 12:28:15 -0500
committerJason R. Coombs <jaraco@jaraco.com>2013-12-07 12:28:15 -0500
commitef565f9ddd20ca66d1c1ff57da4ceb91038010e0 (patch)
treee3731e3a2850509072bc93354b248bdbf02deec1 /setuptools/sandbox.py
parent3915375e6b94d7f41be271aec3c3e37efcba8c27 (diff)
downloadexternal_python_setuptools-ef565f9ddd20ca66d1c1ff57da4ceb91038010e0.tar.gz
external_python_setuptools-ef565f9ddd20ca66d1c1ff57da4ceb91038010e0.tar.bz2
external_python_setuptools-ef565f9ddd20ca66d1c1ff57da4ceb91038010e0.zip
Add support for exempting a path based on a regular expression.
--HG-- extra : histedit_source : 2f1f4146ec1d5196cb65602302185a12060cfa17
Diffstat (limited to 'setuptools/sandbox.py')
-rwxr-xr-xsetuptools/sandbox.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py
index 50fb02a3..26960846 100755
--- a/setuptools/sandbox.py
+++ b/setuptools/sandbox.py
@@ -3,6 +3,8 @@ import sys
import tempfile
import operator
import functools
+import itertools
+import re
import pkg_resources
@@ -197,6 +199,9 @@ class DirectorySandbox(AbstractSandbox):
"utime", "lchown", "chroot", "mkfifo", "mknod", "tempnam",
])
+ _exception_patterns = []
+ "allow writing to paths that match the pattern"
+
def __init__(self, sandbox, exceptions=_EXCEPTIONS):
self._sandbox = os.path.normcase(os.path.realpath(sandbox))
self._prefix = os.path.join(self._sandbox,'')
@@ -237,11 +242,16 @@ class DirectorySandbox(AbstractSandbox):
self._active = active
def _exempted(self, filepath):
- exception_matches = (
+ start_matches = (
filepath.startswith(exception)
for exception in self._exceptions
)
- return any(exception_matches)
+ pattern_matches = (
+ re.match(pattern, filepath)
+ for pattern in self._exception_patterns
+ )
+ candidates = itertools.chain(start_matches, pattern_matches)
+ return any(candidates)
def _remap_input(self, operation, path, *args, **kw):
"""Called for path inputs"""