[Python-checkins] distutils2: #13166: Implement __str__ on Distribution and EggInfoDistribution, use for
eric.araujo
python-checkins at python.org
Wed May 16 07:07:26 CEST 2012
http://hg.python.org/distutils2/rev/ff44594dd3c0
changeset: 1317:ff44594dd3c0
user: Guillaume Pratte <guillaume at guillaumepratte.net>
date: Sat Apr 21 17:43:54 2012 -0400
summary:
#13166: Implement __str__ on Distribution and EggInfoDistribution, use for pysetup list, pysetup graph and installation log
files:
CONTRIBUTORS.txt | 1 +
distutils2/database.py | 6 +++++
distutils2/depgraph.py | 10 +++-----
distutils2/install.py | 2 +-
distutils2/run.py | 2 +-
distutils2/tests/test_database.py | 21 ++++++++++++++++--
6 files changed, 31 insertions(+), 11 deletions(-)
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -59,6 +59,7 @@
- Gaël Pasgrimaud
- George Peristerakis
- Mathieu Perreault
+- Guillaume Pratte
- Sean Reifschneider
- Antoine Reversat
- Arc Riley
diff --git a/distutils2/database.py b/distutils2/database.py
--- a/distutils2/database.py
+++ b/distutils2/database.py
@@ -161,6 +161,9 @@
return '<Distribution %r %s at %r>' % (
self.name, self.version, self.path)
+ def __str__(self):
+ return "%s %s" % (self.name, self.version)
+
def _get_records(self, local=False):
results = []
record = self.get_distinfo_file('RECORD')
@@ -365,6 +368,9 @@
return '<EggInfoDistribution %r %s at %r>' % (
self.name, self.version, self.path)
+ def __str__(self):
+ return "%s %s" % (self.name, self.version)
+
def list_installed_files(self, local=False):
def _md5(path):
diff --git a/distutils2/depgraph.py b/distutils2/depgraph.py
--- a/distutils2/depgraph.py
+++ b/distutils2/depgraph.py
@@ -71,18 +71,16 @@
"""
self.missing[distribution].append(requirement)
- def _repr_dist(self, dist):
- return '%r %s' % (dist.name, dist.version)
-
def repr_node(self, dist, level=1):
"""Prints only a subgraph"""
output = []
- output.append(self._repr_dist(dist))
+ output.append(str(dist))
+ # XXX: this code needs cleanup
for other, label in self.adjacency_list[dist]:
- dist = self._repr_dist(other)
+ dist = str(other)
if label is not None:
dist = '%s [%s]' % (dist, label)
- output.append(' ' * level + str(dist))
+ output.append(' ' * level + dist)
suboutput = self.repr_node(other, level + 1)
subs = suboutput.split('\n')
output.extend(subs[1:])
diff --git a/distutils2/install.py b/distutils2/install.py
--- a/distutils2/install.py
+++ b/distutils2/install.py
@@ -183,7 +183,7 @@
installed_dists = []
for dist in dists:
- logger.info('Installing %r %s...', dist.name, dist.version)
+ logger.info('Installing %s...', dist)
try:
_install_dist(dist, path)
installed_dists.append(dist)
diff --git a/distutils2/run.py b/distutils2/run.py
--- a/distutils2/run.py
+++ b/distutils2/run.py
@@ -308,7 +308,7 @@
number = 0
for dist in results:
- print '%r %s (from %r)' % (dist.name, dist.version, dist.path)
+ print "%s (from %r)" % (dist, dist.path)
number += 1
if number == 0:
diff --git a/distutils2/tests/test_database.py b/distutils2/tests/test_database.py
--- a/distutils2/tests/test_database.py
+++ b/distutils2/tests/test_database.py
@@ -80,12 +80,14 @@
attributes are used in test methods. See source code for details.
"""
+ def _get_dist_path(self, distdir):
+ here = os.path.abspath(os.path.dirname(__file__))
+ return os.path.join(here, 'fake_dists', distdir)
+
def test_instantiation(self):
# check that useful attributes are here
name, version, distdir = self.sample_dist
- here = os.path.abspath(os.path.dirname(__file__))
- dist_path = os.path.join(here, 'fake_dists', distdir)
-
+ dist_path = self._get_dist_path(distdir)
dist = self.dist = self.cls(dist_path)
self.assertEqual(dist.path, dist_path)
self.assertEqual(dist.name, name)
@@ -101,6 +103,17 @@
self.assertIn(self.cls.__name__, repr(dist))
@requires_zlib
+ def test_str(self):
+ name, version, distdir = self.sample_dist
+ dist = self.cls(self._get_dist_path(distdir))
+ self.assertEqual(name, dist.name)
+ # Sanity test: dist.name is unicode,
+ # but str output contains no u prefix.
+ self.assertIsInstance(dist.name, unicode)
+ self.assertEqual(version, dist.version)
+ self.assertEqual(str(dist), self.expected_str_output)
+
+ @requires_zlib
def test_comparison(self):
# tests for __eq__ and __hash__
dist = self.cls(self.dirs[0])
@@ -128,6 +141,7 @@
cls = Distribution
sample_dist = 'choxie', '2.0.0.9', 'choxie-2.0.0.9.dist-info'
+ expected_str_output = 'choxie 2.0.0.9'
def setUp(self):
super(TestDistribution, self).setUp()
@@ -265,6 +279,7 @@
cls = EggInfoDistribution
sample_dist = 'bacon', '0.1', 'bacon-0.1.egg-info'
+ expected_str_output = 'bacon 0.1'
def setUp(self):
super(TestEggInfoDistribution, self).setUp()
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list