1
0
mirror of synced 2025-12-26 14:02:10 -05:00
Files
airbyte/docs/contributing-to-airbyte/resources/code-formatting.md

2.0 KiB

Code formatting

Tools

🐍 Python

We use Ruff for Python code formatting and import sorting. Our Ruff configuration is in the pyproject.toml file.

Ruff is monorepo-friendly and supports nested inherited configuration; each sub-project can optionally override Ruff lint and formatting settings in their own pyproject.toml files, as needed per project.

Ruff auto-detects the proper package classification so that "local", "first party" and "third party" imports are sorted and grouped correctly, even within subprojects of the monorepo.

Java

We format our Java code using Spotless. Our configuration for Spotless is in the spotless-maven-pom.xml file.

Json and Yaml

We format our Json and Yaml files using prettier.

Local Formatting

We wrapped our code formatting tools in pre-commit. You can install this and other local dev tools by running make tools.install.

You can execute pre-commit to format modified files, or pre-commit run --all-files to format all the code your local airbyte repository.

Pre-push Git Hooks

A pre-push git hook is available, which you can enable with:

make tools.git-hooks.install

You can also uninstall git hooks with:

make tools.git-hooks.clean

CI Checks and /format-fix Slash Command

In the CI we run the pre-commit run --all-files command to check that all the code is formatted. If it is not, CI will fail and you will have to run pre-commit run --all-files locally to fix the formatting issues. Alternatively, maintainers with write permissions can run the /format-fix GitHub slash command to auto-format the entire repo and commit the result back to the open PR.