API Reference
Mod Fix
RaidenBossFixService
- def_fix
- def_setupModPath
- defaddTips
- defcreateLog
- defcreateMod
- deffix
- deffixIni
- deffixMod
- defreportSkippedAsset
- defreportSkippedMods
- defwarnSkippedBlends
- class RaidenBossFixService(path: Optional[str] = None, keepBackups: bool = True, fixOnly: bool = False, undoOnly: bool = False, readAllInis: bool = False, log: bool = False, verbose: bool = True, handleExceptions: bool = False)
The overall class for fixing the Raiden Shogun Boss for Raiden Shogun mods
- Parameters
path (Optional[
str]) –The file location of where to run the fix.
If this attribute is set to
None, then will run the fix from wherever this class is called
Default:
NonekeepBackups (
bool) –Whether to keep backup versions of any .ini files that the script fixes
Default:
TruefixOnly (
bool) –Whether to only fix the mods without removing any previous changes this fix script may have made
Warning
if this is set to
TrueandundoOnlyis also set toTrue, then the fix will not run and will throw aConflictingOptionsexceptionDefault:
FalseundoOnly (
bool) –Whether to only undo the fixes previously made by the fix
Warning
if this is set to
TrueandfixOnlyis also set toTrue, then the fix will not run and will throw aConflictingOptionsexceptionDefault:
TruereadAllInis (
bool) –Whether to read all the .ini files that the fix encounters
Default:
Falselog (
bool) –Whether to log the run of the fix in a seperate text file
Default:
Falseverbose (
bool) –Whether to print the progress for fixing mods
Default:
TruehandleExceptions (
bool) –When an exception is caught, whether to silently stop running the fix
Default:
False
- _loggerBasePrefix
The prefix string for the logger used when the fix returns back to the original directory that it started to run
- Type
- fixOnly
Whether to only fix the mods without removing any previous changes this fix script may have made
- Type
- _pathIsCWD
Whether the filepath that the program runs from is the current directory where this module is loaded
- Type
- skippedMods
All the mods that have been skipped
The keys are the absolute path to the mod folder and the values are the exception that caused the mod to be skipped
- Type
Dict[
str,BaseException]
- skippedBlends
The Blend.buf files that got skipped
The outer key is the absolute path to the mod folder
The inner key is the absolute path to the Blend.buf file
The value in the inner dictionary is the exception that caused the Blend.buf file to be skipped
- Type
Dict[
str, Dict[str,BaseException]]
- inisSkipped
The .ini files that got skipped
The keys are the absolute file paths to the .ini files and the values are exceptions that caused the .ini file to be skipped
- Type
Dict[
str,BaseException]
- _fix()
The overall logic for fixing a bunch of mods
- For finding out which folders may contain mods, this function:
recursively searches all folders from where the
RaidenBossFixService.pathis locatedfor every .ini file in a valid mod and every Blend.buf file encountered that is encountered, recursively search all the folders from where the .ini file or Blend.buf file is located
Note
For more info about how we define a ‘mod’, go to
Mod
- _setupModPath()
Sets the filepath of where the fix will run from
- addTips()
Prints out any useful tips for the user to know
- createLog()
Creates a log text file that contains all the text printed on the command line
- createMod(path: Optional[str] = None, files: Optional[List[str]] = None) Mod
Creates a mod
Note
For more info about how we define a ‘mod’, go to
Mod- Parameters
path (Optional[
str]) –The absolute path to the mod folder.
If this argument is set to
None, then will use the current directory of where this module is loadedfiles (Optional[List[
str]]) –The direct children files to the mod folder (does not include files located in a folder within the mod folder).
If this parameter is set to
None, then the module will search the folders for you
- Returns
The mod that has been created
- Return type
- fixIni(ini: IniFile, mod: Mod, fixedRemapBlends: Dict[str, RemapBlendModel]) bool
Fixes an individual .ini file for a particular mod
Note
For more info about how we define a ‘mod’, go to
Mod- Parameters
ini (
IniFile) – The .ini file to fixmod (
Mod) – The mod being fixedfixedRemapBlends (Dict[
str,RemapBlendModel]) – All of the RemapBlend.buf files that have already been fixed.
The keys are the absolute filepath to the fixed RemapBlend.buf file and the values contains the data related to the fixed RemapBlend.buf file
- Returns
Whether the particular .ini file has been fixed
- Return type
- fixMod(mod: Mod, fixedRemapBlends: Dict[str, RemapBlendModel]) bool
Fixes a particular mod
Note
For more info about how we define a ‘mod’, go to
Mod- Parameters
mod (
Mod) – The mod being fixedfixedRemapBlends (Dict[
str,RemapBlendModel]) – all of the RemapBlend.buf files that have already been fixed.
The keys are the absolute filepath to the fixed RemapBlend.buf files and the values contains the data related to the fixed RemapBlend.buf file
- Returns
Whether the particular mod has been fixed
- Return type
- property path: str
The filepath of where the fix is running from
- Getter
Returns the path of where the fix is running
- Setter
Sets the path for where the fix runs
- Type
- property pathIsCwd
Whether the filepath that the program runs from is the current directory where this module is loaded
- Getter
Returns whether the filepath that the program runs from is the current directory of where the module is loaded
- Type
- reportSkippedAsset(assetName: str, assetDict: Dict[str, BaseException], warnStrFunc: Callable[[str], str])
Prints out the exception message for why a particular .ini file or Blend.buf file has been skipped
- Parameters
assetName (
str) – The name for the type of asset (files, folders, mods, etc…) that was skippedassetDict (Dict[
str,BaseException]) –Locations of where exceptions have occured for the particular asset
The keys are the absolute folder paths to where the exception occured
wantStrFunc (Callable[[
str],str]) –Function for how we want to print out the warning for each exception
Takes in the folder location of where the exception occured as a parameter
Mod
- clsMod.blendCorrection
- clsMod.isBackupDupFile
- clsMod.isBackupIni
- clsMod.isBlend
- clsMod.isIni
- clsMod.isRemapBlend
- def_setupFiles
- defcorrectBlend
- defgetOptionalFiles
- defprint
- defremoveBackupDups
- defremoveBackupInis
- defremoveFix
- class Mod(path: Optional[str] = None, files: Optional[List[str]] = None, logger: Optional[Logger] = None)
This Class inherits from
ModelUsed for handling a mod
Note
We define a mod based off the following criteria:
A folder that contains at least 1 .ini file
At least 1 of the .ini files in the folder contains:
a section with the regex
[.*TextureOverride.*(Raiden|Shogun).*]ifRaidenBossFixService.readAllInisis set toFalse
ORa section with the regex
[.*TextureOverride.*Blend.*]ifRaidenBossFixService.readAllInisis set toTrueor the script is ran with the--allflag
- Parameters
path (Optional[
str]) –The file location to the mod folder.
If this value is set to
None, then will use the current directory of where this module is loaded.
Default:
Nonefiles (Optional[List[
str]]) –The direct children files to the mod folder (does not include files located in a folder within the mod folder).
If this parameter is set to
None, then the class will search the files for you when the class initializes
Default:
Nonelogger (Optional[
Logger]) –The logger used to pretty print messages
Default:
None
- _files
The direct children files to the mod folder (does not include files located in a folder within the mod folder).
- Type
List[
str]
- backupDups
The DISABLED_RSDup.txt files found for the mod
Warning
This attribute is now DEPRECATED. Now, the fix does not care whether there are duplicate .ini files or Blend.buf files
- Type
List[
str]
- classmethod blendCorrection(blendFile: Union[str, bytes], fixedBlendFile: Optional[str] = None) Union[str, bytes]
Fixes a Blend.buf file
- Parameters
- Raises
BlendFileNotRecognized – If the original Blend.buf file provided by the parameter
blendFilecannot be read- Returns
If the argument
fixedBlendFileisNone, then will return bytes for the fixed Blend.buf file
Otherwise will return the filename fo the fixed RemapBlend.buf file- Return type
- correctBlend(fixedRemapBlends: Dict[str, RemapBlendModel])
Fixes all the Blend.buf files reference by the mod
Requires all the .ini files in the mod to have ran their
IniFile.parse()function- Parameters
fixedRemapBlends (Dict[
str,RemapBlendModel]) – All of the RemapBlend.buf files that have already been fixed.
The keys are the absolute filepath to the fixed RemapBlend.buf file and the values contains the data related to the fixed RemapBlend.buf file
- property files
The direct children files to the mod folder (does not include files located in a folder within the mod folder).
- Getter
Returns the files to the mod
- Setter
Sets up the files for the mod
- Type
Optional[List[
str]]
- getOptionalFiles() List[Optional[str]]
Retrieves a list of each type of files that are not mandatory for the mod
- Returns
The resultant files found for the following file categories (listed in the same order as the return type):
.ini files
.RemapBlend.buf files
DISABLED_RSFixBackup.txt files
DISABLED_RSDup.txt files
Note
See
Mod.isIni(),Mod.isRemapBlend(),Mod.isBackupIni()orMod.isBackupDupFile()for the specifics of each type of file- Return type
- classmethod isBackupDupFile(file: str) bool
Warning
This function is now DEPRECATED. Now, the fix does not care whether there are duplicate .ini files or Blend.buf files
Determines whether the file is a DISABLED_RSDup.txt file that is used to disable duplicate .ini files or Blend.buf files
- classmethod isBackupIni(file: str) bool
Determines whether the file is a DISABLED_RSFixBackup.txt file that is used to make backup copies of .ini files
- classmethod isBlend(file: str) bool
Determines whether the file is a Blend.buf file which is the original blend file provided in the mod
- classmethod isIni(file: str) bool
Determines whether the file is a .ini file which is the file used to control how a mod behaves
- classmethod isRemapBlend(file: str) bool
Determines whether the file is a RemapBlend.buf file which is the fixed Blend.buf file created by this fix
- print(funcName: str, *args, **kwargs)
Prints out output
- Parameters
- Returns
The return value from running the corresponding function in the logger
- Return type
Any
- removeBackupDups()
Removes all DISABLED_RSDup.txt contained in the mod
- removeBackupInis()
Removes all DISABLED_RSFixBackup.txt contained in the mod
- removeFix(fixedBlends: Set[str], fixedInis: Set[str], keepBackups: bool = True, fixOnly: bool = False)
Removes any previous changes done by this module’s fix
- Parameters
fixedBlend (Set[
str]) – The file paths to the RemapBlend.buf files that we do not want to removefixedInis (Set[
str]) – The file paths to the .ini files that we do not want to removekeepBackups (
bool) –Whether to create or keep DISABLED_RSFixBackup.txt files in the mod
Default:
TruefixOnly (
bool) –Whether to not undo any changes created in the .ini files
Default:
False
Ini Files
IniFile
- _blendCommands
- _blendCommandsRemapNames
- _blendCommandsTuples
- _fileLines
- _fileLinesRead
- _isRaidenFixed
- _isRaidenIni
- _parser
- _resouceCommandsTuples
- _resourceBlends
- _resourceCommands
- _resourceCommandsRemapNames
- _sectionIfTemplates
- _textureOverrideBlendRoot
- file
- isRaidenFixed
- isRaidenIni
- mustBeRaiden
- remapBlendModels
- remapBlendModelsDict
- clsIniFile.getFixFooter
- clsIniFile.getFixHeader
- clsIniFile.getFixedBlendFile
- clsIniFile.getMergedResourceIndex
- clsIniFile.getRemapName
- clsIniFile.getRemapResourceName
- clsIniFile.getResourceName
- clsIniFile.removeResourceName
- def_addFixBoilerPlate
- def_checkRaidenFixed
- def_checkRaidenIni
- def_getBlendResources
- def_getCommandIfTemplate
- def_getCommands
- def_getIfTemplateResourceName
- def_getIfTemplateSubCommand
- def_getResourceSortKey
- def_isIfTemplateDraw
- def_isIfTemplateResource
- def_isIfTemplateSubCommand
- def_makeRemapModels
- def_parseSection
- def_processIfTemplate
- def_readLines
- def_removeFix
- def_removeSection
- defcheckRaidenIni
- defclearRead
- defdisIni
- deffillIfTemplate
- deffillRemapResource
- deffillTextureOverrideRemapBlend
- deffix
- defgetFileLines
- defparse
- defread
- defremoveSectionOptions
- defwrite
- class IniFile(file: Optional[str] = None, logger: Optional[Logger] = None, txt: str = '', mustBeRaiden: bool = True)
This class inherits from
ModelClass for handling .ini files
Note
We analyse the .ini file using Regex which is NOT the right way to do things since the modified .ini language that GIMI interprets is a CFG (context free grammer) and NOT a regular language.
But since we are lazy and don’t want make our own compiler with tokenizers, parsing algorithms (eg. SLR(1)), type checking, etc… this module should handle regular cases of .ini files generated using existing scripts (assuming the user does not do anything funny…)
- Parameters
file (Optional[
str]) –The file path to the .ini file
Default:
Nonelogger (Optional[
Logger]) – The logger to print messages if necessarytxt (
str) –Used as the text content of the .ini file if
IniFile.fileis set toNone
Default: “”
mustBeRaiden (
bool) –Whether the .ini file has to be used for a Raiden mod
Default:
True
- _parser
Parser used to parse very basic cases in a .ini file
- Type
- _textureOverrideBlendRoot
The name for the section containing the keywords:
[.*TextureOverride.*Blend.*]- Type
Optional[
str]
- _sectionIfTemplates
All the sections in the .ini file that can be parsed into an
IfTemplateFor more info see
IfTemplateWarning
The modified .ini language that GIMI uses introduces keywords that can be used before the key of a key-value pair
eg. defining constants
1[Constants] 2global persist $swapvar = 0 3global persist $swapscarf = 0 4global $active 5global $creditinfo = 0
Sections containing this type of pattern will not be parsed. But generally, these sections are irrelevant to fixing the Raiden Boss
- Type
Dict[
str,IfTemplate]
- _resourceBlends
Sections that are linked to 1 or more Blend.buf files.
The keys are the name of the sections.
- Type
Dict[
str,IfTemplate]
- _blendCommands
All the sections that use some
[Resource.*Blend.*]section.
The keys are the name of the sections.
- Type
Dict[
str,IfTemplate]
- _blendCommandsRemapNames
The new names for the sections that use some
[Resource.*Blend.*]section that will be used in the fix.
The keys are the original names of the sections in the .ini file
- Type
Dict[:class`str`,
str]
- _blendCommandsTuples
All the sections that use some
[Resource.*Blend.*]section while maitaining the order that sections have been calledNote
This attribute is the same as
IniFile._blendCommandsexcept that the order that sections are called in the call stack is preserved- Type
List[Tuple[
str,IfTemplate]]
- _resourceCommands
All the related sections to the
[Resource.*Blend.*]sections that are used by sections related to the[TextureOverride.*Blend.*]sections. The keys are the name of the sections.- Type
Dict[
str,IfTemplate]
- _resourceCommandsRemapNames
The new names to be used in the fix for all the related sections to the
[Resource.*Blend.*]sections that are used by sections related to[TextureOverride.*Blend.*]sections.The keys are the original names of the sections in the .ini file
- _resouceCommandsTuples
All the related sections to the
[Resource.*Blend.*]sections that are used by sections related to[TextureOverride.*Blend.*]sections while maitaining the order that the sections have been calledNote
This attribute is the same as
IniFile._resourceCommandsexcept that the order that sections are called in the call stack is preserved- Type
List[Tuple[
str,IfTemplate]]
- remapBlendModelsDict
The data for the
[Resource.*RemapBlend.*]sections used in the fixThe keys are the original names of the resource with the pattern
[Resource.*Blend.*]- Type
Dict[
str,RemapBlendModel]
- remapBlendModels
The data for the
[Resource.*RemapBlend.*]sections used in the fixNote
This attribute is the same as the values of
IniFile.remapBlendModelsDictby calling:1list(remapBlendModelsDict.values())
- Type
List[
RemapBlendModel]
- _addFixBoilerPlate()
Decorator used to add the boilerplate code to identify a code section has been changed by this fix in the .ini file
Examples
1@_addFixBoilerPlate 2def helloWorld(self) -> str: 3 return "Hello World"
- _checkRaidenFixed(line: str)
Checks if a line of text matches the regex,
[.*TextureOverride.*RemapBlend.*],to identify whether the .ini file has been fixed- Parameters
line (
str) – The line of text to check
- _checkRaidenIni(line: str)
Checks if a line of text contains the keywords to identify whether the .ini file is a Raiden mod
If
IniFile.mustBeRaidenisTrue, then will see if the line matches with the regex,[.*TextureOverride.*(Raiden|Shogun).*Blend.*]Otherwise, will see if the line matches with the regex,
[.*TextureOverride.*Blend.*]
- Parameters
line (
str) – The text to check
- _getBlendResources(sectionName: str, blendResources: Set[str], subCommands: Set[str], subCommandLst: List[str])
Low level function for retrieving all the referenced resources that were called by sections related to the
[TextureOverride.*Blend.*]sections- Parameters
sectionName (
str) – The name of the section in the .ini file that we want to get the blend resources fromblendResources (Set[
str]) – The result for all the resource sections that were referencedsubCommands (Set[
str]) – The result for all of the sub-sections that were called from the[TextureOverride.*Blend.*]sectionsubCommandLst (List[
str]) – The result for all of the sub-sections that were called from the[TextureOverride.*Blend.*]section that maintains the order the sections are called in the call stack
- Raises
KeyError – If the
IfTemplateis not found for some section related to the[TextureOverride.*Blend.*]section
- _getCommandIfTemplate(sectionName: str, raiseException: bool = True) Optional[IfTemplate]
Low level function for retrieving the
IfTemplatefor a certain section from IniFile._sectionIfTemplate- Parameters
raiseException (
bool) – Whether to raise an exception when the section’sIfTemplateis not found
- Raises
KeyError – If the
IfTemplatefor the section is not found andraiseExceptionis set to True- Returns
The corresponding
IfTemplatefor the section- Return type
Optional[
IfTemplate]
- _getCommands(sectionName: str, subCommands: Set[str], subCommandLst: List[str])
Low level function for retrieving all the commands/sections that are called from a certain section in the .ini file
- Parameters
- Raises
KeyError – If the
IfTemplateis not found for some section
- _getIfTemplateResourceName(ifTemplatePart: Dict[str, Any]) Any
Retrieves the value from the key, ‘vb1’, for some part of a section
- _getIfTemplateSubCommand(ifTemplatePart: Dict[str, Any]) Any
Retrieves the value from the key, ‘run’, for some part of a section
- _getResourceSortKey(resourceTuple: Tuple[str, Any]) int
Retrieves the index number of a resource created by GIMI’s
genshin_merge_mods.pyscript as an integerNote
See
IniFile.getMergedResourceIndex()for more info
- _isIfTemplateDraw(ifTemplatePart: Dict[str, Any]) bool
Whether the content for some part of a section contains the key ‘draw’
- _isIfTemplateResource(ifTemplatePart: Dict[str, Any]) bool
Whether the content for some part of a section contains the key ‘vb1’
- _isIfTemplateSubCommand(ifTemplatePart: Dict[str, Any]) bool
Whether the content for some part of a section contains the key ‘run’
- _makeRemapModels() Dict[str, RemapBlendModel]
Low level function to create all the data needed for fixing the
[Resource.*Blend.*]sections in the .ini file- Returns
The data for fixing the resource sections
The keys are the names for the resource sections and the values are the required data for fixing the sections
- Return type
Dict[
str,RemapBlendModel]
- _parseSection(sectionName: str, srcTxt: str, save: Optional[Dict[str, Any]] = None) Optional[Dict[str, str]]
Regularly parses the key-value pairs of a certain section
The function parses uses ConfigParser to parse the section.
- Parameters
- Returns
The result from parsing the section
Note
If ConfigParser is unable to parse the section, then
Noneis returned- Return type
- _processIfTemplate(startInd: int, endInd: int, fileLines: List[str], sectionName: str, srcTxt: str) IfTemplate
Parses a section in the .ini file as an
IfTemplateNote
See
IfTemplateto see how we define an ‘IfTemplate’- Parameters
- Returns
The generated
IfTemplatefrom the section- Return type
- _readLines()
Decorator to read all the lines in the .ini file first before running a certain function
All the file lines will be saved in
IniFile._fileLinesExamples
1@_readLines 2def printLines(self): 3 for line in self._fileLines: 4 print(f"LINE: {line}")
- _removeFix() str
Removes any previous changes that were probably made by this script
For the .ini file will remove:
All code surrounded by the ‘—…— Raiden Boss Fix —…—-’ header/footer
All sections containing the keywords
RemapBlend
- Returns
The new text content of the .ini file with the changes removed
- Return type
- _removeSection(startInd: int, endInd: int, fileLines: List[str], sectionName: str, srcTxt: str) Tuple[int, int]
Retrieves the starting line index and ending line index of where to remove a certain section from the read lines of the .ini file
- Parameters
- Returns
The starting line index and the ending line index of the section to remove
- Return type
- checkRaidenIni(mustBeRaiden: Optional[bool] = None) bool
Reads the entire .ini file and checks whether the .ini file is a Raiden mod that needs to be fixed
Note
If the .ini file has already been parsed (eg. calling
IniFile.checkRaidenIni()orIniFile.parse()), thenyou only need to read the
IniFile._isRaidenIni
- clearRead()
Clears all the saved text read in from the .ini file
- disIni()
Disables the .ini file
Note
For more info, see
FileService.disableFile()
- fillIfTemplate(sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, Union[str, Dict[str, Any]], int, int, str], str], origSectionName: Optional[str] = None) str
Creates a new
IfTemplatefor an existing section in the .ini file- Parameters
ifTemplate (
IfTemplate) – TheIfTemplateof the orginal sectionfillFunc (Callable[[
str, Union[str, Dict[str, Any],int,str,str],str]]) –The function to create a new content part for the new
IfTemplate
Note
For more info about an ‘IfTemplate’, see
IfTemplate
The parameter order for the function is:The new section name
The corresponding content part in the original
IfTemplateThe index for the content part in the original
IfTemplateThe string to prefix every line in the content part of the
IfTemplateThe original name of the section
origSectionName (Optional[
str]) –The original name of the section.
If this argument is set to
None, then will assume this argument has the same value as the argument forsectionName
Default:
None
- Returns
The text for the newly created
IfTemplate- Return type
- fillRemapResource(sectionName: str, part: Dict[str, Any], partIndex: int, linePrefix: str, origSectionName: str)
Creates the content part of an
IfTemplatefor the new sections created by this fix related to the[Resource.*Blend.*]sectionsNote
For more info about an ‘IfTemplate’, see
IfTemplate- Parameters
part (Dict[
str, Any]) – The content part of theIfTemplateof the original[Resource.*Blend.*]sectionpartIndex (
int) – The index of where the content part appears in theIfTemplateof the original sectionlinePrefix (
str) – The text to prefix every line of the created content part
- Returns
The created content part
- Return type
- fillTextureOverrideRemapBlend(sectionName: str, part: Dict[str, Any], partIndex: int, linePrefix: str, origSectionName: str) str
Creates the content part of an
IfTemplatefor the new sections created by this fix related to the[TextureOverride.*Blend.*]sectionsNote
For more info about an ‘IfTemplate’, see
IfTemplate- Parameters
sectionName (
str) – The new name for the sectionpart (Dict[
str, Any]) – The content part of theIfTemplateof the original [TextureOverrideBlend] sectionpartIndex (
int) – The index of where the content part appears in theIfTemplateof the original sectionlinePrefix (
str) – The text to prefix every line of the created content part
- Returns
The created content part
- Return type
- getFileLines() List[str]
Reads each line in the .ini file
- Returns
All the lines of the .ini file
- Return type
List[
str]
Retrieves the footer text used to identify a code section has been changed by this fix in the .ini file
- classmethod getFixHeader() str
Retrieves the header text used to identify a code section has been changed by this fix in the .ini file
- classmethod getFixedBlendFile(blendFile: str) str
Retrieves the file path for the fixed RemapBlend.buf file
- classmethod getMergedResourceIndex(mergedResourceName: str) str
Retrieves the index number of a resource created by GIMI’s
genshin_merge_mods.pyscriptExamples
>>> IniFile.getMergedResourceIndex("ResourceCuteLittleEiBlend.8") 8
- classmethod getRemapName(name: str) str
Changes a section name to have the keyword ‘RemapBlend’ to identify that the section is created by this fix
This function either replace the keyword ‘Blend’ with ‘RemapBlend’ or adds ‘RemapBlend’
Examples
>>> IniFile.getRemapName("EiTriesToUseBlenderAndFails") "EiTriesToUseRemapBlenderAndFails"
>>> IniFile.getRemapName("EiBlendsTheBlender") "EiBlendsTheRemapBlender"
>>> IniFile.getRemapName("ResourceCuteLittleEi") "ResourceCuteLittleEiRemapBlend"
- classmethod getRemapResourceName(name: str) str
Changes the name of a section to be a new resource that this fix will create
Note
See
IniFile.getResourceName()andIniFile.getRemapName()for more info
- classmethod getResourceName(name: str) str
Makes the name of a section to be used for the resource sections of a .ini file
Examples
>>> IniFile.getResourceName("CuteLittleEi") "ResourceCuteLittleEi"
- property isRaidenFixed
Whether the .ini file has already been fixed
- Getter
Returns whether the .ini file has already been fixed
- Type
- property isRaidenIni
Whether the .ini file is a for a Raiden mod
- Getter
Returns whether the .ini file is a for a Raiden mod
- Type
- parse()
Parses the .ini file
- classmethod removeResourceName(name: str) str
Removes the ‘Resource’ prefix from a section’s name
Examples
>>> IniFile.removeResourceName("ResourceCuteLittleEi") "CuteLittleEi"
>>> IniFile.removeResourceName("LittleMissGanyu") "LittleMissGanyu"
- removeSectionOptions(section: Union[str, Pattern, Callable[[str], bool]])
Removes a certain type of section from the .ini file
- write() str
Writes back into the .ini files based off the content in
IniFile._fileLines- Returns
The text that is written to the .ini file
- Return type
IfTemplate
- class IfTemplate(parts: List[Union[str, Dict[str, Any]]], calledSubCommands: Optional[Dict[int, str]] = None)
Data for storing information about a section in a .ini file
Note
Assuming every if/else clause must be on its own line, we have that an
IfTemplatehave a form looking similar to this:1...(does stuff)... 2...(does stuff)... 3if ...(bool)... 4 if ...(bool)... 5 ...(does stuff)... 6 else if ...(bool)... 7 ...(does stuff)... 8 endif 9else ...(bool)... 10 if ...(bool)... 11 if ...(bool)... 12 ...(does stuff)... 13 endif 14 endif 15endif 16...(does stuff)... 17...(does stuff)...
We split the above structure into parts where each part is either:
An If Part: a single line containing the keywords “if”, “else” or “endif”
ORA Content Part: a group of lines that “does stuff”
Note that: an
ifTemplatedoes not need to contain any parts containing the keywords “if”, “else” or “endif”. This case covers the scenario when the user does not use if..else statements for a particular sectionBased on the above assumptions, we can assume that every
[section]in a .ini file contains thisIfTemplateSupported Operations:
- for element in x
Iterates over all the parts of the
IfTemplate,x
- x[num]
Retrieves the part from the
IfTemplate,x, at indexnum
- x[num] = newPart
Sets the part at index
numof theIfTemplate,x, to have the value ofnewPart
- Parameters
parts (List[Union[
str, Dict[str, Any]]]) – The individual parts of how we divided anIfTemplatedescribed abovecalledSubCommands (Optional[Dict[
int,str]]) –Any other sections that this
IfTemplatereferences
The keys are the indices to the part in theIfTemplatethat the section is called
Default:
None
- parts
The individual parts of how we divided an
IfTemplatedescribed above
- calledSubCommands
Any other sections that this
IfTemplatereferences
The keys are the indices to the part in theIfTemplatethat the section is called
- add(part: Union[str, Dict[str, Any]])
Adds a part to the
ifTemplate- Parameters
part (Union[
str, Dict[str, Any]]) – The part to add to theIfTemplate
- find(pred: Optional[Callable[[Union[str, Dict[str, Any]]], bool]] = None, postProcessor: Optional[Callable[[Union[str, Dict[str, Any]]], Any]] = None) Dict[int, Any]
Searches the
IfTemplatefor parts that meet a certain condition- Parameters
pred (Optional[Callable[[Union[
str, Dict[str, Any]]],bool]]) –The predicate used to filter the parts
If this value is
None, then this function will return all the parts
Default:
NonepostProcessor (Optional[Callable[[Union[
str, Dict[str, Any]]], Any]]) –A function that performs any post-processing on the found part that meets the required condition
Default:
None
Model
Models
- class Model(logger: Optional[Logger] = None)
Generic class used for any data models in the fix
- Parameters
logger (Optional[
Logger]) –The logger used to print messages to the console
Default:
None
RemapBlendModel
- class RemapBlendModel(iniFolderPath: str, fixedBlendName: str, fixedBlendPaths: Dict[int, str], origBlendName: Optional[str] = None, origBlendPaths: Optional[Dict[int, str]] = None)
Contains data for fixing a particular resource in a .ini file
- Parameters
iniFolderPath (
str) – The folder path to where the .ini file of the resource is locatedfixedBlendName (
str) – The new name of the resource once all the Blend.buf files for the resource has been fixedfixedBlendPaths (Dict[
int,str]) – The file paths to the fixed RemapBlend.buf files for the resource
The keys are the indices that the Blend.buf file appears in theIfTemplatefor some resourceorigBlendName (Optional[
str]) –The original name of the resource in the .ini file
Default:
NoneorigBlendPaths (Optional[Dict[
int,str]]) –The file paths to the Blend.buf files for the resource
The keys are the indices that the Blend.buf file appears in theIfTemplatefor some resource
Default:
None
- fixedBlendName
The new name of the resource once all the Blend.buf files for the resource has been fixed
- Type
- fixedBlendPaths
The file paths to the fixed RemapBlend.buf files for the resource
The keys are the indices that the Blend.buf file appears in theIfTemplatefor the resource
- origBlendPaths
The file paths to the Blend.buf files for the resource
The keys are the indices that the Blend.buf file appears in the
IfTemplatefor the resource
- fullPaths
The absolute paths to the fixed RemapBlend.buf files for the resource
The keys are the indices that the Blend.buf file appears in the
IfTemplatefor the resource
- origFullPaths
The absolute paths to the Blend.buf files for the resource
The keys are the indices that the Blend.buf file appears in the
IfTemplatefor the resource
Views
Logger
- clsLogger.getBulletStr
- clsLogger.getNumberedStr
- clsLogger.getWarnStr
- def_addLogTxt
- def_setDefaultHeadingAtts
- defbox
- defbulletPoint
- defcloseHeading
- deferror
- defgetStr
- defhandleException
- definput
- deflist
- deflog
- defnote
- defopenHeading
- defspace
- defsplit
- defwaitExit
- defwarn
- class Logger(prefix: str = '', logTxt: bool = False, verbose: bool = True)
Class for pretty printing output to display on the console
- Parameters
- _headingSideLen
The number of characters used to make side border of an opening/closing heading
- Type
- _addLogTxt(txt: str)
Appends the text to the logged output to be printed to a .txt file
- Parameters
txt (
str) – The text to be added onto the logged output
- _setDefaultHeadingAtts()
Sets the default attributes for printing out a header line
- box(message: str, header: str)
Prints the message to be sandwiched by the text defined in the argument,
header
- bulletPoint(txt: str)
Prints out an item in an unordered list
- Parameters
txt (
str) – The message we want to print out
- closeHeading()
Prints out a closing heading that corresponds to a previous opening heading printed
- error(message: str)
Prints an error message
- Parameters
message (
str) – The message we want to print out
- handleException(exception: BaseException)
Prints the message for an error
- Parameters
exception (
BaseException) – The error we want to handle
- list(lst: List[str], transform: Optional[Callable[[str], str]] = None)
Prints out an ordered list
- Parameters
- log(message: str)
Regularly prints text onto the console
- Parameters
message (
str) – The message we want to print out
- note(message: str)
Prints an important note that the user should take note of
- Parameters
message (
str) – The message we want to print out
- property prefix
The line of text that is printed before any message is printed out
- Getter
Returns such a prefix
- Setter
Sets up such a prefix for the logger
- Type
- space()
Prints out a space
- split()
Prints out a new line
- waitExit()
Prints the message used when the script finishes running
Utilities
FileService
- clsFileService.absPathOfRelPath
- clsFileService.changeExt
- clsFileService.disableFile
- clsFileService.getFiles
- clsFileService.getFilesAndDirs
- clsFileService.getRelPath
- clsFileService.getSingleFiles
- clsFileService.isFile
- clsFileService.ntPathToPosix
- clsFileService.parseOSPath
- clsFileService.read
- clsFileService.rename
- class FileService
Tools for handling with files and folders
- classmethod absPathOfRelPath(dstPath: str, relFolder: str) str
Retrieves the absolute path of the relative path of a file with respect to a certain folder
- classmethod disableFile(file: str, filePrefix: str = 'DISABLED_RSFixBackup_')
Marks a file as ‘DISABLED’ and changes the file to a .txt file
- classmethod getFiles(path: Optional[str] = None, filters: List[Callable[[str], bool]] = [], files: Optional[List[str]] = None) Union[List[str], List[List[str]]]
Retrieves many different types of files within a folder
- Parameters
path (Optional[
str]) –The path to the target folder we are working with. If this value is set to
None, then will use the current directory of where this module is loaded
Default:
Nonefilters (List[Callable[[
str],bool]]) –Different filter functions for each type of file we are trying to get
Default: []
files (Optional[List[
str]]) –The files contained in the target folder
If this value is set to
None, then the function will search for the files
Default:
None
- Returns
The files partitioned into the different types specified by the filters
If ‘filters’ only has 1 element, then the function returns List[
str] Otherwise, will return List[List[str]]- Return type
- classmethod getFilesAndDirs(path: Optional[str] = None, recursive: bool = False) List[List[str]]
Retrieves the files and folders contained in a certain folder
- Parameters
- Returns
The files and directories within the folder. The order for the result is:
files
folders
- Return type
- classmethod getRelPath(path: str, start: str) str
Tries to get the relative path of a file/folder relative to another folder, if possible.
If it is not possible to get the relative path, will return back the original file path
Note
An example where it would not be possible to get the relative path would be:
If the file is located in one mount (eg. C:/ drive) and the folder is located in another mount (eg. D:/ drive)
- classmethod getSingleFiles(path: Optional[str] = None, filters: Dict[str, Callable[[str], bool]] = {}, files: Optional[List[str]] = None, optional: bool = False) Union[str, None, List[str], List[Optional[str]]]
Retrieves exactly 1 of each type of file in a folder
- Parameters
path (Optional[
str]) –The path to the target folder we are searching.
If this value is set to
None, then will use the current directory of where this module is loaded
Default:
Nonefilters (Dict[str, Callable[[
str],bool]]) –Different filter functions for each type of file we are trying to get.
The keys are the names for the file type
Default: {}
files (Optional[List[
str]]) –The files contained in the target folder
If this value is set to
None, then the function will search for the files
Default:
Noneoptional (
bool) –Whether we want to send an exception if there is not exactly 1 file for a certain type of file
If this value is
Falseand there are no files for a certain type of file, then will raise aMissingFileExceptionIf this value is
Falseand there are more than 1 file for a certain type of file, then will raise aDuplicateFileExceptionIf this value is
Trueand there are no files for a certain type of file, then the file for that type of file will beNoneIf this value is
Trueand there are more than 1 file for a certain type of file, then will retrieve the first file for that type of file
Default:
False
- Raises
MissingFileException – if
optionalis set toFalseand there are not files for a certain type of fileDuplicateFileException – if
optionalis set toFalseand there are more than 1 file for a certain type of file
- Returns
The files partitioned for each type of file
- Return type
- classmethod ntPathToPosix(path: str) str
Converts a file path from the ntpath library to a file path for the os library
Note
The character for the folder paths (
/or\) used in both libraries may be different depending on the OS
- classmethod parseOSPath(path: str)
Retrieves a normalized file path from a string
- Parameters
path (
str) – The string containing some sort of file path
- classmethod read(file: str, fileCode: str, postProcessor: Callable[[TextIoWrapper], Any]) Any
Tries to read a file using different file encodings
Will interact with the file using the following order of encodings:
utf-8
latin1
- Parameters
file (
str) – The file we are trying to read fromfileCode (
str) – What file mode to interact with the file (eg. r, rb, r+, etc…)postProcessor (Callable[[TextIoWrapper], Any]) – A function used to process the file pointer of the opened file
- Returns
The result after processing the file pointer of the opened file
- Return type
Any
ListTools
- class ListTools
Tools for handling with lists
- classmethod getDistinct(lst: List[T]) List[T]
Retrieves a list with distinct values
- Parameters
lst (List[T]) – The list that we are working with
- Returns
A list where all values are distinct
- Return type
List[T]
- classmethod to_dict(lst: List[T], get_id: Callable[[T], Hashable]) Dict[Hashable, T]
Turns a list into a dictionary
- Parameters
lst (List[T]) – The list that we want to turn into a dictionary
get_id (Callable[[T], Hashable]) – The function for generating ids for the list
- Returns
The transformed dictionary from the list
- Return type
Dict[Hashable, T]
DictTools
- class DictTools
Tools for handling with Dictionaries
- classmethod combine(dst: Dict[Hashable, Any], src: Dict[Hashable, Any], combineDuplicate: Optional[Callable[[Any, Any], Any]] = None)
Combines 2 dictionaries
- Parameters
dst (Dict[Hashable, Any]) – The destination of where we want the combined dictionaries to be stored
src (Dict[Hashable, Any]) – The that we want to combine values with
combineDuplicate (Optional[Callable[[Any, Any], Any]]) –
Function for handling cases where there contains the same key in both dictionaries
If this value is set to
None, then will use the key from ‘dst’
Default:
None
Exceptions
Error
- defwarn
- class Error(message: str)
The base exception used by this module
- Parameters
message (
str) – the error message to print out
- warn()
Retrieves the warning message for the exception
FileException
- defwarn
- class FileException(message: str, path: Optional[str] = None)
This Class inherits from
ErrorExceptions relating to files
- Parameters
- warn()
Retrieves the warning message for the exception
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
DuplicateFileException
- defwarn
- class DuplicateFileException(files: List[str], fileType: str = 'file', path: Optional[str] = None)
This Class inherits from
FileExceptionException when there are multiple files of the same type in a folder
- Parameters
files (List[
str]) – The files that triggered the exceptionfileType (
str) –The name for the type of files
Default: “file”
path (Optional[
str]) –The path to the folder where the files are located If this value is
None, then the path will be the current directory where this module is loaded
Default:
None
- warn()
Retrieves the warning message for the exception
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
MissingFileException
- defwarn
- class MissingFileException(fileType: str = 'file', path: Optional[str] = None)
This Class inherits from
FileExceptionException when a certain type of file is missing from a folder
- Parameters
- warn()
Retrieves the warning message for the exception
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
BlendFileNotRecognized
- defwarn
- class BlendFileNotRecognized(blendFile: str)
This Class inherits from
FileExceptionException when a Blend.buf file cannot be read
- Parameters
blendFile (
str) – The file path to the Blend.buf file
- warn()
Retrieves the warning message for the exception
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.
ConflictingOptions
- defwarn
- class ConflictingOptions(options: List[str])
This Class inherits from
ErrorException when the script or
RaidenBossFixServiceis ran with options that cannot be used together- Parameters
options (List[
str]) – The options that cannot be used together
- warn()
Retrieves the warning message for the exception
- with_traceback()
Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.