bpo-42233: Correctly repr GenericAlias when used with typing module (GH-23081)


Noticed by @serhiy-storchaka in the bpo.  `typing`'s types were not showing the parameterized generic.
Eg. previously:
```python
>>> typing.Union[dict[str, float], list[int]]
'typing.Union[dict, list]'
```
Now:
```python
>>> typing.Union[dict[str, float], list[int]]
'typing.Union[dict[str, float], list[int]]'
```

Automerge-Triggered-By: GH:gvanrossum
(cherry picked from commit 1f7dfb277e5b88cddc13e5024766be787a3e9127)

Co-authored-by: kj <28750310+Fidget-Spinner@users.noreply.github.com>
diff --git a/Lib/typing.py b/Lib/typing.py
index 39c956d..6fd67b0 100644
--- a/Lib/typing.py
+++ b/Lib/typing.py
@@ -160,6 +160,8 @@
     typically enough to uniquely identify a type.  For everything
     else, we fall back on repr(obj).
     """
+    if isinstance(obj, types.GenericAlias):
+        return repr(obj)
     if isinstance(obj, type):
         if obj.__module__ == 'builtins':
             return obj.__qualname__