Skip to content

Contributing

PyFLP adheres to the Contributor Covenant Code of Conduct. Please make sure you have read it and accept it before proceeding further.

Code Style: Black

PyFLP follows the black code style. It has a formatter. Make sure to use it.

Code comments

At places in the code, you will see comments like this

# * Important
# ? Doubt
# ! Urgent

I recommend you to install Better Comments and use the appropriate formatting.

Docstrings

The object model created by PyFLP is its core, ensure property docstrings are given wherever possible; however avoid redundant ones, along with other information like minimum, maximum limits and default. Also mention whether the default event linked to a property is stored or not. Currently PEP-257 attribute docstrings are used heavily and VS Code luckily supports them.

Don't add a full-stop/period after an exception docstring. It is used by __repr__ to format the exception string.

When to document?

prop: int = IntProperty()
"""Doc doc doc. Min: min, Max: max, Default: default."""

Document properties when you satisfy either of the conditions:

  • When you have some basic information other than the property name itself.
  • When you have minimum, maximum and/or default values.

When NOT to document?

color: colour.Color = ColorProperty()
"""Color."""

Don't document properties like name, color, index etc. if the property name itself is the only useful information available. These properties occur throughout the object model that their meaning is pretty self-explanatory.

Imports

Submodule __init__.py files have import statements in them. They are only to simplify the import process externally (make it look less messier) and not to be used internally.

Issues

You should begin with the TODO.

Testing

Testing is a difficult thing. A proprietary closed sourced program and a closed format add to the woes. If any genius soul has a solution, please help me!

Running tests

Run tests with coverage.py

coverage run -m pytest

Check coverage reports

coverage html

Documentation

PyFLP uses MkDocs, the process to update it is fairly simple. Documentation is not versioned yet and I don't see the need to do it in the near future either. I used Sphinx earlier, but its love for reStructuredText makes it difficult to use.

Changelog update

I am not using any tools to generate automated changelogs. Keep A Changelog format is used.

Pre-commit hooks

Pre-commit is used. Its configuration can be found here