django-components/dev/reference/django_components/component_registry/index.html

433 lines
No EOL
108 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="A way to create simple reusable template components in Django."><link href=https://emilstenstrom.github.io/django-components/latest/reference/django_components/component_registry/ rel=canonical><link href=../component_media/ rel=prev><link href=../components/ rel=next><link rel=icon href=../../../assets/images/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.5.40"><title>component_registry - Django-Components</title><link rel=stylesheet href=../../../assets/stylesheets/main.8c3ca2c6.min.css><link rel=stylesheet href=../../../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../../assets/_markdown_exec_pyodide.css><link rel=stylesheet href=../../../assets/_mkdocstrings.css><link rel=stylesheet href=../../../css/timeago.css><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><meta property=og:type content=website><meta property=og:title content="<code class=" doc-symbol doc-symbol-nav doc-symbol-module&quot;></code> component_registry - Django-Components" > <meta property=og:description content="A way to create simple reusable template components in Django."><meta property=og:image content=https://emilstenstrom.github.io/django-components/latest/assets/images/social/reference/django_components/component_registry/index.png><meta property=og:image:type content=image/png><meta property=og:image:width content=1200><meta property=og:image:height content=630><meta content=https://emilstenstrom.github.io/django-components/latest/reference/django_components/component_registry/ property=og:url><meta name=twitter:card content=summary_large_image><meta name=twitter:title content="<code class=" doc-symbol doc-symbol-nav doc-symbol-module&quot;></code> component_registry - Django-Components" > <meta name=twitter:description content="A way to create simple reusable template components in Django."><meta name=twitter:image content=https://emilstenstrom.github.io/django-components/latest/assets/images/social/reference/django_components/component_registry/index.png></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#django_components.component_registry class=md-skip> Skip to content </a> </div> <div data-md-component=announce> <aside class=md-banner> <div class="md-banner__inner md-grid md-typeset"> 🚨The documentation is still a work in progress. 🚨 </div> </aside> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../../.. title=Django-Components class="md-header__button md-logo" aria-label=Django-Components data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Django-Components </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_registry </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media=(prefers-color-scheme) data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=teal data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3zm3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95zm-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=teal data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5s-1.65.15-2.39.42zM3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29zm.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14zM20.65 7l-1.77 3.79a7.02 7.02 0 0 0-2.38-4.15zm-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29zM12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <a href=javascript:void(0) class="md-search__icon md-icon" title=Share aria-label=Share data-clipboard data-clipboard-text data-md-component=search-share tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> </a> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/EmilStenstrom/django-components title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> EmilStenstrom/django-components </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../../.. title=Django-Components class="md-nav__button md-logo" aria-label=Django-Components data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"/></svg> </a> Django-Components </label> <div class=md-nav__source> <a href=https://github.com/EmilStenstrom/django-components title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> EmilStenstrom/django-components </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_1> <div class="md-nav__link md-nav__container"> <a href=../../.. class="md-nav__link "> <span class=md-ellipsis> README </span> </a> <label class="md-nav__link " for=__nav_1 id=__nav_1_label tabindex> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_1_label aria-expanded=false> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> README </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../CHANGELOG/ class=md-nav__link> <span class=md-ellipsis> Changelog </span> </a> </li> <li class=md-nav__item> <a href=../../../CODE_OF_CONDUCT/ class=md-nav__link> <span class=md-ellipsis> Code of Conduct </span> </a> </li> <li class=md-nav__item> <a href=../../../license/ class=md-nav__link> <span class=md-ellipsis> License </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2 id=__nav_2_label tabindex> <span class=md-ellipsis> Reference </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=1 aria-labelledby=__nav_2_label aria-expanded=true> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Reference </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_1 checked> <label class=md-nav__link for=__nav_2_1 id=__nav_2_1_label tabindex=0> <span class=md-ellipsis> API Reference </span> <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav data-md-level=2 aria-labelledby=__nav_2_1_label aria-expanded=true> <label class=md-nav__title for=__nav_2_1> <span class="md-nav__icon md-icon"></span> API Reference </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type=checkbox id=__nav_2_1_1 checked> <div class="md-nav__link md-nav__container"> <a href=../ class="md-nav__link "> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> django_components </span> </a> <label class="md-nav__link " for=__nav_2_1_1 id=__nav_2_1_1_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_2_1_1_label aria-expanded=true> <label class=md-nav__title for=__nav_2_1_1> <span class="md-nav__icon md-icon"></span> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> django_components </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../app_settings/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> app_settings </span> </a> </li> <li class=md-nav__item> <a href=../apps/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> apps </span> </a> </li> <li class=md-nav__item> <a href=../attributes/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> attributes </span> </a> </li> <li class=md-nav__item> <a href=../autodiscover/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> autodiscover </span> </a> </li> <li class=md-nav__item> <a href=../component/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component </span> </a> </li> <li class=md-nav__item> <a href=../component_media/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_media </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_registry </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_registry </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#django_components.component_registry.registry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registry </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentRegistry </span> </a> <nav class=md-nav aria-label= ComponentRegistry> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.library class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;library </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.all class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;all </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.clear class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;clear </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.get class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.unregister class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;unregister </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.component_registry.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;register </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2_1_1_9> <div class="md-nav__link md-nav__container"> <a href=../components/ class="md-nav__link "> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> components </span> </a> <label class="md-nav__link " for=__nav_2_1_1_9 id=__nav_2_1_1_9_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=4 aria-labelledby=__nav_2_1_1_9_label aria-expanded=false> <label class=md-nav__title for=__nav_2_1_1_9> <span class="md-nav__icon md-icon"></span> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> components </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../components/dynamic/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> dynamic </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../context/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> context </span> </a> </li> <li class=md-nav__item> <a href=../expression/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> expression </span> </a> </li> <li class=md-nav__item> <a href=../finders/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> finders </span> </a> </li> <li class=md-nav__item> <a href=../library/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> library </span> </a> </li> <li class=md-nav__item> <a href=../logger/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> logger </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2_1_1_15> <div class="md-nav__link md-nav__container"> <a href=../management/ class="md-nav__link "> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> management </span> </a> <label class="md-nav__link " for=__nav_2_1_1_15 id=__nav_2_1_1_15_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=4 aria-labelledby=__nav_2_1_1_15_label aria-expanded=false> <label class=md-nav__title for=__nav_2_1_1_15> <span class="md-nav__icon md-icon"></span> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> management </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2_1_1_15_2> <div class="md-nav__link md-nav__container"> <a href=../management/commands/ class="md-nav__link "> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> commands </span> </a> <label class="md-nav__link " for=__nav_2_1_1_15_2 id=__nav_2_1_1_15_2_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=5 aria-labelledby=__nav_2_1_1_15_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_1_1_15_2> <span class="md-nav__icon md-icon"></span> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> commands </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../management/commands/startcomponent/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> startcomponent </span> </a> </li> <li class=md-nav__item> <a href=../management/commands/upgradecomponent/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> upgradecomponent </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../middleware/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> middleware </span> </a> </li> <li class=md-nav__item> <a href=../node/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> node </span> </a> </li> <li class=md-nav__item> <a href=../provide/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> provide </span> </a> </li> <li class=md-nav__item> <a href=../slots/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> slots </span> </a> </li> <li class=md-nav__item> <a href=../tag_formatter/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> tag_formatter </span> </a> </li> <li class=md-nav__item> <a href=../template/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> template </span> </a> </li> <li class=md-nav__item> <a href=../template_loader/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> template_loader </span> </a> </li> <li class=md-nav__item> <a href=../template_parser/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> template_parser </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2_1_1_24> <div class="md-nav__link md-nav__container"> <a href=../templatetags/ class="md-nav__link "> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> templatetags </span> </a> <label class="md-nav__link " for=__nav_2_1_1_24 id=__nav_2_1_1_24_label tabindex=0> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class=md-nav data-md-level=4 aria-labelledby=__nav_2_1_1_24_label aria-expanded=false> <label class=md-nav__title for=__nav_2_1_1_24> <span class="md-nav__icon md-icon"></span> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> templatetags </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../templatetags/component_tags/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_tags </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../types/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> types </span> </a> </li> <li class=md-nav__item> <a href=../utils/ class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> utils </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type=checkbox id=__nav_2_1_2> <div class="md-nav__link md-nav__container"> <a href=../../django_components_js/build/ class="md-nav__link "> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> django_components_js </span> </a> </div> <nav class=md-nav data-md-level=3 aria-labelledby=__nav_2_1_2_label aria-expanded=false> <label class=md-nav__title for=__nav_2_1_2> <span class="md-nav__icon md-icon"></span> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> django_components_js </label> <ul class=md-nav__list data-md-scrollfix> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#django_components.component_registry.registry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;registry </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-class"></code>&nbsp;ComponentRegistry </span> </a> <nav class=md-nav aria-label= ComponentRegistry> <ul class=md-nav__list> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.library class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-attribute"></code>&nbsp;library </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.all class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;all </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.clear class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;clear </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.get class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;get </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;register </span> </a> </li> <li class=md-nav__item> <a href=#django_components.component_registry.ComponentRegistry.unregister class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-method"></code>&nbsp;unregister </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#django_components.component_registry.register class=md-nav__link> <span class=md-ellipsis> <code class="doc-symbol doc-symbol-toc doc-symbol-function"></code>&nbsp;register </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href=https://github.com/EmilStenstrom/django-components/edit/master/src/django_components/component_registry.py title="Edit this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href=https://github.com/EmilStenstrom/django-components/raw/master/src/django_components/component_registry.py title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <div class="doc doc-object doc-module"> <h1 id=django_components.component_registry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-module"></code> <span class="doc doc-object-name doc-module-name">component_registry</span> <a href=#django_components.component_registry class=headerlink title="Permanent link">¤</a></h1> <div class="doc doc-contents first"> <p><span class=doc-section-title>Classes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry href=../#django_components.component_registry.ComponentRegistry>ComponentRegistry</a></code></b> <div class=doc-md-description> <p>Manages which components can be used in the template tags.</p> </div> </li> </ul> <p><span class=doc-section-title>Functions:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.register href=../#django_components.component_registry.register>register</a></code></b> <div class=doc-md-description> <p>Class decorator to register a component.</p> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.registry href=../#django_components.component_registry.registry>registry</a></code></b> (<code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry href=../#django_components.component_registry.ComponentRegistry>ComponentRegistry</a></code>) <div class=doc-md-description> <p>The default and global component registry. Use this instance to directly</p> </div> </li> </ul> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h2 id=django_components.component_registry.registry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">registry</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-module-attribute"><code>module-attribute</code></small> </span> <a href=#django_components.component_registry.registry class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>registry</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry href=../#django_components.component_registry.ComponentRegistry>ComponentRegistry</a></span> <span class=o>=</span> <span class=n><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry href=../#django_components.component_registry.ComponentRegistry>ComponentRegistry</a></span><span class=p>()</span>
</code></pre></div> <div class="doc doc-contents "> <p>The default and global component registry. Use this instance to directly register or remove components:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># Register components</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Get single</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>registry</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=c1># Get all</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># Unregister single</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=n>registry</span><span class=o>.</span><span class=n>unregister</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=c1># Unregister all</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=n>registry</span><span class=o>.</span><span class=n>clear</span><span class=p>()</span>
</code></pre></div> </div> </div> <div class="doc doc-object doc-class"> <h2 id=django_components.component_registry.ComponentRegistry class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-class"></code> <span class="doc doc-object-name doc-class-name">ComponentRegistry</span> <a href=#django_components.component_registry.ComponentRegistry class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>ComponentRegistry</span><span class=p>(</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=n>library</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><span title=django.template.Library>Library</span></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span> <span class=n>settings</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" title=typing.Union href=https://docs.python.org/3.12/library/typing.html#typing.Union>Union</a></span><span class=p>[</span><span class=n><span title=django_components.component_registry.RegistrySettings>RegistrySettings</span></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[</span><span class=n><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry href=../#django_components.component_registry.ComponentRegistry>ComponentRegistry</a></span><span class=p>],</span> <span class=n><span title=django_components.component_registry.RegistrySettings>RegistrySettings</span></span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=p>)</span>
</code></pre></div> <div class="doc doc-contents "> <p>Manages which components can be used in the template tags.</p> <p>Each ComponentRegistry instance is associated with an instance of Django's Library. So when you register or unregister a component to/from a component registry, behind the scenes the registry automatically adds/removes the component's template tag to/from the Library.</p> <p>The Library instance can be set at instantiation. If omitted, then the default Library instance from django_components is used. The Library instance can be accessed under <code>library</code> attribute.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># Use with default Library</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>()</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Or a custom one</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>my_lib</span> <span class=o>=</span> <span class=n>Library</span><span class=p>()</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=n>registry</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>(</span><span class=n>library</span><span class=o>=</span><span class=n>my_lib</span><span class=p>)</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># Usage</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-10 name=__codelineno-0-10 href=#__codelineno-0-10></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-11 name=__codelineno-0-11 href=#__codelineno-0-11></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-12 name=__codelineno-0-12 href=#__codelineno-0-12></a><span class=n>registry</span><span class=o>.</span><span class=n>clear</span><span class=p>()</span>
<a id=__codelineno-0-13 name=__codelineno-0-13 href=#__codelineno-0-13></a><span class=n>registry</span><span class=o>.</span><span class=n>get</span><span class=p>()</span>
</code></pre></div> <p><span class=doc-section-title>Methods:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry.all href=../#django_components.component_registry.ComponentRegistry.all>all</a></code></b> <div class=doc-md-description> <p>Retrieve all registered component classes.</p> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry.clear href=../#django_components.component_registry.ComponentRegistry.clear>clear</a></code></b> <div class=doc-md-description> <p>Clears the registry, unregistering all components.</p> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry.get href=../#django_components.component_registry.ComponentRegistry.get>get</a></code></b> <div class=doc-md-description> <p>Retrieve a component class registered under the given name.</p> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry.register href=../#django_components.component_registry.ComponentRegistry.register>register</a></code></b> <div class=doc-md-description> <p>Register a component with this registry under the given name.</p> </div> </li> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry.unregister href=../#django_components.component_registry.ComponentRegistry.unregister>unregister</a></code></b> <div class=doc-md-description> <p>Unlinks a previously-registered component from the registry under the given name.</p> </div> </li> </ul> <p><span class=doc-section-title>Attributes:</span></p> <ul> <li class="doc-section-item field-body"> <b><code><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry.library href=../#django_components.component_registry.ComponentRegistry.library>library</a></code></b> (<code><span title=django.template.Library>Library</span></code>) <div class=doc-md-description> <p>The template tag library with which the component registry is associated.</p> </div> </li> </ul> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-86>86</a></span>
<span class=normal><a href=#__codelineno-0-87>87</a></span>
<span class=normal><a href=#__codelineno-0-88>88</a></span>
<span class=normal><a href=#__codelineno-0-89>89</a></span>
<span class=normal><a href=#__codelineno-0-90>90</a></span>
<span class=normal><a href=#__codelineno-0-91>91</a></span>
<span class=normal><a href=#__codelineno-0-92>92</a></span>
<span class=normal><a href=#__codelineno-0-93>93</a></span>
<span class=normal><a href=#__codelineno-0-94>94</a></span>
<span class=normal><a href=#__codelineno-0-95>95</a></span>
<span class=normal><a href=#__codelineno-0-96>96</a></span>
<span class=normal><a href=#__codelineno-0-97>97</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-86 name=__codelineno-0-86></a><span class=k>def</span> <span class=fm>__init__</span><span class=p>(</span>
<a id=__codelineno-0-87 name=__codelineno-0-87></a> <span class=bp>self</span><span class=p>,</span>
<a id=__codelineno-0-88 name=__codelineno-0-88></a> <span class=n>library</span><span class=p>:</span> <span class=n>Optional</span><span class=p>[</span><span class=n>Library</span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-89 name=__codelineno-0-89></a> <span class=n>settings</span><span class=p>:</span> <span class=n>Optional</span><span class=p>[</span><span class=n>Union</span><span class=p>[</span><span class=n>RegistrySettings</span><span class=p>,</span> <span class=n>Callable</span><span class=p>[[</span><span class=s2>&quot;ComponentRegistry&quot;</span><span class=p>],</span> <span class=n>RegistrySettings</span><span class=p>]]]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>,</span>
<a id=__codelineno-0-90 name=__codelineno-0-90></a><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-91 name=__codelineno-0-91></a> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=p>:</span> <span class=n>Dict</span><span class=p>[</span><span class=nb>str</span><span class=p>,</span> <span class=n>ComponentRegistryEntry</span><span class=p>]</span> <span class=o>=</span> <span class=p>{}</span> <span class=c1># component name -&gt; component_entry mapping</span>
<a id=__codelineno-0-92 name=__codelineno-0-92></a> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>:</span> <span class=n>Dict</span><span class=p>[</span><span class=nb>str</span><span class=p>,</span> <span class=n>Set</span><span class=p>[</span><span class=nb>str</span><span class=p>]]</span> <span class=o>=</span> <span class=p>{}</span> <span class=c1># tag -&gt; list[component names]</span>
<a id=__codelineno-0-93 name=__codelineno-0-93></a> <span class=bp>self</span><span class=o>.</span><span class=n>_library</span> <span class=o>=</span> <span class=n>library</span>
<a id=__codelineno-0-94 name=__codelineno-0-94></a> <span class=bp>self</span><span class=o>.</span><span class=n>_settings_input</span> <span class=o>=</span> <span class=n>settings</span>
<a id=__codelineno-0-95 name=__codelineno-0-95></a> <span class=bp>self</span><span class=o>.</span><span class=n>_settings</span><span class=p>:</span> <span class=n>Optional</span><span class=p>[</span><span class=n>Callable</span><span class=p>[[],</span> <span class=n>InternalRegistrySettings</span><span class=p>]]</span> <span class=o>=</span> <span class=kc>None</span>
<a id=__codelineno-0-96 name=__codelineno-0-96></a>
<a id=__codelineno-0-97 name=__codelineno-0-97></a> <span class=n>all_registries</span><span class=o>.</span><span class=n>append</span><span class=p>(</span><span class=bp>self</span><span class=p>)</span>
</code></pre></div></td></tr></table></div> </details> <div class="doc doc-children"> <div class="doc doc-object doc-attribute"> <h3 id=django_components.component_registry.ComponentRegistry.library class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-attribute"></code> <span class="doc doc-object-name doc-attribute-name">library</span> <span class="doc doc-labels"> <small class="doc doc-label doc-label-property"><code>property</code></small> </span> <a href=#django_components.component_registry.ComponentRegistry.library class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>library</span><span class=p>:</span> <span class=n><span title=django.template.Library>Library</span></span>
</code></pre></div> <div class="doc doc-contents "> <p>The template tag library with which the component registry is associated.</p> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.component_registry.ComponentRegistry.all class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">all</span> <a href=#django_components.component_registry.ComponentRegistry.all class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nb>all</span><span class=p>()</span> <span class=o>-&gt;</span> <span class=nf><a class="autorefs autorefs-external" title=typing.Dict href=https://docs.python.org/3.12/library/typing.html#typing.Dict>Dict</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=django_components.component.Component href=../#django_components.component.Component>Component</a></span><span class=p>]]</span>
</code></pre></div> <div class="doc doc-contents "> <p>Retrieve all registered component classes.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register components</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Then get all</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=c1># &gt; {</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=c1># &gt; &quot;button&quot;: ButtonComponent,</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># &gt; &quot;card&quot;: CardComponent,</span>
<a id=__codelineno-0-9 name=__codelineno-0-9 href=#__codelineno-0-9></a><span class=c1># &gt; }</span>
</code></pre></div> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-249>249</a></span>
<span class=normal><a href=#__codelineno-0-250>250</a></span>
<span class=normal><a href=#__codelineno-0-251>251</a></span>
<span class=normal><a href=#__codelineno-0-252>252</a></span>
<span class=normal><a href=#__codelineno-0-253>253</a></span>
<span class=normal><a href=#__codelineno-0-254>254</a></span>
<span class=normal><a href=#__codelineno-0-255>255</a></span>
<span class=normal><a href=#__codelineno-0-256>256</a></span>
<span class=normal><a href=#__codelineno-0-257>257</a></span>
<span class=normal><a href=#__codelineno-0-258>258</a></span>
<span class=normal><a href=#__codelineno-0-259>259</a></span>
<span class=normal><a href=#__codelineno-0-260>260</a></span>
<span class=normal><a href=#__codelineno-0-261>261</a></span>
<span class=normal><a href=#__codelineno-0-262>262</a></span>
<span class=normal><a href=#__codelineno-0-263>263</a></span>
<span class=normal><a href=#__codelineno-0-264>264</a></span>
<span class=normal><a href=#__codelineno-0-265>265</a></span>
<span class=normal><a href=#__codelineno-0-266>266</a></span>
<span class=normal><a href=#__codelineno-0-267>267</a></span>
<span class=normal><a href=#__codelineno-0-268>268</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-249 name=__codelineno-0-249></a><span class=k>def</span> <span class=nf>all</span><span class=p>(</span><span class=bp>self</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n>Dict</span><span class=p>[</span><span class=nb>str</span><span class=p>,</span> <span class=n>Type</span><span class=p>[</span><span class=s2>&quot;Component&quot;</span><span class=p>]]:</span>
<a id=__codelineno-0-250 name=__codelineno-0-250></a><span class=w> </span><span class=sd>&quot;&quot;&quot;</span>
<a id=__codelineno-0-251 name=__codelineno-0-251></a><span class=sd> Retrieve all registered component classes.</span>
<a id=__codelineno-0-252 name=__codelineno-0-252></a>
<a id=__codelineno-0-253 name=__codelineno-0-253></a><span class=sd> Example:</span>
<a id=__codelineno-0-254 name=__codelineno-0-254></a>
<a id=__codelineno-0-255 name=__codelineno-0-255></a><span class=sd> ```py</span>
<a id=__codelineno-0-256 name=__codelineno-0-256></a><span class=sd> # First register components</span>
<a id=__codelineno-0-257 name=__codelineno-0-257></a><span class=sd> registry.register(&quot;button&quot;, ButtonComponent)</span>
<a id=__codelineno-0-258 name=__codelineno-0-258></a><span class=sd> registry.register(&quot;card&quot;, CardComponent)</span>
<a id=__codelineno-0-259 name=__codelineno-0-259></a><span class=sd> # Then get all</span>
<a id=__codelineno-0-260 name=__codelineno-0-260></a><span class=sd> registry.all()</span>
<a id=__codelineno-0-261 name=__codelineno-0-261></a><span class=sd> # &gt; {</span>
<a id=__codelineno-0-262 name=__codelineno-0-262></a><span class=sd> # &gt; &quot;button&quot;: ButtonComponent,</span>
<a id=__codelineno-0-263 name=__codelineno-0-263></a><span class=sd> # &gt; &quot;card&quot;: CardComponent,</span>
<a id=__codelineno-0-264 name=__codelineno-0-264></a><span class=sd> # &gt; }</span>
<a id=__codelineno-0-265 name=__codelineno-0-265></a><span class=sd> ```</span>
<a id=__codelineno-0-266 name=__codelineno-0-266></a><span class=sd> &quot;&quot;&quot;</span>
<a id=__codelineno-0-267 name=__codelineno-0-267></a> <span class=n>comps</span> <span class=o>=</span> <span class=p>{</span><span class=n>key</span><span class=p>:</span> <span class=n>entry</span><span class=o>.</span><span class=n>cls</span> <span class=k>for</span> <span class=n>key</span><span class=p>,</span> <span class=n>entry</span> <span class=ow>in</span> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=o>.</span><span class=n>items</span><span class=p>()}</span>
<a id=__codelineno-0-268 name=__codelineno-0-268></a> <span class=k>return</span> <span class=n>comps</span>
</code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.component_registry.ComponentRegistry.clear class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">clear</span> <a href=#django_components.component_registry.ComponentRegistry.clear class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>clear</span><span class=p>()</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p>Clears the registry, unregistering all components.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register components</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;card&quot;</span><span class=p>,</span> <span class=n>CardComponent</span><span class=p>)</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=c1># Then clear</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=n>registry</span><span class=o>.</span><span class=n>clear</span><span class=p>()</span>
<a id=__codelineno-0-6 name=__codelineno-0-6 href=#__codelineno-0-6></a><span class=c1># Then get all</span>
<a id=__codelineno-0-7 name=__codelineno-0-7 href=#__codelineno-0-7></a><span class=n>registry</span><span class=o>.</span><span class=n>all</span><span class=p>()</span>
<a id=__codelineno-0-8 name=__codelineno-0-8 href=#__codelineno-0-8></a><span class=c1># &gt; {}</span>
</code></pre></div> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-270>270</a></span>
<span class=normal><a href=#__codelineno-0-271>271</a></span>
<span class=normal><a href=#__codelineno-0-272>272</a></span>
<span class=normal><a href=#__codelineno-0-273>273</a></span>
<span class=normal><a href=#__codelineno-0-274>274</a></span>
<span class=normal><a href=#__codelineno-0-275>275</a></span>
<span class=normal><a href=#__codelineno-0-276>276</a></span>
<span class=normal><a href=#__codelineno-0-277>277</a></span>
<span class=normal><a href=#__codelineno-0-278>278</a></span>
<span class=normal><a href=#__codelineno-0-279>279</a></span>
<span class=normal><a href=#__codelineno-0-280>280</a></span>
<span class=normal><a href=#__codelineno-0-281>281</a></span>
<span class=normal><a href=#__codelineno-0-282>282</a></span>
<span class=normal><a href=#__codelineno-0-283>283</a></span>
<span class=normal><a href=#__codelineno-0-284>284</a></span>
<span class=normal><a href=#__codelineno-0-285>285</a></span>
<span class=normal><a href=#__codelineno-0-286>286</a></span>
<span class=normal><a href=#__codelineno-0-287>287</a></span>
<span class=normal><a href=#__codelineno-0-288>288</a></span>
<span class=normal><a href=#__codelineno-0-289>289</a></span>
<span class=normal><a href=#__codelineno-0-290>290</a></span>
<span class=normal><a href=#__codelineno-0-291>291</a></span>
<span class=normal><a href=#__codelineno-0-292>292</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-270 name=__codelineno-0-270></a><span class=k>def</span> <span class=nf>clear</span><span class=p>(</span><span class=bp>self</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-271 name=__codelineno-0-271></a><span class=w> </span><span class=sd>&quot;&quot;&quot;</span>
<a id=__codelineno-0-272 name=__codelineno-0-272></a><span class=sd> Clears the registry, unregistering all components.</span>
<a id=__codelineno-0-273 name=__codelineno-0-273></a>
<a id=__codelineno-0-274 name=__codelineno-0-274></a><span class=sd> Example:</span>
<a id=__codelineno-0-275 name=__codelineno-0-275></a>
<a id=__codelineno-0-276 name=__codelineno-0-276></a><span class=sd> ```py</span>
<a id=__codelineno-0-277 name=__codelineno-0-277></a><span class=sd> # First register components</span>
<a id=__codelineno-0-278 name=__codelineno-0-278></a><span class=sd> registry.register(&quot;button&quot;, ButtonComponent)</span>
<a id=__codelineno-0-279 name=__codelineno-0-279></a><span class=sd> registry.register(&quot;card&quot;, CardComponent)</span>
<a id=__codelineno-0-280 name=__codelineno-0-280></a><span class=sd> # Then clear</span>
<a id=__codelineno-0-281 name=__codelineno-0-281></a><span class=sd> registry.clear()</span>
<a id=__codelineno-0-282 name=__codelineno-0-282></a><span class=sd> # Then get all</span>
<a id=__codelineno-0-283 name=__codelineno-0-283></a><span class=sd> registry.all()</span>
<a id=__codelineno-0-284 name=__codelineno-0-284></a><span class=sd> # &gt; {}</span>
<a id=__codelineno-0-285 name=__codelineno-0-285></a><span class=sd> ```</span>
<a id=__codelineno-0-286 name=__codelineno-0-286></a><span class=sd> &quot;&quot;&quot;</span>
<a id=__codelineno-0-287 name=__codelineno-0-287></a> <span class=n>all_comp_names</span> <span class=o>=</span> <span class=nb>list</span><span class=p>(</span><span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=o>.</span><span class=n>keys</span><span class=p>())</span>
<a id=__codelineno-0-288 name=__codelineno-0-288></a> <span class=k>for</span> <span class=n>comp_name</span> <span class=ow>in</span> <span class=n>all_comp_names</span><span class=p>:</span>
<a id=__codelineno-0-289 name=__codelineno-0-289></a> <span class=bp>self</span><span class=o>.</span><span class=n>unregister</span><span class=p>(</span><span class=n>comp_name</span><span class=p>)</span>
<a id=__codelineno-0-290 name=__codelineno-0-290></a>
<a id=__codelineno-0-291 name=__codelineno-0-291></a> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span> <span class=o>=</span> <span class=p>{}</span>
<a id=__codelineno-0-292 name=__codelineno-0-292></a> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span> <span class=o>=</span> <span class=p>{}</span>
</code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.component_registry.ComponentRegistry.get class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">get</span> <a href=#django_components.component_registry.ComponentRegistry.get class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>get</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=django_components.component.Component href=../#django_components.component.Component>Component</a></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p>Retrieve a component class registered under the given name.</p> <p>Raises <code>NotRegistered</code> if the given name is not registered.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=c1># First register component</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a><span class=c1># Then get</span>
<a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a><span class=n>registry</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
<a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a><span class=c1># &gt; ButtonComponent</span>
</code></pre></div> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-228>228</a></span>
<span class=normal><a href=#__codelineno-0-229>229</a></span>
<span class=normal><a href=#__codelineno-0-230>230</a></span>
<span class=normal><a href=#__codelineno-0-231>231</a></span>
<span class=normal><a href=#__codelineno-0-232>232</a></span>
<span class=normal><a href=#__codelineno-0-233>233</a></span>
<span class=normal><a href=#__codelineno-0-234>234</a></span>
<span class=normal><a href=#__codelineno-0-235>235</a></span>
<span class=normal><a href=#__codelineno-0-236>236</a></span>
<span class=normal><a href=#__codelineno-0-237>237</a></span>
<span class=normal><a href=#__codelineno-0-238>238</a></span>
<span class=normal><a href=#__codelineno-0-239>239</a></span>
<span class=normal><a href=#__codelineno-0-240>240</a></span>
<span class=normal><a href=#__codelineno-0-241>241</a></span>
<span class=normal><a href=#__codelineno-0-242>242</a></span>
<span class=normal><a href=#__codelineno-0-243>243</a></span>
<span class=normal><a href=#__codelineno-0-244>244</a></span>
<span class=normal><a href=#__codelineno-0-245>245</a></span>
<span class=normal><a href=#__codelineno-0-246>246</a></span>
<span class=normal><a href=#__codelineno-0-247>247</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-228 name=__codelineno-0-228></a><span class=k>def</span> <span class=nf>get</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n>Type</span><span class=p>[</span><span class=s2>&quot;Component&quot;</span><span class=p>]:</span>
<a id=__codelineno-0-229 name=__codelineno-0-229></a><span class=w> </span><span class=sd>&quot;&quot;&quot;</span>
<a id=__codelineno-0-230 name=__codelineno-0-230></a><span class=sd> Retrieve a component class registered under the given name.</span>
<a id=__codelineno-0-231 name=__codelineno-0-231></a>
<a id=__codelineno-0-232 name=__codelineno-0-232></a><span class=sd> Raises `NotRegistered` if the given name is not registered.</span>
<a id=__codelineno-0-233 name=__codelineno-0-233></a>
<a id=__codelineno-0-234 name=__codelineno-0-234></a><span class=sd> Example:</span>
<a id=__codelineno-0-235 name=__codelineno-0-235></a>
<a id=__codelineno-0-236 name=__codelineno-0-236></a><span class=sd> ```py</span>
<a id=__codelineno-0-237 name=__codelineno-0-237></a><span class=sd> # First register component</span>
<a id=__codelineno-0-238 name=__codelineno-0-238></a><span class=sd> registry.register(&quot;button&quot;, ButtonComponent)</span>
<a id=__codelineno-0-239 name=__codelineno-0-239></a><span class=sd> # Then get</span>
<a id=__codelineno-0-240 name=__codelineno-0-240></a><span class=sd> registry.get(&quot;button&quot;)</span>
<a id=__codelineno-0-241 name=__codelineno-0-241></a><span class=sd> # &gt; ButtonComponent</span>
<a id=__codelineno-0-242 name=__codelineno-0-242></a><span class=sd> ```</span>
<a id=__codelineno-0-243 name=__codelineno-0-243></a><span class=sd> &quot;&quot;&quot;</span>
<a id=__codelineno-0-244 name=__codelineno-0-244></a> <span class=k>if</span> <span class=n>name</span> <span class=ow>not</span> <span class=ow>in</span> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=p>:</span>
<a id=__codelineno-0-245 name=__codelineno-0-245></a> <span class=k>raise</span> <span class=n>NotRegistered</span><span class=p>(</span><span class=s1>&#39;The component &quot;</span><span class=si>%s</span><span class=s1>&quot; is not registered&#39;</span> <span class=o>%</span> <span class=n>name</span><span class=p>)</span>
<a id=__codelineno-0-246 name=__codelineno-0-246></a>
<a id=__codelineno-0-247 name=__codelineno-0-247></a> <span class=k>return</span> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=p>[</span><span class=n>name</span><span class=p>]</span><span class=o>.</span><span class=n>cls</span>
</code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.component_registry.ComponentRegistry.register class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">register</span> <a href=#django_components.component_registry.ComponentRegistry.register class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>register</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n>component</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Type href=https://docs.python.org/3.12/library/typing.html#typing.Type>Type</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=django_components.component.Component href=../#django_components.component.Component>Component</a></span><span class=p>])</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p>Register a component with this registry under the given name.</p> <p>A component MUST be registered before it can be used in a template such as: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=cp>%}{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div></p> <p>Raises <code>AlreadyRegistered</code> if a different component was already registered under the same name.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
</code></pre></div> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-150>150</a></span>
<span class=normal><a href=#__codelineno-0-151>151</a></span>
<span class=normal><a href=#__codelineno-0-152>152</a></span>
<span class=normal><a href=#__codelineno-0-153>153</a></span>
<span class=normal><a href=#__codelineno-0-154>154</a></span>
<span class=normal><a href=#__codelineno-0-155>155</a></span>
<span class=normal><a href=#__codelineno-0-156>156</a></span>
<span class=normal><a href=#__codelineno-0-157>157</a></span>
<span class=normal><a href=#__codelineno-0-158>158</a></span>
<span class=normal><a href=#__codelineno-0-159>159</a></span>
<span class=normal><a href=#__codelineno-0-160>160</a></span>
<span class=normal><a href=#__codelineno-0-161>161</a></span>
<span class=normal><a href=#__codelineno-0-162>162</a></span>
<span class=normal><a href=#__codelineno-0-163>163</a></span>
<span class=normal><a href=#__codelineno-0-164>164</a></span>
<span class=normal><a href=#__codelineno-0-165>165</a></span>
<span class=normal><a href=#__codelineno-0-166>166</a></span>
<span class=normal><a href=#__codelineno-0-167>167</a></span>
<span class=normal><a href=#__codelineno-0-168>168</a></span>
<span class=normal><a href=#__codelineno-0-169>169</a></span>
<span class=normal><a href=#__codelineno-0-170>170</a></span>
<span class=normal><a href=#__codelineno-0-171>171</a></span>
<span class=normal><a href=#__codelineno-0-172>172</a></span>
<span class=normal><a href=#__codelineno-0-173>173</a></span>
<span class=normal><a href=#__codelineno-0-174>174</a></span>
<span class=normal><a href=#__codelineno-0-175>175</a></span>
<span class=normal><a href=#__codelineno-0-176>176</a></span>
<span class=normal><a href=#__codelineno-0-177>177</a></span>
<span class=normal><a href=#__codelineno-0-178>178</a></span>
<span class=normal><a href=#__codelineno-0-179>179</a></span>
<span class=normal><a href=#__codelineno-0-180>180</a></span>
<span class=normal><a href=#__codelineno-0-181>181</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-150 name=__codelineno-0-150></a><span class=k>def</span> <span class=nf>register</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>,</span> <span class=n>component</span><span class=p>:</span> <span class=n>Type</span><span class=p>[</span><span class=s2>&quot;Component&quot;</span><span class=p>])</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-151 name=__codelineno-0-151></a><span class=w> </span><span class=sd>&quot;&quot;&quot;</span>
<a id=__codelineno-0-152 name=__codelineno-0-152></a><span class=sd> Register a component with this registry under the given name.</span>
<a id=__codelineno-0-153 name=__codelineno-0-153></a>
<a id=__codelineno-0-154 name=__codelineno-0-154></a><span class=sd> A component MUST be registered before it can be used in a template such as:</span>
<a id=__codelineno-0-155 name=__codelineno-0-155></a><span class=sd> ```django</span>
<a id=__codelineno-0-156 name=__codelineno-0-156></a><span class=sd> {% component &quot;my_comp&quot; %}{% endcomponent %}</span>
<a id=__codelineno-0-157 name=__codelineno-0-157></a><span class=sd> ```</span>
<a id=__codelineno-0-158 name=__codelineno-0-158></a>
<a id=__codelineno-0-159 name=__codelineno-0-159></a><span class=sd> Raises `AlreadyRegistered` if a different component was already registered</span>
<a id=__codelineno-0-160 name=__codelineno-0-160></a><span class=sd> under the same name.</span>
<a id=__codelineno-0-161 name=__codelineno-0-161></a>
<a id=__codelineno-0-162 name=__codelineno-0-162></a><span class=sd> Example:</span>
<a id=__codelineno-0-163 name=__codelineno-0-163></a>
<a id=__codelineno-0-164 name=__codelineno-0-164></a><span class=sd> ```py</span>
<a id=__codelineno-0-165 name=__codelineno-0-165></a><span class=sd> registry.register(&quot;button&quot;, ButtonComponent)</span>
<a id=__codelineno-0-166 name=__codelineno-0-166></a><span class=sd> ```</span>
<a id=__codelineno-0-167 name=__codelineno-0-167></a><span class=sd> &quot;&quot;&quot;</span>
<a id=__codelineno-0-168 name=__codelineno-0-168></a> <span class=n>existing_component</span> <span class=o>=</span> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=n>name</span><span class=p>)</span>
<a id=__codelineno-0-169 name=__codelineno-0-169></a> <span class=k>if</span> <span class=n>existing_component</span> <span class=ow>and</span> <span class=n>existing_component</span><span class=o>.</span><span class=n>cls</span><span class=o>.</span><span class=n>_class_hash</span> <span class=o>!=</span> <span class=n>component</span><span class=o>.</span><span class=n>_class_hash</span><span class=p>:</span>
<a id=__codelineno-0-170 name=__codelineno-0-170></a> <span class=k>raise</span> <span class=n>AlreadyRegistered</span><span class=p>(</span><span class=s1>&#39;The component &quot;</span><span class=si>%s</span><span class=s1>&quot; has already been registered&#39;</span> <span class=o>%</span> <span class=n>name</span><span class=p>)</span>
<a id=__codelineno-0-171 name=__codelineno-0-171></a>
<a id=__codelineno-0-172 name=__codelineno-0-172></a> <span class=n>entry</span> <span class=o>=</span> <span class=bp>self</span><span class=o>.</span><span class=n>_register_to_library</span><span class=p>(</span><span class=n>name</span><span class=p>,</span> <span class=n>component</span><span class=p>)</span>
<a id=__codelineno-0-173 name=__codelineno-0-173></a>
<a id=__codelineno-0-174 name=__codelineno-0-174></a> <span class=c1># Keep track of which components use which tags, because multiple components may</span>
<a id=__codelineno-0-175 name=__codelineno-0-175></a> <span class=c1># use the same tag.</span>
<a id=__codelineno-0-176 name=__codelineno-0-176></a> <span class=n>tag</span> <span class=o>=</span> <span class=n>entry</span><span class=o>.</span><span class=n>tag</span>
<a id=__codelineno-0-177 name=__codelineno-0-177></a> <span class=k>if</span> <span class=n>tag</span> <span class=ow>not</span> <span class=ow>in</span> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>:</span>
<a id=__codelineno-0-178 name=__codelineno-0-178></a> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>[</span><span class=n>tag</span><span class=p>]</span> <span class=o>=</span> <span class=nb>set</span><span class=p>()</span>
<a id=__codelineno-0-179 name=__codelineno-0-179></a> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>[</span><span class=n>tag</span><span class=p>]</span><span class=o>.</span><span class=n>add</span><span class=p>(</span><span class=n>name</span><span class=p>)</span>
<a id=__codelineno-0-180 name=__codelineno-0-180></a>
<a id=__codelineno-0-181 name=__codelineno-0-181></a> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=p>[</span><span class=n>name</span><span class=p>]</span> <span class=o>=</span> <span class=n>entry</span>
</code></pre></div></td></tr></table></div> </details> </div> </div> <div class="doc doc-object doc-function"> <h3 id=django_components.component_registry.ComponentRegistry.unregister class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-method"></code> <span class="doc doc-object-name doc-function-name">unregister</span> <a href=#django_components.component_registry.ComponentRegistry.unregister class=headerlink title="Permanent link">¤</a></h3> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>unregister</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span>
</code></pre></div> <div class="doc doc-contents "> <p>Unlinks a previously-registered component from the registry under the given name.</p> <p>Once a component is unregistered, it CANNOT be used in a template anymore. Following would raise an error: <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=cp>{%</span> <span class=k>component</span> <span class=s2>&quot;my_comp&quot;</span> <span class=cp>%}{%</span> <span class=k>endcomponent</span> <span class=cp>%}</span>
</code></pre></div></p> <p>Raises <code>NotRegistered</code> if the given name is not registered.</p> <p>Example:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=c1># First register component</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>,</span> <span class=n>ButtonComponent</span><span class=p>)</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a><span class=c1># Then unregister</span>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=n>registry</span><span class=o>.</span><span class=n>unregister</span><span class=p>(</span><span class=s2>&quot;button&quot;</span><span class=p>)</span>
</code></pre></div> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-183>183</a></span>
<span class=normal><a href=#__codelineno-0-184>184</a></span>
<span class=normal><a href=#__codelineno-0-185>185</a></span>
<span class=normal><a href=#__codelineno-0-186>186</a></span>
<span class=normal><a href=#__codelineno-0-187>187</a></span>
<span class=normal><a href=#__codelineno-0-188>188</a></span>
<span class=normal><a href=#__codelineno-0-189>189</a></span>
<span class=normal><a href=#__codelineno-0-190>190</a></span>
<span class=normal><a href=#__codelineno-0-191>191</a></span>
<span class=normal><a href=#__codelineno-0-192>192</a></span>
<span class=normal><a href=#__codelineno-0-193>193</a></span>
<span class=normal><a href=#__codelineno-0-194>194</a></span>
<span class=normal><a href=#__codelineno-0-195>195</a></span>
<span class=normal><a href=#__codelineno-0-196>196</a></span>
<span class=normal><a href=#__codelineno-0-197>197</a></span>
<span class=normal><a href=#__codelineno-0-198>198</a></span>
<span class=normal><a href=#__codelineno-0-199>199</a></span>
<span class=normal><a href=#__codelineno-0-200>200</a></span>
<span class=normal><a href=#__codelineno-0-201>201</a></span>
<span class=normal><a href=#__codelineno-0-202>202</a></span>
<span class=normal><a href=#__codelineno-0-203>203</a></span>
<span class=normal><a href=#__codelineno-0-204>204</a></span>
<span class=normal><a href=#__codelineno-0-205>205</a></span>
<span class=normal><a href=#__codelineno-0-206>206</a></span>
<span class=normal><a href=#__codelineno-0-207>207</a></span>
<span class=normal><a href=#__codelineno-0-208>208</a></span>
<span class=normal><a href=#__codelineno-0-209>209</a></span>
<span class=normal><a href=#__codelineno-0-210>210</a></span>
<span class=normal><a href=#__codelineno-0-211>211</a></span>
<span class=normal><a href=#__codelineno-0-212>212</a></span>
<span class=normal><a href=#__codelineno-0-213>213</a></span>
<span class=normal><a href=#__codelineno-0-214>214</a></span>
<span class=normal><a href=#__codelineno-0-215>215</a></span>
<span class=normal><a href=#__codelineno-0-216>216</a></span>
<span class=normal><a href=#__codelineno-0-217>217</a></span>
<span class=normal><a href=#__codelineno-0-218>218</a></span>
<span class=normal><a href=#__codelineno-0-219>219</a></span>
<span class=normal><a href=#__codelineno-0-220>220</a></span>
<span class=normal><a href=#__codelineno-0-221>221</a></span>
<span class=normal><a href=#__codelineno-0-222>222</a></span>
<span class=normal><a href=#__codelineno-0-223>223</a></span>
<span class=normal><a href=#__codelineno-0-224>224</a></span>
<span class=normal><a href=#__codelineno-0-225>225</a></span>
<span class=normal><a href=#__codelineno-0-226>226</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-183 name=__codelineno-0-183></a><span class=k>def</span> <span class=nf>unregister</span><span class=p>(</span><span class=bp>self</span><span class=p>,</span> <span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-184 name=__codelineno-0-184></a><span class=w> </span><span class=sd>&quot;&quot;&quot;</span>
<a id=__codelineno-0-185 name=__codelineno-0-185></a><span class=sd> Unlinks a previously-registered component from the registry under the given name.</span>
<a id=__codelineno-0-186 name=__codelineno-0-186></a>
<a id=__codelineno-0-187 name=__codelineno-0-187></a><span class=sd> Once a component is unregistered, it CANNOT be used in a template anymore.</span>
<a id=__codelineno-0-188 name=__codelineno-0-188></a><span class=sd> Following would raise an error:</span>
<a id=__codelineno-0-189 name=__codelineno-0-189></a><span class=sd> ```django</span>
<a id=__codelineno-0-190 name=__codelineno-0-190></a><span class=sd> {% component &quot;my_comp&quot; %}{% endcomponent %}</span>
<a id=__codelineno-0-191 name=__codelineno-0-191></a><span class=sd> ```</span>
<a id=__codelineno-0-192 name=__codelineno-0-192></a>
<a id=__codelineno-0-193 name=__codelineno-0-193></a><span class=sd> Raises `NotRegistered` if the given name is not registered.</span>
<a id=__codelineno-0-194 name=__codelineno-0-194></a>
<a id=__codelineno-0-195 name=__codelineno-0-195></a><span class=sd> Example:</span>
<a id=__codelineno-0-196 name=__codelineno-0-196></a>
<a id=__codelineno-0-197 name=__codelineno-0-197></a><span class=sd> ```py</span>
<a id=__codelineno-0-198 name=__codelineno-0-198></a><span class=sd> # First register component</span>
<a id=__codelineno-0-199 name=__codelineno-0-199></a><span class=sd> registry.register(&quot;button&quot;, ButtonComponent)</span>
<a id=__codelineno-0-200 name=__codelineno-0-200></a><span class=sd> # Then unregister</span>
<a id=__codelineno-0-201 name=__codelineno-0-201></a><span class=sd> registry.unregister(&quot;button&quot;)</span>
<a id=__codelineno-0-202 name=__codelineno-0-202></a><span class=sd> ```</span>
<a id=__codelineno-0-203 name=__codelineno-0-203></a><span class=sd> &quot;&quot;&quot;</span>
<a id=__codelineno-0-204 name=__codelineno-0-204></a> <span class=c1># Validate</span>
<a id=__codelineno-0-205 name=__codelineno-0-205></a> <span class=bp>self</span><span class=o>.</span><span class=n>get</span><span class=p>(</span><span class=n>name</span><span class=p>)</span>
<a id=__codelineno-0-206 name=__codelineno-0-206></a>
<a id=__codelineno-0-207 name=__codelineno-0-207></a> <span class=n>entry</span> <span class=o>=</span> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=p>[</span><span class=n>name</span><span class=p>]</span>
<a id=__codelineno-0-208 name=__codelineno-0-208></a> <span class=n>tag</span> <span class=o>=</span> <span class=n>entry</span><span class=o>.</span><span class=n>tag</span>
<a id=__codelineno-0-209 name=__codelineno-0-209></a>
<a id=__codelineno-0-210 name=__codelineno-0-210></a> <span class=c1># Unregister the tag from library if this was the last component using this tag</span>
<a id=__codelineno-0-211 name=__codelineno-0-211></a> <span class=c1># Unlink component from tag</span>
<a id=__codelineno-0-212 name=__codelineno-0-212></a> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>[</span><span class=n>tag</span><span class=p>]</span><span class=o>.</span><span class=n>remove</span><span class=p>(</span><span class=n>name</span><span class=p>)</span>
<a id=__codelineno-0-213 name=__codelineno-0-213></a>
<a id=__codelineno-0-214 name=__codelineno-0-214></a> <span class=c1># Cleanup</span>
<a id=__codelineno-0-215 name=__codelineno-0-215></a> <span class=n>is_tag_empty</span> <span class=o>=</span> <span class=ow>not</span> <span class=nb>len</span><span class=p>(</span><span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>[</span><span class=n>tag</span><span class=p>])</span>
<a id=__codelineno-0-216 name=__codelineno-0-216></a> <span class=k>if</span> <span class=n>is_tag_empty</span><span class=p>:</span>
<a id=__codelineno-0-217 name=__codelineno-0-217></a> <span class=k>del</span> <span class=bp>self</span><span class=o>.</span><span class=n>_tags</span><span class=p>[</span><span class=n>tag</span><span class=p>]</span>
<a id=__codelineno-0-218 name=__codelineno-0-218></a>
<a id=__codelineno-0-219 name=__codelineno-0-219></a> <span class=c1># Only unregister a tag if it&#39;s NOT protected</span>
<a id=__codelineno-0-220 name=__codelineno-0-220></a> <span class=n>is_protected</span> <span class=o>=</span> <span class=n>is_tag_protected</span><span class=p>(</span><span class=bp>self</span><span class=o>.</span><span class=n>library</span><span class=p>,</span> <span class=n>tag</span><span class=p>)</span>
<a id=__codelineno-0-221 name=__codelineno-0-221></a> <span class=k>if</span> <span class=ow>not</span> <span class=n>is_protected</span><span class=p>:</span>
<a id=__codelineno-0-222 name=__codelineno-0-222></a> <span class=c1># Unregister the tag from library if this was the last component using this tag</span>
<a id=__codelineno-0-223 name=__codelineno-0-223></a> <span class=k>if</span> <span class=n>is_tag_empty</span> <span class=ow>and</span> <span class=n>tag</span> <span class=ow>in</span> <span class=bp>self</span><span class=o>.</span><span class=n>library</span><span class=o>.</span><span class=n>tags</span><span class=p>:</span>
<a id=__codelineno-0-224 name=__codelineno-0-224></a> <span class=k>del</span> <span class=bp>self</span><span class=o>.</span><span class=n>library</span><span class=o>.</span><span class=n>tags</span><span class=p>[</span><span class=n>tag</span><span class=p>]</span>
<a id=__codelineno-0-225 name=__codelineno-0-225></a>
<a id=__codelineno-0-226 name=__codelineno-0-226></a> <span class=k>del</span> <span class=bp>self</span><span class=o>.</span><span class=n>_registry</span><span class=p>[</span><span class=n>name</span><span class=p>]</span>
</code></pre></div></td></tr></table></div> </details> </div> </div> </div> </div> </div> <div class="doc doc-object doc-function"> <h2 id=django_components.component_registry.register class="doc doc-heading"> <code class="doc-symbol doc-symbol-heading doc-symbol-function"></code> <span class="doc doc-object-name doc-function-name">register</span> <a href=#django_components.component_registry.register class=headerlink title="Permanent link">¤</a></h2> <div class="doc-signature highlight"><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nf>register</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" href=https://docs.python.org/3.12/library/stdtypes.html#str>str</a></span><span class=p>,</span> <span class=n>registry</span><span class=p>:</span> <span class=n><a class="autorefs autorefs-external" title=typing.Optional href=https://docs.python.org/3.12/library/typing.html#typing.Optional>Optional</a></span><span class=p>[</span><span class=n><a class="autorefs autorefs-internal" title=django_components.component_registry.ComponentRegistry href=../#django_components.component_registry.ComponentRegistry>ComponentRegistry</a></span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n><a class="autorefs autorefs-external" title=typing.Callable href=https://docs.python.org/3.12/library/typing.html#typing.Callable>Callable</a></span><span class=p>[[</span><span class=n><span title=django_components.component_registry._TComp>_TComp</span></span><span class=p>],</span> <span class=n><span title=django_components.component_registry._TComp>_TComp</span></span><span class=p>]</span>
</code></pre></div> <div class="doc doc-contents "> <p>Class decorator to register a component.</p> <p>Usage:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=nd>@register</span><span class=p>(</span><span class=s2>&quot;my_component&quot;</span><span class=p>)</span>
<a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a><span class=k>class</span> <span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=o>...</span>
</code></pre></div> <p>Optionally specify which <code>ComponentRegistry</code> the component should be registered to by setting the <code>registry</code> kwarg:</p> <div class=highlight><pre><span></span><code><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>my_lib</span> <span class=o>=</span> <span class=n>django</span><span class=o>.</span><span class=n>template</span><span class=o>.</span><span class=n>Library</span><span class=p>()</span>
<a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a><span class=n>my_reg</span> <span class=o>=</span> <span class=n>ComponentRegistry</span><span class=p>(</span><span class=n>library</span><span class=o>=</span><span class=n>my_lib</span><span class=p>)</span>
<a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a>
<a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a><span class=nd>@register</span><span class=p>(</span><span class=s2>&quot;my_component&quot;</span><span class=p>,</span> <span class=n>registry</span><span class=o>=</span><span class=n>my_reg</span><span class=p>)</span>
<a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a><span class=k>class</span> <span class=nc>MyComponent</span><span class=p>(</span><span class=n>Component</span><span class=p>):</span>
<a id=__codelineno-1-6 name=__codelineno-1-6 href=#__codelineno-1-6></a> <span class=o>...</span>
</code></pre></div> <details class=quote> <summary>Source code in <code>src/django_components/component_registry.py</code></summary> <div class=highlight><table class=highlighttable><tr><td class=linenos><div class=linenodiv><pre><span></span><span class=normal><a href=#__codelineno-0-333>333</a></span>
<span class=normal><a href=#__codelineno-0-334>334</a></span>
<span class=normal><a href=#__codelineno-0-335>335</a></span>
<span class=normal><a href=#__codelineno-0-336>336</a></span>
<span class=normal><a href=#__codelineno-0-337>337</a></span>
<span class=normal><a href=#__codelineno-0-338>338</a></span>
<span class=normal><a href=#__codelineno-0-339>339</a></span>
<span class=normal><a href=#__codelineno-0-340>340</a></span>
<span class=normal><a href=#__codelineno-0-341>341</a></span>
<span class=normal><a href=#__codelineno-0-342>342</a></span>
<span class=normal><a href=#__codelineno-0-343>343</a></span>
<span class=normal><a href=#__codelineno-0-344>344</a></span>
<span class=normal><a href=#__codelineno-0-345>345</a></span>
<span class=normal><a href=#__codelineno-0-346>346</a></span>
<span class=normal><a href=#__codelineno-0-347>347</a></span>
<span class=normal><a href=#__codelineno-0-348>348</a></span>
<span class=normal><a href=#__codelineno-0-349>349</a></span>
<span class=normal><a href=#__codelineno-0-350>350</a></span>
<span class=normal><a href=#__codelineno-0-351>351</a></span>
<span class=normal><a href=#__codelineno-0-352>352</a></span>
<span class=normal><a href=#__codelineno-0-353>353</a></span>
<span class=normal><a href=#__codelineno-0-354>354</a></span>
<span class=normal><a href=#__codelineno-0-355>355</a></span>
<span class=normal><a href=#__codelineno-0-356>356</a></span>
<span class=normal><a href=#__codelineno-0-357>357</a></span>
<span class=normal><a href=#__codelineno-0-358>358</a></span>
<span class=normal><a href=#__codelineno-0-359>359</a></span>
<span class=normal><a href=#__codelineno-0-360>360</a></span>
<span class=normal><a href=#__codelineno-0-361>361</a></span>
<span class=normal><a href=#__codelineno-0-362>362</a></span>
<span class=normal><a href=#__codelineno-0-363>363</a></span>
<span class=normal><a href=#__codelineno-0-364>364</a></span></pre></div></td><td class=code><div><pre><span></span><code><a id=__codelineno-0-333 name=__codelineno-0-333></a><span class=k>def</span> <span class=nf>register</span><span class=p>(</span><span class=n>name</span><span class=p>:</span> <span class=nb>str</span><span class=p>,</span> <span class=n>registry</span><span class=p>:</span> <span class=n>Optional</span><span class=p>[</span><span class=n>ComponentRegistry</span><span class=p>]</span> <span class=o>=</span> <span class=kc>None</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n>Callable</span><span class=p>[[</span><span class=n>_TComp</span><span class=p>],</span> <span class=n>_TComp</span><span class=p>]:</span>
<a id=__codelineno-0-334 name=__codelineno-0-334></a><span class=w> </span><span class=sd>&quot;&quot;&quot;</span>
<a id=__codelineno-0-335 name=__codelineno-0-335></a><span class=sd> Class decorator to register a component.</span>
<a id=__codelineno-0-336 name=__codelineno-0-336></a>
<a id=__codelineno-0-337 name=__codelineno-0-337></a><span class=sd> Usage:</span>
<a id=__codelineno-0-338 name=__codelineno-0-338></a>
<a id=__codelineno-0-339 name=__codelineno-0-339></a><span class=sd> ```py</span>
<a id=__codelineno-0-340 name=__codelineno-0-340></a><span class=sd> @register(&quot;my_component&quot;)</span>
<a id=__codelineno-0-341 name=__codelineno-0-341></a><span class=sd> class MyComponent(Component):</span>
<a id=__codelineno-0-342 name=__codelineno-0-342></a><span class=sd> ...</span>
<a id=__codelineno-0-343 name=__codelineno-0-343></a><span class=sd> ```</span>
<a id=__codelineno-0-344 name=__codelineno-0-344></a>
<a id=__codelineno-0-345 name=__codelineno-0-345></a><span class=sd> Optionally specify which `ComponentRegistry` the component should be registered to by</span>
<a id=__codelineno-0-346 name=__codelineno-0-346></a><span class=sd> setting the `registry` kwarg:</span>
<a id=__codelineno-0-347 name=__codelineno-0-347></a>
<a id=__codelineno-0-348 name=__codelineno-0-348></a><span class=sd> ```py</span>
<a id=__codelineno-0-349 name=__codelineno-0-349></a><span class=sd> my_lib = django.template.Library()</span>
<a id=__codelineno-0-350 name=__codelineno-0-350></a><span class=sd> my_reg = ComponentRegistry(library=my_lib)</span>
<a id=__codelineno-0-351 name=__codelineno-0-351></a>
<a id=__codelineno-0-352 name=__codelineno-0-352></a><span class=sd> @register(&quot;my_component&quot;, registry=my_reg)</span>
<a id=__codelineno-0-353 name=__codelineno-0-353></a><span class=sd> class MyComponent(Component):</span>
<a id=__codelineno-0-354 name=__codelineno-0-354></a><span class=sd> ...</span>
<a id=__codelineno-0-355 name=__codelineno-0-355></a><span class=sd> ```</span>
<a id=__codelineno-0-356 name=__codelineno-0-356></a><span class=sd> &quot;&quot;&quot;</span>
<a id=__codelineno-0-357 name=__codelineno-0-357></a> <span class=k>if</span> <span class=n>registry</span> <span class=ow>is</span> <span class=kc>None</span><span class=p>:</span>
<a id=__codelineno-0-358 name=__codelineno-0-358></a> <span class=n>registry</span> <span class=o>=</span> <span class=n>_the_registry</span>
<a id=__codelineno-0-359 name=__codelineno-0-359></a>
<a id=__codelineno-0-360 name=__codelineno-0-360></a> <span class=k>def</span> <span class=nf>decorator</span><span class=p>(</span><span class=n>component</span><span class=p>:</span> <span class=n>_TComp</span><span class=p>)</span> <span class=o>-&gt;</span> <span class=n>_TComp</span><span class=p>:</span>
<a id=__codelineno-0-361 name=__codelineno-0-361></a> <span class=n>registry</span><span class=o>.</span><span class=n>register</span><span class=p>(</span><span class=n>name</span><span class=o>=</span><span class=n>name</span><span class=p>,</span> <span class=n>component</span><span class=o>=</span><span class=n>component</span><span class=p>)</span>
<a id=__codelineno-0-362 name=__codelineno-0-362></a> <span class=k>return</span> <span class=n>component</span>
<a id=__codelineno-0-363 name=__codelineno-0-363></a>
<a id=__codelineno-0-364 name=__codelineno-0-364></a> <span class=k>return</span> <span class=n>decorator</span>
</code></pre></div></td></tr></table></div> </details> </div> </div> </div> </div> </div> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=../component_media/ class="md-footer__link md-footer__link--prev" aria-label='Previous: <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_media'> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </div> <div class=md-footer__title> <span class=md-footer__direction> Previous </span> <div class=md-ellipsis> <code class="doc-symbol doc-symbol-nav doc-symbol-module"></code> component_media </div> </div> </a> <a href=../components/ class="md-footer__link md-footer__link--next" aria-label="Next: Index"> <div class=md-footer__title> <span class=md-footer__direction> Next </span> <div class=md-ellipsis> Index </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/EmilStenstrom/django-components target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href=https://pypi.org/project/django-components/ target=_blank rel=noopener title=pypi.org class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.6.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6M286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3M167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4m-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <div class=md-progress data-md-component=progress role=progressbar></div> <script id=__config type=application/json>{"base": "../../..", "features": ["content.action.edit", "content.action.view", "content.code.annotate", "content.code.copy", "content.tabs.link", "navigation.expand", "navigation.footer", "navigation.instant", "navigation.instant.progress", "navigation.indexes", "navigation.sections", "navigation.tracking", "navigation.top", "search.highlight", "search.share", "search.suggest", "toc.follow"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"alias": true, "default": ["dev"], "provider": "mike"}}</script> <script src=../../../assets/javascripts/bundle.525ec568.min.js></script> <script src=../../../assets/_markdown_exec_pyodide.js></script> <script src=../../../js/timeago.min.js></script> <script src=../../../js/timeago_mkdocs_material.js></script> </body> </html>