Skip to content

GandaG/pyfomod

Repository files navigation

pyfomod

PyPi Python Versions Build Status

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.

Installation

To install pyfomod, use pip:

pip install pyfomod

Quick Examples

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")

Documentation

For more information check out pyfomod's documentation at pyfomod.rtfd.io

Issues

Please use the GitHub issue tracker to submit bugs or request features.

What Is Fomod Anyway?

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.

Development

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