mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-10 05:14:18 +00:00
fix(requirements-txt-fixer): keep --index-url before --extra-index-url
This commit is contained in:
parent
f1dff44d3a
commit
918dc64fe7
2 changed files with 20 additions and 1 deletions
|
|
@ -13,6 +13,10 @@ FAIL = 1
|
||||||
class Requirement:
|
class Requirement:
|
||||||
UNTIL_COMPARISON = re.compile(b'={2,3}|!=|~=|>=?|<=?')
|
UNTIL_COMPARISON = re.compile(b'={2,3}|!=|~=|>=?|<=?')
|
||||||
UNTIL_SEP = re.compile(rb'[^;\s]+')
|
UNTIL_SEP = re.compile(rb'[^;\s]+')
|
||||||
|
_SPECIAL_ORDER = {
|
||||||
|
b'--index-url': 0,
|
||||||
|
b'--extra-index-url': 1,
|
||||||
|
}
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.value: bytes | None = None
|
self.value: bytes | None = None
|
||||||
|
|
@ -50,7 +54,13 @@ class Requirement:
|
||||||
# with comments is kept)
|
# with comments is kept)
|
||||||
if self.name == requirement.name:
|
if self.name == requirement.name:
|
||||||
return bool(self.comments) > bool(requirement.comments)
|
return bool(self.comments) > bool(requirement.comments)
|
||||||
return self.name < requirement.name
|
return (
|
||||||
|
self._SPECIAL_ORDER.get(self.name, 2),
|
||||||
|
self.name,
|
||||||
|
) < (
|
||||||
|
self._SPECIAL_ORDER.get(requirement.name, 2),
|
||||||
|
requirement.name,
|
||||||
|
)
|
||||||
|
|
||||||
def is_complete(self) -> bool:
|
def is_complete(self) -> bool:
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -107,6 +107,15 @@ 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'--extra-index-url https://example.com/simple\n'
|
||||||
|
b'--index-url https://pypi.org/simple\n'
|
||||||
|
b'requests\n',
|
||||||
|
FAIL,
|
||||||
|
b'--index-url https://pypi.org/simple\n'
|
||||||
|
b'--extra-index-url https://example.com/simple\n'
|
||||||
|
b'requests\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