summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlexis Metaireau <ametaireau@gmail.com>2010-08-02 12:40:31 +0200
committerAlexis Metaireau <ametaireau@gmail.com>2010-08-02 12:40:31 +0200
commite59f853692bbcf0162be760189355ed056da15d6 (patch)
tree9c88c86f37e21b38d4ba07170b4dc85e06bff457 /src
parent5ded93e5c5fad2e5449e7048a8af6f82e47930b7 (diff)
downloaddisutils2-e59f853692bbcf0162be760189355ed056da15d6.tar.gz
Fix the way version predicates are parsed.
Now project names can contains "-" and spaces.
Diffstat (limited to 'src')
-rw-r--r--src/distutils2/tests/test_version.py7
-rw-r--r--src/distutils2/version.py5
2 files changed, 10 insertions, 2 deletions
diff --git a/src/distutils2/tests/test_version.py b/src/distutils2/tests/test_version.py
index 343b397..1e392f2 100644
--- a/src/distutils2/tests/test_version.py
+++ b/src/distutils2/tests/test_version.py
@@ -188,6 +188,13 @@ class VersionTestCase(unittest.TestCase):
# XXX need to silent the micro version in this case
#assert not VersionPredicate('Ho (<3.0,!=2.6)').match('2.6.3')
+ def test_predicate_name(self):
+ # Test that names are parsed the right way
+
+ self.assertEqual('Hey', VersionPredicate('Hey (<1.1)').name)
+ self.assertEqual('Foo-Bar', VersionPredicate('Foo-Bar (1.1)').name)
+ self.assertEqual('Foo Bar', VersionPredicate('Foo Bar (1.1)').name)
+
def test_is_final(self):
# VersionPredicate knows is a distribution is a final one or not.
final_versions = ('1.0', '1.0.post456')
diff --git a/src/distutils2/version.py b/src/distutils2/version.py
index e61c60e..4034e24 100644
--- a/src/distutils2/version.py
+++ b/src/distutils2/version.py
@@ -321,7 +321,7 @@ def suggest_normalized_version(s):
return None
-_PREDICATE = re.compile(r"(?i)^\s*([a-z_]\w*(?:\.[a-z_]\w*)*)(.*)")
+_PREDICATE = re.compile(r"(?i)^\s*([a-z_][\sa-zA-Z_-]*(?:\.[a-z_]\w*)*)(.*)")
_VERSIONS = re.compile(r"^\s*\((.*)\)\s*$")
_PLAIN_VERSIONS = re.compile(r"^\s*(.*)\s*$")
_SPLIT_CMP = re.compile(r"^\s*(<=|>=|<|>|!=|==)\s*([^\s,]+)\s*$")
@@ -354,7 +354,8 @@ class VersionPredicate(object):
if match is None:
raise ValueError('Bad predicate "%s"' % predicate)
- self.name, predicates = match.groups()
+ name, predicates = match.groups()
+ self.name = name.strip()
predicates = predicates.strip()
predicates = _VERSIONS.match(predicates)
if predicates is not None: