python-debianbts 1.0 uploaded to unstable
Today I was working all day on python-debianbts 1.0 and uploaded it to unstable a few minutes ago. This version breaks backwards compatibility with previous versions. I removed lots of unneeded old cruft like the HTMLStripper class needed ages ago when I was still using HTML instead of debbugs’ SOAP interface.
A new method get_usertag(email, *tags)
was introduced. It returns a dict
containing usertag-buglist mappings. If tags are given the dict is limited to
matching tags, otherwise all available tags of the given user are returned:
In [1]: import debianbts as bts
In [2]: bts.get_usertag("debian-python@lists.debian.org")
Out[2]:
{'dist-packages': [547838, 547832, ..., 547858],
'dpmt-todo': [332913],
'policy': [373301, 373302, ..., 377089],
'python-oldnum': [478467, 478442, ..., 478441],
'python2.1': [351108, 351110, ..., 351131],
'python2.2': [351108, 351109, ..., 351161],
'python2.6': [547838, 547832, ... 547858]}
In [3]: bts.get_usertag("debian-python@lists.debian.org", "python2.1", "python2.2")
Out[3]:
{'python2.1': [351108, 351110, ..., 351131],
'python2.2': [351108, 351109, ..., 351161]}
get_bug_log(nr)
now returns a list of dicts with the keys: header
(string), body
(string), msg_num
(int) and attachments
(list). Before
1.0 it returned a list of Buglog objects.
The Bugreport class now supports every information provided by the SOAP
interface. I tried to stay as close as possible to the data SOAP provides, so
I renamed existing attributes (like Bugreport.nr which is not supported by
SOAP but is now Bugreport.bug_num
) and also added the quirky ones like: id
and bug_nr
, found
and found_versions
, keywords
and tags
, fixed
and
fixed_date
which always seem to provide the same data.
Instead of the Bugreport.value() method which provided a number representing
the openness (in terms of: open, closed and archived) and urgency (like:
grave, important, …) to make bugreports sortable by their status, the
Bugreport class now has a __cmp__
method which makes bugreports comparable.
The more open and urgent a bug is, the greater it is. Openness always beats
urgency (eg: an open whishlist bug is greater than a closed grave one).
While pre 1.0 versions of python-debianbts more or less served the needs of reportbug-ng, it now tries to stay as close as possible to the data provided by SOAP. As a result many parts of reportbug-ng had to be fixed for the new version. I hope this makes python-debianbts more attractive for other projects dealing with Debian’s bug tracker. As always: python-debianbts is on github and forks, patches or other kinds of collaboration are very welcome.
For the curious here a litte quickstart. it shows how to get all important bugs from reportbug-ng and prints out the bugnumber and summary:
# Get all important bugs of reportbug-ng (returns a list of integers)
bugnrlist = bts.get_bugs("package", "reportbug-ng", "severity", "important")
bugnrlist
[548871, 439203, 542759]
# Get the actual bugreports (returns a list of Bugreport-objects)
bugs = bts.get_status(bugnrlist)
for bug in bugs: print bug.bug_num, bug.subject
....:
542759 [reportbug-ng] Erroneously reports nothing or repeats previous package's report
439203 Doesn't give any explanations of the severities and what they mean
548871 reportbug-ng: does not check for newer versions before reporting a bug