diff --git a/pydantic/typing.py b/pydantic/typing.py
--- a/pydantic/typing.py
+++ b/pydantic/typing.py
@@ -221,6 +221,7 @@ def get_args(tp: Type[Any]) -> Tuple[Any, ...]:
     'CallableGenerator',
     'ReprArgs',
     'CallableGenerator',
+    'GenericAlias',
     'get_args',
     'get_origin',
     'typing_base',
diff --git a/pydantic/utils.py b/pydantic/utils.py
--- a/pydantic/utils.py
+++ b/pydantic/utils.py
@@ -24,7 +24,7 @@
     no_type_check,
 )
 
-from .typing import NoneType, display_as_type
+from .typing import GenericAlias, NoneType, display_as_type
 from .version import version_info
 
 if TYPE_CHECKING:
@@ -149,7 +149,12 @@ def validate_field_name(bases: List[Type['BaseModel']], field_name: str) -> None
 
 
 def lenient_issubclass(cls: Any, class_or_tuple: Union[Type[Any], Tuple[Type[Any], ...]]) -> bool:
-    return isinstance(cls, type) and issubclass(cls, class_or_tuple)
+    try:
+        return isinstance(cls, type) and issubclass(cls, class_or_tuple)
+    except TypeError:
+        if isinstance(cls, GenericAlias):
+            return False
+        raise  # pragma: no cover
 
 
 def in_ipython() -> bool:

diff --git a/tests/test_utils.py b/tests/test_utils.py
--- a/tests/test_utils.py
+++ b/tests/test_utils.py
@@ -109,6 +109,14 @@ class A(str):
     assert lenient_issubclass(A, str) is True
 
 
+@pytest.mark.skipif(sys.version_info < (3, 9), reason='generic aliases are not available in python < 3.9')
+def test_lenient_issubclass_with_generic_aliases():
+    from collections.abc import Mapping
+
+    # should not raise an error here:
+    assert lenient_issubclass(list[str], Mapping) is False
+
+
 def test_lenient_issubclass_is_lenient():
     assert lenient_issubclass('a', 'a') is False
 

lenient_issubclass does not work for generic aliases
### Checks

