YOLO-World icon indicating copy to clipboard operation
YOLO-World copied to clipboard

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

Open 3210448723 opened this issue 10 months ago • 0 comments

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后修复了该问题

3210448723 avatar Feb 03 '25 13:02 3210448723