Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'starlette.requests.Request'>. #571

Open
3210448723 opened this issue Feb 3, 2025 · 0 comments

Comments

@3210448723
Copy link

ERROR:    Exception in ASGI application
Traceback (most recent call last):
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/type_adapter.py", line 271, in _init_core_attrs
    self.core_schema = _getattr_no_parents(self._type, '__pydantic_core_schema__')
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/type_adapter.py", line 55, in _getattr_no_parents
    raise AttributeError(attribute)
AttributeError: __pydantic_core_schema__

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/uvicorn/protocols/http/h11_impl.py", line 403, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/middleware/cors.py", line 93, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/middleware/cors.py", line 144, in simple_response
    await self.app(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/routing.py", line 291, in app
    solved_result = await solve_dependencies(
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 666, in solve_dependencies
    ) = await request_body_to_args(  # body_params checked above
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/dependencies/utils.py", line 891, in request_body_to_args
    fields_to_extract = get_cached_model_fields(first_field.type_)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/_compat.py", line 659, in get_cached_model_fields
    return get_model_fields(model)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/_compat.py", line 285, in get_model_fields
    return [
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/_compat.py", line 286, in <listcomp>
    ModelField(field_info=field_info, name=name)
  File "<string>", line 6, in __init__
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/fastapi/_compat.py", line 111, in __post_init__
    self._type_adapter: TypeAdapter[Any] = TypeAdapter(
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/type_adapter.py", line 228, in __init__
    self._init_core_attrs(
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/type_adapter.py", line 290, in _init_core_attrs
    core_schema = schema_generator.generate_schema(self._type)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 610, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 863, in _generate_schema_inner
    return self._annotated_schema(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 1977, in _annotated_schema
    schema = self._apply_annotations(source_type, annotations)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 2056, in _apply_annotations
    schema = get_inner_schema(source_type)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_schema_generation_shared.py", line 84, in __call__
    schema = self._handler(source_type)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 2131, in new_handler
    schema = metadata_get_schema(source, get_inner_schema)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 2127, in <lambda>
    lambda source, handler: handler(source)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_schema_generation_shared.py", line 84, in __call__
    schema = self._handler(source_type)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 2037, in inner_handler
    schema = self._generate_schema_inner(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 884, in _generate_schema_inner
    return self.match_type(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 986, in match_type
    return self._match_generic_type(obj, origin)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 1014, in _match_generic_type
    return self._union_schema(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 1325, in _union_schema
    choices.append(self.generate_schema(arg))
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 610, in generate_schema
    schema = self._generate_schema_inner(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 884, in _generate_schema_inner
    return self.match_type(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 995, in match_type
    return self._unknown_type_schema(obj)
  File "/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_generate_schema.py", line 513, in _unknown_type_schema
    raise PydanticSchemaGenerationError(
pydantic.errors.PydanticSchemaGenerationError: Unable to generate pydantic-core schema for <class 'starlette.requests.Request'>. Set `arbitrary_types_allowed=True` in the model_config to ignore this error or implement `__get_pydantic_core_schema__` on your type to fully support it.

If you got this error by calling handler(<some type>) within `__get_pydantic_core_schema__` then you likely need to call `handler.generate_schema(<some type>)` since we do not call `__get_pydantic_core_schema__` on `<some type>` otherwise to avoid infinite recursion.

For further information visit https://errors.pydantic.dev/2.10/u/schema-for-unknown-type

我在修改/home/user/anaconda3/envs/yjm_yolo_world/lib/python3.8/site-packages/pydantic/_internal/_config.py:249

config_defaults = ConfigDict(
    title=None,
    str_to_lower=False,
    str_to_upper=False,
    str_strip_whitespace=False,
    str_min_length=0,
    str_max_length=None,
    # let the model / dataclass decide how to handle it
    extra=None,
    frozen=False,
    populate_by_name=False,
    use_enum_values=False,
    validate_assignment=False,
    arbitrary_types_allowed=True,  # 原来为False
    from_attributes=False,
    loc_by_alias=True,
    alias_generator=None,
    model_title_generator=None,
    field_title_generator=None,
    ignored_types=(),
    allow_inf_nan=True,
    json_schema_extra=None,
    strict=False,
    revalidate_instances='never',
    ser_json_timedelta='iso8601',
    ser_json_bytes='utf8',
    val_json_bytes='utf8',
    ser_json_inf_nan='null',
    validate_default=False,
    validate_return=False,
    protected_namespaces=('model_validate', 'model_dump'),
    hide_input_in_errors=False,
    json_encoders=None,
    defer_build=False,
    schema_generator=None,
    plugin_settings=None,
    json_schema_serialization_defaults_required=False,
    json_schema_mode_override=None,
    coerce_numbers_to_str=False,
    regex_engine='rust-regex',
    validation_error_cause=False,
    use_attribute_docstrings=False,
    cache_strings=True,
)

将参数设置为arbitrary_types_allowed=True后修复了该问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant