Things TODO, in no particualr order.

* The progressbar does not go up from 0 to 100% in a linear way and
makes massive jumps from each section.
The progress steps are defined by StatusPercentageMap which doesn't
match reality in a lot of cases.

* TS_REPACKAGING = 'repackaging' isn't defined in yum, but in a plugin
so we have to define it manually. This needs to be defined in yum.

* We have to sprinkle _to_unicode() around the codebase to ensure we
don't explode when yum gives us strings with non-unicode encoding
It would be really good to make the methods that return us text data
to be guaranteed unicode.

* We're hardcoding a list of reboot packages. That's probably bad.

* We have to get the yum lock even to read packages from the rpmdb which
means we can't do a lot of stuff without showing the user a "waiting for
lock" status that the designers hate.

* the yumProcess.py sometimes goes of into never-never-land where it's
stuck downloading a file from a server at 0kb/s

* We don't actually know what exceptions a yum method will throw, and so
most of the yum code is wrapped with "except Exception, e:" to catch
things so we don't show the user a backtrace. A lot of these things like
DivisionByZero are because PK is using different code paths in yum than
the yum CLI and that causes bad things to happen.

* We don't get a nice error when out of disk space, we just just get
"exceptions.IOError" at random times.

* We just show metapackages for the groups available to yum and we only
install and remove the mandatory packages, so if you install @kde, you
install about 100 packages, and then you remove @kde and delete about 20.
This probably needs fixing in a cleverer way and i see that the yumdb
now supports a group_member:
        http://yum.baseurl.org/wiki/YumDB

* Getting the list of enabled repos means we end up checking the primary
metadata. We don't want to do that as it really slows down the UI.

* My python knowlegde is pretty crap so there might be some low hanging
fruit for some speed increases. I've not really profiled yum and this
probably needs doing.

* Downloading packages to disk using yum is really complex.

* _findPackage is in the hotpath and has to do some pretty insane things
to make things even acceptable. For instance, going straight to the rpmdb
for installed packages, or finding the correct repo and searching just
in that, rather than using the generic yum searching routines.
Using searchNevra on all the package sacks is about two orders of
magnitude too slow and we probably want to make yum smarter about not
searching all the repos when we know the repo it belongs in.

* _installable() is pretty hilarious and there must be a better way of
doing this.

* The yum CLI and the PK API differ wen getting the updates lists
leading to bugs like the rawhide-release bug.

* The mediagrabber stuff needs reworking, see RHEL bug

* Resolve needs to support globbing

* We need to self.yumbase.deselectGroup() in _install_packages, which
probably indicates a bug somewhere in yum core. 

* _check_local_file is copied from yum and probably needs to be shared
somehow.

* We don't handle skip_broken very well. We need to try harder not to
just fail the transaction and actually do what the user wants.

* We don't support autoremove for RemovePackages()

* We don't support UpgradeSystem()

* Doing GetUpdates() should mean we download all the metadata (filelists
etc) before returning, so that we don't block with "Downloading
update details"

* The entire comps functionality is cached in PK as the yum interface is
two orders of magnitude too slow. It probably needs to be cached in the
yum layer rather than parsing a multi-megabyte XML comps file on each
request.

* yum seems to ignore self.yumbase.conf.cache=0 sometimes.

* PK is using some non-public methods in yum, e.g. yumbase._tsInfo and
we probably need proper public documented methods to set these.

* Don't check for repomd not being contactable in _init() as it involves
doing network IO and slows down PK.

* Currently we show a message to the user to run yum-complete-transactions
as root. This needs to be fixed, and yum needs to have some way of
"doing the right thing" automatically. 

* self.preconf is a giant hack in yum, and we've also got to deal with
prerepoconf which gets fun indeed when using PK with RHN.

* When we use delta packages we don't get any progress reporting in the
UI. This needs to be exposed in yum.

* Yum raises TypeError when it can't open the rpmdb, it should probably
do something more sane.
