mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-11 05:44:16 +00:00
Adds a special case for index urls similar to how comments are captured. This should avoid breaking ordering when --index-url (-i) and/or --extra-index-url are used. Also adds a relevant test to cover this case. Closes #612.
This commit is contained in:
parent
4dcb74a498
commit
87001a2778
2 changed files with 33 additions and 0 deletions
|
|
@ -17,6 +17,7 @@ class Requirement:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.value: bytes | None = None
|
self.value: bytes | None = None
|
||||||
self.comments: list[bytes] = []
|
self.comments: list[bytes] = []
|
||||||
|
self.index_urls: list[bytes] = []
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self) -> bytes:
|
def name(self) -> bytes:
|
||||||
|
|
@ -64,6 +65,8 @@ def fix_requirements(f: IO[bytes]) -> int:
|
||||||
requirements: list[Requirement] = []
|
requirements: list[Requirement] = []
|
||||||
before = list(f)
|
before = list(f)
|
||||||
after: list[bytes] = []
|
after: list[bytes] = []
|
||||||
|
index_options: list[bytes] = []
|
||||||
|
extra_index_options: list[bytes] = []
|
||||||
|
|
||||||
before_string = b''.join(before)
|
before_string = b''.join(before)
|
||||||
|
|
||||||
|
|
@ -97,6 +100,13 @@ def fix_requirements(f: IO[bytes]) -> int:
|
||||||
requirement.comments.append(line)
|
requirement.comments.append(line)
|
||||||
elif line.lstrip().startswith(b'#') or line.strip() == b'':
|
elif line.lstrip().startswith(b'#') or line.strip() == b'':
|
||||||
requirement.comments.append(line)
|
requirement.comments.append(line)
|
||||||
|
elif (
|
||||||
|
line.lstrip().startswith(b'-i ') or
|
||||||
|
line.lstrip().startswith(b'--index-url')
|
||||||
|
):
|
||||||
|
index_options.append(line)
|
||||||
|
elif line.lstrip().startswith(b'--extra-index-url'):
|
||||||
|
extra_index_options.append(line)
|
||||||
else:
|
else:
|
||||||
requirement.append_value(line)
|
requirement.append_value(line)
|
||||||
|
|
||||||
|
|
@ -113,6 +123,8 @@ def fix_requirements(f: IO[bytes]) -> int:
|
||||||
if req.value != b'pkg-resources==0.0.0\n'
|
if req.value != b'pkg-resources==0.0.0\n'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
after.extend(index_options)
|
||||||
|
after.extend(extra_index_options)
|
||||||
for requirement in sorted(requirements):
|
for requirement in sorted(requirements):
|
||||||
after.extend(requirement.comments)
|
after.extend(requirement.comments)
|
||||||
assert requirement.value, requirement.value
|
assert requirement.value, requirement.value
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,27 @@ from pre_commit_hooks.requirements_txt_fixer import Requirement
|
||||||
PASS,
|
PASS,
|
||||||
b'a=2.0.0 \\\n --hash=sha256:abcd\nb==1.0.0\n',
|
b'a=2.0.0 \\\n --hash=sha256:abcd\nb==1.0.0\n',
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
b'# Bar\n'
|
||||||
|
b'--extra-index-url http://dist.repoze.org/zope2/2.10/simple\n'
|
||||||
|
b'zopelib2\n'
|
||||||
|
b'# Foo\n'
|
||||||
|
b'-i http://dist.repoze.org/zope2/2.10/simple\n'
|
||||||
|
b'zopelib1\n'
|
||||||
|
b'# Baz\n'
|
||||||
|
b'--index-url http://dist.repoze.org/zope2/2.10/simple\n'
|
||||||
|
b'zopelib3',
|
||||||
|
FAIL,
|
||||||
|
b'-i http://dist.repoze.org/zope2/2.10/simple\n'
|
||||||
|
b'--index-url http://dist.repoze.org/zope2/2.10/simple\n'
|
||||||
|
b'--extra-index-url http://dist.repoze.org/zope2/2.10/simple\n'
|
||||||
|
b'# Foo\n'
|
||||||
|
b'zopelib1\n'
|
||||||
|
b'# Bar\n'
|
||||||
|
b'zopelib2\n'
|
||||||
|
b'# Baz\n'
|
||||||
|
b'zopelib3\n',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
def test_integration(input_s, expected_retval, output, tmpdir):
|
def test_integration(input_s, expected_retval, output, tmpdir):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue