Contributing

June 11, 2026 ยท View on GitHub

Bug report

For now GitHub bug traker is used for this project.

We aim to be user friendly, so if you have any issue or suggestion for the UI/UX or about the application packging, please tell us, we appreciate it.

Development

  • The 3rd version of the Python programming language is used mainly in this project.
  • Dependencies managment is handled using requirements files with uv.
    • requirements.in contain requirements for running the application and requirements-dev.in contain requirements for development.
    • .txt files are locked requirements with hashes generated using uv to provide a reproducible environment.
    • For development you will need to use both files, while users just need to use the requirements.txt file.

pre-commit will take care about generating .txt files. You should just edit .in files or use uv to upgrade locked requirements.

Create a virtual environment and install dependencies

First clone the git repository:

git clone https://github.com/zefr0x/hashes.git

For development you are recomended to use uv for reproducing the same environment.

  1. Create a virtual environment and activate it
uv venv

source .venv/bin/activate
  1. Run the folowing command in the project's root directory to install all the dependencies for development
uv pip sync requirements/{requirements,requirements-dev}.txt
  1. Then you can run the application as a python module
python3 -m hashes

You can use the justfile for the last two steps if you want to.

Style

  • You should type hint every thing as possible.
  • You should comment every thing to keep the code easy to read. Every file, every class, every function and any line that need a comment.

You should use:

  • mypy (Static Type Checker)
  • ruff (Style Enforcer & Code Formatter)

You can also use any tool that you want as long as it's compatable with the required style.

Installing pre-commit

To make every thing easy pre-commit is used in this project, it should run in every commit, so you shouldn't commit any thing without checking it first.

First install it:

pip install pre-commit

You can use another way to install it, maybe from your OS's package manager.

Then add it as a git hook while you are inside the repository:

pre-commit install

Testing

TODO...

Translation

The application's GUI is prepared for internationalisation using gettext.

Go to the ./po directory for more details.

Translating the application name

The name of the application should be changed with respect to the target locale, but it must convey the same meaning.