summaryrefslogtreecommitdiff
path: root/src/virtualenv/util/path/_permission.py
diff options
context:
space:
mode:
authorBernát Gábor <bgabor8@bloomberg.net>2020-01-16 11:09:43 +0000
committerGitHub <noreply@github.com>2020-01-16 11:09:43 +0000
commitb5f618f352557ddea5ec0e0bfe7188690b51e373 (patch)
treefeb3fd0e4a36d101aa35aa5973c33f8c43fca939 /src/virtualenv/util/path/_permission.py
parentdbcc95683d00df3e5d7befff431db4bceb52aebc (diff)
downloadvirtualenv-b5f618f352557ddea5ec0e0bfe7188690b51e373.tar.gz
add zipapp support with bundled dependencies (#1491)
Signed-off-by: Bernat Gabor <bgabor8@bloomberg.net>
Diffstat (limited to 'src/virtualenv/util/path/_permission.py')
-rw-r--r--src/virtualenv/util/path/_permission.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/virtualenv/util/path/_permission.py b/src/virtualenv/util/path/_permission.py
new file mode 100644
index 0000000..1356b6d
--- /dev/null
+++ b/src/virtualenv/util/path/_permission.py
@@ -0,0 +1,20 @@
+from __future__ import absolute_import, unicode_literals
+
+from stat import S_IXGRP, S_IXOTH, S_IXUSR
+
+
+def make_exe(filename):
+ original_mode = filename.stat().st_mode
+ levels = [S_IXUSR, S_IXGRP, S_IXOTH]
+ for at in range(len(levels), 0, -1):
+ try:
+ mode = original_mode
+ for level in levels[:at]:
+ mode |= level
+ filename.chmod(mode)
+ break
+ except PermissionError:
+ continue
+
+
+__all__ = ("make_exe",)