We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Move non-core dependencies to dedicated groups
@la4de has made a very useful playground for Strawberry, available (for now) here -> https://la4de.github.io/strawberry-playground/

Unfortunately some of the default dependencies aren't uploaded as wheels (see https://github.com/la4de/strawberry-playground/issues/1).

Maybe it could time to move some of these deps to specific groups, we definitely don't need python-multipart installed by default :)

Here's a list of proposed groups based on dependencies installed when doing `pip install strawberry-graphql`:

**Default**:
 
- cached-property
- sentinel
- typing-extensions
- graphql-core
- python-dateutil (I think we need this because of compatibility with python 3.7)

**CLI**:

- click
- pygments

**All web frameworks**:

- python-multipart




--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `strawberry/utils/debug.py`
Content:
```
1 import datetime
2 import json
3 from json import JSONEncoder
4 from typing import Any, Dict, Optional
5 
6 from pygments import highlight, lexers
7 from pygments.formatters import Terminal256Formatter
8 
9 from .graphql_lexer import GraphQLLexer
10 
11 
12 class StrawberryJSONEncoder(JSONEncoder):
13     def default(self, o: Any) -> Any:
14         return repr(o)
15 
16 
17 def pretty_print_graphql_operation(
18     operation_name: Optional[str], query: str, variables: Optional[Dict["str", Any]]
19 ):
20     """Pretty print a GraphQL operation using pygments.
21 
22     Won't print introspection operation to prevent noise in the output."""
23 
24     if operation_name == "IntrospectionQuery":
25         return
26 
27     now = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
28 
29     print(f"[{now}]: {operation_name or 'No operation name'}")
30     print(highlight(query, GraphQLLexer(), Terminal256Formatter()))
31 
32     if variables:
33         variables_json = json.dumps(variables, indent=4, cls=StrawberryJSONEncoder)
34 
35         print(highlight(variables_json, lexers.JsonLexer(), Terminal256Formatter()))
36
```
--- 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/strawberry/utils/debug.py b/strawberry/utils/debug.py
--- a/strawberry/utils/debug.py
+++ b/strawberry/utils/debug.py
@@ -3,11 +3,6 @@
 from json import JSONEncoder
 from typing import Any, Dict, Optional
 
-from pygments import highlight, lexers
-from pygments.formatters import Terminal256Formatter
-
-from .graphql_lexer import GraphQLLexer
-
 
 class StrawberryJSONEncoder(JSONEncoder):
     def default(self, o: Any) -> Any:
@@ -21,6 +16,17 @@
 
     Won't print introspection operation to prevent noise in the output."""
 
+    try:
+        from pygments import highlight, lexers
+        from pygments.formatters import Terminal256Formatter
+    except ImportError as e:
+        raise ImportError(
+            "pygments is not installed but is required for debug output, install it "
+            "directly or run `pip install strawberry-graphql[debug-server]`"
+        ) from e
+
+    from .graphql_lexer import GraphQLLexer
+
     if operation_name == "IntrospectionQuery":
         return

