{"record":{"id":"cba50dfd6002946a","repo":"matplotlib/matplotlib","slug":"entry-point-name-name-duplicated","errorCode":null,"errorMessage":"Entry point name '{name}' duplicated","messagePattern":"Entry point name '(.+?)' duplicated","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"lib/matplotlib/backends/registry.py","lineNumber":180,"sourceCode":"\n        return entries\n\n    def _validate_and_store_entry_points(self, entries):\n        # Validate and store entry points so that they can be used via matplotlib.use()\n        # in the normal manner. Entry point names cannot be of module:// format, cannot\n        # shadow a built-in backend name, and there cannot be multiple entry points\n        # with the same name but different modules. Multiple entry points with the same\n        # name and value are permitted (it can sometimes happen outside of our control,\n        # see https://github.com/matplotlib/matplotlib/issues/28367).\n        for name, module in set(entries):\n            name = name.lower()\n            if name.startswith(\"module://\"):\n                raise RuntimeError(\n                    f\"Entry point name '{name}' cannot start with 'module://'\")\n            if name in self._BUILTIN_BACKEND_TO_GUI_FRAMEWORK:\n                raise RuntimeError(f\"Entry point name '{name}' is a built-in backend\")\n            if name in self._backend_to_gui_framework:\n                raise RuntimeError(f\"Entry point name '{name}' duplicated\")\n\n            self._name_to_module[name] = \"module://\" + module\n            # Do not yet know backend GUI framework, determine it only when necessary.\n            self._backend_to_gui_framework[name] = \"unknown\"\n\n    def backend_for_gui_framework(self, framework):\n        \"\"\"\n        Return the name of the backend corresponding to the specified GUI framework.\n\n        Parameters\n        ----------\n        framework : str\n            GUI framework such as \"qt\".\n\n        Returns\n        -------\n        str or None\n            Backend name or None if GUI framework not recognised.","sourceCodeStart":162,"sourceCodeEnd":198,"githubUrl":"https://github.com/matplotlib/matplotlib/blob/b379c1b69e012b142c0f496a52bcb30513802d72/lib/matplotlib/backends/registry.py#L162-L198","documentation":"Error \"Entry point name '{name}' duplicated\" thrown in matplotlib/matplotlib.","triggerScenarios":"Thrown at lib/matplotlib/backends/registry.py:180 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b379c1b69e012b142c0f496a52bcb30513802d72","analyzedAt":"2026-08-21T23:31:55.468Z","schemaVersion":2},"datasetVersion":"2026-08-22T04:17:13.399Z"}