Development and TODOs

Development and TODOs#

You want to help developing b2luigi? Great! Have your GitHub or DESY GitLab account ready and let’s go!

If you are a Belle II collaborator, you can contribute directly on the _.

Local Development#

You want to help developing b2luigi? Great! Here are some first steps to help you dive in:

  1. Make sure you uninstall b2luigi if you have installed if from PyPI

    python -m pip uninstall b2luigi
    
  2. Clone the repository from GitHub

    git clone https://github.com/belle2/b2luigi
    

    or, for Belle II collaborators, clone the repository from DESY GitLab

    git clone git@gitlab.desy.de:belle2/software/b2luigi.git
    
  3. Change into the cloned directory

    cd b2luigi
    

    We recommend to work only in Python virtual environments. You can create a new virtual environment with

    python3 -m venv venv
    

    and activate it with

    source venv/bin/activate
    

    If you are a Belle II collaborator, you can also use the b2venv command to create a virtual environment.

  1. b2luigi is not using setuptools but the newer (and better) flit as a a builder. Install it via

    pip3 [ --user ] install flit
    

    You can now install b2luigi from the cloned git repository in development mode:

    flit install -s -deps=develop
    

    Now you can start hacking and your changes will be immediately available to you.

  2. Automatically check your code with pre-commit:

    pre-commit install  # install the pre-commit hooks
    pre-commit run --all-files  # run pre-commit manually
    

    In particular, the python files are checked with ruff for syntax and PEP 8 style errors. We recommend using an IDE or editor which automatically highlights errors with ruff or a similar python linter (e.g. Pylint or flake8).

  3. We use the pytest package for testing some parts of the code. All tests reside in the tests/ sub-directory. To run all tests, run the command

    pytest -v b2luigi tests
    

    in the root of b2luigi repository. If you add some functionality, try to add some tests for it.

  4. The documentation is hosted on b2luigi.belle2.org and build automatically on every commit to main. You can (and should) also build the documentation locally:

    sphinx-autobuild docs build
    

    The autobuild will rebuild the project whenever you change something. It displays a URL where to find the created docs now (most likely http://127.0.0.1:8000). Please make sure the documentation looks fine before creating a pull request.

  5. If you are a core developer and want to release a new version:

    1. Make sure all changes are committed and merged on main

    2. Use the bump-my-version package to update the version in b2luigi/__init__.py, .bumpversion.cfg as well as the git tag. flit will automatically use this.

      bump-my-version bump --no-commit [patch|minor|major]
      
    3. Push the new commit and the tags

      git push --follow-tags
      
    4. On GitLab releases are automatically generated from the merge requests that had a title and a changelog in their description.

      For GitHub create a release and copy the content from GitLab.

    5. Check that the new release had been published to PyPI, which should happen automatically via GitLab pipeline. Alternatively, you can also manually publish a release. Install the dependencies with

      python -m pip install -U [ --user ] setuptools wheel twine
      

      and publish via

      flit publish
      

Open TODOs#

For the Belle II collaborators: for a list of potential features, improvements and bugfixes see the GitLab issues. Help is welcome, so feel free to pick one, e.g. with the good first issue or help wanted tags.