[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2499: Poor error reporting when verlib.suggest_normalized_version returns None

Tahoe-LAFS trac at tahoe-lafs.org
Fri Sep 4 09:08:59 UTC 2015


#2499: Poor error reporting when verlib.suggest_normalized_version returns None
---------------------------------------------+------------------------
 Reporter:  daira                            |          Owner:  daira
     Type:  defect                           |         Status:  new
 Priority:  normal                           |      Milestone:  1.11.0
Component:  packaging                        |        Version:  1.10.1
 Keywords:  error versions verlib packaging  |  Launchpad Bug:
---------------------------------------------+------------------------
 <warner> I'm trying to test tahoe (trunk) against a foolscap branch that
 I'm working on
 <warner> and I'm thwarted by packaging and setuptools, again
 [...]
 <warner> ... "PYTHONPATH=/path/to/my/foolscap/tree ./bin/tahoe" ...
 currently emits: PackagingError: could not parse actual version
 '0.8.0+12.g1fdaa3e.dirty' of foolscap from
 '/Users/warner/stuff/python/foolscap' due to TypeError: expected string or
 buffer
 <warner> Warning: version number '0.8.0-12.g1fdaa3e.dirty' found for
 dependency 'foolscap' by pkg_resources could not be parsed. The version
 found by import was '0.8.0+12.g1fdaa3e.dirty' from
 '/Users/warner/stuff/python/foolscap'. pkg_resources thought it should be
 found at '/Users/warner/stuff/python/foolscap'. The exception was
 PackagingError: could not parse '0.8.0-12.g1fdaa3e.dirty' due to
 TypeError: expected string or buffer
 <warner> I don't know where that TypeError is coming from, or what it's
 getting that isn't a string
 <warner> I thought it might have to do with some Versioneer changes I made
 at one point which cause versions to sometimes be unicode, but hardcoding
 the version doesn't make the tahoe/packaging error go away

 warner tries to even figure out what our 'setup.py build' does these days
 <warner> ah, found it. Tahoe's verlib.suggest_normalized_version() doesn't
 recognize Versioneer's (setuptools-compatible) "0.8.0+12.g123abc.dirty" as
 a parseable version, and returns None
 <warner> then verlib.NormalizedVersion(that) explodes when the regexp
 tries to parse the None
 <warner> delete.. it.. all..
 <warner> actually now it's reminding me of the HHGTTG scene where the
 intergalactic cruise is grounded for centuries whilst waiting the
 availability of lemon-soaked paper napkins
 <warner> the version can't be parsed, therefore refuse to run
 <warner> this version-parsing code is really getting in my way

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2499>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list