diff options
| author | Bernát Gábor <bgabor8@bloomberg.net> | 2020-05-03 13:42:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-03 13:42:45 +0100 |
| commit | 19fc7bca28642b80d0a0ed193f47da3a9e96d9b7 (patch) | |
| tree | fa14d8c6cd89c42fbcd78a5fcc21f7915c908333 /src/virtualenv/activation | |
| parent | 481e395484b03cf24761f23ac76bfe8236704b1e (diff) | |
| download | virtualenv-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__.py | 4 | ||||
| -rw-r--r-- | src/virtualenv/activation/via_template.py | 6 |
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 |
