#1466 closed defect (fixed)

don't attempt to import pyutil (in the _version.py created by darcsver); use allmydata.util.verlib or distutils.version.LooseVersion instead

Reported by: davidsarah Owned by: somebody
Priority: major Milestone: undecided
Component: packaging Version: 1.8.2
Keywords: pyutil darcsver version Cc:
Launchpad Bug:

Description (last modified by davidsarah)

The src/allmydata/_version.py generated by darcsver looks like:

# This is the version of this tree, as created by setup.py darcsver from the darcs patch
# information: the main version number is taken from the most recent release
# tag. If some patches have been added since the last release, this will have a
# -NN "build number" suffix, or else a -rNN "revision number" suffix. Please see
# pyutil.version_class for a description of what the different fields mean.

__pkgname__ = "allmydata-tahoe"
verstr = "1.8.2-r5124"
try:
    from pyutil.version_class import Version as pyutil_Version
    __version__ = pyutil_Version(verstr)
except (ImportError, ValueError):
    # Maybe there is no pyutil installed, or this may be an older version of
    # pyutil.version_class which does not support SVN-alike revision numbers.
    from distutils.version import LooseVersion as distutils_Version
    __version__ = distutils_Version(verstr)

But we don't declare a dependency on pyutil nor do we check its version number, so we have no reason to be sure that it isn't somehow broken.

src/allmydata/util/verlib.py implements a well-defined versioning syntax and has unit tests. Note that src/allmydata/__init__.py already imports allmydata.util.verlib. Alternatively, distutils.version.LooseVersion could be used all the time rather than falling back to it.

It may be more difficult to remove the dependency on pyutil in other packages using darcsver that Tahoe depends on, because they don't have allmydata.util.verlib. Maybe that's a good reason to use distutils.version.LooseVersion all the time.

Change History (4)

comment:1 Changed at 2011-08-03T16:22:35Z by davidsarah

  • Description modified (diff)

comment:2 Changed at 2011-08-12T15:19:14Z by davidsarah

  • Summary changed from don't attempt to import pyutil; use allmydata.util.verlib or distutils.version.LooseVersion instead to don't attempt to import pyutil (in the _version.py created by darcsver); use allmydata.util.verlib or distutils.version.LooseVersion instead

comment:3 Changed at 2011-12-05T05:50:47Z by warner

I decided to remove the pyutil import altogether, and just have _version.py provide a string. Everything in Tahoe that uses allmydata.__version__ does str(__version__) anyways.

comment:4 Changed at 2011-12-05T05:51:22Z by Brian Warner <warner@…>

  • Resolution set to fixed
  • Status changed from new to closed

In dd2e7a1127353a60:

(The changeset message doesn't reference this ticket)

Note: See TracTickets for help on using tickets.