{"golden_diff": "diff --git a/strawberry/utils/debug.py b/strawberry/utils/debug.py\n--- a/strawberry/utils/debug.py\n+++ b/strawberry/utils/debug.py\n@@ -3,11 +3,6 @@\n from json import JSONEncoder\n from typing import Any, Dict, Optional\n \n-from pygments import highlight, lexers\n-from pygments.formatters import Terminal256Formatter\n-\n-from .graphql_lexer import GraphQLLexer\n-\n \n class StrawberryJSONEncoder(JSONEncoder):\n     def default(self, o: Any) -> Any:\n@@ -21,6 +16,17 @@\n \n     Won't print introspection operation to prevent noise in the output.\"\"\"\n \n+    try:\n+        from pygments import highlight, lexers\n+        from pygments.formatters import Terminal256Formatter\n+    except ImportError as e:\n+        raise ImportError(\n+            \"pygments is not installed but is required for debug output, install it \"\n+            \"directly or run `pip install strawberry-graphql[debug-server]`\"\n+        ) from e\n+\n+    from .graphql_lexer import GraphQLLexer\n+\n     if operation_name == \"IntrospectionQuery\":\n         return\n", "issue": "Move non-core dependencies to dedicated groups\n@la4de has made a very useful playground for Strawberry, available (for now) here -> https://la4de.github.io/strawberry-playground/\r\n\r\nUnfortunately some of the default dependencies aren't uploaded as wheels (see https://github.com/la4de/strawberry-playground/issues/1).\r\n\r\nMaybe it could time to move some of these deps to specific groups, we definitely don't need python-multipart installed by default :)\r\n\r\nHere's a list of proposed groups based on dependencies installed when doing `pip install strawberry-graphql`:\r\n\r\n**Default**:\r\n \r\n- cached-property\r\n- sentinel\r\n- typing-extensions\r\n- graphql-core\r\n- python-dateutil (I think we need this because of compatibility with python 3.7)\r\n\r\n**CLI**:\r\n\r\n- click\r\n- pygments\r\n\r\n**All web frameworks**:\r\n\r\n- python-multipart\r\n\r\n\r\n\n", "before_files": [{"content": "import datetime\nimport json\nfrom json import JSONEncoder\nfrom typing import Any, Dict, Optional\n\nfrom pygments import highlight, lexers\nfrom pygments.formatters import Terminal256Formatter\n\nfrom .graphql_lexer import GraphQLLexer\n\n\nclass StrawberryJSONEncoder(JSONEncoder):\n    def default(self, o: Any) -> Any:\n        return repr(o)\n\n\ndef pretty_print_graphql_operation(\n    operation_name: Optional[str], query: str, variables: Optional[Dict[\"str\", Any]]\n):\n    \"\"\"Pretty print a GraphQL operation using pygments.\n\n    Won't print introspection operation to prevent noise in the output.\"\"\"\n\n    if operation_name == \"IntrospectionQuery\":\n        return\n\n    now = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n\n    print(f\"[{now}]: {operation_name or 'No operation name'}\")\n    print(highlight(query, GraphQLLexer(), Terminal256Formatter()))\n\n    if variables:\n        variables_json = json.dumps(variables, indent=4, cls=StrawberryJSONEncoder)\n\n        print(highlight(variables_json, lexers.JsonLexer(), Terminal256Formatter()))\n", "path": "strawberry/utils/debug.py"}], "after_files": [{"content": "import datetime\nimport json\nfrom json import JSONEncoder\nfrom typing import Any, Dict, Optional\n\n\nclass StrawberryJSONEncoder(JSONEncoder):\n    def default(self, o: Any) -> Any:\n        return repr(o)\n\n\ndef pretty_print_graphql_operation(\n    operation_name: Optional[str], query: str, variables: Optional[Dict[\"str\", Any]]\n):\n    \"\"\"Pretty print a GraphQL operation using pygments.\n\n    Won't print introspection operation to prevent noise in the output.\"\"\"\n\n    try:\n        from pygments import highlight, lexers\n        from pygments.formatters import Terminal256Formatter\n    except ImportError as e:\n        raise ImportError(\n            \"pygments is not installed but is required for debug output, install it \"\n            \"directly or run `pip install strawberry-graphql[debug-server]`\"\n        ) from e\n\n    from .graphql_lexer import GraphQLLexer\n\n    if operation_name == \"IntrospectionQuery\":\n        return\n\n    now = datetime.datetime.now().strftime(\"%Y-%m-%d %H:%M:%S\")\n\n    print(f\"[{now}]: {operation_name or 'No operation name'}\")\n    print(highlight(query, GraphQLLexer(), Terminal256Formatter()))\n\n    if variables:\n        variables_json = json.dumps(variables, indent=4, cls=StrawberryJSONEncoder)\n\n        print(highlight(variables_json, lexers.JsonLexer(), Terminal256Formatter()))\n", "path": "strawberry/utils/debug.py"}]}