We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Bug: minijinja import too early on FlashPlugin
### Description

error is: 
```
❯ python main.py
Traceback (most recent call last):
  File "/home/lotso/.cache/pypoetry/virtualenvs/tt-n-gxmD69-py3.12/lib/python3.12/site-packages/litestar/contrib/minijinja.py", line 21, in <module>
    from minijinja import Environment  # type:ignore[import-untyped]
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'minijinja'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/home/lotso/toto/tt/main.py", line 2, in <module>
    from litestar.plugins.flash import FlashPlugin
  File "/home/lotso/.cache/pypoetry/virtualenvs/tt-n-gxmD69-py3.12/lib/python3.12/site-packages/litestar/plugins/flash.py", line 8, in <module>
    from litestar.contrib.minijinja import MiniJinjaTemplateEngine
  File "/home/lotso/.cache/pypoetry/virtualenvs/tt-n-gxmD69-py3.12/lib/python3.12/site-packages/litestar/contrib/minijinja.py", line 24, in <module>
    raise MissingDependencyException("minijinja") from e
litestar.exceptions.base_exceptions.MissingDependencyException: Package 'minijinja' is not installed but required. You can install it by running 'pip install litestar[minijinja]' to install litestar with the required extra or 'pip install minijinja' to install the package separately
```
the imports for minijinja seems to be too early in the game, 



### URL to code causing the issue

_No response_

### MCVE

```python
from litestar import Litestar
from litestar.plugins.flash import FlashPlugin


app = Litestar(route_handlers=[], plugins=[FlashPlugin])
```


### Steps to reproduce

```bash
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
```


### Screenshots

```bash
"![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)"
```


### Logs

_No response_

### Litestar Version

2.8.2

### Platform

- [X] Linux
- [ ] Mac
- [ ] Windows
- [ ] Other (Please specify in the description above)

