API Reference



Mod Fix


RemapService

class RemapService(path: str | None = None, keepBackups: bool = True, fixOnly: bool = False, undoOnly: bool = False, hideOrig: bool = False, readAllInis: bool = False, types: List[str] | None = None, defaultType: str | None = None, forcedType: str | None = None, log: str | None = None, verbose: bool = True, handleExceptions: bool = False, version: str | None = None, remappedTypes: List[str] | None = None, proxy: str | None = None, downloadMode: str | None = None)

The overall class for remapping 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: None

  • keepBackups (bool) –

    Whether to keep backup versions of any .ini files that the script fixes

    Default: True

  • fixOnly (bool) –

    Whether to only fix the mods without removing any previous changes this fix script may have made

    Warning

    if this is set to True and undoOnly is also set to True, then the fix will not run and will throw a ConflictingOptions exception


    Default: False

  • undoOnly (bool) –

    Whether to only undo the fixes previously made by the fix

    Warning

    if this is set to True and fixOnly is also set to True, then the fix will not run and will throw a ConflictingOptions exception


    Default: True

  • hideOrig (bool) –

    Whether to not show the mod on the original character

    Default: False

  • readAllInis (bool) –

    Whether to read all the .ini files that the fix encounters

    Default: False

  • types (Optional[List[str]]) –

    The names for all the types of mods to fix.

    If this argument is an empty list or this argument is None, then will fix all the types of mods supported by this fix

    Default: None


    Note

    For more information about the available mod names/aliases to reference, see Mod Types

  • remappedTypes (Optional[List[str]]) –

    The names for the types of mods to be remapped based from the types of mods specified at RemapService.types.

    For a mod specified at RemapService.types, if none of its corresponding mods to remap are specified in this attribute, then will remap the mod specified at RemapService.types to all its corresponding mods to remap.

    If this argument is an empty list or this argument is None, then will fix the mods specified at types to all of their corresponding remapped mods

    eg. if RemapService.types is ["Kequeen", "jean"] and this attribute is ["jeanSea"], then this class will perform the following remaps:

    • Keqing –> KeqingOpulent

    • Jean –> JeanSea

    **Note: ** Jean –> JeanCN will not be remapped for the above example

    Note

    For more information about the available mod names/aliases to reference, see Mod Types



    Default: None

  • defaultType (Optional[str]) –

    The name for the type to use if a mod has an unidentified type

    If this value is None, then mods with unidentified types will be skipped

    Note

    For more information about the available mod names/aliases to reference, see Mod Types



    Default: None

  • forcedType (Optional[str]) –

    The mod type to forcibly assume for the parsed .ini files

    Note

    For more information about the available mod names/aliases to reference, see Mod Types



    Default: None

  • log (Optional[str]) –

    The folder location to log the run of the fix into a seperate text file

    If this value is None, then will not log the fix

    Default: None

  • verbose (bool) –

    Whether to print the progress for fixing mods

    Default: True

  • handleExceptions (bool) –

    When an exception is caught, whether to silently stop running the fix

    Default: False

  • version (Optional[str]) –

    The game version we want the fix to be compatible with

    If This value is None, then will retrieve the hashes/indices of the latest version.

    Default: None

  • proxy (Optional[str]) –

    The link to the proxy server used for any internet network requests made

    If this value is None, then will assume all internet network requests do not require the need to go through a proxy server.

  • downloadMode (Optional[str]) –

    The download mode to handle file downloads

    If this value is None, then the software will default to use DownloadMode.HardTexDriven as the download mode

    Note

    For more information about the available download modes to specify, see Download Modes



    Default: None

_loggerBasePrefix

The prefix string for the logger used when the fix returns back to the original directory that it started to run

Type:

str

logger

The logger used to pretty print messages

Type:

Logger

_path

The file location of where to run the fix.

Type:

str

keepBackups

Whether to keep backup versions of any .ini files that the script fixes

Type:

bool

fixOnly

Whether to only fix the mods without removing any previous changes this fix script may have made

Type:

bool

undoOnly

Whether to only undo the fixes previously made by the fix

Type:

bool

hideOrig

Whether to not show the mod on the original character

Type:

bool

readAllInis

Whether to read all the .ini files that the fix encounters

Type:

bool

types

All the types of mods that will be fixed.

Note

For more information about the available mod names/aliases to reference, see Mod Types

Type:

Set[ModType]

remappedTypes

The names for the types of mods to be remapped based from the types of mods specified at RemapService.types.

For a mod specified at RemapService.types, if none of its corresponding mods to remap are specified in this attribute, then will remap the mod specified at RemapService.types to all its corresponding mods to remap.

If this argument is an empty list or this argument is None, then will fix the mods specified at RemapService.types to all of their corresponding remapped mods

eg. if RemapService.types is ["Kequeen", "jean"] and this attribute is ["jeanSea"], then this class will perform the following remaps:

  • Keqing –> KeqingOpulent

  • Jean –> JeanSea

**Note: ** Jean –> JeanCN will not be remapped for the above example

Note

For more information about the available mod names/aliases to reference, see Mod Types

Type:

Set[str]

defaultType

The type to use if a mod has an unidentified type

Note

For more information about the available mod names/aliases to reference, see Mod Types

Type:

Optional[ModType]

forcedType

The mod type to forcibly assume for the parsed .ini files

Note

For more information about the available mod names/aliases to reference, see Mod Types

Type:

Optional[ModType]

version

The game version we want the fix to be compatible with

If This value is None, then will retrieve the hashes/indices of the latest version.

Type:

Optional[packaging.version.Version]

downloadMode

The download mode to handle file downloads

Note

For more information about the available download modes to specify, see Download Modes

Type:

DownloadMode

handleExceptions

When an exception is caught, whether to silently stop running the fix

Type:

bool

_logFile

The file path of where to generate a log .txt file

Type:

str

_pathIsCWD

Whether the filepath that the program runs from is the current directory where this module is loaded

Type:

bool

stats

The statistics gathered about the fix process

Type:

RemapStats

_fix()

The overall logic for fixing a bunch of mods

For finding out which folders may contain mods, this function:
  1. recursively searches all folders from where the RemapService.path is located

  2. for 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

Tip

For more info about how we define a ‘mod’, go to Mod

_printModsToFix()

Prints out the types of mods that will be fixed

_setupDefaultModType()

Sets the default mod type to be used for an unidentified mod

_setupDownloadMode()

Sets the download mode the software will use for file downloads

_setupForcedModType()

Sets the forced mod type to assume for the .ini files

_setupLogPath()

Sets the folder path for where the log file will be stored

_setupModPath()

Sets the filepath of where the fix will run from

_setupModTypes(attr: str)

Sets the types of mods that will be fixed / fix to

Parameters:

attr (str) – The name of the attribute within this class set the mods for

_setupRemappedTypes()

Sets the names for the types of mods that will be fixed to

_setupToFixModTypes()

Sets the names for the type of mods that will be fixed

_setupVersion()

Sets the game version to fix to

addTips()

Prints out any useful tips for the user to know

clear(clearLog: bool = True)

Clears up all the saved data

Paramters

clearLog: bool

Whether to also clear out any saved data in the logger

createLog()

Creates a log text file that contains all the text printed on the command line

createMod(path: str | None = None, files: List[str] | None = None) Mod

Creates a mod

Tip

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 loaded

  • files (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:

Mod

fix()

Fixes a bunch of mods

see _fix() for more info

fixIni(ini: IniFile, mod: Mod, flushIfTemplates: bool = True) bool

Fixes an individual .ini file for a particular mod

Tip

For more info about how we define a ‘mod’, go to Mod

Parameters:
  • ini (IniFile) – The .ini file to fix

  • mod (Mod) – The mod being fixed

  • flushIfTemplates (bool) –

    Whether to re-parse the IfTemplates`s in the .ini files instead of using the saved cached values :raw-html:`

    Default: True

Returns:

Whether the particular .ini file has just been fixed

Return type:

bool

fixMod(mod: Mod, flushIfTemplates: bool = True) bool

Fixes a particular mod

Tip

For more info about how we define a ‘mod’, go to Mod

Parameters:
  • mod (Mod) – The mod being fixed

  • flushIfTemplates (bool) –

    Whether to re-parse the IfTemplates`s in the .ini files instead of using the saved cached values :raw-html:`

    Default: True

Returns:

Whether the particular mod has just been fixed

Return type:

bool

property log: str

The folder location to log the run of the fix into a seperate text file

Getter:

Returns the file path to the log

Setter:

Sets the path for the log

Type:

str

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:

str

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:

bool

property proxy: str | None

The link to the proxy server used for any internet network requests made

If this value is None, then will assume all internet network requests do not require the need to go through a proxy server.

Getter:

Retrieves the proxy link

Setter:

Sets the new proxy link

Type:

Optional[str]

reportSkippedAsset(assetName: str, assetDict: Dict[str, Exception], 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 skipped

  • assetDict (Dict[str, Exception]) –

    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

reportSkippedMods()

Prints out all of the mods that were skipped due to exceptions

Tip

For more info about how we define a ‘mod’, go to Mod

property verbose: bool

Whether to print the progress for fixing mods

Getter:

Tells whether progress will be printed when fixing mods

Setter:

Sets the new flag for whether to print progress

Type:

bool

warnSkippedIniResource(modPath: str, stats: FileStats)

Prints out all of the resource files from the .ini files that were skipped due to exceptions

Parameters:

modPath (str) – The absolute path to a particular folder


Mod

class Mod(path: str | None = None, files: List[str] | None = None, logger: Logger | None = None, types: Set[ModType] | None = None, forcedType: ModType | None = None, defaultType: ModType | None = None, version: str | float | Version | None = None, remappedTypes: Set[str] | None = None, downloadMode: DownloadMode = DownloadMode.HardTexDriven)

This Class inherits from Model

Used 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.*Blend] if RemapService.readAllInis is set to True or the script is ran with the --all flag

      OR

    • a section that meets the criteria of one of the mod types defined Mod._types by running the mod types’ ModType.isType() function


See ModTypes for some predefined types of mods

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: None

  • files (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: None

  • logger (Optional[Logger]) –

    The logger used to pretty print messages

    Default: None

  • types (Optional[Set[ModType]]) –

    The types of mods this mod should be.

    If this argument is empty or is None, then all the .ini files in this mod will be parsed

    Default: None

  • remappedTypes (Optional[Set[ModType]]) –

    The types of mods to the mods specified at Mod._types will be fixed to.

    Note

    For more details, see RemapService.remappedTypes

    Default: None

  • defaultType (Optional[ModType]) –

    The type of mod to use if a mod has an unidentified type

    If this argument is None, then will skip the mod with an identified type

    Default: None

  • forcedType (Optional[ModType]) –

    The type of mod to forcibly assume for some .ini file

    Default: None

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version we want the fixed mod

    If This value is None, then will fix the mod to using the latest hashes/indices.

  • downloadMode (DownloadMode) –

    The download mode to handle file downloads

    Note

    For more information about the available download modes to specify, see Download Modes



    Default: DownloadMode.Normal

path

The file location to the mod folder

Type:

Optional[str]

version

The game version we want the fixed mod

Type:

Optional[packaging.version.Version]

downloadMode

The download mode to handle file downloads

Note

For more information about the available download modes to specify, see Download Modes



Default: DownloadMode.SoftTexDriven

Type:

DownloadMode

_files

The direct children files to the mod folder (does not include files located in a folder within the mod folder).

Type:

List[str]

_types

The types of mods this mod should be

Type:

Set[ModType]

_remappedType

The types of mods to the mods specified at Mod.types will be fixed to.

Note

For more details, see RemapService.remappedTypes

Type:

Set[str]

_defaultType

The type of mod to use if a mod has an unidentified type

Type:

Optional[ModType]

_forcedType

The type of mod to forcibly assume for some .ini file

Type:

Optional[ModType]

logger

The logger used to pretty print messages

Type:

Optional[Logger]

inis

The .ini files found for the mod

The keys are the file paths to the .ini file

Type:

Dict[str, IniFile]

remapBlend

The RemapBlend.buf files found for the mod

Type:

List[str]

backupInis

The RemapBKUP.txt files found for the mod

Type:

List[str]

remapCopies

The remapFix.ini files found for the mod

The keys are the file paths to the .ini file

Type:

Dict[str, IniFile]

remapTextures

The remapFix.dds files found for the mod

Type:

List[str]

_removeIniResources(ini: IniFile, result: Set[str], resourceName: str, resourceStats: FileStats, getPathsToRemove: Callable[[IniFile], List[str]]) bool

Removes a particular type of resource from a .ini file

Parameters:
  • ini (IniFile) – The particular .ini file to be processed

  • result (Set[str]) – The resultant paths to the resources that got removed

  • resourceName (str) – The name of the type of resource

  • resourceStats (FileStats) – The associated statistical data for the resource type

  • getPathsToRemove (Callable[[IniFile], List[str]]) – The function to file paths to remove for a particular type of resource

Returns:

Whether there was a file that was attempted to be removed

Return type:

bool

_setupFiles()

Searches the direct children files to the mod folder if Mod.files is set to None

classmethod blendCorrection(blendFile: str | bytes, modType: ModType, modToFix: str, fixedBlendFile: str | None = None, version: str | float | Version | None = None, remapMissingIndices: bool = True) str | None | bytearray

Fixes a Blend.buf file

See BlendFile.remap() for more info

Parameters:
  • blendFile (Union[str, bytes]) – The file path to the Blend.buf file to fix

  • modType (ModType) – The type of mod to fix from

  • modToFix (str) – The name of the mod to fix to

  • fixedBlendFile (Optional[str]) –

    The file path for the fixed Blend.buf file

    Default: None

  • version (Optional[Union[str, float, VersionType]]) –

    The game version to fix to

    If this value is None, then will fix to the latest game version

    Default: None

  • remapMissingIndices (bool) –

    Whether to deactivate any missing blend indices that cannot be identified

    Default: True

Raises:
  • BufFileNotRecognized – If the original Blend.buf file provided by the parameter blendFile cannot be read

  • BadBufData – If the bytes passed into this function do not correspond to the format defined for a Blend.buf file

Returns:

If the argument fixedBlendFile is None, then will return an array of bytes for the fixed Blend.buf file

Otherwise will return the filename to the fixed RemapBlend.buf file if the provided Blend.buf file got corrected

Return type:

Union[Optional[str], bytearray]

correctBlend(blendStats: FileStats, iniPaths: List[str] | None = None, fixOnly: bool = False) List[Set[str] | Dict[str, Exception]]

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:
  • blendStats (FileStats) – The stats to keep track of whether the particular the blend.buf files have been fixed or skipped

  • iniPaths (Optional[List[str]]) –

    The file paths to the .ini file to have their blend.buf files corrected. If this value is None, then will correct all the .ini file in the mod

    Default: None

  • fixOnly (bool) –

    Whether to not correct some Blend.buf file if its corresponding RemapBlend.buf already exists

    Default: True

Returns:

  1. The absolute file paths of the RemapBlend.buf files that were fixed

  2. The exceptions encountered when trying to fix some RemapBlend.buf files

The keys are absolute filepath to the RemapBlend.buf file and the values are the exception encountered

Return type:

[Set[str], Dict[str, Exception]]

correctPosition(positionStats: FileStats, iniPaths: List[str] | None = None, fixOnly: bool = False) List[Set[str] | Dict[str, Exception]]

Fixes all the Position.buf files reference by the mod

Requires all the .ini files in the mod to have ran their IniFile.parse() function

Parameters:
  • positionStats (FileStats) – The stats to keep track of whether the particular the Position.buf files have been fixed or skipped

  • iniPaths (Optional[List[str]]) –

    The file paths to the .ini file to have their Position.buf files corrected. If this value is None, then will correct all the .ini file in the mod

    Default: None

  • fixOnly (bool) –

    Whether to not correct some Position.buf file if its corresponding RemapPosition.buf already exists

    Default: True

Returns:

  1. The absolute file paths of the RemapPosition.buf files that were fixed

  2. The exceptions encountered when trying to fix some RemapPosition.buf files

The keys are absolute filepath to the RemapPosition.buf file and the values are the exception encountered

Return type:

[Set[str], Dict[str, Exception]]

correctResource(resourceStats: FileStats, getResourceModels: Callable[[IniFile], List[IniFixResourceModel]], correctFile: Callable[[str, str, ModType, str, int, int, int, IniFixResourceModel, FileStats], str], iniPaths: List[str] | None = None, fileTypeName: str = '', needsSrcFile: bool = True, fixOnly: bool = False, newTranslations: Dict[str, Callable[[List[str]], Any]] | None = None) List[Set[str] | Dict[str, Exception]]

Fixes all the files for a particular type of resource referenced by the mod

Requires all the .ini files in the mod to have ran their IniFile.parse() function

Parameters:
  • resourceStats (FileStats) – The stats to keep track of whether the particular resource has been fixed or skipped

  • getResourceModels (Callable[[IniFile], List[IniFixResourceModel]]) – Function to retrieve all of the needed IniFixResourceModel from some .ini file

  • correctFile (Callable[[str, str, ModType, str, int, int, int, IniFixResourceModel, FileStats], str]) –

    Function to fix up the resource file

    The parameters for the function are as follows:

    1. The full file path to the original resource

    2. The fixed file path to the resource

    3. The type of mod being fixed within the .ini file

    4. The name of the mod to fix to

    5. The index of the part within the IfTemplate

    6. The index of the path within the particular part of the IfTemplate

    7. The version of the game to fix to

    8. The current IniFixResourceModel being processed

    9. The stats for the particular resource



    The function returns a str with the fixed file path to the resource

  • iniPaths (Optional[List[str]]) –

    The file paths to the .ini file to have their resources corrected. If this value is None, then will correct all the .ini file in the mod

    Default: None

  • fileTypeName (str) – The name of the file resource

  • fixOnly (bool) –

    Whether to not correct some resource file if its corresponding fixed resource file already exists

    Default: False

  • newTranslations (Optional[Dict[str, Callable[[…], Any]]]) –

    Event handlers to print output based on some event.

    The keys are the names of the events and the values are the handlers.

    The argument supports the following event handlers:

    Event Name

    Parameters

    Description

    missingOrig

    origFullPath: str
    The full path to the source file to fix

    When the source file to fix is not found

    origAlreadyError

    origFullPath: str
    The full path to the source file to fix

    When the source file to fix had already encountered an error

    fixedAlreadyFixed

    fixedFullPath: str
    The full path to the fixed file

    When the file to fix has already been fixed

    fixedAlreadyExists

    fixedFullPath: str
    The full path to the fixed file

    When the file to fix has already encountered an error

    noCorrectionNeeded

    origFullPath: str
    The full path to the source file to fix

    When no correction is needed to be done

    correctionDone

    fixedFullPath: str
    The full path to the fixed file

    When the correction has been done to the fixed file

    onIniFirstCorrection

    fixedFullPath: str
    The full path to the fixed file

    When handling the first file for a particular .ini file

    handleError

    error: Exception
    The error that occured when trying to fix some resource

    When an error occurs during the correction of a file

    iniSpace

    iniPath: str
    The path to the .ini file

    When printing out a seperator between .ini files

Returns:

  1. The absolute file paths of the fixed resource files that were fixed

  2. The exceptions encountered when trying to fix some fixed resource files

    The keys are absolute filepath to the fixed resource file and the values are the exception encountered

Return type:

[Set[str], Dict[str, Exception]]

correctTex(texAddStats: FileStats, texEditStats: FileStats, iniPaths: List[str] | None = None, fixOnly: bool = False) List[Set[str] | Dict[str, Exception]]

Fixes all the texture .dds files reference by the mods

Requires all the .ini files in the mod to have ran their IniFile.fix() function

Parameters:
  • texAddStats (FileStats) – The stats to keep track of whether the particular .dds file have been newly created or skipped

  • texEditStats (FileStats) – The stats to keep track of whether the particular .dds file has been editted or skipped

  • iniPaths (Optional[List[str]]) –

    The file paths to the .ini file to have their .dds files corrected. If this value is None, then will correct all the .ini file in the mod

    Default: None

  • fixOnly (bool) –

    Whether to not correct some .dds file if its corresponding RemapTex.dds already exists

    Default: True

Returns:

  1. The absolute file paths of the .dds files that were added

  2. The exceptions encountered when trying to created some .dds files

  3. The absolute file paths of the .dds files that were editted

  4. The exceptions encountered when trying to edit some .dds files

For the exceptions, the keys are absolute filepath to the .dds file and the values are the exception encountered

Return type:

[Set[str], Dict[str, Exception], Set[str], Dict[str, Exception]]

createIniFile(iniPath: str) IniFile

Creates a new .ini file given the file path

Parameters:

iniPath (str) – The file path to the .ini file

Returns:

The new object representing the .ini file

Return type:

IniFile

downloadFiles(downloadStats: CachedFileStats, iniPaths: List[str] | None = None, fixOnly: bool = False, proxy: str | None = None) List[Set[str] | Dict[str, Exception]]

Downloads the necessary files for a mod

Requires all the .ini files in the mod to have ran their IniFile.parse() function

Parameters:
  • downloadStats (CachedFileStats) – The stats to keep track of the downloads

  • iniPaths (Optional[List[str]]) –

    The file paths to the .ini file to have downloads required. If this value is None, then will download files from all the .ini files in the mod

    Default: None

  • fixOnly (bool) –

    Whether to not download a file if the corresponding downloaded file already exists

    Default: True

Returns:

  1. The absolute file paths of the downloaded files

  2. The exceptions encountered when trying to download some files

The keys are absolute filepath to the download file and the values are the exception encountered

Return type:

[Set[str], Dict[str, Exception]]

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[List[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):

  1. .ini files not created by this fix

  2. RemapBKUP.txt files

  3. RemapFix.ini files

Note

See Mod.isIni(), Mod.isBackupIni(), Mod.isRemapCopyIni() for the specifics of each type of file

Return type:

[ List[str], List[str], List[str]]

getOrigIniPath(remapCopyPath: str) str

Retrieves the file path to the original .ini file for some RemapFix.ini file

Parameters:

remapCopyPath (str) – The file path to the RemapFix.ini file

Returns:

The file path to the corresponding .ini file

Return type:

str

handleSrcFiles(resourceStats: FileStats, getResourceModels: Callable[[IniFile], List[IniSrcResourceModel]], handleFile: Callable[[str, str, ModType, str, int, int, int, IniFixResourceModel, FileStats], str], iniPaths: List[str] | None = None, fileTypeName: str = '', fixOnly: bool = False, newTranslations: Dict[str, Callable[[List[str]], Any]] | None = None) List[Set[str] | Dict[str, Exception]]

Downloads the required files for the mod

Parameters:
  • resourceStats (FileStats) – The stats to keep track of a particular resource

  • getResourceModels (Callable[[IniFile], List[IniSrcResourceModel]]) – Function to retrieve all of the needed IniSrcResourceModel from some .ini file

  • handleFile (Callable[[str, ModType, int, int, int, IniFixResourceModel, FileStats], str]) –

    Function to handle the resource file

    The parameters for the function are as follows:

    1. The full file path to the resource

    2. The type of mod being fixed within the .ini files

    3. The index of the part within the IfTemplate

    4. The index of the path within the particular part of the IfTemplate

    5. The version of the game to fix to

    6. The current IniSrcResourceModel being processed

    7. The stats for the particular resource



    The function returns a str with the fixed file path to the resource

  • iniPaths (Optional[List[str]]) –

    The file paths to the .ini file to have files downloaded. If this value is None, then will download files from all the .ini file in the mod

    Default: None

  • fileTypeName (str) – The name of the file resource

  • fixOnly (bool) –

    Whether to not correct some resource file if its corresponding fixed resource file already exists

    Default: False

  • newTranslations (Optional[Dict[str, Callable[[…], Any]]]) –

    Event handlers to print output based on some event.

    The keys are the names of the events and the values are the handlers.

    The argument supports the following event handlers:

    Event Name

    Parameters

    Description

    alreadyHandled

    fullPath: str
    The full path to the file to handle

    When some file has already been handled

    alreadyError

    fullPath: str
    The full path to the file to handle

    When some file already encountered an error

    alreadyExists

    fullPath: str
    The full path to the file to handle

    When some file already exists

    handled

    fullPath: str
    The full path to the file to handle

    When some file has already been handled

    skipped

    fullPath: str
    The full path to the file to handle

    When skipping the handling of some file

    correctionDone

    fullPath: str
    The full path to the file to handle

    When the correction has been done to the fixed file

    onIniFirstCorrection

    fullPath: str
    The full path to the file to handle

    When handling the first file for a particular .ini file

    handleError

    error: Exception
    The error that occured when trying to fix some resource

    When an error occurs during the correction of a file

    iniSpace

    iniPath: str
    The path to the .ini file

    When printing out a seperator between .ini files

Returns:

  1. The absolute file paths of the files that were handled

  2. The exceptions encountered when trying to handle some file

    The keys are expected absolute filepath to the downloaded file and the values are the exception encountered

Return type:

[Set[str], Dict[str, Exception]]

classmethod isBackupIni(file: str) bool

Determines whether the file is a RemapBKUP.txt file that is used to make backup copies of .ini files

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a RemapBKUP.txt file

Return type:

bool

classmethod isBlend(file: str) bool

Determines whether the file is a Blend.buf file which is the original blend file provided in the mod

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a Blend.buf file

Return type:

bool

classmethod isIni(file: str) bool

Determines whether the file is a .ini file which is the file used to control how a mod behaves

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a .ini file

Return type:

bool

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

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a RemapBlend.buf file

Return type:

bool

classmethod isRemapCopyIni(file: str) bool

Determines whether the file is RemapFix.ini file which are .ini files generated by this fix to remap specific type of mods

*eg. mods such as Keqing or Jean that are fixed by GIMIObjMergeFixer *

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a RemapFix.ini file

Return type:

bool

classmethod isRemapTexture(file: str) bool

Determines whether the file is a RemapTex.dds file which are texture .dds files generated by this fix to edit a particular texture file for some specific type of mods

*eg. mods such as Kirara or Nilou that are fixed by GIMIRegEditFixer *

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a RemapTex.dds file

Return type:

bool

classmethod isSrcIni(file: str) bool

Determines whether the file is a .ini file that is not created by this fix

Parameters:

file (str) – The file path to check

Returns:

Whether the passed in file is a .ini file not created by this fix

Return type:

bool

classmethod positionCorrection(positionFile: str | bytes, modType: ModType, modToFix: str, fixedPositionFile: str | None = None, version: str | float | Version | None = None) str | None | bytearray

Fixes a Position.buf file

Parameters:
  • positionFile (Union[str, bytes]) – The file path to the Position.buf file to fix

  • modType (ModType) – The type of mod to fix from

  • modToFix (str) – The name of the mod to fix to

  • fixedPositionFile (Optional[str]) –

    The file path for the fixed Position.buf file

    Default: None

  • version (Optional[Union[str, float, VersionType]]) –

    The game version to fix to

    If this value is None, then will fix to the latest game version

    Default: None

Raises:
  • BufFileNotRecognized – If the original Position.buf file provided by the parameter positionFile cannot be read

  • BadBufData – If the bytes passed into this function do not correspond to the format defined for a Position.buf file

Returns:

If the argument fixedPositionFile is None, then will return an array of bytes for the fixed Position.buf file

Otherwise will return the filename to the fixed RemapPosition.buf file if the provided Position.buf file got corrected

Return type:

Union[Optional[str], bytearray]

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any

removeBackupInis()

Removes all RemapBKUP.txt contained in the mod

removeFix(remapStats: RemapStats, keepBackups: bool = True, fixOnly: bool = False, readAllInis: bool = False, writeBackInis: bool = True) List[Set[str]]

Removes any previous changes done by this module’s fix

Parameters:
  • remapStats (RemapStats) – The stats for the remap process

  • keepBackups (bool) –

    Whether to create or keep RemapBKUP.txt files in the mod

    Default: True

  • fixOnly (bool) –

    Whether to not undo any changes created in the .ini files

    Default: False

  • readAllInis (bool) –

    Whether to remove the .ini fix from all the .ini files encountered

    Default: False

  • writeBackInis (bool) –

    Whether to write back the changes to the .ini files

    Default: True

Returns:

The removed files that have their fix removed, where the types of files for the return value is based on the list below:

  1. .ini files with their fix removed

  2. RemapBlend.buf files that got deleted

  3. RemapPosition.buf files that got deleted

  4. RemapTex.dds files that got deleted

  5. Download files that got deleted

Return type:

[Set[str], Set[str], Set[str], Set[str], Set[str]]

classmethod texCorrection(fixedTexFile: str, texEditor: BaseTexEditor, texFile: str | None = None) str | None

Fixes a .dds file

Parameters:
  • fixedTexFile (str) – The name of the file path to the fixed RemapTex.dds file

  • texEditor (BaseTexEditor) – The texture editor to change the texture file

:param texFile Optional[str]: The file path to the original texture .dds file

If this value is None, then will use ‘fixedTexFile’ as the original file path to the texture .dds file (usually this case for creating a brand new .dds file by also passing in object of type TexCreator into the ‘texEditor’ argument)

Default: None

Returns:

The file path to the fixed texture, if the original texture exists

Return type:

Optional[str]


ModType

class ModType(name: str, hashes: Hashes | None = None, indices: Indices | None = None, vertexCounts: VertexCounts | None = None, aliases: List[str] | None = None, vgRemaps: VGRemaps | None = None, positionEditors: PositionEditors | None = None, iniParseBuilder: IniParseBuilder | None = None, iniFixBuilder: IniFixBuilder | None = None, iniRemoveBuilder: IniRemoveBuilder | None = None)

Class for defining a generic type of mod

Parameters:
  • name (str) – The default name for the type of mod

  • hashes (Optional[Hashes]) –

    The hashes related to the mod and its fix

    If this value is None, then will create a new, empty Hashes

    Default: None

  • indices (Optional[Indices]) –

    The indices related to the mod and its fix

    If this None, then will create a new, emtpy Indices

    Default: None

  • aliases (Optional[List[str]]) –

    Other alternative names for the type of mod

    Default: None

  • vgRemaps (Optional[VGRemaps]) –

    Maps the blend indices from the vertex group of one mod to another mod

    If this value is None, then will create a new, empty VGRemaps

    Default: None

  • positionEditors (Optional[PositionEditors]) –

    The editors used for fixing position.buf files

    If this None, then will create a new, emtpy PositionEditors

    Default: None

  • iniParseBuilder (Optional[IniParseBuilder]) –

    The builder to build the parser used for .ini files

    If this value is None, then by default this attribute will be set to IniParseBuilder(:class:`GIMIParser`)

    Default: None

  • iniFixBuilder (Optional[IniFixBuilder]) –

    The builder to build the fixer used for .ini files

    If this value is None, then by default this attribute will be set to IniFixBuilder(:class:`GIMIFixer`)

    Default: None

  • iniRemoveBuilder (Optional[IniRemoveBuilder]) –

    The builder to build the remover used for .ini files

    If this value is None, then by default this attribute will be set to IniRemoveBuilder(:class:`IniRemover`)

    Default: None

name

The default name for the type of mod

Type:

str

hashes

The hashes related to the mod and its fix

Type:

Hashes

indices

The indices related to the mod and its fix

Type:

Indices

vertexCounts

The vertex counts related to the mod and its fix

Type:

VertexCounts

vgRemaps

The repository that stores the mapping for remapping vertex group blend indices of the mod to the vertex group blend indices of another mod

Type:

VGRemaps

positionEditors

The editors used for fixing position.buf files

Type:

PositionEditors

aliases

Other alternative names for the type of mod

Type:

Optional[List[str]]

iniParseBuilder

The builder to build the parser used for .ini files

Type:

IniParseBuilder

iniFixBuilder

the builder to build the fixer used for .ini files

Type:

IniFixBuilder

iniRemoveBuilder

the builder to build the remover used for .ini files

Type:

IniRemoveBuilder

fixIni(iniFile: IniFile, keepBackup: bool = True, fixOnly: bool = False)

Fixes the .ini file associated to this type of mod

Parameters:
  • iniFile (IniFile) – The .ini file to fix

  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

getModsToFix() Set[str]

Retrieves the names of the mods this mod type will fix to

Returns:

The names of the mods to fix to

Return type:

Set[str]

getPositionEditor(modName: str, version: str | float | Version | None = None) BaseBufEditor | None

Retrieves the corresponding position editor for editting position.buf files

Attention

This function assumes that the specified map positionEditors (PositionEditors.map) contains name (the name of this mod type) as a mod to map from

Parameters:
  • modName (str) – The name of the mod to map to

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The specific game version we want for the remap

    If this value is None, then will get the latest version of the remap

    Default: None

Returns:

The corresponding position editor

Return type:

Optional[BaseBufEditor]

getVGRemap(modName: str, version: str | float | Version | None = None) VGRemap

Retrieves the corresponding Vertex Group Remap

Attention

This function assumes that the specified map vgRemaps (VGRemaps.map) contains name (the name of this mod type) as a mod to map from

Parameters:
  • modName (str) – The name of the mod to map to

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The specific game version we want for the remap

    If this value is None, then will get the latest version of the remap

    Default: None

Returns:

The corresponding remap

Return type:

VGRemap

getVertexCount(version: str | float | Version | None = None) int

Retrieves the number of vertices for a mod

Attention

This function assumes that the specified dictionary vertexCounts (VertexCounts.map) contains name (the name of this mod type) as a mod to get the vertex count for

Parameters:

version (Optional[Union[str, float, packaging.version.Version]]) –

The specific game version we want for the vertex count

If this value is None, then will get the latest version of the vertex count

Default: None

Returns:

The number of vertices for the mod

Return type:

int

isName(name: str) bool

Determines whether a certain name matches with the names defined for this type of mod

Parameters:

name (str) – The name being searched

Returns:

Whether the searched name matches with the names for this type of mod

Return type:

bool


ModTypeBuilder

class ModTypeBuilder

Class to create a new ModType for different mods


GIBuilder

class GIBuilder

This Class inherits from ModTypeBuilder

Creates new ModType objects for some anime game

classmethod amber() ModType

Creates the ModType for Amber

Returns:

The resultant ModType

Return type:

ModType

classmethod amberCN() ModType

Creates the ModType for AmberCN

Returns:

The resultant ModType

Return type:

ModType

classmethod arlecchino() ModType

Creates the ModType for Arlecchino

Returns:

The resultant ModType

Return type:

ModType

classmethod ayaka() ModType

Creates the ModType for Ayaka

Returns:

The resultant ModType

Return type:

ModType

classmethod ayakaSpringBloom() ModType

Creates the ModType for AyakaSpringBloom

Returns:

The resultant ModType

Return type:

ModType

classmethod barbara() ModType

Creates the ModType for Barbara

Returns:

The resultant ModType

Return type:

ModType

classmethod barbaraSummerTime() ModType

Creates the ModType for BarbaraSummerTime

Returns:

The resultant ModType

Return type:

ModType

classmethod cherryHutao() ModType

Creates the ModType for CherryHuTao

Returns:

The resultant ModType

Return type:

ModType

classmethod diluc() ModType

Creates the ModType for Diluc

Returns:

The resultant ModType

Return type:

ModType

classmethod dilucFlamme() ModType

Creates the ModType for DilucFlamme

Returns:

The resultant ModType

Return type:

ModType

classmethod fischl() ModType

Creates the ModType for Fischl

Returns:

The resultant ModType

Return type:

ModType

classmethod fischlHighness() ModType

Creates the ModType for FischlHighness

Returns:

The resultant ModType

Return type:

ModType

classmethod ganyu() ModType

Creates the ModType for Ganyu

Returns:

The resultant ModType

Return type:

ModType

classmethod ganyuTwilight() ModType

Creates the ModType for GanyuTwilight

Returns:

The resultant ModType

Return type:

ModType

classmethod huTao() ModType

Creates the ModType for HuTao

Returns:

The resultant ModType

Return type:

ModType

classmethod jean() ModType

Creates the ModType for Jean

Returns:

The resultant ModType

Return type:

ModType

classmethod jeanCN() ModType

Creates the ModType for JeanCN

Returns:

The resultant ModType

Return type:

ModType

classmethod jeanSea() ModType

Creates the ModType for JeanSea

Returns:

The resultant ModType

Return type:

ModType

classmethod kaeya() ModType

Creates the ModType for Kaeya

Returns:

The resultant ModType

Return type:

ModType

classmethod kaeyaSailwind() ModType

Creates the ModType for KaeyaSailwind

Returns:

The resultant ModType

Return type:

ModType

classmethod keqing() ModType

Creates the ModType for Keqing

Returns:

The resultant ModType

Return type:

ModType

classmethod keqingOpulent() ModType

Creates the ModType for KeqingOpulent

Returns:

The resultant ModType

Return type:

ModType

classmethod kirara() ModType

Creates the ModType for Kirara

Returns:

The resultant ModType

Return type:

ModType

classmethod kiraraBoots() ModType

Creates the ModType for KiraraBoots

Returns:

The resultant ModType

Return type:

ModType

classmethod klee() ModType

Creates the ModType for Klee

Returns:

The resultant ModType

Return type:

ModType

classmethod kleeBlossomingStarlight() ModType

Creates the ModType for KleeBlossomingStarlight

Returns:

The resultant ModType

Return type:

ModType

classmethod lisa() ModType

Creates the ModType for Lisa

Returns:

The resultant ModType

Return type:

ModType

classmethod lisaStudent() ModType

Creates the ModType for LisaStudent

Returns:

The resultant ModType

Return type:

ModType

classmethod mona() ModType

Creates the ModType for Mona

Returns:

The resultant ModType

Return type:

ModType

classmethod monaCN() ModType

Creates the ModType for MonaCN

Returns:

The resultant ModType

Return type:

ModType

classmethod nilou() ModType

Creates the ModType for Nilou

Returns:

The resultant ModType

Return type:

ModType

classmethod nilouBreeze() ModType

Creates the ModType for NilouBreeze

Returns:

The resultant ModType

Return type:

ModType

classmethod ningguang() ModType

Creates the ModType for Ningguang

Returns:

The resultant ModType

Return type:

ModType

classmethod ningguangOrchid() ModType

Creates the ModType for Ningguang

Returns:

The resultant ModType

Return type:

ModType

classmethod raiden() ModType

Creates the ModType for Ei

Returns:

The resultant ModType

Return type:

ModType

classmethod rosaria() ModType

Creates the ModType for Rosaria

Returns:

The resultant ModType

Return type:

ModType

classmethod rosariaCN() ModType

Creates the ModType for RosariaCN

Returns:

The resultant ModType

Return type:

ModType

classmethod shenhe() ModType

Creates the ModType for Shenhe

Returns:

The resultant ModType

Return type:

ModType

classmethod shenheFrostFlower() ModType

Creates the ModType for ShenheFrostFlower

Returns:

The resultant ModType

Return type:

ModType

classmethod xiangling() ModType

Creates the ModType for Xiangling

Returns:

The resultant ModType

Return type:

ModType

classmethod xianglingCheer() ModType

Creates the ModType for XianglingCheer

Returns:

The resultant ModType

Return type:

ModType

classmethod xingqiu() ModType

Creates the ModType for Xingqiu

Returns:

The resultant ModType

Return type:

ModType

classmethod xingqiuBamboo() ModType

Creates the ModType for XingqiuBamboo

Returns:

The resultant ModType

Return type:

ModType


ModAssets

class ModAssets(repo: Dict[float, Dict[str, T]])

Class to handle assets of any type for a mod

Parameters:

repo (Dict[float, Dict[str, T]]) –

The original source for any preset assets

  • The outer key is the game version number for the assets

  • The inner key is the name of the asset

  • The inner value is the content for the asset

repo

The original source for any preset assets

  • The outer key is the game version number for the assets

  • The inner key is the name of the asset

  • The inner value is the content for the asset

Type:

Dict[float, Dict[str, T]]

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_updateAssetContent(srcAsset: T, newAsset: T) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


ModDictAssets

class ModDictAssets(repo: Dict[float, Dict[str, T]])

This class inherits from ModAssets

Class to handle assets of any type for a mod where retrieval is based on some key

Note

This is a dictionary that retrieves a certain asset for some game version

Parameters:

repo (Dict[float, Dict[str, T]]) –

The original source for any preset assets

  • The outer key is the game version number for the assets

  • The inner key is the name of the asset

  • The inner value is the content for the asset

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_updateAssetContent(srcAsset: T, newAsset: T) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

get(assetName: str, version: float | None = None) T

Retrieves the corresponding asset

Parameters:
  • assetName (str) – The name of the assets we want

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

T

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


ModDoubleDictAssets

class ModDoubleDictAssets(repo: Dict[float, Dict[str, Dict[str, T]]], map: Dict[str, Set[str]] | None = None)

This class inherits from ModMappedAssets

Class to handle retrieval of assets requiring 2 keys:

  • Assets to fix from

  • Assets to fix to

Note

This is a nested dictionary that retrieves a certain asset from:

  • The assets to fix from

  • The assets to fix to

  • The version of the game

Parameters:
  • repo (Dict[float, Dict[str, Dict[str, T]]]) –

    The original source for any preset assets

    • The outer key is the game version number for the assets

    • The inner key is the name of the asset

    • The inner value is the content for the asset

  • map (Optional[Dict[str, Set[str]]]) –

    The adjacency list that maps the assets to fix from to the assets to fix to using the predefined mods

    Default: None

_addVersion(fromAsset: str, toAsset: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_partition(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Any]]) Tuple[Dict[str, Set[str]], Set[str], Set[str]]
  • Creates the bipartition for the assets to fix from vs the assets to fix to

  • Filters the mapping such that all the asset names in the new mapping exist in assets

Parameters:
  • map (Dict[str, Set[str]]) – The desired mapping for the assets for fixing

  • assets (Dict[float, Dict[str, Any]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The following output is in the same order as listed below:

  1. The new mapping with all asset names being in assets

  2. The names of the assets to fix from

  3. The names of the assets to fix to

Return type:

Tuple[Dict[str, Set[str]], Set[str], Set[str]]

_updateAssetContent(asset1: Dict[str, T], asset2: Dict[str, T]) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

_updateVersions(assets: Dict[float, Dict[str, Dict[str, VGRemap]]])

Updates the versioning of the assets

Parameters:

assets (T) – The assets for checking the versioning

addMap(assetMap: Dict[str, Set[str]], assets: Dict[float, Dict[str, T]] | None = None)

Adds a new map to the existing map on how to retrieve the assets

Parameters:
  • assetMap (Dict[str, Set[str]]) – The new adjacency list used to map assets to fix from to assets to fix to

  • assets (Optional[T]) –

    Any new assets that needs to be added/updated to the existing assets to support the given map

    Default: None

addMapping(fromAsset: str, toAssets: Set[str], assets: Any)

Adds a new mapping of how to fix the assets

Parameters:
  • fromAsset (str) – The name of the asset to fix from

  • toAssets (Set[str]) – The names of the assets to fix to

  • assets (Any) – Any new assets that needs to be added/updated to the existing assets to support the new mapping

clear(flush: bool = True, clearMap: bool = False)

Clears all the assets

Parameters:
  • flush (bool) –

    Whether to flush out (reload) any cached data

    Default: False

  • clearMap (bool) –

    Whether to clear out the mapping for the assets

    Default: False

clearCache()

Clears out any cached data

findClosestVersion(fromAsset: str, toAsset: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • fromAsset (str) – The name of the asset to map from

  • toAsset (str) – The name of the asset to map to

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

property fixFrom: Set[str]

The names of the assets to fix from using the predefined mods

Getter:

Retrieves the names of assets used to fix from

Type:

Set[str]

property fixTo: Set[str]

The names of the assets to fix to using the predefined mods

Getter:

Retrives the names of assets to fix to

Type:

Set[str]

get(fromAsset: str, toAsset: str, version: float | None = None) str

Retrieves the corresponding vertex group remap

Parameters:
  • fromAsset (str) – The name of the asset to map from

  • toAsset (str) – The name of the asset to map to

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version we want the remap to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

str

loadFromPreset()

Reinitializes to load the predefined mods

property map: Dict[str, Set[str]]

The adjacency list used to map assets to fix from to assets to fix to

Getter:

Retrieves the adjacency list

Setter:

Sets a new adjacency list

Type:

Dict[str, Set[str]]

classmethod updateMap(srcMap: Dict[str, Set[str]], newMap: Dict[str, Set[str]]) Dict[str, Set[str]]

Combines 2 maps together

Parameters:
  • srcMap (Dict[str, Set[str]]) – The map to be updates

  • newMap (Dict[str, Set[str]]) – The new map to update srcMap

Returns:

The updated map

Return type:

Dict[str, Set[str]]

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The outer keys are the names of the assets to map from

  • The inner keys are the names of the assets to map to

  • The inner values are versions for the assets

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Dict[str, Version]]


ModMappedAssets

class ModMappedAssets(repo: Dict[float, Dict[str, T]], map: Dict[str, Set[str]] | None = None)

This class inherits from ModAssets

Class to handle assets of any type where asset retrieval is based on a mapping

Note

This is a bipartite graph that maps assets to fix from to assets to fix to

Parameters:
  • repo (Dict[float, Dict[str, T]]) –

    The original source for any preset assets

    • The outer key is the game version number for the assets

    • The inner key is the name of the asset

    • The inner value is the content for the asset

  • map (Optional[Dict[str, Set[str]]]) –

    The adjacency list that maps the assets to fix from to the assets to fix to using the predefined mods

    Default: None

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_partition(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Any]]) Tuple[Dict[str, Set[str]], Set[str], Set[str]]
  • Creates the bipartition for the assets to fix from vs the assets to fix to

  • Filters the mapping such that all the asset names in the new mapping exist in assets

Parameters:
  • map (Dict[str, Set[str]]) – The desired mapping for the assets for fixing

  • assets (Dict[float, Dict[str, Any]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The following output is in the same order as listed below:

  1. The new mapping with all asset names being in assets

  2. The names of the assets to fix from

  3. The names of the assets to fix to

Return type:

Tuple[Dict[str, Set[str]], Set[str], Set[str]]

_updateAssetContent(srcAsset: T, newAsset: T) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

_updateVersions(assets: Dict[float, Dict[str, T]])

Updates the versioning of the assets

Parameters:

assets (T) – The assets for checking the versioning

addMap(assetMap: Dict[str, Set[str]], assets: Dict[float, Dict[str, T]] | None = None)

Adds a new map to the existing map on how to retrieve the assets

Parameters:
  • assetMap (Dict[str, Set[str]]) – The new adjacency list used to map assets to fix from to assets to fix to

  • assets (Optional[T]) –

    Any new assets that needs to be added/updated to the existing assets to support the given map

    Default: None

addMapping(fromAsset: str, toAssets: Set[str], assets: Any)

Adds a new mapping of how to fix the assets

Parameters:
  • fromAsset (str) – The name of the asset to fix from

  • toAssets (Set[str]) – The names of the assets to fix to

  • assets (Any) – Any new assets that needs to be added/updated to the existing assets to support the new mapping

clear(flush: bool = True, clearMap: bool = False)

Clears all the assets

Parameters:
  • flush (bool) –

    Whether to flush out (reload) any cached data

    Default: False

  • clearMap (bool) –

    Whether to clear out the mapping for the assets

    Default: False

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

property fixFrom: Set[str]

The names of the assets to fix from using the predefined mods

Getter:

Retrieves the names of assets used to fix from

Type:

Set[str]

property fixTo: Set[str]

The names of the assets to fix to using the predefined mods

Getter:

Retrives the names of assets to fix to

Type:

Set[str]

loadFromPreset()

Reinitializes to load the predefined mods

property map: Dict[str, Set[str]]

The adjacency list used to map assets to fix from to assets to fix to

Getter:

Retrieves the adjacency list

Setter:

Sets a new adjacency list

Type:

Dict[str, Set[str]]

classmethod updateMap(srcMap: Dict[str, Set[str]], newMap: Dict[str, Set[str]]) Dict[str, Set[str]]

Combines 2 maps together

Parameters:
  • srcMap (Dict[str, Set[str]]) – The map to be updates

  • newMap (Dict[str, Set[str]]) – The new map to update srcMap

Returns:

The updated map

Return type:

Dict[str, Set[str]]

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


ModIdAssets

class ModIdAssets(repo: Dict[float, Dict[str, Dict[str, str]]], map: Dict[str, Set[str]] | None = None)

This class inherits from ModMappedAssets

Class to handle hashes, indices, and other string id type assets for a mod

Parameters:
  • repo (Dict[float, Dict[str, Dict[str, str]]]) –

    The original source for any preset assets

    • The outer key is the game version of the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset

    Note

    The id value for each asset should be unique

  • map (Optional[Dict[str, Set[str]]]) –

    The adjacency list that maps the assets to fix from to the assets to fix to using the predefined mods

    Default: None

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

classmethod _getFromAssets(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Dict[str, str]]]) Dict[str, Tuple[Set[str], str]]

Retrieves the assets to fix from

Parameters:
  • map (Dict[str, Set[str]]) – The mapping for fixing the assets

  • assets (Dict[float, Dict[str, Dict[str, str]]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The assets to fix from

  • The keys are the ids for the asset

  • The values contains metadata about the assets to fix to where each tuple contains:

    # The names of the assets # The type of asset

Return type:

Dict[str, Tuple[Set[str], str]]

_getToAssets(assetNames: Set[str], assets: Dict[float, Dict[str, Dict[str, str]]]) Dict[float, Dict[str, Dict[str, str]]]

Retrieves the assets to fix to

Parameters:
  • assetNames (Set[str]) – The names of the assets to fix to

  • assets (Dict[float, Dict[str, Dict[str, str]]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The assets to fix to

  • The outer key is the game version number for the assets

  • The first inner key is the name of the asset

  • The second inner key is the type of asset

  • The most inner value is the id for the asset (must be unique)

Return type:

Dict[float, Dict[str, Dict[str, str]]]

_partition(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Any]]) Tuple[Dict[str, Set[str]], Set[str], Set[str]]
  • Creates the bipartition for the assets to fix from vs the assets to fix to

  • Filters the mapping such that all the asset names in the new mapping exist in assets

Parameters:
  • map (Dict[str, Set[str]]) – The desired mapping for the assets for fixing

  • assets (Dict[float, Dict[str, Any]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The following output is in the same order as listed below:

  1. The new mapping with all asset names being in assets

  2. The names of the assets to fix from

  3. The names of the assets to fix to

Return type:

Tuple[Dict[str, Set[str]], Set[str], Set[str]]

_updateAssetContent(srcAsset: Dict[str, str], newAsset: Dict[str, str]) Dict[str, str]

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

_updateVersions(assets: Dict[float, Dict[str, T]])

Updates the versioning of the assets

Parameters:

assets (T) – The assets for checking the versioning

addMap(assetMap: Dict[str, Set[str]], assets: Dict[float, Dict[str, Dict[str, str]]] | None = None)

Adds a new map to the existing map on how to retrieve the assets

Parameters:
  • assetMap (Dict[str, Set[str]]) – The new adjacency list used to map assets to fix from to assets to fix to

  • assets (Optional[T]) –

    Any new assets that needs to be added/updated to the existing assets to support the given map

    Default: None

addMapping(fromAsset: str, toAssets: Set[str], assets: Any)

Adds a new mapping of how to fix the assets

Parameters:
  • fromAsset (str) – The name of the asset to fix from

  • toAssets (Set[str]) – The names of the assets to fix to

  • assets (Any) – Any new assets that needs to be added/updated to the existing assets to support the new mapping

clear(flush: bool = True, clearMap: bool = False)

Clears all the assets

Parameters:
  • flush (bool) –

    Whether to flush out (reload) any cached data

    Default: False

  • clearMap (bool) –

    Whether to clear out the mapping for the assets

    Default: False

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

property fixFrom: Set[str]

The names of the assets to fix from using the predefined mods

Getter:

Retrieves the names of assets used to fix from

Type:

Set[str]

property fixTo: Set[str]

The names of the assets to fix to using the predefined mods

Getter:

Retrives the names of assets to fix to

Type:

Set[str]

property fromAssets: Dict[str, Tuple[Set[str], str]]

The assets to fix from

  • The keys are the ids for the asset

  • The values contains metadata about the assets to fix to where each tuple contains:

    # The names of the assets # The type of asset

Getter:

Returns the assets needed to be fixed

Type:

Dict[str, Tuple[Set[str], str]]

get(assetName: str, assetType: str, version: float | None = None) str

Retrieves the corresponding id asset from ModStrAssets._toAssets

Parameters:
  • assetName (str) – The name of the assets we want

  • assetType (str) – The name of the type of asset we want.

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

str

loadFromPreset()

Reinitializes to load the predefined mods

property map: Dict[str, Set[str]]

The adjacency list used to map assets to fix from to assets to fix to

Getter:

Retrieves the adjacency list

Setter:

Sets a new adjacency list

Type:

Dict[str, Set[str]]

replace(fromAsset: str, version: float | None = None, toAssets: str | Set[str] | None = None) str | None | Dict[str, str]

Retrieves the corresponding asset to replace ‘fromAsset’

Parameters:
  • fromAsset (str) – The asset to be replaced

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

  • toAssets (Optional[Union[str, Set[str]]]) – The assets to used for replacement

Returns:

The corresponding assets for the fix to replace, if available

The result is a string if the passed in parameter ‘toAssets’ is also a string

Otherwise, the result is a dictionary such that:

  • The keys are the names of the assets

  • The values are the corresponding asset ids to replace

Return type:

Union[str, Dict[str, str]]

property toAssets: Dict[float, Dict[str, Dict[str, str]]]



  • The outer key is the game version number for the assets

  • The first inner key is the name of the assets

  • The most inner key is the type of asset

  • The most inner value is the id for the asset

Getter:

Returns the new assets that will replace the old assets

Type:

Dict[float, Dict[str, Dict[str, str]]]

Type:

The assets to fix to

classmethod updateMap(srcMap: Dict[str, Set[str]], newMap: Dict[str, Set[str]]) Dict[str, Set[str]]

Combines 2 maps together

Parameters:
  • srcMap (Dict[str, Set[str]]) – The map to be updates

  • newMap (Dict[str, Set[str]]) – The new map to update srcMap

Returns:

The updated map

Return type:

Dict[str, Set[str]]

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


VGRemap

Attributes
class VGRemap(vgRemap: Dict[int, int])

Class for handling the vertex group remaps for mods

Parameters:

vgRemap (Dict[int, int]) – The vertex group remap from one type of mod to another

property maxIndex

The maximum index in the vertex group remap

Getter:

Retrieves the max index

Type:

int

property remap

The vertex group remap

Getter:

Retrieves the remap

Setter:

Sets a new remap

Type:

Dict[int, int]


VGRemaps

class VGRemaps(repo: Dict[str | float | Version, Dict[str, Dict[str, VGRemap]]] | None = None, map: Dict[str, Set[str]] | None = None)

This class inherits from ModMappedAssets

Class to handle Vertex Group Remaps fsor a mod

Parameters:
  • repo (Optional[Dict[Union[str, float, packaging.version.Version], Dict[str, Dict[str, VGRemap]]]]) –

    The original source for the vertex group remaps

    • The outer key is the game version number for the assets

    • The second outer key is the name of the asset to fix from

    • The inner key is the name of the asset to fix to

    • The inner value contains the vertex group remap

    If this value is None, will use the default vertex group remaps provided by the software

    Default: None

  • map (Optional[Dict[str, Set[str]]]) –

    The adjacency list that maps the assets to fix from to the assets to fix to using the predefined mods

    Default: None

_addVersion(fromAsset: str, toAsset: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_partition(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Any]]) Tuple[Dict[str, Set[str]], Set[str], Set[str]]
  • Creates the bipartition for the assets to fix from vs the assets to fix to

  • Filters the mapping such that all the asset names in the new mapping exist in assets

Parameters:
  • map (Dict[str, Set[str]]) – The desired mapping for the assets for fixing

  • assets (Dict[float, Dict[str, Any]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The following output is in the same order as listed below:

  1. The new mapping with all asset names being in assets

  2. The names of the assets to fix from

  3. The names of the assets to fix to

Return type:

Tuple[Dict[str, Set[str]], Set[str], Set[str]]

_updateAssetContent(asset1: Dict[str, T], asset2: Dict[str, T]) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

_updateVersions(assets: Dict[float, Dict[str, Dict[str, VGRemap]]])

Updates the versioning of the assets

Parameters:

assets (T) – The assets for checking the versioning

addMap(assetMap: Dict[str, Set[str]], assets: Dict[float, Dict[str, T]] | None = None)

Adds a new map to the existing map on how to retrieve the assets

Parameters:
  • assetMap (Dict[str, Set[str]]) – The new adjacency list used to map assets to fix from to assets to fix to

  • assets (Optional[T]) –

    Any new assets that needs to be added/updated to the existing assets to support the given map

    Default: None

addMapping(fromAsset: str, toAssets: Set[str], assets: Any)

Adds a new mapping of how to fix the assets

Parameters:
  • fromAsset (str) – The name of the asset to fix from

  • toAssets (Set[str]) – The names of the assets to fix to

  • assets (Any) – Any new assets that needs to be added/updated to the existing assets to support the new mapping

clear(flush: bool = True, clearMap: bool = False)

Clears all the assets

Parameters:
  • flush (bool) –

    Whether to flush out (reload) any cached data

    Default: False

  • clearMap (bool) –

    Whether to clear out the mapping for the assets

    Default: False

clearCache()

Clears out any cached data

findClosestVersion(fromAsset: str, toAsset: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • fromAsset (str) – The name of the asset to map from

  • toAsset (str) – The name of the asset to map to

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

property fixFrom: Set[str]

The names of the assets to fix from using the predefined mods

Getter:

Retrieves the names of assets used to fix from

Type:

Set[str]

property fixTo: Set[str]

The names of the assets to fix to using the predefined mods

Getter:

Retrives the names of assets to fix to

Type:

Set[str]

get(fromAsset: str, toAsset: str, version: float | None = None) str

Retrieves the corresponding vertex group remap

Parameters:
  • fromAsset (str) – The name of the asset to map from

  • toAsset (str) – The name of the asset to map to

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version we want the remap to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

str

loadFromPreset()

Reinitializes to load the predefined mods

property map: Dict[str, Set[str]]

The adjacency list used to map assets to fix from to assets to fix to

Getter:

Retrieves the adjacency list

Setter:

Sets a new adjacency list

Type:

Dict[str, Set[str]]

classmethod updateMap(srcMap: Dict[str, Set[str]], newMap: Dict[str, Set[str]]) Dict[str, Set[str]]

Combines 2 maps together

Parameters:
  • srcMap (Dict[str, Set[str]]) – The map to be updates

  • newMap (Dict[str, Set[str]]) – The new map to update srcMap

Returns:

The updated map

Return type:

Dict[str, Set[str]]

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The outer keys are the names of the assets to map from

  • The inner keys are the names of the assets to map to

  • The inner values are versions for the assets

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Dict[str, Version]]


IniParseBuilderArgs

class IniParseBuilderArgs(repo: Dict[str, Dict[str, Callable[[], Tuple[BaseIniParser, List[Any], Dict[str, Any]]]]] | None = None)

This class inherits from ModDictAssets

Class for managing functions that create the arguments/keyword arguments for an IniParseBuilder

Parameters:

repo (Optional[Dict[str, Dict[str, Callable[[], Tuple[BaseIniParser , List[Any], Dict[str, Any]]]]]]) –

The original source for any the function that create arguments

  • The outer key is the game version number for the assets

  • The inner key is the name of the asset

  • The inner value contains the functions that create arguments/keyword arguments for an IniParseBuilder

If this value is None, will use the default functions provided by the software

Default: None

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_updateAssetContent(srcAsset: T, newAsset: T) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

get(assetName: str, version: float | None = None) T

Retrieves the corresponding asset

Parameters:
  • assetName (str) – The name of the assets we want

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

T

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


IniFixBuilderArgs

class IniFixBuilderArgs(repo: Dict[str, Dict[str, Callable[[], Tuple[BaseIniFixer, List[Any], Dict[str, Any]]]]] | None = None)

This class inherits from ModDictAssets

Class for managing functions that create arguments/keyword arguments for an IniFixBuilder

Parameters:

repo (Optional[Dict[str, Dict[str, Callable[[], Tuple[BaseIniFixer, List[Any], Dict[str, Any]]]]]]) –

The original source for any the function that create arguments

  • The outer key is the game version number for the assets

  • The inner key is the name of the asset

  • The inner value contains the functions that create arguments/keyword arguments for an IniFixBuilder

If this value is None, will use the default functions provided by the software

Default: None

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

_updateAssetContent(srcAsset: T, newAsset: T) T

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

get(assetName: str, version: float | None = None) T

Retrieves the corresponding asset

Parameters:
  • assetName (str) – The name of the assets we want

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

T

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


Hashes

class Hashes(map: Dict[str, Set[str]] | None = None)

This class inherits from ModDictStrAssets

Class for managing hashes for a mod

Parameters:

map (Optional[Dict[str, Set[str]]]) –

The adjacency list that maps the hashes to fix from to the hashes to fix to using the predefined mods

Default: None

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

classmethod _getFromAssets(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Dict[str, str]]]) Dict[str, Tuple[Set[str], str]]

Retrieves the assets to fix from

Parameters:
  • map (Dict[str, Set[str]]) – The mapping for fixing the assets

  • assets (Dict[float, Dict[str, Dict[str, str]]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The assets to fix from

  • The keys are the ids for the asset

  • The values contains metadata about the assets to fix to where each tuple contains:

    # The names of the assets # The type of asset

Return type:

Dict[str, Tuple[Set[str], str]]

_getToAssets(assetNames: Set[str], assets: Dict[float, Dict[str, Dict[str, str]]]) Dict[float, Dict[str, Dict[str, str]]]

Retrieves the assets to fix to

Parameters:
  • assetNames (Set[str]) – The names of the assets to fix to

  • assets (Dict[float, Dict[str, Dict[str, str]]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The assets to fix to

  • The outer key is the game version number for the assets

  • The first inner key is the name of the asset

  • The second inner key is the type of asset

  • The most inner value is the id for the asset (must be unique)

Return type:

Dict[float, Dict[str, Dict[str, str]]]

_partition(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Any]]) Tuple[Dict[str, Set[str]], Set[str], Set[str]]
  • Creates the bipartition for the assets to fix from vs the assets to fix to

  • Filters the mapping such that all the asset names in the new mapping exist in assets

Parameters:
  • map (Dict[str, Set[str]]) – The desired mapping for the assets for fixing

  • assets (Dict[float, Dict[str, Any]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The following output is in the same order as listed below:

  1. The new mapping with all asset names being in assets

  2. The names of the assets to fix from

  3. The names of the assets to fix to

Return type:

Tuple[Dict[str, Set[str]], Set[str], Set[str]]

_updateAssetContent(srcAsset: Dict[str, str], newAsset: Dict[str, str]) Dict[str, str]

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

_updateVersions(assets: Dict[float, Dict[str, T]])

Updates the versioning of the assets

Parameters:

assets (T) – The assets for checking the versioning

addMap(assetMap: Dict[str, Set[str]], assets: Dict[float, Dict[str, Dict[str, str]]] | None = None)

Adds a new map to the existing map on how to retrieve the assets

Parameters:
  • assetMap (Dict[str, Set[str]]) – The new adjacency list used to map assets to fix from to assets to fix to

  • assets (Optional[T]) –

    Any new assets that needs to be added/updated to the existing assets to support the given map

    Default: None

addMapping(fromAsset: str, toAssets: Set[str], assets: Any)

Adds a new mapping of how to fix the assets

Parameters:
  • fromAsset (str) – The name of the asset to fix from

  • toAssets (Set[str]) – The names of the assets to fix to

  • assets (Any) – Any new assets that needs to be added/updated to the existing assets to support the new mapping

clear(flush: bool = True, clearMap: bool = False)

Clears all the assets

Parameters:
  • flush (bool) –

    Whether to flush out (reload) any cached data

    Default: False

  • clearMap (bool) –

    Whether to clear out the mapping for the assets

    Default: False

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

property fixFrom: Set[str]

The names of the assets to fix from using the predefined mods

Getter:

Retrieves the names of assets used to fix from

Type:

Set[str]

property fixTo: Set[str]

The names of the assets to fix to using the predefined mods

Getter:

Retrives the names of assets to fix to

Type:

Set[str]

property fromAssets: Dict[str, Tuple[Set[str], str]]

The assets to fix from

  • The keys are the ids for the asset

  • The values contains metadata about the assets to fix to where each tuple contains:

    # The names of the assets # The type of asset

Getter:

Returns the assets needed to be fixed

Type:

Dict[str, Tuple[Set[str], str]]

get(assetName: str, assetType: str, version: float | None = None) str

Retrieves the corresponding id asset from ModStrAssets._toAssets

Parameters:
  • assetName (str) – The name of the assets we want

  • assetType (str) – The name of the type of asset we want.

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

str

loadFromPreset()

Reinitializes to load the predefined mods

property map: Dict[str, Set[str]]

The adjacency list used to map assets to fix from to assets to fix to

Getter:

Retrieves the adjacency list

Setter:

Sets a new adjacency list

Type:

Dict[str, Set[str]]

replace(fromAsset: str, version: float | None = None, toAssets: str | Set[str] | None = None) str | None | Dict[str, str]

Retrieves the corresponding asset to replace ‘fromAsset’

Parameters:
  • fromAsset (str) – The asset to be replaced

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

  • toAssets (Optional[Union[str, Set[str]]]) – The assets to used for replacement

Returns:

The corresponding assets for the fix to replace, if available

The result is a string if the passed in parameter ‘toAssets’ is also a string

Otherwise, the result is a dictionary such that:

  • The keys are the names of the assets

  • The values are the corresponding asset ids to replace

Return type:

Union[str, Dict[str, str]]

property toAssets: Dict[float, Dict[str, Dict[str, str]]]



  • The outer key is the game version number for the assets

  • The first inner key is the name of the assets

  • The most inner key is the type of asset

  • The most inner value is the id for the asset

Getter:

Returns the new assets that will replace the old assets

Type:

Dict[float, Dict[str, Dict[str, str]]]

Type:

The assets to fix to

classmethod updateMap(srcMap: Dict[str, Set[str]], newMap: Dict[str, Set[str]]) Dict[str, Set[str]]

Combines 2 maps together

Parameters:
  • srcMap (Dict[str, Set[str]]) – The map to be updates

  • newMap (Dict[str, Set[str]]) – The new map to update srcMap

Returns:

The updated map

Return type:

Dict[str, Set[str]]

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]


Indices

class Indices(map: Dict[str, Set[str]] | None = None)

This class inherits from ModDictStrAssets

Class for managing indices for a mod

Parameters:

map (Optional[Dict[str, Set[str]]]) –

The adjacency list that maps the indices to fix from to the indices to fix to using the predefined mods

Default: None

_addVersion(name: str, version: str | float | Version)

Adds a new version for a particular asset

Parameters:
  • name (str) – The name of the asset

  • version (float) – The game version

classmethod _getFromAssets(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Dict[str, str]]]) Dict[str, Tuple[Set[str], str]]

Retrieves the assets to fix from

Parameters:
  • map (Dict[str, Set[str]]) – The mapping for fixing the assets

  • assets (Dict[float, Dict[str, Dict[str, str]]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The assets to fix from

  • The keys are the ids for the asset

  • The values contains metadata about the assets to fix to where each tuple contains:

    # The names of the assets # The type of asset

Return type:

Dict[str, Tuple[Set[str], str]]

_getToAssets(assetNames: Set[str], assets: Dict[float, Dict[str, Dict[str, str]]]) Dict[float, Dict[str, Dict[str, str]]]

Retrieves the assets to fix to

Parameters:
  • assetNames (Set[str]) – The names of the assets to fix to

  • assets (Dict[float, Dict[str, Dict[str, str]]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The assets to fix to

  • The outer key is the game version number for the assets

  • The first inner key is the name of the asset

  • The second inner key is the type of asset

  • The most inner value is the id for the asset (must be unique)

Return type:

Dict[float, Dict[str, Dict[str, str]]]

_partition(map: Dict[str, Set[str]], assets: Dict[float, Dict[str, Any]]) Tuple[Dict[str, Set[str]], Set[str], Set[str]]
  • Creates the bipartition for the assets to fix from vs the assets to fix to

  • Filters the mapping such that all the asset names in the new mapping exist in assets

Parameters:
  • map (Dict[str, Set[str]]) – The desired mapping for the assets for fixing

  • assets (Dict[float, Dict[str, Any]]) –

    The source for all the assets

    • The outer key is the game version number for the assets

    • The first inner key is the name of the asset

    • The second inner key is the type of asset

    • The most inner value is the id for the asset (must be unique)

Returns:

The following output is in the same order as listed below:

  1. The new mapping with all asset names being in assets

  2. The names of the assets to fix from

  3. The names of the assets to fix to

Return type:

Tuple[Dict[str, Set[str]], Set[str], Set[str]]

_updateAssetContent(srcAsset: Dict[str, str], newAsset: Dict[str, str]) Dict[str, str]

Combines the content of 2 assets

Parameters:
  • srcAsset (T) – The content of the asset to be updates

  • newAsset (T) – The new asset to update into srcAsset

Returns:

The updated asset

Return type:

T

_updateVersions(assets: Dict[float, Dict[str, T]])

Updates the versioning of the assets

Parameters:

assets (T) – The assets for checking the versioning

addMap(assetMap: Dict[str, Set[str]], assets: Dict[float, Dict[str, Dict[str, str]]] | None = None)

Adds a new map to the existing map on how to retrieve the assets

Parameters:
  • assetMap (Dict[str, Set[str]]) – The new adjacency list used to map assets to fix from to assets to fix to

  • assets (Optional[T]) –

    Any new assets that needs to be added/updated to the existing assets to support the given map

    Default: None

addMapping(fromAsset: str, toAssets: Set[str], assets: Any)

Adds a new mapping of how to fix the assets

Parameters:
  • fromAsset (str) – The name of the asset to fix from

  • toAssets (Set[str]) – The names of the assets to fix to

  • assets (Any) – Any new assets that needs to be added/updated to the existing assets to support the new mapping

clear(flush: bool = True, clearMap: bool = False)

Clears all the assets

Parameters:
  • flush (bool) –

    Whether to flush out (reload) any cached data

    Default: False

  • clearMap (bool) –

    Whether to clear out the mapping for the assets

    Default: False

clearCache()

Clears out any cached data

findClosestVersion(name: str, version: str | float | Version | None = None, fromCache: bool = True) Version

Finds the closest available game version from ModStrAssets._toAssets for a particular asset

Parameters:
  • name (str) – The name of the asset to search

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version to be searched

    If This value is None, then will assume we want the latest version

    Default: None

  • fromCache (bool) –

    Whether to use the result from the cache

    Default: None

Raises:

KeyError – The name for the particular asset is not found

Returns:

The latest game version from the assets that corresponds to the desired version

Return type:

packaging.version.Version

property fixFrom: Set[str]

The names of the assets to fix from using the predefined mods

Getter:

Retrieves the names of assets used to fix from

Type:

Set[str]

property fixTo: Set[str]

The names of the assets to fix to using the predefined mods

Getter:

Retrives the names of assets to fix to

Type:

Set[str]

property fromAssets: Dict[str, Tuple[Set[str], str]]

The assets to fix from

  • The keys are the ids for the asset

  • The values contains metadata about the assets to fix to where each tuple contains:

    # The names of the assets # The type of asset

Getter:

Returns the assets needed to be fixed

Type:

Dict[str, Tuple[Set[str], str]]

get(assetName: str, assetType: str, version: float | None = None) str

Retrieves the corresponding id asset from ModStrAssets._toAssets

Parameters:
  • assetName (str) – The name of the assets we want

  • assetType (str) – The name of the type of asset we want.

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

Raises:

KeyError – If the corresponding asset based on the search parameters is not found

Returns:

The found asset

Return type:

str

loadFromPreset()

Reinitializes to load the predefined mods

property map: Dict[str, Set[str]]

The adjacency list used to map assets to fix from to assets to fix to

Getter:

Retrieves the adjacency list

Setter:

Sets a new adjacency list

Type:

Dict[str, Set[str]]

replace(fromAsset: str, version: float | None = None, toAssets: str | Set[str] | None = None) str | None | Dict[str, str]

Retrieves the corresponding asset to replace ‘fromAsset’

Parameters:
  • fromAsset (str) – The asset to be replaced

  • version (Optional[float]) –

    The game version we want the asset to come from

    If This value is None, then will retrieve the asset of the latest version.

    Default: None

  • toAssets (Optional[Union[str, Set[str]]]) – The assets to used for replacement

Returns:

The corresponding assets for the fix to replace, if available

The result is a string if the passed in parameter ‘toAssets’ is also a string

Otherwise, the result is a dictionary such that:

  • The keys are the names of the assets

  • The values are the corresponding asset ids to replace

Return type:

Union[str, Dict[str, str]]

property toAssets: Dict[float, Dict[str, Dict[str, str]]]



  • The outer key is the game version number for the assets

  • The first inner key is the name of the assets

  • The most inner key is the type of asset

  • The most inner value is the id for the asset

Getter:

Returns the new assets that will replace the old assets

Type:

Dict[float, Dict[str, Dict[str, str]]]

Type:

The assets to fix to

classmethod updateMap(srcMap: Dict[str, Set[str]], newMap: Dict[str, Set[str]]) Dict[str, Set[str]]

Combines 2 maps together

Parameters:
  • srcMap (Dict[str, Set[str]]) – The map to be updates

  • newMap (Dict[str, Set[str]]) – The new map to update srcMap

Returns:

The updated map

Return type:

Dict[str, Set[str]]

updateRepo(srcRepo: Dict[float, Dict[str, Any]], newRepo: Dict[float, Dict[str, Any]]) Dict[float, Dict[str, Any]]

Updates the values in srcRepo

Parameters:
  • srcRepo (Dict[float, Dict[str, Any]]) – The first repo to be combined

  • newRepo (Dict[float, Dict[str, Any]]) – The second repo to be combined

Returns:

The combined repo

Return type:

Dict[float, Dict[str, Any]]

property versions: Dict[str, Version]

The game versions available for the assets

  • The keys are the names of the assets

  • The values are versions for the asset

Getter:

Returns all the available game versions for the assets

Type:

Dict[str, Version]



Mod Files

Entities for representing some common used files in mods.


File

Methods
class File(logger: Logger | None = None)

Base class for a file

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any

read() Any

Reads the data within a file


IniFile

Methods
class IniFile(file: str | None = None, logger: Logger | None = None, txt: str = '', modTypes: Set[ModType] | None = None, defaultModType: ModType | None = None, forcedModType: ModType | None = None, version: float | None = None, modsToFix: Set[str] | None = None, iniClassifier: IniClassifier | None = None, downloadMode: DownloadMode = DownloadMode.HardTexDriven)

This class inherits from File

Class 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: None

  • logger (Optional[Logger]) – The logger to print messages if necessary

  • txt (str) –

    Used as the text content of the .ini file if IniFile.file is set to None

    Default: “”

  • modTypes (Optional[Set[ModType]]) –

    The types of mods that the .ini file should belong to

    Default: None

  • modsToFix (Optional[Set[str]]) –

    The names of the mods we want to fix to

    Default: None

  • defaultModType (Optional[ModType]) –

    The type of mod to use if the .ini file has an unidentified mod type

    If this value is None, then will skip the .ini file with an unidentified mod type

    Default: None

  • forcedModType (Optional[ModType]) –

    The type of mod to forcibly assume the .ini file to belong to

    Default: None

  • version (Optional[Union[str, float, packaging.version.Version]]) –

    The game version we want the .ini file to be compatible with

    If this value is None, then will retrieve the hashes/indices of the latest version.

    Default: None

  • downloadMode (DownloadMode) –

    The download mode to handle file downloads

    Note

    For more information about the available download modes to specify, see Download Modes



    Default: DownloadMode.HardTexDriven

  • iniClassifier (Optional[IniClassifier]) –

    The classifier used to identify what mod belongs to this .ini file

    If this value is None, then will use the default classifier used by the software from IniModules.Classifier

    Default: None

version

The game version we want the .ini file to be compatible with

If This value is None, then will retrieve the hashes/indices of the latest version.

Type:

Optional[packaging.version.Version]

downloadMode

The download mode to handle file downloads

Note

For more information about the available download modes to specify, see Download Modes

Type:

DownloadMode

_parser

Parser used to parse very basic cases in a .ini file

Type:

ConfigParser

modTypes

The types of mods that the .ini file should belong to

Type:

Set[ModType]

modsToFix

The names of the mods that we want to fix to

Type:

Set[str]

defaultModType

The type of mod to use if the .ini file has an unidentified mod type

Type:

Optional[ModType]

forcedModType

The type of mod to forcibly assume the .ini file to belong to

Type:

Optional[ModType]

sectionIfTemplates

All the sections in the .ini file that can be parsed into an IfTemplate

For more info see IfTemplate

Attention

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]

_remappedSectionNames

The section names that were fixed.

Type:

Set[str]

remapBlendModels

The data for the [Resource.*RemapBlend.*] sections used in the fix

The keys are the original names of the resource with the pattern [Resource.*Blend.*]

Type:

Dict[str, IniResourceModel]

remapPositionModels

The data for the [Resource.*RemapPosition.*] sections used in the fix

The keys are the original names of the resource with the pattern [Resource.*Position.*]

Type:

Dict[str, IniResourceModel]

texEditModels

The data for the [Resource.*] sections that belong to some texture file that got editted

  • The outer keys are the names for the type of texture files eg. MyBrandNewLightMap

  • The inner keys are the original names of the resource with the pattern [Resource.*]

Type:

Dict[str, Dict[str, IniTexModel]]

texAddModels

The data for the [Resource.*] sections that belong to some texture file that got added

  • The outer keys are the names for the type of texture files eg. MyBrandNewLightMap

  • The inner keys are the names of the mod object eg. Head

Type:

Dict[str, Dict[str, IniTexModel]]

fileDownloadModels

The data for the downloaded files in the fix

The keys are the names of the [Resource.*] sections that have some downloaded file

Type:

Dict[str, IniDownloadModel]

_commentSection(startInd: int, endInd: int, fileLines: List[str], comment: str = ';')

Comments out a section

Parameters:
  • startInd (int) – The starting line index of the section

  • endInd (int) – The ending line index of the section

  • fileLines (List[str]) – All the file lines read from the .ini file

  • comment (str) –

    The comment string used to prefix every line in the section

    Default: ````

Returns:

The starting line index and the ending line index of the section that was commented

Return type:

Tuple[int, int]

_getCommandIfTemplate(sectionName: str, raiseException: bool = True) IfTemplate | None

Retrieves the IfTemplate for a certain section from IniFile._sectionIfTemplate

Parameters:
  • sectionName (str) – The name of the section

  • raiseException (bool) – Whether to raise an exception when the section’s IfTemplate is not found

Raises:

KeyError – If the IfTemplate for the section is not found and raiseException is set to True

Returns:

The corresponding IfTemplate for 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:
  • sectionName (str) – The name of the section we are starting from

  • subCommands (Set[str]) – The result for all of the sections that were called

  • subCommandLst (List[str]) – The result for all of the sections that were called while maintaining the order the sections are called in the call stack

Raises:

KeyError – If the IfTemplate is not found for some section

_getFixer()

Retrieves the fixer for fixing the .ini file

Returns:

The resultant fixer

Return type:

Optional[BaseIniFixer]

_getIfTemplateResourceName(ifTemplatePart: Dict[str, Any]) Any

Retrieves the value from the key, ‘vb1’, for some part of a section

Parameters:

ifTemplatePart (Dict[str, Any]) – The key-value pairs for some part in a section

Returns:

The corresponding value for the key ‘vb1’

Return type:

Any

_getParser() BaseIniParser | None

Retrieves the parser for parsing the .ini file

Returns:

The resultant parser

Return type:

Optional[BaseIniParser]

_getReferencedModels() List[IniFixResourceModel]

Retrieves all the resources referenced by the .ini file

Returns:

All the resource models referenced

Return type:

List[IniResourceModel]

_getRemover() BaseIniRemover

Retrieves the remover for removing fixes from the .ini file

Returns:

The resultant parser

Return type:

BaseIniRemover

_isIfTemplateDraw(ifTemplatePart: Dict[str, Any]) bool

Whether the content for some part of a section contains the key ‘draw’

Parameters:

ifTemplatePart (Dict[str, Any]) – The key-value pairs for some part in a section

Returns:

Whether ‘draw’ is contained in the part

Return type:

bool

_isIfTemplateResource(ifTemplatePart: Dict[str, Any]) bool

Whether the content for some part of a section contains the key ‘vb1’

Parameters:

ifTemplatePart (Dict[str, Any]) – The key-value pairs for some part in a section

Returns:

Whether ‘vb1’ is contained in the part

Return type:

bool

_parseSection(sectionName: str, srcTxt: str, save: Dict[str, Any] | None = None) Dict[str, str] | None

Regularly parses the key-value pairs of a certain section

The function parses uses ConfigParser to parse the section.

Parameters:
  • sectionName (str) – The name of the section

  • srcTxt (str) – The text containing the entire section

  • save (Optional[Dict[str, Any]]) –

    Place to save the parsed result for the section

    The result for the parsed section will be saved as a value in the dictionary while section’s name will be used in the key for the dictionary

    Default: None

Returns:

The result from parsing the section

Note

If ConfigParser is unable to parse the section, then None is returned

Return type:

Optional[Dict[str, str]]

_processIfTemplate(startInd: int, endInd: int, fileLines: List[str], sectionName: str, srcTxt: str) IfTemplate

Parses a section in the .ini file as an IfTemplate

Note

See IfTemplate to see how we define an ‘IfTemplate’

Parameters:
  • startInd (int) – The starting line index of the section

  • endInd (int) – The ending line index of the section

  • fileLines (List[str]) – All the file lines read from the .ini file

  • sectionName (str) – The name of the section

  • srcTxt (str) – The text content of the section

Returns:

The generated IfTemplate from the section

Return type:

IfTemplate

_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._fileLines

Examples

1@_readLines
2def printLines(self):
3    for line in self._fileLines:
4        print(f"LINE: {line}")
_removeFix(parse: bool = False, writeBack: bool = True) str

Removes any previous changes that were probably made by this script

For the .ini file will remove:

  1. All code surrounded by the ‘—…— . Fix —…—-’* header/footer

  2. All sections containing the keywords RemapBlend

Parameters:
  • parse (bool) –

    Whether to keep track of the Blend.buf files that also need to be removed

    Default: False

  • writeBack (bool) –

    Whether to write back the change txt of the .ini file

    Default: True

Returns:

The new text content of the .ini file with the changes removed

Return type:

str

_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:
  • startInd (int) – The starting line index of the section

  • endInd (int) – The ending line index of the section

  • fileLines (List[str]) – All the file lines read from the .ini file

  • sectionName (str) – The name of the section

  • srcTxt (str) – The text content of the section

Returns:

The starting line index and the ending line index of the section to remove

Return type:

Tuple[int, int]

addFixBoilerPlate(fix: str = '') str

Adds the boilerplate code to identify the .ini sections have been changed by this fix

Parameters:

fix (str) –

The content for the fix

Default: ""

Returns:

The fix with the boilerplate code included

Return type:

str

property availableType: ModType | None

Retrieves the type of mod identified for this .ini file

Note

This function is the same as IniFile.type(), but will return IniFile.defaultModType if IniFile.type() is None

Getter:

Returns the type of mod identified

Type:

Optional[ModType]

classify(flush: bool = False) bool

Classifies a .ini file by answering the following questions:

  1. Does the .ini file belong to a mod?

  2. What type of mod does the .ini file belong to?

  3. Has the .ini file already been fixed?

Note

To access the result of the classification, you can call the following attributes:

Parameters:

flush (bool) –

Whether to flush out any cached data and reclassify the .ini file

Default: False

Returns:

Whether the .ini file belongs to a mod

Return type:

bool

clear(eraseSourceTxt: bool = False)

Clears all the saved data for the .ini file

Note

Please see the note at IniFile.clearRead()

Parameters:

eraseSourceTxt (bool) –

Whether to erase the only data source for this class if IniFile.file is set to None, see the note at IniFile.clearRead() for more info

Default: False

clearModels()

Clears all the internal data models used in the .ini file

Note

This function will not clear the text data read in from the .ini file To clear this data, please see clearRead()

clearRead(eraseSourceTxt: bool = False)

Clears the saved text read in from the .ini file

Note

If IniFile.file is set to None, then the default run of this function with the argument eraseSourceTxt set to False will have no effect since the provided text from IniFile._fileTxt is the only source of data for the IniFile

If you also want to clear the above source text data, then run this function with the eraseSourceTxt argument set to True

Parameters:

eraseSourceTxt (bool) –

Whether to erase the only data source for this class if IniFile.file is set to None, see the note above for more info

Default: False

commentSectionOptions(section: str | Pattern | Callable[[str], bool], comment: str = ';')

Comments out a certain type of section from the .ini file

Parameters:
Returns:

The file text with the comments added

Return type:

str

classmethod compareResources(resourceTuple1: Tuple[str, int | None], resourceTuple2: Tuple[str, int | None]) int

Compare function used for sorting resources

The order for sorting is the resources is:

  1. Resources that do are not suffixed by an index number

  2. Resource that are suffixed by an index number (see IniFile.getMergedResourceIndex() for more info)

Parameters:
  • resourceTuple1 (Tuple[str, Optional[int]]) –

    Data for the first resource in the compare function, contains:

    • Name of the resource

    • The index for the resource

  • resourceTuple2 (Tuple[str, Optional[int]]) –

    Data for the second resource in the compare function, contains:

    • Name of the resource

    • The index for the resource

Returns:

The result for a typical compare function used in sorting

  • returns -1 if resourceTuple1 should come before resourceTuple2

  • returns 1 if resourceTuple1 should come after resourceTuple2

  • returns 0 if resourceTuple1 is equal to resourceTuple2

Return type:

int

disIni(makeCopy: bool = False)

Disables the .ini file

Note

For more info, see FileService.disableFile()

Parameters:

makeCopy (bool) –

Whether to make a copy of the disabled .ini file

Default: False

property file: str | None

The file path to the .ini file

Getter:

Returns the path to the file

Setter:

Sets the new path for the file

Type:

Optional[str]

property fileLines: List[str]

The text lines of the .ini file

Note

For the setter, each line must end with a newline character (same behaviour as readLines)

Getter:

Returns the text lines of the .ini file

Setter:

Reads the new value for both the text lines of the .ini file and the text content of the .ini file

Type:

List[str]

property fileLinesRead: bool

Whether the .ini file has been read

Getter:

Determines whether the .ini file has been read

Type:

bool

property filePath: FilePath | None

The path to the .ini file

Getter:

Returns the path to the file

Type:

Optional[FilePath]

property fileTxt: str

The text content of the .ini file

Getter:

Returns the content of the .ini file

Setter:

Reads the new value for both the text content of the .ini file and the text lines of the .ini file

Type:

str

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, str | Dict[str, Any], int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, Union[str, Dict[str, Any], int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether we want to make a backup copy of the .ini file

    Default: True

  • fixOnly (bool) –

    Whether we are only fixing the .ini file without removing any previous changes

    Default: False

  • update (bool) –

    Whether to also update the source text of this classs with the fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

fixBoilerPlate()

Decorator used to add the boilerplate code to identify a code section has been changed by this fix in the .ini file

Examples

1@fixBoilerPlate
2def helloWorld(self) -> str:
3    return "Hello World"
property folder: str

The folder where this .ini file resides

If IniFile.file is set to None, then will return the folder where this script is ran

Getter:

Retrieves the folder

Type:

str

getFixCredit() str

Retrieves the credit text for the code generated in the .ini file

Returns:

The credits to be displayed in the .ini file

Return type:

str

getFixFooter() str

Retrieves the footer text used to identify a code section has been changed by this fix in the .ini file

Returns:

The footer section comment to be used in the .ini file

Return type:

str

getFixHeader() str

Retrieves the header text used to identify a code section has been changed by this fix in the .ini file

Returns:

The header section comment to be used in the .ini file

Return type:

str

getFixModTypeHeadingname()

Retrieves the name of the type of mod corresponding to the .ini file to be used in the header/footer divider comment of the fix

Returns:

The name for the type of mod to be displayed in the header/footer divider comment

Return type:

Optional[str]

getFixModTypeName() str | None

Retrieves the name of the type of mod corresponding to the .ini file to be used for the comment of the fix

Returns:

The name for the type of mod corresponding to the .ini file

Return type:

Optional[str]

getFixStr(fix: str = '') str

Generates the newly added code in the .ini file for the fix

Parameters:

fix (str) –

Any existing text we want the result of the fix to add onto

Default: “”

Returns:

The text for the newly generated code in the .ini file

Return type:

str

classmethod getFixedBlendFile(blendFile: str, modName: str = '') str

Retrieves the file path for the fixed RemapBlend.buf file

Parameters:
  • blendFile (str) – The file path to the original Blend.buf file

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapBlend.buf file

Return type:

str

classmethod getFixedElementFile(file: str, elementName: str, fileExt: str, modName: str = '') str

Retrieves the file path for a a fixed element

Parameters:
  • file (str) – The file path to the original file

  • elementName (str) – The name of the element to fix

  • fileExt (str) – The file extension for the file path of the fixed element

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed file of the element

Return type:

str

classmethod getFixedPositionFile(positionFile: str, modName: str = '') str

Retrieves the file path for the fixed RemapPosition.buf file

Parameters:
  • positionFile (str) – The file path to the original Position.buf file

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapPosition.buf file

Return type:

str

classmethod getFixedTexFile(texFile: str, modName: str = '') str

Retrieves the file path for the fixed RemapTex.dds file

Parameters:
  • texFile (str) – The file path to the original .dds file

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapTex.dds file

Return type:

str

getHeadingName()

Retrieves the title for the header of the divider comment of the fix

Returns:

The title for the header of the divider comment

Return type:

str

getIfTemplates(flush: bool = False) Dict[str, IfTemplate]

Retrieves all the :class:`IfTemplate`s for the .ini file

Note

This is the same as IniFile.readIfTemplates(), but uses caching

Parameters:

flush (bool) – Whether to re-parse the :class:`IfTemplates`s instead of using the saved cached values

Returns:

The parsed IfTemplate`s :raw-html:`

Return type:

Dict[str, IfTempalte]

classmethod getMergedResourceIndex(mergedResourceName: str) int | None

Retrieves the index number of a resource created by GIMI’s genshin_merge_mods.py script

Examples

>>> IniFile.getMergedResourceIndex("ResourceCuteLittleEiBlend.8")
8
>>> IniFile.getMergedResourceIndex("ResourceCuteLittleEiBlend.Score.-100")
-100
>>> IniFile.getMergedResourceIndex("ResourceCuteLittleEiBlend.UnitTests")
None
>>> IniFile.getMergedResourceIndex("ResourceCuteLittleEiBlend")
None
Parameters:

mergedResourceName (str) – The name of the section

Returns:

The index for the resource section, if found and the index is an integer

Return type:

Optional[int]

classmethod getModSuffixedName(name: str, suffix: str = '', modName: str = '')

Changes a section name to have the suffix of ‘modName’ followed by ‘suffix’

Parameters:
  • name (str) – The name of the section

  • suffix (str) –

    The name of the suffix to put at the end of the section

    Default: ""

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added suffix keyword

Return type:

str

getReferencedFiles() List[str]

Retrieves all the files referenced by the .ini file

Returns:

The absolute paths to all the files

Return type:

List[str]

getReferencedFolders() List[str]

Retrieves all the folders referenced by the .ini file

Returns:

The absolute paths to all the folders

Return type:

List[str]

classmethod getRemapBlendName(name: str, modName: str = '') str

Changes a section name to have the keyword ‘RemapBlend’ to identify that the section is created by this fix

Tip

See getRemapElementName() for some examples

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapBlend’ keyword

Return type:

str

classmethod getRemapBlendResourceName(name: str, modName: str = '') str

Changes the name of a section to be a new blend resource that this fix will create

Note

See getResourceName() and getRemapBlendName() for more info

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the prefix ‘Resource’ and the keyword ‘Remap’ added

Return type:

str

classmethod getRemapDLName(name: str, modName: str = '')

Changes a section name to have the suffix RemapDL to identify that the section is created by this fix

Examples

>>> IniFile.getRemapTexName("EiIsDoneWithRemapDL", "Raiden")
"EiIsDoneWithRaidenRemapDL"
>>> IniFile.getRemapTexName("EiIsHappy", "Raiden")
"EiIsHappyRaidenRemapDL"
Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapDL’ keyword

Return type:

str

classmethod getRemapDLResourceName(name: str, modName: str = '')

Changes a section name to be a texture resource created by this fix

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the prefix ‘Resource’ and the suffix ‘RemapDL’ added

Return type:

str

classmethod getRemapElementName(name: str, elementName: str, modName: str = '')

Changes a section name to have the keyword from ‘elementName’ to identify that the section is created by this fix

Examples

>>> IniFile.getRemapElementName("EiTriesToUseBlenderAndFails", "Blend", "Raiden")
"EiTriesToUseRaidenRemapBlenderAndFails"
>>> IniFile.getRemapElementName("EiTextsTheTexture", "Tex", "Yae")
"EiTextsTheYaeRemapTexture"
>>> IniFile.getRemapElementName("ResourceCuteLittleEi", "Position", "Raiden")
"ResourceCuteLittleEiRaidenRemapPosition"
>>> IniFile.getRemapElementName("ResourceCuteLittleEiRemapDango", "Dango" "Raiden")
"ResourceCuteLittleEiRemapRaidenRemapDango"
Parameters:
  • name (str) – The name of the section

  • elementName (str) – The name of the target element

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the keyword of ‘elementName’, prefixed by the word ‘Remap’ added

Return type:

str

classmethod getRemapFixName(name: str, modName: str = '') str

Changes a section name to have the suffix RemapFix to identify that the section is created by this fix

Examples

>>> IniFile.getRemapFixName("EiIsDoneWithRemapFix", "Raiden")
"EiIsDoneWithRaidenRemapFix"
>>> IniFile.getRemapFixName("EiIsHappy", "Raiden")
"EiIsHappyRaidenRemapFix"
Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapFix’ keyword

Return type:

str

classmethod getRemapFixResourceName(name: str, modName: str = '')

Changes a section name to be a new non-blend resource created by this fix

Note

See IniFile.getResourceName() and IniFile.getRemapFix() for more info

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the prefix ‘Resource’ and the suffix ‘RemapFix’ added

Return type:

str

classmethod getRemapIbName(name: str, modName: str = '') str

Changes a section name to have the keyword ‘RemapIb’ to identify that the section is created by this fix

Tip

See getRemapElementName() for some examples

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapIb’ keyword

Return type:

str

classmethod getRemapPositionName(name: str, modName: str = '') str

Changes a section name to have the keyword ‘RemapPosition’ to identify that the section is created by this fix

Tip

See getRemapElementName() for some examples

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapPosition’ keyword

Return type:

str

classmethod getRemapPositionResourceName(name: str, modName: str = '') str

Changes the name of a section to be a new position resource that this fix will create

Note

See getResourceName() and getRemapPositionName() for more info

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the prefix ‘Resource’ and the keyword ‘Remap’ added

Return type:

str

classmethod getRemapTexName(name: str, modName: str = '')

Changes a section name to have the suffix RemapFix to identify that the section is created by this fix

Examples

>>> IniFile.getRemapTexName("EiIsDoneWithRemapTex", "Raiden")
"EiIsDoneWithRaidenRemapTex"
>>> IniFile.getRemapTexName("EiIsHappy", "Raiden")
"EiIsHappyRaidenRemapTex"
Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapFix’ keyword

Return type:

str

classmethod getRemapTexResourceName(name: str, modName: str = '')

Changes a section name to be a texture resource created by this fix

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the prefix ‘Resource’ and the suffix ‘RemapTex’ added

Return type:

str

classmethod getRemapTexcoordName(name: str, modName: str = '') str

Changes a section name to have the keyword ‘RemapTexcoord’ to identify that the section is created by this fix

Tip

See getRemapElementName() for some examples

Parameters:
  • name (str) – The name of the section

  • modName (str) –

    The name of the mod to fix

    Default: ""

Returns:

The name of the section with the added ‘RemapTexcoord’ keyword

Return type:

str

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"
>>> IniFile.getResourceName("ResourceCuteLittleEi")
"ResourceCuteLittleEi"
Parameters:

name (str) – The name of the section

Returns:

The name of the section as a resource in a .ini file

Return type:

str

classmethod getResources(commandsGraph: IniSectionGraph, isIfTemplateResource: Callable[[IfContentPart], Any], getIfTemplateResource: Callable[[IfContentPart], str], addResource: Callable[[Any, IfContentPart], Any])

Retrieves all the referenced resources that were called by sections related to the [TextureOverride.*Blend.*] sections

Parameters:
  • resources (Set[str]) – The result for all the resource sections that were referenced

  • commandsGraph (IniSectionGraph) – The subgraph for all the sections related to the resource

  • isIfTemplateResource (Callable[[IfContentPart], bool]) – Checks whether a part in the IfTemplate of a section contains the key that reference the target resource

  • getIfTemplateResource (Callable[[IfContentPart], Any]) – Function to retrieve the target resource from a part in the IfTemplate of a section

  • addResource (Callable[[Any, IfContentPart], Any]) –

    Function to add in the result of the found resource section


    The parameter order for the function is:

    1. the retrieved resource section

    2. the part in the IfTemplate where the resource is found

getSectionOptions(section: str | Pattern | Callable[[str], bool], postProcessor: Callable[[int, int, List[str], str, str], Any] | None = None, handleDuplicateFunc: Callable[[List[Any]], Any] | None = None, ignoreHideOriginal: bool = False) Dict[str, Any]

Reads the entire .ini file for a certain type of section

Parameters:
  • section (Union[str, Pattern, Callable[[str], bool]]) –

    The type of section to find

    • If this argument is a str, then will check if the line in the .ini file exactly matches the argument

    • If this argument is a Pattern, then will check if the line in the .ini file matches the specified Regex pattern

    • If this argument is a function, then will check if the line in the .ini file passed as an argument for the function will make the function return True

  • postProcessor (Optional[Callable[[int, int, List[str], str, str], Any]]) –

    Post processor used when a type of section has been found

    The order of arguments passed into the post processor will be:

    1. The starting line index of the section in the .ini file

    2. The ending line index of the section in the .ini file

    3. All the file lines read from the .ini file

    4. The name of the section found

    5. The entire text for the section

    Default: None

  • handleDuplicateFunc (Optional[Callable[List[Any], Any]]) –

    Function to used to handle the case of multiple sections names

    If this value is set to None, will keep all sections with the same names

    Note

    For this case, GIMI only keeps the first instance of all sections with same names


    Default: None

  • ignoreHideOriginal (bool) –

    Whether to ignore the special comment created by this fix used to hide the original mod within the .ini txt

    Default: False

Returns:

The resultant sections found

The keys are the names of the sections found and the values are the content for the section,

Return type:

Dict[str, Any]

getTexAddModels() List[IniTexModel]

Retrieves all the file path data needed for creating new texture .dds file (transforms IniFile.texAddModels to a list)

Returns:

The data models needed for editting a texture .dds file

Return type:

List[IniTexModel]

getTexEditModels() List[IniTexModel]

Retrieves all the file path data needed for editing a texture .dds file (transforms IniFile.texEditModels to a list)

Returns:

The data models needed for editting a texture .dds file

Return type:

List[IniTexModel]

property hideOriginalReplaced: bool

Whether the comments created by this fix that is used to hide the original mod has been erased

Getter:

Determines whether the comments are erased

Type:

bool

hideOriginalSections()

Comments out all the sections referenced by the remap

Note

The .ini file need to be parsed first using the parse() method

injectAddition(addition: str, beforeOriginal: bool = True, keepBackup: bool = True, fixOnly: bool = False, update: bool = False) str

Adds and writes new text to the .ini file

Parameters:
  • addition (str) – The text we want to add to the file

  • beforeOriginal (bool) –

    Whether to add the new text before the original text

    Default: True

  • keepBackup (bool) –

    Whether we want to make a backup copy of the .ini file

    Default: True

  • fixOnly (bool) –

    Whether we are only fixing the .ini file without removing any previous changes

    Default: False

  • update (bool) –

    Whether to update the source text within this class to reflect the new addition

    Default: False

Returns:

The content of the .ini file with the new text added

Return type:

str

property isClassified: bool

Whether the type of mod has already been identified for the .ini file

Getter:

Determines whether the .ini file has already been classified

Type:

bool

property isFixed: bool

Whether the .ini file has already been fixed

Getter:

Returns whether the .ini file has already been fixed

Type:

bool

property isModIni: bool

Whether the .ini file belongs to a mod

Getter:

Returns whether the .ini file belongs to a mod

Type:

bool

makeDLModel(ifTemplate: IfTemplate, downloads: FileDownload | Dict[int, Dict[str, List[FileDownload]]]) IniDownloadModel

Creates the data needed for a particular [Resource.*] section for some file download in the .ini file

Parameters:
Returns:

The data for downloading a particular resource

Return type:

IniDownloadModel

makeFixResourceModel(ifTemplate: ~FixRaidenBoss2.model.iftemplate.IfTemplate.IfTemplate, toFix: ~typing.Set[str], getFixedFile: ~typing.Callable[[str, str], str] | None = None, iniResourceModelCls: ~typing.Type[~FixRaidenBoss2.model.iniresources.IniFixResourceModel.IniFixResourceModel] = <class 'FixRaidenBoss2.model.iniresources.IniFixResourceModel.IniFixResourceModel'>, iniResModelArgs: ~typing.List[~typing.Any] | None = None, iniResModelKwargs: ~typing.Dict[str, ~typing.Any] | None = None) IniFixResourceModel

Creates the data needed for fixing a particular [Resource.*] section in the .ini file

Parameters:
  • ifTemplate (IfTemplate) – The particular section to extract data

  • toFix (Set[str]) – The names of the mods to fix

  • getFixedFile (Optional[Callable[[str, str], str]]) –

    The function for transforming the file path of a found resource file into a new file path for the fixed resources file

    If this value is None, then will use IniFile.getFixedBlendFile()

    The parameters for the function are:

    # The path to the original file # The type of mod to fix to

    Default: None

  • iniResourceModelCls (Type[IniFixResourceModel]) –

    A subclass of IniFixResourceModel for constructing the required data

    Attention

    The constructor of this subclass must at least have the same arguments and keyword arguments as the constructor for IniFixResourceModel

    Default: IniFixResourceModel

  • iniResModelArgs (Optional[List[Any]]) –

    Any arguments to add onto the contructor for creating the subclass of a IniFixResourceModel

    Default: None

  • iniResModelKwargs (Optional[Dict[str, Any]]) –

    Any keyword arguments to add onto the constructor for creating the subclass of a IniFixResourceModel

    Default: None

Returns:

The data for fixing the particular resource

Return type:

IniFixResourceModel

makeSrcResourceModel(ifTemplate: ~FixRaidenBoss2.model.iftemplate.IfTemplate.IfTemplate, iniResourceModelCls: ~typing.Type[~FixRaidenBoss2.model.iniresources.IniFixResourceModel.IniFixResourceModel] = <class 'FixRaidenBoss2.model.iniresources.IniSrcResourceModel.IniSrcResourceModel'>, iniResModelArgs: ~typing.List[~typing.Any] | None = None, iniResModelKwargs: ~typing.Dict[str, ~typing.Any] | None = None) IniSrcResourceModel

Creates the data needed for a particular [Resource.*] section in the original .ini file

Parameters:
  • ifTemplate (IfTemplate) – The particular section to extract data

  • iniResourceModelCls (Type[IniSrcResourceModel]) –

    A subclass of IniSrcResourceModel for constructing the required data

    Attention

    The constructor of this subclass must at least have the same arguments and keyword arguments as the constructor for IniSrcResourceModel

    Default: IniSrcResourceModel

  • iniResModelArgs (Optional[List[Any]]) –

    Any arguments to add onto the contructor for creating the subclass of a IniSrcResourceModel

    Default: None

  • iniResModelKwargs (Optional[Dict[str, Any]]) –

    Any keyword arguments to add onto the constructor for creating the subclass of a IniSrcResourceModel

    Default: None

Returns:

The data for a particular source resource

Return type:

IniSrcResourceModel

makeTexModel(ifTemplate: IfTemplate, toFix: Set[str], texEditors: BaseTexEditor | Dict[int, Dict[str, List[BaseTexEditor]]], getFixedFile: Callable[[str, str], str] | None = None) IniTexModel

Creates the data needed for fixing a particular [Resource.*] section for some .dds texture file in the .ini file

Parameters:
  • ifTemplate (IfTemplate) – The particular section to extract data

  • toFix (Set[str]) – The names of the mods to fix

  • texEditors (Union[BaseTexEditor, Dict[int, Dict[str, List[BaseTexEditor]]]]) –

    The texture editors for editting the found .dds files

    • If this argument is of type BaseTexEditor, then all .dds files encountered within the parsed section will use the same texture editor

    • If this argument is a dictionary, then the structure of the dictionary follows the same structure as IniTexModel.texEdits

  • getFixedFile (Optional[Callable[[str, str], str]]) –

    The function for transforming the file path of a found .dds file into a new file path to the fixed .dds file

    If this value is None, then will use IniFile.getFixedBlendFile()

    The parameters for the function are:

    # The path to the original file # The type of mod to fix to

    Default: None

Returns:

The data for fixing the particular texture

Return type:

IniTexModel

parse(flushIfTemplates: bool = True)

Parses the .ini file

Parameters:

flushIfTemplates (bool) –

Whether to re-parse the IfTemplates`s instead of using the saved cached values :raw-html:`

Default: True

Raises:

KeyError – If a certain resource section is not found

(either the name of the section is not found in the .ini file or the section was skipped due to some error when parsing the section)

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any

read() str

Reads the .ini file

If IniFile.file is set to None, then will read the existing value from IniFile.fileTxt

Returns:

The text content of the .ini file

Return type:

str

readFileLines() List[str]

Reads each line in the .ini file

If IniFile.file is set to None, then will read the existing value from IniFile.fileLines

Returns:

All the lines read from the .ini file

Return type:

List[str]

readIfTemplates() Dict[str, IfTemplate]

Parses all the :class:`IfTemplate`s for the .ini file

Returns:

The parsed IfTemplate`s :raw-html:`

Return type:

Dict[str, IfTempalte]

removeFix(keepBackups: bool = True, fixOnly: bool = False, parse: bool = False, writeBack: bool = True) str

Removes any previous changes that were probably made by this script and creates backup copies of the .ini file

Tip

For more info about what gets removed from the .ini file, see IniFile._removeFix()

Parameters:
  • keepBackup (bool) –

    Whether we want to make a backup copy of the .ini file

    Default: True

  • fixOnly (bool) –

    Whether we are only fixing the .ini file without removing any previous changes

    Note

    If this value is set to True, then the previous changes made by this script will not be removed

    Default: False

  • parse (bool) –

    Whether to also parse for the .*RemapBlend.buf files that need to be removed

    Default: False

  • writeBack (bool) –

    Whether to write back the changed text of the .ini file

    Default: True

Returns:

The new text content of the .ini file with the changes removed

Return type:

str

classmethod removeResourceName(name: str) str

Removes the ‘Resource’ prefix from a section’s name

Examples

>>> IniFile.removeResourceName("ResourceCuteLittleEi")
"CuteLittleEi"
>>> IniFile.removeResourceName("LittleMissGanyu")
"LittleMissGanyu"
Parameters:

name (str) – The name of the section

Returns:

The name of the section with the ‘Resource’ prefix removed

Return type:

str

removeSectionOptions(section: str | Pattern | Callable[[str], bool])

Removes a certain type of section from the .ini file

Parameters:

section (Union[str, Pattern, Callable[[str], bool]]) – The type of section to remove

property type: ModType | None

The type of mod the .ini file belongs to

Getter:

Returns the type of mod the .ini file belongs to

Type:

Optional[ModType]

write(txt: str | None = None) str

Writes back into the .ini files based off the content in IniFile._fileLines

Parameters:

txt (Optional[str]) –

The text to write back into the .ini file

If this argument is None, then will use the IniFile.fileTxt

Default: none

Returns:

The text that is written to the .ini file

Return type:

str


BlendFile

class BlendFile(src: str | bytes)

This Class inherits from BufFile

Used for handling blend.buf files

Note

We observe that a Blend.buf file is a binary file defined as:

  • a line corresponds to the data for a particular vertex in the mod

  • each line contains 32 bytes (256 bits)

  • each line uses little-endian mode (MSB is to the right while LSB is to the left)

  • the first 16 bytes of a line are for the blend weights, each weight is 4 bytes or 32 bits (4 weights/line)

  • the last 16 bytes of a line are for the corresponding indices for the blend weights, each index is 4 bytes or 32 bits (4 indices/line)

  • the blend weights are floating points while the blend indices are unsigned integers

Parameters:

src (Union[str, bytes]) – The source file or bytes for the blend file

property bytesPerLine

The number of bytes per line (per vertex)

Getter:

Retrieves the number of bytes per line

Type:

int

property data

The bytes read in from the source

Getter:

Returns the bytes that were read

Type:

bytes

decodeLine(src: bytes) Dict[str, List[Any]]

Decodes a line (a vertex) within the .buf file

Parameters:

src (bytes) – The source bytes to decode

Returns:

The decoded values for the line

The keys are the names to the elements and the values are what is decoded

Return type:

Dict[str, List[Any]]

property elements: List[BufElementType]

The sequence of elements within the .buf file

Getter:

Retrieves the elements

Setter:

Sets the elements for the .buf file

Type:

List[BufElementType]

encodeLine(src: Dict[str, List[Any]]) bytes

Encodes the data about a vertex to their corresponding bytes for the line

Parameters:

src (Dict[str, List[Any]]) –

The corresponding data for the vertex

The keys are the names for the elements and the values are the data for the elements

Returns:

The encoded bytes for the line

Return type:

bytes

fix(fixedFile: str | None = None, filters: List[Callable[[Dict[str, List[Any]], int, int, int], Dict[str, List[Any]]]] | None = None) str | None | bytearray

Fixes the .buf file

Parameters:
  • fixedFile (Optional[str]) –

    The file path for the fixed .buf file

    Default: None

  • filters (Optional[List[Callable[[Dict[str, List[Any]], int, int, int], Dict[str, List[Any]]]]]) –

    The filters to process each element

    The filters take in the following arguments:

    1. The data for a particular line

    2. The starting byte index of the line that is read

    3. The line index being processed

    4. The size of each line

    The output of the filters is the resultant data that consists where the keys are the names of the elements within a line in the .buf file and the values are the resultant data for each element in the line

Raises:
  • BufFileNotRecognized – If the original .buf file provided by the src attribute cannot be read

  • BadBufData – If the bytes passed into the src attribute do not correspond to the format defined for the .buf file

Returns:

If the argument fixedFile is None, then will return an array of bytes for the fixed .buf file

Otherwise will return the filename to the fixed .buf file if the provided .buf file got corrected

Return type:

Union[Optional[str], bytearray]

classmethod getMissingIndicesRemap(src: Dict[str, List[int] | List[float]], vgRemap: VGRemap) Dict[int, int]

Retrives the temporary remap for any missing blend indices not included in ‘vgRemap’

Parameters:
  • src (Dict[str, Union[List[int, List[float]]]]) – The data for the blend weights and the blend indices for a particular vertex

  • vgRemap (VGRemap) – The vertex group remap for correcting the Blend.buf file

Returns:

The temporary remap for the missing indices.

The keys are the missing indices found and the values are the temporary remapped values for these missing indices

Return type:

Dict[int, int]

isValid() bool

Whether the size of the data is divisible by the # of bytes per line

Returns:

Whether the provided data for the .buf file is valid

Return type:

bool

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any

read() bytes

Reads the bytes in the .buf file

Returns:

The read bytes

Return type:

bytes

remap(vgRemap: VGRemap, fixedBlendFile: str | None = None, remapMissingIndices: bool = True) str | None | bytearray

Remaps the blend indices in a Blend.buf file

Parameters:
  • vgRemap (VGRemap) – The vertex group remap for correcting the Blend.buf file

  • fixedBlendFile (Optional[str]) –

    The file path for the fixed Blend.buf file

    Default: None

  • remapMissingIndices (bool) –

    Whether to deactivate any missing blend indices that cannot be identified

    Default: True

Raises:
  • BlendFileNotRecognized – If the original Blend.buf file provided by the parameter blendFile cannot be read

  • BadBlendData – If the bytes passed into this function do not correspond to the format defined for a Blend.buf file

Returns:

If the argument fixedBlendFile is None, then will return an array of bytes for the fixed Blend.buf file

Otherwise will return the filename to the fixed RemapBlend.buf file if the provided Blend.buf file got corrected

Return type:

Union[Optional[str], bytearray]

classmethod remapIndices(src: Dict[str, List[int] | List[float]], vgRemap: VGRemap, remapMissingIndices: bool = True) Dict[str, List[int] | List[float]]

Remaps the vertex group indices for a particular line (vertex)

Parameters:
  • src (Dict[str, Union[List[int, List[float]]]]) – The data for the blend weights and the blend indices for a particular vertex

  • vgRemap (VGRemap) – The vertex group remap for correcting the Blend.buf file

  • remapMissingIndices (bool) –

    Whether to deactivate any missing blend indices that cannot be identified

    Default: True

Returns:

The new data for the blend weights/blend indices, with the blend indices remapped

Return type:

Dict[str, Union[List[int, List[float]]]]


BufFile

Methods
class BufFile(src: str | bytes, elements: List[BufElementType], fileType: str = 'Buffer')

This class inherits from BinaryFile

A class to handle .buf files

Parameters:
  • src (Union[str, bytes]) – The source file or bytes for the .buf file

  • elements (List[BufElementType]) – The sequence of elements within the .buf file

  • fileType (str) –

    The name for the type of .buf file

    Default: Buffer

fileType

The name for the type of .buf file

Type:

str

bytesPerLine

The number of bytes per line in the .buf file

Type:

int

property bytesPerLine

The number of bytes per line (per vertex)

Getter:

Retrieves the number of bytes per line

Type:

int

property data

The bytes read in from the source

Getter:

Returns the bytes that were read

Type:

bytes

decodeLine(src: bytes) Dict[str, List[Any]]

Decodes a line (a vertex) within the .buf file

Parameters:

src (bytes) – The source bytes to decode

Returns:

The decoded values for the line

The keys are the names to the elements and the values are what is decoded

Return type:

Dict[str, List[Any]]

property elements: List[BufElementType]

The sequence of elements within the .buf file

Getter:

Retrieves the elements

Setter:

Sets the elements for the .buf file

Type:

List[BufElementType]

encodeLine(src: Dict[str, List[Any]]) bytes

Encodes the data about a vertex to their corresponding bytes for the line

Parameters:

src (Dict[str, List[Any]]) –

The corresponding data for the vertex

The keys are the names for the elements and the values are the data for the elements

Returns:

The encoded bytes for the line

Return type:

bytes

fix(fixedFile: str | None = None, filters: List[Callable[[Dict[str, List[Any]], int, int, int], Dict[str, List[Any]]]] | None = None) str | None | bytearray

Fixes the .buf file

Parameters:
  • fixedFile (Optional[str]) –

    The file path for the fixed .buf file

    Default: None

  • filters (Optional[List[Callable[[Dict[str, List[Any]], int, int, int], Dict[str, List[Any]]]]]) –

    The filters to process each element

    The filters take in the following arguments:

    1. The data for a particular line

    2. The starting byte index of the line that is read

    3. The line index being processed

    4. The size of each line

    The output of the filters is the resultant data that consists where the keys are the names of the elements within a line in the .buf file and the values are the resultant data for each element in the line

Raises:
  • BufFileNotRecognized – If the original .buf file provided by the src attribute cannot be read

  • BadBufData – If the bytes passed into the src attribute do not correspond to the format defined for the .buf file

Returns:

If the argument fixedFile is None, then will return an array of bytes for the fixed .buf file

Otherwise will return the filename to the fixed .buf file if the provided .buf file got corrected

Return type:

Union[Optional[str], bytearray]

isValid() bool

Whether the size of the data is divisible by the # of bytes per line

Returns:

Whether the provided data for the .buf file is valid

Return type:

bool

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any

read() bytes

Reads the bytes in the .buf file

Returns:

The read bytes

Return type:

bytes


TextureFile

Attributes
Methods
class TextureFile(src: str)

This Class inherits from File

Used for handling .dds files

img

The associated image file for the texture

Type:

Optional[PIL.Image]

open(format: str = 'RGBA') Image

Opens the texture file

Parameters:

format (str) –

What format the image of the texture file should be opened as

Default: “RGBA”

Returns:

The image for the texture file

Return type:

PIL.Image

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any

read(format: str = 'RGBA', flush: bool = False) List[List[Tuple[int, int, int, int]]] | None

Reads the pixels of the texture .dds file, if the file exists

Parameters:
  • format (str) –

    What format to open the texture file

    Default: “RGBA”

  • flush (bool) –

    Whether to reopen the texture file

    Default: False

Returns:

The pixels for the texture file with RGBA channels

Return type:

Optional[PIL.PixelAccess]

save(img: Image | None = None)

Saves the pixels defined at ‘img’ to the texture .dds file

Parameters:

img (Optional[PIL.Image]) –

the new image to set for the texture file

Default: None



Ini Parts

The different parts that are within a .ini file.


IfTemplate

class IfTemplate(parts: ~typing.List[~FixRaidenBoss2.model.iftemplate.IfTemplatePart.IfTemplatePart], name: str = '', treeCls: ~typing.Type[~FixRaidenBoss2.model.iftemplate.IfTemplateTree.IfTemplateTree] = <class 'FixRaidenBoss2.model.iftemplate.IfTemplateTree.IfTemplateNonEmptyNodeTree'>)

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 IfTemplate have 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 (IfTemplatePart) where each part is either:

  1. An If Predicate Part (:class:`IfPredPart`): a single line containing the keywords “if”, “else” or “endif”
    OR

  2. A Content Part (:class:`IfContentPart`): a group of lines that “does stuff”

Note that: an ifTemplate does 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 section

Based on the above assumptions, we can assume that every [section] in a .ini file contains this IfTemplate


Supported Operations:

for element in x

Iterates over all the parts of the IfTemplate, x

x[num]

Retrieves the part from the IfTemplate, x, at index num

x[num] = newPart

Sets the part at index num of the IfTemplate, x, to have the value of newPart


Parameters:
parts

The individual parts of how we divided an IfTemplate described above

Type:

List[IfTemplatePart]

tree

The parse tree for the IfTemplate . Details on the structure of the tree can be found at IfTemplateTree

Type:

IfTemplateTree

calledSubCommands

Any other sections that this IfTemplate references

Type:

Dict[int, List[str]]

hashes

The hashes this IfTemplate references

Type:

Set[str]

indices

The indices this IfTemplate references

Type:

Set[str]

treeCls

The class to construct the parse tree for the IfTemplate

Default: IfTemplateTree

Type:

Type[IfTemplateTree]

add(part: IfTemplatePart, updateTree: bool = False)

Adds a part to the ifTemplate

Parameters:
find(pred: Callable[[IfTemplate, int, IfTemplatePart], bool] | None = None, postProcessor: Callable[[IfTemplate, int, IfTemplatePart], Any] | None = None) Dict[int, Any]

Searches the IfTemplate for parts that meet a certain condition

Parameters:
  • pred (Optional[Callable[[IfTemplate, int, IfTemplatePart], bool]]) –

    The predicate used to filter the parts

    If this value is None, then this function will return all the parts

    The order of arguments passed into the predicate will be:

    1. The IfTemplate that this method is calling from

    2. The index for the part in the IfTemplate

    3. The current part of the IfTemplate

    Default: None

  • postProcessor (Optional[Callable[[IfTemplate, int, IfTemplatePart], Any]]) –

    A function that performs any post-processing on the found part that meets the required condition

    The order of arguments passed into the post-processor will be:

    1. The IfTemplate that this method is calling from

    2. The index for the part in the IfTemplate

    3. The current part of the IfTemplate

    If this value is None, then will return the found IfTemplatePart

    Default: None

Returns:

The filtered parts that meet the search condition

The keys are the index locations of the parts and the values are the found parts

Return type:

Dict[int, Any]

getKeyMissingParts(key: str, sections: Dict[str, IfTemplate], visited: Set[str], sectionsMissingParts: Dict[str, Set[IfContentPart]], sectionAllBranchesMissing: Dict[str, bool]) Set[IfContentPart]

Finds all the IfContentPart`s that are referenced by this :class:`IfTemplate that do not have the search ‘key’

Parameters:
  • key (str) – The key to search

  • sections (Dict[str, IfTemplate]) –

    The available sections in the graph (IniSectionGraph) where this IfTemplate belongs to

    The keys are the names for each section and the values are the corresponding IfTemplate for each section

  • visited (Set[str]) – The names of the sections that have been visited by this method

  • sectionsMissingParts (Dict[str, bool]) – The result of the IfContentPart with missing keys for a particular section after searching all of its branches (names of sections that this method has finished visiting)

  • sectionallBranchesMissing (Dict[str, bool]) –

    Whether all the branches within some section are missing the key to search

    The keys are the names for each section and the values are whether the section has the key missing in all its branches

getMods(hashRepo: Hashes, indexRepo: Indices, version: float | None = None) Set[str]

Retrieves the corresponding mods the IfTemplate will fix to

Parameters:
  • hashRepo (Hashes) – The data source for the hashes

  • indexRepo (Indices) – The data source for the indices

  • version (Optional[float]) –

    What version we want to fix

    If this value is None, will assume we want to fix to the latest version

    Default: None

Returns:

Names of all the types of mods the IfTemplate will fix to

Return type:

Set[str]

isKeyFullyCover(key: str, sections: Dict[str, IfTemplate], visited: Set[str], sectionsKeyFullCover: Dict[str, bool]) bool

Checks whether a key appears in all branches of the IfTemplate

Parameters:
  • key (str) – The key to search

  • sections (Dict[str, IfTemplate]) –

    The available sections in the graph (IniSectionGraph) where this IfTemplate belongs to

    The keys are the names for each section and the values are the corresponding IfTemplate for each section

  • visited (Set[str]) – The names of the sections that have been visited by this method

  • sectionsKeyFullCover (Dict[str, bool]) – The result of whether a particular section has the target key after searching of its branches (names of sections that this method has finished visiting)

Returns:

Whether the key appears in all conditional branches

Return type:

bool

normalize()

Normalizes the branching structure within this ifTemplate to follosw the structure described at IfTemplateNormTree


IfTemplatePart

Methods
class IfTemplatePart

Base class for some part in an IfTemplates

toStr() str

Retrieves the part as a string

Returns:

The string representation of the part

Return type:

str


IfPredPart

Attributes
Methods
class IfPredPart(pred: str, type: IfPredPartType)

This class inherits from IfTemplatePart

Class for defining the predicate part of an IfTemplate

Note

see IfTemplate for more details

Parameters:
pred

The predicate string within the IfTemplate

Type:

str

type

The type of predicate encountered

Type:

IfPredPartType

toStr() str

Retrieves the part as a string

Returns:

The string representation of the part

Return type:

str


IfContentPart

Attributes
class IfContentPart(src: Dict[str, List[Tuple[int, str]]], depth: int)

This class inherits from IfTemplatePart

Class for defining the content part of an IfTemplate

Note

see IfTemplate for more details


Supported Operations:

key in x

Determines if ‘key’ exists in the content part of the IfContentPart

x[key]

Retrieves the corresponding data value from the IfContentPart based off ‘key’

  • If ‘key’ is an int, then will retrieve a tuple containing:

    1. The corresponding key for the KVP found

    2. The corresponding value to the found KVP

    3. The occurence index for the key of the KVP

  • Otherwise, will retrieve the corresponding value from IfContentPart.src()

for key, val, keyInd, orderInd in x

Iterates over all the key/value initializations and updates within the IfContentPart, x

The tuples to iterate over are as follows:

  1. key: (str) A particular key in the IfContentPart

  2. val: (str) The corresponding value to the key

  3. keyInd: (int) The occurence index of the same key within the IfContentPart

  4. orderInd: (:class:``int) The order index the KVP appears in the overall IfContentPart

Parameters:
  • src (Dict[str, List[Tuple[int, str]]]) –

    The source for the part in the IfTemplate

    • The keys are the name of the keys in the part

    • The values are the coresponding values for the keys for all instances where the particular key got instantiated/updated. Each element in the list contains:

      1. The order index the KVP was called within the part

      2. The value of the KVP

  • depth (int) – The depth the part is within the IfTemplate

src

The source for the part in the IfTemplate

  • The keys are the name of the keys in the part

  • The values are the coresponding values for the keys for all instances where the particular key got instantiated/updated. Each element in the list contains:
    1. The order index the KVP was called within the part

    2. The value of the KVP

Type:

Dict[str, List[Tuple[int, str]]]

depth

The depth the part is within the IfTemplate

Type:

int

_order
The order the `KVP`_s appear in the part. The elements contain:
  1. The name of the key for the KVP

  2. The occurence index of the key within the part

Type:

List[Tuple[str, int]]

addKVP(key: str, value: str, toFront: bool = False)

Adds a new KVP into the part

Parameters:
  • key (str) – The name of the key

  • value (str) – The corresponding value to the key

  • toFront (bool) –

    Whether to add the new KVP to the front of the part

    Warning

    Please see the warning at addKVPToFront()

addKVPToFront(key: str, value: str)

Adds a new KVP into the part

Warning

This operation will take O(n) time, where n is the # of `KVP`_s within the part

Parameters:
  • key (str) – The name of the key

  • value (str) – The corresponding value to the key

get(key: str | int, default: Any | None = None) List[Tuple[int, str]] | str | Any

Retrieves the corresponding data value from the IfContentPart based off ‘key’

  • If ‘key’ is an int, then will retrieve a tuple containing:

    1. The corresponding key for the KVP found

    2. The corresponding value to the found KVP

    3. The occurence index for the key of the KVP

  • Otherwise, will retrieve the corresponding value from IfContentPart.src()

If the ‘key’ is not found, then will return the value from ‘default’

Note

This is the same as the getitem operator specified for this class, but will return a default value if the key is not found

Paramters

key: Union[str, int]

The key to search for in this class

default: Optional[Any]

The default value to return if the key is not found

Default: None

returns:

Either the found value or the default value

rtype:

Union[List[Tuple[int, str]], Tuple[str, str, int], Any]

getVals(key: str) List[str]

Retrieves the corresponding values based off ‘key’

Parameters:

key (str) – The key to the values belong to

Returns:

The corresponding values found for the key

Return type:

List[str]

remapKeys(keyRemap: Dict[str, KeyRemapData | List[str | Tuple[str, Callable[[str, str], bool]] | RemappedKeyData]])

Remaps the keys in the `KVP`_s of the parts

Parameters:

keyRemap (Dict[str, Union[KeyRemapData, List[Union[str, Tuple[str, Callable[[str, str], bool]], RemappedKeyData]]]]) –

The remap for the keys, where:

  • The keys are the old names of the keys to be remapped

  • the values are either:

    • The data for remapping a particular key OR

    • A list containing either:

      • The new names of the keys to remap to OR

      • A tuple containing a new name for the key to remap to and a predicate that takes in the old key and value of whether to remap the key. OR

      • A class that contains all the necessary information for remapping to the new key

removeKey(key: str | Tuple[str, Callable[[Tuple[int, str]], bool]])

Removes a key from the part.

Parameters:

key (str) –

The key to remove.

  • If given only a string, will delete all instances of the key.

  • If given a tuple containing a string and a predicate, will delete all the keys that satisfy the predicate. The predicate takes in a tuple that contains:

    1. The order index where the corresponding KVP appeared

    2. The corresponding value for the KVP

removeKeys(keys: Set[str | Tuple[str, Callable[[Tuple[int, str]], bool]]])

Removes multiple keys from the part

Parameters:

keys (Set[Union[str, Callable[[Tuple[int, str]], bool]]]) –

The keys to remove.

  • If given only a string, will delete all instances of the key.

  • If given a tuple containing a string and a predicate, will delete all the keys that satisfy the predicate. The predicate takes in a tuple that contains:

    1. The order index where the corresponding KVP appeared

    2. The corresponding value for the KVP

replaceVals(newVals: Dict[str, str | List[str] | Tuple[str, Callable[[str], bool]]], addNewKVPs: bool = True)

Replaces the values in the `KVP`_s of the parts or adds in new `KVP`_s if the original key did not exist

Parameters:
  • newVals (Dict[str, Union[str, List[str], Tuple[str, Callable[[str], bool]]]]) –

    The new values for the KVP`_s in the parts :raw-html:`<br />

    • The keys are the corresponding keys for the `KVP`_s

    • The values can either contain:

      • A string, which represents the new value for all instances of the key OR

      • A list of strings, representing the individual new values for each instance of the key OR

      • A tuple containing a string and a predicate, representing the new value for certain instances of the key that satisfy the predicate. The predicate takes in the old value of the KVP as an argument

  • addNewKVPs (bool) –

    Whether to add new KVPs if the corresponding key in ‘newVals’ does not exist

    Default: None

property src

The raw content of the part

  • The keys are the names of the keys in the content part of the IfTemplate. Note that the same key can appear multiple times in a particular content part.

  • The values consists of:
    1. The order index the KVP appeared in the IfContentPart

    2. The corresponding value for the key

Getter:

Retrieves the raw content of the part

Setter:

Sets the raw content for the part

Type:

Dict[str, List[int, str]]

toStr(linePrefix: str = '') str

Retrieves the part as a string

Parameters:

linePrefix (str) –

The string that will prefix every line

Default: None

Returns:

The string representation of the part

Return type:

str


KeyRemapData

class KeyRemapData(remappedKeys: List[RemappedKeyData], keepKeyWithoutRemap: bool = False)

Class to store data about a remapping a particular register


Supported Operations:

x[ind]

Retrieves the corresponding RemappedKeyData based off the index, ‘ind’

len(x)

Retrieves the number of keys to remap to

for remapped key in x

Iterates through all the data of the keys to remap to

Parameters:
  • remappedKeys (List[RemappedKeyData]) – The new registers to remap the old register to

  • keepKeyWithoutRemap (bool) –

    Whether retain the old register, if the old register does not get remapped

    Default: False

remappedKeys

The new registers to remap the old register to

Type:

List[RemappedKeyData]

keepKeyWithoutRemap

Whether retain the old register, if the old register does not get remapped

Type:

bool

classmethod build(remappedKeys: KeyRemapData | List[str | Tuple[str, Callable[[str, str], bool]] | RemappedKeyData], keepKeyWithoutRemap: bool = False) KeyRemapData

Build the object based off the raw ‘remappedKeys’ provided

Parameters:
  • remappedKeys (Union[KeyRemapData, List[Union[str, Tuple[str, Callable[[str, str], bool]], RemappedKeyData]]]) –

    raw data to provide into the object that contains either:

    • The data for remapping a particular key OR

    • A list containing:

      • The new names of the keys to remap to OR

      • A tuple containing a new name for the key to remap to and a predicate that takes in the old key and value of whether to remap the key. OR

      • A class that contains all the necessary information for remapping to the new key

  • keepKeyWithoutRemap (bool) –

    Whether retain the old register, if the old register does not get remapped

    Default: False


RemappedKeyData

Attributes
class RemappedKeyData(key: str, check: Callable[[str, str], bool] | None = None, toInd: int | None = None)

Class to store data about a remapped register within a .ini section

Parameters:
  • key (str) – The new register name to remap the old register to

  • check (Optional[Callable[[str, str], bool]]) –

    Predicate to check whether to remap to the new register

    The predicate takes in:

    1. the old register name

    2. the old register value



    Default: None

  • toInd (Optional[int]) –

    Whether to shift the remapped register to a particular index within the IfContentPart

    Default: None

key

The new register name to remap the old register to

Type:

str

check

Predicate to check whether to remap to the new register

Type:

Callable[[str, str], bool]

toInd

Whether to shift all the remapped register to a particular index within the IfContentPart

Type:

Optional[int]

classmethod build(data: str | Tuple[str, Callable[[str, str], bool]] | RemappedKeyData) RemappedKeyData

Builds the object based off the raw ‘data’ provided

Parameters:

data (Union[str, Tuple[str, Callable[[str, str], bool]]]) –

The data to provide into the RemappedKeyData class

The provided data either contains:

  • The new name of the key to remap to OR

  • A tuple containing a new name for the key to remap to and a predicate that takes in the old key and old value of whether to remap the key. OR

  • The object that contains all the necessary information for remapping to the new key

Returns:

The constructed object

Return type:

RemappedKeyData


IfTemplateTree

Attributes
class IfTemplateTree

The parse tree for some IfTemplate

Note

The parse tree for the IfTemplate is structured such that:

  • A node conposes of IfContentPart or other nodes

  • The children to the node occurs when the node enters a specific branching condition

eg. Suppose we have this branching structure

 1...(does stuff)...
 2if ...(bool)...
 3    if ...(bool)...
 4        ...(does stuff)...
 5    else if ...(bool)...
 6        ...(does stuff)...
 7    endif
 8else ...(bool)...
 9    ...(does stuff)...
10    if ...(bool)...
11        if ...(bool)...
12            ...(does stuff)...
13        endif
14        ...(does stuff)...
15    endif
16    ...(does stuff)...
17    if
18    endif
19endif
20...(does stuff)...


Let C be some IfContentPart (the parts that says …(does stuff)…) Let B be some branching point (the parts that say if or else) Let […] be some node Let X be a node without any parts

The parse tree generated for the above code would be:

       [C B B C]
          | |
     +----+ +----+
     |           |
   [B B]     [C B C B]
    | |         |   |
 +--+ +--+    [B C] X
 |       |     |
[C]     [C]   [C]
clear()

Clears the tree

classmethod construct(parts: List[IfTemplatePart])

Constructs the parse tree

Parameters:

parts (List[IfTemplatePart]) – The parts within the IfTemplate

property root

The root node in the parse tree

Getter:

Retrieves the root node

Type:

IfTemplateNode


IfTemplateNonEmptyNodeTree

class IfTemplateNonEmptyNodeTree

This class inherits from IfTemplateTree

A variation of IfTemplateTree such that leaf nodes that do not have any parts (eg. empty conditions) will include a empty IfContentPart placeholder.

Tip

See IfTemplateTree on the basic structure of the parse tree for an IfTemplate



So conditions with forms of:

if
endif

that have the following parse subtree:

[B]
 |
 X

will now become:

if
    ...(does nothing)...
endif

with the following parse subtree:

[B]
 |
[C]



Note

eg. Suppose we have this branching structure (same structure from the example at IfTemplateTree)

 1...(does stuff)...
 2if ...(bool)...
 3    if ...(bool)...
 4        ...(does stuff)...
 5    else if ...(bool)...
 6        ...(does stuff)...
 7    endif
 8else ...(bool)...
 9    ...(does stuff)...
10    if ...(bool)...
11        if ...(bool)...
12            ...(does stuff)...
13        endif
14        ...(does stuff)...
15    endif
16    ...(does stuff)...
17    if
18    endif
19endif
20...(does stuff)...


Let C be some IfContentPart (the parts that says …(does stuff)…) Let B be some branching point (the parts that say if or else) Let […] be some node Let X be a node without any parts

The parse tree generated for the above code would be:

       [C B B C]
          | |
     +----+ +----+
     |           |
   [B B]     [C B C B]
    | |         |   |
 +--+ +--+    [B C] |
 |       |     |    |
[C]     [C]   [C]  [C]
clear()

Clears the tree

classmethod construct(parts: List[IfTemplatePart])

Constructs the parse tree

Note

The construction may change ‘parts’

Parameters:

parts (List[IfTemplatePart]) – The parts within the IfTemplate

property root

The root node in the parse tree

Getter:

Retrieves the root node

Type:

IfTemplateNode


IfTemplateNormTree

Attributes
class IfTemplateNormTree

This class inherits from IfTemplateNonEmptyNodeTree

A variation of IfTemplateNonEmptyNodeTree such that an empty else clause will be added for branches that do not end with a single else

Tip

See IfTemplateTree on the basic structure of the parse tree for an IfTemplate



So conditions with forms of:

if
    ...(does stuff)...
else if
    ...(does stuff)...
endif

that have the following parse subtree:

  [B B]
   | |
 +-+ +-+
 |     |
[C]   [C]

will now become:

if
    ...(does stuff)...
else if
    ...(does stuff)...
else
    ...(does nothing)...
endif

with the following parse subtree:

  [B B B]
   | | |
 +-+ | +-+
 |  [C]  |
[C]     [C]



Note

eg. Suppose we have this branching structure (same structure from the example at IfTemplateTree)

 1...(does stuff)...
 2if ...(bool)...
 3    if ...(bool)...
 4        ...(does stuff)...
 5    else if ...(bool)...
 6        ...(does stuff)...
 7    endif
 8else ...(bool)...
 9    ...(does stuff)...
10    if ...(bool)...
11        if ...(bool)...
12            ...(does stuff)...
13        endif
14        ...(does stuff)...
15    endif
16    ...(does stuff)...
17    if
18    endif
19endif
20...(does stuff)...


This class will turn this branching structure into:

 1...(does stuff)...
 2if ...(bool)...
 3    if ...(bool)...
 4        ...(does stuff)...
 5    else if ...(bool)...
 6        ...(does stuff)...
 7    else
 8        ...(does nothing)...
 9    endif
10else ...(bool)...
11    ...(does stuff)...
12    if ...(bool)...
13        if ...(bool)...
14            ...(does stuff)...
15        else
16            ...(does nothing)...
17        endif
18        ...(does stuff)...
19    else
20        ...(does nothing)...
21    endif
22    ...(does stuff)...
23    if
24        ...(does nothing)...
25    else
26        ...(does nothing)...
27    endif
28endif
29...(does stuff)...

Let C be some IfContentPart (the parts that says …(does stuff)…) Let B be some branching point (the parts that say if or else) Let […] be some node Let X be a node without any parts

The parse tree generated for the above code would be:

         [C B B C]
            | |
        +----+ +-------+
        |              |
   [B B B]         [C B B C B B]
    | | |             | |   | |
 +--+ | +-+         +-+ +-+ | +--+
 |    |   |         |     | |    |
[C]  [C] [C]     [B B C]  | +-+  |
                  | |     |   | [C]
                +-+ |    [C]  |
                |   |        [C]
               [C] [C]
clear()

Clears the tree

classmethod construct(parts: List[IfTemplatePart])

Constructs the parse tree

Note

The construction may change ‘parts’

Parameters:

parts (List[IfTemplatePart]) – The parts within the IfTemplate

property root

The root node in the parse tree

Getter:

Retrieves the root node

Type:

IfTemplateNode


IfTemplateNode

class IfTemplateNode(id: Hashable | None = None, ifPredPart: IfPredPart | None = None)

This class inherits from Node

A node within the parse tree of the IfTemplate. This node contains a subset of the IfContentPart from the original IfTemplate

Note

For more details on the structure of the parse tree of an IfTemplate, see IfTemplateTree

Parameters:
  • id (Optional[Hashable]) –

    The id for the node

    If this argument is None, then will generate the id for the node using generateId()

  • ifPredPart (Optional[IfPredPart]) – The predicate part that is associated with this node

id

The id for the node

Type:

Hashable

children

The children to this node

The keys are the ids of the children nodes and the values are the corresponding nodes for the children

Type:

Dict[Hashable, IfTemplateNode]

parts

The parts of the IfTemplate within the node

Type:

List[Union[IfContentPart, IfTemplateNode]]

partInd

The index of some IfContentPart within the IfTemplate

The keys are the index position of the IfContentPart within this node and the values are the index position of the IfContentPart within the IfTemplate

Type:

Dict[int, int]

addChild(node: IfTemplateNode)

Adds a child to the node

Parameters:

node (IfTemplateNode) – The child to be added

addIfContentPart(part: IfContentPart)

Adds an IfContentPart to the node

Parameters:

part (IfContentPart) – The content part of the IfTemplate to add to this node

classmethod generateId() Hashable

Generates a new id for the node

getKeyMissingPart(key: str) Tuple[IfContentPart | None, bool]

Retrieves the first IfContentPart if ‘key’ is not found in this node, without accounting for the key being in any other subcommands or other children nodes

Parameters:

key (str) – The key to find

Returns:

A tuple containing:

  1. The first part found, if all the :class:`IfContent`s within the node does not contain the key

  2. Whether a IfContentPart is found within the node

Return type:

Tuple[Optional[IfContentPart], bool]

getKeyValues(key: str) List[List[Tuple[int, str]]]

Retrieves all the corresponding values to a certain key within the node

Parameters:

key (str) – The key to find

Returns:

All the corresponding values to the key in the node

  • The outer elements in the list are the values for each part in the node

  • The inner elements of the list are the different instance of the KVP within each part

  • The tuple contains the order index an occurence of the KVP appears in the part and the corresponding value for the KVP

Return type:

List[List[Tuple[int, str]]]

hasKey(key: str) bool

Purely checkes whether the key exists within the parts of the node without accounting for whether the key exists in other subcommands called by this node or other children nodes that have the key

Paramters

key: str

The key to check

returns:

Whether the key exists

rtype:

bool

property id: Hashable

The id of the node

Getter:

Returns the id for the node

Type:

Hashable


IniSectionGraph

class IniSectionGraph(targetSections: Set[str] | List[str], allSections: Dict[str, IfTemplate], remapNameFunc: Callable[[str, str], str] | None = None, modsToFix: Set[str] | None = None)

Class for constructing a directed subgraph for how the sections in the .ini file are ran


Note

  • The nodes are the sections of the .ini file

  • The directed edges are the command calls from the sections , where the source of the edge is the caller and the sink of the edge is the callee

Parameters:
  • sections (Set[str]) – Names of the desired sections we want our subgraph to have from the sections of the .ini file

  • allSections (Dict[str, IfTemplate]) –

    All the sections for the .ini file


    Note

    You can think of this as the adjacency list for the directed graph of all sections in the .ini file

  • remapNameFunc (Optional[Callable[[str, str], str]]) –

    Function to get the corresponding remap names for the section names

    If this value is None, then will not get the remap names for the sections

    The parameters for the function are:

    1. Name of the section

    2. Name fo the type of mod to fix

    Default: False

  • modsToFix (Optional[Set[str]]) –

    The names of the mods that will be fixed by the .ini file

    Default: None

remapNameFunc

Function to get the corresponding remap names for the section names

The parameters for the function are:

  1. Name of the section

  2. Name fo the type of mod to fix

Type:

Optional[Callable[[str, str], str]]

_dfsExplore(section: IfTemplate, visited: Dict[str, IfTemplate], runSequence: List[Tuple[str, IfTemplate]])

The typical recursive implementation of DFS for exploring a particular section (node)

Parameters:
property allSections

All the sections of the .ini file


Note

You can think of this as the adjacency list for the directed graph of all sections in the .ini file

Getter:

All the sections for the .ini file

Setter:

Constructs a new subgraph based on the new sections for the .ini file

Type:

Dict[str, IfTemplate]

build(newTargetSections: Set[str] | List[str] | None = None, newAllSections: Dict[str, IfTemplate] | None = None, newModsToFix: Set[str] | None = None)

Performs the initialization for rebuilding the subgraph

Parameters:
  • newTargetSections (Optional[Set[str], List[str]]) –

    The new desired sections we want in our subgraph

    Default: None

  • newAllSections (Optional[Dict[str, IfTemplate]]) –

    The new sections for the .ini file

    Default: None

  • newModsToFix (Optional[Set[str]]) –

    The new desired names of the mods that we want to fix for the .ini file

    Default: None

construct() Dict[str, IfTemplate]

Constructs the subgraph for the sections using DFS

Returns:

The sections that are part of the subgraph

Return type:

Dict[str, IfTemplate]

getCommonMods(hashRepo: Hashes, indexRepo: Indices, version: float | None = None) Set[str]

Retrieves the common mods to fix to based off all the :class:`IfTemplate`s in the graph

Parameters:
  • hashRepo (Hashes) – The data source for all the hashes

  • indexRepo (Indices) – The data source for all the indices

  • version (Optional[float]) –

    The version we want to fix to

    If this value is None, then will assume we want to fix to the latest version

    Default: None

Returns:

The common mods to fix to

Return type:

Set[str]

getKeyMissingParts(key: str) Dict[str, Set[IfContentPart]]

Retrieves the parts in the sections that are not covered by ‘key’

Parameters:

key (key) – The target key to search

Returns:

The result for each section of the parts that ‘key’ does not cover

Tip

To filter only the result for sections that are the source nodes of the graph, you can call targetsGetKeyMissingParts() instead

Return type:

Dict[str, bool]

getRemapNames(newModsToFix: Set[str] | None = None) Dict[str, Dict[str, str]]

Retrieves the corresponding remap names of the sections made by this fix

Parameters:

newModsToFix (Optional[Set[str]]) –

The new desired names of the mods that we want to fix for the .ini file

Default: None

Returns:

The new names for the sections with the ‘FixRemap’ keyword added

Return type:

Dict[str, str]

getSection(sectionName: str, raiseException: bool = True) IfTemplate | None

Retrieves the IfTemplate for a certain section

Parameters:
  • sectionName (str) – The name of the section

  • raiseException (bool) – Whether to raise an exception when the section’s IfTemplate is not found

Raises:

KeyError – If the IfTemplate for the section is not found and raiseException is set to True

Returns:

The corresponding IfTemplate for the section

Return type:

Optional[IfTemplate]

isKeyFullyCover(key: str) Dict[str, bool]

Determines whether a key fully covers all the conditional branches of a section

Parameters:

key (key) – The target key to search

Returns:

The result for each section of whether the section has the key fully covering all its conditional branches

Tip

To filter only the result for sections that are the source nodes of the graph, you can call targetsAreFullyCovered() instead

Return type:

Dict[str, bool]

property modsToFix

The names of the mods that will be fixed by the .ini file

Getter:

Retrieves the names of the mods to fix

Type:

Set[str]

property remapNames

The corresponding names for the sections that the fix will make

  • The outer key is the name of the original section

  • The inner key is the name for the type of mod to fix

  • The inner value is the corresponding name for the section and mod type

Getter:

All the corresponding names for the sections

Type:

Dict[str, Dict[str, str]]

property runSequence

The order the sections will be ran

Getter:

Retrieves the order the sections will be ran

Type:

List[Tuple[str, IfTemplate]]

property sections

The sections that are part of the contructed subgraph based on the desired sections specified at IniSectionGraph.targetSections


Note

You can think of this as the adjacency list for the subgraph

Getter:

All the sections for the subgraph

Type:

Dict[str, IfTemplate]

property targetSections: List[str]

Names of the desired sections we want our subgraph to have from the sections of the .ini file

Getter:

The names of the desired sections we want in the subgraph

Setter:

Constructs a new subgraph based on the new desired sections we want

Type:

List[str]

targetsAreFullyCovered(key: str) Dict[str, bool]

Convenience function of isKeyFullyCover() to determine whether the target sections from targetSections() are fully covered by a key in all their conditional branches

Parameters:

key (key) – The target key to search

Returns:

The result for the target sections of whether the section has the key fully covering all its conditional branches

Return type:

Dict[str, bool]

targetsGetKeyMissingParts(key: str) Dict[str, bool]

Convenience function of getKeyMissingParts() to get the parts referenced by the target sections from targetSections() that do not contain ‘key’

Parameters:

key (key) – The target key to search

Returns:

The result for the target sections for the parts that do not contain ‘key’

Return type:

Dict[str, bool]



Ini Classifiers

These entities help identify what type of mod the software is fixing


BaseIniClassifier

Methods
class BaseIniClassifier

Base class to help classify the type of mod given the mod’s .ini files

classify(iniTxt: str | List[str], checkIsMod: bool = True, checkIsFixed: bool = True) IniClassifyStats

Determines the type of mod given the text from the mod’s .ini file

Parameters:
  • iniTxt (Union[str, List[str]]) –

    The text of the .ini file to read from, given as either:

    • the full text OR

    • lines of text with each line ending with a newline character

  • checkIsMod (bool) –

    Whether to fully check the .ini file belongs to a mod

    Default: True

  • checkIsFixed (bool) –

    Whether to fully check the .ini file has been fixed

    Default: True

Returns:

The stats about the classification of the .ini file

Return type:

IniClassifyStats


IniClassifier

class IniClassifier(builder: BaseIniClassifierBuilder | None = None, ahoCorasickCls: Type[BaseAhoCorasickDFA] | None = None)

This class inherits from BaseIniClassifier

Class to help classify the type of mod given the mod’s .ini files

This classifier will read each line in the .ini file, and performs the following:

  • Keywords in a line are first quickly identified and filtered using Aho-Corasick . The large majority of the lines in a .ini file will be identified through this method.

  • State information between different lines in a .ini file are stored in a DFA

  • If there are any further ambiguity that keyword searching cannot solve, will perform any needed post-processing on the line (eg. regex matching). Very little to no lines in a .ini file will need to resort to such method.

Parameters:
  • builder (Optional[BaseIniClassifierBuilder]) –

    The builder used to build the data within the classifier

    If this argument is None, the constructor will not automatically build the data in the classifier and the user must call build()

    Default: None

  • ahoCorasickCls (Optional[Type[:class:BaseAhoCorasickDFA`]]) –

    The class implementation of Aho-Corasick to use

    If this parameter is None, then will try to FastAhoCorasickDFA if possible, otherwise will fall back to AhoCorasickDFA

    Default: None

builder

The builder used to build the data within the classifier, if available

Type:

Optional[BaseIniClassifierBuilder]

_keywordDFA

The DFA that will use Aho-Corasick to quickly search/filter keywords in a line in the .ini file

Type:

BaseAhoCorasickDFA

_stateDFA

The DFA that will store state information

Type:

DFA

_addTransition(srcStateId: Hashable, transition: str, destStateId: Hashable, transitionVal: ModType | None | IniClsAction | Callable[[IniClsActionArgs], Any])

Convenience function to add a transition to the classifier

Parameters:
  • srcStateId (Hashable) – The id of the source state

  • transition (str) – The keyword to trigger the transition

  • destStateId (Hashable) –

    The id of the destionation state

    Note

    If this state is created from this function, the state will not be an accepting state

  • transitionVal (Union[Optional[ModType], IniClsAction, Callable[[IniActionArgs], Any]]) – The corresponding value to store at the transition

_transition(stats: IniClassifyStats, line: str, keyword: str, keywordInd: int = -1, keywordEndInd: int = -1, keywordVals: IniClsTransitionVals | None = None)

Transitions the classifier to another state

Parameters:
  • stats (IniClassifyStats) – The resultant stats to store the classification result of the .ini file

  • line (str) – The line in the .ini file that was read

  • keyword (str) – The keyword found from the line of the .ini file read

  • keywordInd (int) –

    The index where the keyword was found

    Default: -1

  • keywordEndInd (int) –

    The ending index of where the keyword was found

    Default: -1

  • keywordVals (IniClsTransitionVals) –

    The corresponding values for the keyword found

    Default: None

build(builder: BaseIniClassifierBuilder)

Rebuilds the classifier

Parameters:

builder (BaseIniClassifierBuilder) – The builder to help build the classifier

checkOnlyIsFixedOrisMod(line: str, stats: IniClassifyStats)

Reads a line in the .ini file and checks whether the line contains keywords for:

  1. Whether the .ini file belongs to a mod OR

  2. Whether the .ini file is fixed

Parameters:
  • line (str) – The line from the .ini file to read

  • stats (IniClassifyStats) – The resultant stats to store the classification result of the .ini file

classify(iniTxt: str | List[str], checkIsMod: bool = True, checkIsFixed: bool = True) IniClassifyStats

Determines the type of mod given the text from the mod’s .ini file

Parameters:
  • iniTxt (Union[str, List[str]]) –

    The text of the .ini file to read from, given as either:

    • the full text OR

    • lines of text with each line ending with a newline character

  • checkIsMod (bool) –

    Whether to fully check the .ini file belongs to a mod

    Default: True

  • checkIsFixed (bool) –

    Whether to fully check the .ini file has been fixed

    Default: True

Returns:

The stats about the classification of the .ini file

Return type:

IniClassifyStats

clear()

Clears all the saved data in the classifier

classmethod getSectionName(line: str) str

Retrieves the name of a section from a line in the .ini file

Parameters:

line (str) – The line from the .ini file to retrieve the section name from

Returns:

The retrieved name

Return type:

str

readLine(line: str, stats: IniClassifyStats)

Reads a single line in a .ini file

Note

If you do not care about what type of mod is returned and only want to know whether the .ini file belongs to a mod or has already been fixed, then it is recommended to use the checkOnlyIsFixedOrisMod() method instead for faster computation

Parameters:
  • line (str) – The line in the .ini file

  • stats (IniClassifyStats) – The resultant stats to store the classification result of the .ini file

reset()

Resets the state the classifier is at

setIsFixed(keyword: str, stats: IniClassifyStats)

Marks the .ini file to be fixed, after checking ‘keyword’

Parameters:
  • keyword (str) – The keyword to trigger the .ini file to be considered as fixed

  • stats (IniClassifyStats) – The resultant stats to store the classification result of the .ini file

setIsFixedAndIsMod(keyword: str, stats: IniClassifyStats)

Marks the .ini file to belong to a mod and is fixed, based off the ‘keyword’s

Parameters:
  • keyword (str) – The keyword to trigger the .ini file to be a .ini file that belongs to some mod and the .ini file to be fixed

  • stats (IniClassifyStats) – The resultant stats to store the classification result of the .ini file

setIsMod(keyword: str, stats: IniClassifyStats)

Marks the .ini file to belong to a mod, based off the ‘keyword’

Parameters:
  • keyword (str) – The keyword to trigger the .ini file to be a .ini file that belongs to some mod

  • stats (IniClassifyStats) – The resultant stats to store the classification result of the .ini file


BaseIniClassifierBuilder

Methods
class BaseIniClassifierBuilder

Base class to help build/customize a IniClassifier

build(classifier: IniClassifier) IniClassifier

Builds/customize a IniClassifier

Parameters:

classifier (IniClassifier) – The classifier to build

Returns:

The classifier that has been built

Return type:

IniClassifier


IniClassifierBuilder

class IniClassifierBuilder

This class inherits from BaseIniClassifierBuilder

Class to help build/customize a IniClassifier used for this software

_startStateId

The id for the root state

Type:

str

_textureOverrideId

The id for the TextureOverride state

Type:

str

_addKeywordGroup(classifier: IniClassifier, keywords: List[str], srcStateId: Hashable, keywordsStateId: Hashable, transitionVal: ModType | None | IniClsAction | Callable[[IniClassifier, IniClassifyStats, str, str, Hashable, Hashable, bool, bool], Any])

Convenience function to add many keywords that transition from the same source state to the same destionation state

Parameters:
  • classifier (IniClassifier) – The classifier to identify mods from .ini files

  • keywords (List[str]) – The keywords to add

  • srcStateId (Hashable) – The id of the source state

  • keywordsStateId (Hashable) –

    The id of the destionation state

    Note

    If this function creates the destionation state, the destionation state will not be an accepting state

  • transitionVal (Union[Optional[ModType], IniClsAction, Callable[[IniClassifier, IniClassifyStats, str, str, Hashable, Hashable, bool, bool], Any]]) –

    The corresponding value to store at the transition

    If this value is a function, refer to IniClsAction.run() for the specifics of what paramters to pass to the function

addGIModType(classifier: IniClassifier, modType: ModType, keywords: Dict[str | None, str | None | Pattern | Callable[[IniClsActionArgs], bool]])

Convenience function to add a mod type from the game GI

Parameters:
  • classifier (IniClassifier) – The classifier to identify mods from .ini files

  • modType (ModType) – The type of mod to register

  • keywords (Dict[Optional[str, Union[Optional[str, Pattern, Callable[[IniClsActionArgs], bool]]]]]) –

    The keywords used to identify the mod

    • The keys are the keywords to identify the type of mod when reading a line from the .ini file

    • The values are any further checks to verify the keyword

      1. If value is a string, then will check if a line in the .ini file equals to this value

      2. If value is a regex pattern, then will check if a line in the .ini file matches this regex pattern

      3. If this value is a function, then will check if a line in the .ini file will make the function for this value return True

build(classifier: IniClassifier)

Builds/customize a IniClassifier

Parameters:

classifier (IniClassifier) – The classifier to build

Returns:

The classifier that has been built

Return type:

IniClassifier


IniClassifyStats

Attributes
class IniClassifyStats(modType: ModType | None = None, isMod: bool = False, isFixed: bool = False)

A class that stores the statistics about the classification result of a .ini file

Parameters:
  • modType (Optional[ModType]) – The type of mod found

  • isMod (bool) – Whether the .ini file belongs to a mod

  • isFixed (bool) – Whether the .ini file is fixed

modType

The type of mod found

Type:

Optional[ModType]

isMod

Whether the .ini file belongs to a mod

Type:

bool

isFixed

Whether the .ini file is fixed

Type:

bool


IniClsActionArgs

class IniClsActionArgs(classifier: IniClassifier, stats: IniClassifyStats, line: str, keyword: str, keywordInd: int, keywordEndInd: int, prevStateId: Hashable, currentStateId: Hashable, isAccept: bool, transitionMade: bool)

Class to store the arguments for a IniClsAction

Parameters:
  • classifier (IniClassifier) – The classifier to identify a mod given a .ini file

  • stats (IniClassiyStats) – The resultant stats about the classification of the .ini file

  • line (str) – The current line being read from the .ini file

  • keyword (str) – The keyword found from the current line read from the .ini file

  • keywordInd (int) – The start index where the keyword was found

  • keywordEndInd (int) – The end index of the keyword

  • prevStateId (Hashable) – The id of the previous state the classifier was on

  • currentStateId (Hashable) – The id of the current state the classifier is on

  • isAccept (bool) – Whether the current state is an accepting state

  • transitionMade (bool) – Whether a transition was made from the prevous state to the current state

classifier

The classifier to identify a mod given a .ini file

Type:

IniClassifier

stats

The resultant stats about the classification of the .ini file

Type:

IniClassiyStats

line

The current line being read from the .ini file

Type:

str

keyword

The keyword found from the current line read from the .ini file

Type:

str

keywordInd

The start index where the keyword was found

Type:

int

keywordEndInd

The end index of the keyword

Type:

int

prevStateId

The id of the previous state the classifier was on

Type:

Hashable

currentStateId

The id of the current state the classifier is on

Type:

Hashable

isAccept

Whether the current state is an accepting state

Type:

bool

transitionMade

Whether a transition was made from the prevous state to the current state

Type:

bool


IniClsAction

class IniClsAction

Base class to handle any post-processing action to run after the IniClassifier transitions to a new state when a keyword is found in a line


Supported Operations:

x(args)

Runs the action x on the passed in arguments from IniClsActionArgs


IniClsCond

Attributes
class IniClsCond(conds: List[Callable[[IniClsActionArgs], bool]], actions: List[IniClsAction | Callable[[IniClsActionArgs], Any]], default: IniClsAction | None | Callable[[IniClsActionArgs], Any])

This class inherits from IniClsAction

An action for the IniClassifier to handle branching conditions


Supported Operations:

x(classifier, line, keyword, prevStateId, currentStateId, isAccept, transtionMade)

Calls run() for the IniClsCond, x

Parameters:
  • conds (List[Callable[[IniClsActionArgs], bool]]) –

    A list of predicates to evaluate.

    Tip

    For a condition at position i in conds (conds[i]), you can assume the set of values that will be evaulated at this condition will be the values that do not satisfy the previous conditions (does not satisfy any condition at position j, where j < i)

    Simply, the standard if … else … structure you expect from other programming languages

  • actions (List[Union[IniClsAction, Callable[[IniClsActionArgs], Any]]]) – The actions to run after its corresponding predicate at ‘conds’ is evaluated to be true

  • default (Union[Optional[IniClsAction], Callable[[IniClsActionArgs], Any]]) – The default action to run if none of the predicates are satisfied

conds

A list of predicates to evaluate.

Type:

List[Callable[[IniClsActionArgs], bool]]

actions

The actions to run after its corresponding predicate at ‘conds’ is evaluated to be true

Type:

List[Union[IniClsAction, Callable[[IniClsActionArgs], Any]]]

default

The default action to run if none of the predicates are satisfied

Type:

Union[Optional[IniClsAction], Callable[[IniClsActionArgs], Any]]


IniClsTransitionVals

Methods
class IniClsTransitionVals(dict=None, /, **kwargs)

This class inherits from UserDict

Stores the values corresponding to the keyword transitions of IniClassifier

clear() None.  Remove all items from D.
get(k[, d]) D[k] if k in D, else d.  d defaults to None.
items() a set-like object providing a view on D's items
keys() a set-like object providing a view on D's keys
pop(k[, d]) v, remove specified key and return the corresponding value.

If key is not found, d is returned if given, otherwise KeyError is raised.

popitem() (k, v), remove and return some (key, value) pair

as a 2-tuple; but raise KeyError if D is empty.

setdefault(k[, d]) D.get(k,d), also set D[k]=d if k not in D
update([E, ]**F) None.  Update D from mapping/iterable E and F.

If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k, v in F.items(): D[k] = v

values() an object providing a view on D's values



Ini Parsers

Entities to help read and analyze a .ini file.


BaseIniParser

Attributes
Methods
class BaseIniParser(iniFile: IniFile)

Base class to parse a .ini file

Parameters:

iniFile (IniFile) – The .ini file to parse

_modsToFix

The name of the mods that will be fixed to

Type:

Set[str]

_iniFile

The .ini file that will be parsed

Type:

IniFile

clear()

Clears any saved data

parse()

Parses the .ini file


IniParseBuilder

Attributes
Methods
class IniParseBuilder(buildCls: Type[BaseIniParser] | IniParseBuilderArgs, args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None)

This class inherits from Builder

A class to help dynamically build a BaseIniParser

Parameters:
  • buildCls (Union[Type[BaseIniParser], IniParseBuilderArgs]) –

    Either:

    1. The class to construct a BaseIniFixer OR

    2. Some provider that gives the required arguments needed for this class

  • args (Optional[List[Any]]) –

    The constant arguments used to build the object

    Note

    If the buildCls attribute is not a class of type Type[BaseIniParser], then this parameter has no effect

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    The constant keyword arguments used to build the object

    Note

    If the buildCls attribute is not a class of type Type[BaseIniParser], then this parameter has no effect

    Default: None

_buildCls

The class for the parser, if available

Type:

Optional[Type[BaseIniParser]]

_builderArgs

The provider for the arguments of this class, if available

Type:

Optional[IniParseBuilderArgs]

build(iniFile: IniFile, modName: str | None = None, version: int | None = None) BaseIniParser

Builds the parser

Parameters:
  • iniFile (IniFile) – The .ini file to parse

  • modeName (Optional[str]) –

    The name of the mod to build the parser for

    If this argument is None, then will use the mod name extracted from IniFile.availableType

    Warning

    This argument has no effect if _buildCls is not None

    Default: None

  • version (Optional[int]) –

    The game version to fix the mod to

    If this argument is None, will build the parser for the latest version of the game

    Warning

    This argument has no effect if _buildCls is not None

    Default: None

Returns:

The built parser

Return type:

BaseIniParser


GIMIParser

class GIMIParser(iniFile: IniFile, bufDownloads: Dict[str, Dict[str, DownloadData]] | None = None)

This class inherits from BaseIniParser

Parses a .ini file used by a GIMI related importer

Parameters:
  • iniFile (IniFile) – The .ini file to parse

  • bufDownloads (Optional[Dict[str, Dict[str, DownloadData]]]) –

    The .buf files to download if the mod is missing some required .buf files



    eg.

    {IniKeywords.Position.value: {"vb0": ("Position", FileDownload("someServer.com/Position.buf", "Position.buf", {"type": "buffer", "stride": "40"}))},
     IniKeywords.Blend.value: {"vb1": ("Blend", FileDownload("someServer.com/Blender.buf", "Blend.buf", {})), "vb999": ("NonExistantBlend", FileDownload("someServer.com/NonExistentBlend.buf", "fakeBlend.buf", {"type": "fakenews"}))},
     IniKeywords.Texcoord.value: {"ps-t0": ("Texcoord", FileDownload("someServer.com/texcoord.buf", "textensor.buf", {"model": "resnet50"}))}}
    



    Default: None

blendCommandsGraph

All the sections that are called by the [TextureOverride.*Blend.*] section.

Type:

IniSectionGraph

blendResourceCommandsGraph

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:

IniSectionGraph

positionCommandsGraph

All the sections called by the [TextureOverride.*Position.*] section.

Type:

IniSectionGraph

positionResourceCommandsGraph

All the related sections to the [Resource.*Position.*] sections that are used by sections related to the [TextureOverride.*Position.*] sections. The keys are the name of the sections

Type:

IniSectionGraph

texcoordCommandsGraph

All the sections that use some [Resource.*Texcoord.*] section.

Type:

IniSectionGraph

otherHashIndexCommandsGraph

All the sections that do not belong in the above section graphs and contains the target hashes/indices that need to be replaced

Type:

IniSectionGraph

_sectionRoots

The names of the sections that are the root nodes to a particular group of sections in the section caller/callee graph
:raw-html:`<br />`par

The keys are the ids for a particular group of sections and the values are the root section names for that group

Type:

Dict[str, List[str]]

bufDownloads

The .buf files to download if the mod is missing some required .buf files

Type:

Dict[str, Dict[str, DownloadData]]

_getSectionRoots()

Retrieves the root sections names that correspond to a either TextureOverride.*Blend or TextureOverride.*Position

_makeRemapModels(result: Dict[str, IniFixResourceModel], resourceGraph: IniSectionGraph, getFixedFile: Callable[[str], str] | None = None, modsToFix: Set[str] | None = None)

Creates all the data needed for fixing the [Resource.*Blend.*] sections in the .ini file

Parameters:
  • result (Dict[str, IniResourceModel]) –

    The result to store the data for fixing the resource sections

    The keys are the original names for the resource sections and the values are the required data for fixing the sections

  • resourceGraph (IniSectionGraph) – The graph of sections for the resources

  • getFixedFile (Optional[Callable[[str], str]]) –

    The function for transforming the file path of a found .*Blend.buf file into a .*RemapBlend.buf file

    If this value is None, then will use IniFile.getFixedBlendFile()

    Default: None

  • modsToFix (Optional[Set[str]]) –

    The mods to fix

    If this value is None, then will use _modsToFix

    Default: None

_setToFix() Set[str]

Sets the names for the types of mods that will used in the fix

Returns:

The names of the mods that will be used in the fix

Return type:

Set[str]

clear()

Clears any saved data

hasDownloads() bool

Whether there are required downloads needed to be added

Note

requires setupDownloads() to be ran first

Returns:

Whether downloads are needed to be added

Return type:

bool

makeRemapData()

Creates any required remap internal data required by the fix

normalizeSections(sectionGraph: IniSectionGraph)

Normalize all the referenced sections within ‘sectionGraph’ to follow the branching structure described at IfTemplateNormTree

Parameters:

sectionGraph (IniSectionGraph) – The graph holding all the referenced sections

parse()

Parses the .ini file

parseCommands()

Parses particular command sections within the mod

parseResources()

Parses particular resource sections within the mod

Note

Needs parseCommands() to be ran first, otherwise no resources will be parsed

setupDownloads(cleanup: bool = True)

Setup the required downloads resources, if not already setup

cleanup: bool

Whether to cleanup any temporary results from this method

Default: True


GIMIObjParser

class GIMIObjParser(iniFile: IniFile, objs: Set[str], texEdits: Dict[str, Dict[str, Dict[str, BaseTexEditor]]] | None = None, bufDownloads: Dict[str, Dict[str, DownloadData]] | None = None, objFileDownloads: Dict[str, Dict[str, DownloadData]] | None = None)

This class inherits from GIMIParser

Parses a .ini file used by a GIMI related importer and parses section’s related to a specific mod object (head, body, dress, etc…)

Note

For the specific names of the objects for a particular mod, please refer to GIMI Assets

Parameters:
  • iniFile (IniFile) – The .ini file to parse

  • objs (Set[str]) – The specific mod objects to keep track of

  • texEdits (Optional[Dict[str, Dict[str, Dict[str, BaseTexEditor]]]]) –

    texture resource sections that require to be editted

    • The outer keys ares the name of the mod object the texture resource belongs in

    • The second outer keys are the name of the register the texture resource belongs in

    • The inner keys are the names of the type of texture files that are editted

    • The inner value is the editor for changing the texture files

    Note

    The new names of the texture files to be editted should be all unique



    Default: None

  • bufDownloads (Optional[Dict[str, Dict[str, DownloadData]]]) –

    The .buf files to download if the mod is missing some required .buf files



    eg.

    {IniKeywords.Position.value: {"vb0": ("Position", FileDownload("someServer.com/Position.buf", "Position.buf", {"type": "buffer", "stride": "40"}))},
     IniKeywords.Blend.value: {"vb1": ("Blend", FileDownload("someServer.com/Blender.buf", "Blend.buf", {})), "vb999": ("NonExistantBlend", FileDownload("someServer.com/NonExistentBlend.buf", "fakeBlend.buf", {"type": "fakenews"}))},
     IniKeywords.Texcoord.value: {"ps-t0": ("Texcoord", FileDownload("someServer.com/texcoord.buf", "textensor.buf", {"model": "resnet50"}))}}
    



    Default: None

  • objFileDownloads (Optional[Dict[str, Dict[str, DownloadData]]]) –

    The files to download for each mod object (eg. .dds, .ib files) if the mod is missing some required files for the mod object

    • The outer keys are the names of the mod object the texture belongs to

    • The inner keys are the names of the registers



    eg.

    {"head": {"ib": ("garry", FileDownload("CorelliLaFolia.com/handel/sarabandeinDminor.ib", "puppetMary.ib", {"flower": "rose"}))},
     "body": {"ps-t3": ("ShadowRamp", FileDownload("someServer.com/bodyShadowRamp.dds", "bodyShadowRamp.dds", {})), "ps-t0": ("Diffuse", FileDownload("someServer.com/bodyDiffuse.dds", "bodyDiffuse.dds", {"model", "diffusion"}))},
     "dress": {"ps-t0": ("Diffuse", FileDownload("someServer.com/dressDiffuse.dds", "dressDiffuse.dds", {}))}}
    



    Default: None

objGraphs

The different sections related to each mod object

The keys are the names of the objects and the values are the graphs related to each object

Type:

Dict[str, IniSectionGraph]

texGraphs

The different sections related to the textures to be editted

  • The outer keys are the name of the mod object

  • The inner keys are the name of the register within the mod object

  • The inner value are the graphs for each register specified

Type:

Dict[str, Dict[str, IniSectionGraph]]

_objSearchPatterns

The Regex patterns used to find the roots of the sections related to each mod object

The keys are the names of the objects and the values are the Regex patterns

Type:

Dict[str, Pattern]

_objRootSections

The root sections for each mod object

The keys are the names of the objects and the values are the names of the sections

Type:

Dict[str, Set[str]]

texEditRegs

The corresponding register for a particular texture resource to be editted

  • The keys are the names of the type of texture resource to edit

  • The values contains info about the corresponding register for the texture. The tuple contains:
    1. The name of the mod object the texture resource belongs to

    2. The name of the register that holds the texture

Type:

Dict[str, Tuple[str, str]]

_getSectionRoots()

Retrieves the root sections names that correspond to a either TextureOverride.*Blend or TextureOverride.*Position

_makeRemapModels(result: Dict[str, IniFixResourceModel], resourceGraph: IniSectionGraph, getFixedFile: Callable[[str], str] | None = None, modsToFix: Set[str] | None = None)

Creates all the data needed for fixing the [Resource.*Blend.*] sections in the .ini file

Parameters:
  • result (Dict[str, IniResourceModel]) –

    The result to store the data for fixing the resource sections

    The keys are the original names for the resource sections and the values are the required data for fixing the sections

  • resourceGraph (IniSectionGraph) – The graph of sections for the resources

  • getFixedFile (Optional[Callable[[str], str]]) –

    The function for transforming the file path of a found .*Blend.buf file into a .*RemapBlend.buf file

    If this value is None, then will use IniFile.getFixedBlendFile()

    Default: None

  • modsToFix (Optional[Set[str]]) –

    The mods to fix

    If this value is None, then will use _modsToFix

    Default: None

_makeTexModels(texName: str, texGraph: IniSectionGraph, texEditor: BaseTexEditor, getFixedFile: Callable[[str], str] | None = None) Dict[str, Dict[str, IniTexModel]]

Creates all the data needed for fixing the [Resource.*] sections related to texture files in the .ini file

Parameters:
  • texName (str) – The name for the type of texture file to edit

  • texGraph (IniSectionGraph) – The graph of sections for the particular type of textures

  • getFixedFile (Optional[Callable[[str], str]]) –

    The function for transforming the file path of a found from the texture .dds file into a .*RemapFix.dds file

    If this value is None, then will use IniFile.getFixedTexFile()

    Default: None

Returns:

The data for fixing the resource sections

  • The outer keys are the names for the particular type of texture files

  • The inner keys are the names for the resrouce sections

  • The values are the required data for fixing the sections

Return type:

Dict[str, Dict[str, IniTexModel]]

_setToFix() Set[str]

Sets the names for the types of mods that will used in the fix

Returns:

The names of the mods that will be used in the fix

Return type:

Set[str]

clear()

Clears any saved data

clearTexGraphs()

Reset all the graphs for the texture edits

getTexEditor(texName: str) BaseTexEditor | None

Retrieves the corresponding BaseTexEditor based on ‘texName’

Parameters:

texName (str) – The name to the type of texture file to be editted

Returns:

The found texture editor

Return type:

Optional[BaseTexEditor]

getTexGraph(texName: str) IniSectionGraph | None

Retrieves the corresponding IniSectionGraph based on ‘texName’

Parameters:

texName (str) – The name to the type of texture file to be editted

Returns:

The found section graph

Return type:

Optional[IniSectionGraph]

getTexGraphs(texNames: List[str]) List[IniSectionGraph]

Retrieves the corresponding section graphs based on ‘texNames’

Parameters:

texNames (List[str]) – The names to the type of texture files to be editted

Returns:

The found section graphs

Return type:

List[IniSectionGraph]

hasDownloads()

Whether there are required downloads needed to be added

Note

requires setupDownloads() to be ran first

Returns:

Whether downloads are needed to be added

Return type:

bool

makeRemapData()

Creates any required remap internal data required by the fix

normalizeSections(sectionGraph: IniSectionGraph)

Normalize all the referenced sections within ‘sectionGraph’ to follow the branching structure described at IfTemplateNormTree

Parameters:

sectionGraph (IniSectionGraph) – The graph holding all the referenced sections

property objFileDownloads: Dict[str, Dict[str, DownloadData]]

The files to download for each mod object (eg. .dds, .ib files) if the mod is missing some required files for the mod object

  • The outer keys are the names of the mod object the texture belongs to

  • The inner keys are the names of the registers

Getter:

Returns the required file downloads for the mod objects

Setter:

Sets the new file downloads for the mod objects

Type:

Dict[str, Dict[str, DownloadData]]

property objs

The specific mod objects to keep track of

Getter:

Returns the names of the mod objects

Setter:

Sets the new names for the mod objects to keep track of

Type:

Set[str]

parse()

Parses the .ini file

parseCommands()

Parses particular command sections within the mod

parseResources()

Parses particular resource sections within the mod

Note

Needs parseCommands() to be ran first, otherwise no resources will be parsed

setupDownloads(cleanup: bool = True)

Setup the required downloads resources, if not already setup

cleanup: bool

Whether to cleanup any temporary results from this method

Default: True

property texEdits

texture resource sections that require to be editted

  • The outer keys ares the name of the mod object the texture resource belongs in

  • The second outer keys are the name of the register the texture resource belongs in

  • The inner keys are the names of the type of texture files that are editted

  • The inner value is the editor for changing the texture files

Getter:

Returns the specific registers to have their textures editted

Setter:

Sets the new registers to have their textures editted

Type:

Dict[str, Dict[str, Dict[str, BaseTexEditor]]]



Ini Fixers

The classes below help perform correction on .ini files after the .ini file has been parsed by the Ini Parsers


BaseIniFixer

class BaseIniFixer(parser: BaseIniParser)

Base class to fix a .ini file

Parameters:

parser (BaseIniParser) – The associated parser to retrieve data for the fix

_parser

The associated parser to retrieve data for the fix

Type:

BaseIniParser

_iniFile

The .ini file that will be fixed

Type:

IniFile

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

clear()

Resets any saved states within the fixer

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

getFix(fixStr: str = '') str

Retrieves the text to fix the .ini file


IniFixBuilder

Attributes
Methods
class IniFixBuilder(buildCls: Type[BaseIniFixer] | IniFixBuilderArgs, args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None)

This class inherits from Builder

Class to dynamically build a BaseIniFixer to fix .ini files

Parameters:
  • buildCls (Union[Type[BaseIniFixer], IniFixBuilderArgs]) –

    Either:

    1. The class to construct a BaseIniFixer OR

    2. Some provider that gives the required arguments needed for this class

  • args (Optional[List[Any]]) –

    The constant arguments used to build the object

    Note

    If the buildCls attribute is not a class of type Type[BaseIniFixer], then this parameter has no effect

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    The constant keyword arguments used to build the object

    Note

    If the buildCls attribute is not a class of type Type[BaseIniFixer], then this parameter has no effect

    Default: None

_buildCls

The class for the fixer, if available

Type:

Optional[Type[BaseIniFixer]]

_builderArgs

The provider for the arguments of this class, if available

Type:

Optional[IniFixBuilderArgs]

build(parser: BaseIniParser, modName: str | None = None, version: int | None = None) BaseIniFixer

Builds the fixer

Parameters:
  • parser (BaseIniParser) – The corresponding parser for the .ini file

  • modeName (Optional[str]) –

    The name of the mod to build the fixer for

    If this argument is None, then will use the mod name extracted from IniFile.availableType of BaseIniParser._iniFile

    Warning

    This argument has no effect if _buildCls is not None

    Default: None

  • version (Optional[int]) –

    The game version to fix the mod to

    If this argument is None, will build the fixer for the latest version of the game

    Warning

    This argument has no effect if _buildCls is not None

    Default: None

Returns:

The built fixer

Return type:

BaseIniFixer


GIMIFixer

class GIMIFixer(parser: GIMIParser, postModelRegEditFilters: List[RegEditFilter] | None = None)

This class inherits from BaseIniFixer

Fixes a .ini file used by a GIMI related importer

Parameters:
  • parser (GIMIParser) – The associated parser to retrieve data for the fix

  • postModelRegEditFilters (Optional[List[RegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod Filters are executed based on the order specified in the list.

    Default: None

postModelRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod Filters are executed based on the order specified in the list.

Type:

List[RegEditFilter]

_fillOtherHashIndexSections(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix that are not related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapBlendResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapPositionResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Position.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapBlend(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapIb(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Ib.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideIb] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapPosition(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverridePosition] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapTexcoord(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Texcoord.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideTexcoord] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

clear()

Resets any saved states within the fixer

editModelRegisters(modName: str, part: IfContentPart, modelPartName: str, sectionName: str, filters: List[RegEditFilter])

Edits the registers for a IfContentPart in the .VB or .IB sections

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • modelPartName (str) – The name of the part within the .VB or .IB sections

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

fixMod(modName: str, fix: str = '') str

Generates the newly added code in the .ini file for the fix of a single type of mod

Note

eg.

If we are making the fix from Jean -> JeanCN and JeanSeaBreeze, The code below will only make the fix for JeanCN

fixMod("JeanCN")
Parameters:
  • modName (str) – The name of the mod to fix

  • fix (str) –

    Any existing text we want the result of the fix to add onto

    Default: “”

Returns:

The text for the newly generated code in the .ini file

Return type:

str

getFix(fixStr: str = '')

Retrieves the text to fix the .ini file


GIMIObjReplaceFixer

class GIMIObjReplaceFixer(parser: GIMIObjParser, preRegEditFilters: List[BaseRegEditFilter] | None = None, postRegEditFilters: List[BaseRegEditFilter] | None = None, preRegEditOldObj: bool = True, postModelRegEditFilters: List[RegEditFilter] | None = None)

This class inherits from GIMIFixer

Base class to fix a .ini file used by a GIMI related importer where particular mod objects (head, body, dress, etc…) in the mod to remap are replaced by other mod objectss

Parameters:
  • parser (GIMIObjParser) – The associated parser to retrieve data for the fix

  • preRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart. Filters are executed based on the order specified in the list.

    Whether these filters reference the mod objects to be fixed of the new mod objects of the fixed mods is determined by GIMIObjReplaceFixer.preRegEditOldObj

    Default: None

  • postRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

    Note

    These filters are preceded by the filters at GIMIObjReplaceFixer.preRegEditFilters


    Default: None

  • preRegEditOldObj (bool) –

    Whether the register editting filters at GIMIObjReplaceFixer.preRegEditFilters reference the original mod objects of the mod to be fixed or the new mod objects of the fixed mods

    Default: True

  • postModelRegEditFilters (Optional[List[RegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod Filters are executed based on the order specified in the list.

    Default: None

preRegEditOldObj

Whether the register editting filters at GIMIObjReplaceFixer.preRegEditFilters reference the original mod objects of the mod to be fixed or the new mod objects of the fixed mods

Type:

bool

addedTextures

The textures to be newly created

  • The outer keys are the name of the mod objects

  • The inner keys are the name of the registers

  • The inner values is a tuple that contains:

    # The name of the texture # The texture creator for making the new texture

eg.
{"head": {"ps-t1": ("EmptyNormalMap", :class:`TexCreator`(4096, 1024))}, "body": {"ps-t3": ("NewLightMap", :class:`TexCreator`(1024, 1024, :class:`Colour`(0, 128, 0, 255))), "ps-t0": ("DummyShadowRamp", :class:`Colour`())}}

Type:

Dict[str, Dict[str, Tuple[str, TexCreator]]]

_fillOtherHashIndexSections(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix that are not related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapBlendResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapPositionResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Position.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTexResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, texName: str, oldModName: str, modObjName: str, texGraph: IniSectionGraph)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*] sections of a texture file

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • texName (str) – The name of the type of texture file

  • oldModName (str) – The name of the type of mod to fix froms

  • modObjName (str) – The name of the type of mod object associated to the section

  • texGraph (IniSectionGraph) – The graph where the section belongs to

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapBlend(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapIb(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Ib.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideIb] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapPosition(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverridePosition] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapTexcoord(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Texcoord.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideTexcoord] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

clear()

Clears all the saved states

editModelRegisters(modName: str, part: IfContentPart, modelPartName: str, sectionName: str, filters: List[RegEditFilter])

Edits the registers for a IfContentPart in the .VB or .IB sections

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • modelPartName (str) – The name of the part within the .VB or .IB sections

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

editTexRegisters(modName: str, part: IfContentPart, obj: str, sectionName: str, filters: List[BaseRegEditFilter])

Edits the registers for a IfContentPart in the texture related section

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • obj (str) – The name of the mod object for the corresponding part

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fillObjOtherHashIndexSection(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, objName: str, newObjName: str)

Creates the content part of an IfTemplate for the new sections created by this fix where the sections reference some hash or index and the section is not explictely captured by the fixer. The original sections may come from a different mod object.

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • objName (str) – The name of the original mod object

  • newObjName (str) – The name of the mod object to fix to

Returns:

The created content part

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

fixMod(modName: str, fix: str = '') str

Generates the newly added code in the .ini file for the fix of a single type of mod

Note

eg.

If we are making the fix from Jean -> JeanCN and JeanSeaBreeze, The code below will only make the fix for JeanCN

fixMod("JeanCN")
Parameters:
  • modName (str) – The name of the mod to fix

  • fix (str) –

    Any existing text we want the result of the fix to add onto

    Default: “”

Returns:

The text for the newly generated code in the .ini file

Return type:

str

getFix(fixStr: str = '')

Retrieves the text to fix the .ini file

getObjRemapFixName(name: str, modName: str, objName: str, newObjName: str) str

Retrieves the new name of the section for a new mod object

Parameters:
  • name (str) – The name of the section

  • modName (str) – The name of the mod to be fixed

  • objName (str) – The name of the original mod object for the section

  • newObjName (str) – The name of the new mod object for the section

Returns:

The new name for the section

Return type:

str

getTexEditFile(file: str, texName: str, modObj: str, modName: str = '') str

Makes the file path for an editted texture

Parameters:
  • texFile (str) – The file path to the original .dds file

  • texName (str) – The name for the type of texture

  • modObj (str) – The name of the mod object the texture file belongs to

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapTex.dds file

Return type:

str

getTexResourceRemapFixName(texTypeName: str, oldModName: str, newModName: str, objName: str, addInd: bool = False) str

Retrieves the new name of the section for a texture resource that is created/editted

Parameters:
  • texTypeName (str) – The name of the type of texture file

  • oldModName (str) – The name of the mod to fix from

  • newModName (str) – The name of the mod to fix to

  • objName (str) – The mod object the texture resource refereces

  • addInd (bool) –

    Whether to add a unique numbered index to the end of the name to distingusih the name from other previously created names of the same texture type

    Default: False

Returns:

The new name for the section

Return type:

str

property postRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]

property preRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the original mod objects to be fixed. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]


GIMIObjSplitFixer

class GIMIObjSplitFixer(parser: GIMIObjParser, objs: Dict[str, List[str]], preRegEditFilters: List[BaseRegEditFilter] | None = None, postRegEditFilters: List[BaseRegEditFilter] | None = None, preRegEditOldObj: bool = False, postModelRegEditFilters: List[RegEditFilter] | None = None)

This class inherits from GIMIObjReplaceFixer

Fixes a .ini file used by a GIMI related importer where particular mod objects (head, body, dress, etc…) in the mod to remap are split into multiple mod objects in remapped mod

eg.

 KeqingOpulent's "body" is split into Keqing's "body" and "dress"

 KeqingOpulent             Keqing
===============       =================
*** objects ***       **** objects ****
    body  -------+------>   body
    head         |          head
                 +------>   dress

Note

For the order of how the registers are fixed, please see GIMIObjReplaceFixer

Parameters:
  • parser (GIMIObjParser) – The associated parser to retrieve data for the fix

  • objs (Dict[str, List[str]]) –

    The mod objects that will be split into multiple new mod objects

    The keys are the names of the mod objects to be split and the values are the names of the new mod objects the original mod object will be split into

    Note

    The dictionary keys should align with the defined object names at GIMIObjParser.objs() for your parser


    Warning

    If multiple mod objects split into the same object, then the resultant .ini file will contain duplicate sections for that particular mod object

    eg.
    {"body": ["dress", "extra"], "head": ["face", "extra"]}

  • preRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart. Filters are executed based on the order specified in the list.

    Whether these filters reference the mod objects to be fixed of the new mod objects of the fixed mods is determined by GIMIObjSplitFixer.preRegEditOldObj

    Default: None

  • postRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

    Note

    These filters are preceded by the filters at GIMIObjReplaceFixer.preRegEditFilters


    Default: None

  • preRegEditOldObj (bool) –

    Whether the register editting filters at GIMIObjReplaceFixer.preRegEditFilters reference the original mod objects of the mod to be fixed or the new mod objects of the fixed mods

    Default: False

  • postModelRegEditFilters (Optional[List[RegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod Filters are executed based on the order specified in the list.

    Default: None

_fillOtherHashIndexSections(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix that are not related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapBlendResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapPositionResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Position.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTexResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, texName: str, oldModName: str, modObjName: str, texGraph: IniSectionGraph)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*] sections of a texture file

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • texName (str) – The name of the type of texture file

  • oldModName (str) – The name of the type of mod to fix froms

  • modObjName (str) – The name of the type of mod object associated to the section

  • texGraph (IniSectionGraph) – The graph where the section belongs to

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapBlend(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapIb(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Ib.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideIb] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapPosition(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverridePosition] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapTexcoord(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Texcoord.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideTexcoord] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

clear()

Clears all the saved states

editModelRegisters(modName: str, part: IfContentPart, modelPartName: str, sectionName: str, filters: List[RegEditFilter])

Edits the registers for a IfContentPart in the .VB or .IB sections

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • modelPartName (str) – The name of the part within the .VB or .IB sections

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

editTexRegisters(modName: str, part: IfContentPart, obj: str, sectionName: str, filters: List[BaseRegEditFilter])

Edits the registers for a IfContentPart in the texture related section

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • obj (str) – The name of the mod object for the corresponding part

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fillObjOtherHashIndexSection(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, objName: str, newObjName: str)

Creates the content part of an IfTemplate for the new sections created by this fix where the sections reference some hash or index and the section is not explictely captured by the fixer. The original sections may come from a different mod object.

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • objName (str) – The name of the original mod object

  • newObjName (str) – The name of the mod object to fix to

Returns:

The created content part

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

fixMod(modName: str, fix: str = '') str

Generates the newly added code in the .ini file for the fix of a single type of mod

Note

eg.

If we are making the fix from Jean -> JeanCN and JeanSeaBreeze, The code below will only make the fix for JeanCN

fixMod("JeanCN")
Parameters:
  • modName (str) – The name of the mod to fix

  • fix (str) –

    Any existing text we want the result of the fix to add onto

    Default: “”

Returns:

The text for the newly generated code in the .ini file

Return type:

str

getFix(fixStr: str = '')

Retrieves the text to fix the .ini file

getObjRemapFixName(name: str, modName: str, objName: str, newObjName: str) str

Retrieves the new name of the section for a new mod object

Parameters:
  • name (str) – The name of the section

  • modName (str) – The name of the mod to be fixed

  • objName (str) – The name of the original mod object for the section

  • newObjName (str) – The name of the new mod object for the section

Returns:

The new name for the section

Return type:

str

getTexEditFile(file: str, texName: str, modObj: str, modName: str = '') str

Makes the file path for an editted texture

Parameters:
  • texFile (str) – The file path to the original .dds file

  • texName (str) – The name for the type of texture

  • modObj (str) – The name of the mod object the texture file belongs to

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapTex.dds file

Return type:

str

getTexResourceRemapFixName(texTypeName: str, oldModName: str, newModName: str, objName: str, addInd: bool = False) str

Retrieves the new name of the section for a texture resource that is created/editted

Parameters:
  • texTypeName (str) – The name of the type of texture file

  • oldModName (str) – The name of the mod to fix from

  • newModName (str) – The name of the mod to fix to

  • objName (str) – The mod object the texture resource refereces

  • addInd (bool) –

    Whether to add a unique numbered index to the end of the name to distingusih the name from other previously created names of the same texture type

    Default: False

Returns:

The new name for the section

Return type:

str

property objs: Dict[str, List[str]]

The mods objects that will be split to multiple other mod objects

The keys are the names of the objects in the mod to be remapped and the values are the split objects of the remapped mod

Getter:

Retrieves the mods objects

Setter:

Sets the new objects

Type:

Dict[str, List[str]]

property postRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]

property preRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the original mod objects to be fixed. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]


GIMIObjMergeFixer

class GIMIObjMergeFixer(parser: GIMIObjParser, objs: Dict[str, List[str]], copyPreamble: str = '', preRegEditFilters: List[BaseRegEditFilter] | None = None, postRegEditFilters: List[BaseRegEditFilter] | None = None, iniPostModelRegEditFilters: List[List[RegEditFilter]] | None = None)

This class inherits from GIMIObjReplaceFixer

Fixes a .ini file used by a GIMI related importer where particular mod objects (head, body, dress, etc…) in the mod to remap are merged to a single mod object

eg.

 Keqing's "body" and "dress" are merged into KeqingOpulent's "body"

    Keqing             KeqingOpulent
===============       =================
*** objects ***       **** objects ****
    body      -----+---->   body
    head           |        head
    dress     -----+

Note

This class takes advantage of GIMI’s bug/feature of overlapping mods from loading multiple mods of the same character by creating different variations of the original .ini file

Parameters:
  • parser (GIMIObjParser) – The associated parser to retrieve data for the fix

  • objs (Dict[str, List[str]]) –

    The mod objects to be merged to a single mod object

    The keys are the names of the merged objects and the values are the names of the mod objects to be merged

    Note

    The dictionary values should align with the defined object names at GIMIObjParser.objs() for your parser

  • copyPreamble (str) –

    Any text we want to put before the text of the newly generated .ini file variations

    Default: ""

  • preRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart. Filters are executed based on the order specified in the list.

    Whether these filters reference the mod objects to be fixed of the new mod objects of the fixed mods is determined by GIMIObjMergeFixer.preRegEditOldObj

    Default: None

  • postRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

    Note

    These filters are preceded by the filters at GIMIObjReplaceFixer.preRegEditFilters


    Default: None

  • iniPostModelRegEditFilters (Optional[List[List[RegEditFilter]]]) –

    Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod for each .ini file

    Default: None

_targetObjs

Which original mod objects to show for each merged mod object in the current .ini file

The keys are the names of the original mod objects to display on the current .ini file and the values are the names of the merged objects.

Type:

Dict[str, str]

copyPreamble

Any text we want to put before the text of the newly generated .ini file variations

Type:

str

iniPostModelRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod for each .ini file

Type:

List[List[RegEditFilter]]

postModelRegEditFilters

The filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod for the current .ini file being generated

Type:

List[RegEditFilter]

_fillOtherHashIndexSections(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix that are not related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapBlendResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapPositionResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Position.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTexResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, texName: str, oldModName: str, modObjName: str, texGraph: IniSectionGraph)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*] sections of a texture file

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • texName (str) – The name of the type of texture file

  • oldModName (str) – The name of the type of mod to fix froms

  • modObjName (str) – The name of the type of mod object associated to the section

  • texGraph (IniSectionGraph) – The graph where the section belongs to

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapBlend(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapIb(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Ib.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideIb] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapPosition(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverridePosition] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapTexcoord(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Texcoord.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideTexcoord] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

clear()

Clears all the saved states

editModelRegisters(modName: str, part: IfContentPart, modelPartName: str, sectionName: str, filters: List[RegEditFilter])

Edits the registers for a IfContentPart in the .VB or .IB sections

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • modelPartName (str) – The name of the part within the .VB or .IB sections

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

editTexRegisters(modName: str, part: IfContentPart, obj: str, sectionName: str, filters: List[BaseRegEditFilter])

Edits the registers for a IfContentPart in the texture related section

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • obj (str) – The name of the mod object for the corresponding part

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fillObjOtherHashIndexSection(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, objName: str, newObjName: str)

Creates the content part of an IfTemplate for the new sections created by this fix where the sections reference some hash or index and the section is not explictely captured by the fixer. The original sections may come from a different mod object.

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • objName (str) – The name of the original mod object

  • newObjName (str) – The name of the mod object to fix to

Returns:

The created content part

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

fixMod(modName: str, fix: str = '') str

Generates the newly added code in the .ini file for the fix of a single type of mod

Note

eg.

If we are making the fix from Jean -> JeanCN and JeanSeaBreeze, The code below will only make the fix for JeanCN

fixMod("JeanCN")
Parameters:
  • modName (str) – The name of the mod to fix

  • fix (str) –

    Any existing text we want the result of the fix to add onto

    Default: “”

Returns:

The text for the newly generated code in the .ini file

Return type:

str

getFix(fixStr: str = '')

Retrieves the text to fix the .ini file

getObjRemapFixName(name: str, modName: str, objName: str, newObjName: str) str

Retrieves the new name of the section for a new mod object

Parameters:
  • name (str) – The name of the section

  • modName (str) – The name of the mod to be fixed

  • objName (str) – The name of the original mod object for the section

  • newObjName (str) – The name of the new mod object for the section

Returns:

The new name for the section

Return type:

str

getTexEditFile(file: str, texName: str, modObj: str, modName: str = '') str

Makes the file path for an editted texture

Parameters:
  • texFile (str) – The file path to the original .dds file

  • texName (str) – The name for the type of texture

  • modObj (str) – The name of the mod object the texture file belongs to

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapTex.dds file

Return type:

str

getTexResourceRemapFixName(texTypeName: str, oldModName: str, newModName: str, objName: str, addInd: bool = False) str

Retrieves the new name of the section for a texture resource that is created/editted

Parameters:
  • texTypeName (str) – The name of the type of texture file

  • oldModName (str) – The name of the mod to fix from

  • newModName (str) – The name of the mod to fix to

  • objName (str) – The mod object the texture resource refereces

  • addInd (bool) –

    Whether to add a unique numbered index to the end of the name to distingusih the name from other previously created names of the same texture type

    Default: False

Returns:

The new name for the section

Return type:

str

property objs

The mod objects to be merged to a single mod object

The keys are the names of the merged objects and the values are the names of the mod objects to be merged

Getter:

Retrieves the mod objects to be merged

Setter:

Set the new mod objects to be merged

Type:

Dict[str, List[str]]

property postRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]

property preRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the original mod objects to be fixed. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]


GIMIObjRegEditFixer

class GIMIObjRegEditFixer(parser: GIMIObjParser, preRegEditFilters: List[BaseRegEditFilter] | None = None, postRegEditFilters: List[BaseRegEditFilter] | None = None, postModelRegEditFilters: List[RegEditFilter] | None = None)

This class inherits from GIMIObjSplitFixer

Fixes a .ini file used by a GIMI related importer where particular mod objects (head, body, dress, etc…) in the mod to remap needs to have their registers remapped or removed

Note

For the order of how the registers are fixed, please see GIMIObjReplaceFixer

Parameters:
  • parser (GIMIObjParser) – The associated parser to retrieve data for the fix

  • preRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart. Filters are executed based on the order specified in the list.

    Whether these filters reference the mod objects to be fixed of the new mod objects of the fixed mods is determined by GIMIObjRegEditFixer.preRegEditOldObj

    Default: None

  • postRegEditFilters (Optional[List[BaseRegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

    Note

    These filters are preceded by the filters at GIMIObjReplaceFixer.preRegEditFilters


    Default: None

  • postModelRegEditFilters (Optional[List[RegEditFilter]]) –

    Filters used to edit the registers of a certain IfContentPart for the sections related to the .VB or .IB of a mod Filters are executed based on the order specified in the list.

    Default: None

_fillOtherHashIndexSections(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix that are not related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapBlendResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillRemapPositionResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Position.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTexResource(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, texName: str, oldModName: str, modObjName: str, texGraph: IniSectionGraph)

Creates the content part of an IfTemplate for the new sections created by this fix related to the [Resource.*] sections of a texture file

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [Resource.*Blend.*] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • texName (str) – The name of the type of texture file

  • oldModName (str) – The name of the type of mod to fix froms

  • modObjName (str) – The name of the type of mod object associated to the section

  • texGraph (IniSectionGraph) – The graph where the section belongs to

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapBlend(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Blend.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapIb(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Ib.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideIb] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapPosition(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Position.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverridePosition] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_fillTextureOverrideRemapTexcoord(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str) str

Creates the content part of an IfTemplate for the new sections created by this fix related to the [TextureOverride.*Texcoord.*] sections

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideTexcoord] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

Returns:

The created content part

Return type:

str

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

clear()

Clears all the saved states

editModelRegisters(modName: str, part: IfContentPart, modelPartName: str, sectionName: str, filters: List[RegEditFilter])

Edits the registers for a IfContentPart in the .VB or .IB sections

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • modelPartName (str) – The name of the part within the .VB or .IB sections

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

editTexRegisters(modName: str, part: IfContentPart, obj: str, sectionName: str, filters: List[BaseRegEditFilter])

Edits the registers for a IfContentPart in the texture related section

Note

For details on steps of how the registers are editted, see GIMIObjReplaceFixer

Parameters:
  • modName (str) – The name of the mod to fix to

  • part (IfContentPart) – The part that is being editted

  • obj (str) – The name of the mod object for the corresponding part

  • sectionName (str) – The name of the section the part belongs to

  • filters (List[BaseRegEditFilter]) – The filters used for editting the registers

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fillObjOtherHashIndexSection(modName: str, sectionName: str, part: IfContentPart, partIndex: int, linePrefix: str, origSectionName: str, objName: str, newObjName: str)

Creates the content part of an IfTemplate for the new sections created by this fix where the sections reference some hash or index and the section is not explictely captured by the fixer. The original sections may come from a different mod object.

Tip

For more info about an ‘IfTemplate’, see IfTemplate

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name for the section

  • part (IfContentPart) – The content part of the IfTemplate of the original [TextureOverrideBlend] section

  • partIndex (int) – The index of where the content part appears in the IfTemplate of the original section

  • linePrefix (str) – The text to prefix every line of the created content part

  • origSectionName (str) – The name of the original section

  • objName (str) – The name of the original mod object

  • newObjName (str) – The name of the mod object to fix to

Returns:

The created content part

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

fixMod(modName: str, fix: str = '') str

Generates the newly added code in the .ini file for the fix of a single type of mod

Note

eg.

If we are making the fix from Jean -> JeanCN and JeanSeaBreeze, The code below will only make the fix for JeanCN

fixMod("JeanCN")
Parameters:
  • modName (str) – The name of the mod to fix

  • fix (str) –

    Any existing text we want the result of the fix to add onto

    Default: “”

Returns:

The text for the newly generated code in the .ini file

Return type:

str

getFix(fixStr: str = '')

Retrieves the text to fix the .ini file

getObjRemapFixName(name: str, modName: str, objName: str, newObjName: str) str

Retrieves the new name of the section for a new mod object

Parameters:
  • name (str) – The name of the section

  • modName (str) – The name of the mod to be fixed

  • objName (str) – The name of the original mod object for the section

  • newObjName (str) – The name of the new mod object for the section

Returns:

The new name for the section

Return type:

str

getTexEditFile(file: str, texName: str, modObj: str, modName: str = '') str

Makes the file path for an editted texture

Parameters:
  • texFile (str) – The file path to the original .dds file

  • texName (str) – The name for the type of texture

  • modObj (str) – The name of the mod object the texture file belongs to

  • modName (str) – The name of the mod to fix to

Returns:

The file path of the fixed RemapTex.dds file

Return type:

str

getTexResourceRemapFixName(texTypeName: str, oldModName: str, newModName: str, objName: str, addInd: bool = False) str

Retrieves the new name of the section for a texture resource that is created/editted

Parameters:
  • texTypeName (str) – The name of the type of texture file

  • oldModName (str) – The name of the mod to fix from

  • newModName (str) – The name of the mod to fix to

  • objName (str) – The mod object the texture resource refereces

  • addInd (bool) –

    Whether to add a unique numbered index to the end of the name to distingusih the name from other previously created names of the same texture type

    Default: False

Returns:

The new name for the section

Return type:

str

property objs: Dict[str, List[str]]

The mods objects that will be split to multiple other mod objects

The keys are the names of the objects in the mod to be remapped and the values are the split objects of the remapped mod

Getter:

Retrieves the mods objects

Setter:

Sets the new objects

Type:

Dict[str, List[str]]

property postRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the new mod objects of the fixed mods. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]

property preRegEditFilters

Filters used to edit the registers of a certain IfContentPart for the original mod objects to be fixed. Filters are executed based on the order specified in the list.

Getter:

Retrieves all the sequence of filters

Setter:

Sets the new sequence of filters

Type:

List[BaseRegEditFilter]


MultiModFixer

class MultiModFixer(parser: BaseIniParser, fixBuilders: Dict[str, IniFixBuilder])

This class inherits from BaseIniFixer

Fixes a .ini file where each mod to fix requires a different BaseIniFixer strategy

Parameters:
  • parser (BaseIniParser) – The associated parser to retrieve data for the fix

  • fixBuilders (Dict[str, IniFixBuilder]) –

    The different builders to dynamcally construct the BaseIniFixer used for each mod to fix

    The keys are the names of the mods to fix and the values are the different IniFixBuilder used to construct the BaseIniFixer to fix the mod

_fixBuilders

The different builders to dynamcally construct the BaseIniFixer used for each mod to fix

The keys are the names of the mods to fix and the values are the different IniFixBuilder used to construct the BaseIniFixer to fix the mod

Type:

Dict[str, IniFixBuilder]

_fixers

The different fixers to fix each type of mod

The keys are the names of the mods to fix and the values are the fixers to fix the mod

Type:

Dict[str, BaseIniFixer]

_getAsset(assetType: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the corresponding asset

Parameters:
  • assetType (str) – The name for the type of asset to retrieve

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the asset for

  • notFoundVal (Any) –

    The value to be returned if the replacement is not found

    Default: None

Returns:

The found asset or the value from ‘notFoundVal’ if the asset was not found

Return type:

Union[str, Any]

_getAssetReplacement(asset: str, assetRepoAttName: str, modName: str, notFoundVal: Any | None = None) str | Any

Retrieves the replacement for ‘asset’

Parameters:
  • asset (str) – The asset to be replaced

  • assetRepoAttName (str) – The name of the ModIdAssets repo in IniFile.availableType()

  • modName (str) – The name of the mod we want the replacement for

  • notFoundVal (Any) –

    The value to be returns if the replacement is not found

    Default: None

Returns:

The found replacement asset or the value from ‘notFoundVal’ if the replacement was not found

Return type:

Union[str, Any]

_getHash(hashType: str, modName: str) str

Retrieves the corresponding hash

Parameters:
  • hashType (str) – The name for the type of hash to retrieve

  • modName (str) – The name for the type of mod to get the hash from

Returns:

The found hash or “HashNotFound” if the corresponding hash is not found

Return type:

str

_getHashReplacement(hash: str, modName: str) str

Retrieves the replacement for ‘hash’

Parameters:
  • hash (str) – The hash to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the hash or “HashNotFound” if there are not replacements

Return type:

str

_getIndex(indexType: str, modName: str) str

Retrieves the corresponding index

Parameters:
  • indexType (str) – The name for the type of index to retrieve

  • modName (str) – The name for the type of mod to get the index from

Returns:

The found index or “IndexNotFound” if the corresponding index is not found

Return type:

str

_getIndexReplacement(index: str, modName: str) str

Retrieves the replacement for ‘index’

Parameters:
  • index (str) – The index to be replaced

  • modName (str) – The name of the mod we want the replacement for

Returns:

The corresponding replacement for the index or “IndexNotFound” if there are not replacements

Return type:

str

buildFixers()

Rebuilds the BaseIniFixer used for each mod

clear()

Resets any saved states within the fixer

fillIfTemplate(modName: str, sectionName: str, ifTemplate: IfTemplate, fillFunc: Callable[[str, str, IfContentPart, int, int, str], str], origSectionName: str | None = None) str

Creates a new IfTemplate for an existing section in the .ini file

Parameters:
  • modName (str) – The name for the type of mod to fix to

  • sectionName (str) – The new name of the section

  • ifTemplate (IfTemplate) – The IfTemplate of the orginal section

  • fillFunc (Callable[[str, str, IfContentPart, int, str, str], str]]) –

    The function to create a new content part for the new IfTemplate

    Tip

    For more info about an ‘IfTemplate’, see IfTemplate


    The parameter order for the function is:

    1. The name for the type of mod to fix to

    2. The new section name

    3. The corresponding content part in the original IfTemplate

    4. The index for the content part in the original IfTemplate

    5. The string to prefix every line in the content part of the IfTemplate

    6. The 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 for sectionName

    Default: None

Returns:

The text for the newly created IfTemplate

Return type:

str

fix(keepBackup: bool = True, fixOnly: bool = False, update: bool = False, hideOrig: bool = False) str | List[str]

Fixes the .ini file

Parameters:
  • keepBackup (bool) –

    Whether to keep backups for the .ini file

    Default: True

  • fixOnly (bool) –

    Whether to only fix the .ini file without undoing any fixes

    Default: False

  • update (bool) –

    Whether to also update the source text in the IniFile object with the latest fix

    Default: False

  • hideOrig (bool) –

    Whether to hide the mod for the original character

    Default: False

Returns:

The new content of the .ini file which includes the fix and the new content of any other newly created .ini files related to fixing the particular .ini file

Return type:

Union[str, List[str]]

getFix(fixStr: str = '') str

Retrieves the text to fix the .ini file



Ini Removers

These entities help remove fixes from .ini files that were made from previous runs.


BaseIniRemover

Attributes
Methods
class BaseIniRemover(iniFile: IniFile)

Base class to remove fixes from a .ini file

Parameters:

iniFile (IniFile) – The .ini file to remove the fix from

iniFile

The .ini file that will be parsed

Type:

IniFile

static _readLines(func)

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._fileLines

Examples

1@_readLines
2def printLines(self):
3    for line in self.iniFile.fileLines:
4        print(f"LINE: {line}")
remove(parse: bool = False, writeBack: bool = True) str

Removes the fix from the .ini file

Parameters:
  • parse (bool) –

    Whether to also parse for the .*RemapBlend.buf files that need to be removed

    Default: False

  • writeBack (bool) –

    Whether to write back the new text content of the .ini file

    Default: True

Returns:

The new content of the .ini file

Return type:

str


IniRemoveBuilder

Attributes
Methods
class IniRemoveBuilder(cls: Type[BaseIniRemover], args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None, cache: bool = True)

This class inherits from FlyweightBuilder

A class to help dynamically build a BaseIniRemover

Parameters:
  • cls (Type[BaseIniRemover]) – The class to construct a BaseIniRemover

  • args (Optional[List[Any]]) –

    The constant arguments used to build the object

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    The constant keyword arguments used to build the object

    Default: None

  • cache (bool) –

    Whether to cache the built object

    Default: True

cache

Whether to cache the built object

Type:

bool

build(iniFile: IniFile, id: Hashable | None = None) BaseIniRemover

Builds the remover

Parameters:
  • iniFile (IniFile) – The .ini file to parse

  • id (Optional[Hashable]) –

    The id to give the flyweight object that will be built

    Note

    By default, if argument is set to None, the id of the flyweight class that is built is determined by the class name of the IniFile object passed.

    Default: None

Returns:

The built remover

Return type:

BaseIniRemover


IniRemover

Attributes
Methods
class IniRemover(iniFile: IniFile)

This class inherits from BaseIniRemover

Class for the basic removal of the fixes from .ini files

Parameters:

iniFile (IniFile) – The .ini file to remove the fix from

static _readLines(func)

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._fileLines

Examples

1@_readLines
2def printLines(self):
3    for line in self.iniFile.fileLines:
4        print(f"LINE: {line}")
remove(parse: bool = False, writeBack: bool = True) str

Removes the fix from the .ini file

Parameters:
  • parse (bool) –

    Whether to also parse for the .*RemapBlend.buf files that need to be removed

    Default: False

  • writeBack (bool) –

    Whether to write back the new text content of the .ini file

    Default: True

Returns:

The new content of the .ini file

Return type:

str



Register Editting Filters

Used for subclasses of the GIMIObjRegEditFixer class to handle editting registers within an IfTemplate in the .ini file


BaseRegEditFilter

Methods
class BaseRegEditFilter

Base class for editting registers within an IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart


RegEditFilter

Methods
class RegEditFilter

This class inherits from BaseRegEditFilter

class for editting registers within an IfContentPart

_editReg(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: BaseIniFixer) IfContentPart

The main function to edit the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (BaseIniFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart. Includes boilerplate of clearing all saved states and handling texture adds/edits

Note

If you are inheriting this class, you probably want to override the RegEditFilter._editReg() method instead

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

handleTexAdd(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

handleTexEdit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers


RegNewVals

Attributes
Methods
class RegNewVals(vals: Dict[str, Dict[str, str | Callable[[str], bool]]] | None = None)

This class inherits from RegEditFilter

Class for assigning new values to specific registers for some IfContentPart

Parameters:

vals

Defines which registers will have their values changed

  • The outer keys are the names of the new mod objects where the registers are found

  • The inner keys are the new names of the registers to have their values changed

  • The inner values contains either

    • A string representing the new changed values for all instances of the register OR

    • A tuple containing a string and a predicate, representing the new changed values for only certain instances of the registers. The predicate takes the old value of the register as the argument.

eg.
{"head": {"ps-t1": "newVal"}, "body": {"ps-t3": "newVal2", "ps-t0": "newVal3"}, "dress": {"ps-t0": ("newVal4", lambda val: val == "replaceMe")}}

vals

Defines which registers will have their values changed

  • The outer keys are the names of the new mod objects where the registers are found

  • The inner keys are the new names of the registers to have their values changed

  • The inner values contains either

    • A string representing the new changed values for all instances of the register OR

    • A tuple containing a string and a predicate, representing the new changed values for only certain instances of the registers. The predicate takes the old value of the register as the argument.

Type:

Dict[str, Dict[str,Union[str, Tuple[str, Callable[[str], bool]]]]]

_regUpdates

The value updates to do on the current IfContentPart being parsed

The keys are the names of the registers and the values are the corresponding values to the registers

Type:

Optional[Dict[str, str]]

_editReg(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: BaseIniFixer) IfContentPart

The main function to edit the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (BaseIniFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart. Includes boilerplate of clearing all saved states and handling texture adds/edits

Note

If you are inheriting this class, you probably want to override the RegEditFilter._editReg() method instead

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

handleTexAdd(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

handleTexEdit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers


RegRemap

Attributes
Methods
class RegRemap(remap: Dict[str, Dict[str, KeyRemapData | List[str | Tuple[str, Callable[[str, str], bool]] | RemappedKeyData]]] | None = None)

This class inherits from RegEditFilter

Class for remapping the register keys for some IfContentPart

Parameters:

remap (Optional[Dict[str, Dict[str, Union[KeyRemapData, List[Union[str, Tuple[str, Callable[[str, str], bool]], RemappedKeyData]]]]]]) –

Defines how the register values in the parts of an IfTemplate are mapped to a new register in the remapped mod for particular mod objects

  • The outer keys are the name of the mod object to have their registers remapped

  • The inner keys are the names of the registers that hold the register values to be remapped

  • The inner values are the new names of the registers that will hold the register values that contains either:

    • The data for remapping a particular key OR

    • A list containing either:

      • The new names of the keys to remap to OR

      • A tuple containing a new name for the key to remap to and a predicate that takes in the old key and value of whether to remap the key. OR

      • A class that contains all the necessary information for remapping to the new key

eg.
{"head": {"ps-t1": ["new_ps-t2", "new_ps-t3"]}, "body": {"ps-t3": [ps-t0"], "ps-t0": [], "ps-t1": [("ps-t8", lambda reg, val: val.find("NormalMap") != -1)]}}

Default: None

remap

Defines how the register values in the parts of an IfTemplate are mapped to a new register in the remapped mod for particular mod objects

  • The outer keys are the name of the mod object to have their registers remapped

  • The inner keys are the names of the registers that hold the register values to be remapped

  • The inner values are the new names of the registers that will hold the register values that contains either:

    • The data for remapping a particular key OR

    • A list containing either:

      • The new names of the keys to remap to OR

      • A tuple containing a new name for the key to remap to and a predicate that takes in the old key and value of whether to remap the key. OR

      • A class that contains all the necessary information for remapping to the new key

eg.
{"head": {"ps-t1": ["new_ps-t2", "new_ps-t3"]}, "body": {"ps-t3": [ps-t0"], "ps-t0": [], "ps-t1": [("ps-t8", lambda reg, val: val.find("NormalMap") != -1)]}}

Type:

Dict[str, Dict[str, Union[KeyRemapData, List[Union[str, Tuple[str, Callable[[str, str], bool]], RemappedKeyData]]]]]

_regRemap

The register remap to do on the current IfContentPart being parsed

The keys are the names of the registers and the values are the newly mapped registers

Type:

Optional[Dict[str, List[str]]]

_editReg(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: BaseIniFixer) IfContentPart

The main function to edit the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (BaseIniFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart. Includes boilerplate of clearing all saved states and handling texture adds/edits

Note

If you are inheriting this class, you probably want to override the RegEditFilter._editReg() method instead

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

handleTexAdd(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

handleTexEdit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers


RegRemove

Attributes
Methods
class RegRemove(remove: Dict[str, Set[str | Tuple[str, Callable[[Tuple[int, str]], bool]]]] | None = None)

This class inherits from RegEditFilter

Class for removing keys from a IfContentPart

Parameters:

remove (Optional[Dict[str, Set[Union[str, Callable[[Tuple[int, str]], bool]]]]]) –

Defines whether some register assignments should be removed from the sections from the mod objects

  • The keys are the names of the objects to have their registers removed

  • the values are the names of the register to be removed.

    • If given only a string, will remove all instance of the register

    • If given a tuple containing a string and a predicate, will remove instance of the register that satistfy the predicate The predicate takes in a tuple that contains:

      1. The order index where the current KVP of the register resides in the IfContentPart

      2. The corresponding value for the current KVP



eg.
{"head": {"ps-t1", "ps-t2"}, "body": {"ps-t3", "ps-t0"}}

Default: None

remove

Defines whether some register assignments should be removed from the sections from the mod objects

  • The keys are the names of the objects to have their registers removed

  • the values are the names of the register to be removed.

    • If given only a string, will remove all instance of the register

    • If given a tuple containing a string and a predicate, will remove instance of the register that satistfy the predicate The predicate takes in a tuple that contains:

      1. The order index where the current KVP of the register resides in the IfContentPart

      2. The corresponding value for the current KVP



eg.
{"head": {"ps-t1", "ps-t2"}, "body": {"ps-t3", "ps-t0"}}

Type:

Dict[str, Set[Union[str, Callable[[Tuple[int, str]], bool]]]]

_regRemove

The register removal to do on the current IfContentPart being parsed

Type:

Optional[Set[str]]

_editReg(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: BaseIniFixer) IfContentPart

The main function to edit the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (BaseIniFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart. Includes boilerplate of clearing all saved states and handling texture adds/edits

Note

If you are inheriting this class, you probably want to override the RegEditFilter._editReg() method instead

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

handleTexAdd(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

handleTexEdit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers


RegTexAdd

class RegTexAdd(textures: Dict[str, Dict[str, Tuple[str, TexCreator]]] | None = None, mustAdd: bool = True)

This class inherits from RegEditFilter

Class for adding new texture .dds files to a IfContentPart

Parameters:
  • textures (Optional[Dict[str, Dict[str, Tuple[str, TexCreator, bool]]]]) –

    New texture .dds files to be created

    • The outer key are the names of the mod object

    • The inner keys are the names of the register

    • The inner values contanis:
      1. The name of the type of texture file

      2. The object that will create the new texture file

    eg.
    {"head": {"ps-t1": ("EmptyNormalMap", :class:`TexCreator`(4096, 1024))}, "body": {"ps-t3": ("NewLightMap", :class:`TexCreator`(1024, 1024, :class:`Colour`(0, 128, 0, 255))), "ps-t0": ("DummyShadowRamp", :class:`Colour`())}}

    Default: None

  • mustAdd (bool) – Whether the texture files will still be created for a particular IfContentPart even if the corresponding register for the texture file does not exist within that particular IfContentPart

textures

New texture .dds files to be created

  • The outer key are the names of the mod object

  • The inner keys are the names of the register

  • The inner values contanis:
    1. The name of the type of texture file

    2. The object that will create the new texture file

eg.
{"head": {"ps-t1": ("EmptyNormalMap", :class:`TexCreator`(4096, 1024))}, "body": {"ps-t3": ("NewLightMap", :class:`TexCreator`(1024, 1024, :class:`Colour`(0, 128, 0, 255))), "ps-t0": ("DummySshadowRamp", :class:`Colour`())}}

Type:

Dict[str, Dict[str, Tuple[str, TexCreator]]]

mustAdd

Whether the texture files will still be created for a particular IfContentPart even if the corresponding register for the texture file does not exist within that particular IfContentPart

Type:

bool

_regAddVals

The texture additions to do on the current IfContentPart being parsed

The keys are the name of the registers and the values are the section names for the textures

Type:

Optional[Dict[str, str]]

_editReg(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

The main function to edit the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (BaseIniFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart. Includes boilerplate of clearing all saved states and handling texture adds/edits

Note

If you are inheriting this class, you probably want to override the RegEditFilter._editReg() method instead

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

handleTexAdd(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

handleTexEdit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers


RegTexEdit

Attributes
Methods
class RegTexEdit(textures: Dict[str, List[str | Tuple[str, Callable[[str, str], bool]]]] | None = None)

This class inherits from RegEditFilter

Class for editting texture .dds files to a IfContentPart

Parameters:

textures (Optional[Dict[str, List[Union[str, Tuple[str, Callable[[str, str], bool]]]]]]) –

Texture .dds files to be editted from existing textures files

  • The keys are the name of the type of texture files of the mod object

  • The values are either:

    • the name of the registers to hold the editted textures

    • a tuple containing the name of the register to hold the editted texture and a predicate, will edit the texture to the corresponding register only if the predicate returns True for the register value

      The predicate takes in:

      1. The old register key of the texture to be editted

      2. The correspondnig value for the old register key

eg.
{"NormalMap": ["ps-t1", "r13", "ps-t0", lambda key, val: val.find("NormalMap") != -1], "ShinyMetalMap": ["ps-t2"]}

Default: None

_regEditVals

The texture edits to do on the current IfContentPart being parsed

The keys are the name of the registers and the values are the section names for the textures

Type:

Optional[Dict[str, str]]

_editReg(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

The main function to edit the registers for the current IfContentPart

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (BaseIniFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

clear()

Clears any saved state within this class

edit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer) IfContentPart

Edits the registers for the current IfContentPart. Includes boilerplate of clearing all saved states and handling texture adds/edits

Note

If you are inheriting this class, you probably want to override the RegEditFilter._editReg() method instead

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

Returns:

The resultant part of the IfTemplate that got its registers editted

Return type:

IfContentPart

handleTexAdd(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

handleTexEdit(part: IfContentPart, modType: ModType, fixModName: str, obj: str, sectionName: str, fixer: GIMIObjReplaceFixer)

Does any post-processing on the added textures of the corresponding GIMIObjReplaceFixer

Parameters:
  • part (IfContentPart) – The part of the IfTemplate that is being editted

  • modType (ModType) – The type of mod that is being fix from

  • fixModName (str) – The name of the mod to fix to

  • obj (str) – The name of the mod object being fixed

  • fixer (GIMIObjReplaceFixer) – The fixer that is editting the registers

property textures: Dict[str, List[str]]

Texture .dds files to be editted from existing textures files

  • The keys are the name of the type of texture files of the mod object

  • The values are the name of the registers to hold the editted textures

eg.
{"NormalMap": ["ps-t1", "r13", "ps-t0"], "ShinyMetalMap": ["ps-t2"]}

Getter:

Retrieves the texture .dds files to be editted by register

Setter:

Sets the textures to be editted

Type:

Dict[str, List[str]]



Buffer Files

Some data related to .buf files


BufType

Attributes
Methods
class BufType(name: str)

The base class for a type in a .buf file

Parameters:

name (str) – The name of the element

name

The name of the element

Type:

str

decode(src: bytes) Any

Decode the raw bytes to the required format for the type

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded format for the type

Return type:

Any

encode(src: Any) bytes

Encodes the format of the type back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (Any) – The decoded format for the type

Returns:

The encoded raw bytes

Return type:

bytes


BufDataType

Attributes
Methods
class BufDataType(name: str, size: int, isBigEndian: bool = False)

This class inherits from BufType

The type definition for an elementary data type within a .buf file

Parameters:
  • name (str) – The name of the element

  • size (int) – The byte size for the data type

  • isBigEndian (bool) –

    Whether the type is in big endian mode

    Default: False

size

The byte size for the data type

Type:

int

decode(src: bytes) Any

Decode the raw bytes to the required format for the type

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded format for the type

Return type:

Any

encode(src: Any) bytes

Encodes the format of the type back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (Any) – The decoded format for the type

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool


BufBaseInt

Attributes
Methods
class BufBaseInt(name: str, size: int, isBigEndian: bool = False, isSigned: bool = True)

This class inherits from BufDataType

The type definition for some generic integer type within a .buf file

Parameters:
  • name (str) – The name of the element

  • size (int) – The byte size for the data type

  • isBigEndian (bool) –

    Whether the type is in big endian mode

    Default: False

  • isSigned (bool) –

    Whether the type is signed

    Default: True

decode(src: bytes) int

Decode the raw bytes to an integer

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded signed integer

Return type:

int

encode(src: int) bytes

Encodes an integer back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (int) – The integer to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool

property isSigned: bool

Whether the data type is signed

Getter:

Retrieves whether the data type is signed

Type:

bool


BufSignedInt

Attributes
Methods
class BufSignedInt(name: str = 'SignedInt32', size: int = 4, isBigEndian: bool = False)

This class inherits from BufBaseInt

The type definition for some signed integer type within a .buf file

Parameters:
  • name (str) –

    The name of the element

    Default: BufDataTypeNames.Int32.value

  • size (int) –

    The byte size for the data type

    Default: ByteSize.Int32.value

  • isBigEndian (bool) –

    Whether the type is in big endian mode

    Default: False

decode(src: bytes) int

Decode the raw bytes to an integer

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded signed integer

Return type:

int

encode(src: int) bytes

Encodes an integer back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (int) – The integer to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool

property isSigned: bool

Whether the data type is signed

Getter:

Retrieves whether the data type is signed

Type:

bool


BufUnSignedInt

Attributes
Methods
class BufUnSignedInt(name: str = 'UnsignedInt32', size: int = 4, isBigEndian: bool = False)

This class inherits from BufBaseInt

The type definition for some signed integer type within a .buf file

Parameters:
decode(src: bytes) int

Decode the raw bytes to an integer

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded signed integer

Return type:

int

encode(src: int) bytes

Encodes an integer back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (int) – The integer to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool

property isSigned: bool

Whether the data type is signed

Getter:

Retrieves whether the data type is signed

Type:

bool


BufBaseFloat

Attributes
Methods
class BufBaseFloat(name: str, size: int, isBigEndian: bool = False)

This class inherits from BufDataType

The type definition for a generic floating point number within a .buf file

Parameters:
  • name (str) – The name of the element

  • size (int) – The byte size for the data type

  • isBigEndian (bool) –

    Whether the type is in big endian mode

    Default: False

decode(src: bytes) int

Decode the raw bytes to a floating point number

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded floating point

Return type:

float

encode(src: Any) bytes

Encodes the floating point back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (float) – The floating point to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool


BufFloat

Attributes
Methods
class BufFloat(isBigEndian: bool = False)

This class inherits from BufBaseFloat

The type definition for a 32-bit floating point number within a .buf file

Parameters:

isBigEndian (bool) –

Whether the type is in big endian mode

Default: False

decode(src: bytes) int

Decode the raw bytes to a floating point number

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded floating point

Return type:

float

encode(src: Any) bytes

Encodes the floating point back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (float) – The floating point to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool


BufFloat16

Attributes
Methods
class BufFloat16(isBigEndian: bool = False)

This class inherits from BufBaseFloat

The type definition for a 16-bit half precision floating point number within a .buf file

Parameters:

isBigEndian (bool) –

Whether the type is in big endian mode

Default: False

decode(src: bytes) int

Decode the raw bytes to a floating point number

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded floating point

Return type:

float

encode(src: Any) bytes

Encodes the floating point back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (float) – The floating point to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool


BufUnorm

Attributes
Methods
class BufUnorm(name: str, size: int, isBigEndian: bool = False)

This class inherits from BufBaseInt

The type definition for an unsigned normalized integer number within a .buf file

Parameters:
  • name (str) – The name of the element

  • size (int) – The byte size for the data type

  • isBigEndian (bool) – Whether the type is in big endian mode

decode(src: bytes) float

Decode the raw bytes to the floating point value for the unsigned normalized integer

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded floating point

Return type:

float

encode(src: float) bytes

Encodes the floating point back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (float) – The floating point to encode

Returns:

The encoded raw bytes

Return type:

bytes

property isBigEndian: bool

The endianness for the data type

Getter:

Retrieves whether the data type is in big endian mode

Setter:

Sets the new endianness for the data type

Type:

bool

property isSigned: bool

Whether the data type is signed

Getter:

Retrieves whether the data type is signed

Type:

bool


BufElementType

Methods
class BufElementType(name: str, formatName: str, dataTypes: List[BufDataType])

This class inherits from BufType

The type definition for an element within a .buf file

Parameters:
  • name (str) – The name of the element

  • formatName (str) – The name of the type format according to 3dmigoto

  • dataTypes (List[BufDataType]) – The data types composed within the element

formatName

The name of the type format according to 3dmigoto

Type:

str

property dataTypes: List[BufDataType]

The data types composed within the element

Getter:

Retrieves the data types within the element

Setter:

Sets the new data types for the element

Type:

List[BufDataType]

decode(src: bytes) List[Any]

Decode the raw bytes to the required format for the type

Warning

Please make sure the number of bytes passed into ‘src’ matches the size of the type

Parameters:

src (bytes) – The raw bytes to decode

Returns:

The decoded format for the type

Return type:

Any

encode(src: List[Any]) bytes

Encodes the format of the type back to raw bytes

Warning

Please make sure ‘src’ is within the acceptable range for the type

Parameters:

src (Any) – The decoded format for the type

Returns:

The encoded raw bytes

Return type:

bytes

property size

The byte size for the element

Getter:

The size of the element

Type:

int


BaseBufEditor

Methods
class BaseBufEditor

Base class to edit some .buf file

fix(bufFile: BufFile, fixedBufFile: str) str | None | bytearray

Edits the binary file

Parameters:
  • bufFile (BufFile) – The binary .buf file to be modified

  • fixedBufFile (str) – The name of the fixed .buf file

Returns:

If the argument fixedBufFile is None, then will return an array of bytes for the fixed .buf file

Otherwise will return the filename to the fixed .buf file if the provided .buf file got corrected

Return type:

Union[Optional[str], bytearray]


BufEditor

Methods
class BufEditor(filters: List[Callable[[Dict[str, List[Any]], int, int, int], Dict[str, List[Any]]]] | None = None)

This class inherits from BaseBufEditor

Class to edit some .buf file

Parameters:

filters (Optional[List[Callable[[Dict[str, List[Any]], int, int, int], Dict[str, List[Any]]]]]) –

The filters used to edit the data for each line in the .buf file

The filters take in the following arguments:

  1. The data for a particular line

  2. The starting byte index of the line that is read

  3. The line index being processed

  4. The size of each line

The output of the filters is the resultant data that consists where the keys are the names of the elements within a line in the .buf file and the values are the resultant data for each element in the line

Default: None

fix(bufFile: BufFile, fixedBufFile: str) str | None | bytearray

Edits the binary file

Parameters:
  • bufFile (BufFile) – The binary .buf file to be modified

  • fixedBufFile (str) – The name of the fixed .buf file

Returns:

If the argument fixedBufFile is None, then will return an array of bytes for the fixed .buf file

Otherwise will return the filename to the fixed .buf file if the provided .buf file got corrected

Return type:

Union[Optional[str], bytearray]



Models

Some internal data models used in the project.


Model

Attributes
Methods
class Model(logger: Logger | None = 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

logger

The logger used to print messages to the console

Type:

Optional[Logger]

print(funcName: str, *args, **kwargs)

Prints out output

Parameters:
  • funcName (str) – The name of the function in the logger for printing out the output

  • *args (List[str]) – Arguments to pass to the function in the logger

  • **kwargs (Dict[str, Any]) – Keyword arguments to pass to the function in the logger

Returns:

The return value from running the corresponding function in the logger

Return type:

Any


IniResourceModel

Attributes
class IniResourceModel(iniFolderPath: str)

Contains data for some particular resource in a .ini file

Parameters:

iniFolderPath (str) – The folder path to where the .ini file of the resource is located

iniFolderPath

The folder path to where the .ini file of the resource is located

Type:

str


IniFixResourceModel

class IniFixResourceModel(iniFolderPath: str, fixedPaths: Dict[int, Dict[str, List[str]]], origPaths: Dict[int, List[str]] | None = None)

This class inherits from IniResourceModel

Contains data for fixing a particular resource in a .ini file


Supported Operations:

for fixedPath, fixedFullPath, origPath, origFullPath in x

Iterates over all the fixed paths to some resource within a IfContentPart, x

The tuples to iterate over are as follows: #. fixedPath: (str) The path name of the fixed file #. fixedFullPath: (str) The full path name to the fixed file #. origPath: (Optional[str]) The path to the orignal file, if available #. origFullPath: (Optional[str]) The full path name to the original file, if available

Parameters:
  • iniFolderPath (str) – The folder path to where the .ini file of the resource is located

  • fixedPaths (Dict[int, Dict[str, List[str]]]) –

    The file paths to the fixed files for the resource

    • The outer keys are the indices to the IfContentPart that the resource file appears in the IfTemplate for some resource

    • The inner keys are the names for the type of mod to fix to

    • The inner values are the file paths within the IfContentPart

  • origPaths (Optional[Dict[int, List[str]]]) –

    The file paths for the resource



    Default: None

fixedPaths

The file paths to the fixed files for the resource

  • The outer keys are the indices to the IfContentPart that the resource files appear in the IfTemplate for some resource

  • The inner keys are the names for the type of mod to fix to

  • The inner values are the file paths within the IfContentPart

Type:

Dict[int, Dict[str, List[str]]]

origPaths

The file paths to the files for the resource

Type:

Optional[Dict[int, List[str]]]

fullPaths

The absolute paths to the fixed resource files for the resource

  • The outer keys are the indices to the IfContentPart that the files appear in the IfTemplate for some resource

  • The inner keys are the names for the type of mod to fix to

  • The inner values are the file paths within the IfContentPart

Type:

Dict[int, Dict[str, List[str]]]

origFullPaths

The absolute paths to the files for the resource

Type:

Dict[int, List[str]]

clear()

Clears out all the path data stored


IniSrcResourceModel

Attributes
class IniSrcResourceModel(iniFolderPath: str, paths: Dict[int, List[str]])

This class inherits from IniResourceModel

Contains data for a particular resource in the original .ini file


Supported Operations:

for path, fullPath in x

Iterates over all the paths to some resource within a IfContentPart, x

The tuples to iterate over are as follows: #. path: (str) The path to the file #. fullPath: (str) The full path to the file

Parameters:
  • iniFolderPath (str) – The folder path to where the .ini file of the resource is located

  • paths (Dict[int, List[str]]) –

    The file paths to the fixed files for the resource

paths

The file paths to the fixed files for the resource

Type:

Dict[int, List[str]]

fullPaths

The absolute paths to the fixed resource files for the resource

Type:

Dict[int, List[str]]


IniTexModel

Methods
class IniTexModel(iniFolderPath: str, fixedPaths: Dict[int, Dict[str, List[str]]], texEdits: Dict[int, Dict[str, List[BaseTexEditor]]], origPaths: Dict[int, List[str]] | None = None)

This class inherits from IniResourceModel

Contains data for editting some texture files in a .ini file


Supported Operations:

for fixedPath, fixedFullPath, origPath, origFullPath in x

Iterates over all the fixed paths to some texture within a IfContentPart, x

The tuples to iterate over are as follows: #. fixedPath: (str) The path name of the fixed file #. fixedFullPath: (str) The full path name to the fixed file #. origPath: (Optional[str]) The path to the orignal file, if available #. origFullPath: (Optional[str]) The full path name to the original file, if available

Parameters:
  • iniFolderPath (str) – The folder path to where the .ini file of the resource is located

  • fixedPaths (Dict[int, Dict[str, List[str]]]) –

    The file paths to the fixed files for the resource

    • The outer keys are the indices to the IfContentPart that the .dds files appears in the IfTemplate for some texture

    • The inner keys are the names for the type of mod to fix to

    • The inner values are the file paths within the IfContentPart

  • texEdits (Dict[int, Dict[str, List[BaseTexEditor]]]) –

    The texture editors used to edit the texture

    • The outer keys are the indices to the IfContentPart that the .dds files appears in the IfTemplate for some texture

    • The inner keys are the names for the type of mod to fix to

    • The inner values are the different texture editors used to the .dds files

  • origPaths (Optional[Dict[int, List[str]]]) –

    The file paths for the resource



    Default: None

clear()

Clears out all the path data stored


IniDownloadModel

Attributes
class IniDownloadModel(iniFolderPath: str, paths: Dict[int, List[str]], downloads: Dict[int, List[FileDownload]])

This class inherits from: IniSrcResourceModel

Contains data about a particular resource to download in the original .ini file


Supported Operations:

for path, fullPath in x

Iterates over all the paths to some resource within a IfContentPart, x

The tuples to iterate over are as follows: #. path: (str) The path to the file #. fullPath: (str) The full path to the file

Parameters:
  • iniFolderPath (str) – The folder path to where the .ini file of the resource is located

  • paths (Dict[int, List[str]]) –

    The file paths to the download files for the resource

  • downloads (Dict[int, List[FileDownload]]) –

    The downloader associated for each file

    • The keys are the indices to the IfContentPart that the resource file appears in the IfTemplate for some resource

    • The values are the downloaders for the files within the IfContentPart

downloads

The downloader associated for each file

  • The keys are the indices to the IfContentPart that the resource file appears in the IfTemplate for some resource

  • The values are the downloaders for the files within the :class:`IfContentPart`s

Type:

Dict[int, List[FileDownload]]


DownloadData

Methods
class DownloadData(name: str, download: FileDownload, resourceKeys: Dict[str, str] | None = None)

Download data used by the .ini files

Parameters:
  • name (str) – The name of the download resource in the .ini file

  • download (FileDownload) – The file download to initiate

  • resourceKeys (Dict[str, str]) –

    Any additional KVPs to add to the resource section of the download resource

    Default: None

  • name – The name of the download resource in the .ini file

  • download – The file download to initiate

  • resourceKeys – Any additional KVPs to add to the resource section of the download resource

addToPart(part: IfContentPart, key: str, val: str, **kwargs)

Adds a reference to the download into ‘part’

Parameters:
  • part (IfContentPart) – The part to add the reference

  • key (str) – The key to the download reference KVP

  • val (str) – The value to the download reference KVP

  • **kwargs – Any additional keyword arguments for this method

addToSection(ifTemplate: IfTemplate, key: str, val: str)

Adds a reference to the download into the ‘ifTemplate’

Parameters:
  • ifTemplate (IfTemplate) – The section to add the reference

  • key (str) – The key to the download reference KVP

  • val (str) – The value to the download reference KVP


BlendDownloadData

Methods
class BlendDownloadData(name: str, download: FileDownload, resourceKeys: Dict[str, str] | None = None)

This class inherits from DownloadData

Blend.buf download data used by the .ini files

Parameters:
  • name (str) – The name of the download resource in the .ini file

  • download (FileDownload) – The file download to initiate

  • resourceKeys (Optional[Dict[str, str]]) –

    Any additional KVPs to add to the resource section of the download resource

    Default: None

addToPart(part: IfContentPart, key: str, val: str, vertexCount: int = 0, **kwargs)

Adds a reference to the download into ‘part’

Parameters:
  • part (IfContentPart) – The part to add the reference

  • key (str) – The key to the download reference KVP

  • val (str) – The value to the download reference KVP

  • vertexCount (int) –

    The number of vertices in the model (.vb file or its .buf counterparts)


    Tip

    From BlendFile, we know that a line in a Blend.buf file for a character usually contains 32 bytes.

    Since a line in a Blend.buf file usually references a single vertex, You can calculate the vertex count by doing:

    (# of bytes in the Blend.buf file) / 32 = vertexCount
    

  • **kwargs – Any additional keyword arguments for this method

addToSection(ifTemplate: IfTemplate, key: str, val: str)

Adds a reference to the download into the ‘ifTemplate’

Parameters:
  • ifTemplate (IfTemplate) – The section to add the reference

  • key (str) – The key to the download reference KVP

  • val (str) – The value to the download reference KVP


FileStats

class FileStats

Keeps track of different types of files encountered by the program

fixed

The paths to the fixed files

Type:

Set[str]

skipped

The exceptions to files paths that were skipped due to errors

Type:

Dict[str, Exception]

skippedByMods

The exceptions to file paths that were skipped due to errors, grouped for each mod folder paths

  • The outer keys are the names to the mod folders

  • The inner keys are the names of the file paths

  • The inner values are the errors encountered

Type:

DefaultDict[str, Dict[str, Exception]]

removed

The file paths for files that got removed

Type:

Set[str]

undoed

The file paths for files that got undoed to a previous state before the software was ran

Type:

Set[str]

visitedAtRemoval

The file paths for files that got visited when attempting to remove those files

Type:

Set[str]

addFixed(filePath: str)

Adds in the file path to the paths of fixed files

Parameters:

filePath (str) – the new file path to a fixed file

addRemoved(filePath: str)

Adds in a new file path that got removed

Parameters:

filePath (str) – The file path that got removed

addSkipped(filePath: str, error: Exception, modFolder: str | None = None)

Adds a new file path to the paths of skipped files

Parameters:
  • filePath (str) – the new file path that got skipped

  • error (Exception) – The exception that caused the file to be skipped

  • modFolder (Optional[str]) –

    The mod folder that contains the file path. If this argument is None, will read the folder from the provided argument in filePath

    Default: None

addUndoed(filePath: str)

Adds in a new file path that got undoeds

Parameters:

filePath (str) – The file path that got undoed

addVisitedAtRemoval(filePath: str)

Adds in a new file path that got visited when the software attempts to remove the file

Parameters:

filePath (str) – The file path that got visited when the software attempts to remove the file

clear()

Clears out all saved data about the files

update(modFolder: str | None = None, newFixed: Set[str] | None = None, newSkipped: Dict[str, Exception] | None = None, newRemoved: Set[str] | None = None, newUndoed: Set[str] | None = None, newVisitedAtRemoval: Set[str] | None = None)

Updates the overall file paths in this class

Parameters:
  • modFolder (Optional[str]) –

    The folder where the files got skipped

    Default: None

  • newFixed (Optional[Set[str]]) –

    The newly updated file paths that got fixed

    Default: None

  • newSkipped (Optional[Dict[str, Exception]]) –

    The newly skipped file paths due to errors within a particular mod folder

    Default: None

  • newRemoved (Optional[Set[str]]) –

    The newly updated file paths that got removed

    Default: None

  • newUndoed (Optional[Set[str]]) –

    The newly updated file paths that got contents undoed to a previous state before the software was ran

    Default: None

  • newVisitedAtRemoved (Optional[Set[str]]) –

    The newly updated file paths that got visited when the software attempts to remove those files

    Default: None

updateFixed(newFixed: Set[str])

Updates the fixed file paths

Parameters:

newFixed (Set[str]) – The newly added file paths that got fixed

updateRemoved(newRemoved: Set[str])

Updates the file paths that got removed

Parameters:

newRemoved (Set[str]) – The newly updated file paths that got removed

updateSkipped(newSkipped: Dict[str, Exception], modFolder: str | None = None)

Updates the file paths that got skipped due to errors

Parameters:
  • newSkipped (Dict[str, Exception]) – The newly skipped file paths due to errors within a particular mod folder

  • modFolder (Optional[str]) – The folder where the files got skipped. If this argument is None, will read the folder from the provided file pahts in newSkipped

updateUndoed(newUndoed: Set[str])

Updates the file paths that got contents undoed to a previous state before the software was ran

Parameters:

newRemoved (Set[str]) – The newly updated file paths that got contents undoed to a previous state before the software was ran

updateVisitedAtRemoval(newVisitedAtRemoval: Set[str])

Updates the file paths that got visited when the software attempts to remove those files

Parameters:

newVisitedAtRemoved (Set[str]) – The newly updated file paths that got visited when the software attempts to remove those files


CachedFileStats

class CachedFileStats
fixed

The paths to the files retrieved during a cache miss

Type:

Set[str]

hit

The paths to the files retrieved during a cache hit

Type:

Set[str]

addFixed(filePath: str)

Adds in the file path to the paths of fixed files

Parameters:

filePath (str) – the new file path to a fixed file

addHit(filePath: str)

Adds a new file path to the paths of cache hit files

Parameters:

filePath (str) – the new file path to that was hit

addRemoved(filePath: str)

Adds in a new file path that got removed

Parameters:

filePath (str) – The file path that got removed

addSkipped(filePath: str, error: Exception, modFolder: str | None = None)

Adds a new file path to the paths of skipped files

Parameters:
  • filePath (str) – the new file path that got skipped

  • error (Exception) – The exception that caused the file to be skipped

  • modFolder (Optional[str]) –

    The mod folder that contains the file path. If this argument is None, will read the folder from the provided argument in filePath

    Default: None

addUndoed(filePath: str)

Adds in a new file path that got undoeds

Parameters:

filePath (str) – The file path that got undoed

addVisitedAtRemoval(filePath: str)

Adds in a new file path that got visited when the software attempts to remove the file

Parameters:

filePath (str) – The file path that got visited when the software attempts to remove the file

clear()

Clears out all saved data about the files

update(modFolder: str | None = None, newFixed: Set[str] | None = None, newSkipped: Dict[str, Exception] | None = None, newRemoved: Set[str] | None = None, newUndoed: Set[str] | None = None, newVisitedAtRemoval: Set[str] | None = None, newHit: Set[str] | None = None)

Updates the overall file paths in this class

Parameters:
  • modFolder (Optional[str]) –

    The folder where the files got skipped

    Default: None

  • newFixed (Optional[Set[str]]) –

    The newly updated file paths that got fixed

    Default: None

  • newSkipped (Optional[Dict[str, Exception]]) –

    The newly skipped file paths due to errors within a particular mod folder

    Default: None

  • newRemoved (Optional[Set[str]]) –

    The newly updated file paths that got removed

    Default: None

  • newUndoed (Optional[Set[str]]) –

    The newly updated file paths that got contents undoed to a previous state before the software was ran

    Default: None

  • newVisitedAtRemoved (Optional[Set[str]]) –

    The newly updated file paths that got visited when the software attempts to remove those files

    Default: None

updateFixed(newFixed: Set[str])

Updates the fixed file paths

Parameters:

newFixed (Set[str]) – The newly added file paths that got fixed

updateHit(newHit: Set[str])

Updates the file paths that have a cache hit

Parameters:

newHit (Set[str]) – The new file paths that got a hit

updateRemoved(newRemoved: Set[str])

Updates the file paths that got removed

Parameters:

newRemoved (Set[str]) – The newly updated file paths that got removed

updateSkipped(newSkipped: Dict[str, Exception], modFolder: str | None = None)

Updates the file paths that got skipped due to errors

Parameters:
  • newSkipped (Dict[str, Exception]) – The newly skipped file paths due to errors within a particular mod folder

  • modFolder (Optional[str]) – The folder where the files got skipped. If this argument is None, will read the folder from the provided file pahts in newSkipped

updateUndoed(newUndoed: Set[str])

Updates the file paths that got contents undoed to a previous state before the software was ran

Parameters:

newRemoved (Set[str]) – The newly updated file paths that got contents undoed to a previous state before the software was ran

updateVisitedAtRemoval(newVisitedAtRemoval: Set[str])

Updates the file paths that got visited when the software attempts to remove those files

Parameters:

newVisitedAtRemoved (Set[str]) – The newly updated file paths that got visited when the software attempts to remove those files


RemapStats

Methods
class RemapStats

The file stats for the overall remap process at RemapService

blend

Stats about whether some Blend.buf files got fixed/skipped/removed

Note

  • removed Blend.buf files refer to RemapBlend.buf files that were previously made by this software on a previous run

Type:

FileStats

position

Stats about whether some Position.buf files got fixed/skipped/removed

Note

  • removed Position.buf files refer to RemapPosition.buf files that were previously made by this software on a previous run

Type:

FileStats

ini

Stats about whether some .ini files got fixed/skipped/undoed

Note

  • The skipped .ini files may or may not have been previously fixed. A path to some .ini file in this attribute DOES NOT imply that the .ini file previously had a fix

Type:

FileStats

mod

Stats about whether a mod has been fixed/skipped

Type:

FileStats

texAdd

Stats about whether an existing texture file has been editted/removed

Type:

FileStats

texEdit

Stats about whether some brand new texture file created by this software has been created/removed

Type:

FileStats

download

Stats about whether some downloaded mod files have been recently downloaded/removed

Type:

CachedFileStats

clear()

Clears all the stats for the remap process



Texture Editing

Classes to help with editting texture files.


BaseTexEditor

Methods
class BaseTexEditor

Base class to edit some .dds file

fix(texFile: TextureFile, fixedTexFile: str)

Edits the texture file

Parameters:
  • texFile (TextureFile) – The texture .dds file to be modified

  • fixedTexFile (str) – The name of the fixed texture file


TexEditor

class TexEditor(filters: List[BaseTexFilter | Callable[[TextureFile], Any]] | None = None)

This class inherits from BaseTexEditor

Class for editing a texture file

Parameters:

filters (Optional[List[Union[BaseTexFilter, Callable[[TextureFile], Any]]]]) –

The filters for editting the image

Default: None

filters

The filters for editting the image

Default: None

Type:

List[Union[BaseTexFilter, Callable[[TextureFile], Any]]]

classmethod adjustBrightness(texFile: TextureFile, brightness: float)

Adjust the brightness of the texture

Parameters:
  • texFile (TextureFile) – The texture file to be editted

  • brightness (float) –

    The brightness to adjust the texture.

    0 => make the image black 1 => original brightness of the image >1 => make the image brighter

classmethod adjustSaturation(texFile: TextureFile, saturation: float)

Adjust the saturation of the texture

Parameters:
  • texFile (TextureFile) – The texture file to be editted

  • brightness (float) –

    The brightness to adjust the texture.

    0 => make the image black and white 1 => original saturation of the image >1 => make the image really saturated like a TV

fix(texFile: TextureFile, fixedTexFile: str)

Edits the texture file

Parameters:
  • texFile (TextureFile) – The texture .dds file to be modified

  • fixedTexFile (str) – The name of the fixed texture file

classmethod setTransparency(texFile: TextureFile, alpha: int)

Sets the transparency of the texture

Parameters:
  • texFile (TextureFile) – The texture file to be editted

  • alpha (int) –

    The value for the alpha (transparency) channel of each pixel. Range from 0 - 255.

    0 => Transparent 255 => Opaque


TexCreator

Methods
class TexCreator(width: int, height: int, colour: Colour | None = None)

This class inherits from BaseTexEditor

Creates a brand new .dds file if the file doe not exist

fix(texFile: TextureFile, fixedTexFile: str)

Edits the texture file

Parameters:
  • texFile (TextureFile) – The texture .dds file to be modified

  • fixedTexFile (str) – The name of the fixed texture file


Colour

class Colour(red: int = 255, green: int = 255, blue: int = 255, alpha: int = 255)

Class to store data for a colour


Supported Operations:

hash(x)

Retrieves the hash id for the colour based off Colour.getId()


Parameters:
  • red (int) –

    The red channel for the colour

    Default: 255

  • green (int) –

    The green channel for the colour

    Default: 255

  • blue (int) –

    The blue channel for the colour

    Default: 255

  • alpha (int) –

    The transparency (alpha) channel for the colour with a range from 0-255. 0 = transparent, 255 = opaque

    Default: 255

red

The red channel for the colour

Type:

int

green

The green channel for the colour

Type:

int

blue

The blue channel for the colour

Type:

int

alpha

The transparency (alpha) channel for the colour with a range from 0-255. 0 = transparent, 255 = opaque

Type:

int

classmethod boolToColourChannel(val: bool, min: int = 0, max: int = 255) int

Converts a boolean value to a value for a colour channel

Parameters:
  • val (bool) – The boolean value to convert

  • min (int) –

    The minimum bound for the colour channel

    Default: 0

  • max (int) –

    The maximum bound for the colour channel

    Default: 255

Returns:

The corresponding value for the colour channel based off the boolean

Return type:

int

classmethod boundColourChannel(val: int, min: int = 0, max: int = 255)

Makes a colour channel to be in between the minimum and maximum value

Parameters:
  • val (int) – The value of the channel

  • min (int) –

    The minimum bound for the colour channel

    Default: 0

  • max (int) –

    The maximum bound for the colour channel

    Default: 255

copy(colour, withAlpha: bool = True)

Copies the colour value from ‘colour’

Parameters:
  • colour (Colour) – The colour to copy from

  • withAlpha (bool) –

    Whether to also copy the alpha channel

    Default: True

fromTuple(colourTuple: Tuple[int, int, int, int])

Updates the colour based off ‘colourTuple’

Parameters:

colourTuple (Tuple[int, int, int, int]) – The raw values for the colour in RGBA format

getId() str

Retrieves a unique id for the colour

Note

The id generated will not correspond to any id generated from ColourRange.getId()

Returns:

The id for the colour

Return type:

str

getTuple() Tuple[int, int, int, int]

Retrieves the tuple representation of the colour in RGBA format

Returns:

The colour tuple containing the following colour channel values indicated by the order below:

  1. Red

  2. Green

  3. Blue

  4. Alpha

Return type:

Tuple[int, int, int, int]

match(colour)

Whether ‘colour’ matches this colour

Parameters:

colour (Colour) – The colour to check

Returns:

Whether the colour matches this colour

Return type:

bool


ColourRange

Methods
class ColourRange(min: Colour, max: Colour)

Class to store data for a colour


Supported Operations:

hash(x)

Retrieves the hash id for the colour range based off ColourRange.getId()


Parameters:
  • min (Colour) – The minimum range for the RGBA values

  • max (Colour) – The maximum range for the RGBA values

getId() str

Retrieves a unique id for the colour range

Note

The id generated will not correspond to any id generated from Colour.getId()

Returns:

The id for the colour range

Return type:

str

match(colour: Colour) bool

Whether ‘colour’ is within the colour range

Parameters:

colour (Colour) – The colour to check

Returns:

Whether the colour is within the colour range

Return type:

bool



Texture Filters

Classes to transform the image within a TextureFile


BaseTexFilter

Methods
class BaseTexFilter

Base class for transforming a texture file


Supported Operations:

x(texFile)

Calls transform() for the filters, x

transform(texFile: TextureFile)

Applies a Transformation to ‘texFile’

Parameters:

texFile (TextureFile) – The texture to be editted


GammaFilter

Attributes
Methods
class GammaFilter(gamma: float)

This class inherits from BaseTexFilter

Performs a Gamma Correction on the texture file. See CorrectGamma for more details


Supported Operations:

x(texFile)

Calls transform() for the filter, x

Parameters:

gamma (float) – The luminance parameter for how bright humans perceive the image.

gamma

The luminance parameter for how bright humans perceive the image.

Type:

float

transform(texFile: TextureFile)

Applies a Transformation to ‘texFile’

Parameters:

texFile (TextureFile) – The texture to be editted


InvertAlphaFilter

Methods
class InvertAlphaFilter

This class inherits from BaseTexFilter

Inverts the alpha channel of an image.


Supported Operations:

x(texFile)

Calls transform() for the filter, x

transform(texFile: TextureFile)

Applies a Transformation to ‘texFile’

Parameters:

texFile (TextureFile) – The texture to be editted


ColourReplaceFilter

class ColourReplaceFilter(replaceColour: Colour, coloursToReplace: Set[Colour | ColourRange] | None = None, replaceAlpha: bool = True)

This class inherits from BaseTexFilter

Replaces specific colours in the image


Supported Operations:

x(texFile)

Calls transform() for the filter, x

Paramaters

replaceColour: Colour

The colour to fill in

coloursToReplace: Optional[Set[Union[Colour, ColourRange]]]

The colours to find to be replaced. If this value is None, then will always replace the colour of the pixel

Default: None

replaceAlpha: bool

Whether to also replace the alpha channel of the original colour

Default: True

replaceColour

The colour to fill in

Type:

Colour

coloursToReplace

The colour to find to be replaced. If this value is None, then will always replace the colour of the pixel

Type:

Optional[Set[Union[Colour, ColourRange]]]

replaceAlpha

Whether to also replace the alpha channel of the original colour

Type:

bool

transform(texFile: TextureFile)

Applies a Transformation to ‘texFile’

Parameters:

texFile (TextureFile) – The texture to be editted


TransparencyAdjustFilter

Attributes
class TransparencyAdjustFilter(alphaChange: int, coloursToFilter: Set[Colour | ColourRange] | None = None)

This class inherits from BaseTexFilter

Adjust the trasparency (alpha channel) for an image


Supported Operations:

x(texFile)

Calls transform() for the filter, x

Parameters:
  • alphaChange (int) –

    How much to adjust the alpha channel of each pixel. Range from -255 to 255

    Note

    The alpha channel for an image is inclusively bounded from 0 to 255

  • coloursToFilter (Optional[Set[Union[Colour, ColourRange]]]) –

    The specific colours to have their transparency adjusted. If this value is None, then will adjust the transparency for the entire image`<br />`

    Default: None

alphaChange

How much to adjust the alpha channel of each pixel. Range from -255 to 255

Type:

int

adjustTransparency(texFile: TextureFile)

Adjusts the transparency for the entire image

Parameters:

texFile (TextureFile) – The texture to be editted

transform(texFile: TextureFile)

Applies a Transformation to ‘texFile’

Parameters:

texFile (TextureFile) – The texture to be editted


HueAdjust

Methods
class HueAdjust(hue: int)

This class inherits from BaseTexFilter

Adjusts the hue of a texture file


Supported Operations:

x(texFile)

Calls transform() for the filter, x

Parameters:

hue (int) – The hue to adjust the image. Value is from -180 to 180

_adjustHue(hue: int) int

Adjusts the hue

Parameters:

hue (int) – The current hue that has not been adjust yet

Returns:

The adjusted hue

Return type:

int

transform(texFile: TextureFile)

Applies a Transformation to ‘texFile’

Parameters:

texFile (TextureFile) – The texture to be editted


PixelFilter

Attributes
Methods
class PixelFilter(transforms: List[BasePixelTransform | Callable[[Colour, int, int], Colour]] | None = None)

This class inherits from BaseTexFilter

Manipulates each pixel within an image

Warning

This filter iterates through every pixel of the image using Python’s for loops. It is recommended to try to use the different filters inherited from the BaseTexFilter class since those filters have more capability to interact with Pillow API or the Numpy API, where their implementation are written at the C level, allowing images to be editted A LOT faster.


Supported Operations:

x(texFile)

Calls transform() for the filter, x

Parameters:

transforms (Optional[List[Union[BasePixelTransform, Callable[[Colour, int, int], Any]]]]) –

The functions to edit a single pixel in the texture file

The functions take the following parameters:

  1. The RGBA colour of the pixel

  2. The x-coordinate

  3. The y-coordinate


Default: None

transforms

The transformation functions to edit a single pixel in the texture file

Type:

List[Union[BasePixelTransform, Callable[[Colour], Colour]]]

transform(texFile: TextureFile)

Changes each individual pixel in the image

Parameters:

texFile (TextureFile) – The texture to be editteds


TexMetadataFilter

Attributes
Methods
class TexMetadataFilter(edits: Dict[str, Any] | None = None, removes: Set[str] | None = None)

This class inherits from BaseTexFilter

A pseudo-filter used to manipulate the metadata of a texture file (PIL.Image.Image.info)

Warning

Currently, any metadata won’t actually be saved into the texture file due to the image library (Pillow) facing difficulty porting the BCn Encoding Algorithm from C/C# to Python.

https://github.com/python-pillow/Pillow/issues/4864


But the following metadata will affect how this software saves the texture file:

  • gamma


Supported Operations:

x(texFile)

Calls transform() for the filter, x

Parameters:
  • edits (Optional[Dict[str, Any]]) –

    The edits to perform on the metadata

    Default: None

  • removes (Optional[Set[str]]) –

    keys to remove from the metadata

    Default: None

edits

The edits to perform on the metadata

Type:

Dict[str, Any]

removes

keys to remove from the metadata

Type:

Set[str]

transform(texFile: TextureFile)

Changes metadata of the image

Parameters:

texFile (TextureFile) – The texture to be editted



Pixel Transforms

Classes to help transform a single pixel within a texture file.


Warning

These transforms are used by the FixRaidenBoss2.PixelFilter class to iterate through every pixel of an image using Python’s for loops. It is recommended to try to use the different filters inherited from the FixRaidenBoss2.BaseTexFilter class since those filters have more capability to interact with Pillow API or the Numpy API, where their implementation are written at the C++ level, allowing images to be editted A LOT faster.


BasePixelTransform

Methods
class BasePixelTransform

Base class for transforming a pixel in a texture file


Supported Operations:

x(pixel, xCoord, yCoord)

Calls BasePixelTransform.transform() for the BasePixelTransform, x

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


ColourReplace

class ColourReplace(replaceColour: Colour, coloursToReplace: Set[Colour | ColourRange] | None = None, replaceAlpha: bool = True)

This class inherits from BasePixelTransform

Replaces a coloured pixel

Paramaters

replaceColour: Colour

The colour to fill in

coloursToReplace: Optional[Set[Union[Colour, ColourRange]]]

The colours to find to be replaced. If this value is None, then will always replace the colour of the pixel

Default: None

replaceAlpha: bool

Whether to also replace the alpha channel of the original colour

Default: True

replaceColour

The colour to fill in

Type:

Colour

coloursToReplace

The colour to find to be replaced. If this value is None, then will always replace the colour of the pixel

Type:

Optional[Set[Union[Colour, ColourRange]]]

replaceAlpha

Whether to also replace the alpha channel of the original colour

Type:

bool

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


CorrectGamma

Attributes
class CorrectGamma(gamma: float)

This class inherits from BasePixelTransform

Performs a Gamma Correction on an individual pixel using the following simple Gamma Correction Algorithm

Parameters:

gamma (float) –

The luminance parameter for how bright humans perceive the image. Based off the following Power Law Relationship`_:

V_out = V_in ^ gamma


Where V_out is the perceived brightness by human eyes while V_in is the actual brightness of the image


Note

higher gamma values make the image look brighter and less saturated while lower gamma values make the image look darker and more saturated.

gamma

The luminance parameter for how bright humans perceive the image.

Type:

float

classmethod correctGamma(pixelValue: int, gamma: float) int

The equation for the gamma correction done at every colour channel pixel

Parameters:
  • pixelValue (int) – The value of the pixel for some colour channel

  • gamma (float) – The luminance parameter for how bright humans perceive the image.

Returns:

The gamma corrected pixel values

Return type:

int

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


HighlightShadow

Attributes
Methods
class HighlightShadow(highlight: float = 0, shadow: float = 0)

This class inherits from BasePixelTransform

A filter that approximates the adjustment of the shadow/hightlight of an image

Parameters:
  • highlight (float) –

    The amount of highlight to apply to the pixel. Range from -1 to 1, and 0 = no change

    Default: 0

  • shadow (float) –

    The amount of shadow to apply to the pixel. Range from -1 to 1, and 0 = no change

    Default: 0

highlight

The amount of shadow to apply to the pixel. Range from -1 to 1, and 0 = no change

Type:

float

shadow

The amount of shadow to apply to the pixel. Range from -1 to 1, and 0 = no change

Type:

float

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


InvertAlpha

Methods
class InvertAlpha

This class inherits from BasePixelTransform

Inverts the alpha channel of a pixel

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


TempControl

Methods
class TempControl(temp: float = 0)

This class inherits from BasePixelTransform

Controls the temperature of a texture file using a modified version of the Simple Image Temperature/Tint Adjust Algorithm such that the colour channels increase/decrease linearly with respect to their corresponding pixel value and the user selected temperature

Parameters:

temp (float) –

The temperature to set the image. Range from -1 to 1

Default: 0

temp

The temperature to set the image. Range from -1 to 1

Type:

float

_redFactor

The rate for how fast the red channel will change

Type:

float

_blueFactor

The rate for how fast the blue channel will change

Type:

float

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


TintTransform

Attributes
Methods
class TintTransform(tint: int = 0)

This class inherits from BasePixelTransform

Controls the tint of a texture file using the Simple Image Temperature/Tint Adjust Algorithm

Parameters:

tint (int) –

The tint to set the image. Range from -100 to 100

Default: 0

tint

The tint to set the image. Range from -100 to 100

Type:

float

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel


Transparency

Attributes
Methods
class Transparency(alphaChange: int)

This class inherits from BasePixelTransform

Adjust the trasparency (alpha channel) for an image

Parameters:

alphaChange (int) –

How much to adjust the alpha channel of each pixel. Range from -255 to 255

Note

The alpha channel for an image is inclusively bounded from 0 to 255

alphaChange

How much to adjust the alpha channel of each pixel. Range from -255 to 255

Type:

int

transform(pixel: Colour, x: int, y: int)

Applies a Transformation to ‘pixel’

Parameters:
  • pixel (Colour) – The pixel to be editted

  • x (int) – x-coordinate of the pixel

  • y (int) – y-coordinate of the pixel



Views

Different display views for the project.


Logger

class Logger(prefix: str = '', logTxt: bool = False, verbose: bool = True)

Class for pretty printing output to display on the console

Parameters:
  • prefix (str) –

    line that is printed before any message is printed out

    Default: “”

  • logTxt (bool) –

    Whether to log all the printed messages into a .txt file once the fix is done

    Default: False

  • verbose (bool) –

    Whether to print out output

    Default: True

includePrefix

Whether to include the prefix string when printing out a message

Type:

bool

verbose

Whether to print out output

Type:

bool

logTxt

Whether to log all the printed messages into a .txt file once the fix is done

Type:

bool

_prefix

line that is printed before any message is printed out

Type:

str

_headings

A stack of headings that have been opened (by calling Heading.open()), but have not been closed yet (have not called Heading.close() yet)

Type:

Deque[Heading]

_loggedTxt

The text that will be logged into a .txt file

Type:

str

_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

Parameters:
  • message (str) – The message we want to print out

  • header (str) – The string that we want to sandwich our message against

bulletPoint(txt: str)

Prints out an item in an unordered list

Parameters:

txt (str) – The message we want to print out

clear()

Clears out any saved text from the logger

closeHeading()

Prints out a closing heading that corresponds to a previous opening heading printed (see line 3 of the example at Heading)

error(message: str)

Prints an error message

Parameters:

message (str) – The message we want to print out

classmethod getBulletStr(txt: str) str

Creates the string for an item in an unordered list

Parameters:

txt (str) – The message we want to print out

Returns:

The text formatted as an item in an unordered list

Return type:

str

classmethod getNumberedStr(txt: str, num: int) str

Creates the string for an ordered list

Parameters:
  • txt (str) – The message we want to print out

  • num (str) – The number we want to print out before the text for the ordered list

Returns:

The text formatted as an item in an ordered list

Return type:

str

getStr(message: str)

Retrieves the string to be printed out by the logger

Parameters:

message (str) – The message we want to print out

Returns:

The transformed text that the logger prints out

Return type:

str

handleException(exception: Exception)

Prints the message for an error

Parameters:

exception (Exception) – The error we want to handle

input(desc: str) str

Handles user input from the console

Parameters:

desc (str) – The question/description being asked to the user for input

Returns:

The resultant input the user entered

Return type:

str

list(lst: List[str], transform: Callable[[str], str] | None = None)

Prints out an ordered list

Parameters:
  • lst (List[str]) – The list of messages we want to print out

  • transform (Optional[Callable[[str], str]]) –

    A function used to do any processing on each message in the list of messages

    If this parameter is None, then the list of message will not go through any type of processing

    Default: None

log(message: str)

Regularly prints text onto the console

Parameters:

message (str) – The message we want to print out

property loggedTxt

The text to be logged into a .txt file

Getter:

Returns such a prefix

Type:

str

openHeading(txt: str, sideLen: int = 2, headingChar='=')

Prints out an opening heading

Parameters:
  • txt (str) – The message we want to print out

  • sideLen (int) –

    How many characters we want for the side border of the heading
    (see line 1 of the example at Heading)

    Default: 2

  • headingChar (str) –

    The type of character used to print the side border of the heading
    (see line 3 of the example at Heading)

    Default: “=”

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:

str

space()

Prints out a space

split()

Prints out a new line

waitExit()

Prints the message used when the script finishes running


Heading

Attributes
Methods
class Heading(title: str = '', sideLen: int = 0, sideChar: str = '=')

Class for handling information about a heading for pretty printing

Examples

1======= Title: Fix Raiden Boss 2 =======
2...
3========================================
Parameters:
  • title (str) –

    The title for the heading

    Default: “”

  • sideLen (int) –

    The number of characters we want one side for the border of the opening heading to have

    Default: 0

  • sideChar (str) –

    The type of character we want the border for the heading to have

    Default: “=”

title

The title for the heading

Type:

str

sideLen

The number of characters we want one side for the border of the opening heading to have

Type:

int

sideChar

The type of character we want the border for the heading to have

Type:

str

close() str

Makes the closing heading (see line 3 of the example at Heading)

Returns:

The closing heading created

Return type:

str

copy()

Makes a new copy of a heading

Returns:

The new copy of the heading

Return type:

Heading

open() str

Makes the opening heading (see line 1 of the example at Heading)

Returns:

The opening heading created

Return type:

str



Enums

Some useful Enumerations and constants.


ModTypeNames

class ModTypeNames(value)

The names of the different types of mods this fix will fix from or fix to

Amber = 'Amber'

Amber from GI

AmberCN = 'AmberCN'

Amber Chinese version from GI

Arlecchino = 'Arlecchino'

Arlecchino from GI

ArlecchinoBoss = 'ArlecchinoBoss'

The first phase of the Arlecchino boss from GI

Ayaka = 'Ayaka'

Ayaka from GI

AyakaSpringbloom = 'AyakaSpringBloom'

Ayaka Fontaine skin from GI

Barbara = 'Barbara'

Barabara from GI

BarbaraSummertime = 'BarbaraSummertime'

Barbara summer skin from GI

CherryHuTao = 'CherryHuTao'

Hu Tao Lantern Rite skin from GI

Diluc = 'Diluc'

Diluc from GI

DilucFlamme = 'DilucFlamme'

Diluc Red Dead of the Night skin from GI

Fischl = 'Fischl'

Fischl from GI

FischlHighness = 'FischlHighness'

Fischl summer skin from GI

Ganyu = 'Ganyu'

Ganyu from GI

GanyuTwilight = 'GanyuTwilight'

Ganyu Lantern Rite skin from GI

HuTao = 'HuTao'

HuTao from GI

Jean = 'Jean'

Jean from GI

JeanCN = 'JeanCN'

Jean Chinese version from GI

JeanSea = 'JeanSea'

Jean summer skin from GI

Kaeya = 'Kaeya'

Kaeya from GI

KaeyaSailwind = 'KaeyaSailwind'

KaeyaSailwind from GI

Keqing = 'Keqing'

Keqing from GI

KeqingOpulent = 'KeqingOpulent'

Keqing Lantern Rite skin from GI

Kirara = 'Kirara'

Kirara from GI

KiraraBoots = 'KiraraBoots'

Kirara summer skin from GI

Klee = 'Klee'

Klee from GI

KleeBlossomingStarlight = 'KleeBlossomingStarlight'

Klee summer skin from GI

Lisa = 'Lisa'

Lisa from GI

LisaStudent = 'LisaStudent'

Lisa Sumeru skin from GI

Mona = 'Mona'

Mona from GI

MonaCN = 'MonaCN'

Mona Chinese version from GI

Nilou = 'Nilou'

Nilou from GI

NilouBreeze = 'NilouBreeze'

Nilou summer skin from GI

Ningguang = 'Ningguang'

Ningguang from GI

NingguangOrchid = 'NingguangOrchid'

Ningguang Lantern Rite from GI

Raiden = 'Raiden'

Ei from GI

RaidenBoss = 'RaidenBoss'

The first phase of the Raiden Shogun boss from GI

Rosaria = 'Rosaria'

Rosaria from GI

RosariaCN = 'RosariaCN'

Rosaria Chinese version from GI

Shenhe = 'Shenhe'

Shenhe from GI

ShenheFrostFlower = 'ShenheFrostFlower'

Shenhe Lantern Rite skin from GI

Xiangling = 'Xiangling'

Xiangling from GI

XianglingCheer = 'XianglingCheer'

Xiangling Lantern Rite skin from GI

Xingqiu = 'Xingqiu'

Xingqiu from GI

XingqiuBamboo = 'XingqiuBamboo'

Xingqiu Lantern Rite skin from GI


ModTypes

class ModTypes(value)

The supported types of mods that can be fixed

Caution

The different ModType objects in this enum are used by the software to help fix specific types of mods.

Modifying the objects within this enum will also modify the behaviour of how this software fixes a particular mod. If this side effect is not your intention, then you can construct a brand new ModType object from the GIBuilder class


Tip

Before parsing the regexes below, the text is normalized by being converted to all lowercase


Amber

Amber mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(amber)((?!cn).)*\]

Type:

ModType

AmberCN

Amber Chinese mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ambercn).*\]

Type:

ModType

Ayaka

Ayaka mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ayaka)((?!(springbloom)).)*\]

Type:

ModType

AyakaSpringBloom

Ayaka Fontaine mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ayakaspringbloom).*\]

Type:

ModType

Arlecchino

Arlecchino mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(arlecchino).*\]

Type:

ModType

Barbara

Barabara mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(barbara)((?!summertime).)*\]

Type:

ModType

BarbaraSummertime

Barabara Summer mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(barbarasummertime).*\]

Type:

ModType

CherryHuTao

Hu Tao Lantern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(cherryhutao|hutaocherry).*\]

Type:

ModType

Diluc

Diluc mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(diluc)((?!flamme).)*\]

Type:

ModType

DilucFlamme

Diluc Red Dead of the Night mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(dilucflamme).*\]

Type:

ModType

Fischl

Fischl mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(fischl)((?!highness).)*\]

Type:

ModType

FischlHighness

Fischl Summer mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(fischlhighness).*\]

Type:

ModType

Ganyu

Ganyu mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ganyu)((?!(twilight)).)*\]

Type:

ModType

GanyuTwilight

Ganyu Latern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ganyutwilight).*\]

Type:

ModType

HuTao

Hu Tao mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride((?!cherry).)*(hutao)((?!cherry).)*\]

Type:

ModType

Jean

Jean mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(jean)((?!(cn|sea)).)*\]

Type:

ModType

JeanCN

Jean Chinese mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(jeancn)((?!sea).)*\]

Type:

ModType

JeanSea

Jean Summertime mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(jeansea)((?!cn).)*\]

Type:

ModType

Kaeya

Kaeya mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(kaeya)((?!(sailwind)).)*\]

Type:

ModType

KaeyaSailwind

Kaeya Summertime mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(kaeyasailwind).*\]

Type:

ModType

Keqing

Keqing mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(keqing)((?!(opulent)).)*\]

Type:

ModType

KeqingOpulent

Keqing Lantern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(keqingopulent).*\]

Type:

ModType

Kirara

Kirara mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(kirara)((?!boots).)*\]

Type:

ModType

KiraraBoots

Kirara in Boots mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(kiraraboots).*\]

Type:

ModType

Klee

Klee mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(klee)((?!blossomingstarlight).)*\]

Type:

ModType

KleeBlossomingStarlight

Klee Summertime mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(kleeblossomingstarlight).*\]

Type:

ModType

Lisa

Lisa mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(lisa)((?!student).)*\]

Type:

ModType

LisaStudent

Lisa Sumeru mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(lisastudent).*\]

Type:

ModType

Mona

Mona mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(mona)((?!(cn)).)*\]

Type:

ModType

MonaCN

Mona Chinese mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(monacn).*\]

Type:

ModType

Nilou

Nilou mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(nilou)((?!(breeze)).)*\]

Type:

ModType

NilouBreeze

Nilou Forest Fairy mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(niloubreeze).*\]

Type:

ModType

Ningguang

Ningguang Chinese mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ningguang)((?!(orchid)).)*\]

Type:

ModType

NingguangOrchid

Ningguang Lantern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(ningguangorchid).*\]

Type:

ModType

Raiden

Raiden mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(raiden|shogun).*\]

Type:

ModType

Rosaria

Rosaria mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(rosaria)((?!(cn)).)*\]

Type:

ModType

RosariaCN

Rosaria Chinese mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(rosariacn).*\]

Type:

ModType

Shenhe

Shenhe mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(shenhe)((?!frostflower).)*\]

Type:

ModType

ShenheFrostFlower

Shenhe Lantern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(shenhefrostflower).*\]

Type:

ModType

Xiangling

Xiangling mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(xiangling)((?!cheer).)*\]

Type:

ModType

XianglingCheer

Xiangling Lantern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(xiangling(cheer|newyear)).*\]

Type:

ModType

Xingqiu

Xingqiu mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(xingqiu)((?!bamboo).)*\]

Type:

ModType

XingqiuBamboo

Xingqiu Lantern Rite mods

Checks if the .ini file contains a section with the regex ^\s*\[\s*textureoverride.*(xingqiubamboo).*\]

Type:

ModType

classmethod getAll() Set[ModType]

Retrieves a set of all the mod types available

Returns:

All the available mod types

Return type:

Set[ModType]

classmethod search(name: str)

Searches a mod type based off the provided name

Parameters:

name (str) – The name of the mod to search for

Returns:

The found mod type based off the provided name

Return type:

Optional[ModType]


ModData

class ModData(value)

Raw data used by the software

Danger

Modifying these data may change how the software fixes mods. If you do not want this side-effect, please make a deep-copy of the data before editting the data


Hashes

Hash data for the mods

  • The outer key is the game version

  • The second outer key is the name of the mod

  • The inner key is the name of the type of hash

  • The inner value is the hexadecimal hash

Type:

Dict[Union[str, float], Dict[str, Dict[str, str]]]

Indices

Index data for the mods

  • The outer key is the game version

  • The second outer key is the name of the mod

  • The inner key is the name of the mod object

  • The inner value is starting index for the mod object

Type:

Dict[Union[str, float], Dict[str, Dict[str, str]]]

VertexCounts

The # of vertices for a mod

  • The outer key is the game version

  • The second outer key is the name of the mod

  • The inner value is the number of vertices in the mod

Type:

Dict[Union[str, float], Dict[str, int]]

VGRemapData

Vertex group remaps to change the Blend.buf files of the mods

  • The outer key is the game version

  • The second outer key is the name of the mod to fix from

  • The inner key is the name of the mod to fix to

  • The inner value is vertex group remap

Type:

Dict[Union[str, float], Dict[str, Dict[str, VGRemap]]]

TexcoordByteSize

The byte size of the texture coordinate data for a single vertex

  • The outer key is the game version

  • The second outer key is the name of the mod

  • The inner value is byte size for the texture coordinate of a single vertex

Type:

Dict[Union[str, float], Dict[str, int]]

PositionEditors

Position editors for changing the Position.buf files of the mods

  • The outer key is the game version

  • The second outer key is the name of the mod to fix from

  • The inner key is the name of the mod to fix to

  • The inner value is the editor that will edit the Position.buf files

Type:

Dict[Union[str, float], Dict[str, Dict[str, Optional[BaseBufEditor]]]]

IniParseBuilderArgs

The functions that create the arguments/keyword arguments for IniParseBuilder to build the correct .ini parser

  • The outer key is the game version

  • The second outer key is the name of the mod to fix from

  • The inner value is the function that will create the arguments/keyword arguments

Type:

Dict[Union[str, float], Dict[str, Callable[[], Tuple[BaseIniParser, List[Any], Dict[str, Any]]]]]

IniFixBuilderArgs

The functions that create the arguments/keyword arguments for IniFixBuilder to build the correct .ini fixer

  • The outer key is the game version

  • The second outer key is the name of the mod to fix from

  • The inner value is the function that will create the arguments/keyword arguments

Type:

Dict[Union[str, float], Dict[str, Callable[[], Tuple[BaseIniFixer, List[Any], Dict[str, Any]]]]]

FileDownloadData

The file downloads for missing files required by mods

  • The outer key is the game version

  • The second outer key is the name of the mod to fix from

  • The third outer key can be either the mod object or the name of the type of .buf resource

  • The inner key is the register within the mod object

Type:

Dict[Union[str, float], Dict[str, Dict[str, Dict[str, DownloadData]]]]


ModDataAssets

class ModDataAssets(value)

Refined data used by the software, grouped by version of the game

Danger

Modifying these data may change how the software fixes mods. If you do not want this side-effect, please make a deep-copy of the data before editting the data


IniParseBuilderArgs

The functions that create the arguments/keyword arguments for IniParseBuilder to build the correct .ini parser

Type:

IniParseBuilderArgs

IniFixBuilderArgs

The functions that create the arguments/keyword arguments for IniFixBuilder to build the correct .ini fixer

Type:

IniFixBuilderArgs

VertexCounts

The total # of vertices for each mod

Type:

VertexCounts


ByteSize

class ByteSize(value)

Different byte sizes for particular elements in the binary files of mods

Float16 = 2

Number of bytes in a half precision floating point

Float32 = 4

Number of bytes in a floating point

Int32 = 4

Number of bytes in a signed integer

UInt32 = 4

Number of bytes in an unsigned integer

UNorm8 = 1

Number of bytes in an 8-bit unsigned normalized integer


BufFormatNames

class BufFormatNames(value)

Names for the different 3dmigoto types for the elements within a .buf file

For more info on the types, please see the type definitions here: https://learn.microsoft.com/en-us/windows/win32/direct3d10/d3d10-graphics-programming-guide-resources-data-conversion

Float32RG = 'R32G32_FLOAT'

A type with 2 channels of floating point numbers

Float32RGB = 'R32G32B32_FLOAT'

A type with 3 channels of floating point numbers

Float32RGBA = 'R32G32B32A32_FLOAT'

A type with 4 channels of floating point numbers

Int32RGBA = 'R32G32B32A32_SINT'

A type with 4 channels of signed integers

UNORM8RGBA = 'R8G8B8A8_UNORM'

A type with 4 channels of unsigned normalized integers with 8 bits per integer


BufDataTypeNames

class BufDataTypeNames(value)

The names of the data types within a .buf file

Float16 = 'Float16'

Half precision floating point number

Float32 = 'Float32'

floating point number

Int32 = 'SignedInt32'

Signed integer

UInt32 = 'UnsignedInt32'

Unsigned integer

UNorm8 = 'UNORM8'

An 8-bit unsigned normalized integer


BufElementNames

class BufElementNames(value)

Usual names for the elements within a .buf file

BlendIndices = 'BLENDINDICES'

The vertex groups that a vertex belongs to

BlendWeight = 'BLENDWEIGHT'

The distribution of how much a vertex belongs to a certain vertex group

Colour = 'COLOR'

The colour at the vertex

Normal = 'NORMAL'

The normal vector of some vertex of a mod

Position = 'POSITION'

The coordinate of some vertex of a mod

Tangent = 'TANGENT'

The tangent vector of some vertex of a mod

TextureCoordinate = 'TEXCOORD'

The coordinate of the texture file that the vertex is associated with


BufDataTypes

Attributes
class BufDataTypes(value)

Different elementary data types within a .buf file

Float32 = <FixRaidenBoss2.model.buffers.BufFloat.BufFloat object>

Floating point number

Int32 = <FixRaidenBoss2.model.buffers.BufInt.BufSignedInt object>

A signed integer

UInt32 = <FixRaidenBoss2.model.buffers.BufInt.BufUnSignedInt object>

An unsigned integer

UNorm8 = <FixRaidenBoss2.model.buffers.BufUnorm.BufUnorm object>

An unsigned normalized integer


BufElementTypes

class BufElementTypes(value)

Different types for the elements within a .buf file

PositionFloatRGB

The position for the vertex of a mod within an R3 vector space

Type:

BufElementType

NormalFloatRGB

The normal vector for the vertex of a mod

Type:

BufElementType

TangentFloatRGBA

The tangent vector for the vertex of a mod

Type:

BufElementType

BlendWeightFloatRGBA

The distribution for the vertex groups for a particular vertex in a mod

Type:

BufElementType

BlendIndicesIntRGBA

The vertex groups a vertex from a mod belongs to

Type:

BufElementType

ColourRGBA

The colour for a vertex in a mod

Type:

BufElementType

TextureCoordinateRG

The corresponding R2 vector space coordinate from a texture file that is associated to the vertex in a mod

Type:

BufElementType


IniKeywords

class IniKeywords(value)

Common keywords used in the .ini file

Blend = 'Blend'

The substring that usually occurs in the name of a section to indicate that the section will call some *.Blend.buf file

Draw = 'draw'

Location to draw a resource

DrawIndexed = 'drawindexed'

How to draw the triangular of the model

Filename = 'filename'

The filename for some resource

Handling = 'handling'

How to handle some resource

Hash = 'hash'

The unique id for a part in the mod

HashNotFound = 'HashNotFound'

The hash for a mod has not been found

HideOriginalComment = ';RemapFixHideOrig -->'

Comment used to hide the sections or the original character

Ib = 'ib'

Index buffer

IndexNotFound = 'IndexNotFound'

The index for a mod has not been found

MatchFirstIndex = 'match_first_index'

The index location to map some resource

ORFixPath = 'CommandList\\global\\ORFix\\ORFix'

The sub command call to ORFix

Position = 'Position'

The substring that usually occurs in the name of a section to indicate that the section will call some *.Position.buf file

Remap = 'Remap'

The substring used to indicate a section is editted by this software

RemapBlend = 'RemapBlend'

The substring used to indicate that the section references some *.RemapBlend.buf file

RemapDL = 'RemapDL'

The substring used to indicate that the section contains some downloaded file from the internet

RemapFix = 'RemapFix'

The substring used to indicate that the section was created by this program

RemapIb = 'RemapIB'

The substring used to indicate that the section is called by [TextureOverride.*Ib.*] section.

RemapPosition = 'RemapPosition'

The substring used to indicate that the section references some *.RemapPosition.buf file

RemapTex = 'RemapTex'

The substring used to indicate that the section contains some editted/created texture *.Remap.dds file

RemapTexcoord = 'RemapTexcoord'

The substring used to indicate that the section is called by [TextureOverride.*Texcoord.*] section.

Resource = 'Resource'

The starting prefix used for any sections that reference some file

Run = 'run'

The subsection that will be called from a certain section

TexFxFolder = 'CommandList\\TexFx'

The folder to the sub command call to the TexFx module

TexFxShortTransparency0 = 'CommandList\\TexFx\\T.0'

Short alias of transparency sub command in TexFx module mapping to ps-t0

TexFxShortTransparency0Natlan = 'CommandList\\TexFx\\TN.0'

Short alias of transparency sub command in TexFx module mapping to ps-t0 for GI version 5.0 +

TexFxShortTransparency1 = 'CommandList\\TexFx\\T.1'

Short alias of transparency sub command in TexFx module mapping to ps-t1

TexFxShortTransparency1Natlan = 'CommandList\\TexFx\\TN.1'

Short alias of transparency sub command in TexFx module mapping to ps-t1 for GI version 5.0 +

Texcoord = 'Texcoord'

The substring that usually occurs in the name of a section to indicate that the section will call some *.Texcoord.buf file

Vb0 = 'vb0'

Vertex buffer #0

Vb1 = 'vb1'

Vertex buffer #1


IfPredPartType

Attributes
class IfPredPartType(value)

Enum for the possible types for an IfPredPart

Elif = 'elif'

The part contains the starting keyword ‘elif’

Else = 'else'

The part contains the staring keyword ‘else’

EndIf = 'endif'

The part contains the staring keyword ‘endif’

If = 'if'

The part contains the staring keyword ‘if’

classmethod getType(rawPredPart: str)

Retrieves the type for an IfPredPart

Parameters:

rawPredPart (str) – The predicate string for the IfPredPart

Returns:

The type found based off ‘rawPredPart’

Return type:

Optional[IfPredPartType]


ColourConsts

class ColourConsts(value)

Constants about colours

MaxColourDegree = 360

Maximum degrees for some HSV/HSL images

MaxColourValue = 255

Maximum bound for a colour channel

MinColourDegree = 0

Minimum degrees for some HSV/HSL images

MinColourValue = 0

Minimum bound for a colour channel

PaintTempDecBlueFactor = 2

The parameter for approximately how fast the blue channel increases for the temperature decrease algorithm from Paint.net

PaintTempDecRedFactor = 0.5

The parameter for approximately how fast the red channel decreases for the temperature decrease algorithm from Paint.net

PaintTempIncBlueFactor = 0.44

The parameter for approximately how fast the blue channel decreases for the temperature increase algorithm from Paint.net

PaintTempIncRedFactor = 0.41

The parameter for approximately how fast the red channel increases for the temperature increase algorithm from Paint.net

SRGBGamma = 0.45454545454545453

The standard gamma value (1/2.2) typically used in computer displays, sRGB images, Adobe RGB images. See CorrectGamma for more info.

StandardGamma = 2.2

The reciprocal of the standard gamma value (1/2.2) used in computer displays, sRGB images, Adobe RGB images. See CorrectGamma for more info.


Colours

class Colours(value)

Some common colours used

White

white

Type:

Colour (255, 255, 255, 255)

LightMapGreenMin

Minimum range for the green colour usually in the LightMap.dds

Type:

Colour (0, 125, 0, 0)

LightMapGreenMax

Maximum range for the green colour usually in the LightMap.dds

Type:

Colour (50, 150, 50, 255)

LightMapGreen

The usual colour for the green in the LightMap.dds

Type:

Colour (0, 128, 0, 255)

NormalMapYellow

The yellow that usually appears in the NormalMap.dds

Type:

Colour (128, 128, 0, 255)

NormalMapBlue

The light blue that usually appears in the NormalMap.dds

Type:

Colour (128, 128, 255, 255)

NormalMapPurple1

The light purple with rgb(128, 98, 128) that appears in the NormalMap.dds

Type:

Colour (128, 98, 128, 255)

NormalMapPurple2

The light purple with rgb(128, 114, 128) that appears in the NormalMap.dds

Type:

Colour (128, 114, 128, 255)

NormalMapPurpleMin

Minimum range for the purple colour usually in NormalMap.dds

Type:

Colour (128, 0, 128)


ColourRanges

class ColourRanges(value)

Some common colour ranges used

LightMapGreen

The colour range for the green usually present in LightMap.dds

Type:

ColourRange (Colours.LightMapGreenMin, Colours.LightMapGreenMax)

NormalMapPurple1

The colour range for the colour Colour.NormalMapPurple1 that usually appears in NormalMap.dds

Type:

ColourRange (Colours.NormalMapPurpleMin, Colours.NormalMapPurple1)


ImgFormats

Attributes
class ImgFormats(value)

Different formats for an image

Bit = '1'

Image with a single bit channel that has values of either 0 or 1

HSV = 'HSV'

HSV (hue, saturation, value) image

RGB = 'RGB'

RGB (red, green blue) image

RGBA = 'RGBA'

RGBA (red, green, blue) image


TexMetadataNames

Attributes
class TexMetadataNames(value)

Names for the metadata keys in the texture files

Gamma = 'gamma'

Adjusts the gamma value of the texture file


DownloadMode

class DownloadMode(value)

The download mode of how the software handles file downloads

Always = 'always'

Will always perform file downloads for every mod, if possible

AlwaysBuf = 'alwaysbuf'

Only download .buf files, if possible

AlwaysTex = 'alwaystex'

Only download textures or .ib files

Buf = 'buf'

Only download .buf files if there is a specified branch in the .vb sections that does not reference the files

Disabled = 'disabled'

Will not perform any file downloads for any mods

HardTexDriven = 'hardtexdriven'

Will perform file downloads based off the following heuristics:

  1. Download textures or .ib files if there is a specified branch in the texture sections that does not reference the files

  2. If any texture/.ib downloads needed to be performed, then download .buf files at specified branches with missing resources

HardTexDrivenAll = 'texdrivenall'

Will perform file downloads based off the following heuristics:

  1. Download textures or .ib files if there is a specified branch in the texture sections that does not reference the files

  2. If any texture/.ib downloads needed to be performed, then download model .buf files at specified/unspecified branch cases with missing resources

SoftTexDriven = 'softtexdriven'

Will perform file downloads based off the following heuristics:

  1. Download textures or .ib files if there is a specified branch in the texture sections that does not reference the files

  2. Download .buf files if either texture/.ib downloads needed to be performed or there are specified branch cases with missing resources

SoftTexDrivenAll = 'softtexdrivenall'

Will perform file downloads based off the following heuristics:

  1. Download textures or .ib files if there is a specified branch in the texture sections that does not reference the files

  2. Download .buf files if either texture/.ib downloads needed to be performed or there are specified/unspecified branch cases with missing resources

Tex = 'tex'

Only download textures or .ib files if there is a specified branch in the texture sections that does not reference the files

classmethod search(mode: str) DownloadMode | None

Searches a download mode based off the provided name

Parameters:

mode (str) – The name of the download mode to search for

Returns:

The found download mode based off the provided name

Return type:

Optional[DownloadMode]


FileExt

Attributes
class FileExt(value)

Different file extensions for files

Buf = '.buf'

Buffer file extension

DDS = '.dds'

Direct Draw Surface file extension

Ini = '.ini'

Initialization file extension

Txt = '.txt'

Text file extension


FileTypes

class FileTypes(value)

Different types of files the software encounters

Blend = 'Blend.buf'

Blend.buf files

Default = 'file'

Default file type

Ini = '*.ini file'

Initialization files

Log = 'RemapFixLog.txt'

Log file

Position = 'Position.buf'

Position.buf files

RemapBlend = 'RemapBlend.buf'

RemapBlend.buf files

RemapDownload = 'RemapDL download'

RemapDL download files

RemapPosition = 'RemapPosition.buf'

RemapPostion.buf files

RemapTexture = 'RemapTex.dds'

RemapTex.dds files

Texture = '*.dds'

Texture .dds files


GlobalIniClassifiers

Attributes
class GlobalIniClassifiers(value)

Global modules used by the sofware to help identify what mod belongs to a .ini file

Classifier

The classifier used to identify whether the .ini file belongs to some mod

Type:

IniClassifier


GlobalClassifiers

class GlobalClassifiers(value)

Global modules used by the sofware to help classify strings into different sets

ModTypes

The classifier used to identify the ModType for some string

Type:

AhoCorasickSingleton

ModOptFiles

The classifier used to identify the type of file within a mod

Type:

AhoCorasickSingleton

DownloadModes

The classifier used to identify the DownloadMode for some string

Type:

AhoCorasickSingleton

IniModelParts

The classfier for the different parts of the model of a mod, according to most .ini files

Type:

AhoCorasickSingleton


GlobalIniRemoveBuilders

Attributes
class GlobalIniRemoveBuilders(value)

Global builders used by the software to dynamically create modules to remove fixes from the .ini file

RemoveBuilder

The builder to dynamically create modules that remove fixes from the .ini file

Type:

IniRemoveBuilder


GlobalPackageManager

Attributes
class GlobalPackageManager(value)

Global pacakge manager for handling external libraries

Packager

The pacakge manager used by the softwares

Type:

PackageManager

classmethod get(packageData: PackageData) ModuleType

Convenience function to call PackageManager.get() from Packager

Parameters:

packageData (PackageData) – The data needed for install the external package

Returns:

The module to the external package

Return type:

Module


Utilities

Some useful utility classes.


FileService

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

Parameters:
  • dstPath (str) – The target file path we are working with

  • relFolder (str) – The folder that the target file path is relative to

Returns:

The absolute path for the target file

Return type:

str

classmethod changeExt(file: str, newExt: str) str

Changes the extension for a file

Parameters:
  • file (str) – The file path to the file we are working with

  • newExt (str) – The name of the new extension for the file (without the dot at front)

Returns:

the new file path with the extension changed

Return type:

str

classmethod copyFile(src: str, dest: str)

Copies a file from src to dest

Parameters:
  • src (str) – The file path to the file to be copied

  • dest (str) – The new file path for the copied file

classmethod disableFile(file: str, filePrefix: str = 'RemapBKUP') str

Marks a file as disabled and changes the file to a .txt file

Parameters:
  • file (str) – The file path to the file we are working with

  • filePrefix (str) –

    Prefix name we want to add in front of the file name

    Default: "RemapBKUP"

Returns:

The new name of the file

Return type:

str

classmethod getFiles(path: str | None = None, filters: List[Callable[[str], bool]] | None = None, files: List[str] | None = None) List[str] | List[List[str]]

Retrieves many different types of files within a folder

Note

Only retrieves files that are the direct children of the folder (will not retrieve files nested in a folder within the folder we are searching)

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: None

  • filters (Optional[List[Callable[[str], bool]]]) –

    Different filter functions for each type of file we are trying to get. If this values is either None or [], then will default to a filter to get all the files

    Default: None

  • 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:

Union[List[str], List[List[str]]]

classmethod getFilesAndDirs(path: str | None = None, recursive: bool = False) List[List[str]]

Retrieves the files and folders contained in a certain folder

Parameters:
  • path (Optional[str]) –

    The path to the target folder we are working with. If this argument is None, then will use the current directory of where this module is loaded

    Default: None

  • recursive (bool) –

    Whether to recursively check all the folders from our target folder

    Default: False

Returns:

The files and directories within the folder. The order for the result is:

  1. files

  2. folders

Return type:

[List[str], List[str]]

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)

Parameters:
  • path (str) – The path to the target file/folder we are working with

  • start (str) – The path that the target file/folder is relative to

Returns:

Either the relative path or the original path if not possible to get the relative paths

Return type:

str

classmethod getSingleFiles(path: str | None = None, filters: Dict[str, Callable[[str], bool]] | None = None, files: List[str] | None = None, optional: bool = False) str | None | List[str] | List[str | None]

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: None

  • filters (Optional[Dict[str, Callable[[str], bool]]]) –

    Different filter functions for each type of file we are trying to get. If this value is None or {}, then will default to use a filter to get all files

    The keys are the names for the file type

    Default: None

  • 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

  • optional (bool) –

    Whether we want to send an exception if there is not exactly 1 file for a certain type of file

    1. If this value is False and there are no files for a certain type of file, then will raise a MissingFileException

    2. If this value is False and there are more than 1 file for a certain type of file, then will raise a DuplicateFileException

    3. If this value is True and there are no files for a certain type of file, then the file for that type of file will be None

    4. If this value is True and 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 optional is set to False and there are not files for a certain type of file

  • DuplicateFileException – if optional is set to False and there are more than 1 file for a certain type of file

Returns:

The files partitioned for each type of file

  • If filters only contains 1 element and optional is False, then will return str

  • If filters contains more than 1 element and optional is ``False`, then will return List[str]

  • If filters only contains 1 element and optional is True, then will return Optional[str]

  • Otherwise, returns List[Optional[str]]

Return type:

Union[Optional[str], List[str], List[Optional[str]]]

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

Parameters:

path (str) – The file path we are working that is generated from the ‘ntpath’ library

Returns:

The file path generated by the ‘os’ library

Return type:

str

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:

  1. utf-8

  2. latin1

Parameters:
  • file (str) – The file we are trying to read from

  • fileCode (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

classmethod readBinary(src: str | bytes) bytes

Reads a binary file

Parameters:

src (Union[str, bytes]) – The source to read from

Returns:

The read bytes

Return type:

bytes

classmethod rename(oldFile: str, newFile: str)

Renames a file

Warning

If the new name for the file already exists, then the function deletes the file with the new name and renames the target file with the new name

Parameters:
  • oldFile (str) – file path to the target file we are working with

  • newFile (str) – new file path for the target file

classmethod writeBinary(file: str, data: bytes)

Writes data into a binary file

Parameters:
  • file (str) – The file to write into

  • data (bytes) – The data to write


DictTools

class DictTools

Tools for handling with Dictionaries

classmethod combine(dict1: Dict[Hashable, Any], dict2: Dict[Hashable, Any], combineDuplicate: Callable[[Hashable, Any, Any], Any] | None = None) Dict[Hashable, Any]

Creates a new dictionary from combining 2 dictionaries

Parameters:
  • dict1 (Dict[Hashable, Any]) – The destination of where we want the combined dictionaries to be stored

  • dict2 (Dict[Hashable, Any]) – The dictionary we want to combine with

  • combineDuplicate (Optional[Callable[[Hashable, Any, Any], Any]]) –

    Function for handling cases where there contains the same key in both dictionaries

    • The first parameter is the key that is in both dictionary

    • The second parameter is the value that comes from srcDict

    • The third parameter is the value that comes from newDict

    If this value is set to None, then will use the key from ‘dict2’

    Default: None

  • makeNewCopy (bool) – Whether we want the resultant dictionary to be newly created or to be updated into dict1

Returns:

The new combined dictionary

Return type:

Dict[Hashable, Any]

classmethod filter(dict: Dict[Hashable, Any], predicate: Callable[[Hashable, Any], bool]) Dict[Hashable, Any]

Filters a dictionary

Parameters:
  • dict (Dict[Hashable, Hashable]) – The dictionary to filter

  • predicate (Callable[[Hashable, Any], bool]) –

    The predicate used for the filter

    The predicate has the following parameters

    1. The key of the dictionary

    2. The value of the dictionary

Returns:

The filtered dictionary

Return type:

Dict[Hashable, Any]

classmethod forDict(nestedDict: Dict[Hashable, Any], keyNames: List[str], func: Callable[[Dict[str, Hashable], Dict[str, Any]], Any])

Iterates over a nested dictionary

Parameters:
  • nestedDict (Dict[Hashable, Any]) – The nested dictionary to iterate over

  • keyNames (List[str]) – The variable names of the keys in the nested dictionary

  • func (Callable[Dict[str, Hashable], Dict[str, Any], Any]) –

    callback function that will be called at the leaf node of the nested dictionary

    The function contains the following arguments: #. The dictionary keys encountered in the current iteration #. The corresponding values encountered at each dictionary layer in the current iteration

classmethod getFirstKey(dict: Dict[Any, Any]) Any

Retrieves the first key in a dictionary

Parameters:

dict (Dict[Any, Any]) –

The dictionary we are working with

Note

The dictionary must not be empty

Returns:

The first key of the dictionary

Return type:

Any

classmethod getFirstValue(dict: Dict[Any, Any]) Any

Retrieves the first value in a dictionary

Parameters:

dict (Dict[Any, Any]) – The dictionary we are working with

Returns:

The first value of the dictionary

Return type:

Any

classmethod invert(dict: Dict[Hashable, Hashable]) Dict[Hashable, Hashable]

Inverts a dictionary by making the keys the values and the values the keys

Parameters:

dict (Dict[Hashable, Hashable]) – The dictionary to invert

Returns:

The inverted dictionary

Return type:

Dict[Hashable, Hashable]

classmethod update(srcDict: Dict[Hashable, Any], newDict: Dict[Hashable, Any], combineDuplicate: Callable[[Hashable, Any, Any], Any] | None = None) Dict[Hashable, Any]

Updates srcDict based off the new values from newDict

Parameters:
  • srcDict (Dict[Hashable, Any]) – The dictionary to be updated

  • newDict (Dict[Hashable, Any]) – The dictionary to help with updating srcDict

  • combineDuplicate (Optional[Callable[[Hashable, Any, Any], Any]]) –

    Function for handling cases where there contains the same key in both dictionaries

    • The first parameter is the key that is in both dictionary

    • The second parameter is the value that comes from srcDict

    • The third parameter is the value that comes from newDict

    If this value is set to None, then will use the key from newDict

    Default: None

Returns:

Reference to the updated dictionary

Return type:

Dict[Hashable, Any]


TextTools

class TextTools
classmethod capitalize(txt: str) str

Capitalize the beginning letter of ‘txt’

Parameters:

txt (str) – The text to be capitalized

Returns:

The new text with its first letter capitalized

Return type:

str

classmethod capitalizeOnlyFirstChar(txt: str) str

Capitalize only the beginning letter of ‘txt’ while leaving the rest of ‘txt’ as lowercase

Parameters:

txt (str) – The text to be capitalized

Returns:

The new text with only the first letter capitalized

Return type:

str

classmethod getTextLines(txt: str) List[str]

Retrieves the lines of text, split by the newline character, similar to how python’s readlines function works

Parameters:

txt (str) – The target text to be split

Returns:

The lines of text that were split

Return type:

List[str]

classmethod removeLines(txtLines: List[str], partIndices: List[Tuple[int, int]]) List[str]

Removes multiple sub-lists of lines from a list of text lines

Parameters:
  • txtLines (List[str]) – The lines of text to have its lines removed

  • partIndices (List[Tuple[int, int]]) –

    The indices for the list of lines to be removed

    The tuples contain the following data:

    1. The start index for the list of lines

    2. The ending index for the list of lines

Returns:

The new lines of text with the removed lines

Return type:

List[str]

classmethod removeParts(txt: str, partIndices: List[Tuple[int, int]]) str

Remove multiple substrings from a text based off the indices of the substrings

Parameters:
  • txt (str) – The target txt to have the substrings removed

  • partIndices (List[Tuple[int, int]]) –

    The indices for the substrings to be removed

    The tuples contain the following data:

    1. The start index for the substring

    2. The ending index for the substring

Returns:

The new string with the substrings removed

Return type:

str

classmethod reverse(txt: str) str

Reverses a string

Parameters:

txt (str) – The text to be reversed

Returns:

The reversed string

Return type:

str


IntTools

class IntTools

Tools for handling integers

classmethod toBase(num: int, base: int) Tuple[List[int], bool]

Converts a base 10 number to an arbitrary base number

Parameters:
  • num (int) – The base 10 number to convert

  • base (int) – The base to convert to

Raises:

ZeroDivisionError – The base is smaller or equal to 1

Returns:

Retrieves the following data in the tuple:

  1. The digits in the converted number

  2. Whether the number is negative

Return type:

Tuple[List[int], bool]

classmethod toBase64(num: int, getDigit: str | List[str] | Callable[[int], str] | None = None, negativeChar: str = '-') str

Converts a base 10 number to a base 64 number

Parameters:
  • num (int) – The base 10 number to convert

  • getDigit (Optional[Union[str, List[str], Callable[[int], str]]]) –

    how to get the string representation of a digit.

    • If this argument is a string or a list, each element is the string representation of the digit at the particular index of the string/list.

    • If this argument is None, then will use the following string for each digit:

      ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+_

      This is the same digit representation as the standard base 64 except that the 63rd digit (/) is replaced with the _ character

      Default: None

  • negativeChar (str) –

    The character representation for the negative symbol

    Default: "-"

Returns:

The converted string representation of the arbitrary base 64 number

Return type:

str

classmethod toStrBase(num: int, base: int, getDigit: str | List[str] | Callable[[int], str], negativeChar: str) str

Converts a base 10 number to an arbitrary base number, such that the characters in this arbitrary based number are all characters

Parameters:
  • num (int) – The base 10 number to convert

  • base (int) – The base to convert to

  • getDigit (Union[str, List[str], Callable[[int], str]]) –

    how to get the string representation of a digit.

    If this argument is a string or a list, each element is the string representation of the digit at the particular index of the string/list.

  • negativeChar (str) – The character representation for the negative symbol

Returns:

The converted string representation of the arbitrary base number

Return type:

str


HashTools

class HashTools

Tools for custom hashing

classmethod base64DeterministicShortUniqueHash(obj: Hashable) str

Converts the hash from a naive hash function that acts as incrementor to a unique and short base 64 hash

Parameters:

obj (Hashable) – The object to hash

Returns:

The unique base 64 hash

Return type:

str

classmethod base64Hash(obj: Hashable, hashFunc: Callable[[Hashable], int] | None = None) str

Converts the hash to base 64

Parameters:
  • obj (Hashable) – The object to hash

  • hashFunc (Optional[Callable[[Hashable], int]]) –

    The base hash function to use.

    if this value is None, then the hash function will be the builtin hash

    Default: None

Returns:

The base 64 hash

Return type:

str

classmethod base64ShortUniqueHash(obj: Hashable) str

Converts the hash from builtin hash function to a unique and unique and short base 64 hash

Parameters:

obj (Hashable) – The object to hash

Returns:

The unique base 64 hash

Return type:

str

classmethod hashLibSerialize(obj: Hashable) bytes

Convert some hashable into bytes used for the hashlib library

Parameters:

obj (Hashable) – The object to convert

Returns:

The resultant bytes converted from the object

Return type:

bytes


FilePath

Attributes
class FilePath(path: str)

Class for storing info about a file path

Parameters:

path (str) – The file path

property base

The base for the file path (includes file extension)

Getter:

Retrieves the base

Setter:

Sets the new base for the file path

Type:

str

property baseName

The basename for the file path without any file extensions

Getter:

Retrieves the basename

Setter:

Sets the new basename for the file path

Type:

str

property folder

The parent folder for the path

Getter:

Retrieves the parent folder name

Setter:

Sets the new parent folder name

Type:

str

property path

The file path

Getter:

Retrieves the path

Setter:

Sets a new path

Type:

str


FileDownload

Methods
class FileDownload(url: str, filename: str, cache: bool = True)

Class to handle file downloads from some server

Parameters:
  • url (str) – The link to the file download

  • filename (str) – The base name of the file (with extension)

  • cache (bool) –

    Whether to copy the previous downloaded file if possible instead of downloading another copy of the file

    Default: True

url

The link to the file download

Type:

str

filename

The base name of the file (with extension)

Type:

str

cache

Whether to copy the previous downloaded file if possible instead of downloading another copy of the file

Type:

bool

_prevPath

The previous full path to the downloaded file

Type:

Optional[str]

download(folder: str, proxy: str | None = None) str

Downloads the required file

Parameters:
  • folder (str) – The folder to store the downloaded file

  • proxy (Optional[str]) –

    The link to the proxy server used for any internet network access

    Default: None

get(folder: str, proxy: str | None = None) Tuple[str, bool, bool]

Retrieves the required file

Parameters:
  • folder (str) – The folder to store the downloaded file

  • proxy (Optional[str]) –

    The link to the proxy server used for any internet network access

    Default: None

Returns:

A tuple that contains:

  1. The path to the downloaded file

  2. Whether a download occured

  3. Whether a previous download to the file existed

Return type:

Tuple[str, bool, bool]


Cache

Attributes
Methods
class Cache(capacity: int = 128, cacheStorage: Any | None = None)

Class for a generic cache

Supported Operations:

len(x)

Retrieves the size of the Cache, x

x[key]

Retrieves the value from the Cache, x, from the key key

x[key] = newValue

Sets the key key of the Cache, x, to have the value of newValue


Parameters:
  • capacity (int) –

    The maximum capacity of the cache

    Default: 128

  • cacheStorage (Optional[Any]) –

    The type of KVP (Key-value pair) data structure to use for the cache. If this parameter is None, then will use a dictionary

    Default: None

capacity

The maximum capacity of the cache

Type:

int

cacheStorage

The type of KVP (Key-value pair) data structure to use for the cache.

Type:

Any

clear() None

Clears the cache


LruCache

Methods
class LruCache(capacity: int = 128)

This class inherits from Cache

Class for an LRU cache

Supported Operations:

len(x)

Retrieves the size of the LruCache, x

x[key]

Retrieves the value from the LruCache, x, from the key key

x[key] = newValue

Sets the key key of the LruCache, x, to have the value of newValue


Parameters:

capacity (int) –

The maximum capacity of the cache

Default: 128

clear() None

Clears the cache


Node

Attributes
class Node(id: Hashable)

Class for a node in a graph


Supported Operations:

hash(x)

Retrieves the id of the node as the hash value

Parameters:

id (Hashable) – The id for the node

property id: Hashable

The id of the node

Getter:

Returns the id for the node

Type:

Hashable


HeapNode

Attributes
class HeapNode(val: T, compare: Callable[[T, T], int])

Class for a node in a heap


Supported Operations:

x < y

Whether the value in the node x is smaller than the value in the node y

x <= y
Whether the value in the node x is smaller or equal to the value in the node y
x > y

Whether the value in the node x is bigger than the value in the node y

x >= y

Whether the value in the node x is bigger or equal to the value in the node y

x == y

Whether the value in the node x is equal to the value in node y

x != y

Whether the value in the node x is not equal to the value in node y

Parameters:
  • val (T) – The value to be stored in the node

  • compare (Callable[[T, T], int]) – The compare function for comparing elements in the heap

val

The value within the node

Type:

T

compare

The compare function for comparing elements in the heap

Type:

Callable[[T, T], int]


DFA

class DFA(nodeCls: ~typing.Type[~FixRaidenBoss2.tools.Node.Node] = <class 'FixRaidenBoss2.tools.Node.Node'>)

Class for a DFA (Deterministic Finite Automaton)

_states

The states in the DFA

The keys are the ids of the states and values are the nodes for the states

Type:

Dict[Hashable, Node]

_neighbours

The out-neighbour nodes of a state

  • The outer keys are the ids of the states

  • The inner keys are the transition from one state to another

  • The inner values are the ids of the neighbour states

Type:

Dict[Hashable, Dict[Hashable, Hashable]]

_accept

The ids of the states that are considered as accepting states

Type:

Set[Hashable]

_startId

The id for the start state

Type:

Hashable

_currentStateId

The id for the current state

Type:

Hashable

_constructNode(id: Hashable, *args, **kwargs) Node

Constructs a node for the DFA

Parameters:
  • id (Hashable) – The id for the node

  • *args – Any extra arguments used to construct the node

  • **kwargs – Any extra keyword arguments used to construct the node

Returns:

The contructed node

Return type:

Node

addState(id: Hashable, isAccept: bool = False, isStart: bool = False) Tuple[Node, bool]

Add a new state to the DFA

Parameters:
  • id (Hashable) – The id for the state

  • isAccept (bool) – Whether the state is an accepting state

  • isStart (bool) –

    Whether to set the state as the new starting state

    Warning

    A DFA can only have 1 start state

    Warning

    If the DFA is empty and you add a new state, will set this state as the start state

Returns:

Retrieves the data about the newly added state, including:

  1. The corresponding state

  2. Whether the state was newly added

Return type:

Tuple[Node, bool]

addTransition(srcId: Hashable, keyword: Hashable, destId: Hashable)

Adds a transition to the DFA

Parameters:
  • srcId (Hashable) –

    The id of the source state for the transition

    Caution

    The id to the source state must refer to an existing state to the DFA

  • keyword (Hashable) –

    The keyword that will trigger a transition from the source state to the destination state

    Warning

    If the source state already has such a transition, then will overwrite the destination state for this transition

  • destId (Hashable) –

    The id of the destionation state for the transition

    Note

    The id of this state does not need to exist yet in the DFA . If the id of this state does not exist, then will create a new state in the DFA

clear()

Clears the DFA

property currentStateId: Hashable

The id of the state the DFA is currently at

Warning

The setter may raise a KeyError if the newly current id does not correspond to any state within the DFA

Getter:

Retrieves the id of the current state

Setter:

Sets the new id of the current state the DFA is on

Type:

Hashable

reset()

Resets the DFA to return back to its starting state

property startId: Hashable

The id to the start state

Warning

The setter may raise a KeyError if the newly given start id does not correspond to any state within the DFA

Getter:

Retrieves the start id

Setter:

Sets the new start id

Type:

Hashable

transition(keyword: Hashable) Tuple[Hashable, bool, bool]

Transitions to a new state

Parameters:

keyword (Hashable) – The keyword to trigger the transition to the new state

Returns:

Resultant data regarding the new transitioned state, which includes:

  1. The id of the new state

  2. Whether the new state is an accepting state

  3. Whether a transition was taken

Return type:

Tuple[Hashable, bool, bool]


Trie

class Trie(data: ~typing.Dict[str, ~FixRaidenBoss2.constants.GenericTypes.T] | None = None, handleDuplicate: ~typing.Callable[[str, ~FixRaidenBoss2.constants.GenericTypes.T, ~FixRaidenBoss2.constants.GenericTypes.T], ~FixRaidenBoss2.constants.GenericTypes.T] | None = None, nodeCls: ~typing.Type[~FixRaidenBoss2.tools.Node.Node] = <class 'FixRaidenBoss2.tools.Node.Node'>)

A class for a basic trie


Supported Operations:

key in x

Determines if ‘key’ is found

x[key]

Retrieves the corresponding value to ‘key’

x[key] = val

Sets the new KVP

Parameters:
  • data (Optional[Dict[str, T]]) –

    Any initial data to insert

    The keys are the keywords to put into the trie and the values are the corresponding values to the keywords

    Default: None

  • handleDuplicate (Optional[Callable[[str, T, T], T]]) –

    Function to handle the case where 2 KVPs inserted have the same key(word)

    The function takes in the following parameters:

    1. The duplicate keyword in both KVPs

    2. The value of the existing KVP

    3. The value of the new KVP

    If this value is None, will return the value of the new KVP by default

    Default: None

  • nodeCls (Type[Node]) – The class used to construct a node in the trie

_nodes

The nodes in the trie

The keys are the ids for the node and the values are the physical node

Type:

Dict[str, Node]

_children

The children nodes associated to a node

  • The outer keys are the ids of the nodes

  • The inner keys are the string sequences of the edges between a node and its children

  • The inner values are the ids for the children

Note

This is the adjacency list for the trie

Type:

Dict[int, Dict[str, int]]

_parent

The parent node associated to a node

The keys are the ids of a node and the values are the ids of the parents

Type:

Dict[int, int]

_keywords

The keywords inside of the trie

The keys are the ids for the keywords and the values are the text for the keywords

Type:

Dict[int, str]

_keywordIds

The inverse of _keywords

Type:

Dict[str, int]

_vals

The corresponding values to the keywords

The keys are the ids of the keywords and the values corresponding data values for the keyword

Type:

Dict[int, T]

_out

The keywords found at a node

The keys are the ids for the nodes and the values are the ids for the found keywords

Type:

Dict[int, List[int]]

_accept

The ids to the nodes that are considered as accepting states

Type:

Set[int]

_root

The root node

Type:

Node

_nodeCls

The class used to construct a node in the trie

Type:

Type[Node]

_addKVP(keyword: str, value: T) int

Adds in a new KVP

Warning

If ‘keyword’ already exists, then the new value for the KVP will be determined based off the handleDuplicate function

Returns:

The id to the keyword

Return type:

int

_addKeyword(keyword: str, value: T) Tuple[Node, bool]

Adds a keyword to the trie

Parameters:
  • keyword (str) – The keyword to add

  • value (T) – The value associated with the keyword

Returns:

Retrieves the following data:

  1. The node that at the end of the keyword

  2. Whether the keyword has not already been inserted into the trie

Return type:

Tuple[Node, bool]

_addNode() Node

Add a node into the trie

Returns:

The node added to the trie

Return type:

TrieNode

_compareKeywordIds(keywordId1: int, keywordId2: int) int

The compare function for the ids of the keywords

The sorting order for keyword ids is as follows:

  1. ids to existing keywords go before ids that do not correspond to a keyword

  2. ids with longer length keywords go before ids with shorter length keywords

  3. keywords of ids are ordered in alphabetical order

Paramters

keywordId1: int

The id for the first keyword

keywordId2: int

The id for the second keyword

returns:

The comparison result of a compare function

rtype:

int

_constructNode(id: Hashable, *args, **kwargs) Node

Constructs a a node used for the trie

Parameters:
  • id (Hashable) – The id for the node

  • *args – Any extra arguments to pass to the node

  • **kwargs – Any extra keyword arguments to pass to the node

Returns:

The constructed node

Return type:

Node

add(keyword: str, value: T) Tuple[Node, bool]

Adds a new keyword

Parameters:
  • keyword (str) – The keyword to add

  • value (T) – The value associated with the keyword

Returns:

Retrieves the following data:

  1. The node that at the end of the keyword

  2. Whether the keyword has already been inserted

Return type:

Tuple[Node, bool]

build(data: Dict[str, T] | None = None)

Rebuilds the trie

Parameters:

data (Optional[Dict[str, T]]) –

Any initial data to put into the trie

The keys are the keywords to put into the trie and the values are the corresponding values to the keywords

Default: None

clear()

Clears the data

clearCache()

Clears any cached search results

get(keyword: str, errorOnNotFound: bool = True, default: Any = None) T | Any

Retrieves the corresponding value to ‘keyword’

Parameters:
  • keyword (str) – The keyword to get the corresponding value for

  • errorOnNotFound (bool) – If the keyword is not found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if ‘keyword’ is not found

Raises:

KeyError – If ‘keyword’ is not found

Returns:

Either the found value for the keyword or the value specified at ‘default’, if ‘keyword’ is not found and ‘errorOnNotFound’ is set to False

Return type:

Union[T, Any]

property handleDuplicate: Callable[[str, T, T], T]

Function to handle the case where 2 KVPs inserted have the same key(word)

The function takes in the following parameters:

  1. The duplicate keyword in both KVPs

  2. The value of the existing KVP

  3. The value of the new KVP

Getter:

Retrieves the function

Setter:

Sets the new function

Type:

Callable[[str, T, T], T]


BaseAhoCorasickDFA

class BaseAhoCorasickDFA(data: Dict[str, T] | None = None, handleDuplicate: Callable[[str, T, T], T] | None = None)

Base class for the DFA (Deterministic Finite Automaton) used in the Aho-Corasick algorithm

Parameters:
  • data (Optional[Dict[str, T]]) –

    Any initial data to put into the DFA

    The keys are the keywords to put into the DFA and the values are the corresponding values to the keywords

    Default: None

  • handleDuplicate (Optional[Callable[[str, T, T], T]]) –

    Function to handle the case where 2 KVPs inserted have the same key(word)

    The function takes in the following parameters:

    1. The duplicate keyword in both KVPs

    2. The value of the existing KVP

    3. The value of the new KVP

    If this value is None, will return the value of the new KVP by default

    Default: None

add(keyword: str, value: T)

Adds a new keyword

Caution

Adding a new keyword may trigger the entire DFA to be rebuilt

Parameters:
  • keyword (str) – The keyword to add

  • value (T) – The value associated with the keyword

build(data: Dict[str, T] | None = None)

Rebuilds the DFA

Parameters:

data (Dict[str, T]) –

The new data to add to the DFA

Default: None

clear()

Clears the DFA

clearCache()

Clears any cached search results

find(txt: str) Tuple[str | None, int]

Finds the first keyword within ‘txt’

Parameters:

txt (str) – The text to search for the keyword

Returns:

Data of the found keyword containing:

  1. The keyword found

  2. The starting index of where the keyword was found. If no keywords were found, this index is -1

Return type:

Tuple[Optional[str], int]

findAll(txt: str) Dict[str, List[Tuple[int, int]]]

Finds all occurences of the keywords from the DFA in the given text

Parameters:

txt (str) – The text to search for keywords

Returns:

The indices for all the found keywords within the given text

  • The keys are the keywords found

  • The values are all instances of the keyword found

  • The tuple contains the starting index of the found instance and the ending index of the found instance

Return type:

Dict[str, List[Tuple[int, int]]]

findFirstAll(txt: str) Dict[str, Tuple[int, int]]

Finds the first occurences of the keywords from the DFA in the given text

Parameters:

txt (str) – The text to search for keywords

Returns:

The indices for all the found keywords within the given text

  • The keys are the keywords found

  • The tuple contains the starting index of the found instance and the ending index of the first found instance

Return type:

Dict[str, Tuple[int, int]]

findMaximal(txt: str, count: int = 1) Tuple[str | None | List[str], int | List[int]]

Finds the first few largest keywords within ‘txt’

Note

This function is a greedy version of find() or Maximal Munch that consumes only a limited amount of tokens

Parameters:
  • txt (str) – The text to search for the keyword

  • count (int) –

    The count of how many keywords to find in the search string

    Default: 1

Returns:

Data of the found keyword:

  • If the ‘count’ argument is less than or equal to 1, then the data will contain:

    1. The keyword found

    2. The starting index of where the keyword was found. If no keywords were found, this index is -1

  • If the ‘count’ argument is greater than 1, then the data will contain:

    1. The list of keywords found

    2. The corresponding starting indices for where the keyword were found

Return type:

Tuple[Union[Optional[str], List[str]], Union[int, List[int]]]

get(txt: str, errorOnNotFound: bool = True, default: Any = None) Tuple[str | None, T | Any]

Retrieves the corresponding value from the first keyword fround in ‘txt’

Note

This function retrieves the corresponding value after running find()

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if no keywords are found

Raises:

KeyError – If no keywords are found

Returns:

Retrieves the following resultant data:

  1. The first keyword found

  2. Either the found value for the first keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

Return type:

Tuple[Optional[str], Union[T, Any]]

getAll(txt: str) Dict[str, T]

Retrieves all the corresponding values to all the keywords found within ‘txt’

Parameters:

txt (str) – The text to search for keywords

Returns:

The corresponding values to the keywords

The keys are the keywords found and the values are the values to the keywords

Return type:

Dict[str, T]

getKeyVal(txt: str, errorOnNotFound: bool = True, default: Any = None) T | Any

Retrieves the corresponding value of the key given in ‘txt’

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorsOnNotFound’ is False, then the default value to return if no keywords are found

Raises:

KeyError – If the keyword is found

Returns:

Either the found value for the first largest keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

Return type:

Union[T, Any]

getMaximal(txt: str, errorOnNotFound: bool = True, default: Any = None, count: int = 1) Tuple[str | None | List[str], T | Any | List[T]]

Retrieves the corresponding value from the first largest keyword fround in ‘txt’

Note

This function retrieves the corresponding value after running findMaximal()

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if no keywords are found

  • count (int) –

    The count of how many keywords to find in the search string

    Default: 1

Raises:

KeyError – If no keywords are found

Returns:

Retrieves the following resultant data:

  • If the ‘count’ argument is less than or equal to 1, then the data contains:

    1. The first largest keyword found

    #. Either the found value for the first largest keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

  • If the ‘count’ argument is greater than 1, then the data contains:

    1. The list of keywords found

    2. The corresponding found values to the keywords

Return type:

Tuple[Union[Optional[str], List[str]], Union[T, Any, List[T]]]

property handleDuplicate: Callable[[str, T, T], T]

Function to handle the case where 2 KVPs inserted have the same key(word)

The function takes in the following parameters:

  1. The duplicate keyword in both KVPs

  2. The value of the existing KVP

  3. The value of the new KVP

Getter:

Retrieves the function

Setter:

Sets the new function

Type:

Callable[[str, T, T], T]


FastAhoCorasickDFA

class FastAhoCorasickDFA(data: Dict[str, T] | None = None, handleDuplicate: Callable[[str, T, T], T] | None = None)

A wrapper class over pyahocorasick.Automaton

The DFA (Deterministic Finite Automaton) used in the Aho-Corasick algorithm, implemented at the C level


Supported Operations:

txt in x

Determines if a keyword is found within ‘txt’

x[txt]

Retrieves the following data:

  1. The found keyword

  2. The corresponding value to the found keyword

Note

See getMaximal() for more details

x[key] = val

Sets the new KVP

Caution

Please see the warning at add()

Parameters:
  • data (Optional[Dict[str, T]]) –

    Any initial data to put into the DFA

    The keys are the keywords to put into the DFA and the values are the corresponding values to the keywords

    Default: None

  • handleDuplicate (Optional[Callable[[str, T, T], T]]) –

    Function to handle the case where 2 KVPs inserted have the same key(word)

    The function takes in the following parameters:

    1. The duplicate keyword in both KVPs

    2. The value of the existing KVP

    3. The value of the new KVP

    If this value is None, will return the value of the new KVP by default

    Default: None

_dfa

The internal DFA

Type:

pyahocorasick.Automaton

_data

The KVP data within the DFA

Type:

Dict[str, T]

add(keyword: str, value: T)

Adds a new keyword

Caution

Adding a new keyword may trigger the entire DFA to be rebuilt

Parameters:
  • keyword (str) – The keyword to add

  • value (T) – The value associated with the keyword

build(data: Dict[str, T] | None = None, clear: bool = True)

Rebuilds the DFA

Parameters:

data (Dict[str, T]) –

The new data to add to the DFA

Default: None

clear()

Clears the DFA

clearCache()

Clears any cached search results

find(txt: str) Tuple[str | None, int]

Finds the first keyword within ‘txt’

Parameters:

txt (str) – The text to search for the keyword

Returns:

Data of the found keyword containing:

  1. The keyword found

  2. The starting index of where the keyword was found. If no keywords were found, this index is -1

Return type:

Tuple[Optional[str], int]

findAll(txt: str) Dict[str, List[Tuple[int, int]]]

Finds all occurences of the keywords from the DFA in the given text

Parameters:

txt (str) – The text to search for keywords

Returns:

The indices for all the found keywords within the given text

  • The keys are the keywords found

  • The values are all instances of the keyword found

  • The tuple contains the starting index of the found instance and the ending index of the found instance

Return type:

Dict[str, List[Tuple[int, int]]]

findFirstAll(txt: str) Dict[str, Tuple[int, int]]

Finds the first occurences of the keywords from the DFA in the given text

Parameters:

txt (str) – The text to search for keywords

Returns:

The indices for all the found keywords within the given text

  • The keys are the keywords found

  • The tuple contains the starting index of the found instance and the ending index of the first found instance

Return type:

Dict[str, Tuple[int, int]]

findMaximal(txt: str, count: int = 1) Tuple[str | None | List[str], int | List[int]]

Finds the first few largest keywords within ‘txt’

Note

This function is a greedy version of find() or Maximal Munch that consumes only a limited amount of tokens

Parameters:
  • txt (str) – The text to search for the keyword

  • count (int) –

    The count of how many keywords to find in the search string

    Default: 1

Returns:

Data of the found keyword:

  • If the ‘count’ argument is less than or equal to 1, then the data will contain:

    1. The keyword found

    2. The starting index of where the keyword was found. If no keywords were found, this index is -1

  • If the ‘count’ argument is greater than 1, then the data will contain:

    1. The list of keywords found

    2. The corresponding starting indices for where the keyword were found

Return type:

Tuple[Union[Optional[str], List[str]], Union[int, List[int]]]

get(txt: str, errorOnNotFound: bool = True, default: Any = None) Tuple[str | None, T | Any]

Retrieves the corresponding value from the first keyword fround in ‘txt’

Note

This function retrieves the corresponding value after running find()

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if no keywords are found

Raises:

KeyError – If no keywords are found

Returns:

Retrieves the following resultant data:

  1. The first keyword found

  2. Either the found value for the first keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

Return type:

Tuple[Optional[str], Union[T, Any]]

getAll(txt: str) Dict[str, T]

Retrieves all the corresponding values to all the keywords found within ‘txt’

Parameters:

txt (str) – The text to search for keywords

Returns:

The corresponding values to the keywords

The keys are the keywords found and the values are the values to the keywords

Return type:

Dict[str, T]

getKeyVal(txt: str, errorOnNotFound: bool = True, default: Any = None) T | Any

Retrieves the corresponding value of the key given in ‘txt’

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorsOnNotFound’ is False, then the default value to return if no keywords are found

Raises:

KeyError – If the keyword is found

Returns:

Either the found value for the first largest keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

Return type:

Union[T, Any]

getMaximal(txt: str, errorOnNotFound: bool = True, default: Any = None, count: int = 1) Tuple[str | None | List[str], T | Any | List[T]]

Retrieves the corresponding value from the first largest keyword fround in ‘txt’

Note

This function retrieves the corresponding value after running findMaximal()

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if no keywords are found

  • count (int) –

    The count of how many keywords to find in the search string

    Default: 1

Raises:

KeyError – If no keywords are found

Returns:

Retrieves the following resultant data:

  • If the ‘count’ argument is less than or equal to 1, then the data contains:

    1. The first largest keyword found

    #. Either the found value for the first largest keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

  • If the ‘count’ argument is greater than 1, then the data contains:

    1. The list of keywords found

    2. The corresponding found values to the keywords

Return type:

Tuple[Union[Optional[str], List[str]], Union[T, Any, List[T]]]

property handleDuplicate: Callable[[str, T, T], T]

Function to handle the case where 2 KVPs inserted have the same key(word)

The function takes in the following parameters:

  1. The duplicate keyword in both KVPs

  2. The value of the existing KVP

  3. The value of the new KVP

Getter:

Retrieves the function

Setter:

Sets the new function

Type:

Callable[[str, T, T], T]


AhoCorasickDFA

class AhoCorasickDFA(data: ~typing.Dict[str, ~FixRaidenBoss2.constants.GenericTypes.T] | None = None, handleDuplicate: ~typing.Callable[[str, ~FixRaidenBoss2.constants.GenericTypes.T, ~FixRaidenBoss2.constants.GenericTypes.T], ~FixRaidenBoss2.constants.GenericTypes.T] | None = None, nodeCls: ~typing.Type[~FixRaidenBoss2.tools.Node.Node] = <class 'FixRaidenBoss2.tools.Node.Node'>)

This class inherits from Trie and BaseAhoCorasickDFA

The DFA (Deterministic Finite Automaton) used in the Aho-Corasick algorithm, implemented using pure Python


Supported Operations:

txt in x

Determines if a keyword is found within ‘txt’

x[txt]

Retrieves the following data:

  1. The found keyword

  2. The corresponding value to the found keyword

Note

See getMaximal() for more details

x[key] = val

Sets the new KVP

Caution

Please see the warning at add()

Parameters:
  • data (Optional[Dict[str, T]]) –

    Any initial data to put into the DFA

    The keys are the keywords to put into the DFA and the values are the corresponding values to the keywords

    Default: None

  • handleDuplicate (Optional[Callable[[str, T, T], T]]) –

    Function to handle the case where 2 KVPs inserted have the same key(word)

    The function takes in the following parameters:

    1. The duplicate keyword in both KVPs

    2. The value of the existing KVP

    3. The value of the new KVP

    If this value is None, will return the value of the new KVP by default

    Default: None

  • nodeCls (Type[Node]) – The class used to construct a node in the trie

_fail

The failure edges in the DFA

The keys are the ids to the sources node of the edges and the values are the ids to the sink nodes of the edges

Type:

Dict[int, int]

_addKVP(keyword: str, value: T) int

Adds in a new KVP

Warning

If ‘keyword’ already exists, then the new value for the KVP will be determined based off the handleDuplicate function

Returns:

The id to the keyword

Return type:

int

_addKeyword(keyword: str, value: T) Tuple[Node, bool]

Adds a keyword to the trie

Parameters:
  • keyword (str) – The keyword to add

  • value (T) – The value associated with the keyword

Returns:

Retrieves the following data:

  1. The node that at the end of the keyword

  2. Whether the keyword has not already been inserted into the trie

Return type:

Tuple[Node, bool]

_addNode() Node

Add a node into the trie

Returns:

The node added to the trie

Return type:

TrieNode

_compareKeywordIds(keywordId1: int, keywordId2: int) int

The compare function for the ids of the keywords

The sorting order for keyword ids is as follows:

  1. ids to existing keywords go before ids that do not correspond to a keyword

  2. ids with longer length keywords go before ids with shorter length keywords

  3. keywords of ids are ordered in alphabetical order

Paramters

keywordId1: int

The id for the first keyword

keywordId2: int

The id for the second keyword

returns:

The comparison result of a compare function

rtype:

int

_constructNode(id: Hashable, *args, **kwargs) Node

Constructs a a node used for the trie

Parameters:
  • id (Hashable) – The id for the node

  • *args – Any extra arguments to pass to the node

  • **kwargs – Any extra keyword arguments to pass to the node

Returns:

The constructed node

Return type:

Node

_getNextState(currentStateId: int, letter: str) Tuple[int, bool]

Retrieves the next state for travel to in the DFA

Parameters:
  • currentStateId (int) – The id of the current state

  • letter (str) – The transition letter to go to the next state

Returns:

  • Tuple[int, bool]

  • The resultant node data that contains (

    ) –

    1. The id of the node to the next state

    2. Whether the next state is from a failure transition

add(keyword: str, value: T)

Adds a new keyword

Parameters:
  • keyword (str) – The keyword to add

  • value (T) – The value associated with the keyword

Returns:

Retrieves the following data:

  1. The node that at the end of the keyword

  2. Whether the keyword has already been inserted

Return type:

Tuple[Node, bool]

build(data: Dict[str, T] | None = None)

Rebuilds the trie

Parameters:

data (Optional[Dict[str, T]]) –

Any initial data to put into the trie

The keys are the keywords to put into the trie and the values are the corresponding values to the keywords

Default: None

clear()

Clears the data

clearCache()

Clears any cached search results

find(txt: str) Tuple[str | None, int]

Finds the first keyword within ‘txt’

Parameters:

txt (str) – The text to search for the keyword

Returns:

Data of the found keyword containing:

  1. The keyword found

  2. The starting index of where the keyword was found. If no keywords were found, this index is -1

Return type:

Tuple[Optional[str], int]

findAll(txt: str) Dict[str, List[Tuple[int, int]]]

Finds all occurences of the keywords from the DFA in the given text

Parameters:

txt (str) – The text to search for keywords

Returns:

The indices for all the found keywords within the given text

  • The keys are the keywords found

  • The values are all instances of the keyword found

  • The tuple contains the starting index of the found instance and the ending index of the found instance

Return type:

Dict[str, List[Tuple[int, int]]]

findFirstAll(txt: str) Dict[str, Tuple[int, int]]

Finds the first occurences of the keywords from the DFA in the given text

Parameters:

txt (str) – The text to search for keywords

Returns:

The indices for all the found keywords within the given text

  • The keys are the keywords found

  • The tuple contains the starting index of the found instance and the ending index of the first found instance

Return type:

Dict[str, Tuple[int, int]]

findMaximal(txt: str, count: int = 1) Tuple[str | None | List[str], int | List[int]]

Finds the first few largest keywords within ‘txt’

Note

This function is a greedy version of find() or Maximal Munch that consumes only a limited amount of tokens

Parameters:
  • txt (str) – The text to search for the keyword

  • count (int) –

    The count of how many keywords to find in the search string

    Default: 1

Returns:

Data of the found keyword:

  • If the ‘count’ argument is less than or equal to 1, then the data will contain:

    1. The keyword found

    2. The starting index of where the keyword was found. If no keywords were found, this index is -1

  • If the ‘count’ argument is greater than 1, then the data will contain:

    1. The list of keywords found

    2. The corresponding starting indices for where the keyword were found

Return type:

Tuple[Union[Optional[str], List[str]], Union[int, List[int]]]

get(txt: str, errorOnNotFound: bool = True, default: Any = None) Tuple[str | None, T | Any]

Retrieves the corresponding value to ‘keyword’

Parameters:
  • keyword (str) – The keyword to get the corresponding value for

  • errorOnNotFound (bool) – If the keyword is not found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if ‘keyword’ is not found

Raises:

KeyError – If ‘keyword’ is not found

Returns:

Either the found value for the keyword or the value specified at ‘default’, if ‘keyword’ is not found and ‘errorOnNotFound’ is set to False

Return type:

Union[T, Any]

getAll(txt: str) Dict[str, T]

Retrieves all the corresponding values to all the keywords found within ‘txt’

Parameters:

txt (str) – The text to search for keywords

Returns:

The corresponding values to the keywords

The keys are the keywords found and the values are the values to the keywords

Return type:

Dict[str, T]

getKeyVal(txt: str, errorOnNotFound: bool = True, default: Any = None) T | Any

Retrieves the corresponding value of the key given in ‘txt’

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorsOnNotFound’ is False, then the default value to return if no keywords are found

Raises:

KeyError – If the keyword is found

Returns:

Either the found value for the first largest keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

Return type:

Union[T, Any]

getMaximal(txt: str, errorOnNotFound: bool = True, default: Any = None, count: int = 1) Tuple[str | None | List[str], T | Any | List[T]]

Retrieves the corresponding value from the first largest keyword fround in ‘txt’

Note

This function retrieves the corresponding value after running findMaximal()

Parameters:
  • txt (str) – The text to search for a keyword

  • errorOnNotFound (bool) – If no keywords are found, whether to raise an exception

  • default (Any) – If ‘errorOnNotFound’ is False, then the default value to return if no keywords are found

  • count (int) –

    The count of how many keywords to find in the search string

    Default: 1

Raises:

KeyError – If no keywords are found

Returns:

Retrieves the following resultant data:

  • If the ‘count’ argument is less than or equal to 1, then the data contains:

    1. The first largest keyword found

    #. Either the found value for the first largest keyword found or the value specified at ‘default’, if no keywords were found and ‘errorOnNotFound’ is set to False

  • If the ‘count’ argument is greater than 1, then the data contains:

    1. The list of keywords found

    2. The corresponding found values to the keywords

Return type:

Tuple[Union[Optional[str], List[str]], Union[T, Any, List[T]]]

property handleDuplicate: Callable[[str, T, T], T]

Function to handle the case where 2 KVPs inserted have the same key(word)

The function takes in the following parameters:

  1. The duplicate keyword in both KVPs

  2. The value of the existing KVP

  3. The value of the new KVP

Getter:

Retrieves the function

Setter:

Sets the new function

Type:

Callable[[str, T, T], T]


AhoCorasickBuilder

Methods
class AhoCorasickBuilder(buildCls: Type[BaseAhoCorasickDFA] | None = None, args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None)

This class inherits from Builder

A class to build some implementation of the Aho-Corasick algorithm

Parameters:
  • buildCls (Optional[Type[BaseAhoCorasickDFA]]) –

    The class to construct a BaseAhoCorasickDFA

    If this parameters is None, the class will be a FastAhoCorasickDFA

    Default: None

  • args (Optional[List[Any]]) –

    The constant arguments used to build the object

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    The constant keyword arguments used to build the object

    Default: None

build(*args, **kwargs)

Builds the DFA

Warning

If failed to construct the DFA for the class given, will fallback to constructing a AhoCorasickDFA

Parameters:
  • *args – arguments to build the object

  • **kwargs – keyword arguments to build the object

Returns:

The built DFA

Return type:

BaseAhoCorasickDFA


AhoCorasickSingleton

Attributes
Methods
class AhoCorasickSingleton(builder: AhoCorasickBuilder, *args, **kwargs)

Wrapper class to the BaseAhoCorasickDFA that only setup the data in the DFA once at some point during runtime

Parameters:
dfa

The DFA used in the Aho-Corasick algorithm

Type:

BaseAhoCorasickDFA

property isSetup

Whether the data in the DFA has been setup

Getter:

Retrieves whether the data has been setup yet

Type:

bool

reset()

Resets the state so that dfa can have its data updated

setup(data: Dict[str, T]) bool

Setup the data for the DFA , if the data has not been setup yet

Parameters:

data (Dict[str, T]) – The data to pass into BaseAhoCorasickDFA.build()

Returns:

Whether the data in dfa got updated

Return type:

bool


Algo

class Algo

Tools for some basic algorithms

classmethod binaryInsert(lst: List[T], target: T, compare: Callable[[T, T], int], optionalInsert: bool = False) bool

Insert’s ‘target’ into ‘lst’ using binary search

Parameters:
  • lst (List[T]) – The sorted list we want to insert the target element

  • target (T) – The target element to insert

  • compare (Callable[[T, T], int]) – The compare function for comparing elements in the list with the target element

  • optionalInsert (bool) –

    Whether to still insert the target element into the list if the element target element is found in the list

    Default: False

Returns:

Whether the target element has been inserted into the list

Return type:

bool

classmethod binarySearch(lst: List[T], target: T, compare: Callable[[T, T], int]) List[int | bool]

Performs binary search to search for ‘target’ in ‘lst’

Parameters:
  • lst (List[T]) – The sorted list we are searching from

  • target (T) – The target element to search for in the list

  • compare (Callable[[T, T], int]) – The compare function for comparing elements in the list with the target element

Returns:

  • The first element is whether the target element is found in the list

  • The second element is the found index or the index that we expect the target element to be in the list

Return type:

[bool, int]

classmethod merge(sortedLsts: List[List[T]], compare: Callable[[T, T], int]) List[T]

Merges k sorted lists toghether

Note

Implemented using the standard heap solution (See k-way merge problem for more details)

Parameters:
  • sortedLsts (List[List[T]]) – The sorted lists to merge

  • compare (Callable[[T, T], int]) – The compare function for comparing elements in the lists

Returns:

A new list with all elements from the given lists merged toghether, preserving ordering

Return type:

List[T]


Builder

Attributes
Methods
class Builder(buildCls: Type[BuildCls], args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None)

Class to dynamically create a new object

Parameters:
  • buildCls (Type[T]) – The class for the objects to be built from

  • args (Optional[List[Any]]) –

    The constant arguments used to build the object

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    The constant keyword arguments used to build the object

    Default: None

_buildCls

The class for the objects to be built from

Type:

Type[T]

_args

The constant arguments used to build the object

Type:

List[Any]

_kwargs

The constant keyword arguments used to build the object

Type:

Dict[str, Any]

build(*args, **kwargs) BuildCls

Creates the object

Parameters:
  • *args – arguments to build the object

  • **kwargs – keyword arguments to build the object

Returns:

The built objects

Return type:

T


FlyweightBuilder

Methods
class FlyweightBuilder(buildCls: Type[BuildCls], args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None)

This class inherits from Builder

A flyweight builder for building the same reusable objects (based off flyweight design pattern)

Parameters:
  • buildCls (Type[T]) – The class for the objects to be built from

  • args (Optional[List[Any]]) –

    The constant arguments used to build the object

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    The constant keyword arguments used to build the object

    Default: None

build(args: List[Any] | None = None, kwargs: Dict[str, Any] | None = None, id: Hashable | None = None, cache: bool = True) BuildCls

Builds the object

Parameters:
  • args (Optional[List[Any]]) –

    arguments to build the object

    Default: None

  • kwargs (Optional[Dict[str, Any]]) –

    keyword arguments to build the object

    Default: None

  • id (Optional[Hashable]) –

    The id for the repeating states to be built by the object

    If this value is None, then will auto-generate an id

    Default: None

  • cache (bool) –

    Whether to cache the built object

    Note

    If this value is set to False, then this function behaves the same as Builder.build()

    Default: True

Returns:

The built objects

Return type:

T


PackageManager

Attributes
Methods
class PackageManager(proxy: str | None = None, options: List[str] | None = None)

Class to handle external packages for the library at runtime

proxy

The link to the proxy server used for any internet network requests made

Default: None

Type:

Optional[str]

options

Additional options to supply to into pip

Default: None

Type:

Optional[List[str]]

Parameters:
  • proxy (Optional[str]) – The link to the proxy server used for any internet network requests made

  • options (List[str]) – Additional options to supply to into pip

get(packageData: PackageData, installOptions: List[str] | None = None)

Retrieves an external package

Parameters:
  • packageData (PackageData) – The data needed for install the external package

  • installOptions (Optional[List[str]]) –

    Additional installation options to supply to pip

    Note

    Please see the installOptions argument in load() for more details

Returns:

The module to the external package

Return type:

Module

load(module: str, installName: str | None = None, installOptions: List[str] | None = None, save: bool = True) ModuleType

Imports an external package

Parameters:
  • module (str) – The name of the module to import

  • install (Optional[str]) –

    The name of the installation for the package when using pip to download from pypi

    If this value is None, then assume that the name of the installation is the same as the name of the package

    Default: None

  • installOptions (Optional[List[str]]) –

    Additional installation options to supply into pip

    Note

    The following pip options are already supplied by this class:

    • -U, –upgrade

    • –proxy



    Default: None

  • save (bool) – Whether to save the installed package into this class

Returns:

The module to the external package

Return type:

Module


PackageData

class PackageData(module: str, installName: str | None = None)

Data class to hold data relating to retrieving/installing a package at runtime

Parameters:
  • module (str) – The name of the module to import

  • install (Optional[str]) –

    The name of the installation for the package when using pip to download from pypi

    If this value is None, then assume that the name of the installation is the same as the name of the package

    Default: None


ConcurrentManager

Methods
class ConcurrentManager(executionCls: Type[T], jobNo: int | None = None)

Base class to manage running many executions

Paramaters

executionCls: Type[T]

The class for building the executions

jobNo: Optional[int]

The number of executions to run at once

If this argument is None, will run all the executions at once

Default: None

executionCls

The class for building the executions

Type:

Type[T]

execution

The executions to run

Type:

List[T]

jobNo

The number of threads to run at once

Type:

Optional[int]

add(*args, **kwargs)

Adds an execution

Parameters:
  • *args – The arguments to provide into the class at executionCls

  • **kwargs – The keyword arguments to provide into executionCls

clear()

Clears all the executions

waitAll()

Runs all the executions at once and waits until all the executions have finished running


ThreadManager

Methods
class ThreadManager(jobNo: int | None = None)

Class to manage running many threads

Paramaters

jobNo: Optional[int]

The number of processes to run at once

If this argument is None, will run all the processes at once

Default: None

add(*args, **kwargs)

Adds an execution

Parameters:
  • *args – The arguments to provide into the class at executionCls

  • **kwargs – The keyword arguments to provide into executionCls

clear()

Clears all the executions

waitAll()

Runs all the executions at once and waits until all the executions have finished running


ProcessManager

Methods
class ProcessManager(jobNo: int | None = None)

Class to manage running many processes

Danger

This class is susceptible to keyboard interrupts. However, this vulnerability seem to be rooted to a bug in Python itself: https://stackoverflow.com/questions/1408356/keyboard-interrupts-with-pythons-multiprocessing-pool

Paramaters

jobNo: Optional[int]

The number of processes to run at once

If this argument is None, will run all the processes at once

Default: None

add(*args, **kwargs)

Adds an execution

Parameters:
  • *args – The arguments to provide into the class at executionCls

  • **kwargs – The keyword arguments to provide into executionCls

clear()

Clears all the executions

waitAll()

Runs all the processes at once and waits until all the processes have finished running



Exceptions


Error

class Error(message: str)

The base exception used by this module

Parameters:

message (str) – the error message to print out


FileException

Attributes
class FileException(message: str, path: str | None = None)

This Class inherits from Error

Exceptions relating to files

Parameters:
  • message (str) – The error message to print out

  • path (Optional[str]) –

    The path where the error for the file occured. If this value is None, then the path will be the current directory where this module is loaded

    Default: None

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


DuplicateFileException

class DuplicateFileException(files: List[str], fileType: str = 'file', path: str | None = None)

This Class inherits from FileException

Exception when there are multiple files of the same type in a folder

Parameters:
  • files (List[str]) – The files that triggered the exception

  • fileType (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

files

The files that triggered the exception

Type:

List[str]

fileType

The name for the type of files

Default: None

Type:

str

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


MissingFileException

class MissingFileException(fileType: str = 'file', path: str | None = None)

This Class inherits from FileException

Exception when a certain type of file is missing from a folder

Parameters:
  • fileType (str) –

    The type of file searching in the folder

    Default: “file”

  • path (str) –

    The path to the folder that is being searched. If this value is None, then the path will be the current directory where this module is loaded

    Default: None

fileType

The type of file searching in the folder

Type:

str

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


RemapMissingBlendFile

Attributes
class RemapMissingBlendFile(remapBlend: str)

This Class inherits from FileException

Exception when a RemapBlend.buf file is missing its corresponding Blend.buf file

Parameters:

remapBlend (str) – The path to the RemapBlend.buf file

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


BufFileNotRecognized

Attributes
class BufFileNotRecognized(filePath: str, fileType: str = 'Buffer')

This Class inherits from FileException

Exception when a Blend.buf file cannot be read

Parameters:
  • filePath (str) – The file path to the .buf file

  • fileType (str) –

    The name for the type of .buf file

    Default: Buffer

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


BadBufData

Attributes
class BadBufData(fileType: str = 'Buffer')

This Class inherits from Error

Exception when certain bytes do not correspond to the format defined for a .buf file

Parameters:

fileType (str) –

The name for the type of .buf file

Default: Buffer

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


ConflictingOptions

Attributes
class ConflictingOptions(options: List[str])

This Class inherits from Error

Exception when the script or RemapService is ran with options that cannot be used together

Parameters:

options (List[str]) – The options that cannot be used together

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


InvalidModType

Attributes
class InvalidModType(type: str)

This Class inherits from Error

Exception when the type of mod specified to fix is not found

Parameters:

type (str) – The name for the type of mod specified

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


InvalidDownloadMode

Attributes
class InvalidDownloadMode(mode: str)

This Class inherits from Error

Exception when the download mode to activate is not found

Parameters:

mode (str) – The name for the download mode specified

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.


NoModType

Attributes
class NoModType

This Class inherits from Error

Exception when trying to fix a mod of some unidentified mod type

Parameters:

type (str) – The name for the type of mod specified

with_traceback()

Exception.with_traceback(tb) – set self.__traceback__ to tb and return self.