Sync fork (#1)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/setup-cfg-fmt: v2.1.0 → v2.2.0](https://github.com/asottile/setup-cfg-fmt/compare/v2.1.0...v2.2.0)
- [github.com/asottile/reorder_python_imports: v3.8.5 → v3.9.0](https://github.com/asottile/reorder_python_imports/compare/v3.8.5...v3.9.0)
- [github.com/asottile/pyupgrade: v3.1.0 → v3.2.0](https://github.com/asottile/pyupgrade/compare/v3.1.0...v3.2.0)
- [github.com/pre-commit/mirrors-autopep8: v1.7.0 → v2.0.0](https://github.com/pre-commit/mirrors-autopep8/compare/v1.7.0...v2.0.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/pyupgrade: v3.2.0 → v3.2.2](https://github.com/asottile/pyupgrade/compare/v3.2.0...v3.2.2)
- [github.com/pre-commit/mirrors-mypy: v0.982 → v0.990](https://github.com/pre-commit/mirrors-mypy/compare/v0.982...v0.990)

* remove no_implicit_optional

this is the default in mypy 0.990

Committed via https://github.com/asottile/all-repos

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v0.990 → v0.991](https://github.com/pre-commit/mirrors-mypy/compare/v0.990...v0.991)

* v4.4.0

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/PyCQA/flake8: 5.0.4 → 6.0.0](https://github.com/PyCQA/flake8/compare/5.0.4...6.0.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/pyupgrade: v3.2.2 → v3.3.0](https://github.com/asottile/pyupgrade/compare/v3.2.2...v3.3.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/add-trailing-comma: v2.3.0 → v2.4.0](https://github.com/asottile/add-trailing-comma/compare/v2.3.0...v2.4.0)
- [github.com/asottile/pyupgrade: v3.3.0 → v3.3.1](https://github.com/asottile/pyupgrade/compare/v3.3.0...v3.3.1)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-autopep8: v2.0.0 → v2.0.1](https://github.com/pre-commit/mirrors-autopep8/compare/v2.0.0...v2.0.1)

* azure pipelines -> github actions

* add constraints file to requirements-txt-fixer files

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v0.991 → v1.0.0](https://github.com/pre-commit/mirrors-mypy/compare/v0.991...v1.0.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.0.0 → v1.0.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.0.0...v1.0.1)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-autopep8: v2.0.1 → v2.0.2](https://github.com/pre-commit/mirrors-autopep8/compare/v2.0.1...v2.0.2)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.0.1 → v1.1.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.0.1...v1.1.1)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.1.1 → v1.2.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.1.1...v1.2.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/pyupgrade: v3.3.1 → v3.3.2](https://github.com/asottile/pyupgrade/compare/v3.3.1...v3.3.2)

* [pre-commit.ci] pre-commit autoupdate

updates:
- https://github.com/asottile/reorder_python_importshttps://github.com/asottile/reorder-python-imports
- [github.com/asottile/pyupgrade: v3.3.2 → v3.4.0](https://github.com/asottile/pyupgrade/compare/v3.3.2...v3.4.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.2.0 → v1.3.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.2.0...v1.3.0)

* fix tags trigger for github actions

the old syntax worked for azure pipelines but not GHA

Committed via https://github.com/asottile/all-repos

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/setup-cfg-fmt: v2.2.0 → v2.3.0](https://github.com/asottile/setup-cfg-fmt/compare/v2.2.0...v2.3.0)

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/add-trailing-comma: v2.4.0 → v2.5.1](https://github.com/asottile/add-trailing-comma/compare/v2.4.0...v2.5.1)
- [github.com/asottile/pyupgrade: v3.4.0 → v3.6.0](https://github.com/asottile/pyupgrade/compare/v3.4.0...v3.6.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/reorder-python-imports: v3.9.0 → v3.10.0](https://github.com/asottile/reorder-python-imports/compare/v3.9.0...v3.10.0)
- [github.com/asottile/pyupgrade: v3.6.0 → v3.7.0](https://github.com/asottile/pyupgrade/compare/v3.6.0...v3.7.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.3.0 → v1.4.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.3.0...v1.4.1)

* py38-plus

Committed via https://github.com/asottile/all-repos

* shlex.join is always available in 3.8+

* Fix missing file-contents-sorter options in the README

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/pyupgrade: v3.8.0 → v3.9.0](https://github.com/asottile/pyupgrade/compare/v3.8.0...v3.9.0)

* Fix a typo in check_yaml

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/add-trailing-comma: v3.0.0 → v3.0.1](https://github.com/asottile/add-trailing-comma/compare/v3.0.0...v3.0.1)
- [github.com/asottile/pyupgrade: v3.9.0 → v3.10.1](https://github.com/asottile/pyupgrade/compare/v3.9.0...v3.10.1)
- [github.com/PyCQA/flake8: 6.0.0 → 6.1.0](https://github.com/PyCQA/flake8/compare/6.0.0...6.1.0)

* Add bpdb to debug_statements_hook

This patch adds the bpython debugger import `bpdb` to the
debug_statements_hook.

* Fix blank lines

As stated in the documentation: `Note that this hook WILL remove blank lines`
Previously this hook would always add blank a blank line.

With this fix, if the file is empty, a newline will not be added, and multpline blanklines in a file will be removed.

Fixes #935

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.4.1 → v1.5.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.4.1...v1.5.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.5.0 → v1.5.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.5.0...v1.5.1)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-autopep8: v2.0.2 → v2.0.4](https://github.com/pre-commit/mirrors-autopep8/compare/v2.0.2...v2.0.4)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/add-trailing-comma: v3.0.1 → v3.1.0](https://github.com/asottile/add-trailing-comma/compare/v3.0.1...v3.1.0)
- https://github.com/pre-commit/mirrors-autopep8https://github.com/hhatto/autopep8

* Document newline behavior of `file-contents-sorter`

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/reorder-python-imports: v3.10.0 → v3.11.0](https://github.com/asottile/reorder-python-imports/compare/v3.10.0...v3.11.0)
- [github.com/asottile/pyupgrade: v3.10.1 → v3.11.0](https://github.com/asottile/pyupgrade/compare/v3.10.1...v3.11.0)

* Remove redundant int() conversion

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/pyupgrade: v3.11.0 → v3.13.0](https://github.com/asottile/pyupgrade/compare/v3.11.0...v3.13.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/setup-cfg-fmt: v2.4.0 → v2.5.0](https://github.com/asottile/setup-cfg-fmt/compare/v2.4.0...v2.5.0)
- [github.com/asottile/reorder-python-imports: v3.11.0 → v3.12.0](https://github.com/asottile/reorder-python-imports/compare/v3.11.0...v3.12.0)
- [github.com/asottile/pyupgrade: v3.13.0 → v3.14.0](https://github.com/asottile/pyupgrade/compare/v3.13.0...v3.14.0)

* don't rewrite string quotes inside f-strings

* v4.5.0

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/asottile/pyupgrade: v3.14.0 → v3.15.0](https://github.com/asottile/pyupgrade/compare/v3.14.0...v3.15.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.5.1 → v1.6.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.5.1...v1.6.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.6.0 → v1.6.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.6.0...v1.6.1)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.6.1 → v1.7.0](https://github.com/pre-commit/mirrors-mypy/compare/v1.6.1...v1.7.0)

* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/pre-commit/mirrors-mypy: v1.7.0 → v1.7.1](https://github.com/pre-commit/mirrors-mypy/compare/v1.7.0...v1.7.1)

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Anthony Sottile <asottile@umich.edu>
Co-authored-by: Lev Blit <levblt1@gmail.com>
Co-authored-by: Abel Soares Siqueira <abel.s.siqueira@gmail.com>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
Co-authored-by: mwip <matthias.weigand@protonmail.com>
Co-authored-by: Roel Adriaans <roel@adriaans.org>
Co-authored-by: Max R <mxr@users.noreply.github.com>
Co-authored-by: Mészáros Gergely <maetveis@gmail.com>
Co-authored-by: Miroslav Šedivý <6774676+eumiro@users.noreply.github.com>
This commit is contained in:
Douglas Eichelberger 2023-12-18 12:06:00 -08:00 committed by GitHub
parent 4dcb74a498
commit 887db502c6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 109 additions and 62 deletions

19
.github/workflows/main.yml vendored Normal file
View file

@ -0,0 +1,19 @@
name: main
on:
push:
branches: [main, test-me-*]
tags: '*'
pull_request:
jobs:
main-windows:
uses: asottile/workflows/.github/workflows/tox.yml@v1.5.0
with:
env: '["py38"]'
os: windows-latest
main-linux:
uses: asottile/workflows/.github/workflows/tox.yml@v1.5.0
with:
env: '["py38", "py39", "py310", "py311"]'
os: ubuntu-latest

View file

@ -1,6 +1,6 @@
repos: repos:
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0 rev: v4.5.0
hooks: hooks:
- id: trailing-whitespace - id: trailing-whitespace
- id: end-of-file-fixer - id: end-of-file-fixer
@ -10,34 +10,33 @@ repos:
- id: name-tests-test - id: name-tests-test
- id: requirements-txt-fixer - id: requirements-txt-fixer
- repo: https://github.com/asottile/setup-cfg-fmt - repo: https://github.com/asottile/setup-cfg-fmt
rev: v2.1.0 rev: v2.5.0
hooks: hooks:
- id: setup-cfg-fmt - id: setup-cfg-fmt
- repo: https://github.com/asottile/reorder_python_imports - repo: https://github.com/asottile/reorder-python-imports
rev: v3.8.5 rev: v3.12.0
hooks: hooks:
- id: reorder-python-imports - id: reorder-python-imports
args: [--py37-plus, --add-import, 'from __future__ import annotations'] args: [--py38-plus, --add-import, 'from __future__ import annotations']
- repo: https://github.com/asottile/add-trailing-comma - repo: https://github.com/asottile/add-trailing-comma
rev: v2.3.0
hooks:
- id: add-trailing-comma
args: [--py36-plus]
- repo: https://github.com/asottile/pyupgrade
rev: v3.1.0 rev: v3.1.0
hooks: hooks:
- id: add-trailing-comma
- repo: https://github.com/asottile/pyupgrade
rev: v3.15.0
hooks:
- id: pyupgrade - id: pyupgrade
args: [--py37-plus] args: [--py38-plus]
- repo: https://github.com/pre-commit/mirrors-autopep8 - repo: https://github.com/hhatto/autopep8
rev: v1.7.0 rev: v2.0.4
hooks: hooks:
- id: autopep8 - id: autopep8
- repo: https://github.com/PyCQA/flake8 - repo: https://github.com/PyCQA/flake8
rev: 5.0.4 rev: 6.1.0
hooks: hooks:
- id: flake8 - id: flake8
- repo: https://github.com/pre-commit/mirrors-mypy - repo: https://github.com/pre-commit/mirrors-mypy
rev: v0.982 rev: v1.7.1
hooks: hooks:
- id: mypy - id: mypy
additional_dependencies: [types-all] additional_dependencies: [types-all]

View file

@ -185,7 +185,7 @@
description: sorts entries in requirements.txt. description: sorts entries in requirements.txt.
entry: requirements-txt-fixer entry: requirements-txt-fixer
language: python language: python
files: requirements.*\.txt$ files: (requirements|constraints).*\.txt$
- id: sort-simple-yaml - id: sort-simple-yaml
name: sort simple yaml files name: sort simple yaml files
description: sorts simple yaml files which consist only of top-level keys, preserving comments and blocks. description: sorts simple yaml files which consist only of top-level keys, preserving comments and blocks.

View file

@ -1,3 +1,35 @@
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 4.3.0 - 2022-06-07
================== ==================

View file

@ -1,5 +1,4 @@
[![Build Status](https://asottile.visualstudio.com/asottile/_apis/build/status/pre-commit.pre-commit-hooks?branchName=main)](https://asottile.visualstudio.com/asottile/_build/latest?definitionId=17&branchName=main) [![build status](https://github.com/pre-commit/pre-commit-hooks/actions/workflows/main.yml/badge.svg)](https://github.com/pre-commit/pre-commit-hooks/actions/workflows/main.yml)
[![Azure DevOps coverage](https://img.shields.io/azure-devops/coverage/asottile/asottile/17/main.svg)](https://dev.azure.com/asottile/asottile/_build/latest?definitionId=17&branchName=main)
[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pre-commit/pre-commit-hooks/main.svg)](https://results.pre-commit.ci/latest/github/pre-commit/pre-commit-hooks/main) [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pre-commit/pre-commit-hooks/main.svg)](https://results.pre-commit.ci/latest/github/pre-commit/pre-commit-hooks/main)
pre-commit-hooks pre-commit-hooks
@ -16,7 +15,7 @@ Add this to your `.pre-commit-config.yaml`
```yaml ```yaml
- repo: https://github.com/pre-commit/pre-commit-hooks - repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0 # Use the ref you want to point at rev: v4.5.0 # Use the ref you want to point at
hooks: hooks:
- id: trailing-whitespace - id: trailing-whitespace
# - id: ... # - id: ...
@ -118,6 +117,11 @@ Makes sure files end in a newline and only a newline.
Sort the lines in specified files (defaults to alphabetical). Sort the lines in specified files (defaults to alphabetical).
You must provide the target [`files`](https://pre-commit.com/#config-files) as input. You must provide the target [`files`](https://pre-commit.com/#config-files) as input.
Note that this hook WILL remove blank lines and does NOT respect any comments. Note that this hook WILL remove blank lines and does NOT respect any comments.
All newlines will be converted to line feeds (`\n`).
The following arguments are available:
- `--ignore-case` - fold lower case to upper case characters.
- `--unique` - ensure each line is unique.
#### `fix-byte-order-marker` #### `fix-byte-order-marker`
removes UTF-8 byte order marker removes UTF-8 byte order marker
@ -126,10 +130,6 @@ removes UTF-8 byte order marker
Add `# -*- coding: utf-8 -*-` to the top of python files. Add `# -*- coding: utf-8 -*-` to the top of python files.
- To remove the coding pragma pass `--remove` (useful in a python3-only codebase) - To remove the coding pragma pass `--remove` (useful in a python3-only codebase)
The following arguments are available:
- `--ignore-case` - fold lower case to upper case characters.
- `--unique` - ensure each line is unique.
#### `forbid-new-submodules` #### `forbid-new-submodules`
Prevent addition of new git submodules. Prevent addition of new git submodules.
@ -180,7 +180,7 @@ the following commandline options:
- `--top-keys comma,separated,keys` - Keys to keep at the top of mappings. - `--top-keys comma,separated,keys` - Keys to keep at the top of mappings.
#### `requirements-txt-fixer` #### `requirements-txt-fixer`
Sorts entries in requirements.txt and removes incorrect entry for `pkg-resources==0.0.0` Sorts entries in requirements.txt and constraints.txt and removes incorrect entry for `pkg-resources==0.0.0`
#### `sort-simple-yaml` #### `sort-simple-yaml`
Sorts simple YAML files which consist only of top-level Sorts simple YAML files which consist only of top-level

View file

@ -1,23 +0,0 @@
trigger:
branches:
include: [main, test-me-*]
tags:
include: ['*']
resources:
repositories:
- repository: asottile
type: github
endpoint: github
name: asottile/azure-pipeline-templates
ref: refs/tags/v2.4.0
jobs:
- template: job--python-tox.yml@asottile
parameters:
toxenvs: [py38]
os: windows
- template: job--python-tox.yml@asottile
parameters:
toxenvs: [py37, py38, py39, py310]
os: linux

View file

@ -46,7 +46,7 @@ def find_large_added_files(
filenames_filtered &= added_files() filenames_filtered &= added_files()
for filename in filenames_filtered: for filename in filenames_filtered:
kb = int(math.ceil(os.stat(filename).st_size / 1024)) kb = math.ceil(os.stat(filename).st_size / 1024)
if kb > maxkb: if kb > maxkb:
print(f'{filename} ({kb} KB) exceeds {maxkb} KB.') print(f'{filename} ({kb} KB) exceeds {maxkb} KB.')
retv = 1 retv = 1

View file

@ -46,7 +46,7 @@ def main(argv: Sequence[str] | None = None) -> int:
'--unsafe', action='store_true', '--unsafe', action='store_true',
help=( help=(
'Instead of loading the files, simply parse them for syntax. ' 'Instead of loading the files, simply parse them for syntax. '
'A syntax-only check enables extensions and unsafe contstructs ' 'A syntax-only check enables extensions and unsafe constructs '
'which would otherwise be forbidden. Using this option removes ' 'which would otherwise be forbidden. Using this option removes '
'all guarantees of portability to other yaml implementations. ' 'all guarantees of portability to other yaml implementations. '
'Implies --allow-multiple-documents' 'Implies --allow-multiple-documents'

View file

@ -8,6 +8,7 @@ from typing import Sequence
DEBUG_STATEMENTS = { DEBUG_STATEMENTS = {
'bpdb',
'ipdb', 'ipdb',
'pdb', 'pdb',
'pdbr', 'pdbr',

View file

@ -76,11 +76,7 @@ def main(argv: Sequence[str] | None = None) -> int:
for destroyed_link in destroyed_links: for destroyed_link in destroyed_links:
print(f'- {destroyed_link}') print(f'- {destroyed_link}')
print('You should unstage affected files:') print('You should unstage affected files:')
print( print(f'\tgit reset HEAD -- {shlex.join(destroyed_links)}')
'\tgit reset HEAD -- {}'.format(
' '.join(shlex.quote(link) for link in destroyed_links),
),
)
print( print(
'And retry commit. As a long term solution ' 'And retry commit. As a long term solution '
'you may try to explicitly tell git that your ' 'you may try to explicitly tell git that your '

View file

@ -37,7 +37,10 @@ def sort_file_contents(
after = sorted(lines, key=key) after = sorted(lines, key=key)
before_string = b''.join(before) before_string = b''.join(before)
after_string = b'\n'.join(after) + b'\n' after_string = b'\n'.join(after)
if after_string:
after_string += b'\n'
if before_string == after_string: if before_string == after_string:
return PASS return PASS

View file

@ -3,9 +3,16 @@ from __future__ import annotations
import argparse import argparse
import io import io
import re import re
import sys
import tokenize import tokenize
from typing import Sequence from typing import Sequence
if sys.version_info >= (3, 12): # pragma: >=3.12 cover
FSTRING_START = tokenize.FSTRING_START
FSTRING_END = tokenize.FSTRING_END
else: # pragma: <3.12 cover
FSTRING_START = FSTRING_END = -1
START_QUOTE_RE = re.compile('^[a-zA-Z]*"') START_QUOTE_RE = re.compile('^[a-zA-Z]*"')
@ -40,11 +47,17 @@ def fix_strings(filename: str) -> int:
# Basically a mutable string # Basically a mutable string
splitcontents = list(contents) splitcontents = list(contents)
fstring_depth = 0
# Iterate in reverse so the offsets are always correct # Iterate in reverse so the offsets are always correct
tokens_l = list(tokenize.generate_tokens(io.StringIO(contents).readline)) tokens_l = list(tokenize.generate_tokens(io.StringIO(contents).readline))
tokens = reversed(tokens_l) tokens = reversed(tokens_l)
for token_type, token_text, (srow, scol), (erow, ecol), _ in tokens: for token_type, token_text, (srow, scol), (erow, ecol), _ in tokens:
if token_type == tokenize.STRING: if token_type == FSTRING_START: # pragma: >=3.12 cover
fstring_depth += 1
elif token_type == FSTRING_END: # pragma: >=3.12 cover
fstring_depth -= 1
elif fstring_depth == 0 and token_type == tokenize.STRING:
new_text = handle_match(token_text) new_text = handle_match(token_text)
splitcontents[ splitcontents[
line_offsets[srow] + scol: line_offsets[srow] + scol:

View file

@ -1,6 +1,6 @@
[metadata] [metadata]
name = pre_commit_hooks name = pre_commit_hooks
version = 4.3.0 version = 4.5.0
description = Some out-of-the-box hooks for pre-commit. description = Some out-of-the-box hooks for pre-commit.
long_description = file: README.md long_description = file: README.md
long_description_content_type = text/markdown long_description_content_type = text/markdown
@ -8,7 +8,7 @@ url = https://github.com/pre-commit/pre-commit-hooks
author = Anthony Sottile author = Anthony Sottile
author_email = asottile@umich.edu author_email = asottile@umich.edu
license = MIT license = MIT
license_file = LICENSE license_files = LICENSE
classifiers = classifiers =
License :: OSI Approved :: MIT License License :: OSI Approved :: MIT License
Programming Language :: Python :: 3 Programming Language :: Python :: 3
@ -21,7 +21,7 @@ packages = find:
install_requires = install_requires =
ruamel.yaml>=0.15 ruamel.yaml>=0.15
tomli>=1.1.0;python_version<"3.11" tomli>=1.1.0;python_version<"3.11"
python_requires = >=3.7 python_requires = >=3.8
[options.packages.find] [options.packages.find]
exclude = exclude =
@ -75,7 +75,6 @@ check_untyped_defs = true
disallow_any_generics = true disallow_any_generics = true
disallow_incomplete_defs = true disallow_incomplete_defs = true
disallow_untyped_defs = true disallow_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true warn_redundant_casts = true
warn_unused_ignores = true warn_unused_ignores = true

View file

@ -10,7 +10,9 @@ from pre_commit_hooks.file_contents_sorter import PASS
@pytest.mark.parametrize( @pytest.mark.parametrize(
('input_s', 'argv', 'expected_retval', 'output'), ('input_s', 'argv', 'expected_retval', 'output'),
( (
(b'', [], FAIL, b'\n'), (b'', [], PASS, b''),
(b'\n', [], FAIL, b''),
(b'\n\n', [], FAIL, b''),
(b'lonesome\n', [], PASS, b'lonesome\n'), (b'lonesome\n', [], PASS, b'lonesome\n'),
(b'missing_newline', [], FAIL, b'missing_newline\n'), (b'missing_newline', [], FAIL, b'missing_newline\n'),
(b'newline\nmissing', [], FAIL, b'missing\nnewline\n'), (b'newline\nmissing', [], FAIL, b'missing\nnewline\n'),

View file

@ -37,6 +37,12 @@ TESTS = (
1, 1,
), ),
('"foo""bar"', "'foo''bar'", 1), ('"foo""bar"', "'foo''bar'", 1),
pytest.param(
"f'hello{\"world\"}'",
"f'hello{\"world\"}'",
0,
id='ignore nested fstrings',
),
) )

View file

@ -1,5 +1,5 @@
[tox] [tox]
envlist = py37,py38,pypy3,pre-commit envlist = py,pre-commit
[testenv] [testenv]
deps = -rrequirements-dev.txt deps = -rrequirements-dev.txt