Skip to content

Commit 4514b4d

Browse files
committed
fix pip.py to work with command line and fix this
1 parent 0a74a59 commit 4514b4d

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

src/rosdep2/platforms/pip.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
from __future__ import print_function
3131

3232
import pkg_resources
33+
import re
3334
import subprocess
35+
from distutils.version import LooseVersion
3436

3537
from ..core import InstallFailed, InvalidData
3638
from ..installers import PackageManagerInstaller
@@ -67,8 +69,16 @@ def pip_detect(pkgs, exec_fn=None):
6769
ret_list = []
6870
for pkg in pkg_list:
6971
pkg_row = pkg.split('==')
70-
if pkg_row[0] in pkgs:
71-
ret_list.append(pkg_row[0])
72+
for pkg in pkgs:
73+
pkg_versioned = re.findall(r'\s*([a-zA-Z_][a-zA-Z_\-0-9]*)([=<>]*)([0-9\.]*)', pkg)[0]
74+
if pkg_row[0] == pkg_versioned[0]:
75+
if ((pkg_versioned[1] == '' and pkg_row[0] == pkg_versioned[0]) or
76+
((pkg_versioned[1] == '==' and LooseVersion(pkg_row[1]) == LooseVersion(pkg_versioned[2])) or
77+
(pkg_versioned[1] == '>=' and LooseVersion(pkg_row[1]) >= LooseVersion(pkg_versioned[2])) or
78+
(pkg_versioned[1] == '<=' and LooseVersion(pkg_row[1]) <= LooseVersion(pkg_versioned[2])) or
79+
(pkg_versioned[1] == '>' and LooseVersion(pkg_row[1]) > LooseVersion(pkg_versioned[2])) or
80+
(pkg_versioned[1] == '<' and LooseVersion(pkg_row[1]) < LooseVersion(pkg_versioned[2])))):
81+
ret_list.append(pkg)
7282

7383
# Try to detect with the return code of `pip show`.
7484
# This can show the existance of things like `argparse` which
@@ -141,9 +151,6 @@ def resolve(self, rosdep, rosdep_args):
141151
package = package + ',' if pip_specify_version else package
142152
packages[i] = package + '<' + rosdep.version_lt
143153
pip_specify_version = True
144-
if pip_specify_version:
145-
for i, package in list(enumerate(packages)):
146-
packages[i] = "'" + package + "'"
147154

148155
return packages
149156

test/test_rosdep_pip.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -86,20 +86,20 @@ def test_PackageManagerInstaller_resolve():
8686
assert ['baz', 'bar'] == installer.resolve(Dependency('baz'), ['baz', 'bar'])
8787

8888
# version_eq
89-
assert ["'baz==1.0'"] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
90-
assert ["'baz==1.0'", "'bar==1.0'"] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(packages=['baz', 'bar']))
89+
assert ['baz==1.0'] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
90+
assert ['baz==1.0', 'bar==1.0'] == installer.resolve(Dependency('baz', version_eq='1.0'), dict(packages=['baz', 'bar']))
9191
# version_gte
92-
assert ["'baz>=1.0'"] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
93-
assert ["'baz>=1.0'", "'bar>=1.0'"] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(packages=['baz', 'bar']))
92+
assert ['baz>=1.0'] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
93+
assert ['baz>=1.0', 'bar>=1.0'] == installer.resolve(Dependency('baz', version_gte='1.0'), dict(packages=['baz', 'bar']))
9494
# version_lte
95-
assert ["'baz<=1.0'"] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
96-
assert ["'baz<=1.0'", "'bar<=1.0'"] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(packages=['baz', 'bar']))
95+
assert ['baz<=1.0'] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
96+
assert ['baz<=1.0', 'bar<=1.0'] == installer.resolve(Dependency('baz', version_lte='1.0'), dict(packages=['baz', 'bar']))
9797
# version_gt
98-
assert ["'baz>1.0'"] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
99-
assert ["'baz>1.0'", "'bar>1.0'"] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(packages=['baz', 'bar']))
98+
assert ['baz>1.0'] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
99+
assert ['baz>1.0', 'bar>1.0'] == installer.resolve(Dependency('baz', version_gt='1.0'), dict(packages=['baz', 'bar']))
100100
# version_lt
101-
assert ["'baz<1.0'"] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
102-
assert ["'baz<1.0'", "'bar<1.0'"] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(packages=['baz', 'bar']))
101+
assert ['baz<1.0'] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(depends=['foo', 'bar'], packages=['baz']))
102+
assert ['baz<1.0', 'bar<1.0'] == installer.resolve(Dependency('baz', version_lt='1.0'), dict(packages=['baz', 'bar']))
103103
# test invalid data
104104
try:
105105
installer.resolve({}, 0)

0 commit comments

Comments
 (0)