{"record":{"id":"ed4cb24b9706657c","repo":"pypa/pip","slug":"you-need-to-specify-exactly-one-argument","errorCode":null,"errorMessage":"You need to specify exactly one argument","messagePattern":"You need to specify exactly one argument","errorType":"exception","errorClass":"CommandError","httpStatus":null,"severity":"error","filePath":"src/pip/_internal/commands/index.py","lineNumber":125,"sourceCode":"\n        # Pass allow_yanked=False to ignore yanked versions.\n        selection_prefs = SelectionPreferences(\n            allow_yanked=False,\n            release_control=options.release_control,\n            format_control=options.format_control,\n            ignore_requires_python=ignore_requires_python,\n        )\n\n        return PackageFinder.create(\n            link_collector=link_collector,\n            selection_prefs=selection_prefs,\n            target_python=target_python,\n            uploaded_prior_to=options.uploaded_prior_to,\n        )\n\n    def get_available_package_versions(self, options: Values, args: list[Any]) -> None:\n        if len(args) != 1:\n            raise CommandError(\"You need to specify exactly one argument\")\n\n        target_python = cmdoptions.make_target_python(options)\n        query = args[0]\n\n        with self._build_session(options) as session:\n            finder = self._build_package_finder(\n                options=options,\n                session=session,\n                target_python=target_python,\n                ignore_requires_python=options.ignore_requires_python,\n            )\n\n            versions: Iterable[Version] = (\n                candidate.version for candidate in finder.find_all_candidates(query)\n            )\n\n            if self.should_exclude_prerelease(options, canonicalize_name(query)):\n                versions = (","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/pypa/pip/blob/f399c3718970b1b0e2478dac5296eb62679a9b86/src/pip/_internal/commands/index.py#L107-L143","documentation":"Raised by `pip index versions` when the number of positional package arguments is not exactly one. get_available_package_versions at index.py:123 checks `len(args) != 1`; the versions subcommand queries one package at a time against the index.","triggerScenarios":"Invoking `pip index versions` (zero args) or `pip index versions foo bar` (two args) — args length != 1 at index.py:124.","commonSituations":"User expects the command to list versions for multiple packages or forgets the package argument.","solutions":["Pass exactly one package: `pip index versions <package>`.","Loop per package if you need versions for several.","Use `--json` for machine-readable single-package output."],"exampleFix":"// before\npip index versions numpy scipy\n// after\npip index versions numpy","handlingStrategy":"validation","validationCode":"# Validate before calling pip index versions\ndef validate_index_versions_args(packages):\n    if not isinstance(packages, list) or len(packages) != 1:\n        raise ValueError(\"pip index versions requires exactly one package argument\")\n    return True\n","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pass exactly one package name to `pip index versions`.","Loop per package in automation rather than batching."],"tags":["cli","pip-index","argument-validation","usage-error"],"backgroundTag":null,"analyzedSha":"f399c3718970b1b0e2478dac5296eb62679a9b86","analyzedAt":"2026-08-08T23:01:42.227Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}