summaryrefslogtreecommitdiff
path: root/src/virtualenv/activation
diff options
context:
space:
mode:
authorBernát Gábor <bgabor8@bloomberg.net>2020-05-03 13:42:45 +0100
committerGitHub <noreply@github.com>2020-05-03 13:42:45 +0100
commit19fc7bca28642b80d0a0ed193f47da3a9e96d9b7 (patch)
treefa14d8c6cd89c42fbcd78a5fcc21f7915c908333 /src/virtualenv/activation
parent481e395484b03cf24761f23ac76bfe8236704b1e (diff)
downloadvirtualenv-19fc7bca28642b80d0a0ed193f47da3a9e96d9b7.tar.gz
Fix python 2 activator when generated from python 3 is invalid (#1805)
Diffstat (limited to 'src/virtualenv/activation')
-rw-r--r--src/virtualenv/activation/python/__init__.py4
-rw-r--r--src/virtualenv/activation/via_template.py6
2 files changed, 8 insertions, 2 deletions
diff --git a/src/virtualenv/activation/python/__init__.py b/src/virtualenv/activation/python/__init__.py
index d37432e..43e908c 100644
--- a/src/virtualenv/activation/python/__init__.py
+++ b/src/virtualenv/activation/python/__init__.py
@@ -1,6 +1,7 @@
from __future__ import absolute_import, unicode_literals
import os
+import sys
from collections import OrderedDict
from virtualenv.util.path import Path
@@ -29,5 +30,6 @@ class PythonActivator(ViaTemplateActivator):
def _repr_unicode(creator, value):
py2 = creator.interpreter.version_info.major == 2
if py2: # on Python 2 we need to encode this into explicit utf-8, py3 supports unicode literals
- value = ensure_text(repr(value.encode("utf-8"))[1:-1])
+ start = 2 if sys.version_info[0] == 3 else 1
+ value = ensure_text(repr(value.encode("utf-8"))[start:-1])
return value
diff --git a/src/virtualenv/activation/via_template.py b/src/virtualenv/activation/via_template.py
index 651ed8f..7a9d3c8 100644
--- a/src/virtualenv/activation/via_template.py
+++ b/src/virtualenv/activation/via_template.py
@@ -25,9 +25,10 @@ class ViaTemplateActivator(Activator):
def generate(self, creator):
dest_folder = creator.bin_dir
replacements = self.replacements(creator, dest_folder)
- self._generate(replacements, self.templates(), dest_folder, creator)
+ generated = self._generate(replacements, self.templates(), dest_folder, creator)
if self.flag_prompt is not None:
creator.pyenv_cfg["prompt"] = self.flag_prompt
+ return generated
def replacements(self, creator, dest_folder):
return {
@@ -39,10 +40,13 @@ class ViaTemplateActivator(Activator):
}
def _generate(self, replacements, templates, to_folder, creator):
+ generated = []
for template in templates:
text = self.instantiate_template(replacements, template, creator)
dest = to_folder / self.as_name(template)
dest.write_text(text, encoding="utf-8")
+ generated.append(dest)
+ return generated
def as_name(self, template):
return template.name