<!-- POLAR PLEDGE BADGE START -->
---
> [!NOTE]  
> While we are open for sponsoring on [GitHub Sponsors](https://github.com/sponsors/litestar-org/) and 
> [OpenCollective](https://opencollective.com/litestar), we also utilize [Polar.sh](https://polar.sh/) to engage in pledge-based sponsorship.
>
> Check out all issues funded or available for funding [on our Polar.sh dashboard](https://polar.sh/litestar-org)
> * If you would like to see an issue prioritized, make a pledge towards it!
> * We receive the pledge once the issue is completed & verified
> * This, along with engagement in the community, helps us know which features are a priority to our users.

<a href="https://polar.sh/litestar-org/litestar/issues/3415">
<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://polar.sh/api/github/litestar-org/litestar/issues/3415/pledge.svg?darkmode=1">
  <img alt="Fund with Polar" src="https://polar.sh/api/github/litestar-org/litestar/issues/3415/pledge.svg">
</picture>
</a>
<!-- POLAR PLEDGE BADGE END -->


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `litestar/plugins/flash.py`
Content:
```
1 """Plugin for creating and retrieving flash messages."""
2 
3 from dataclasses import dataclass
4 from typing import Any, Mapping
5 
6 from litestar.config.app import AppConfig
7 from litestar.connection import ASGIConnection
8 from litestar.contrib.minijinja import MiniJinjaTemplateEngine
9 from litestar.plugins import InitPluginProtocol
10 from litestar.template import TemplateConfig
11 from litestar.template.base import _get_request_from_context
12 from litestar.utils.scope.state import ScopeState
13 
14 
15 @dataclass
16 class FlashConfig:
17     """Configuration for Flash messages."""
18 
19     template_config: TemplateConfig
20 
21 
22 class FlashPlugin(InitPluginProtocol):
23     """Flash messages Plugin."""
24 
25     def __init__(self, config: FlashConfig):
26         """Initialize the plugin.
27 
28         Args:
29             config: Configuration for flash messages, including the template engine instance.
30         """
31         self.config = config
32 
33     def on_app_init(self, app_config: AppConfig) -> AppConfig:
34         """Register the message callable on the template engine instance.
35 
36         Args:
37             app_config: The application configuration.
38 
39         Returns:
40             The application configuration with the message callable registered.
41         """
42         if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):
43             from litestar.contrib.minijinja import _transform_state
44 
45             self.config.template_config.engine_instance.register_template_callable(
46                 "get_flashes", _transform_state(get_flashes)
47             )
48         else:
49             self.config.template_config.engine_instance.register_template_callable("get_flashes", get_flashes)
50         return app_config
51 
52 
53 def flash(connection: ASGIConnection, message: str, category: str) -> None:
54     """Add a flash message to the request scope.
55 
56     Args:
57         connection: The connection instance.
58         message: The message to flash.
59         category: The category of the message.
60     """
61     scope_state = ScopeState.from_scope(connection.scope)
62     scope_state.flash_messages.append({"message": message, "category": category})
63 
64 
65 def get_flashes(context: Mapping[str, Any]) -> Any:
66     """Get flash messages from the request scope, if any.
67 
68     Args:
69         context: The context dictionary.
70 
71     Returns:
72         The flash messages, if any.
73     """
74     scope_state = ScopeState.from_scope(_get_request_from_context(context).scope)
75     return scope_state.flash_messages
76
```
--- 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/litestar/plugins/flash.py b/litestar/plugins/flash.py
--- a/litestar/plugins/flash.py
+++ b/litestar/plugins/flash.py
@@ -1,16 +1,22 @@
 """Plugin for creating and retrieving flash messages."""
 
+from __future__ import annotations
+
 from dataclasses import dataclass
-from typing import Any, Mapping
+from typing import TYPE_CHECKING, Any, Mapping
 
-from litestar.config.app import AppConfig
-from litestar.connection import ASGIConnection
-from litestar.contrib.minijinja import MiniJinjaTemplateEngine
+from litestar.exceptions import MissingDependencyException
 from litestar.plugins import InitPluginProtocol
-from litestar.template import TemplateConfig
 from litestar.template.base import _get_request_from_context
 from litestar.utils.scope.state import ScopeState
 
+if TYPE_CHECKING:
+    from collections.abc import Callable
+
+    from litestar.config.app import AppConfig
+    from litestar.connection import ASGIConnection
+    from litestar.template import TemplateConfig
+
 
 @dataclass
 class FlashConfig:
@@ -39,14 +45,18 @@
         Returns:
             The application configuration with the message callable registered.
         """
-        if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):
-            from litestar.contrib.minijinja import _transform_state
-
-            self.config.template_config.engine_instance.register_template_callable(
-                "get_flashes", _transform_state(get_flashes)
-            )
+        template_callable: Callable[[Any], Any]
+        try:
+            from litestar.contrib.minijinja import MiniJinjaTemplateEngine, _transform_state
+        except MissingDependencyException:  # pragma: no cover
+            template_callable = get_flashes
         else:
-            self.config.template_config.engine_instance.register_template_callable("get_flashes", get_flashes)
+            if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):
+                template_callable = _transform_state(get_flashes)
+            else:
+                template_callable = get_flashes
+
+        self.config.template_config.engine_instance.register_template_callable("get_flashes", template_callable)  # pyright: ignore[reportGeneralTypeIssues]
         return app_config

{"golden_diff": "diff --git a/litestar/plugins/flash.py b/litestar/plugins/flash.py\n--- a/litestar/plugins/flash.py\n+++ b/litestar/plugins/flash.py\n@@ -1,16 +1,22 @@\n \"\"\"Plugin for creating and retrieving flash messages.\"\"\"\n \n+from __future__ import annotations\n+\n from dataclasses import dataclass\n-from typing import Any, Mapping\n+from typing import TYPE_CHECKING, Any, Mapping\n \n-from litestar.config.app import AppConfig\n-from litestar.connection import ASGIConnection\n-from litestar.contrib.minijinja import MiniJinjaTemplateEngine\n+from litestar.exceptions import MissingDependencyException\n from litestar.plugins import InitPluginProtocol\n-from litestar.template import TemplateConfig\n from litestar.template.base import _get_request_from_context\n from litestar.utils.scope.state import ScopeState\n \n+if TYPE_CHECKING:\n+    from collections.abc import Callable\n+\n+    from litestar.config.app import AppConfig\n+    from litestar.connection import ASGIConnection\n+    from litestar.template import TemplateConfig\n+\n \n @dataclass\n class FlashConfig:\n@@ -39,14 +45,18 @@\n         Returns:\n             The application configuration with the message callable registered.\n         \"\"\"\n-        if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):\n-            from litestar.contrib.minijinja import _transform_state\n-\n-            self.config.template_config.engine_instance.register_template_callable(\n-                \"get_flashes\", _transform_state(get_flashes)\n-            )\n+        template_callable: Callable[[Any], Any]\n+        try:\n+            from litestar.contrib.minijinja import MiniJinjaTemplateEngine, _transform_state\n+        except MissingDependencyException:  # pragma: no cover\n+            template_callable = get_flashes\n         else:\n-            self.config.template_config.engine_instance.register_template_callable(\"get_flashes\", get_flashes)\n+            if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):\n+                template_callable = _transform_state(get_flashes)\n+            else:\n+                template_callable = get_flashes\n+\n+        self.config.template_config.engine_instance.register_template_callable(\"get_flashes\", template_callable)  # pyright: ignore[reportGeneralTypeIssues]\n         return app_config\n", "issue": "Bug: minijinja import too early on FlashPlugin\n### Description\n\nerror is: \r\n```\r\n\u276f python main.py\r\nTraceback (most recent call last):\r\n  File \"/home/lotso/.cache/pypoetry/virtualenvs/tt-n-gxmD69-py3.12/lib/python3.12/site-packages/litestar/contrib/minijinja.py\", line 21, in <module>\r\n    from minijinja import Environment  # type:ignore[import-untyped]\r\n    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\nModuleNotFoundError: No module named 'minijinja'\r\n\r\nThe above exception was the direct cause of the following exception:\r\n\r\nTraceback (most recent call last):\r\n  File \"/home/lotso/toto/tt/main.py\", line 2, in <module>\r\n    from litestar.plugins.flash import FlashPlugin\r\n  File \"/home/lotso/.cache/pypoetry/virtualenvs/tt-n-gxmD69-py3.12/lib/python3.12/site-packages/litestar/plugins/flash.py\", line 8, in <module>\r\n    from litestar.contrib.minijinja import MiniJinjaTemplateEngine\r\n  File \"/home/lotso/.cache/pypoetry/virtualenvs/tt-n-gxmD69-py3.12/lib/python3.12/site-packages/litestar/contrib/minijinja.py\", line 24, in <module>\r\n    raise MissingDependencyException(\"minijinja\") from e\r\nlitestar.exceptions.base_exceptions.MissingDependencyException: Package 'minijinja' is not installed but required. You can install it by running 'pip install litestar[minijinja]' to install litestar with the required extra or 'pip install minijinja' to install the package separately\r\n```\r\nthe imports for minijinja seems to be too early in the game, \r\n\r\n\n\n### URL to code causing the issue\n\n_No response_\n\n### MCVE\n\n```python\nfrom litestar import Litestar\r\nfrom litestar.plugins.flash import FlashPlugin\r\n\r\n\r\napp = Litestar(route_handlers=[], plugins=[FlashPlugin])\n```\n\n\n### Steps to reproduce\n\n```bash\n1. Go to '...'\r\n2. Click on '....'\r\n3. Scroll down to '....'\r\n4. See error\n```\n\n\n### Screenshots\n\n```bash\n\"![SCREENSHOT_DESCRIPTION](SCREENSHOT_LINK.png)\"\n```\n\n\n### Logs\n\n_No response_\n\n### Litestar Version\n\n2.8.2\n\n### Platform\n\n- [X] Linux\n- [ ] Mac\n- [ ] Windows\n- [ ] Other (Please specify in the description above)\n\n<!-- POLAR PLEDGE BADGE START -->\n---\n> [!NOTE]  \n> While we are open for sponsoring on [GitHub Sponsors](https://github.com/sponsors/litestar-org/) and \n> [OpenCollective](https://opencollective.com/litestar), we also utilize [Polar.sh](https://polar.sh/) to engage in pledge-based sponsorship.\n>\n> Check out all issues funded or available for funding [on our Polar.sh dashboard](https://polar.sh/litestar-org)\n> * If you would like to see an issue prioritized, make a pledge towards it!\n> * We receive the pledge once the issue is completed & verified\n> * This, along with engagement in the community, helps us know which features are a priority to our users.\n\n<a href=\"https://polar.sh/litestar-org/litestar/issues/3415\">\n<picture>\n  <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://polar.sh/api/github/litestar-org/litestar/issues/3415/pledge.svg?darkmode=1\">\n  <img alt=\"Fund with Polar\" src=\"https://polar.sh/api/github/litestar-org/litestar/issues/3415/pledge.svg\">\n</picture>\n</a>\n<!-- POLAR PLEDGE BADGE END -->\n\n", "before_files": [{"content": "\"\"\"Plugin for creating and retrieving flash messages.\"\"\"\n\nfrom dataclasses import dataclass\nfrom typing import Any, Mapping\n\nfrom litestar.config.app import AppConfig\nfrom litestar.connection import ASGIConnection\nfrom litestar.contrib.minijinja import MiniJinjaTemplateEngine\nfrom litestar.plugins import InitPluginProtocol\nfrom litestar.template import TemplateConfig\nfrom litestar.template.base import _get_request_from_context\nfrom litestar.utils.scope.state import ScopeState\n\n\n@dataclass\nclass FlashConfig:\n    \"\"\"Configuration for Flash messages.\"\"\"\n\n    template_config: TemplateConfig\n\n\nclass FlashPlugin(InitPluginProtocol):\n    \"\"\"Flash messages Plugin.\"\"\"\n\n    def __init__(self, config: FlashConfig):\n        \"\"\"Initialize the plugin.\n\n        Args:\n            config: Configuration for flash messages, including the template engine instance.\n        \"\"\"\n        self.config = config\n\n    def on_app_init(self, app_config: AppConfig) -> AppConfig:\n        \"\"\"Register the message callable on the template engine instance.\n\n        Args:\n            app_config: The application configuration.\n\n        Returns:\n            The application configuration with the message callable registered.\n        \"\"\"\n        if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):\n            from litestar.contrib.minijinja import _transform_state\n\n            self.config.template_config.engine_instance.register_template_callable(\n                \"get_flashes\", _transform_state(get_flashes)\n            )\n        else:\n            self.config.template_config.engine_instance.register_template_callable(\"get_flashes\", get_flashes)\n        return app_config\n\n\ndef flash(connection: ASGIConnection, message: str, category: str) -> None:\n    \"\"\"Add a flash message to the request scope.\n\n    Args:\n        connection: The connection instance.\n        message: The message to flash.\n        category: The category of the message.\n    \"\"\"\n    scope_state = ScopeState.from_scope(connection.scope)\n    scope_state.flash_messages.append({\"message\": message, \"category\": category})\n\n\ndef get_flashes(context: Mapping[str, Any]) -> Any:\n    \"\"\"Get flash messages from the request scope, if any.\n\n    Args:\n        context: The context dictionary.\n\n    Returns:\n        The flash messages, if any.\n    \"\"\"\n    scope_state = ScopeState.from_scope(_get_request_from_context(context).scope)\n    return scope_state.flash_messages\n", "path": "litestar/plugins/flash.py"}], "after_files": [{"content": "\"\"\"Plugin for creating and retrieving flash messages.\"\"\"\n\nfrom __future__ import annotations\n\nfrom dataclasses import dataclass\nfrom typing import TYPE_CHECKING, Any, Mapping\n\nfrom litestar.exceptions import MissingDependencyException\nfrom litestar.plugins import InitPluginProtocol\nfrom litestar.template.base import _get_request_from_context\nfrom litestar.utils.scope.state import ScopeState\n\nif TYPE_CHECKING:\n    from collections.abc import Callable\n\n    from litestar.config.app import AppConfig\n    from litestar.connection import ASGIConnection\n    from litestar.template import TemplateConfig\n\n\n@dataclass\nclass FlashConfig:\n    \"\"\"Configuration for Flash messages.\"\"\"\n\n    template_config: TemplateConfig\n\n\nclass FlashPlugin(InitPluginProtocol):\n    \"\"\"Flash messages Plugin.\"\"\"\n\n    def __init__(self, config: FlashConfig):\n        \"\"\"Initialize the plugin.\n\n        Args:\n            config: Configuration for flash messages, including the template engine instance.\n        \"\"\"\n        self.config = config\n\n    def on_app_init(self, app_config: AppConfig) -> AppConfig:\n        \"\"\"Register the message callable on the template engine instance.\n\n        Args:\n            app_config: The application configuration.\n\n        Returns:\n            The application configuration with the message callable registered.\n        \"\"\"\n        template_callable: Callable[[Any], Any]\n        try:\n            from litestar.contrib.minijinja import MiniJinjaTemplateEngine, _transform_state\n        except MissingDependencyException:  # pragma: no cover\n            template_callable = get_flashes\n        else:\n            if isinstance(self.config.template_config.engine_instance, MiniJinjaTemplateEngine):\n                template_callable = _transform_state(get_flashes)\n            else:\n                template_callable = get_flashes\n\n        self.config.template_config.engine_instance.register_template_callable(\"get_flashes\", template_callable)  # pyright: ignore[reportGeneralTypeIssues]\n        return app_config\n\n\ndef flash(connection: ASGIConnection, message: str, category: str) -> None:\n    \"\"\"Add a flash message to the request scope.\n\n    Args:\n        connection: The connection instance.\n        message: The message to flash.\n        category: The category of the message.\n    \"\"\"\n    scope_state = ScopeState.from_scope(connection.scope)\n    scope_state.flash_messages.append({\"message\": message, \"category\": category})\n\n\ndef get_flashes(context: Mapping[str, Any]) -> Any:\n    \"\"\"Get flash messages from the request scope, if any.\n\n    Args:\n        context: The context dictionary.\n\n    Returns:\n        The flash messages, if any.\n    \"\"\"\n    scope_state = ScopeState.from_scope(_get_request_from_context(context).scope)\n    return scope_state.flash_messages\n", "path": "litestar/plugins/flash.py"}]}