#1466 closed defect

don't attempt to import pyutil; use allmydata.util.verlib or distutils.version.LooseVersion instead — at Initial Version

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

Description

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 (0)

Note: See TracTickets for help on using tickets.