[Import style]Relative imports to the rescue from bash/bash - TODOs:

- from .... import bush or from ....bush import game [and couple others].
Performance vs readability etc

- defaultEyes should be in game/game
Import fix in base.py (REVERT)

Must wait till imports from patcher are out of bosh
Imports patcher/oblivion/record_groups.py
Imports patcher/oblivion/utilities.py and shadowing warnings:

csvFormat -> _csvFormat
REVERT:Importer log - shouldn't it print the count per mod in PBash ?

CBash:
Import Cells
•  Cells/Worlds Patched: 428

•  OBSE-Storms & Sound.esp: 179

•  HiddenSkulls.esp: 1

•  Thieves Arsenal.esp: 10

•  Oscuro's_Oblivion_Overhaul.esp: 23

•  Oblivifall - Something's Not Right.esp: 1

•  Ivellon.esp: 3

•  Artefacts of the Ancestors.esp: 2

•  AyleidArrows.esp: 1

•  Dungeon.esp: 1

•  HauntedLairMod.esp: 1

•  Kragenir's Death Quest.esp: 89

•  KDQ - Rural Line Additions.esp: 1

•  LostSwordOfTheAylied.esp: 1

•  Quest For The Elements.esp: 2

•  QQuix - Divine Elegance Showroom.esp: 2

•  Reaper's Sexy Shower Everywhere.esp: 1

•  The Ayleid Steps.esp: 46

•  The_Tower_of_the_Lich_King-4492.esp: 1

•  thievery.esp: 13

•  Vampire Hunting - Order Of The Virtuous Blood.esp: 6

•  Blood&Mud.esp: 11

•  MannimarcoComplete.esp: 3

•  HeartOftheDead.esp: 4

•  NakedNord.esp: 3

•  bgMagicEV.esp: 1

•  bgMagicEVPaperChase.esp: 1

•  bgIntegrationEV.esp: 19

•  TheOubliette.esp: 2

PBash:

Import Cells
Source Mods
•  Unofficial Oblivion Patch.esp

•  Unofficial Shivering Isles Patch.esp

•  DLCThievesDen.esp

•  DLCThievesDen - Unofficial Patch.esp

•  DLCFrostcrag.esp

•  DLCFrostcrag - Unofficial Patch.esp

•  xuldarkforest.esp

•  xulArriusCreek.esp

•  xulCheydinhalFalls.esp

•  bgMagicEV.esp

Cells/Worlds Patched
•  Oblivion.esm: 428
Changed default in_plog() so P/C logs compare better - TODO:Revert parent:

In Import Cells:

Cells/Worlds Patched
  Modified Oblivion.esm Records: 428

Duh
RIP: KFFZPatcher
RIP: NPCAIPackagePatcher unwrapped
Wrapping - extracted _insertPackage()
[New Method]Common code moved to new _buildPatch function - TODO:

Filter the collection modFile.tops[type].records BEFORE calling _inner_loop
Made methods static and defined modFileTops as this is what's used
RIP: DeathItemPatcher with modinfos imports fix
_inner_loop for DeathItemPatcher + wrapping
RIP: ImportFactions
Wrapping
self.id_factions -> self.id_data to use _buildPatch - not done:

self.activeTypes is self.srcClasses in _buildPatch
Also log arguments...
Notice modFileTops = self.patchFile.tops and local vars left as
id_factions (except if I need to compare)
[New function]Identical _scanModFile factored out

Reformatted _buildPatch (duh) and added comments
if reduce(getattr,attr.split('.'),record) != value: # OOPS
does not permit me to use _scanModFile for ActorImporter
RIP: ImportRelations (wrapped, modInfos fixed)

_scanModFile and _buildPatch must wait
Warns and a typo
Moving all code from oblivion.py to oblivion/__init__.py:

TODO: take records out !
See: #65