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

View file

@ -5,10 +5,10 @@ import ast
import platform import platform
import sys import sys
import traceback 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 = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*') parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

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

View file

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

View file

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

View file

@ -5,7 +5,7 @@ import argparse
import shlex import shlex
import sys import sys
from collections.abc import Generator from collections.abc import Generator
from collections.abc import Sequence from collections.abc import Iterable, Sequence
from typing import NamedTuple from typing import NamedTuple
from pre_commit_hooks.util import cmd_output 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 = argparse.ArgumentParser(description=__doc__)
parser.add_argument('filenames', nargs='*') parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

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

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse import argparse
import os.path import os.path
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 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 = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*') parser.add_argument('filenames', nargs='*')
parser.add_argument('--assume-in-merge', action='store_true') parser.add_argument('--assume-in-merge', action='store_true')

View file

@ -4,7 +4,7 @@ from __future__ import annotations
import argparse import argparse
import shlex import shlex
import sys 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 EXECUTABLE_VALUES
from pre_commit_hooks.check_executables_have_shebangs import git_ls_files 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 = argparse.ArgumentParser(description=__doc__)
parser.add_argument('filenames', nargs='*') parser.add_argument('filenames', nargs='*')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

@ -2,10 +2,10 @@ from __future__ import annotations
import argparse import argparse
import os.path 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 = argparse.ArgumentParser(description='Checks for broken symlinks.')
parser.add_argument('filenames', nargs='*', help='Filenames to check') parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

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

View file

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

View file

@ -2,10 +2,10 @@ from __future__ import annotations
import argparse import argparse
import xml.sax.handler 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 = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='XML filenames to check.') parser.add_argument('filenames', nargs='*', help='XML filenames to check.')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse import argparse
from collections.abc import Generator from collections.abc import Generator
from collections.abc import Sequence from collections.abc import Iterable, Sequence
from typing import Any from typing import Any
from typing import NamedTuple 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 = argparse.ArgumentParser()
parser.add_argument( parser.add_argument(
'-m', '--multi', '--allow-multiple-documents', action='store_true', '-m', '--multi', '--allow-multiple-documents', action='store_true',

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
from __future__ import annotations from __future__ import annotations
import argparse import argparse
from collections.abc import Sequence from collections.abc import Iterable, Sequence
BLACKLIST = [ BLACKLIST = [
b'BEGIN RSA PRIVATE KEY', 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 = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check') parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

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

View file

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

View file

@ -1,10 +1,10 @@
from __future__ import annotations from __future__ import annotations
import argparse 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 = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*', help='Filenames to check') parser.add_argument('filenames', nargs='*', help='Filenames to check')
args = parser.parse_args(argv) args = parser.parse_args(argv)

View file

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

View file

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

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse import argparse
import re import re
from collections.abc import Sequence from collections.abc import Iterable, Sequence
from typing import AbstractSet from typing import AbstractSet
from pre_commit_hooks.util import CalledProcessError 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 = argparse.ArgumentParser()
parser.add_argument( parser.add_argument(
'-b', '--branch', action='append', '-b', '--branch', action='append',

View file

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

View file

@ -1,10 +1,10 @@
from __future__ import annotations from __future__ import annotations
import sys 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:] argv = argv if argv is not None else sys.argv[1:]
hookid, new_hookid, url = argv[:3] hookid, new_hookid, url = argv[:3]
raise SystemExit( raise SystemExit(

View file

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

View file

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

View file

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

View file

@ -3,10 +3,10 @@ from __future__ import annotations
import argparse import argparse
import os.path import os.path
import re 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 = argparse.ArgumentParser()
parser.add_argument('filenames', nargs='*') parser.add_argument('filenames', nargs='*')
mutex = parser.add_mutually_exclusive_group() mutex = parser.add_mutually_exclusive_group()

View file

@ -2,7 +2,7 @@ from __future__ import annotations
import argparse import argparse
import os import os
from collections.abc import Sequence from collections.abc import Iterable, Sequence
def _fix_file( def _fix_file(
@ -41,7 +41,7 @@ def _process_line(
return line.rstrip(chars) + eol 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 = argparse.ArgumentParser()
parser.add_argument( parser.add_argument(
'--no-markdown-linebreak-ext', '--no-markdown-linebreak-ext',