# registry URL: /api/directives/registry/ Section: directives -------------------------------------------------------------------------------- registry - Patitas window.BENGAL_THEME_DEFAULTS = { appearance: 'light', palette: 'brown-bengal' }; window.Bengal = window.Bengal || {}; window.Bengal.enhanceBaseUrl = '/patitas/assets/js/enhancements'; window.Bengal.watchDom = true; window.Bengal.debug = false; window.Bengal.enhanceUrls = { 'toc': '/patitas/assets/js/enhancements/toc.632a9783.js', 'docs-nav': '/patitas/assets/js/enhancements/docs-nav.57e4b129.js', 'tabs': '/patitas/assets/js/enhancements/tabs.aac9e817.js', 'lightbox': '/patitas/assets/js/enhancements/lightbox.1ca22aa1.js', 'interactive': '/patitas/assets/js/enhancements/interactive.fc077855.js', 'mobile-nav': '/patitas/assets/js/enhancements/mobile-nav.d991657f.js', 'action-bar': '/patitas/assets/js/enhancements/action-bar.d62417f4.js', 'copy-link': '/patitas/assets/js/enhancements/copy-link.7d9a5c29.js', 'data-table': '/patitas/assets/js/enhancements/data-table.1f5bc1eb.js', 'lazy-loaders': '/patitas/assets/js/enhancements/lazy-loaders.a5c38245.js', 'holo': '/patitas/assets/js/enhancements/holo.ee13c841.js', 'link-previews': '/patitas/assets/js/enhancements/link-previews.8d906535.js' }; (function () { try { var defaults = window.BENGAL_THEME_DEFAULTS || { appearance: 'system', palette: '' }; var defaultAppearance = defaults.appearance; if (defaultAppearance === 'system') { defaultAppearance = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; } var storedTheme = localStorage.getItem('bengal-theme'); var storedPalette = localStorage.getItem('bengal-palette'); var theme = storedTheme ? (storedTheme === 'system' ? defaultAppearance : storedTheme) : defaultAppearance; var palette = storedPalette ?? defaults.palette; document.documentElement.setAttribute('data-theme', theme); if (palette) { document.documentElement.setAttribute('data-palette', palette); } } catch (e) { document.documentElement.setAttribute('data-theme', 'light'); } })(); { "prerender": [ { "where": { "and": [ { "href_matches": "/docs/*" }, { "not": { "selector_matches": "[data-external], [target=_blank], .external" } } ] }, "eagerness": "conservative" } ], "prefetch": [ { "where": { "and": [ { "href_matches": "/*" }, { "not": { "selector_matches": "[data-external], [target=_blank], .external" } } ] }, "eagerness": "conservative" } ] } Skip to main content Magnifying Glass ESC Recent Clear Magnifying Glass No results for "" Start typing to search... ↑↓ Navigate ↵ Open ESC Close Powered by Lunr ฅᨐฅ DocumentationArrow ClockwiseGet StartedCodeSyntaxDirectivesStarburstExtendingBookmarkReferenceInfoAboutTroubleshootingReleasesDevGitHubPatitas API Reference Magnifying Glass Search ⌘K Palette Appearance Chevron Down Mode Monitor System Sun Light Moon Dark Palette Snow Lynx Brown Bengal Silver Bengal Charcoal Bengal Blue Bengal List ฅᨐฅ Magnifying Glass Search X Close Documentation Caret Down Arrow Clockwise Get Started Code Syntax Directives Starburst Extending Bookmark Reference Info About Troubleshooting Releases Dev Caret Down GitHub Patitas API Reference Palette Appearance Chevron Down Mode Monitor System Sun Light Moon Dark Palette Snow Lynx Brown Bengal Silver Bengal Charcoal Bengal Blue Bengal Patitas API Reference Caret Right Directives Caret Right Builtins admonition container dropdown tabs contracts decorator options protocol registry Caret Right Lexer Caret Right Classifiers directive fence footnote heading html link_ref list quote thematic Caret Right Scanners block directive fence html core modes Caret Right Parsing Caret Right Blocks Caret Right List blank_line indent item_blocks marker mixin nested trace types core directive footnote table Caret Right Inline core emphasis links match_registry special tokens charsets containers token_nav Caret Right Plugins autolinks footnotes math strikethrough table task_lists Caret Right Renderers html Caret Right Roles Caret Right Builtins formatting icons math reference protocol registry Caret Right Utils hashing logger text errors highlighting icons location nodes parser patitas protocols stringbuilder tokens Patitas API ReferenceDirectives ᗢ Caret Down Link Copy URL External Open LLM text Copy Copy LLM text Share with AI Ask Claude Ask ChatGPT Ask Gemini Ask Copilot Module directives.registry Directive registry for handler lookup and registration. The registry maps directive names to their handlers, enabling extensibility and custom directive support. Thread Safety: DirectiveRegistry is immutable after creation. Safe to share. Use DirectiveRegistryBuilder for mutable construction. Example: >>> builder = DirectiveRegistryBuilder() >>> builder.register(NoteDirective()) >>> builder.register(WarningDirective()) >>> registry = builder.build() >>> handler = registry.get("note") 2Classes3Functions Classes DirectiveRegistry 8 ▼ Immutable registry of directive handlers. Maps directive names to their handlers for lookup during… Immutable registry of directive handlers. Maps directive names to their handlers for lookup during parsing and rendering. Thread Safety: Immutable after creation. Safe to share across threads. Methods names 0 frozenset[str] ▼ Get all registered directive names. property def names(self) -> frozenset[str] Returns frozenset[str] handlers 0 tuple[DirectiveHandler, … ▼ Get all registered handlers. property def handlers(self) -> tuple[DirectiveHandler, ...] Returns tuple[DirectiveHandler, ...] get 1 DirectiveHandler | None ▼ Get handler for directive name. def get(self, name: str) -> DirectiveHandler | None Parameters Name Type Description name — Directive name (e.g., "note", "warning") Returns DirectiveHandler | None Handler if registered, None otherwise get_by_token_type 1 DirectiveHandler | None ▼ Get handler by token type. def get_by_token_type(self, token_type: str) -> DirectiveHandler | None Parameters Name Type Description token_type — Token type identifier (e.g., "admonition") Returns DirectiveHandler | None Handler if registered, None otherwise has 1 bool ▼ Check if directive name is registered. def has(self, name: str) -> bool Parameters Name Type Description name — Returns bool Internal Methods 3 ▼ __init__ 3 ▼ Initialize registry with pre-built mappings. Use DirectiveRegistryBuilder to c… def __init__(self, handlers: tuple[DirectiveHandler, ...], by_name: dict[str, DirectiveHandler], by_token_type: dict[str, DirectiveHandler]) -> None Initialize registry with pre-built mappings. Use DirectiveRegistryBuilder to create instances. Parameters Name Type Description handlers — by_name — by_token_type — __contains__ 1 bool ▼ Support 'name in registry' syntax. def __contains__(self, name: str) -> bool Parameters Name Type Description name — Returns bool __len__ 0 int ▼ Number of registered directive names. def __len__(self) -> int Returns int DirectiveRegistryBuilder 5 ▼ Mutable builder for DirectiveRegistry. Use this to register handlers, then call build() to create … Mutable builder for DirectiveRegistry. Use this to register handlers, then call build() to create an immutable registry. Methods register 1 DirectiveRegistryBuilder ▼ Register a directive handler. def register(self, handler: DirectiveHandler) -> DirectiveRegistryBuilder Parameters Name Type Description handler — Handler implementing DirectiveHandler protocol Returns DirectiveRegistryBuilder Self for chaining register_all 1 DirectiveRegistryBuilder ▼ Register multiple handlers. def register_all(self, handlers: list[DirectiveHandler]) -> DirectiveRegistryBuilder Parameters Name Type Description handlers — List of handlers to register Returns DirectiveRegistryBuilder Self for chaining build 0 DirectiveRegistry ▼ Build immutable registry from registered handlers. def build(self) -> DirectiveRegistry Returns DirectiveRegistry Immutable DirectiveRegistry Internal Methods 2 ▼ __init__ 0 ▼ Initialize empty builder. def __init__(self) -> None __len__ 0 int ▼ Number of registered handlers. def __len__(self) -> int Returns int Functions _build_default_registry 0 DirectiveRegistry ▼ Build the default registry (internal, not cached). def _build_default_registry() -> DirectiveRegistry Returns DirectiveRegistry create_default_registry 0 DirectiveRegistry ▼ Get the default directive registry (cached singleton). **Thread Safety:** Retu… def create_default_registry() -> DirectiveRegistry Get the default directive registry (cached singleton). Thread Safety: Returns a cached immutable registry. Safe for concurrent access. Returns DirectiveRegistry create_registry_with_defaults 0 DirectiveRegistryBuilder ▼ Create a builder pre-populated with default directives. **Use this to extend t… def create_registry_with_defaults() -> DirectiveRegistryBuilder Create a builder pre-populated with default directives. Use this to extend the default set with custom directives: >>> builder = create_registry_with_defaults() >>> builder.register(MyCustomDirective()) >>> registry = builder.build() Returns DirectiveRegistryBuilder ← Previous protocol List © 2026 Patitas built in ᓚᘏᗢ { "linkPreviews": { "enabled": true, "hoverDelay": 200, "hideDelay": 150, "showSection": true, "showReadingTime": true, "showWordCount": true, "showDate": true, "showTags": true, "maxTags": 3, "includeSelectors": [".prose"], "excludeSelectors": ["nav", ".toc", ".breadcrumb", ".pagination", ".card", "[class*='-card']", ".tab-nav", "[class*='-widget']", ".child-items", ".content-tiles"], "allowedHosts": [], "allowedSchemes": ["https"], "hostFailureThreshold": 3 } } window.BENGAL_LAZY_ASSETS = { tabulator: '/patitas/assets/js/tabulator.min.js', dataTable: '/patitas/assets/js/data-table.js', mermaidToolbar: '/patitas/assets/js/mermaid-toolbar.9de5abba.js', mermaidTheme: '/patitas/assets/js/mermaid-theme.344822c5.js', graphMinimap: '/patitas/assets/js/graph-minimap.ff04e939.js', graphContextual: '/patitas/assets/js/graph-contextual.355458ba.js' }; window.BENGAL_ICONS = { close: '/patitas/assets/icons/close.911d4fe1.svg', enlarge: '/patitas/assets/icons/enlarge.652035e5.svg', copy: '/patitas/assets/icons/copy.3d56e945.svg', 'download-svg': '/patitas/assets/icons/download.04f07e1b.svg', 'download-png': '/patitas/assets/icons/image.c34dfd40.svg', 'zoom-in': '/patitas/assets/icons/zoom-in.237b4a83.svg', 'zoom-out': '/patitas/assets/icons/zoom-out.38857c77.svg', reset: '/patitas/assets/icons/reset.d26dba29.svg' }; Arrow Up -------------------------------------------------------------------------------- Metadata: - Word Count: 1105 - Reading Time: 6 minutes