RIP:GraphicsPatcher with fixed imports
Wrapping:

Did not wrap dicts and comments though...
RIP:ActorImporter, wrapped

Fixing the imports from pycarm
Notice modInfos again

@@ -36,7 +36,2 @@
 from bash.patcher.base import Patcher
-from bosh import LoadFactory, modInfos, ModFile
-from brec import MreRecord
-from cint import _, ValidateDict
-from patcher.base import Patcher
-from patcher.oblivion.patchers.base import ImportPatcher, CBash_ImportPatcher

@@ -698,4 +693,4 @@ def initData(self,progress):
             temp_id_data = {}
-            if srcMod not in modInfos: continue
-            srcInfo = modInfos[srcMod]
+            if srcMod not in bash.bosh.modInfos: continue
+            srcInfo = bash.bosh.modInfos[srcMod]
             srcFile = ModFile(srcInfo,loadFactory)
@@ -719,3 +714,3 @@ def initData(self,progress):
             for master in masters:
-                if not master in modInfos: continue # or break filter mods
+                if not master in bash.bosh.modInfos: continue # or break filter mods
                 if master in cachedMasters:
@@ -723,3 +718,3 @@ def initData(self,progress):
                 else:
-                    masterInfo = modInfos[master]
+                    masterInfo = bash.bosh.modInfos[master]
                     masterFile = ModFile(masterInfo,loadFactory)
@@ -897,3 +892,3 @@ def _clog(self, log):  # type 11
                 type, sum(mod_count[type].values())))
-            for srcMod in modInfos.getOrdered(mod_count[type].keys()):
+            for srcMod in bash.bosh.modInfos.getOrdered(mod_count[type].keys()):
                 log(u'  * %s: %d' % (srcMod.s, mod_count[type][srcMod]))
[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