|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
diff --git a/tests.py b/tests.py
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
index 253cd6f..add5c06 100644
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
--- a/tests.py
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+++ b/tests.py
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
@@ -91,13 +91,13 @@ class BaseTest(TestCase):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
self.assertIsInstance(result, dict)
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
self.assertTrue(bool(result))
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
if result:
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
- self.assertIn(pack, [k.lower() for k in result.keys()])
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ self.assertIn(pack, [k.split(' (')[0].lower() for k in result.keys()])
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
def test_search_names(self):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
pack = packages_for_tests[0].lower()
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
result = self.virtual_env_obj.search_names(pack)
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
self.assertIsInstance(result, list)
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
- self.assertIn(pack, [k.lower() for k in result])
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ self.assertIn(pack, [k.split(' (')[0].lower() for k in result])
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
def tearDown(self):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
if os.path.exists(self.env_path) and self.__class__.env_path is None:
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
diff --git a/virtualenvapi/manage.py b/virtualenvapi/manage.py
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
index d834be7..53e00ac 100644
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
--- a/virtualenvapi/manage.py
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+++ b/virtualenvapi/manage.py
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
@@ -44,6 +44,16 @@ class VirtualEnvironment(object):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
return os.path.join('bin', 'pip')
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
@property
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ def pip_version(self):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ """Version of installed pip."""
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ if not self._pip_exists:
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ return None
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ if not hasattr(self, '_pip_version'):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ string_version = self._execute([self._pip_rpath, '-V']).split()[1]
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ self._pip_version = tuple([int(n) for n in string_version.split('.')])
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ return self._pip_version
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ @property
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
def root(self):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
"""The root directory that this virtual environment exists in."""
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
return os.path.split(self.path)[0]
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
@@ -270,10 +280,12 @@ class VirtualEnvironment(object):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
def installed_packages(self):
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
"""
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
List of all packages that are installed in this environment in
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
- the format [(name, ver), ..].
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ the format [(name, ver), ..]. wheel is excluded from freeze output
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ in pip version >= 8.1.0 if --all option is not specified.
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
"""
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ freeze_options = ['-l', '--all'] if self.pip_version >= (8, 1, 0) else ['-l']
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
return list(map(split_package_name, filter(None, self._execute(
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
- [self._pip_rpath, 'freeze', '-l']).split(linesep))))
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
+ [self._pip_rpath, 'freeze'] + freeze_options).split(linesep))))
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
@property
|
|
![](https://seccdn.libravatar.org/avatar/adc4a9a687f2d4f06a50d4219c6463dc6e10b4ca571b14bb34cd0ca5cd555e09?s=16&d=retro) |
7712960 |
def installed_package_names(self):
|