DeepSource Transformers automatically format your code to match style guides without manual setup. Configure it once, and DeepSource will submit pull requests or update existing PRs with properly formatted code whenever your changes don’t meet the selected style standards.

Each commit in a repository is processed by a DeepSource Transformer, which applies industry-standard code formatters to ensure that the code is consistently formatted and free of conflicts. This automated formatting process helps maintain the quality of your codebase by ensuring that it adheres to established standards.

When a pull request (PR) is generated, all the enabled transformers specified in the .deepsource.toml configuration file are executed. Any changes that are detected are then committed back to the same branch. Refer to the respective’s language’s section for details on the transformers that are available for each language and it’s .deepsource.toml configuration.

In cases where changes are made directly to the default branch without a pull request, a new pull request is automatically generated with the necessary transformations. This process ensures that any code changes made to the repository are consistently formatted and meet established standards, regardless of the method of modification.

GitHub imposes restrictions on creating commits on branches from other forks, which may occasionally prevent changes from being committed back. In such cases, we recommend merging the pull request as it is. Once the pull request is merged, DeepSource automatically identifies and incorporates the formatting transformations introduced in the merge commit.

When transformers are initially added to the .deepsource.toml file on the default branch, the entire codebase is transformed. However, subsequent to this initial transformation, only files that have been added or modified in a commit, pull request, or merge request are transformed.

List of supported code formatters can be found here.

It should be noted that for pull requests that have non-default branches as their base (such as pull requests to release branches), transformations are not executed.