We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
StaticFilesConfig and virtual directories
I'm trying to write a ``FileSystemProtocol`` to load files from the package data using [importlib_resources](https://importlib-resources.readthedocs.io/en/latest/using.html#). But because ``directories`` is defined as ``DirectoryPath``, pydantic checks if the given directories exist in the local filesystem. 

This is not generally true, especially in any kind of virtual filesystem (e.g. a zipped package). I think this condition should be relaxed to support virtual filesystems.

https://github.com/starlite-api/starlite/blob/9bb6dcd57c10a591377cf8e3a537e9292566d5b9/starlite/config/static_files.py#L32

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `docs/conf.py`
Content:
```
1 import importlib.metadata
2 import os
3 import re
4 from functools import partial
5 from typing import Any
6 
7 from sphinx.addnodes import document
8 from sphinx.application import Sphinx
9 
10 __all__ = ["setup", "update_html_context"]
11 
12 
13 project = "Litestar"
14 copyright = "2023, Litestar-Org"
15 author = "Litestar-Org"
16 release = os.getenv("_LITESTAR_DOCS_BUILD_VERSION", importlib.metadata.version("litestar").rsplit(".")[0])
17 
18 extensions = [
19     "sphinx.ext.intersphinx",
20     "sphinx.ext.autosectionlabel",
21     "sphinx.ext.autodoc",
22     "sphinx.ext.napoleon",
23     "sphinx_design",
24     "auto_pytabs.sphinx_ext",
25     "tools.sphinx_ext",
26     "sphinx_copybutton",
27     "sphinxcontrib.mermaid",
28 ]
29 
30 exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
31 
32 
33 intersphinx_mapping = {
34     "python": ("https://docs.python.org/3", None),
35     "msgspec": ("https://jcristharif.com/msgspec/", None),
36     "anyio": ("https://anyio.readthedocs.io/en/stable/", None),
37     "multidict": ("https://multidict.aio-libs.org/en/stable/", None),
38     "sqlalchemy": ("https://docs.sqlalchemy.org/en/20/", None),
39     "click": ("https://click.palletsprojects.com/en/8.1.x/", None),
40     "redis": ("https://redis-py.readthedocs.io/en/stable/", None),
41     "picologging": ("https://microsoft.github.io/picologging", None),
42     "structlog": ("https://www.structlog.org/en/stable/", None),
43     "tortoise": ("https://tortoise.github.io/", None),
44     "piccolo": ("https://piccolo-orm.readthedocs.io/en/latest", None),
45     "opentelemetry": ("https://opentelemetry-python.readthedocs.io/en/latest/", None),
46 }
47 
48 
49 napoleon_google_docstring = True
50 napoleon_include_special_with_doc = True
51 napoleon_use_admonition_for_examples = True
52 napoleon_use_admonition_for_notes = True
53 napoleon_use_admonition_for_references = False
54 napoleon_attr_annotations = True
55 
56 autoclass_content = "class"
57 autodoc_class_signature = "separated"
58 autodoc_default_options = {"special-members": "__init__", "show-inheritance": True, "members": True}
59 autodoc_member_order = "bysource"
60 autodoc_typehints_format = "short"
61 
62 
63 nitpicky = True
64 nitpick_ignore = [
65     # external library / undocumented external
66     ("py:class", "BaseModel"),
67     ("py:class", "pydantic.main.BaseModel"),
68     ("py:class", "pydantic.generics.GenericModel"),
69     ("py:class", "redis.asyncio.Redis"),
70     ("py:class", "sqlalchemy.orm.decl_api.DeclarativeMeta"),
71     ("py:class", "sqlalchemy.sql.sqltypes.TupleType"),
72     ("py:class", "sqlalchemy.dialects.postgresql.named_types.ENUM"),
73     # type vars and aliases / intentionally undocumented
74     ("py:class", "RouteHandlerType"),
75     ("py:obj", "litestar.security.base.AuthType"),
76     ("py:class", "ControllerRouterHandler"),
77     ("py:class", "PathParameterDefinition"),
78     ("py:class", "BaseSessionBackendT"),
79     ("py:class", "AnyIOBackend"),
80     ("py:class", "T"),
81     ("py:class", "C"),
82     ("py:class", "EmptyType"),
83     # intentionally undocumented
84     ("py:class", "NoneType"),
85     ("py:class", "litestar._signature.field.SignatureField"),
86     ("py:class", "litestar.utils.signature.ParsedType"),
87     ("py:class", "litestar.utils.signature.ParsedSignature"),
88     ("py:class", "litestar.utils.signature.ParsedParameter"),
89     ("py:class", "litestar.utils.sync.AsyncCallable"),
90 ]
91 nitpick_ignore_regex = [
92     (r"py:.*", r"litestar\.types.*"),
93     (r"py:.*", r"litestar.*\.T"),
94     (r"py:.*", r".*R_co"),
95     (r"py:.*", r".*UserType"),
96     (r"py:.*", r"litestar\.middleware\.session\.base\.BaseSessionBackendT"),
97     (r"py:obj", r"typing\..*"),
98     (r"py:.*", r"httpx.*"),
99     # type vars
100     ("py:.*", r"litestar\.pagination\.C"),
101     ("py:.*", r"litestar.middleware.session.base.ConfigT"),
102     ("py:.*", r"multidict\..*"),
103     (r"py:.*", r"litestar\.connection\.base\.UserT"),
104     (r"py:.*", r"litestar\.connection\.base\.AuthT"),
105     (r"py:.*", r"litestar\.connection\.base\.StateT"),
106     (r"py:.*", r"litestar\.connection\.base\.HandlerT"),
107 ]
108 
109 # Warnings about missing references to those targets in the specified location will be ignored.
110 # The source of the references is taken 1:1 from the warnings as reported by Sphinx, e.g
111 # **/litestar/testing/client/async_client.py:docstring of litestar.testing.AsyncTestClient.exit_stack:1: WARNING: py:class reference target not found: AsyncExitStack
112 # would be added as: "litestar.testing.AsyncTestClient.exit_stack": {"AsyncExitStack"},
113 ignore_missing_refs = {
114     # No idea what autodoc is doing here. Possibly unfixable on our end
115     "litestar.template.base.TemplateEngineProtocol.get_template": {"litestar.template.base.T_co"},
116     "litestar.template": {"litestar.template.base.T_co"},
117     "litestar.openapi.OpenAPIController.security": {"SecurityRequirement"},
118     "litestar.contrib.sqlalchemy_1.plugin.SQLAlchemyPlugin.handle_string_type": {"BINARY", "VARBINARY", "LargeBinary"},
119     "litestar.contrib.sqlalchemy_1.plugin.SQLAlchemyPlugin.is_plugin_supported_type": {"DeclarativeMeta"},
120     re.compile(r"litestar\.plugins.*"): re.compile(".*(ModelT|DataContainerT)"),
121     re.compile(r"litestar\.contrib\.sqlalchemy\.init_plugin\.config.*"): re.compile(
122         ".*(ConnectionT|EngineT|SessionT|SessionMakerT)"
123     ),
124 }
125 
126 
127 auto_pytabs_min_version = (3, 8)
128 auto_pytabs_max_version = (3, 11)
129 auto_pytabs_compat_mode = True
130 
131 autosectionlabel_prefix_document = True
132 
133 suppress_warnings = [
134     "autosectionlabel.*",
135     "ref.python",  # TODO: remove when https://github.com/sphinx-doc/sphinx/issues/4961 is fixed
136 ]
137 
138 html_theme = "litestar_sphinx_theme"
139 html_static_path = ["_static"]
140 html_js_files = ["versioning.js"]
141 html_css_files = ["style.css"]
142 html_show_sourcelink = False
143 html_title = "Litestar Framework"
144 
145 
146 html_theme_options = {
147     "use_page_nav": False,
148     "github_repo_name": "litestar",
149     "logo": {
150         "link": "https://litestar.dev",
151     },
152     "extra_navbar_items": {
153         "Documentation": "index",
154         "Community": {
155             "Contribution Guide": "contribution-guide",
156             "Code of Conduct": "https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md",
157         },
158         "About": {
159             "Organization": "https://litestar.dev/about/organization",
160             "Releases": "https://litestar.dev/about/litestar-releases",
161         },
162         "Release notes": {
163             "2.0 migration guide": "release-notes/migration_guide_2",
164             "2.x Changelog": "https://docs.litestar.dev/2/release-notes/changelog.html",
165             "1.x Changelog": "https://docs.litestar.dev/1/release-notes/changelog.html",
166         },
167     },
168 }
169 
170 
171 def update_html_context(
172     app: Sphinx, pagename: str, templatename: str, context: dict[str, Any], doctree: document
173 ) -> None:
174     context["generate_toctree_html"] = partial(context["generate_toctree_html"], startdepth=0)
175 
176 
177 def setup(app: Sphinx) -> dict[str, bool]:
178     app.setup_extension("litestar_sphinx_theme")
179     app.setup_extension("pydata_sphinx_theme")
180     app.connect("html-page-context", update_html_context)
181 
182     return {"parallel_read_safe": True, "parallel_write_safe": True}
183
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/docs/conf.py b/docs/conf.py
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -152,18 +152,35 @@
     "extra_navbar_items": {
         "Documentation": "index",
         "Community": {
-            "Contribution Guide": "contribution-guide",
-            "Code of Conduct": "https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md",
+            "Contributing": {
+                "description": "Learn how to contribute to the Litestar project",
+                "link": "https://docs.litestar.dev/2/contribution-guide.html",
+                "icon": "contributing",
+            },
+            "Code of Conduct": {
+                "description": "Review the etiquette for interacting with the Litestar community",
+                "link": "https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md",
+                "icon": "coc",
+            },
         },
         "About": {
-            "Organization": "https://litestar.dev/about/organization",
-            "Releases": "https://litestar.dev/about/litestar-releases",
+            "Litestar Organization": {
+                "description": "Details about the Litestar organization",
+                "link": "about/organization",
+                "icon": "org",
+            },
+            "Releases": {
+                "description": "Details about the Litestar release process",
+                "link": "about/litestar-releases",
+                "icon": "releases",
+            },
         },
         "Release notes": {
             "2.0 migration guide": "release-notes/migration_guide_2",
             "2.x Changelog": "https://docs.litestar.dev/2/release-notes/changelog.html",
             "1.x Changelog": "https://docs.litestar.dev/1/release-notes/changelog.html",
         },
+        "Help": "https://github.com/orgs/litestar-org/discussions",
     },
 }

{"golden_diff": "diff --git a/docs/conf.py b/docs/conf.py\n--- a/docs/conf.py\n+++ b/docs/conf.py\n@@ -152,18 +152,35 @@\n     \"extra_navbar_items\": {\n         \"Documentation\": \"index\",\n         \"Community\": {\n-            \"Contribution Guide\": \"contribution-guide\",\n-            \"Code of Conduct\": \"https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md\",\n+            \"Contributing\": {\n+                \"description\": \"Learn how to contribute to the Litestar project\",\n+                \"link\": \"https://docs.litestar.dev/2/contribution-guide.html\",\n+                \"icon\": \"contributing\",\n+            },\n+            \"Code of Conduct\": {\n+                \"description\": \"Review the etiquette for interacting with the Litestar community\",\n+                \"link\": \"https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md\",\n+                \"icon\": \"coc\",\n+            },\n         },\n         \"About\": {\n-            \"Organization\": \"https://litestar.dev/about/organization\",\n-            \"Releases\": \"https://litestar.dev/about/litestar-releases\",\n+            \"Litestar Organization\": {\n+                \"description\": \"Details about the Litestar organization\",\n+                \"link\": \"about/organization\",\n+                \"icon\": \"org\",\n+            },\n+            \"Releases\": {\n+                \"description\": \"Details about the Litestar release process\",\n+                \"link\": \"about/litestar-releases\",\n+                \"icon\": \"releases\",\n+            },\n         },\n         \"Release notes\": {\n             \"2.0 migration guide\": \"release-notes/migration_guide_2\",\n             \"2.x Changelog\": \"https://docs.litestar.dev/2/release-notes/changelog.html\",\n             \"1.x Changelog\": \"https://docs.litestar.dev/1/release-notes/changelog.html\",\n         },\n+        \"Help\": \"https://github.com/orgs/litestar-org/discussions\",\n     },\n }\n", "issue": "StaticFilesConfig and virtual directories\nI'm trying to write a ``FileSystemProtocol`` to load files from the package data using [importlib_resources](https://importlib-resources.readthedocs.io/en/latest/using.html#). But because ``directories`` is defined as ``DirectoryPath``, pydantic checks if the given directories exist in the local filesystem. \r\n\r\nThis is not generally true, especially in any kind of virtual filesystem (e.g. a zipped package). I think this condition should be relaxed to support virtual filesystems.\r\n\r\nhttps://github.com/starlite-api/starlite/blob/9bb6dcd57c10a591377cf8e3a537e9292566d5b9/starlite/config/static_files.py#L32\n", "before_files": [{"content": "import importlib.metadata\nimport os\nimport re\nfrom functools import partial\nfrom typing import Any\n\nfrom sphinx.addnodes import document\nfrom sphinx.application import Sphinx\n\n__all__ = [\"setup\", \"update_html_context\"]\n\n\nproject = \"Litestar\"\ncopyright = \"2023, Litestar-Org\"\nauthor = \"Litestar-Org\"\nrelease = os.getenv(\"_LITESTAR_DOCS_BUILD_VERSION\", importlib.metadata.version(\"litestar\").rsplit(\".\")[0])\n\nextensions = [\n    \"sphinx.ext.intersphinx\",\n    \"sphinx.ext.autosectionlabel\",\n    \"sphinx.ext.autodoc\",\n    \"sphinx.ext.napoleon\",\n    \"sphinx_design\",\n    \"auto_pytabs.sphinx_ext\",\n    \"tools.sphinx_ext\",\n    \"sphinx_copybutton\",\n    \"sphinxcontrib.mermaid\",\n]\n\nexclude_patterns = [\"_build\", \"Thumbs.db\", \".DS_Store\"]\n\n\nintersphinx_mapping = {\n    \"python\": (\"https://docs.python.org/3\", None),\n    \"msgspec\": (\"https://jcristharif.com/msgspec/\", None),\n    \"anyio\": (\"https://anyio.readthedocs.io/en/stable/\", None),\n    \"multidict\": (\"https://multidict.aio-libs.org/en/stable/\", None),\n    \"sqlalchemy\": (\"https://docs.sqlalchemy.org/en/20/\", None),\n    \"click\": (\"https://click.palletsprojects.com/en/8.1.x/\", None),\n    \"redis\": (\"https://redis-py.readthedocs.io/en/stable/\", None),\n    \"picologging\": (\"https://microsoft.github.io/picologging\", None),\n    \"structlog\": (\"https://www.structlog.org/en/stable/\", None),\n    \"tortoise\": (\"https://tortoise.github.io/\", None),\n    \"piccolo\": (\"https://piccolo-orm.readthedocs.io/en/latest\", None),\n    \"opentelemetry\": (\"https://opentelemetry-python.readthedocs.io/en/latest/\", None),\n}\n\n\nnapoleon_google_docstring = True\nnapoleon_include_special_with_doc = True\nnapoleon_use_admonition_for_examples = True\nnapoleon_use_admonition_for_notes = True\nnapoleon_use_admonition_for_references = False\nnapoleon_attr_annotations = True\n\nautoclass_content = \"class\"\nautodoc_class_signature = \"separated\"\nautodoc_default_options = {\"special-members\": \"__init__\", \"show-inheritance\": True, \"members\": True}\nautodoc_member_order = \"bysource\"\nautodoc_typehints_format = \"short\"\n\n\nnitpicky = True\nnitpick_ignore = [\n    # external library / undocumented external\n    (\"py:class\", \"BaseModel\"),\n    (\"py:class\", \"pydantic.main.BaseModel\"),\n    (\"py:class\", \"pydantic.generics.GenericModel\"),\n    (\"py:class\", \"redis.asyncio.Redis\"),\n    (\"py:class\", \"sqlalchemy.orm.decl_api.DeclarativeMeta\"),\n    (\"py:class\", \"sqlalchemy.sql.sqltypes.TupleType\"),\n    (\"py:class\", \"sqlalchemy.dialects.postgresql.named_types.ENUM\"),\n    # type vars and aliases / intentionally undocumented\n    (\"py:class\", \"RouteHandlerType\"),\n    (\"py:obj\", \"litestar.security.base.AuthType\"),\n    (\"py:class\", \"ControllerRouterHandler\"),\n    (\"py:class\", \"PathParameterDefinition\"),\n    (\"py:class\", \"BaseSessionBackendT\"),\n    (\"py:class\", \"AnyIOBackend\"),\n    (\"py:class\", \"T\"),\n    (\"py:class\", \"C\"),\n    (\"py:class\", \"EmptyType\"),\n    # intentionally undocumented\n    (\"py:class\", \"NoneType\"),\n    (\"py:class\", \"litestar._signature.field.SignatureField\"),\n    (\"py:class\", \"litestar.utils.signature.ParsedType\"),\n    (\"py:class\", \"litestar.utils.signature.ParsedSignature\"),\n    (\"py:class\", \"litestar.utils.signature.ParsedParameter\"),\n    (\"py:class\", \"litestar.utils.sync.AsyncCallable\"),\n]\nnitpick_ignore_regex = [\n    (r\"py:.*\", r\"litestar\\.types.*\"),\n    (r\"py:.*\", r\"litestar.*\\.T\"),\n    (r\"py:.*\", r\".*R_co\"),\n    (r\"py:.*\", r\".*UserType\"),\n    (r\"py:.*\", r\"litestar\\.middleware\\.session\\.base\\.BaseSessionBackendT\"),\n    (r\"py:obj\", r\"typing\\..*\"),\n    (r\"py:.*\", r\"httpx.*\"),\n    # type vars\n    (\"py:.*\", r\"litestar\\.pagination\\.C\"),\n    (\"py:.*\", r\"litestar.middleware.session.base.ConfigT\"),\n    (\"py:.*\", r\"multidict\\..*\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.UserT\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.AuthT\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.StateT\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.HandlerT\"),\n]\n\n# Warnings about missing references to those targets in the specified location will be ignored.\n# The source of the references is taken 1:1 from the warnings as reported by Sphinx, e.g\n# **/litestar/testing/client/async_client.py:docstring of litestar.testing.AsyncTestClient.exit_stack:1: WARNING: py:class reference target not found: AsyncExitStack\n# would be added as: \"litestar.testing.AsyncTestClient.exit_stack\": {\"AsyncExitStack\"},\nignore_missing_refs = {\n    # No idea what autodoc is doing here. Possibly unfixable on our end\n    \"litestar.template.base.TemplateEngineProtocol.get_template\": {\"litestar.template.base.T_co\"},\n    \"litestar.template\": {\"litestar.template.base.T_co\"},\n    \"litestar.openapi.OpenAPIController.security\": {\"SecurityRequirement\"},\n    \"litestar.contrib.sqlalchemy_1.plugin.SQLAlchemyPlugin.handle_string_type\": {\"BINARY\", \"VARBINARY\", \"LargeBinary\"},\n    \"litestar.contrib.sqlalchemy_1.plugin.SQLAlchemyPlugin.is_plugin_supported_type\": {\"DeclarativeMeta\"},\n    re.compile(r\"litestar\\.plugins.*\"): re.compile(\".*(ModelT|DataContainerT)\"),\n    re.compile(r\"litestar\\.contrib\\.sqlalchemy\\.init_plugin\\.config.*\"): re.compile(\n        \".*(ConnectionT|EngineT|SessionT|SessionMakerT)\"\n    ),\n}\n\n\nauto_pytabs_min_version = (3, 8)\nauto_pytabs_max_version = (3, 11)\nauto_pytabs_compat_mode = True\n\nautosectionlabel_prefix_document = True\n\nsuppress_warnings = [\n    \"autosectionlabel.*\",\n    \"ref.python\",  # TODO: remove when https://github.com/sphinx-doc/sphinx/issues/4961 is fixed\n]\n\nhtml_theme = \"litestar_sphinx_theme\"\nhtml_static_path = [\"_static\"]\nhtml_js_files = [\"versioning.js\"]\nhtml_css_files = [\"style.css\"]\nhtml_show_sourcelink = False\nhtml_title = \"Litestar Framework\"\n\n\nhtml_theme_options = {\n    \"use_page_nav\": False,\n    \"github_repo_name\": \"litestar\",\n    \"logo\": {\n        \"link\": \"https://litestar.dev\",\n    },\n    \"extra_navbar_items\": {\n        \"Documentation\": \"index\",\n        \"Community\": {\n            \"Contribution Guide\": \"contribution-guide\",\n            \"Code of Conduct\": \"https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md\",\n        },\n        \"About\": {\n            \"Organization\": \"https://litestar.dev/about/organization\",\n            \"Releases\": \"https://litestar.dev/about/litestar-releases\",\n        },\n        \"Release notes\": {\n            \"2.0 migration guide\": \"release-notes/migration_guide_2\",\n            \"2.x Changelog\": \"https://docs.litestar.dev/2/release-notes/changelog.html\",\n            \"1.x Changelog\": \"https://docs.litestar.dev/1/release-notes/changelog.html\",\n        },\n    },\n}\n\n\ndef update_html_context(\n    app: Sphinx, pagename: str, templatename: str, context: dict[str, Any], doctree: document\n) -> None:\n    context[\"generate_toctree_html\"] = partial(context[\"generate_toctree_html\"], startdepth=0)\n\n\ndef setup(app: Sphinx) -> dict[str, bool]:\n    app.setup_extension(\"litestar_sphinx_theme\")\n    app.setup_extension(\"pydata_sphinx_theme\")\n    app.connect(\"html-page-context\", update_html_context)\n\n    return {\"parallel_read_safe\": True, \"parallel_write_safe\": True}\n", "path": "docs/conf.py"}], "after_files": [{"content": "import importlib.metadata\nimport os\nimport re\nfrom functools import partial\nfrom typing import Any\n\nfrom sphinx.addnodes import document\nfrom sphinx.application import Sphinx\n\n__all__ = [\"setup\", \"update_html_context\"]\n\n\nproject = \"Litestar\"\ncopyright = \"2023, Litestar-Org\"\nauthor = \"Litestar-Org\"\nrelease = os.getenv(\"_LITESTAR_DOCS_BUILD_VERSION\", importlib.metadata.version(\"litestar\").rsplit(\".\")[0])\n\nextensions = [\n    \"sphinx.ext.intersphinx\",\n    \"sphinx.ext.autosectionlabel\",\n    \"sphinx.ext.autodoc\",\n    \"sphinx.ext.napoleon\",\n    \"sphinx_design\",\n    \"auto_pytabs.sphinx_ext\",\n    \"tools.sphinx_ext\",\n    \"sphinx_copybutton\",\n    \"sphinxcontrib.mermaid\",\n]\n\nexclude_patterns = [\"_build\", \"Thumbs.db\", \".DS_Store\"]\n\n\nintersphinx_mapping = {\n    \"python\": (\"https://docs.python.org/3\", None),\n    \"msgspec\": (\"https://jcristharif.com/msgspec/\", None),\n    \"anyio\": (\"https://anyio.readthedocs.io/en/stable/\", None),\n    \"multidict\": (\"https://multidict.aio-libs.org/en/stable/\", None),\n    \"sqlalchemy\": (\"https://docs.sqlalchemy.org/en/20/\", None),\n    \"click\": (\"https://click.palletsprojects.com/en/8.1.x/\", None),\n    \"redis\": (\"https://redis-py.readthedocs.io/en/stable/\", None),\n    \"picologging\": (\"https://microsoft.github.io/picologging\", None),\n    \"structlog\": (\"https://www.structlog.org/en/stable/\", None),\n    \"tortoise\": (\"https://tortoise.github.io/\", None),\n    \"piccolo\": (\"https://piccolo-orm.readthedocs.io/en/latest\", None),\n    \"opentelemetry\": (\"https://opentelemetry-python.readthedocs.io/en/latest/\", None),\n}\n\n\nnapoleon_google_docstring = True\nnapoleon_include_special_with_doc = True\nnapoleon_use_admonition_for_examples = True\nnapoleon_use_admonition_for_notes = True\nnapoleon_use_admonition_for_references = False\nnapoleon_attr_annotations = True\n\nautoclass_content = \"class\"\nautodoc_class_signature = \"separated\"\nautodoc_default_options = {\"special-members\": \"__init__\", \"show-inheritance\": True, \"members\": True}\nautodoc_member_order = \"bysource\"\nautodoc_typehints_format = \"short\"\n\n\nnitpicky = True\nnitpick_ignore = [\n    # external library / undocumented external\n    (\"py:class\", \"BaseModel\"),\n    (\"py:class\", \"pydantic.main.BaseModel\"),\n    (\"py:class\", \"pydantic.generics.GenericModel\"),\n    (\"py:class\", \"redis.asyncio.Redis\"),\n    (\"py:class\", \"sqlalchemy.orm.decl_api.DeclarativeMeta\"),\n    (\"py:class\", \"sqlalchemy.sql.sqltypes.TupleType\"),\n    (\"py:class\", \"sqlalchemy.dialects.postgresql.named_types.ENUM\"),\n    # type vars and aliases / intentionally undocumented\n    (\"py:class\", \"RouteHandlerType\"),\n    (\"py:obj\", \"litestar.security.base.AuthType\"),\n    (\"py:class\", \"ControllerRouterHandler\"),\n    (\"py:class\", \"PathParameterDefinition\"),\n    (\"py:class\", \"BaseSessionBackendT\"),\n    (\"py:class\", \"AnyIOBackend\"),\n    (\"py:class\", \"T\"),\n    (\"py:class\", \"C\"),\n    (\"py:class\", \"EmptyType\"),\n    # intentionally undocumented\n    (\"py:class\", \"NoneType\"),\n    (\"py:class\", \"litestar._signature.field.SignatureField\"),\n    (\"py:class\", \"litestar.utils.signature.ParsedType\"),\n    (\"py:class\", \"litestar.utils.signature.ParsedSignature\"),\n    (\"py:class\", \"litestar.utils.signature.ParsedParameter\"),\n    (\"py:class\", \"litestar.utils.sync.AsyncCallable\"),\n]\nnitpick_ignore_regex = [\n    (r\"py:.*\", r\"litestar\\.types.*\"),\n    (r\"py:.*\", r\"litestar.*\\.T\"),\n    (r\"py:.*\", r\".*R_co\"),\n    (r\"py:.*\", r\".*UserType\"),\n    (r\"py:.*\", r\"litestar\\.middleware\\.session\\.base\\.BaseSessionBackendT\"),\n    (r\"py:obj\", r\"typing\\..*\"),\n    (r\"py:.*\", r\"httpx.*\"),\n    # type vars\n    (\"py:.*\", r\"litestar\\.pagination\\.C\"),\n    (\"py:.*\", r\"litestar.middleware.session.base.ConfigT\"),\n    (\"py:.*\", r\"multidict\\..*\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.UserT\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.AuthT\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.StateT\"),\n    (r\"py:.*\", r\"litestar\\.connection\\.base\\.HandlerT\"),\n]\n\n# Warnings about missing references to those targets in the specified location will be ignored.\n# The source of the references is taken 1:1 from the warnings as reported by Sphinx, e.g\n# **/litestar/testing/client/async_client.py:docstring of litestar.testing.AsyncTestClient.exit_stack:1: WARNING: py:class reference target not found: AsyncExitStack\n# would be added as: \"litestar.testing.AsyncTestClient.exit_stack\": {\"AsyncExitStack\"},\nignore_missing_refs = {\n    # No idea what autodoc is doing here. Possibly unfixable on our end\n    \"litestar.template.base.TemplateEngineProtocol.get_template\": {\"litestar.template.base.T_co\"},\n    \"litestar.template\": {\"litestar.template.base.T_co\"},\n    \"litestar.openapi.OpenAPIController.security\": {\"SecurityRequirement\"},\n    \"litestar.contrib.sqlalchemy_1.plugin.SQLAlchemyPlugin.handle_string_type\": {\"BINARY\", \"VARBINARY\", \"LargeBinary\"},\n    \"litestar.contrib.sqlalchemy_1.plugin.SQLAlchemyPlugin.is_plugin_supported_type\": {\"DeclarativeMeta\"},\n    re.compile(r\"litestar\\.plugins.*\"): re.compile(\".*(ModelT|DataContainerT)\"),\n    re.compile(r\"litestar\\.contrib\\.sqlalchemy\\.init_plugin\\.config.*\"): re.compile(\n        \".*(ConnectionT|EngineT|SessionT|SessionMakerT)\"\n    ),\n}\n\n\nauto_pytabs_min_version = (3, 8)\nauto_pytabs_max_version = (3, 11)\nauto_pytabs_compat_mode = True\n\nautosectionlabel_prefix_document = True\n\nsuppress_warnings = [\n    \"autosectionlabel.*\",\n    \"ref.python\",  # TODO: remove when https://github.com/sphinx-doc/sphinx/issues/4961 is fixed\n]\n\nhtml_theme = \"litestar_sphinx_theme\"\nhtml_static_path = [\"_static\"]\nhtml_js_files = [\"versioning.js\"]\nhtml_css_files = [\"style.css\"]\nhtml_show_sourcelink = False\nhtml_title = \"Litestar Framework\"\n\n\nhtml_theme_options = {\n    \"use_page_nav\": False,\n    \"github_repo_name\": \"litestar\",\n    \"logo\": {\n        \"link\": \"https://litestar.dev\",\n    },\n    \"extra_navbar_items\": {\n        \"Documentation\": \"index\",\n        \"Community\": {\n            \"Contributing\": {\n                \"description\": \"Learn how to contribute to the Litestar project\",\n                \"link\": \"https://docs.litestar.dev/2/contribution-guide.html\",\n                \"icon\": \"contributing\",\n            },\n            \"Code of Conduct\": {\n                \"description\": \"Review the etiquette for interacting with the Litestar community\",\n                \"link\": \"https://github.com/litestar-org/.github/blob/main/CODE_OF_CONDUCT.md\",\n                \"icon\": \"coc\",\n            },\n        },\n        \"About\": {\n            \"Litestar Organization\": {\n                \"description\": \"Details about the Litestar organization\",\n                \"link\": \"about/organization\",\n                \"icon\": \"org\",\n            },\n            \"Releases\": {\n                \"description\": \"Details about the Litestar release process\",\n                \"link\": \"about/litestar-releases\",\n                \"icon\": \"releases\",\n            },\n        },\n        \"Release notes\": {\n            \"2.0 migration guide\": \"release-notes/migration_guide_2\",\n            \"2.x Changelog\": \"https://docs.litestar.dev/2/release-notes/changelog.html\",\n            \"1.x Changelog\": \"https://docs.litestar.dev/1/release-notes/changelog.html\",\n        },\n        \"Help\": \"https://github.com/orgs/litestar-org/discussions\",\n    },\n}\n\n\ndef update_html_context(\n    app: Sphinx, pagename: str, templatename: str, context: dict[str, Any], doctree: document\n) -> None:\n    context[\"generate_toctree_html\"] = partial(context[\"generate_toctree_html\"], startdepth=0)\n\n\ndef setup(app: Sphinx) -> dict[str, bool]:\n    app.setup_extension(\"litestar_sphinx_theme\")\n    app.setup_extension(\"pydata_sphinx_theme\")\n    app.connect(\"html-page-context\", update_html_context)\n\n    return {\"parallel_read_safe\": True, \"parallel_write_safe\": True}\n", "path": "docs/conf.py"}]}