changes_0.2

Differences between revisions 1 and 6 (spanning 5 versions)
Revision 1 as of 2007-05-30 08:50:48
Size: 344
Editor: a89-182-30-65
Comment:
Revision 6 as of 2007-06-24 15:59:47
Size: 3088
Editor: a89-182-5-229
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
As part of my Google Summer of code project I'm going to rewrite python-launchpad-bugs. This wiki-page will give a view of my ideas and a starting point for further discussions. As part of my Google Summer of code project I'm going to rewrite python-launchpad-bugs. This wiki-page will give a view of my ideas and a starting point for further discussions. Some of the following items are already implemented in my developing branch [http://bazaar.launchpad.net/~thekorn/python-launchpad-bugs/api.changes.gsoc]
Line 6: Line 7:
I would like to split the existing HTMLOperations module into a BugList and a Bug module
I would like to split the existing `HTMLOperations` module into a `Buglist` and a `Bug` module.

 * all connection related functions like `safe_urlopen()` will be moved to utils
 * setting the `cookie_handler` should be a global option


== Buglist ==

This module will basically consist of the old `BugList` and `BugPage` classes.

=== BugList ===

 * Filtering should be a global option
 * the only required parameter in the constructor is `url`
 * `BugList.bugs` will be a `SET`

I almost finished the `Buglist` module, I wrote a small script `api_test_Buglist.py` to give an overview over the new API.


== Bug ==

`api_test_Bug.py` shows the state of the developing progress.

 * objectify the current Bug -class:
  * `Comments`, `Attachments` and `InfoTable` are new container classes
  * `Comment`, `Attachment` and `Info` - objects are elements of this containers

 * changeable elements have their own `edit`,`add` or `remove` method: e.g.
  * `Comments` will have a `add` method
  * `Attachments` will have `add` and `remove`
  * `Info` will have an `edit` method
  * `Comment` and `InfoTable` are read-only

 * 'edit local and apply at once' - approach

 The following lines of code should explain that approach:

{{{
bug = Bug(1)
bug.attachments.add('fix.patch', comment='first attempt to fix that issue')
bug.status = 'Needs Info'
bug.tags.append('bitesize')
bug.apply()
}}}

 * There should not be an extra module for exceptions

 * There is only one argument required in the Bug- constructor:

  * a `BugInfo` instance ''or''
  * an integer type `bugnumber` ''or''
  * an `url` to the bugreport

 * `ATTACHMENT_PATH`, `CONTENT_TYPES` and `ATTACHMENT_REGEX` are global options


= Use a LaunchpadConnector class =

We could use a `LaunchpadConnector` class and have several backends implementing it. That way we can have an easy transition to `XMLRPC` once we get it from Launchpad.

== current implementation ==

With revision 70 I added a Connector module to [http://bazaar.launchpad.net/~thekorn/python-launchpad-bugs/api.changes.gsoc api.changes.gsoc].

'''Example usage:'''

''loading the default Bug-class:''
{{{
import launchpadBugs.Connector as C

(Bug,) = C.LaunchpadConnector(Bug)
b = Bug(12)
}}}

''loading the Bug-class from xxx:''
{{{
import launchpadBugs.Connector as C

(Bug,) = C.LaunchpadConnector(Bug="xxx")
b = Bug(12)
}}}

''loading of various classes:''
{{{
import launchpadBugs.Connector as C

(Bug, Buglist) = C.LaunchpadConnector(Bug, BugList)
b = Bug(12)
}}}

= Discussion =


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

(This is still work in progress)

As part of my Google Summer of code project I'm going to rewrite python-launchpad-bugs. This wiki-page will give a view of my ideas and a starting point for further discussions. Some of the following items are already implemented in my developing branch [http://bazaar.launchpad.net/~thekorn/python-launchpad-bugs/api.changes.gsoc]

Splitting HTMLOperations.py

I would like to split the existing HTMLOperations module into a Buglist and a Bug module.

  • all connection related functions like safe_urlopen() will be moved to utils

  • setting the cookie_handler should be a global option

Buglist

This module will basically consist of the old BugList and BugPage classes.

BugList

  • Filtering should be a global option
  • the only required parameter in the constructor is url

  • BugList.bugs will be a SET

I almost finished the Buglist module, I wrote a small script api_test_Buglist.py to give an overview over the new API.

Bug

api_test_Bug.py shows the state of the developing progress.

  • objectify the current Bug -class:
    • Comments, Attachments and InfoTable are new container classes

    • Comment, Attachment and Info - objects are elements of this containers

  • changeable elements have their own edit,add or remove method: e.g.

    • Comments will have a add method

    • Attachments will have add and remove

    • Info will have an edit method

    • Comment and InfoTable are read-only

  • 'edit local and apply at once' - approach The following lines of code should explain that approach:

bug = Bug(1)
bug.attachments.add('fix.patch', comment='first attempt to fix that issue')
bug.status = 'Needs Info'
bug.tags.append('bitesize')
bug.apply()
  • There should not be an extra module for exceptions
  • There is only one argument required in the Bug- constructor:
    • a BugInfo instance or

    • an integer type bugnumber or

    • an url to the bugreport

  • ATTACHMENT_PATH, CONTENT_TYPES and ATTACHMENT_REGEX are global options

Use a LaunchpadConnector class

We could use a LaunchpadConnector class and have several backends implementing it. That way we can have an easy transition to XMLRPC once we get it from Launchpad.

current implementation

With revision 70 I added a Connector module to [http://bazaar.launchpad.net/~thekorn/python-launchpad-bugs/api.changes.gsoc api.changes.gsoc].

Example usage:

loading the default Bug-class:

import launchpadBugs.Connector as C

(Bug,) = C.LaunchpadConnector(Bug)
b = Bug(12)

loading the Bug-class from xxx:

import launchpadBugs.Connector as C

(Bug,) = C.LaunchpadConnector(Bug="xxx")
b = Bug(12)

loading of various classes:

import launchpadBugs.Connector as C

(Bug, Buglist) = C.LaunchpadConnector(Bug, BugList)
b = Bug(12)

Discussion


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

BugHelper/Dev/python-launchpad-bugs/changes_0.2 (last edited 2008-08-06 17:01:19 by localhost)