Use Iterable[str] instead of Sequence[str] for argv parameters

argparse.ArgumentParser.parse_args() accepts any Iterable[str], not
just Sequence[str]. The latest typeshed reflects this with the signature
`def parse_args(args: Iterable[str] | None = ...) -> Namespace`.

Update all main(argv:) parameters from `Sequence[str] | None` to
`Iterable[str] | None` and adjust imports accordingly.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
default 2026-05-04 07:45:29 +00:00
parent 803469bde8
commit e514e01ee5
31 changed files with 62 additions and 62 deletions

View file

@ -4,7 +4,7 @@ import argparse
import math
import os
import subprocess
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from pre_commit_hooks.util import added_files
from pre_commit_hooks.util import zsplit
@ -54,7 +54,7 @@ def find_large_added_files(
return retv
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'filenames', nargs='*',

View file

@ -5,10 +5,10 @@ import ast
import platform
import sys
import traceback
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import ast
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import NamedTuple
@ -70,7 +70,7 @@ def parse_ignore(value: str) -> set[str]:
return set(value.split(','))
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
parser.add_argument('--ignore', type=parse_ignore, default=set())

View file

@ -3,7 +3,7 @@ from __future__ import annotations
import argparse
from collections.abc import Iterable
from collections.abc import Iterator
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from pre_commit_hooks.util import added_files
from pre_commit_hooks.util import cmd_output
@ -56,7 +56,7 @@ def find_conflicting_filenames(filenames: Sequence[str]) -> int:
return retv
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'filenames', nargs='*',

View file

@ -3,7 +3,7 @@ from __future__ import annotations
import argparse
import io
import tokenize
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from tokenize import tokenize as tokenize_tokenize
NON_CODE_TOKENS = frozenset((
@ -46,7 +46,7 @@ def check_docstring_first(src: bytes, filename: str = '<unknown>') -> int:
return 0
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv)

View file

@ -5,7 +5,7 @@ import argparse
import shlex
import sys
from collections.abc import Generator
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import NamedTuple
from pre_commit_hooks.util import cmd_output
@ -73,7 +73,7 @@ def _message(path: str) -> None:
)
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import json
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import Any
@ -18,7 +18,7 @@ def raise_duplicate_keys(
return d
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check.')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import os.path
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from pre_commit_hooks.util import cmd_output
@ -28,7 +28,7 @@ def is_in_merge() -> bool:
)
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
parser.add_argument('--assume-in-merge', action='store_true')

View file

@ -4,7 +4,7 @@ from __future__ import annotations
import argparse
import shlex
import sys
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from pre_commit_hooks.check_executables_have_shebangs import EXECUTABLE_VALUES
from pre_commit_hooks.check_executables_have_shebangs import git_ls_files
@ -42,7 +42,7 @@ def _message(path: str) -> None:
)
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv)

View file

@ -2,10 +2,10 @@ from __future__ import annotations
import argparse
import os.path
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser(description='Checks for broken symlinks.')
parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import sys
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
if sys.version_info >= (3, 11): # pragma: >=3.11 cover
import tomllib
@ -10,7 +10,7 @@ else: # pragma: <3.11 cover
import tomli as tomllib
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check.')
args = parser.parse_args(argv)

View file

@ -3,7 +3,7 @@ from __future__ import annotations
import argparse
import re
import sys
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from re import Pattern
@ -28,7 +28,7 @@ def _check_filename(filename: str, patterns: list[Pattern[bytes]]) -> int:
return retv
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
parser.add_argument(

View file

@ -2,10 +2,10 @@ from __future__ import annotations
import argparse
import xml.sax.handler
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='XML filenames to check.')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
from collections.abc import Generator
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import Any
from typing import NamedTuple
@ -37,7 +37,7 @@ LOAD_FNS = {
}
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'-m', '--multi', '--allow-multiple-documents', action='store_true',

View file

@ -3,7 +3,7 @@ from __future__ import annotations
import argparse
import ast
import traceback
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import NamedTuple
@ -71,7 +71,7 @@ def check_file(filename: str) -> int:
return int(bool(visitor.breakpoints))
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to run')
args = parser.parse_args(argv)

