RIP: ImportInventory (wrapped, modInfos):

- Split u'%s ' +_('Inventories Changed') + u': %d' - notice _clog() type 12
RIP: ImportActorsSpells (some wrapping, modInfos, imported FormID):

scanModFile and builtPatch still vary - will look into it
Did not wrap initData, depresses me.
[WIP]Classified  scanModFile():

4 overrides
type 0: sui generis - 2
type 1: slight difference - 1
type 2: more differences (in inner loop and also do not check for LongTypes and
`for type in ` is (usually) passed a tuple in) -5

4+2+1+4 = 11, patchers so far

modName = modFile.fileInfo.name # always there and unused
[WIP]Classified  buildPatch():
RIP: NamesPatcher - imports game from bush:

- Notice I do from ....bush import game for NamesPatcher - maybe candidate
for game independent patcher ?
- Wrapping...
- modInfos from bosh

 # Patchers: 20 ----------------------------------------------------------------
 import operator
-from .... import bosh # for modInfos
 import re
+from .... import bosh # for modInfos
+from ....bush import game # for Name patcher
 from ....bolt import GPath, MemorySet
 from ....bosh import LoadFactory, ModFile, CountDict, getPatchesList, \
-    reModExt, getPatchesPath, modInfos
+    reModExt, getPatchesPath
 from ....brec import MreRecord, MelObject
-import bush
 from ....patcher.base import AImportPatcher, Patcher
 from ....patcher.oblivion.patchers.base import ImportPatcher, \
     CBash_ImportPatcher
-from ....cint import ValidateDict, ValidateList, FormID, _, validTypes
-from patcher.oblivion.utilities import FullNames, CBash_FullNames
+from ....cint import ValidateDict, ValidateList, FormID, validTypes
 from ..utilities import ActorFactions, CBash_ActorFactions, FactionRelations, \
-    CBash_FactionRelations
+    CBash_FactionRelations, FullNames, CBash_FullNames
RIP: NpcFacePatcher:

minimal wrap to preserve code style (maybe factor some sommon code out ?)
modInfos -> bosh.modInfos as usual
[WIP]Common code extracted _ignore_record() - question:

- why cbash patchers use sets while p Bash tuples ?
Interlude:RIP: APatchMerger moved to base - comments on autoRe:

Mopy/bash/patcher/oblivion/patchers/base.py
- put ListPatcher on top to better match good old bosh, added APatchMerger
- changed the style to relative imports - can't yet import bosh

Mopy/bash/patcher/base.py
- added C/P PatchMerger
- Added headers
- changed the style to relative imports - imported bush - needed ?
 What about bosh.dirs
- Re: autoRe = re.compile(ur"^UNDEFINED$",re.I|re.U) - most
 subclasses used the `re.I|re.U` form - search pre refactor bosh for
 u'^UNDEFINED$' and ur"^UNDEFINED$". Notice RacePatcher has
 `autoRe = re.compile(r"^UNDEFINED$",re.I)` while CBash_RacePatcher
 `autoRe = re.compile(ur'^UNDEFINED$',re.I|re.U)` (the usual one). Changed
 the quotes so it stands out in oblivion/patchers/races_multitweaks.py

Mopy/bash/patcher/oblivion/patchers/importers.py

No more AListPatcher in bosh.
Interlude: MI for UpdateReferences
Interlude: RIP: UpdateReferences
RIP: RoadImporter:

No wrap
_ACellImporter (as it is private - although those UI stings belong to
patcher/base.py
bosh.modinfos as usual
RIP: SoundPatcher:

Wrapping, moodInfos.
SoundPatcher: _scanModFile/_buildPatch - extracted _inner_loop
RIP: StatsPatcher:

minimal wrapping
Notice the modInfos pattern btw:

@@ -3306,4 +3307,4 @@ def initData(self,progress):
             if reModExt.search(srcFile.s):
-                if srcPath not in modInfos: continue
-                srcInfo = modInfos[GPath(srcFile)]
+                if srcPath not in bosh.modInfos: continue
+                srcInfo = bosh.modInfos[GPath(srcFile)]
                 itemStats.readFromMod(srcInfo)
@@ -3482,3 +3483,3 @@ def _clog(self, log):  # type 1
             type, sum(mod_count[type].values())))
-            for srcMod in modInfos.getOrdered(mod_count[type].keys()):
+            for srcMod in bosh.modInfos.getOrdered(mod_count[type].keys()):
                 log(u'  * %s: %d' % (srcMod.s, mod_count[type][srcMod]))
RIP: SpellsPatcher - all import patchers ripped:

no ImportPatcher import in bosh
minimal wrapping
modInfos (duh)
moved functions to the top of the file - though only used in Graphics and
below
Comments WIP
New `types` parameter in _buildPatch:

- will allow me to extend
- better align _inner_loop()s

fixup: in ImportFactions that does not call _buildPatch
New logging parameter in _buildPatch - logs need revisiting
buildPatch2: absorbed to _buildPatch:

- need to look at the logs: logMsg as class variable
- renamed id_relations to id_data to use in _buildPatch in ImportFactions
patcher
ImportPatcher.logMsg - simplified _patchLog, _plog, _buildPatch:

- modsHeader must go!