summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Metaireau <ametaireau@gmail.com>2010-08-06 16:48:33 +0200
committerAlexis Metaireau <ametaireau@gmail.com>2010-08-06 16:48:33 +0200
commit034ca57b472e2cc50c363eb6209063629f7d0c62 (patch)
tree13bfb31835cc305fd6970558e4593db2123d843a
parent01b11c8d0e122bb1bcb29b01124fd0c311295cab (diff)
downloaddisutils2-034ca57b472e2cc50c363eb6209063629f7d0c62.tar.gz
Move get_version_predicate to version (instead of index.base)
-rw-r--r--src/distutils2/index/base.py9
-rw-r--r--src/distutils2/index/dist.py4
-rw-r--r--src/distutils2/index/simple.py5
-rw-r--r--src/distutils2/index/xmlrpc.py5
-rw-r--r--src/distutils2/version.py9
5 files changed, 18 insertions, 14 deletions
diff --git a/src/distutils2/index/base.py b/src/distutils2/index/base.py
index 7c87c90..04582a3 100644
--- a/src/distutils2/index/base.py
+++ b/src/distutils2/index/base.py
@@ -1,4 +1,3 @@
-from distutils2.version import VersionPredicate
from distutils2.index.dist import ReleasesList
@@ -10,14 +9,6 @@ class BaseClient(object):
self._prefer_source = prefer_source
self._index = self
- def _get_version_predicate(self, requirements):
- """Return a VersionPredicate object, from a string or an already
- existing object.
- """
- if isinstance(requirements, str):
- requirements = VersionPredicate(requirements)
- return requirements
-
def _get_prefer_final(self, prefer_final=None):
"""Return the prefer_final internal parameter or the specified one if
provided"""
diff --git a/src/distutils2/index/dist.py b/src/distutils2/index/dist.py
index 55a1268..be86054 100644
--- a/src/distutils2/index/dist.py
+++ b/src/distutils2/index/dist.py
@@ -26,7 +26,8 @@ except ImportError:
from distutils2.errors import IrrationalVersionError
from distutils2.index.errors import (HashDoesNotMatch, UnsupportedHashName,
CantParseArchiveName)
-from distutils2.version import suggest_normalized_version, NormalizedVersion
+from distutils2.version import (suggest_normalized_version, NormalizedVersion,
+ get_version_predicate)
from distutils2.metadata import DistributionMetadata
from distutils2.util import untar_file, unzip_file, splitext
@@ -380,6 +381,7 @@ class ReleasesList(IndexReference):
"last" is defined by the version number of the releases, you also could
set prefer_final parameter to True or False to change the order results
"""
+ predicate = get_version_predicate(requirements)
releases = self.filter(predicate)
releases.sort_releases(prefer_final, reverse=True)
return releases[0]
diff --git a/src/distutils2/index/simple.py b/src/distutils2/index/simple.py
index feadb51..671db3d 100644
--- a/src/distutils2/index/simple.py
+++ b/src/distutils2/index/simple.py
@@ -22,6 +22,7 @@ from distutils2.index.errors import (IndexesError, DownloadError,
ReleaseNotFound, ProjectNotFound)
from distutils2.index.mirrors import get_mirrors
from distutils2.metadata import DistributionMetadata
+from distutils2.version import get_version_predicate
from distutils2 import __version__ as __distutils2_version__
__all__ = ['Crawler', 'DEFAULT_SIMPLE_INDEX_URL']
@@ -158,7 +159,7 @@ class Crawler(BaseClient):
"""Search for releases and return a ReleaseList object containing
the results.
"""
- predicate = self._get_version_predicate(requirements)
+ predicate = get_version_predicate(requirements)
if self._projects.has_key(predicate.name.lower()) and not force_update:
return self._projects.get(predicate.name.lower())
prefer_final = self._get_prefer_final(prefer_final)
@@ -173,7 +174,7 @@ class Crawler(BaseClient):
def get_release(self, requirements, prefer_final=None):
"""Return only one release that fulfill the given requirements"""
- predicate = self._get_version_predicate(requirements)
+ predicate = get_version_predicate(requirements)
release = self.get_releases(predicate, prefer_final)\
.get_last(predicate)
if not release:
diff --git a/src/distutils2/index/xmlrpc.py b/src/distutils2/index/xmlrpc.py
index f8f8453..fd1b62f 100644
--- a/src/distutils2/index/xmlrpc.py
+++ b/src/distutils2/index/xmlrpc.py
@@ -5,6 +5,7 @@ from distutils2.errors import IrrationalVersionError
from distutils2.index.base import BaseClient
from distutils2.index.errors import ProjectNotFound, InvalidSearchField
from distutils2.index.dist import ReleaseInfo
+from distutils2.version import get_version_predicate
__all__ = ['Client', 'DEFAULT_XMLRPC_INDEX_URL']
@@ -41,7 +42,7 @@ class Client(BaseClient):
related informations.
"""
prefer_final = self._get_prefer_final(prefer_final)
- predicate = self._get_version_predicate(requirements)
+ predicate = get_version_predicate(requirements)
releases = self.get_releases(predicate.name)
release = releases.get_last(predicate, prefer_final)
self.get_metadata(release.name, "%s" % release.version)
@@ -72,7 +73,7 @@ class Client(BaseClient):
def get_versions(project_name, show_hidden):
return self.proxy.package_releases(project_name, show_hidden)
- predicate = self._get_version_predicate(requirements)
+ predicate = get_version_predicate(requirements)
prefer_final = self._get_prefer_final(prefer_final)
project_name = predicate.name
if not force_update and (project_name.lower() in self._projects):
diff --git a/src/distutils2/version.py b/src/distutils2/version.py
index 4034e24..836202a 100644
--- a/src/distutils2/version.py
+++ b/src/distutils2/version.py
@@ -418,3 +418,12 @@ def is_valid_version(predicate):
return False
else:
return True
+
+
+def get_version_predicate(requirements):
+ """Return a VersionPredicate object, from a string or an already
+ existing object.
+ """
+ if isinstance(requirements, str):
+ requirements = VersionPredicate(requirements)
+ return requirements