{"id":23015,"library":"zope-browsermenu","title":"zope.browsermenu","description":"Browser menu implementation for Zope (version 6.0). Provides a framework for defining and rendering browser menus registered via ZCML. Used primarily in Zope-based web applications. Release cadence is low, with occasional major version bumps.","status":"active","version":"6.0","language":"python","source_language":"en","source_url":"http://github.com/zopefoundation/zope.browsermenu/","tags":["zope","browser","menu","component"],"install":[{"cmd":"pip install zope.browsermenu","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Interface definitions for menu components","package":"zope.interface","optional":false},{"reason":"Component architecture for menu registration","package":"zope.component","optional":false},{"reason":"Browser request and view integration","package":"zope.publisher","optional":false},{"reason":"Traversal for menu resolution","package":"zope.traversing","optional":false},{"reason":"Browser page rendering support","package":"zope.browserpage","optional":false}],"imports":[{"note":"BrowserMenu is not in the package __init__, must be imported from submodule menu","wrong":"from zope.browsermenu import BrowserMenu","symbol":"BrowserMenu","correct":"from zope.browsermenu.menu import BrowserMenu"},{"note":"","wrong":"","symbol":"BrowserSubMenuItem","correct":"from zope.browsermenu.menu import BrowserSubMenuItem"},{"note":"","wrong":"","symbol":"MenuManager","correct":"from zope.browsermenu.menu import MenuManager"},{"note":"","wrong":"","symbol":"IMenuItemType","correct":"from zope.browsermenu.interfaces import IMenuItemType"}],"quickstart":{"code":"from zope.browsermenu.menu import BrowserMenu\nfrom zope.browsermenu.interfaces import IMenuItemType\nfrom zope.component import provideAdapter\nfrom zope.interface import implementer\n\n@implementer(IMenuItemType)\nclass MyMenuItem:\n    title = 'My Item'\n    def __init__(self, context, request):\n        self.context = context\n        self.request = request\n\nmenu = BrowserMenu('my_menu')\nprovideAdapter(MyMenuItem, name='my_item')\n\n# In a browser view, render menu\n# menu.getMenuItems(context, request) returns list of items","lang":"python","description":"Create a browser menu with custom menu items using Zope component architecture."},"warnings":[{"fix":"Upgrade Python to 3.9+ and update zope.browsermenu to 6.0.","message":"In version 6.0, dropped support for Python versions below 3.9. Must upgrade Python runtime.","severity":"breaking","affected_versions":"<6.0"},{"fix":"Use 'from zope.browsermenu.menu import BrowserMenu' instead.","message":"Importing BrowserMenu directly from the package root (zope.browsermenu) will fail. Must import from submodule zope.browsermenu.menu.","severity":"gotcha","affected_versions":">=6.0"},{"fix":"Use zope.browsermenu.menu for menu classes and zope.browsermenu.interfaces for interfaces.","message":"The old import path from zope.browsermenu.actions is deprecated and may be removed in a future version.","severity":"deprecated","affected_versions":">=6.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"pip install zope.browsermenu==6.0 (ensure version 6.0 is installed).","cause":"Installing an older version that does not have the submodule menu; or incorrect package name.","error":"ModuleNotFoundError: No module named 'zope.browsermenu.menu'"},{"fix":"Use 'from zope.browsermenu.menu import BrowserMenu'.","cause":"Attempting to import BrowserMenu from the package root instead of submodule.","error":"AttributeError: module 'zope.browsermenu' has no attribute 'BrowserMenu'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}