We welcome all new developers and contributors with very friendly community. Join #FlexGet @ freenode.
List of external libraries and utilities. As for new libraries, we require that all of them are
installable on Windows trough
pip. This will exclude things that require compilers like LXML.
Some smaller misc libraries
CherryPy is only used for WSGI server.
How do I get started?¶
Using Poetry is the easiest way to set up a development environment:
Git clone our repository.
poetry installin the checkout directory to create a virtual environment and install Flexget in it.
For easier collaboration we recommend forking us on github and sending pull request. Once we see any semi-serious input from a developer we will grant write permissions to our central repository. You can also request this earlier if you wish.
Once you have done a
poetry install, you have a fully functional FlexGet in
a virtual environment in your clone directory. You can easily add or modify
existing plugins in here and it will not mess your other FlexGet instances in
any way. The commands in the documentation expect the virtual environment to be
activated. If you don’t activate it you must run commands explicitly using
flexget would be
poetry run flexget.
How to activate virtual environment:
There are currently over 250 unit tests ensuring that existing functionality is not accidentally broken. Additional requirements to run unit tests are installed automatically during a poetry installation.:
We use the pytest framework for testing. Easiest way to run tests is just:
Run single test file via py.test:
pytest -v test_file.py
Run single test suite (class):
pytest -v test_file.py::TestClass
Run single test case from suite:
Project has GitHub Actions set up, which will run all the tests on PRs and the main development branch. Releases will be made automatically daily if the tests are all passing.
Unit tests are not mandatory for a plugin to be included in the FlexGet distribution but it makes maintaining our code trough project life and refactoring so much easier. As such, contributions are much more likely to be accepted if they are included.
All code should be formatted according to Python PEP8 recommendations. With the exception of line length limit at 79 characters. FlexGet uses 120 characters instead. We use black and isort to enforce our code style. The easiest way to run these tools, is to install our pre-commit hooks, which will run our tools every time you do a git commit, and fix the style for you.
To install the pre-commit hooks: