We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Investigate Github Action caching
One can cache certain directories in github actions. For Python, caching the entire installation is used (including all the `site-packages`), so that wheels don't need to be rebuild. Additionally, the download could be faster. We should investigate how much there is to gain.

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `evap/evaluation/management/commands/scss.py`
Content:
```
1 import os
2 import subprocess  # nosec
3 
4 from django.conf import settings
5 from django.core.management.base import BaseCommand
6 
7 
8 class Command(BaseCommand):
9     def add_arguments(self, parser):
10         parser.add_argument(
11             "--watch",
12             action="store_true",
13             help="Watch stylesheets and recompile when they change.",
14         )
15         parser.add_argument(
16             "--production",
17             action="store_true",
18             help="Compress output stylesheet and do not generate source maps."
19             " Intended to use in production deployment.",
20         )
21 
22     def handle(self, *args, **options):
23         static_directory = settings.STATICFILES_DIRS[0]
24         command = [
25             "npx",
26             "sass",
27             os.path.join(static_directory, "scss", "evap.scss"),
28             os.path.join(static_directory, "css", "evap.css"),
29         ]
30 
31         if options["watch"]:
32             command += ["--watch", "--poll"]
33 
34         if options["production"]:
35             command += ["--style", "compressed", "--no-source-map"]
36 
37         try:
38             subprocess.run(command, check=True)  # nosec
39         except FileNotFoundError:
40             print("Could not find sass command", file=self.stderr)
41         except KeyboardInterrupt:
42             pass
43
```

Path: `evap/evaluation/management/commands/ts.py`
Content:
```
1 import argparse
2 import os
3 import subprocess  # nosec
4 import unittest
5 
6 from django.conf import settings
7 from django.core.management import call_command
8 from django.core.management.base import BaseCommand, CommandError
9 from django.test.runner import DiscoverRunner
10 
11 
12 class RenderPagesRunner(DiscoverRunner):
13     """Test runner which only includes `render_pages.*` methods.
14     The actual logic of the page rendering is implemented in the `@render_pages` decorator."""
15 
16     test_loader = unittest.TestLoader()
17 
18     def __init__(self, **kwargs):
19         super().__init__(**kwargs)
20         self.test_loader.testMethodPrefix = "render_pages"
21 
22 
23 class Command(BaseCommand):
24     def add_arguments(self, parser: argparse.ArgumentParser):
25         subparsers = parser.add_subparsers(dest="command", required=True)
26         compile_parser = subparsers.add_parser("compile")
27         compile_parser.add_argument(
28             "--watch",
29             action="store_true",
30             help="Watch scripts and recompile when they change.",
31         )
32         self.add_fresh_argument(compile_parser)
33         test_parser = subparsers.add_parser("test")
34         self.add_fresh_argument(test_parser)
35         subparsers.add_parser("render_pages")
36 
37     @staticmethod
38     def add_fresh_argument(parser: argparse.ArgumentParser):
39         parser.add_argument(
40             "--fresh",
41             action="store_true",
42             help="Delete .tsbuildinfo.json before compilation to force a fresh compilation."
43             "This is useful when incremental compilation does not yield the expected output.",
44         )
45 
46     def handle(self, *args, **options):
47         if options["command"] == "compile":
48             self.compile(**options)
49         elif options["command"] == "test":
50             self.test(**options)
51         elif options["command"] == "render_pages":
52             self.render_pages(**options)
53 
54     def run_command(self, command):
55         try:
56             subprocess.run(command, check=True)  # nosec
57         except FileNotFoundError:
58             print(f"Could not find {command[0]} command", file=self.stderr)
59         except KeyboardInterrupt:
60             pass
61         except subprocess.CalledProcessError as e:
62             raise CommandError("Error during command execution", returncode=e.returncode) from e
63 
64     def compile(self, watch=False, fresh=False, **_options):
65         static_directory = settings.STATICFILES_DIRS[0]
66         command = [
67             "npx",
68             "tsc",
69             "--project",
70             os.path.join(static_directory, "ts", "tsconfig.compile.json"),
71         ]
72 
73         if watch:
74             command += ["--watch"]
75 
76         if fresh:
77             try:
78                 os.remove(os.path.join(static_directory, "ts", ".tsbuildinfo.json"))
79             except FileNotFoundError:
80                 pass
81 
82         self.run_command(command)
83 
84     def test(self, **options):
85         call_command("scss")
86         self.compile(**options)
87         self.render_pages()
88         self.run_command(["npx", "jest"])
89 
90     @staticmethod
91     def render_pages(**_options):
92         # Enable debug mode as otherwise a collectstatic beforehand would be necessary,
93         # as missing static files would result into an error.
94         test_runner = RenderPagesRunner(debug_mode=True)
95         failed_tests = test_runner.run_tests([])
96         if failed_tests > 0:
97             raise CommandError("Failures during render_pages")
98
```
--- 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/evap/evaluation/management/commands/scss.py b/evap/evaluation/management/commands/scss.py
--- a/evap/evaluation/management/commands/scss.py
+++ b/evap/evaluation/management/commands/scss.py
@@ -2,7 +2,7 @@
 import subprocess  # nosec
 
 from django.conf import settings
-from django.core.management.base import BaseCommand
+from django.core.management.base import BaseCommand, CommandError
 
 
 class Command(BaseCommand):
@@ -36,7 +36,7 @@
 
         try:
             subprocess.run(command, check=True)  # nosec
-        except FileNotFoundError:
-            print("Could not find sass command", file=self.stderr)
+        except FileNotFoundError as e:
+            raise CommandError("Could not find sass command") from e
         except KeyboardInterrupt:
             pass
diff --git a/evap/evaluation/management/commands/ts.py b/evap/evaluation/management/commands/ts.py
--- a/evap/evaluation/management/commands/ts.py
+++ b/evap/evaluation/management/commands/ts.py
@@ -54,8 +54,8 @@
     def run_command(self, command):
         try:
             subprocess.run(command, check=True)  # nosec
-        except FileNotFoundError:
-            print(f"Could not find {command[0]} command", file=self.stderr)
+        except FileNotFoundError as e:
+            raise CommandError(f"Could not find {command[0]} command") from e
         except KeyboardInterrupt:
             pass
         except subprocess.CalledProcessError as e:

{"golden_diff": "diff --git a/evap/evaluation/management/commands/scss.py b/evap/evaluation/management/commands/scss.py\n--- a/evap/evaluation/management/commands/scss.py\n+++ b/evap/evaluation/management/commands/scss.py\n@@ -2,7 +2,7 @@\n import subprocess  # nosec\n \n from django.conf import settings\n-from django.core.management.base import BaseCommand\n+from django.core.management.base import BaseCommand, CommandError\n \n \n class Command(BaseCommand):\n@@ -36,7 +36,7 @@\n \n         try:\n             subprocess.run(command, check=True)  # nosec\n-        except FileNotFoundError:\n-            print(\"Could not find sass command\", file=self.stderr)\n+        except FileNotFoundError as e:\n+            raise CommandError(\"Could not find sass command\") from e\n         except KeyboardInterrupt:\n             pass\ndiff --git a/evap/evaluation/management/commands/ts.py b/evap/evaluation/management/commands/ts.py\n--- a/evap/evaluation/management/commands/ts.py\n+++ b/evap/evaluation/management/commands/ts.py\n@@ -54,8 +54,8 @@\n     def run_command(self, command):\n         try:\n             subprocess.run(command, check=True)  # nosec\n-        except FileNotFoundError:\n-            print(f\"Could not find {command[0]} command\", file=self.stderr)\n+        except FileNotFoundError as e:\n+            raise CommandError(f\"Could not find {command[0]} command\") from e\n         except KeyboardInterrupt:\n             pass\n         except subprocess.CalledProcessError as e:\n", "issue": "Investigate Github Action caching\nOne can cache certain directories in github actions. For Python, caching the entire installation is used (including all the `site-packages`), so that wheels don't need to be rebuild. Additionally, the download could be faster. We should investigate how much there is to gain.\n", "before_files": [{"content": "import os\nimport subprocess  # nosec\n\nfrom django.conf import settings\nfrom django.core.management.base import BaseCommand\n\n\nclass Command(BaseCommand):\n    def add_arguments(self, parser):\n        parser.add_argument(\n            \"--watch\",\n            action=\"store_true\",\n            help=\"Watch stylesheets and recompile when they change.\",\n        )\n        parser.add_argument(\n            \"--production\",\n            action=\"store_true\",\n            help=\"Compress output stylesheet and do not generate source maps.\"\n            \" Intended to use in production deployment.\",\n        )\n\n    def handle(self, *args, **options):\n        static_directory = settings.STATICFILES_DIRS[0]\n        command = [\n            \"npx\",\n            \"sass\",\n            os.path.join(static_directory, \"scss\", \"evap.scss\"),\n            os.path.join(static_directory, \"css\", \"evap.css\"),\n        ]\n\n        if options[\"watch\"]:\n            command += [\"--watch\", \"--poll\"]\n\n        if options[\"production\"]:\n            command += [\"--style\", \"compressed\", \"--no-source-map\"]\n\n        try:\n            subprocess.run(command, check=True)  # nosec\n        except FileNotFoundError:\n            print(\"Could not find sass command\", file=self.stderr)\n        except KeyboardInterrupt:\n            pass\n", "path": "evap/evaluation/management/commands/scss.py"}, {"content": "import argparse\nimport os\nimport subprocess  # nosec\nimport unittest\n\nfrom django.conf import settings\nfrom django.core.management import call_command\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.test.runner import DiscoverRunner\n\n\nclass RenderPagesRunner(DiscoverRunner):\n    \"\"\"Test runner which only includes `render_pages.*` methods.\n    The actual logic of the page rendering is implemented in the `@render_pages` decorator.\"\"\"\n\n    test_loader = unittest.TestLoader()\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.test_loader.testMethodPrefix = \"render_pages\"\n\n\nclass Command(BaseCommand):\n    def add_arguments(self, parser: argparse.ArgumentParser):\n        subparsers = parser.add_subparsers(dest=\"command\", required=True)\n        compile_parser = subparsers.add_parser(\"compile\")\n        compile_parser.add_argument(\n            \"--watch\",\n            action=\"store_true\",\n            help=\"Watch scripts and recompile when they change.\",\n        )\n        self.add_fresh_argument(compile_parser)\n        test_parser = subparsers.add_parser(\"test\")\n        self.add_fresh_argument(test_parser)\n        subparsers.add_parser(\"render_pages\")\n\n    @staticmethod\n    def add_fresh_argument(parser: argparse.ArgumentParser):\n        parser.add_argument(\n            \"--fresh\",\n            action=\"store_true\",\n            help=\"Delete .tsbuildinfo.json before compilation to force a fresh compilation.\"\n            \"This is useful when incremental compilation does not yield the expected output.\",\n        )\n\n    def handle(self, *args, **options):\n        if options[\"command\"] == \"compile\":\n            self.compile(**options)\n        elif options[\"command\"] == \"test\":\n            self.test(**options)\n        elif options[\"command\"] == \"render_pages\":\n            self.render_pages(**options)\n\n    def run_command(self, command):\n        try:\n            subprocess.run(command, check=True)  # nosec\n        except FileNotFoundError:\n            print(f\"Could not find {command[0]} command\", file=self.stderr)\n        except KeyboardInterrupt:\n            pass\n        except subprocess.CalledProcessError as e:\n            raise CommandError(\"Error during command execution\", returncode=e.returncode) from e\n\n    def compile(self, watch=False, fresh=False, **_options):\n        static_directory = settings.STATICFILES_DIRS[0]\n        command = [\n            \"npx\",\n            \"tsc\",\n            \"--project\",\n            os.path.join(static_directory, \"ts\", \"tsconfig.compile.json\"),\n        ]\n\n        if watch:\n            command += [\"--watch\"]\n\n        if fresh:\n            try:\n                os.remove(os.path.join(static_directory, \"ts\", \".tsbuildinfo.json\"))\n            except FileNotFoundError:\n                pass\n\n        self.run_command(command)\n\n    def test(self, **options):\n        call_command(\"scss\")\n        self.compile(**options)\n        self.render_pages()\n        self.run_command([\"npx\", \"jest\"])\n\n    @staticmethod\n    def render_pages(**_options):\n        # Enable debug mode as otherwise a collectstatic beforehand would be necessary,\n        # as missing static files would result into an error.\n        test_runner = RenderPagesRunner(debug_mode=True)\n        failed_tests = test_runner.run_tests([])\n        if failed_tests > 0:\n            raise CommandError(\"Failures during render_pages\")\n", "path": "evap/evaluation/management/commands/ts.py"}], "after_files": [{"content": "import os\nimport subprocess  # nosec\n\nfrom django.conf import settings\nfrom django.core.management.base import BaseCommand, CommandError\n\n\nclass Command(BaseCommand):\n    def add_arguments(self, parser):\n        parser.add_argument(\n            \"--watch\",\n            action=\"store_true\",\n            help=\"Watch stylesheets and recompile when they change.\",\n        )\n        parser.add_argument(\n            \"--production\",\n            action=\"store_true\",\n            help=\"Compress output stylesheet and do not generate source maps.\"\n            \" Intended to use in production deployment.\",\n        )\n\n    def handle(self, *args, **options):\n        static_directory = settings.STATICFILES_DIRS[0]\n        command = [\n            \"npx\",\n            \"sass\",\n            os.path.join(static_directory, \"scss\", \"evap.scss\"),\n            os.path.join(static_directory, \"css\", \"evap.css\"),\n        ]\n\n        if options[\"watch\"]:\n            command += [\"--watch\", \"--poll\"]\n\n        if options[\"production\"]:\n            command += [\"--style\", \"compressed\", \"--no-source-map\"]\n\n        try:\n            subprocess.run(command, check=True)  # nosec\n        except FileNotFoundError as e:\n            raise CommandError(\"Could not find sass command\") from e\n        except KeyboardInterrupt:\n            pass\n", "path": "evap/evaluation/management/commands/scss.py"}, {"content": "import argparse\nimport os\nimport subprocess  # nosec\nimport unittest\n\nfrom django.conf import settings\nfrom django.core.management import call_command\nfrom django.core.management.base import BaseCommand, CommandError\nfrom django.test.runner import DiscoverRunner\n\n\nclass RenderPagesRunner(DiscoverRunner):\n    \"\"\"Test runner which only includes `render_pages.*` methods.\n    The actual logic of the page rendering is implemented in the `@render_pages` decorator.\"\"\"\n\n    test_loader = unittest.TestLoader()\n\n    def __init__(self, **kwargs):\n        super().__init__(**kwargs)\n        self.test_loader.testMethodPrefix = \"render_pages\"\n\n\nclass Command(BaseCommand):\n    def add_arguments(self, parser: argparse.ArgumentParser):\n        subparsers = parser.add_subparsers(dest=\"command\", required=True)\n        compile_parser = subparsers.add_parser(\"compile\")\n        compile_parser.add_argument(\n            \"--watch\",\n            action=\"store_true\",\n            help=\"Watch scripts and recompile when they change.\",\n        )\n        self.add_fresh_argument(compile_parser)\n        test_parser = subparsers.add_parser(\"test\")\n        self.add_fresh_argument(test_parser)\n        subparsers.add_parser(\"render_pages\")\n\n    @staticmethod\n    def add_fresh_argument(parser: argparse.ArgumentParser):\n        parser.add_argument(\n            \"--fresh\",\n            action=\"store_true\",\n            help=\"Delete .tsbuildinfo.json before compilation to force a fresh compilation.\"\n            \"This is useful when incremental compilation does not yield the expected output.\",\n        )\n\n    def handle(self, *args, **options):\n        if options[\"command\"] == \"compile\":\n            self.compile(**options)\n        elif options[\"command\"] == \"test\":\n            self.test(**options)\n        elif options[\"command\"] == \"render_pages\":\n            self.render_pages(**options)\n\n    def run_command(self, command):\n        try:\n            subprocess.run(command, check=True)  # nosec\n        except FileNotFoundError as e:\n            raise CommandError(f\"Could not find {command[0]} command\") from e\n        except KeyboardInterrupt:\n            pass\n        except subprocess.CalledProcessError as e:\n            raise CommandError(\"Error during command execution\", returncode=e.returncode) from e\n\n    def compile(self, watch=False, fresh=False, **_options):\n        static_directory = settings.STATICFILES_DIRS[0]\n        command = [\n            \"npx\",\n            \"tsc\",\n            \"--project\",\n            os.path.join(static_directory, \"ts\", \"tsconfig.compile.json\"),\n        ]\n\n        if watch:\n            command += [\"--watch\"]\n\n        if fresh:\n            try:\n                os.remove(os.path.join(static_directory, \"ts\", \".tsbuildinfo.json\"))\n            except FileNotFoundError:\n                pass\n\n        self.run_command(command)\n\n    def test(self, **options):\n        call_command(\"scss\")\n        self.compile(**options)\n        self.render_pages()\n        self.run_command([\"npx\", \"jest\"])\n\n    @staticmethod\n    def render_pages(**_options):\n        # Enable debug mode as otherwise a collectstatic beforehand would be necessary,\n        # as missing static files would result into an error.\n        test_runner = RenderPagesRunner(debug_mode=True)\n        failed_tests = test_runner.run_tests([])\n        if failed_tests > 0:\n            raise CommandError(\"Failures during render_pages\")\n", "path": "evap/evaluation/management/commands/ts.py"}]}