BugList

Differences between revisions 10 and 12 (spanning 2 versions)
Revision 10 as of 2007-09-03 10:27:24
Size: 2764
Editor: a89-182-150-140
Comment:
Revision 12 as of 2008-07-03 09:30:31
Size: 4566
Editor: a89-182-16-9
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from BugHelper/Dev/python-launchpad-bugs/API changes/BugListExample
Line 2: Line 3:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Contents'''[[BR]][[TableOfContents]]||

= BugList - tutorial =
Line 3: Line 8:
= Example usage of BugList =
Line 5: Line 9:
=== Use `LaunchpadConnector` and setting authentification: === == General workflow ==

This is how to use python-launchpad-bugs to get a list of bugs
Line 7: Line 14:
import launchpadbugs.connector as Connector >>> from launchpadbugs.connector import ConnectBugList
>>> BugList = ConnectBugList() # using the html mode
>>> bl = BugList("https://bugs.launchpad.net/ubuntu/+source/bughelper/+bugs")
}}}
Line 9: Line 19:
BugList = Connector.ConnectBugList()
BugList.authentication = "cookie.txt"
If you need a faster method to fetch the bug list but can abdicate additional information like status and importance of a bugreport it is possible to use the text mode of launchpad:

{{{#!python start=2
>>> BugList = ConnectBugList("text") # using the text mode
Line 12: Line 24:

In some cases, e.g. if the resulting lists should contain private bugreports, authentication is necessary

{{{#!python start=4
>>> BugList.authentication="cookie.txt" #for text-based mozilla cookie files or
>>> BugList.authentication="cookie.sql" #for sql mozilla cookie files
}}}

It is also possible to do authentication via email-login and password. Note: This takes much longer than using cookie files, therefore python-launchpad-bugs provides a method to save the resulting cookie into a file

{{{#!python start=7
>>> BugList.authentication={"email": "[email protected]", "passwort": "YourPassword"}
>>> BugList.connection.save_cookie("/home/markus/.lpcookie")
}}}

There are currently different versions of launchpad, the stable bugs.launchpad.net and the testing environment bugs.edge.launchpad.net. Sometimes it makes sense to explicitly choose one of these versions to work with. In python-launchpad-bugs it is possible to define which version to use.

{{{#!python
>>> from launchpadbugs.lpconstants import HTTPCONNECTION
>>> BugList.set_connection_mode(HTTPCONNECTION.MODE.EDGE) # or
>>> BugList.set_connection_mode(HTTPCONNECTION.MODE.STABLE)
}}}

BugList - tutorial

This is still work in progress

General workflow

This is how to use python-launchpad-bugs to get a list of bugs

   1 >>> from launchpadbugs.connector import ConnectBugList
   2 >>> BugList = ConnectBugList() # using the html mode
   3 >>> bl = BugList("https://bugs.launchpad.net/ubuntu/+source/bughelper/+bugs")

If you need a faster method to fetch the bug list but can abdicate additional information like status and importance of a bugreport it is possible to use the text mode of launchpad:

   2 >>> BugList = ConnectBugList("text") # using the text mode

In some cases, e.g. if the resulting lists should contain private bugreports, authentication is necessary

   4 >>> BugList.authentication="cookie.txt" #for text-based mozilla cookie files   or
   5 >>> BugList.authentication="cookie.sql" #for sql mozilla cookie files

It is also possible to do authentication via email-login and password. Note: This takes much longer than using cookie files, therefore python-launchpad-bugs provides a method to save the resulting cookie into a file

   7 >>> BugList.authentication={"email": "[email protected]", "passwort": "YourPassword"}
   8 >>> BugList.connection.save_cookie("/home/markus/.lpcookie")

There are currently different versions of launchpad, the stable bugs.launchpad.net and the testing environment bugs.edge.launchpad.net. Sometimes it makes sense to explicitly choose one of these versions to work with. In python-launchpad-bugs it is possible to define which version to use.

   1 >>> from launchpadbugs.lpconstants import HTTPCONNECTION
   2 >>> BugList.set_connection_mode(HTTPCONNECTION.MODE.EDGE) # or
   3 >>> BugList.set_connection_mode(HTTPCONNECTION.MODE.STABLE)

Getting a list of bugs and print available information:

   1 l = BugList("https://bugs.launchpad.net/ubuntu/+source/bughelper/+bugs")
   2 for i in l.bugs:
   3     print i.bugnumber,
   4     print i.url,
   5     print i.summary,
   6     print i.importance,
   7     print i.status,
   8     print i.sourcepackage

{{{ 88521 https://bugs.launchpad.net/ubuntu/+source/bughelper/+bug/88521 selectively pulling attachments by name Medium Incomplete None

88102 https://bugs.launchpad.net/ubuntu/+source/bughelper/+bug/88102 sort report by issue type rather than bug number Undecided Confirmed None }}}

Adding some (upstream) bugs to the set

   1 l += BugList("https://bugs.launchpad.net/bughelper/+bugs")
   2 print l.bugs

{{{ set([109628, 110937, 88521, 88102, 84723, 88102, 81291, 85152, 88521, 90084, 109547]) }}}

Setting a filter and filter the set of bugs

   1 BugList.set_filter(minbug=100000, filterbug="117701,109628", status="New")
   2 l = l.filter()
   3 print l.bugs

{{{ set([110937, 109547]) }}}

Sorting the list of bugs

   1 print l.sort("nr")

{{{ [109547, 110937] }}}

add LP urloptions to an url

   1 a = BugList("https://launchpad.net/ubuntu/+source/apport/+bugs?%s" %BugList.urlopt)
   2 print a.bugs

{{{ set([123180, 122818, 123394, 119270, 123440, 87364, 105224, 108482, 95504, 114215, 118407, 118827, 119104, 95822, 121121, 121341, 122196, 123216, 122274, 122347, 122522, 122798, 89916, 122882, 94130, 122859, 123062]) }}}

Raising `LPUrlError` for invalid urls

   1 try:
   2     a = BugList("https://bugs.launchpad.net/ubuntu/+source/firefokkksss/+bugs")
   3     print len(a.bugs)
   4 except BugList.Error.LPUrlError, e:
   5     print e

"'Page not found (url: https://bugs.launchpad.net/ubuntu/+source/firefokkksss/+bugs)'"

Use custom-made filter-functions

   1 bl = BugList("https://bugs.launchpad.net/bughelper/+bugs")
   2 def RFE_filter(bugs):
   3     result = set()
   4     for b in bugs:
   5         if b.summary.startswith("RFE"):
   6             result.add(b)
   7     return result
   8             
   9 
  10 for b in bl.filter(func=[RFE_filter]).bugs:
  11     print "%s (%s)" %(b.summary, b.bugnumber)

{{{ RFE: Web interface to bughelper (81291) RFE: grep for package version (84723) }}}


Go Back to [:BugHelper/Dev].BR CategoryBugHelper

BugHelper/Dev/python-launchpad-bugs/BugList (last edited 2008-08-06 17:01:38 by localhost)