{"record":{"id":"f73a1bab4265493f","repo":"langchain-ai/deepagents","slug":"skipping-group-plugin-plugin-label-entry-poin","errorCode":null,"errorMessage":"Skipping {group} plugin {plugin_label}: entry point {ep.value!r} did not resolve to a callable.","messagePattern":"Skipping (.+?) plugin (.+?): entry point (.+?) did not resolve to a callable\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"libs/deepagents/deepagents/profiles/_builtin_profiles.py","lineNumber":229,"sourceCode":"        eps = entry_points(group=group)\n    except Exception as exc:  # noqa: BLE001\n        msg = f\"Failed to enumerate {group} entry points; no third-party plugins in this group will load: {type(exc).__name__}: {exc}\"\n        logger.warning(msg, exc_info=True)\n        warnings.warn(msg, stacklevel=2)\n        return\n    for ep in eps:\n        plugin_label = _format_plugin_label(ep)\n        try:\n            register = ep.load()\n        except Exception as exc:\n            msg = f\"Skipping {group} plugin {plugin_label}: failed to load entry point {ep.value!r}: {type(exc).__name__}: {exc}\"\n            logger.exception(msg)\n            warnings.warn(msg, stacklevel=2)\n            continue\n        if not callable(register):\n            msg = f\"Skipping {group} plugin {plugin_label}: entry point {ep.value!r} did not resolve to a callable.\"\n            logger.error(msg)\n            warnings.warn(msg, stacklevel=2)\n            continue\n        try:\n            register()\n        except Exception as exc:\n            msg = f\"Skipping {group} plugin {plugin_label}: registration callable {ep.value!r} raised: {type(exc).__name__}: {exc}\"\n            logger.exception(msg)\n            warnings.warn(msg, stacklevel=2)\n","sourceCodeStart":211,"sourceCodeEnd":237,"githubUrl":"https://github.com/langchain-ai/deepagents/blob/a1af029e6e73cb17c36bff823d227747b28e91e1/libs/deepagents/deepagents/profiles/_builtin_profiles.py#L211-L237","documentation":"Deep Agents loads builtin profile plugins via importlib entry points. After resolving an entry point, if the loaded object is not callable, `_invoke_profile_plugins` skips that plugin, logs, and emits this warning rather than crashing startup. The plugin's registration never runs.","triggerScenarios":"An installed distribution declares an entry point (in the relevant plugin group) whose `ep.value` resolves to a module attribute that is not callable — e.g. pointing at a module, class attribute, or constant instead of a function.","commonSituations":"Hand-edited entry-point declarations in pyproject.toml/setup.cfg; renamed or moved registration functions after a package refactor so the entry-point target now resolves to a non-callable shim; stale installed metadata from an old version still on sys.path.","solutions":["Inspect the referenced entry-point value and make it point to a callable (module:function) that performs registration","Reinstall/upgrade the offending plugin package so its metadata matches the current code","Check for duplicate/stale installs (pip show / importlib.metadata.entry_points) pointing at outdated modules"],"exampleFix":"# before (pyproject.toml)\n[project.entry-points.deepagents_profiles]\nmy_plugin = \"mypkg.plugin\"\n# after\n[project.entry-points.deepagents_profiles]\nmy_plugin = \"mypkg.plugin:register\"","handlingStrategy":"validation","validationCode":"from importlib.metadata import entry_points\nfor ep in entry_points(group=\"deepagents_profiles\"):\n    obj = ep.load()\n    assert callable(obj), f\"entry point {ep.value!r} is not callable\"","typeGuard":"def is_callable_entry_point(ep) -> bool:\n    try:\n        return callable(ep.load())\n    except Exception:\n        return False","tryCatchPattern":"import warnings\nwith warnings.catch_warnings(record=True) as caught:\n    warnings.simplefilter(\"always\")\n    load_profiles()\nfor w in caught:\n    if \"did not resolve to a callable\" in str(w.message):\n        logger.warning(\"plugin skipped: %s\", w.message)","preventionTips":["Point entry points at module:function, never a bare module or attribute constant","Re-run tests after renaming registration functions and update entry-point metadata","Clean stale package installs; verify with importlib.metadata.entry_points in CI"],"tags":["plugins","entry-points","profiles","configuration"],"backgroundTag":"entry-point-not-callable","analyzedSha":"a1af029e6e73cb17c36bff823d227747b28e91e1","analyzedAt":"2026-08-29T11:43:24.718Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}