View file

@ -3,7 +3,7 @@ from __future__ import annotations
import argparse
import shlex
import subprocess
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from pre_commit_hooks.util import cmd_output
from pre_commit_hooks.util import zsplit
@ -66,7 +66,7 @@ def find_destroyed_symlinks(files: Sequence[str]) -> list[str]:
return destroyed_links
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check.')
args = parser.parse_args(argv)

View file

@ -3,7 +3,7 @@ from __future__ import annotations
import argparse
import configparser
import os
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import NamedTuple
@ -89,7 +89,7 @@ def check_file_for_aws_keys(
return bad_files
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='+', help='Filenames to run')
parser.add_argument(

View file

@ -1,7 +1,7 @@
from __future__ import annotations
import argparse
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
BLACKLIST = [
b'BEGIN RSA PRIVATE KEY',
@ -17,7 +17,7 @@ BLACKLIST = [
]
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import os
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import IO
@ -49,7 +49,7 @@ def fix_file(file_obj: IO[bytes]) -> int:
return 0
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to fix')
args = parser.parse_args(argv)

View file

@ -14,7 +14,7 @@ from __future__ import annotations
import argparse
from collections.abc import Callable
from collections.abc import Iterable
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import Any
from typing import IO
@ -51,7 +51,7 @@ def sort_file_contents(
return FAIL
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='+', help='Files to sort')

View file

@ -1,10 +1,10 @@
from __future__ import annotations
import argparse
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv)

View file

@ -2,12 +2,12 @@ from __future__ import annotations
import argparse
import os
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from pre_commit_hooks.util import cmd_output
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import collections
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
CRLF = b'\r\n'
@ -62,7 +62,7 @@ def fix_filename(filename: str, fix: str) -> int:
return other_endings
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'-f', '--fix',

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import re
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import AbstractSet
from pre_commit_hooks.util import CalledProcessError
@ -24,7 +24,7 @@ def is_on_branch(
)
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'-b', '--branch', action='append',

View file

@ -4,7 +4,7 @@ import argparse
import json
import sys
from collections.abc import Mapping
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from difflib import unified_diff
@ -55,7 +55,7 @@ def get_diff(source: str, target: str, file: str) -> str:
return ''.join(diff)
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'--autofix',

View file

@ -1,10 +1,10 @@
from __future__ import annotations
import sys
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
argv = argv if argv is not None else sys.argv[1:]
hookid, new_hookid, url = argv[:3]
raise SystemExit(

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import re
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
from typing import IO
@ -142,7 +142,7 @@ def fix_requirements(f: IO[bytes]) -> int:
return FAIL
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to fix')
args = parser.parse_args(argv)

View file

@ -20,7 +20,7 @@ complicated YAML files.
from __future__ import annotations
import argparse
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
QUOTES = ["'", '"']
@ -99,7 +99,7 @@ def first_key(lines: list[str]) -> str:
return '' # not actually reached in reality
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to fix')
args = parser.parse_args(argv)

View file

@ -5,7 +5,7 @@ import io
import re
import sys
import tokenize
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
if sys.version_info >= (3, 12): # pragma: >=3.12 cover
FSTRING_START = tokenize.FSTRING_START
@ -73,7 +73,7 @@ def fix_strings(filename: str) -> int:
return 0
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to fix')
args = parser.parse_args(argv)

View file

@ -3,10 +3,10 @@ from __future__ import annotations
import argparse
import os.path
import re
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*')
mutex = parser.add_mutually_exclusive_group()

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse
import os
from collections.abc import Sequence
from collections.abc import Iterable, Sequence
def _fix_file(
@ -41,7 +41,7 @@ def _process_line(
return line.rstrip(chars) + eol
def main(argv: Sequence[str] | None = None) -> int:
def main(argv: Iterable[str] | None = None) -> int:
parser = argparse.ArgumentParser()
parser.add_argument(
'--no-markdown-linebreak-ext',