{"record":{"id":"dfe05da512931b3f","repo":"Lightning-AI/pytorch-lightning","slug":"jsonargparse-signatures-available","errorCode":null,"errorMessage":"{_JSONARGPARSE_SIGNATURES_AVAILABLE}","messagePattern":"\\{_JSONARGPARSE_SIGNATURES_AVAILABLE\\}","errorType":"exception","errorClass":"ModuleNotFoundError","httpStatus":null,"severity":"error","filePath":"src/lightning/pytorch/cli.py","lineNumber":116,"sourceCode":"        *args: Any,\n        description: str = \"Lightning Trainer command line tool\",\n        env_prefix: str = \"PL\",\n        default_env: bool = False,\n        **kwargs: Any,\n    ) -> None:\n        \"\"\"Initialize argument parser that supports configuration file input.\n\n        For full details of accepted arguments see `ArgumentParser.__init__\n        <https://jsonargparse.readthedocs.io/en/stable/#jsonargparse.ArgumentParser.__init__>`_.\n\n        Args:\n            description: Description of the tool shown when running ``--help``.\n            env_prefix: Prefix for environment variables. Set ``default_env=True`` to enable env parsing.\n            default_env: Whether to parse environment variables.\n\n        \"\"\"\n        if not _JSONARGPARSE_SIGNATURES_AVAILABLE:\n            raise ModuleNotFoundError(f\"{_JSONARGPARSE_SIGNATURES_AVAILABLE}\")\n        super().__init__(*args, description=description, env_prefix=env_prefix, default_env=default_env, **kwargs)\n        self.callback_keys: list[str] = []\n        # separate optimizers and lr schedulers to know which were added\n        self._optimizers: dict[str, tuple[Union[type, tuple[type, ...]], str]] = {}\n        self._lr_schedulers: dict[str, tuple[Union[type, tuple[type, ...]], str]] = {}\n\n    def add_lightning_class_args(\n        self,\n        lightning_class: Union[\n            Callable[..., Union[Trainer, LightningModule, LightningDataModule, Callback]],\n            type[Trainer],\n            type[LightningModule],\n            type[LightningDataModule],\n            type[Callback],\n        ],\n        nested_key: str,\n        subclass_mode: bool = False,\n        required: bool = True,","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/Lightning-AI/pytorch-lightning/blob/9fed5c27d2a62ff0efd6c3573599921d6ff67c14/src/lightning/pytorch/cli.py#L98-L134","documentation":"LightningCLI relies on jsonargparse's signatures feature (added in jsonargparse 4.x, APIs v4.5.0+). On init it checks _JSONARGPARSE_SIGNATURES_AVAILABLE; if the installed jsonargparse is too old (or the feature import failed), it raises ModuleNotFoundError with the stored reason string.","triggerScenarios":"pip install lightning-cli / lightning in an environment that already pins jsonargparse<4 (or a broken install), then running LightningCLI(...).","commonSituations":"Dependency conflicts where another package pins an old jsonargparse; stale conda environments after upgrading lightning.","solutions":["pip install -U jsonargparse[signatures] (>= 4.5.0 / latest)","Check the actual reason: python -c \"import jsonargparse; print(jsonargparse.__version__)\" and inspect _JSONARGPARSE_SIGNATURES_AVAILABLE in lightning.pytorch.cli","Recreate the environment if the pin comes from another package"],"exampleFix":"# before\n# jsonargparse 3.x installed -> ModuleNotFoundError from LightningCLI\n# after\npip install -U \"jsonargparse[signatures]\"\ncli = LightningCLI(MyModule)","handlingStrategy":"validation","validationCode":"import jsonargparse\nfrom packaging.version import Version\nassert Version(jsonargparse.__version__) >= Version('4.5.0'), 'run: pip install -U \"jsonargparse[signatures]\"'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Pin jsonargparse with the [signatures] extra in requirements","Add a startup version assertion before LightningCLI instantiation"],"tags":["lightning-cli","jsonargparse","dependency-version","module-not-found"],"backgroundTag":"dependency-version-mismatch","analyzedSha":"9fed5c27d2a62ff0efd6c3573599921d6ff67c14","analyzedAt":"2026-08-28T11:52:41.083Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}