mongodb-labs/full-stack-fastapi-mongodb

pydantic.errors.PydanticUserError

IgorFreitasCruz opened this issue · 6 comments

pydantic.errors.PydanticUserError: model_config cannot be used as a model field name. Use model_config for model configuration.

Followed alI the steps for local development but containers backend and celeryworker didn't spin up outputting the same pydantic error.

I'm on a Mac M1 Sonoma 14.4.1

Hi @IgorFreitasCruz, I just ran a fresh install using the local steps and on my Mac M1 Sonoma 14.4.1 and did not encounter that error. Can you please share the full traceback?

Hi @blink1073.

From backend service:

Executing task: docker logs --tail 1000 -f 950fa4526844a8ef178555c37ce215721952f7d8a3148313d0116241c7270a3e 

Traceback (most recent call last):
  File "/app/app/backend_pre_start.py", line 6, in <module>
    from app.db.session import ping
  File "/app/app/db/session.py", line 4, in <module>
    from odmantic import AIOEngine
  File "/app/.venv/lib/python3.11/site-packages/odmantic/__init__.py", line 4, in <module>
    from .engine import AIOEngine, SyncEngine
  File "/app/.venv/lib/python3.11/site-packages/odmantic/engine.py", line 31, in <module>
    from odmantic.model import Model
  File "/app/.venv/lib/python3.11/site-packages/odmantic/model.py", line 520, in <module>
    class _BaseODMModel(pydantic.BaseModel, metaclass=ABCMeta):
  File "/app/.venv/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 91, in __new__
    config_wrapper = ConfigWrapper.for_model(bases, namespace, kwargs)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.11/site-packages/pydantic/_internal/_config.py", line 122, in for_model
    raise PydanticUserError(
pydantic.errors.PydanticUserError: `model_config` cannot be used as a model field name. Use `model_config` for model configuration.

For further information visit https://errors.pydantic.dev/2.7/u/model-config-invalid-field-name
Traceback (most recent call last):
  File "/app/app/initial_data.py", line 4, in <module>
    from app.db.init_db import init_db
  File "/app/app/db/init_db.py", line 3, in <module>
    from app import crud, schemas
  File "/app/app/crud/__init__.py", line 1, in <module>
    from .crud_user import user
  File "/app/app/crud/crud_user.py", line 5, in <module>
    from app.core.security import get_password_hash, verify_password
  File "/app/app/core/security.py", line 11, in <module>
    from app.schemas import NewTOTP
  File "/app/app/schemas/__init__.py", line 4, in <module>
    from .token import (
  File "/app/app/schemas/token.py", line 3, in <module>
    from odmantic import Model, ObjectId
  File "/app/.venv/lib/python3.11/site-packages/odmantic/__init__.py", line 4, in <module>
    from .engine import AIOEngine, SyncEngine
  File "/app/.venv/lib/python3.11/site-packages/odmantic/engine.py", line 31, in <module>
    from odmantic.model import Model
  File "/app/.venv/lib/python3.11/site-packages/odmantic/model.py", line 520, in <module>
    class _BaseODMModel(pydantic.BaseModel, metaclass=ABCMeta):
  File "/app/.venv/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 91, in __new__
    config_wrapper = ConfigWrapper.for_model(bases, namespace, kwargs)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.11/site-packages/pydantic/_internal/_config.py", line 122, in for_model
    raise PydanticUserError(
pydantic.errors.PydanticUserError: `model_config` cannot be used as a model field name. Use `model_config` for model configuration.

For further information visit https://errors.pydantic.dev/2.7/u/model-config-invalid-field-name
Traceback (most recent call last):
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/app/inboard/start.py", line 134, in <module>
    run_pre_start_script(logger=logger)
  File "/app/inboard/start.py", line 30, in run_pre_start_script
    subprocess.run([process, pre_start_path], check=True)
  File "/usr/local/lib/python3.11/subprocess.py", line 571, in run
    raise CalledProcessError(retcode, process.args,
subprocess.CalledProcessError: Command '['sh', '/app/prestart.sh']' returned non-zero exit status 1.
 *  Terminal will be reused by tasks, press any key to close it.

From celeryworker service:

Executing task: docker logs --tail 1000 -f 7ace5b20b9ac4d9525047d9eda5e43b1cf25c1d4e62591980a240a937c0399b0 

Checking dependencies
Traceback (most recent call last):
  File "/app/app/celeryworker_pre_start.py", line 6, in <module>
    from app.db.session import ping
  File "/app/app/db/session.py", line 4, in <module>
    from odmantic import AIOEngine
  File "/app/.venv/lib/python3.11/site-packages/odmantic/__init__.py", line 4, in <module>
    from .engine import AIOEngine, SyncEngine
  File "/app/.venv/lib/python3.11/site-packages/odmantic/engine.py", line 31, in <module>
    from odmantic.model import Model
  File "/app/.venv/lib/python3.11/site-packages/odmantic/model.py", line 520, in <module>
    class _BaseODMModel(pydantic.BaseModel, metaclass=ABCMeta):
  File "/app/.venv/lib/python3.11/site-packages/pydantic/_internal/_model_construction.py", line 91, in __new__
    config_wrapper = ConfigWrapper.for_model(bases, namespace, kwargs)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/.venv/lib/python3.11/site-packages/pydantic/_internal/_config.py", line 122, in for_model
    raise PydanticUserError(
pydantic.errors.PydanticUserError: `model_config` cannot be used as a model field name. Use `model_config` for model configuration.

For further information visit https://errors.pydantic.dev/2.7/u/model-config-invalid-field-name
 *  Terminal will be reused by tasks, press any key to close it.

Ah, this has been reported as art049/odmantic#451.

Hi @IgorFreitasCruz, I just ran a fresh install using the local steps and on my Mac M1 Sonoma 14.4.1 and did not encounter that error. Can you please share the full traceback?

How did you manage to get this working? Previous version of odmantic?

My guess is a local pip cache. For now you can manually pin pydantic<2.7.

We're going to pin for now in #38. I opened https://jira.mongodb.org/browse/PYTHON-4363 to track unpinning.