[TIP] Coming changes to unittest2 plugins

exarkun at twistedmatrix.com exarkun at twistedmatrix.com
Tue Sep 28 13:41:51 PDT 2010


On 07:57 pm, olemis at gmail.com wrote:
>On Mon, Sep 27, 2010 at 8:36 PM,  <exarkun at twistedmatrix.com> wrote:
>>On 27 Sep, 07:42 pm, holger at merlinux.eu wrote:
>>>
>>>On Mon, Sep 27, 2010 at 19:19 -0000, exarkun at twistedmatrix.com wrote:
>>>>>
>>>>>packaging meta data is for consumption of tools.  For example, i 
>>>>>want to
>>>>>write one that converts a newstyle setup.cfg into an oldstyle 
>>>>>setup.py.
>>>>
>>>>What transformation do you need to perform on an arbitrary, 
>>>>application-
>>>>specified fully qualified Python name?  In general you can't know
>>>>anything about it, whether it has a ":" in it or not.
>>>
>>>Wrong. The ":" carries information.  For example, if we have:
>>>
>>>  [global]
>>>  script-entry-points =
>>>      somescript = testpath.to:some.function
>>>
>>>we can easily generate an oldstyle setup.py from it:
>>>
>>>  setup(entry_points={'somescript': 'testpath.to:some.function'}, 
>>>...)
>>>
>>>without having to load live objects.  The dotted name does
>>>not allow that and thus carries less information.
>>
>>Thanks for explaining that.  This is clearly a case where the ":" 
>>helps (a
>>sort of self-referential case, where the ":" is only needed because it 
>>used
>>to be needed).
>>
>>It's not an important case to me (and I don't think it should be 
>>important
>>to anyone else).  It's still nice to know *why* the ":" might be 
>>desired
>>though.
>
>What d'u think of the example I mentioned before (i.e. the Trac plugin
>(macro?)  for the lazy dev ...) ???

This one?
>However, suppose I'm developing some apps (each one under top-level
>folder in VCS) adding unittest plugins and I want to develop a Trac
>plugin (macro ?) that will know the path to top-level folder in VCS
>and will look for unittest metadata definition inside setup.* (or
>wherever it might be defined ...) of all direct descendants (i.e.
>folders). With this data it will render inside a floating div some
>links to Trac repository browser area (e.g. highlighting the lines
>where the plugin code is located) . That would allow me to quickly
>find plugin code inside e.g. repository browser and wiki pages (/me
>the lazy dev ) .

I have a little difficulty following it.  That said, unless I've gravely 
misunderstood, it sounds like you can implement it without ":" just 
about as easily as with.  Given "foo.bar.baz" look for foo/bar/baz.py. 
Exists?  Great, you're done.  Otherwise look for foo/bar.py.  Otherwise 
look for foo.py.

It'll be wrong sometimes, but so will assuming that "foo.bar:baz" means 
to look in foo/bar.py.  Without loading the code you can't be completely 
sure (and maybe even if you load the code you'll still get it wrong 
sometimes, I'm not sure).

Jean-Paul



More information about the testing-in-python mailing list