A high-level fomod library written in Python.
⚠️ Note: This is a mature library with all planned features added and no known bugs - do not be alarmed by the lack of commits.
pyfomod makes it easy to work on fomod installers:
- Pythonic data struture
- Easy data extraction and modification
- No need to deal with complex xml schemas or trial and error changes
pyfomod automatically ignores any schema errors in an installer and corrects them when writing - you can fix most schema errors simply by parsing then writing the installer with pyfomod.
To install pyfomod, use pip:
pip install pyfomod
Use an existing installer:
>>> root = pyfomod.parse("path/to/package")
Get the installer metadata::
>>> root.name
'Example Name'
>>> root.author
'Example Author'
>>> root.description
'This is an example of metadata!'
>>> root.version
'1.0.0'
>>> root.website
'https://www.nexusmods.com/example/mods/1337'
Create a new installer:
>>> root = pyfomod.Root()
Save the installer:
>>> pyfomod.write(root, "path/to/package")
For more information check out pyfomod's documentation at pyfomod.rtfd.io
Please use the GitHub issue tracker to submit bugs or request features.
Fomod is a package format for mod installers. It's game-agnostic, meaning it works on any game. It follows a specific package struture with a mandatory xml file in a subfolder that follows a specific xml schema and an optional xml file that does not. For more information visit the fomod documentation.
pyfomod uses poetry to manage package versions:
path/to/python.exe -m pip install poetry
path/to/python.exe -m poetry install
Ensure that everything is correct before committing:
path/to/python.exe -m poetry run check
path/to/python.exe -m poetry run test
When you're done with a feature/fix, bump the version:
path/to/python.exe -m poetry run bump2version {major|minor|patch}
To finally publish to PYPI:
path/to/python.exe -m poetry publish --build -u $PYPI_USER -p $PYPI_PASS