* [x] I added a descriptive title to this issue
* [x] I have searched (google, github) for similar issues and couldn't find anything
* [x] I have read and followed [the docs](https://pydantic-docs.helpmanual.io/) and still think this is a bug

# Bug

Output of `python -c "import pydantic.utils; print(pydantic.utils.version_info())"`:
```
             pydantic version: 1.7.3
            pydantic compiled: False
                 install path: /home/user/pydantic/pydantic
               python version: 3.9.0 (default, Nov 15 2020, 14:28:56)  [GCC 7.3.0]
                     platform: Linux-5.4.0-65-generic-x86_64-with-glibc2.31
     optional deps. installed: ['devtools', 'dotenv', 'email-validator', 'typing-extensions']
```

Using `lenient_issubclass` breaks for `GernicAlias` types.
This is important in python >= 3.9 as the typing become the default for defining types.


Reproducible example:

```py
from pydantic.utils import lenient_issubclass
from collections.abc import Mapping
# should not raise an error here:
assert lenient_issubclass(list[str], Mapping) is False
```

raises:
```
    if lenient_issubclass(param.annotation, Request):
    \lib\site-packages\pydantic\utils.py:151: in lenient_issubclass
    return isinstance(cls, type) and issubclass(cls, class_or_tuple)
    \lib\abc.py:102: in __subclasscheck__
    return _abc_subclasscheck(cls, subclass)
E   TypeError: issubclass() arg 1 must be a class
```



tests/test_utils.py::test_lenient_issubclass_with_generic_aliases
tests/test_utils.py::test_import_module tests/test_utils.py::test_import_module_invalid tests/test_utils.py::test_import_no_attr tests/test_utils.py::test_display_as_type[str-str] tests/test_utils.py::test_display_as_type[string-str] tests/test_utils.py::test_display_as_type[value2-Union[str, tests/test_utils.py::test_display_as_type[list-list] tests/test_utils.py::test_display_as_type_generic_alias tests/test_utils.py::test_display_as_type_enum tests/test_utils.py::test_display_as_type_enum_int tests/test_utils.py::test_display_as_type_enum_str tests/test_utils.py::test_lenient_issubclass tests/test_utils.py::test_lenient_issubclass_is_lenient tests/test_utils.py::test_truncate[object-<class tests/test_utils.py::test_truncate[abcdefghijklmnopqrstuvwxyz-'abcdefghijklmnopq\u2026'] tests/test_utils.py::test_truncate[input_value2-[0, tests/test_utils.py::test_unique_list[input_value0-output0] tests/test_utils.py::test_unique_list[input_value1-output1] tests/test_utils.py::test_unique_list[input_value2-output2] tests/test_utils.py::test_value_items tests/test_utils.py::test_value_items_error tests/test_utils.py::test_is_new_type tests/test_utils.py::test_new_type_supertype tests/test_utils.py::test_pretty tests/test_utils.py::test_pretty_color tests/test_utils.py::test_devtools_output tests/test_utils.py::test_devtools_output_validation_error tests/test_utils.py::test_deep_update[mapping0-updating_mapping0-expected_mapping0-extra tests/test_utils.py::test_deep_update[mapping1-updating_mapping1-expected_mapping1-values tests/test_utils.py::test_deep_update[mapping2-updating_mapping2-expected_mapping2-values tests/test_utils.py::test_deep_update[mapping3-updating_mapping3-expected_mapping3-deeply tests/test_utils.py::test_deep_update_is_not_mutating tests/test_utils.py::test_undefined_repr tests/test_utils.py::test_undefined_copy tests/test_utils.py::test_get_model tests/test_utils.py::test_version_info tests/test_utils.py::test_version_strict tests/test_utils.py::test_class_attribute tests/test_utils.py::test_all_literal_values tests/test_utils.py::test_path_type tests/test_utils.py::test_path_type_unknown tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[10] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[1.0] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[11] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[12] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[int] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[None] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[test_all_literal_values] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[len] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[obj8] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[<lambda>] tests/test_utils.py::test_smart_deepcopy_immutable_non_sequence[obj10] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection0] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection1] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection2] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection3] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection4] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection5] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection6] tests/test_utils.py::test_smart_deepcopy_empty_collection[empty_collection7] tests/test_utils.py::test_smart_deepcopy_collection[collection0] tests/test_utils.py::test_smart_deepcopy_collection[collection1] tests/test_utils.py::test_smart_deepcopy_collection[collection2] tests/test_utils.py::test_smart_deepcopy_collection[collection3] tests/test_utils.py::test_smart_deepcopy_collection[collection4] tests/test_utils.py::test_smart_deepcopy_collection[collection5] tests/test_utils.py::test_smart_deepcopy_collection[collection6] tests/test_utils.py::test_smart_deepcopy_collection[collection7] tests/test_utils.py::test_get_origin[input_value0-Annotated] tests/test_utils.py::test_get_origin[input_value1-Callable] tests/test_utils.py::test_get_origin[input_value2-dict] tests/test_utils.py::test_get_origin[input_value3-list] tests/test_utils.py::test_get_origin[input_value4-output_value4] tests/test_utils.py::test_get_origin[int-None] tests/test_utils.py::test_get_args[ConstrainedListValue-output_value0] tests/test_utils.py::test_get_args[ConstrainedList-output_value1] tests/test_utils.py::test_get_args[input_value2-output_value2] tests/test_utils.py::test_get_args[input_value3-output_value3] tests/test_utils.py::test_get_args[int-output_value4] tests/test_utils.py::test_get_args[input_value5-output_value5] tests/test_utils.py::test_get_args[input_value6-output_value6] tests/test_utils.py::test_get_args[input_value7-output_value7] tests/test_utils.py::test_get_args[input_value8-output_value8] tests/test_utils.py::test_resolve_annotations_no_module tests/test_utils.py::test_all_identical