5.0.0 - 2024-10-05
==================

### Features
- `requirements-txt-fixer`: also remove `pkg_resources==...`.
    - #850 PR by @ericfrederich.
    - #1030 issue by @ericfrederich.
- `check-illegal-windows-names`: new hook!
    - #1044 PR by @ericfrederich.
    - #589 issue by @ericfrederich.
    - #1049 PR by @Jeffrey-Lim.
- `pretty-format-json`: continue processing even if a file has a json error.
    - #1039 PR by @amarvin.
    - #1038 issue by @amarvin.

### Fixes
- `destroyed-symlinks`: set `stages` to `[pre-commit, pre-push, manual]`
    - PR #1085 by @AdrianDC.

### Migrating
- pre-commit-hooks now requires `pre-commit>=3.2.0`.
- use non-deprecated names for `stages`.
    - #1093 PR by @asottile.

4.6.0 - 2024-04-06
==================

### Features
- `requirements-txt-fixer`: remove duplicate packages.
    - #1014 PR by @vhoulbreque-withings.
    - #960 issue @csibe17.

### Migrating
- `fix-encoding-pragma`: deprecated -- will be removed in 5.0.0.  use
  [pyupgrade](https://github.com/asottile/pyupgrade) or some other tool.
    - #1033 PR by @mxr.
    - #1032 issue by @mxr.

4.5.0 - 2023-10-07
==================

### Features
- `requirements-txt-fixer`: also sort `constraints.txt` by default.
    - #857 PR by @lev-blit.
    - #830 issue by @PLPeeters.
- `debug-statements`: add `bpdb` debugger.
    - #942 PR by @mwip.
    - #941 issue by @mwip.

### Fixes
- `file-contents-sorter`: fix sorting an empty file.
    - #944 PR by @RoelAdriaans.
    - #935 issue by @paduszyk.
- `double-quote-string-fixer`: don't rewrite inside f-strings in 3.12+.
    - #973 PR by @asottile.
    - #971 issue by @XuehaiPan.

## Migrating
- now requires python >= 3.8.
    - #926 PR by @asottile.
    - #927 PR by @asottile.

4.4.0 - 2022-11-23
==================

### Features
- `forbid-submodules`: new hook which outright bans submodules.
    - #815 PR by @asottile.
    - #707 issue by @ChiefGokhlayeh.

4.3.0 - 2022-06-07
==================

### Features
- `check-executables-have-shebangs`: use `git config core.fileMode` to
  determine if it should query `git`.
    - #730 PR by @Kurt-von-Laven.
- `name-tests-test`: add `--pytest-test-first` test convention.
    - #779 PR by @asottile.

### Fixes
- `check-shebang-scripts-are-executable`: update windows instructions.
    - #774 PR by @mdeweerd.
    - #770 issue by @mdeweerd.
- `check-toml`: use stdlib `tomllib` when available.
    - #771 PR by @DanielNoord.
    - #755 issue by @sognetic.
- `check-added-large-files`: don't run on non-file `stages`.
    - #778 PR by @asottile.
    - #777 issue by @skyj.

4.2.0 - 2022-04-06
==================

### Features
- `name-tests-test`: updated display text.
    - #713 PR by @asottile.
- `check-docstring-first`: make output more parsable.
    - #748 PR by @asottile.
- `check-merge-conflict`: make output more parsable.
    - #748 PR by @asottile.
- `debug-statements`: make output more parsable.
    - #748 PR by @asottile.

### Fixes
- `check-merge-conflict`: fix detection of `======` conflict marker on windows.
    - #748 PR by @asottile.

### Updating
- Drop python<3.7.
    - #719 PR by @asottile.
- Changed default branch from `master` to `main`.
    - #744 PR by @asottile.

4.1.0 - 2021-12-22
==================

### Features
- `debug-statements`: add `pdbr` debugger.
    - #614 PR by @cansarigol.
- `detect-private-key`: add detection for additional key types.
    - #658 PR by @ljmf00.
- `check-executables-have-shebangs`: improve messaging on windows.
    - #689 PR by @pujitm.
    - #686 issue by @jmerdich.
- `check-added-large-files`: support `--enforce-all` with `git-lfs`.
    - #674 PR by @amartani.
    - #560 issue by @jeremy-coulon.

### Fixes
- `check-case-conflict`: improve performance.
    - #626 PR by @guykisel.
    - #625 issue by @guykisel.
- `forbid-new-submodules`: fix false-negatives for `pre-push`.
    - #619 PR by @m-khvoinitsky.
    - #609 issue by @m-khvoinitsky.
- `check-merge-conflict`: fix execution in git worktrees.
    - #662 PR by @errsyn.
    - #638 issue by @daschuer.

### Misc.
- Normalize case of hook names and descriptions.
    - #671 PR by @dennisroche.
    - #673 PR by @revolter.

4.0.1 - 2021-05-16
==================

### Fixes
- `check-shebang-scripts-are-executable` fix entry point.
    - #602 issue by @Person-93.
    - #603 PR by @scop.

4.0.0 - 2021-05-14
==================

### Features
- `check-json`: report duplicate keys.
    - #558 PR by @AdityaKhursale.
    - #554 issue by @adamchainz.
- `no-commit-to-branch`: add `main` to default blocked branches.
    - #565 PR by @ndevenish.
- `check-case-conflict`: check conflicts in directory names as well.
    - #575 PR by @slsyy.
    - #70 issue by @andyjack.
- `check-vcs-permalinks`: forbid other branch names.
    - #582 PR by @jack1142.
    - #581 issue by @jack1142.
- `check-shebang-scripts-are-executable`: new hook which ensures shebang'd
  scripts are executable.
    - #545 PR by @scop.

### Fixes
- `check-executables-have-shebangs`: Short circuit shebang lookup on windows.
    - #544 PR by @scop.
- `requirements-txt-fixer`: Fix comments which have indentation
    - #549 PR by @greshilov.
    - #548 issue by @greshilov.
- `pretty-format-json`: write to stdout using UTF-8 encoding.
    - #571 PR by @jack1142.
    - #570 issue by @jack1142.
- Use more inclusive language.
    - #599 PR by @asottile.

### Breaking changes
- Remove deprecated hooks: `flake8`, `pyflakes`, `autopep8-wrapper`.
    - #597 PR by @asottile.


3.4.0 - 2020-12-15
==================

### Features
- `file-contents-sorter`: Add `--unique` argument
    - #524 PR by @danielhoherd.
- `check-vcs-permalinks`: Add `--additional-github-domain` option
    - #530 PR by @youngminz.
- New hook: `destroyed-symlinks` to detect unintentional symlink-breakages on
  windows.
    - #511 PR by @m-khvoinitsky.

3.3.0 - 2020-10-20
==================

### Features
- `file-contents-sorter`: add `--ignore-case` option for case-insensitive
  sorting
    - #514 PR by @Julian.
- `check-added-large-files`: add `--enforce-all` option to check non-added
  files as well
    - #519 PR by @mshawcroft.
    - #518 issue by @mshawcroft.
- `fix-byte-order-marker`: new hook which fixes UTF-8 byte-order marker.
    - #522 PR by @jgowdy.

### Deprecations
- `check-byte-order-marker` is now deprecated for `fix-byte-order-marker`

3.2.0 - 2020-07-30
==================

### Features
- `debug-statements`: add support for `pydevd_pycharm` debugger
    - #502 PR by @jgeerds.

### Fixes
- `check-executables-have-shebangs`: fix git-quoted files on windows (spaces,
  non-ascii, etc.)
    - #509 PR by @pawamoy.
    - #508 issue by @pawamoy.

3.1.0 - 2020-05-20
==================

### Features
- `check-executables-have-shebangs`: on windows, validate the mode bits using
  `git`
    - #480 PR by @mxr.
    - #435 issue by @dstandish.
- `requirements-txt-fixer`: support more operators
    - #483 PR by @mxr.
    - #331 issue by @hackedd.

### Fixes
- `pre-commit-hooks-removed`: Fix when removed hooks used `args`
    - #487 PR by @pedrocalleja.
    - #485 issue by @pedrocalleja.

3.0.1 - 2020-05-16
==================

### Fixes
- `check-toml`: use UTF-8 encoding to load toml files
    - #479 PR by @mxr.
    - #474 issue by @staticdev.

3.0.0 - 2020-05-14
==================

### Features
- `detect-aws-credentials`: skip empty aws keys
    - #450 PR by @begoon.
    - #449 issue by @begoon.
- `debug-statements`: add detection `wdb` debugger
    - #452 PR by @itsdkey.
    - #451 issue by @itsdkey.
- `requirements-txt-fixer`: support line continuation for dependencies
    - #469 PR by @aniketbhatnagar.
    - #465 issue by @aniketbhatnagar.

### Fixes
- `detect-aws-credentials`: fix `UnicodeDecodeError` when running on non-UTF8
  files.
    - #453 PR by @asottile.
    - #393 PR by @a7p
    - #346 issue by @rpdelaney.

### Updating
- pre-commit/pre-commit-hooks now requires python3.6.1+
    - #447 PR by @asottile.
    - #455 PR by @asottile.
- `flake8` / `pyflakes` have been removed, use `flake8` from `pycqa/flake8`
  instead:

  ```yaml
  -   repo: https://gitlab.com/pycqa/flake8
      rev: 3.8.1
      hooks:
      -   id: flake8
  ```

    - #476 PR by @asottile.
    - #477 PR by @asottile.
    - #344 issue by @asottile.


2.5.0 - 2020-02-04
==================

### Fixes
- Fix sorting of requirements which use `egg=...`
    - #425 PR by @vinayinvicible.
- Fix over-eager regular expression for test filename matching
    - #429 PR by @rrauenza.

### Updating
- Use `flake8` from `pycqa/flake8` instead:

  ```yaml
  -   repo: https://gitlab.com/pycqa/flake8
      rev: 3.7.9
      hooks:
      -   id: flake8
  ```

2.4.0 - 2019-10-28
==================

### Features
- Add diff output to `pretty-format-json` when run without `--autofix`.
    - #408 PR by @joepin.
- Add `--chars` option to `trailing-whitespace` fixer to control which
  characters are stripped instead of all whitespace.
    - #421 PR by @iconmaster5326.

### Fixes
- Fix `requirements-txt-fixer` when file does not end in a newline.
    - #414 issue by @barakreif.
    - #415 PR by @barakreif.
- Fix double printing of filename in `pretty-format-json`.
    - #419 PR by @asottile.

2.3.0 - 2019-08-05
==================

### Features
- Add `rpdb` to detected debuggers in `debug-statements`
    - #389 PR by @danlamanna.
- Add `check-toml` hook
    - #400 PR by @MarSoft.
    - #400 PR by @ssbarnea.

### Fixes
- Add `__main__` block to `pre_commit.file_contents_sorter` so it can be
  invoked using `python -m`
    - #405 PR by @squeaky-pl.

### Misc.
- Fix `git-lfs` tests in azure pipelines
    - #403 PR by @ssbarnea.

2.2.3 - 2019-05-16
==================

### Fixes
- Handle CRLF line endings in `double-quote-string-fixer`
    - #385 issue by @Trim21.
    - #386 PR by @asottile.

2.2.2 - 2019-05-15
==================

### Fixes
- Handle CRLF line endings in `fix-encoding-pragma`
    - #384 PR by @asottile.

2.2.1 - 2019-04-21
==================

### Fixes
- Use UTF-8 to load yaml files
    - #377 issue by @roottool.
    - #378 PR by @roottool.

2.2.0 - 2019-04-20
==================

### Features
- Switch from `pyyaml` to `ruamel.yaml`
    - This enforces (among other things) duplicate key checking in yaml.
    - #351 PR by @asottile.
- Add a new `--pattern` option to `no-commit-to-branch` for regex matching
  branch names.
    - #375 issue by @marcjay.
    - #376 PR by @marcjay.

### Fixes
- Set `require_serial: true` for flake8
    - flake8 internally uses multiprocessing.
    - #358 PR by @asottile.
- Don't run `check-executables-have-shebangs` / `trailing-whitespace` hooks
  during the `commit-msg` stage.
    - #361 issue by @revolter.
    - #362 PR by @revolter.
- Run `check-byte-order-marker` against `types: [text]`
    - #371 PR by @tobywf.
    - #372 PR by @tobywf.
- Do not require UTF-8-encoded files for `check-docstring-first`
    - #345 issue by @x007007007.
    - #374 PR by @asottile.

### Misc.
- `pre-commit-hooks` now is type checked with mypy.
    - #360 PR by @asottile.

2.1.0 - 2018-12-26
==================

### Features
- Detect PGP/GPG private keys in `detect-private-key`
    - #329 PR by @rpdelaney.
- Report filenames when fixing files in `mixed-line-endings`
    - #341 PR by @gimbo.
    - #340 issuey by @gimbo.

### Fixes
- Handle CRLF / CR line endings in `end-of-file-fixer`
    - #327 PR by @mtkennerly.

### Docs

- Clarify and document arguments for `detect-aws-credentials`
    - #333 PR by @rpdelaney.
- Clarify `autopep8-wrapper` is deprecated in description
    - #343 PR by @TheKevJames.


2.0.0 - 2018-10-12
==================

### Breaking changes

- `autopep8-wrapper` has been moved to
  [pre-commit/mirrors-autopep8][mirrors-autopep8]
    - #92 issue by @asottile.
    - #319 issue by @blaggacao.
    - #321 PR by @asottile.
- `trailing-whitespace` defaults to `--no-markdown-linebreak-ext`
    - #310 issue by @asottile.
    - #324 PR by @asottile.
- `hooks.yaml` (legacy pre-commit hook metadata) deleted
    - #323 PR by @asottile.
- pre-`types` compatibility metadata removed
    - #323 PR @asottile.

### Docs

- Correct documentation for `no-commit-to-branch`
    - #318 PR by @milin.

### Updating

- Minimum supported version of `pre-commit` is now 0.15.0
- Use `autopep8` from [pre-commit/mirrors-autopep8][mirrors-autopep8]
- To keep mardown hard linebreaks, for `trailing-whitespace` use
  `args: [--markdown-linebreak-ext=md,markdown]` (the previous default value)

[mirrors-autopep8]: https://github.com/pre-commit/mirrors-autopep8

1.4.0-1 - 2018-09-27
====================

(Note: this is a tag-only release as no code changes occurred)

### Fixes
- Don't run `end-of-file-fixer` during `commit-msg` stage
    - #315 issue by @revolter.
    - #317 PR by @revolter.

1.4.0 - 2018-07-22
==================

### Features
- `no-commit-to-branch`: allow `--branch` to be specified multiple times
    - #190 PR by @moas.
    - #294 PR by @asottile.
- `check-merge-conflict`: add `--assume-in-merge` to force checks outside of a
  merge commit situation
    - #300 issue by @vinayinvicible.
    - #301 PR by @vinayinvicible.

### Fixes
- Don't match whitespace in VCS urls
    - #293 PR by @asottile.
- Fix invalid escape sequences
    - #296 PR by @asottile.
- Fix `ResourcesWarning`s
    - #297 PR by @asottile.

### Misc
- Test against python3.7
    - #304 PR by @expobrain.

1.3.0 - 2018-05-28
==================

### Features
- Add an `--unsafe` argument to `check-yaml` to allow custom yaml tags
    - #273 issue by @blackillzone.
    - #274 PR by @asottile.
- Automatically remove `pkg-resources==0.0.0` in `requirements-txt-fixer`
    - #275 PR by @nvtkaszpir.
- Detect `breakpoint()` (python3.7+) in `debug-statements` hook.
    - #283 PR by @asottile.
- Detect sshcom and putty hooks in `detect-private-key`
    - #287 PR by @vin01.

### Fixes
- Open files as UTF-8 (`autopep8-wrapper`, `check-docstring-first`,
  `double-quote-string-fixer`)
    - #279 PR by @nvtkaszpir.
- Fix `AttributeError` in `check-builtin-literals` for some functions
    - #285 issue by @EgoWumpus.
    - #286 PR by @asottile.

1.2.3 - 2018-02-28
==================

### Fixes
- `trailing-whitespace` entrypoint was incorrect.
    - f6780b9 by @asottile.

1.2.2 - 2018-02-28
==================

### Fixes
- `trailing-whitespace` no longer adds a missing newline at end-of-file
    - #270 issue by @fractos.
    - #271 PR by @asottile.

1.2.1-1 - 2018-02-24
====================

(Note: this is a tag-only release as no code changes occurred)

### Fixes:
- Don't pass filenames for `no-commit-to-branch`
    - #268 issue by @dongyuzheng.
    - #269 PR by @asottile.

1.2.1 - 2018-02-19
==================
### Fixes:
- `detect-aws-credentials` false positive when key was empty
    - #258 issue by @PVSec.
    - #260 PR by @PVSec.
- `no-commit-to-branch` no longer crashes when not on a branch
    - #265 issue by @hectorv.
    - #266 PR by @asottile.

1.2.0 - 2018-01-13
==================
### Features:
- Add new `check-builtin-literals` hook.
    - #249 #251 PR by @benwebber.
- `pretty-format-json` no longer depends on `simplejson`.
    - #254 PR by @cas--.
- `detect-private-key` now detects gcp keys.
    - #255 issue by @SaMnCo @nicain.
    - #256 PR by @nicain.

1.1.1 - 2017-10-19
==================
### Fixes:
- Fix output interleaving in `check-vcs-permalinks` under python3.
    - #245 PR by @asottile.

1.1.0 - 2017-10-12
==================
### Features:
- `check-yaml` gains a `--allow-multiple-documents` (`-m`) argument to allow
  linting of files using the
  [multi document syntax](http://www.yaml.org/spec/1.2/spec.html#YAML)
    - pre-commit/pre-commit#635 issue by @geekobi.
    - #244 PR by @asottile.

1.0.0 - 2017-10-09
==================
### Features:
- New hook: `check-vcs-permalinks` for ensuring permalinked github urls.
    - #241 PR by @asottile.

### Fixes:
- Fix `trailing-whitespace` for non-utf8 files on macos
    - #242 PR by @asottile.
- Fix `requirements-txt-fixer` for files ending in comments
    - #243 PR by @asottile.

0.9.5 - 2017-09-27
==================
- Fix mixed-line-endings `--fix=...` when whole file is a different ending

0.9.4 - 2017-09-19
==================
- Fix entry point for `mixed-line-ending`

0.9.3 - 2017-09-07
==================
- New hook: `mixed-line-ending`

0.9.2 - 2017-08-21
==================
- Report full python version in `check-ast`.
- Apply a more strict regular expression for `name-tests-test`
- Upgrade binding for `git-lfs` for `check-added-large-files`.  The oldest
  version that is supported is 2.2.1 (2.2.0 will incorrectly refer to all
  files as "lfs" (false negative) and earlier versions will crash.
- `debug-statements` now works for non-utf-8 files.

0.9.1 - 2017-07-02
==================
- Add `check-executables-have-shebangs` hook.

0.9.0 - 2017-07-02
==================
- Add `sort-simple-yaml` hook
- Fix `requirements-txt-fixer` for empty files
- Add `file-contents-sorter` hook for sorting flat files
- `check-merge-conflict` now recognizes rebase conflicts
- Metadata now uses `types` (and therefore requires pre-commit 0.15.0).  This
  allows the text processing hooks to match *all* text files (and to match
  files which would only be classifiable by their shebangs).

0.8.0 - 2017-06-06
==================
- Add flag allowing missing keys to `detect-aws-credentials`
- Handle django default `tests.py` in `name-tests-test`
- Add `--no-ensure-ascii` option to `pretty-format-json`
- Add `no-commit-to-branch` hook

0.7.1 - 2017-02-07
==================
- Don't false positive on files where trailing whitespace isn't changed.

0.7.0 - 2017-01-21
==================
- Improve search for detecting aws keys
- Add .pre-commit-hooks.yaml for forward compatibility

0.6.1 - 2016-11-30
==================
- trailing-whitespace-hook: restore original file on catastrophic failure
- trailing-whitespace-hook: support crlf
- check-yaml: Use safe_load
- check-json: allow custom key sort
- check-json: display filename for non-utf8 files
- New hook: forbid-new-submodules

0.6.0 - 2016-08-12
==================
- Merge conflict detection no longer crashes on binary files
- Indentation in json may be an arbitrary separator
- Editable requirements are properly sorted
- Encoding pragma fixer pragma is configurable

0.5.1 - 2016-05-16
==================
- Add a --no-sort-keys to json pretty formatter
- Add a --remove to fix-encoding-pragma

0.5.0 - 2016-04-05
==================
- Add check-byte-order-marker
- Add check-synlinks
- check-large-files-added understands git-lfs
- Support older git
- Fix regex for --django in test name checker
- Add fix-encoding-pragma hook
- requirements-txt-fixer now sorts like latest pip
- Add check-ast hook
- Add detect-aws-credentials hook
- Allow binary files to pass private key hook
- Add pretty-format-json hook

0.4.2 - 2015-05-31
==================
- Add --django to test name checker
- Add check-merge-conflict hook
- Remove dependency on plumbum
- Add q as a debug statement
- Don't detect markup titles as conflicts
- Teach trailing-whitespace about markdown
- Quickfix for pyflakes - flake8 version conflict

0.4.1 - 2015-03-08
==================
- Respect configuration when running autopep8
- Quickfix for pep8 version conflicts

0.4.0 - 2015-02-22
==================
- Fix trailing-whitespace on OS X
- Add check-added-large-files hook
- Add check-docstring-first hook
- Add requirements-txt-fixer hook
- Add check-case-conflict hook
- Use yaml's CLoader when available in check-yaml for more speed
- Add check-xml hook
- Fix end-of-file-fixer for windows
- Add double-quote-string-fixer hook

0.3.0 - 2014-08-22
==================
- Add autopep8-wrapper hook

0.2.0 - 2014-08-19
==================
- Add check-json hook

0.1.1 - 2014-06-19
==================
- Don't crash on non-parseable files for debug-statement-hook

0.1.0 - 2014-06-07
==================
- Initial Release
